From: Stefan Monnier Date: Thu, 17 Mar 2011 00:43:54 +0000 (-0400) Subject: * lisp/minibuffer.el (completion-all-sorted-completions): X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~559 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=40c2934bb82fff3c987d0f0451631279dffc0c90;p=emacs.git * lisp/minibuffer.el (completion-all-sorted-completions): Use :completion-cycle-penalty text property if present. --- 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)