emacs-diffs
[Top][All Lists]
Advanced

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

master 9c91204 1/3: Another adjustment to flex completion style's sortin


From: João Távora
Subject: master 9c91204 1/3: Another adjustment to flex completion style's sorting function
Date: Mon, 23 Dec 2019 18:44:49 -0500 (EST)

branch: master
commit 9c912049927cfb18b9c8b37039b38ddf51f2fe81
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>

    Another adjustment to flex completion style's sorting function
    
    * lisp/minibuffer.el (completion--flex-adjust-metadata): Adjust
    case when minibuffer-default is non-nil.
---
 lisp/minibuffer.el | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 0e9b1c1..f900557 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -3608,16 +3608,21 @@ that is non-nil."
                    (> (or s1 0) (or s2 0))))))
              (minibuffer-default
               ;; If we have an empty pattern and a non-nil default, we
-              ;; probably want to make sure that default is bubbled to
-              ;; the top so that a "force-completion" operation will
-              ;; select it.  We want that to happen even if it doesn't
-              ;; match the completion perfectly.
+              ;; want to make sure that default is bubbled to the top
+              ;; so that a "force-completion" operation will select
+              ;; it.  We want that to happen even if it doesn't match
+              ;; the completion perfectly.
               (cl-loop
-               for l on pre-sorted
-               for comp = (cadr l)
-               when (string-prefix-p minibuffer-default comp)
-               do (setf (cdr l) (cddr l))
-               and return (cons comp pre-sorted)
+               ;; JT@2019-12-23: FIXME: ideally, we want to use
+               ;; flex-matching itself on the default itself, not
+               ;; `equal' or `string-prefix-p'.
+               for fn in '(equal string-prefix-p)
+               thereis (cl-loop
+                        for l on pre-sorted
+                        for comp = (cadr l)
+                        when (funcall fn minibuffer-default comp)
+                        do (setf (cdr l) (cddr l))
+                        and return (cons comp pre-sorted))
                finally return pre-sorted))
              (t
               pre-sorted))))))



reply via email to

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