bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#12868: global keymap preceeds input-decode-map


From: Stefan Monnier
Subject: bug#12868: global keymap preceeds input-decode-map
Date: Mon, 12 Nov 2012 09:32:29 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

> emacs -nw -Q
> (defun foo () (interactive) (message "foo"))
> (global-set-key "\M-O" 'foo)
[...]
> Arrow keys now inserts A,B,C,D in buffer.
[...]
> Arrow keys sends M-O A (up), M-O B (down) etc. These should be
> translated to function keys <up>, <down> etc in input-decode-map
> before any key lookup.  Somehow, the binding of M-O in the global
> keymap takes precedence.

Indeed, thanks for bringing this up.  The cause for the bug is that the
rule for what goes first and what goes next is here ignored because we
stop waiting for more input as soon as a real binding is found
(i.e. right after M-O).

The predicate that decides when to stop waiting for more input would
need to say say "don't stop if we're in the middle of a potential
input-decode-map rewrite".  But then if you want to run `foo', you'd
have the problem that after hitting M-O, Emacs will not actually run
`foo' but will sit there waiting to see if the next key is one of
[ABCD].

The only way to get our cake and eat it too would be to use some kind of
timeout, which we have resisted so far.


        Stefan





reply via email to

[Prev in Thread] Current Thread [Next in Thread]