emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/marginalia a0e9903 237/241: Remove marginalia--annotate


From: Stefan Monnier
Subject: [elpa] externals/marginalia a0e9903 237/241: Remove marginalia--annotate-binding-hash (See #16)
Date: Fri, 28 May 2021 20:49:34 -0400 (EDT)

branch: externals/marginalia
commit a0e9903bdb63d70a59653f73f77082f20a669b2c
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Remove marginalia--annotate-binding-hash (See #16)
    
    I cannot reproduce the allocation problem anymore with Vertico or Selectrum.
    Maybe this was due to executing the annotators in a temporary buffer in
    Selectrum back then, which lead to flushes of the where-is-internal cache?
---
 marginalia.el | 17 ++---------------
 1 file changed, 2 insertions(+), 15 deletions(-)

diff --git a/marginalia.el b/marginalia.el
index f052a0d..ffa7155 100644
--- a/marginalia.el
+++ b/marginalia.el
@@ -313,24 +313,11 @@ WIDTH is the format width. This can be specified as 
alternative to FORMAT."
     (marginalia--fields
      (str :truncate marginalia-truncate-width :face 
'marginalia-documentation))))
 
-(defvar-local marginalia--annotate-binding-hash nil
-  "Hash table storing the keybinding of every command.
-This hash table is needed to speed up `marginalia-annotate-binding'.")
-
 (defun marginalia-annotate-binding (cand)
   "Annotate command CAND with keybinding."
-  ;; Precomputing the keybinding of every command is faster than looking it up 
every time using
-  ;; `where-is-internal'. `where-is-internal' generates a lot of garbage, 
leading to garbage
-  ;; collecting pauses when interacting with the minibuffer. See
-  ;; https://github.com/minad/marginalia/issues/16.
-  (unless marginalia--annotate-binding-hash
-    (setq marginalia--annotate-binding-hash (make-hash-table :size 1025))
-    (mapatoms (lambda (sym)
-                (when-let (key (and (commandp sym) (where-is-internal sym nil 
t)))
-                  (puthash sym key marginalia--annotate-binding-hash)))))
   (when-let* ((sym (intern-soft cand))
-              (binding (gethash sym marginalia--annotate-binding-hash)))
-    (propertize (format " (%s)" (key-description binding)) 'face 
'marginalia-key)))
+              (key (and (commandp sym) (where-is-internal sym nil 
'first-only))))
+    (propertize (format " (%s)" (key-description key)) 'face 'marginalia-key)))
 
 (defun marginalia--annotator (cat)
   "Return annotation function for category CAT."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]