From: Eric Abrahamsen Date: Thu, 19 Sep 2019 17:36:42 +0000 (-0700) Subject: Only use Gnus registry for formatting when registry is loaded X-Git-Tag: emacs-27.0.90~1540 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a81223aeaa;p=emacs.git Only use Gnus registry for formatting when registry is loaded See bug #36903 * lisp/gnus/gnus-registry.el (gnus-registry-article-marks-to-chars): (gnus-registry-article-marks-to-names): In some circumstances it's possible for the user's summary line format spec to include registry-specific code, while the registry itself isn't actually loaded. Make sure the database is actually a hashtable before accessing it. --- diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el index e949179b3cc..ff0d4bad715 100644 --- a/lisp/gnus/gnus-registry.el +++ b/lisp/gnus/gnus-registry.el @@ -1007,23 +1007,27 @@ Uses `gnus-registry-marks' to find what shortcuts to install." ;; (defalias 'gnus-user-format-function-M 'gnus-registry-article-marks-to-chars) (defun gnus-registry-article-marks-to-chars (headers) "Show the marks for an article by the :char property." - (let* ((id (mail-header-message-id headers)) - (marks (when id (gnus-registry-get-id-key id 'mark)))) - (concat (delq nil - (mapcar - (lambda (m) - (plist-get - (cdr-safe (assoc m gnus-registry-marks)) - :char)) - marks))))) + (if (hash-table-p gnus-registry-db) + (let* ((id (mail-header-message-id headers)) + (marks (when id (gnus-registry-get-id-key id 'mark)))) + (concat (delq nil + (mapcar + (lambda (m) + (plist-get + (cdr-safe (assoc m gnus-registry-marks)) + :char)) + marks)))) + "")) ;; use like this: ;; (defalias 'gnus-user-format-function-M 'gnus-registry-article-marks-to-names) (defun gnus-registry-article-marks-to-names (headers) "Show the marks for an article by name." - (let* ((id (mail-header-message-id headers)) - (marks (when id (gnus-registry-get-id-key id 'mark)))) - (mapconcat (lambda (mark) (symbol-name mark)) marks ","))) + (if (hash-table-p gnus-registry-db) + (let* ((id (mail-header-message-id headers)) + (marks (when id (gnus-registry-get-id-key id 'mark)))) + (mapconcat (lambda (mark) (symbol-name mark)) marks ",")) + "")) (defun gnus-registry-read-mark () "Read a mark name from the user with completion."