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.
This commit is contained in:
parent
55478e4ad7
commit
e8b6cc9a99
1 changed files with 13 additions and 9 deletions
|
@ -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.
|
||||
|
|
Loading…
Add table
Reference in a new issue