Allow keymap to override advertised-binding in docstrings

Previously

(substitute-command-keys "\\<undo-repeat-map>\\[undo]")

would use the global advertised-binding for `undo', even though
there's a binding in `undo-repeat-map', which is highly
counter-intuitive.  Now the binding is looked up in the specified
keymap first.

* lisp/help.el (substitute-command-keys): Restrict the initial key
lookup to the specified keymap (if there is one).  (Bug#51384)
This commit is contained in:
Robert Pluim 2022-09-19 15:53:52 +02:00
parent 01ceb23372
commit 120ade62cd

View file

@ -1204,7 +1204,10 @@ Otherwise, return a new string."
(delete-char 2)
(let* ((fun (intern (buffer-substring (point) (1- end-point))))
(key (with-current-buffer orig-buf
(where-is-internal fun keymap t))))
(where-is-internal fun
(and keymap
(list keymap))
t))))
(if (not key)
;; Function is not on any key.
(let ((op (point)))