[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/marginalia ccefc57 052/241: marginalia-annotate-command
From: |
Stefan Monnier |
Subject: |
[elpa] externals/marginalia ccefc57 052/241: marginalia-annotate-command-binding: add comment |
Date: |
Fri, 28 May 2021 20:48:55 -0400 (EDT) |
branch: externals/marginalia
commit ccefc57c574aea6babc7c0ce2363a734d83fce59
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
marginalia-annotate-command-binding: add comment
---
marginalia.el | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/marginalia.el b/marginalia.el
index c0f4b37..98a8621 100644
--- a/marginalia.el
+++ b/marginalia.el
@@ -217,16 +217,22 @@ determine it."
"Truncate string STR to WIDTH."
(truncate-string-to-width (car (split-string str "\n")) width 0 32 "…"))
-(defvar-local marginalia-annotate-command-binding--hash nil)
+(defvar-local marginalia-annotate-command-binding--hash nil
+ "Hash table storing the keybinding of every command.
+This hash table is needed to speed up `marginalia-annotate-command-binding'.")
+
(defun marginalia-annotate-command-binding (cand)
"Annotate command CAND with keybinding."
(with-current-buffer (window-buffer (minibuffer-selected-window))
+ ;; 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-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 key marginalia-annotate-command-binding--hash)))))
+ (when-let (key (and (commandp sym) (where-is-internal sym nil t)))
+ (puthash sym key marginalia-annotate-command-binding--hash))))
(when-let (binding (gethash (intern cand)
marginalia-annotate-command-binding--hash))
(propertize (format " (%s)" (key-description binding)) 'face
'marginalia-key))))
- [elpa] externals/marginalia 1c8ef02 020/241: Remove unused marginalia--metadata function, (continued)
- [elpa] externals/marginalia 1c8ef02 020/241: Remove unused marginalia--metadata function, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia c05face 042/241: Improve marginalia-toggle-annotators if invoked from minibuffer, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 59d65af 018/241: Add basic classifiers: orginal category, symbols, by words in prompt, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 0f1e763 025/241: rename some variables for consistency, update readme, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia cd95c65 028/241: buffer annotation: add read-only status, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 675e680 036/241: improve annotator defcustoms, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 8be2daf 046/241: marginalia-annotate-file: remove unnecessary offset which only costs space for no reason, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia c8c3f87 045/241: Rename toggle -> cycle, improve documenation, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 1269445 049/241: marginalia-annotate-command-binding: cache key binding, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 376ccc5 048/241: Revert "fix marginalia--full-candidate for selectrum", Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia ccefc57 052/241: marginalia-annotate-command-binding: add comment,
Stefan Monnier <=
- [elpa] externals/marginalia 597186d 065/241: add marginalia-annotate-minor-mode, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 14dce57 062/241: scale field widths such that annotations look better on smaller windows, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 7d3719d 074/241: Fix advice skipping regexp for older Emacsen, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 5373a26 076/241: add marginalia-modified face, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia c0460b6 085/241: classify environment variable, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 9d2f319 080/241: marginalia-annotate-variable: add modification indicator, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 9f1b63b 086/241: add symbol class characters from Emacs 28, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 74603c0 091/241: use mapatoms to fix the harmless unused variable warning, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 88ba686 090/241: remove unnecessary :group specification, Stefan Monnier, 2021/05/28
- [elpa] externals/marginalia 6cd9768 098/241: minor optimization to marginalia--function-doc, Stefan Monnier, 2021/05/28