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

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

[elpa] externals/marginalia f39556b 043/241: fix marginalia--full-candid


From: Stefan Monnier
Subject: [elpa] externals/marginalia f39556b 043/241: fix marginalia--full-candidate for selectrum
Date: Fri, 28 May 2021 20:48:53 -0400 (EDT)

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

    fix marginalia--full-candidate for selectrum
    
    * This is a stop gap measure until we find a better method which works 
generically.
    * See https://github.com/raxod502/selectrum/issues/255
    * See https://github.com/minad/marginalia/issues/12
---
 marginalia.el | 36 ++++++++++++++++++++++--------------
 1 file changed, 22 insertions(+), 14 deletions(-)

diff --git a/marginalia.el b/marginalia.el
index ee761f5..c6c70d4 100644
--- a/marginalia.el
+++ b/marginalia.el
@@ -303,20 +303,28 @@ component of a full file path.
 
 This function returns what would be the minibuffer contents after
 using `minibuffer-force-complete' on the candidate CAND."
-  (if (minibufferp)
-      (let* ((contents (minibuffer-contents))
-             (pt (- (point) (minibuffer-prompt-end)))
-             (bounds (completion-boundaries
-                      (substring contents 0 pt)
-                      minibuffer-completion-table
-                      minibuffer-completion-predicate
-                      (substring contents pt))))
-        (concat (substring contents 0 (car bounds))
-                cand
-                (substring contents (+ pt (cdr bounds)))))
-    ;; not in a minibuffer, trust that cand already conveys all
-    ;; necessary information (there's not much else we can do)
-    cand))
+  (or
+   ;; Selectrum allows access to the full-candidate via property
+   ;; TODO The generic method which follows, does not work yet with selectrum.
+   ;; https://github.com/raxod502/selectrum/issues/255
+   (get-text-property 0 'selectrum-candidate-full cand)
+
+   ;; When in the minibuffer, use the minibuffer contents to expand the 
candidate.
+   (and (minibufferp)
+        (let* ((contents (minibuffer-contents))
+               (pt (- (point) (minibuffer-prompt-end)))
+               (bounds (completion-boundaries
+                        (substring contents 0 pt)
+                        minibuffer-completion-table
+                        minibuffer-completion-predicate
+                        (substring contents pt))))
+          (concat (substring contents 0 (car bounds))
+                  cand
+                  (substring contents (+ pt (cdr bounds))))))
+
+   ;; Not in a minibuffer, trust that cand already conveys all
+   ;; information, since there is nothing we can do.
+   cand))
 
 (defun marginalia-annotate-file (cand)
   "Annotate file CAND with its size and modification time."



reply via email to

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