From 40c2934bb82fff3c987d0f0451631279dffc0c90 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 16 Mar 2011 20:43:54 -0400 Subject: [PATCH] * lisp/minibuffer.el (completion-all-sorted-completions): Use :completion-cycle-penalty text property if present. --- lisp/ChangeLog | 5 +++++ lisp/minibuffer.el | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e1bce10b980..957038b3e40 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2011-03-17 Stefan Monnier + + * minibuffer.el (completion-all-sorted-completions): + Use :completion-cycle-penalty text property if present. + 2011-03-16 Ken Manheimer * allout.el (allout-yank-processing): Adjust for new rebulleting diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 3c8628c9cfa..fa36da01cd9 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -704,7 +704,15 @@ scroll the window of possible completions." (when last (setcdr last nil) ;; Prefer shorter completions. - (setq all (sort all (lambda (c1 c2) (< (length c1) (length c2))))) + (setq all (sort all (lambda (c1 c2) + (let ((s1 (get-text-property + 0 :completion-cycle-penalty c1)) + (s2 (get-text-property + 0 :completion-cycle-penalty c2))) + (if (eq s1 s2) + (< (length c1) (length c2)) + (< (or s1 (length c1)) + (or s2 (length c2)))))))) ;; Prefer recently used completions. (let ((hist (symbol-value minibuffer-history-variable))) (setq all (sort all (lambda (c1 c2) -- 2.39.2