[PATCH] Fix notmuch-describe-key

Matt Armstrong marmstrong at google.com
Mon Mar 4 18:27:17 PST 2019


Matt Armstrong <marmstrong at google.com> writes:

> Yang Sheng <yangsheng6810 at gmail.com> writes:
>
>> 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.
>
> Can you describe case 2 in more detail?  I am wondering what "crash the
> whole process means" -- Emacs itself crashes?  If so, is there an Emacs
> bug filed for it?  Also, perhaps the bug should be worked around with in
> notmuch-documentation-first-line itself, rather than its caller?

For example, this kind of fix makes it clearer that the problem is with
the `documentation' function.


modified   emacs/notmuch-lib.el
@@ -273,7 +273,7 @@ it, in which case it is killed."
 
 (defun notmuch-documentation-first-line (symbol)
   "Return the first line of the documentation string for SYMBOL."
-  (let ((doc (documentation symbol)))
+  (let ((doc (and (functionp symbol) (documentation symbol))))
     (if doc
 	(with-temp-buffer
 	  (insert (documentation symbol t))




>> ---
>>  emacs/notmuch-lib.el | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
>> index 8cf7261e..546ab6fd 100644
>> --- a/emacs/notmuch-lib.el
>> +++ b/emacs/notmuch-lib.el
>> @@ -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)
>>  
>> -- 
>> 2.20.1


More information about the notmuch mailing list