[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))))))