GNU bug report logs - #51384
28.0.60; substitute-command-keys finds global binding for undo instead of in specified keymap

Previous Next

Package: emacs;

Reported by: Robert Pluim <rpluim <at> gmail.com>

Date: Mon, 25 Oct 2021 09:58:01 UTC

Severity: normal

Tags: fixed

Found in version 28.0.60

Fixed in version 29.1

Done: Robert Pluim <rpluim <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Robert Pluim <rpluim <at> gmail.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: Stefan Kangas <stefan <at> marxist.se>, 51384 <at> debbugs.gnu.org, Andreas Schwab <schwab <at> linux-m68k.org>, Juri Linkov <juri <at> linkov.net>
Subject: bug#51384: 28.0.60; substitute-command-keys finds global binding for undo instead of in specified keymap
Date: Tue, 20 Sep 2022 18:41:45 +0200
>>>>> On Tue, 20 Sep 2022 17:51:37 +0200, Lars Ingebrigtsen <larsi <at> gnus.org> said:


    Lars> 1 unexpected results:
    Lars>    FAILED  help-tests-substitute-command-keys/keymap-change

Thatʼs doing

   (test "\\<minibuffer-local-must-match-map>\\[abort-recursive-edit]"
   "C-]")

and abort-recursive-edit is in the global-map, and not
minibuffer-local-must-match-map. Oops. This fixes it. If that looks ok
Iʼll push later tonight.

diff --git a/lisp/help.el b/lisp/help.el
index 0ec5b9c85b..b4b9120da3 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -1208,6 +1208,12 @@ substitute-command-keys
                                                  (and keymap
                                                       (list keymap))
                                                  t))))
+                  ;; If we're looking in a particular keymap which has
+                  ;; no binding, then we need to redo the lookup, with
+                  ;; the global map as well this time.
+                  (when (and (not key) keymap)
+                    (setq key (with-current-buffer orig-buf
+                                (where-is-internal fun keymap t))))
                   (if (not key)
                       ;; Function is not on any key.
                       (let ((op (point)))




This bug report was last modified 2 years and 243 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.