]> git.eshelyaron.com Git - emacs.git/commitdiff
IDO: Disable match re-ordering for buffer switching
authorLeo Liu <sdl.web@gmail.com>
Sun, 16 Sep 2012 22:23:49 +0000 (06:23 +0800)
committerLeo Liu <sdl.web@gmail.com>
Sun, 16 Sep 2012 22:23:49 +0000 (06:23 +0800)
Fixes: debbugs:2042
lisp/ChangeLog
lisp/ido.el

index e8a056964374a6a1a42bfae1c95f051e4bbba81a..8134363f184c032f4ef26552d91798546626c235 100644 (file)
@@ -1,3 +1,9 @@
+2012-09-16  Leo Liu  <sdl.web@gmail.com>
+
+       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  <marinoj@nso.edu>  (tiny change)
 
        * progmodes/idlw-shell.el (idlwave-shell-complete-filename):
index fe94c7f225e7694ed26d40233dd042198ebc3a59..512ac9d4a188feeb2618d20670e79aef283bedad 100644 (file)
@@ -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)))