branch: externals/marginalia commit 65679471c229385a19cf40e9ed3949d5df7b151b Author: Daniel Mendler <m...@daniel-mendler.de> Commit: Daniel Mendler <m...@daniel-mendler.de>
marginalia-annotate-command-binding: use a hash table per buffer --- marginalia.el | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/marginalia.el b/marginalia.el index 5122740..78f4007 100644 --- a/marginalia.el +++ b/marginalia.el @@ -217,18 +217,20 @@ determine it." "Truncate string STR to WIDTH." (truncate-string-to-width (car (split-string str "\n")) width 0 32 "…")) -(defvar marginalia-annotate-command-binding--init nil) +(defvar-local marginalia-annotate-command-binding--hash nil) (defun marginalia-annotate-command-binding (cand) "Annotate command CAND with keybinding." - (unless marginalia-annotate-command-binding--init - (setq marginalia-annotate-command-binding--init t) - (cl-do-all-symbols (sym) - (when (commandp sym) - (when-let (key (where-is-internal sym nil t)) - (put sym 'marginalia--cached-binding - (propertize (format " (%s)" (key-description key)) - 'face 'marginalia-key)))))) - (get (intern cand) 'marginalia--cached-binding)) + (with-current-buffer (window-buffer (minibuffer-selected-window)) + (unless marginalia-annotate-command-binding--hash + (setq marginalia-annotate-command-binding--hash (make-hash-table)) + (cl-do-all-symbols (sym) + (when (commandp sym) + (when-let (key (where-is-internal sym nil t)) + (puthash sym + (propertize (format " (%s)" (key-description key)) + 'face 'marginalia-key) + marginalia-annotate-command-binding--hash))))) + (gethash (intern cand) marginalia-annotate-command-binding--hash))) (defun marginalia-annotate-command-full (cand) "Annotate command CAND with the keybinding and its documentation string."