emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master e8b6cc9 2/2: cycle-sort-function prevails in comple


From: João Távora
Subject: [Emacs-diffs] master e8b6cc9 2/2: cycle-sort-function prevails in completion-all-sorted-completions
Date: Tue, 19 Feb 2019 04:11:40 -0500 (EST)

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

    cycle-sort-function prevails in completion-all-sorted-completions
    
    * lisp/minibuffer.el (completion-all-sorted-completions): If
    completion table has cycle-sort-function, that prevails over other
    sorting strategies.
---
 lisp/minibuffer.el | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 7413be4..cc87ffa 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1246,19 +1246,23 @@ scroll the window of possible completions."
           (setq all (delete-dups all))
           (setq last (last all))
 
-          (setq all (if sort-fun (funcall sort-fun all)
-                      ;; Prefer shorter completions, by default.
-                      (sort all (lambda (c1 c2) (< (length c1) (length c2))))))
-          ;; Prefer recently used completions and put the default, if
-          ;; it exists, on top.
-          (when (minibufferp)
-            (let ((hist (symbol-value minibuffer-history-variable)))
-              (setq all (sort all
+          (cond
+           (sort-fun
+            (setq all (funcall sort-fun all)))
+           (t
+            ;; Prefer shorter completions, by default.
+            (setq all (sort all (lambda (c1 c2) (< (length c1) (length c2)))))
+            (if (minibufferp)
+                ;; Prefer recently used completions and put the default, if
+                ;; it exists, on top.
+                (let ((hist (symbol-value minibuffer-history-variable)))
+                  (setq all
+                        (sort all
                               (lambda (c1 c2)
                                 (cond ((equal c1 minibuffer-default) t)
                                       ((equal c2 minibuffer-default) nil)
                                       (t (> (length (member c1 hist))
-                                            (length (member c2 hist))))))))))
+                                            (length (member c2 hist))))))))))))
           ;; Cache the result.  This is not just for speed, but also so that
           ;; repeated calls to minibuffer-force-complete can cycle through
           ;; all possibilities.



reply via email to

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