1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-03 11:33:37 +00:00

Use minibuffer-default in completion-all-sorted-completions (bug#34083)

* lisp/minibuffer (completion-all-sorted-completions): Sort with the
default on top.
This commit is contained in:
João Távora 2019-01-24 18:04:52 +00:00
parent 96e386e60d
commit f845f8a279

View File

@ -1244,12 +1244,16 @@ scroll the window of possible completions."
(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.
;; 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 (lambda (c1 c2)
(> (length (member c1 hist))
(length (member c2 hist))))))))
(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))))))))))
;; Cache the result. This is not just for speed, but also so that
;; repeated calls to minibuffer-force-complete can cycle through
;; all possibilities.