GNU bug report logs - #9146
24.0.50; M-x broken in console mode with viper (always gives: "viper bell")

Previous Next

Package: emacs;

Reported by: Stefano Zacchiroli <zack <at> upsilon.cc>

Date: Fri, 22 Jul 2011 10:46:01 UTC

Severity: important

Found in version 24.0.50

Done: Chong Yidong <cyd <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 9146 in the body.
You can then email your comments to 9146 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Fri, 22 Jul 2011 10:46:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Stefano Zacchiroli <zack <at> upsilon.cc>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Fri, 22 Jul 2011 10:46:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Stefano Zacchiroli <zack <at> upsilon.cc>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.0.50;
	M-x broken in console mode with viper (always gives: "viper bell")
Date: Fri, 22 Jul 2011 12:45:27 +0200
I'm using Emacs with viper mode and often with a console-only
emacsclient. Since a couple of weeks, viper mode is broken with
emacs snapshot. Every time I try to use M-x (or other M-something)
is impossible with Viper, I immediately obtain a "viper bell"
message in the minibuffer line and the M-x key does not get delivered
to Emacs.

I've been able to reproduce the bug with "emacs -Q -nw", then loading
Viper mode with "M-x viper-mode" (which does work before loading Viper).
From that moment on, "M-x" does not work anymore.


In GNU Emacs 24.0.50.1 (x86_64-pc-linux-gnu, GTK+ Version 2.24.5)
 of 2011-07-21 on cigue, modified by Debian
 (emacs-snapshot package, version 1:20110721-1)
configured using `configure  '--build' 'x86_64-linux-gnu' '--host' 'x86_64-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.0.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.0.50/site-lisp:/usr/share/emacs/site-lisp' '--without-compress-info' '--with-crt-dir=/usr/lib/x86_64-linux-gnu/' '--with-x=yes' '--with-x-toolkit=gtk' '--with-imagemagick=yes' 'build_alias=x86_64-linux-gnu' 'host_alias=x86_64-linux-gnu' 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g -Wl,--as-needed' 'CPPFLAGS=''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: en_US.UTF-8
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: it_IT.utf8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
ESC [ > 1 ; 2 8 0 1 ; 0 c ESC x v i p TAB e r - m o 
TAB RET i a s f g s a f g ESC ESC x ESC x ESC x ESC 
x ESC x ESC x C-_ ESC x C-g ESC [ 2 1 ~ h s

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Making completion list...
Loading viper...
Loading /home/zack/.viper...done
Loading viper...done
Viper bell [6 times]
Undo!
Viper bell
Quit
delete-backward-char: Text is read-only [2 times]

Load-path shadows:
/usr/share/emacs/24.0.50/site-lisp/debian-startup hides /usr/share/emacs/site-lisp/debian-startup
/usr/share/emacs/24.0.50/site-lisp/puppet-el/puppet-mode hides /usr/share/emacs/site-lisp/puppet-mode
/usr/share/emacs/site-lisp/rst hides /usr/share/emacs/24.0.50/lisp/textmodes/rst

Features:
(shadow sort gnus-util mail-extr message format-spec rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mailabbrev mail-utils gmm-utils mailheader
emacsbug tmm electric edmacro kmacro viper viper-ex viper-macs
viper-mous viper-cmd viper-keym ring viper-util viper-init advice
help-fns advice-preload help-mode easymenu view time-date tooltip
ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd
fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer loaddefs button faces cus-face files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty emacs)

-- 
Stefano Zacchiroli -o- PhD in Computer Science \ PostDoc @ Univ. Paris 7
zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
Quando anche i santi ti voltano le spalle, |  .  |. I've fans everywhere
ti resta John Fante -- V. Capossela .......| ..: |.......... -- C. Adams




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Wed, 28 Sep 2011 07:27:03 GMT) Full text and rfc822 format available.

Message #8 received at 9146 <at> debbugs.gnu.org (full text, mbox):

From: Stefano Zacchiroli <zack <at> upsilon.cc>
To: 9146 <at> debbugs.gnu.org
Subject: Re: bug#9146: Acknowledgement (24.0.50; M-x broken in console mode
	with viper (always gives: "viper bell"))
Date: Wed, 28 Sep 2011 09:25:31 +0200
On Fri, Jul 22, 2011 at 10:46:02AM +0000, GNU bug Tracking System wrote:
> If you wish to submit further information on this problem, please
> send it to 9146 <at> debbugs.gnu.org.

Heya, any news about this?  I test it routinely with new development
snapshots and I can still reproduce it. I'm starting to fear emacs 24
can be released with this bug, de facto making viper mode unusable for
emacsclient console users.

I'll be happy to investigate it a bit more, but I'd appreciate if the
maintainers can check that I'm not the only one being able to reproduce
this.

Many thanks in advance,
Cheers.
-- 
Stefano Zacchiroli     zack@{upsilon.cc,pps.jussieu.fr,debian.org} . o .
Maître de conférences   ......   http://upsilon.cc/zack   ......   . . o
Debian Project Leader    .......   @zack on identi.ca   .......    o o o
« the first rule of tautology club is the first rule of tautology club »




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Wed, 28 Sep 2011 16:46:01 GMT) Full text and rfc822 format available.

Message #11 received at 9146 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Stefano Zacchiroli <zack <at> upsilon.cc>
Cc: 9146 <at> debbugs.gnu.org
Subject: Re: bug#9146: 24.0.50;
	M-x broken in console mode with viper (always gives: "viper bell")
Date: Wed, 28 Sep 2011 12:44:51 -0400
I can reproduce it, but I don't know how to fix it.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Wed, 28 Sep 2011 16:50:02 GMT) Full text and rfc822 format available.

Message #14 received at 9146 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Stefano Zacchiroli <zack <at> upsilon.cc>
Cc: 9146 <at> debbugs.gnu.org
Subject: Re: bug#9146: 24.0.50;
	M-x broken in console mode with viper (always gives: "viper bell")
Date: Wed, 28 Sep 2011 12:48:06 -0400
PS bisecting to find out when it started happening may be useful.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Fri, 30 Sep 2011 08:52:02 GMT) Full text and rfc822 format available.

Message #17 received at 9146 <at> debbugs.gnu.org (full text, mbox):

From: Stefano Zacchiroli <zack <at> upsilon.cc>
To: Glenn Morris <rgm <at> gnu.org>
Cc: Julien Danjou <acid <at> debian.org>, 9146 <at> debbugs.gnu.org
Subject: Re: bug#9146: 24.0.50; M-x broken in console mode with viper (always
	gives: "viper bell")
Date: Fri, 30 Sep 2011 10:50:25 +0200
[Message part 1 (text/plain, inline)]
On Wed, Sep 28, 2011 at 12:48:06PM -0400, Glenn Morris wrote:
> PS bisecting to find out when it started happening may be useful.

I'll be glad to help, although I don't think I'll have in the near
future time to do the various builds myself. I'm using emacs development
branch through the unofficial "emacs-snapshot" Debian packages
maintained by Julien Danjou (Cc:-ed).

Julien: is there an archive of past emacs-snapshot packages? If so, I'll
be happy to go through them, as a first approximation of bisection.

TIA,
Cheers.
-- 
Stefano Zacchiroli     zack@{upsilon.cc,pps.jussieu.fr,debian.org} . o .
Maître de conférences   ......   http://upsilon.cc/zack   ......   . . o
Debian Project Leader    .......   @zack on identi.ca   .......    o o o
« the first rule of tautology club is the first rule of tautology club »
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Fri, 30 Sep 2011 09:16:02 GMT) Full text and rfc822 format available.

Message #20 received at 9146 <at> debbugs.gnu.org (full text, mbox):

From: Julien Danjou <acid <at> debian.org>
To: Stefano Zacchiroli <zack <at> upsilon.cc>
Cc: Glenn Morris <rgm <at> gnu.org>, 9146 <at> debbugs.gnu.org,
	Julien Danjou <acid <at> debian.org>
Subject: Re: bug#9146: 24.0.50;
	M-x broken in console mode with viper (always gives: "viper bell")
Date: Fri, 30 Sep 2011 11:14:25 +0200
[Message part 1 (text/plain, inline)]
On Fri, Sep 30 2011, Stefano Zacchiroli wrote:

> I'll be glad to help, although I don't think I'll have in the near
> future time to do the various builds myself. I'm using emacs development
> branch through the unofficial "emacs-snapshot" Debian packages
> maintained by Julien Danjou (Cc:-ed).
>
> Julien: is there an archive of past emacs-snapshot packages? If so, I'll
> be happy to go through them, as a first approximation of bisection.

Nop, but I've the versions from 1:20110917-1 on my computer if needed.
But I've nothing before.

If you want to do a git bisect with a build yourself, it really should
not be harder than cloning the repo from Alioth and calling debuild.

     http://anonscm.debian.org/gitweb/?p=users/acid/emacs-snapshot.git;a=summary

-- 
Julien Danjou
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Fri, 04 Nov 2011 22:47:02 GMT) Full text and rfc822 format available.

Message #23 received at 9146 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Michael Kifer <kifer <at> cs.stonybrook.edu>,
	Stefano Zacchiroli <zack <at> upsilon.cc>
Cc: 9146 <at> debbugs.gnu.org
Subject: Re: M-x broken in console mode with viper (always gives: "viper
	bell"))
Date: Fri, 04 Nov 2011 18:43:44 -0400
OK I can reproduce your problem and have tracked it down to a change of
mine in the keymap.c code.

The problem is that viper-intercept-ESC-key relies on a quirk of
the function key-binding which I fixed in Emacs-24.

More specifically, in Emacs-23, the following happened:

   (local-set-key "\e" 'toto)
   (key-binding "\ex")  =>  execute-extended-command

I.e. key-binding returned a binding that is not actually valid because
it's hidden by a shorter key-sequence in a keymap of higher precedence.
This has been fixed in Emacs-24 where it now returns nil in this case.

In the case of viper-intercept-ESC-key, the problematic keybinding is
not in the local-map but in a minor-mode-map installed by Viper and the
command is (of course) viper-intercept-ESC-key, but the problem is
the same.

IOW viper-intercept-ESC-key needs to be changed to call key-binding in
a context where Viper's minor-mode map(s) have been temporarily disabled
so the ESC binding to viper-intercept-ESC-key doesn't hide the thing
we're looking for.


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Mon, 27 Feb 2012 10:16:02 GMT) Full text and rfc822 format available.

Message #26 received at 9146 <at> debbugs.gnu.org (full text, mbox):

From: Chong Yidong <cyd <at> gnu.org>
To: Stefano Zacchiroli <zack <at> upsilon.cc>
Cc: Michael Kifer <kifer <at> cs.stonybrook.edu>,
	Stefan Monnier <monnier <at> iro.umontreal.ca>, 9146 <at> debbugs.gnu.org
Subject: Re: bug#9146: M-x broken in console mode with viper (always gives:
	"viper bell"))
Date: Mon, 27 Feb 2012 18:12:43 +0800
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

> IOW viper-intercept-ESC-key needs to be changed to call key-binding in
> a context where Viper's minor-mode map(s) have been temporarily disabled
> so the ESC binding to viper-intercept-ESC-key doesn't hide the thing
> we're looking for.

Since no one else has stepped up to the plate, I took a crack at this.

Stefano, could you test if the following patch does the right thing?


*** lisp/emulation/viper-cmd.el	2012-01-19 07:21:25 +0000
--- lisp/emulation/viper-cmd.el	2012-02-27 10:10:42 +0000
***************
*** 1086,1093 ****
  (defun viper-intercept-ESC-key ()
    "Function that implements ESC key in Viper emulation of Vi."
    (interactive)
!   (let ((cmd (or (key-binding (viper-envelop-ESC-key))
! 		 (lambda () (interactive) (error "Viper bell")))))
  
      ;; call the actual function to execute ESC (if no other symbols followed)
      ;; or the key bound to the ESC sequence (if the sequence was issued
--- 1086,1098 ----
  (defun viper-intercept-ESC-key ()
    "Function that implements ESC key in Viper emulation of Vi."
    (interactive)
!   (let* ((event (viper-envelop-ESC-key))
! 	 (cmd (cond ((equal event viper-ESC-key)
! 		     'viper-intercept-ESC-key)
! 		    ((let ((emulation-mode-map-alists nil))
! 		       (key-binding event)))
! 		    (t
! 		     (error "Viper bell")))))
  
      ;; call the actual function to execute ESC (if no other symbols followed)
      ;; or the key bound to the ESC sequence (if the sequence was issued





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Mon, 27 Feb 2012 12:12:01 GMT) Full text and rfc822 format available.

Message #29 received at 9146 <at> debbugs.gnu.org (full text, mbox):

From: Stefano Zacchiroli <zack <at> upsilon.cc>
To: Chong Yidong <cyd <at> gnu.org>
Cc: Michael Kifer <kifer <at> cs.stonybrook.edu>,
	Stefan Monnier <monnier <at> iro.umontreal.ca>, 9146 <at> debbugs.gnu.org
Subject: Re: bug#9146: M-x broken in console mode with viper (always gives:
	"viper bell"))
Date: Mon, 27 Feb 2012 13:08:11 +0100
On Mon, Feb 27, 2012 at 06:12:43PM +0800, Chong Yidong wrote:
> > IOW viper-intercept-ESC-key needs to be changed to call key-binding in
> > a context where Viper's minor-mode map(s) have been temporarily disabled
> > so the ESC binding to viper-intercept-ESC-key doesn't hide the thing
> > we're looking for.
> 
> Since no one else has stepped up to the plate, I took a crack at this.
> 
> Stefano, could you test if the following patch does the right thing?

That seems to have done the trick for me.
Applying the patch M-x works properly again.

-- 
Stefano Zacchiroli     zack@{upsilon.cc,pps.jussieu.fr,debian.org} . o .
Maître de conférences   ......   http://upsilon.cc/zack   ......   . . o
Debian Project Leader    .......   @zack on identi.ca   .......    o o o
« the first rule of tautology club is the first rule of tautology club »




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Mon, 27 Feb 2012 13:18:02 GMT) Full text and rfc822 format available.

Message #32 received at 9146 <at> debbugs.gnu.org (full text, mbox):

From: Chong Yidong <cyd <at> gnu.org>
To: Stefano Zacchiroli <zack <at> upsilon.cc>
Cc: Michael Kifer <kifer <at> cs.stonybrook.edu>,
	Stefan Monnier <monnier <at> iro.umontreal.ca>, 9146 <at> debbugs.gnu.org
Subject: Re: bug#9146: M-x broken in console mode with viper (always gives:
	"viper bell"))
Date: Mon, 27 Feb 2012 21:14:40 +0800
Stefano Zacchiroli <zack <at> upsilon.cc> writes:

> That seems to have done the trick for me.
> Applying the patch M-x works properly again.

Committed to trunk.  Thanks for testing.




bug closed, send any further explanations to 9146 <at> debbugs.gnu.org and Stefano Zacchiroli <zack <at> upsilon.cc> Request was from Chong Yidong <cyd <at> gnu.org> to control <at> debbugs.gnu.org. (Mon, 27 Feb 2012 13:18:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Mon, 27 Feb 2012 14:21:01 GMT) Full text and rfc822 format available.

Message #37 received at 9146 <at> debbugs.gnu.org (full text, mbox):

From: Stefano Zacchiroli <zack <at> upsilon.cc>
To: Chong Yidong <cyd <at> gnu.org>
Cc: Michael Kifer <kifer <at> cs.stonybrook.edu>,
	Stefan Monnier <monnier <at> iro.umontreal.ca>, 9146 <at> debbugs.gnu.org
Subject: Re: bug#9146: M-x broken in console mode with viper (always gives:
	"viper bell"))
Date: Mon, 27 Feb 2012 15:17:41 +0100
On Mon, Feb 27, 2012 at 09:14:40PM +0800, Chong Yidong wrote:
> Stefano Zacchiroli <zack <at> upsilon.cc> writes:
> 
> > That seems to have done the trick for me.
> > Applying the patch M-x works properly again.
> 
> Committed to trunk.  Thanks for testing.

Great, thank you for the fix!

Cheers.
-- 
Stefano Zacchiroli     zack@{upsilon.cc,pps.jussieu.fr,debian.org} . o .
Maître de conférences   ......   http://upsilon.cc/zack   ......   . . o
Debian Project Leader    .......   @zack on identi.ca   .......    o o o
« the first rule of tautology club is the first rule of tautology club »




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9146; Package emacs. (Tue, 28 Feb 2012 03:49:02 GMT) Full text and rfc822 format available.

Message #40 received at 9146 <at> debbugs.gnu.org (full text, mbox):

From: Michael Kifer <kifer <at> cs.stonybrook.edu>
To: Chong Yidong <cyd <at> gnu.org>
Cc: 9146 <at> debbugs.gnu.org, Stefan Monnier <monnier <at> iro.umontreal.ca>,
	Stefano Zacchiroli <zack <at> upsilon.cc>
Subject: Re: bug#9146: M-x broken in console mode with viper (always gives:
	"viper bell"))
Date: Mon, 27 Feb 2012 20:32:03 -0500
Thanks Chong. I meant to get to this all these months, but my stack of things
to do kept getting deeper and deeper...
michael


On Mon, 27 Feb 2012 18:12:43 +0800
Chong Yidong <cyd <at> gnu.org> wrote:

> Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
> 
> > IOW viper-intercept-ESC-key needs to be changed to call key-binding in
> > a context where Viper's minor-mode map(s) have been temporarily disabled
> > so the ESC binding to viper-intercept-ESC-key doesn't hide the thing
> > we're looking for.
> 
> Since no one else has stepped up to the plate, I took a crack at this.
> 
> Stefano, could you test if the following patch does the right thing?
> 
> 
> *** lisp/emulation/viper-cmd.el	2012-01-19 07:21:25 +0000
> --- lisp/emulation/viper-cmd.el	2012-02-27 10:10:42 +0000
> ***************
> *** 1086,1093 ****
>   (defun viper-intercept-ESC-key ()
>     "Function that implements ESC key in Viper emulation of Vi."
>     (interactive)
> !   (let ((cmd (or (key-binding (viper-envelop-ESC-key))
> ! 		 (lambda () (interactive) (error "Viper bell")))))
>   
>       ;; call the actual function to execute ESC (if no other symbols
> followed) ;; or the key bound to the ESC sequence (if the sequence was issued
> --- 1086,1098 ----
>   (defun viper-intercept-ESC-key ()
>     "Function that implements ESC key in Viper emulation of Vi."
>     (interactive)
> !   (let* ((event (viper-envelop-ESC-key))
> ! 	 (cmd (cond ((equal event viper-ESC-key)
> ! 		     'viper-intercept-ESC-key)
> ! 		    ((let ((emulation-mode-map-alists nil))
> ! 		       (key-binding event)))
> ! 		    (t
> ! 		     (error "Viper bell")))))
>   
>       ;; call the actual function to execute ESC (if no other symbols
> followed) ;; or the key bound to the ESC sequence (if the sequence was issued
> 




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 27 Mar 2012 11:24:03 GMT) Full text and rfc822 format available.

bug unarchived. Request was from "Michael L. Scott" <scott <at> cs.rochester.edu> to control <at> debbugs.gnu.org. (Thu, 13 Sep 2012 23:03:01 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 12 Oct 2012 11:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 11 years and 226 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.