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

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

[elpa] externals/marginalia 3e061a0 185/241: marginalia-annotate-bookmar


From: Stefan Monnier
Subject: [elpa] externals/marginalia 3e061a0 185/241: marginalia-annotate-bookmark: Handle non-symbol bookmark handlers
Date: Fri, 28 May 2021 20:49:23 -0400 (EDT)

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

    marginalia-annotate-bookmark: Handle non-symbol bookmark handlers
    
    For example the function `xwidget-webkit-bookmark-make-record'
    creates bookmarks of this dubious form.
    
    See https://github.com/raxod502/selectrum/issues/442
---
 marginalia.el | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/marginalia.el b/marginalia.el
index d1cfcbc..5e9c397 100644
--- a/marginalia.el
+++ b/marginalia.el
@@ -522,14 +522,18 @@ Similar to `marginalia-annotate-symbol', but does not 
show symbol class."
   "Return bookmark type string of BM.
 
 The string is transformed according to 
`marginalia-bookmark-type-transformers'."
-  (let ((str (symbol-name (or (alist-get 'handler bm)
-                              'bookmark-default-handler))))
-    (dolist (transformer marginalia-bookmark-type-transformers str)
-      (when (string-match-p (car transformer) str)
-        (setq str
-              (if (stringp (cdr transformer))
-                  (replace-regexp-in-string (car transformer) (cdr 
transformer) str)
-                (funcall (cdr transformer) str)))))))
+  (let ((handler (or (alist-get 'handler bm) 'bookmark-default-handler)))
+    ;; Some libraries use lambda handlers instead of symbols. For
+    ;; example the function `xwidget-webkit-bookmark-make-record' is
+    ;; affected. I consider this bad style since then the lambda is
+    ;; persisted.
+    (when-let (str (and (symbolp handler) (symbol-name handler)))
+      (dolist (transformer marginalia-bookmark-type-transformers str)
+        (when (string-match-p (car transformer) str)
+          (setq str
+                (if (stringp (cdr transformer))
+                    (replace-regexp-in-string (car transformer) (cdr 
transformer) str)
+                  (funcall (cdr transformer) str))))))))
 
 (defun marginalia-annotate-bookmark (cand)
   "Annotate bookmark CAND with its file name and front context string."



reply via email to

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