summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoão Távora <joaotavora@gmail.com>2019-01-24 18:04:52 +0000
committerJoão Távora <joaotavora@gmail.com>2019-01-25 13:04:43 +0000
commitf845f8a279cfc2acd1051b4cd4924e2aede54017 (patch)
treecbd6b85c1019374e35ced57dffd6e7e653feed89
parent96e386e60de1d4ae9d702fc376ef7a9279a6aa66 (diff)
downloademacs-f845f8a279cfc2acd1051b4cd4924e2aede54017.tar.gz
Use minibuffer-default in completion-all-sorted-completions (bug#34083)
* lisp/minibuffer (completion-all-sorted-completions): Sort with the default on top.
-rw-r--r--lisp/minibuffer.el12
1 files changed, 8 insertions, 4 deletions
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index c8b84b0e947..b757eb8a5a6 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -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.