winterTTr / ace-jump-mode

a quick cursor jump mode for emacs
https://github.com/winterTTr/ace-jump-mode/wiki
609 stars 72 forks source link

ace-jump-char-mode in split window makes emacs unusable #35

Closed gnosis-zz closed 11 years ago

gnosis-zz commented 11 years ago

Summary:

Using ace-jump-char-mode from an emacsclient, with split windows containing identical text makes emacs unusable.

WARNING: Before trying to reproduce this bug, be aware that it may render your emacs completely unusable, with the only way to fix it being to kill emacs.

Steps to reproduce:

  1. Save the sample text from the following link to a file called "foo.txt":

    http://pastie.org/pastes/8096881/text

  2. From a shell, start the emacs daemon as:
     emacs --daemon -Q
  1. Edit the above file from an emacsclient, by typing:
     emacsclient -t foo.txt
  1. Assuming you have ace-jump-mode.el installed in ~/.emacs.d, type
     M-: (add-to-list 'load-path "~/.emacs.d")
  1. Type
     M-: (require 'ace-jump-mode)
  1. Create a split window by typing
    C-x 2
  1. Type:
      M-x ace-jump-char-mode ebe

(Note that the "ebe" in the line above could be any characters on the screen. "ebe" is just an example)

  1. A prompt will appear in the echo area:
     Buffer `foo.txt<2>' still has clients; kill it? (yes or no)

At this point, emacs has been rendered almost completely unusable. Nothing, including C-g, seems to be able to get me out of this prompt. Sometimes, typing something, like C-g, will show this error:

   Wrong type argument: stringp, nil

But it won't let you escape the prompt. Any attempt to type "yes" or "no" will not succeed. Emacs will just beep at you.

Using the shell to kill emacsclient, by (for example) typing "killall emacsclient" will successfully kill the broken emacsclient, but when a new emacsclient is started, trying to type anything in to it will only result in this error:

   Wrong type argument: window-valid-p, #<window 0x113fb78>

At this point, I couldn't find any way to get emacs back to a usable state, so I was forced to kill both the emacsclient and the emacs daemon.

I am using:

ace-jump-mode.el version 2.0.RC, downloaded today using:

   git clone https://github.com/winterTTr/ace-jump-mode.git

M-: (version)

   "GNU Emacs 24.3.50.1 (x86_64-unknown-linux-gnu, X
   toolkit, Xaw3d scroll bars)\n of 2013-05-31 on saturn"

C-h v system-configuration-options

   "--enable-link-time-optimization --with-x
   --with-x-toolkit=lucid --prefix=/usr/local/emacs
   CFLAGS='-O2 -march=native -pipe -falign-functions=64
   -fomit-frame-pointer -ftracer -funit-at-a-time -fweb
   -fforce-addr -fpeel-loops -funswitch-loops
   -frename-registers -msse'"

uname -a

   Linux saturn 3.8.13-gentoo #2 PREEMPT Thu May 30
   12:05:19 EDT 2013 x86_64 AMD Athlon(tm) 64 Processor
   3000+ AuthenticAMD GNU/Linux
winterTTr commented 11 years ago

https://github.com/winterTTr/ace-jump-mode/commit/7355dc37d83934702dcf79d837895f578249a26f This will fix the problem you met. Please update to the latest ace jump.

Enjoy it ~