X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/e6fd457e010c2ec034a331335530d817852cc11c..15cc05e98486f43b21aaf6e7428fa9f08ddd9e94:/lisp/ido.el diff --git a/lisp/ido.el b/lisp/ido.el index bbf3fe2a1d..4ab183b320 100644 --- a/lisp/ido.el +++ b/lisp/ido.el @@ -279,7 +279,7 @@ ;; can be used by other packages to read a buffer name, a file name, ;; or a directory name in the `ido' way. -;;; Acknowledgements +;;; Acknowledgments ;; Infinite amounts of gratitude goes to Stephen Eglen ;; who wrote iswitch-buffer mode - from which I ripped off 99% of the code @@ -493,6 +493,18 @@ 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 arranges matches in the following order: + + full-matches > suffix matches > prefix matches > remaining matches + +which can get in the way for buffer switching." + :version "24.3" + :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] @@ -702,7 +714,7 @@ See also `ido-dir-file-cache' and `ido-save-directory-list-file'." :type 'integer :group 'ido) -(defcustom ido-max-directory-size 30000 +(defcustom ido-max-directory-size nil "Maximum size (in bytes) for directories to use ido completion. If you enter a directory with a size larger than this size, ido will not provide the normal completion. To show the completions, use C-a." @@ -791,44 +803,39 @@ subdirs in the alternatives." :type 'boolean :group 'ido) -(defface ido-first-match '((t (:bold t))) +(defface ido-first-match '((t :weight bold)) "Face used by ido for highlighting first match." :group 'ido) (defface ido-only-match '((((class color)) - (:foreground "ForestGreen")) - (t (:italic t))) + :foreground "ForestGreen") + (t :slant italic)) "Face used by ido for highlighting only match." :group 'ido) (defface ido-subdir '((((min-colors 88) (class color)) - (:foreground "red1")) - (((class color)) - (:foreground "red")) - (t (:underline t))) + :foreground "red1") + (((class color)) + :foreground "red") + (t :underline t)) "Face used by ido for highlighting subdirs in the alternatives." :group 'ido) -(defface ido-virtual '((t (:inherit font-lock-builtin-face))) +(defface ido-virtual '((t :inherit font-lock-builtin-face)) "Face used by ido for matching virtual buffer names." :version "24.1" :group 'ido) -(defface ido-indicator '((((min-colors 88) (class color)) - (:foreground "yellow1" - :background "red1" - :width condensed)) - (((class color)) - (:foreground "yellow" - :background "red" - :width condensed)) - (t (:inverse-video t))) +(defface ido-indicator '((((min-colors 88) (class color)) + :foreground "yellow1" :background "red1" :width condensed) + (((class color)) + :foreground "yellow" :background "red" :width condensed) + (t :inverse-video t)) "Face used by ido for highlighting its indicators." :group 'ido) (defface ido-incomplete-regexp - '((t - (:inherit font-lock-warning-face))) + '((t :inherit font-lock-warning-face)) "Ido face for indicating incomplete regexps." :group 'ido) @@ -893,9 +900,14 @@ Otherwise, only the current list of matches is shown." :type 'boolean :group 'ido) -(defvar ido-all-frames 'visible - "Argument to pass to `walk-windows' when finding visible files. -See documentation of `walk-windows' for useful values.") +(defcustom ido-all-frames 'visible + "Argument to pass to `walk-windows' when Ido is finding buffers. +See documentation of `walk-windows' for useful values." + :type '(choice (const :tag "Selected frame only" nil) + (const :tag "All existing frames" t) + (const :tag "All visible frames" visible) + (const :tag "All frames on this terminal" 0)) + :group 'ido) (defcustom ido-minibuffer-setup-hook nil "Ido-specific customization of minibuffer setup. @@ -1708,7 +1720,7 @@ This function also adds a hook to the minibuffer." (ido-final-slash dir) (not (ido-is-unc-host dir)) (file-directory-p dir) - (> (nth 7 (file-attributes dir)) ido-max-directory-size)))) + (> (nth 7 (file-attributes (file-truename dir))) ido-max-directory-size)))) (defun ido-set-current-directory (dir &optional subdir no-merge) ;; Set ido's current directory to DIR or DIR/SUBDIR @@ -3688,10 +3700,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 + (not (and (eq ido-cur-item 'buffer) + 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)) + (not (and (eq ido-cur-item 'buffer) + 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))) @@ -4046,8 +4065,7 @@ their normal keybindings, except for the following: \\ RET Select the file at the front of the list of matches. If the list is empty, possibly prompt to create new file. -\\[ido-select-text] Select the current prompt as the buffer or file. -If no buffer or file is found, prompt for a new one. +\\[ido-select-text] Use the current input string verbatim. \\[ido-next-match] Put the first element at the end of the list. \\[ido-prev-match] Put the last element at the start of the list. @@ -4142,6 +4159,7 @@ If no buffer or file is found, prompt for a new one. matches all files. If there is only one match, select that file. If there is no common suffix, show a list of all matching files in a separate window. +\\[ido-magic-delete-char] Open the specified directory in Dired mode. \\[ido-edit-input] Edit input string (including directory). \\[ido-prev-work-directory] or \\[ido-next-work-directory] go to previous/next directory in work directory history. \\[ido-merge-work-directories] search for file in the work directory history.