Fix notmuch-describe-key
authorYang Sheng <yangsheng6810@gmail.com>
Sun, 3 Mar 2019 04:35:33 +0000 (23:35 -0500)
committerDavid Bremner <david@tethera.net>
Sun, 31 Mar 2019 15:00:50 +0000 (12:00 -0300)
Fix notmuch-describe-key crashing for the following two cases
1. format-kbd-macro cannot deal with keys like [(32 . 126)], switch to
use key-description instead.
2. if a function in the current keymap is not bounded, it will crash
the whole process. We check if it is bounded and silently skip it to
avoid crashing.

emacs/notmuch-lib.el

index 8cf7261e6f4fac2d16a9c7c2aafc96866b29d90c..546ab6fda41f654e8e64d1a85408f64fc6f78ffe 100644 (file)
@@ -298,7 +298,7 @@ This is basically just `format-kbd-macro' but we also convert ESC to M-."
   "Prepend cons cells describing prefix-arg ACTUAL-KEY and ACTUAL-KEY to TAIL
 
 It does not prepend if ACTUAL-KEY is already listed in TAIL."
-  (let ((key-string (concat prefix (format-kbd-macro actual-key))))
+  (let ((key-string (concat prefix (key-description 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.
@@ -313,7 +313,7 @@ It does not prepend if ACTUAL-KEY is already listed in TAIL."
       ;; Documentation for command
       (push (cons key-string
                  (or (and (symbolp binding) (get binding 'notmuch-doc))
-                     (notmuch-documentation-first-line binding)))
+                     (and (functionp binding) (notmuch-documentation-first-line binding))))
            tail)))
     tail)