[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: A bug, I think, in key-binding
From: |
David Kastrup |
Subject: |
Re: A bug, I think, in key-binding |
Date: |
Fri, 18 Aug 2006 13:02:03 +0200 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux) |
Richard Stallman <address@hidden> writes:
> [I sent this message a week ago but did not get a response.]
>
> I don't think the two are incompatible: currently, key-binding
> does not work if one of the keys in the sequence is an event
> (rather than just a char or a symbol),
>
> Yes, it does work in that case. (I just tested it.)
But it does not adapt the searched maps accordingly.
> > 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.
>
> Moving point is not sufficient if the click is on an image-map,
> or on before-string. I'd rather reuse the C code if at all
> possible rather than try to mimick it in elisp (unless we can
> completely replace the C version with the elisp version).
>
> That is a valid point; this needs to be implemented at C level.
>
> 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.
An optional argument might be handy in special cases.
We have currently
key-binding is a built-in function in `C source code'.
(key-binding KEY &optional ACCEPT-DEFAULT NO-REMAP)
Return the binding for command KEY in current keymaps.
KEY is a string or vector, a sequence of keystrokes.
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.
[back]
I think it would be nice to have
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.
[back]
Ok, this is a bit verbose, but it would reflect what I'd consider
useful, namely that
(key-binding (read-key-sequence "Press anything))
will look up the keys in the same maps where read-key-sequence got
them. Yes, it would be a change to the current behavior even when not
using the "LOCATION" argument.
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
- 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 <=
- Re: A bug, I think, in key-binding, Richard Stallman, 2006/08/22
- 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