GNU bug report logs -
#23543
25.1.50; Incorrect key binding echoed by `M-x'
Previous Next
Reported by: Drew Adams <drew.adams <at> oracle.com>
Date: Sun, 15 May 2016 21:33:02 UTC
Severity: minor
Tags: confirmed
Merged with 42207
Found in versions 25.1.50, 28.0.50
Fixed in version 29.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #8 received at 23543 <at> debbugs.gnu.org (full text, mbox):
Drew Adams <drew.adams <at> oracle.com> writes:
> emacs -Q
>
> (define-key global-map [remap eval-last-sexp] 'pp-eval-last-sexp)
>
> Put point after a Lisp sexp somewhere, and do `M-x eval-last-sexp'.
>
> You see this echoed:
>
> You can run the command 'eval-last-sexp' with C-x C-e
>
> But that is incorrect. You cannot run `eval-last-sexp'
> using `C-x C-e', since it has been remapped to command
> `pp-eval-last-sexp'. If you use `C-x C-e' you invoke
> the latter, not `eval-last-sexp'.
I can confirm that this is still present in Emacs 27.
> The code that causes this bugged behavior is the call
> to `where-is-internal' in `execute-extended-command'.
> It does, in effect:
>
> (where-is-internal 'eval-last-sexp overriding-local-map t)
>
> And that returns [24 5]. I'm no expert on `overriding-local-map',
> but should it really be used here? Seems like this is the cause,
> but whatever the cause, the message is incorrect.
When I trace this, `overriding-local-map' is nil, and indeed:
(where-is-internal 'eval-last-sexp)
=> ([24 5])
So that doesn't seem to have anything to do with this bug, and it's just
a bug in `where-is-internal'. The doc string does talk about remapping,
but I'm not sure whether this is the same kind of remapping we have
here? In any case, it doesn't make a difference:
The optional 5th arg NO-REMAP alters how command remapping is handled:
- If another command OTHER-COMMAND is remapped to DEFINITION, normally
search for the bindings of OTHER-COMMAND and include them in the
returned list. But if NO-REMAP is non-nil, include the vector
[remap OTHER-COMMAND] in the returned list instead, without
searching for those other bindings.
- If DEFINITION is remapped to OTHER-COMMAND, normally return the
bindings for OTHER-COMMAND. But if NO-REMAP is non-nil, return the
bindings for DEFINITION instead, ignoring its remapping.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
This bug report was last modified 3 years and 45 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.