If a user or mode uses remap to rebind a keybinding then it appears in
the help as a line <remap><function> New function docstring. Special
case these remapping lines so that we print the actual binding.
---
 emacs/notmuch.el |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index b9db9ba..c354b05 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -140,7 +140,7 @@ This is basically just `format-kbd-macro' but we also 
convert ESC to M-."
        "M-"
       (concat desc " "))))
 
-(defun notmuch-describe-keymap (keymap ua-keys &optional prefix tail)
+(defun notmuch-describe-keymap (keymap ua-keys &optional prefix tail remap)
   "Return a list of cons cells, each describing one binding in KEYMAP.
 
 Each cons cell consists of a string giving a human-readable
@@ -150,16 +150,23 @@ documentation is extracted.
 
 UA-KEYS should be a key sequence bound to `universal-argument'.
 It will be used to describe bindings of commands that support a
-prefix argument.  PREFIX and TAIL are used internally."
+prefix argument.  PREFIX, TAIL and REMAP are used internally."
   (map-keymap
    (lambda (key binding)
      (cond ((mouse-event-p key) nil)
           ((keymapp binding)
-           (setq tail
-                 (notmuch-describe-keymap
-                  binding ua-keys (notmuch-prefix-key-description key) tail)))
+           (if (equal key 'remap)
+               (setq tail
+                     (notmuch-describe-keymap
+                      binding ua-keys prefix tail t))
+             (setq tail
+                   (notmuch-describe-keymap
+                    binding ua-keys (notmuch-prefix-key-description key) 
tail))))
           (t
-           (let ((key-string (concat prefix (format-kbd-macro (vector key)))))
+           (let* ((actual-key (if remap
+                                  (where-is-internal key nil t)
+                                (vector key)))
+                  (key-string (concat prefix (format-kbd-macro actual-key))))
              ;; We don't include documentation if the key-binding is
              ;; over-ridden. Note, over-riding a binding
              ;; automatically hides the prefixed version too.
@@ -168,7 +175,7 @@ prefix argument.  PREFIX and TAIL are used internally."
                           (get binding 'notmuch-prefix-doc))
                  ;; Documentation for prefixed command
                  (let ((ua-desc (key-description ua-keys)))
-                   (push (cons (concat ua-desc " " prefix (format-kbd-macro 
(vector key)))
+                   (push (cons (concat ua-desc " " prefix (format-kbd-macro 
actual-key))
                                (get binding 'notmuch-prefix-doc))
                          tail)))
                ;; Documentation for command
-- 
1.7.9.1

_______________________________________________
notmuch mailing list
[email protected]
http://notmuchmail.org/mailman/listinfo/notmuch

Reply via email to