[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: A bug, I think, in key-binding
From: |
Richard Stallman |
Subject: |
Re: A bug, I think, in key-binding |
Date: |
Tue, 22 Aug 2006 11:41:44 -0400 |
> > Perhaps we should have a function to do lookup on a key
> > sequence just the same way the command loop does. That can be
> > written in Lisp; it just has to see if the first event is a
> > mouse even, and move point there inside save-excursion.
...
> Perhaps an optional argument to key-binding is the way to do it.
> Would you like to implement that?
Actually, I don't think we should need an optional argument at all:
when feeding an event into key-binding (which is defined to use all
local maps), one would likely rather have the same maps apply as
read-key-sequence has.
I agree that is the cleanest design, but I was worried about the
incompatible change it involves.
So I just checked all the calls to `key-binding' and `XYZ-key-binding'
in the Emacs sources (except those in viper). It seems that this
change would hardly ever cause a bug, and often might fix a bug. So I
am now in favor of your proposal.
Would someone please implement this, then ack this message?
key-binding is a built-in function in `C source code'.
(key-binding SEQUENCE &optional ACCEPT-DEFAULT NO-REMAP LOCATION)
Return the binding for command SEQUENCE in current keymaps.
SEQUENCE is a string or vector, a sequence of keystrokes,
or an event to look up.
The binding is probably a symbol with a function definition.
Normally, `key-binding' ignores bindings for t, which act as default
bindings, used when nothing else in the keymap applies; this makes it
usable as a general function for probing keymaps. However, if the
optional second argument ACCEPT-DEFAULT is non-nil, `key-binding' does
recognize the default bindings, just as `read-key-sequence' does.
Like the normal command loop, `key-binding' will remap the command
resulting from looking up KEY by looking up the command in the
current keymaps. However, if the optional third argument NO-REMAP
is non-nil, `key-binding' returns the unmapped command.
If SEQUENCE is a mouse event, the current maps may depend on
whether the event occured above mouse-sensitive areas. If
LOCATION is an event, the current maps will be selected according
to LOCATION rather than SEQUENCE. This can be used for looking up
artificial bindings like `follow-link'. If LOCATION is non-nil
but not an event, the current maps will not be mouse-sensitive
even when SEQUENCE is an event.
- A bug, I think, in key-binding, David Kastrup, 2006/08/08
- Re: A bug, I think, in key-binding, Richard Stallman, 2006/08/09
- Re: A bug, I think, in key-binding, Stefan Monnier, 2006/08/09
- Re: A bug, I think, in key-binding, Richard Stallman, 2006/08/09
- Re: A bug, I think, in key-binding, Richard Stallman, 2006/08/17
- Re: A bug, I think, in key-binding, Stefan Monnier, 2006/08/17
- Re: A bug, I think, in key-binding, Richard Stallman, 2006/08/18
- Re: A bug, I think, in key-binding, David Kastrup, 2006/08/18
- Re: A bug, I think, in key-binding,
Richard Stallman <=
- Re: A bug, I think, in key-binding, David Kastrup, 2006/08/22
Re: A bug, I think, in key-binding, David Kastrup, 2006/08/09