From: Leo Liu Date: Sun, 16 Sep 2012 22:23:49 +0000 (+0800) Subject: IDO: Disable match re-ordering for buffer switching X-Git-Tag: emacs-24.2.90~269^2~3^2~4 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a8c14da8498eb09c3dc26d1b4edeaa00df9135d5;p=emacs.git IDO: Disable match re-ordering for buffer switching Fixes: debbugs:2042 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e8a05696437..8134363f184 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2012-09-16 Leo Liu + + IDO: Disable match re-ordering for buffer switching. + * ido.el (ido-confirm-unique-completion): New variable. + (ido-set-matches-1): Use it. (Bug#2042) + 2012-09-12 Jose Marino (tiny change) * progmodes/idlw-shell.el (idlwave-shell-complete-filename): diff --git a/lisp/ido.el b/lisp/ido.el index fe94c7f225e..512ac9d4a18 100644 --- a/lisp/ido.el +++ b/lisp/ido.el @@ -493,6 +493,17 @@ as first char even if `ido-enable-prefix' is nil." :type 'boolean :group 'ido) +;; See http://debbugs.gnu.org/2042 for more info. +(defcustom ido-buffer-disable-smart-matches t + "Non-nil means not to re-order matches for buffer switching. +By default, ido aranges matches in the following order: + + full-matches > suffix matches > prefix matches > remaining matches + +which can get in the way for buffer switching." + :type 'boolean + :group 'ido) + (defcustom ido-confirm-unique-completion nil "Non-nil means that even a unique completion must be confirmed. This means that \\[ido-complete] must always be followed by \\[ido-exit-minibuffer] @@ -3688,10 +3699,17 @@ This is to make them appear as if they were \"virtual buffers\"." (rex0 (if ido-enable-regexp text (regexp-quote text))) (rexq (concat rex0 (if slash ".*/" ""))) (re (if ido-enable-prefix (concat "\\`" rexq) rexq)) - (full-re (and do-full (not ido-enable-regexp) (not (string-match "\$\\'" rex0)) + (full-re (and do-full + (and (eq ido-cur-item 'buffer) + (not ido-buffer-disable-smart-matches)) + (not ido-enable-regexp) + (not (string-match "\$\\'" rex0)) (concat "\\`" rex0 (if slash "/" "") "\\'"))) (suffix-re (and do-full slash - (not ido-enable-regexp) (not (string-match "\$\\'" rex0)) + (and (eq ido-cur-item 'buffer) + (not ido-buffer-disable-smart-matches)) + (not ido-enable-regexp) + (not (string-match "\$\\'" rex0)) (concat rex0 "/\\'"))) (prefix-re (and full-re (not ido-enable-prefix) (concat "\\`" rexq)))