GNU bug report logs -
#11716
24.1; `substitute-command-keys' does not respect `defalias'
Previous Next
Reported by: "Drew Adams" <drew.adams <at> oracle.com>
Date: Fri, 15 Jun 2012 18:14:01 UTC
Severity: wishlist
Tags: wontfix
Found in version 24.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #11 received at 11716 <at> debbugs.gnu.org (full text, mbox):
> > (defun foo () "foo" (interactive) (message "FOO"))
> > (defalias 'bar 'foo)
> > (global-set-key "\C-d" 'foo)
> > (substitute-command-keys "\\[bar]")
> >
> > The last sexp returns "M-x bar". It should return "C-d".
>
> No. C-d is not bound to bar.
No what? I didn't say it was.
C-d is, _in effect_, that is, from a user perspective, bound to `bar'. It is
not bound to `bar' but the effect is that it invokes the code that `bar' runs.
`substitute-command-keys' is used most often in doc strings and such,
communicating to users what they can use to invoke particular commands etc.
It is far more useful to let a user know that s?he can use C-d than it is to
just punt and say "M-x bar".
If a programmer explicitly wants to choose "M-x bar" over letting users know
they can use C-d, s?he can use "M-x bar" and not "\\[bar]".
And yes, the user CAN use C-d, because of the binding of C-d to `foo' and the
defalias of `bar' to `foo'. What's important here is what users can do, not
whether `bar' is actually bound to C-d.
Do you have a counter use case? A typical use of `substitute-command-keys' (or
even an atypical case) where fixing this would cause a problem? A case where
the user should see a distinction between `foo' and `bar' wrt key bindings?
This bug report was last modified 9 years and 25 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.