Skip to content

Commit

Permalink
Merge changes from upstream emacs repo
Browse files Browse the repository at this point in the history
  • Loading branch information
danskarda committed Nov 20, 2012
1 parent ae748c0 commit b1ac192
Showing 1 changed file with 55 additions and 33 deletions.
88 changes: 55 additions & 33 deletions ido.el
Original file line number Diff line number Diff line change
Expand Up @@ -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 <stephen@cns.ed.ac.uk>
;; who wrote iswitch-buffer mode - from which I ripped off 99% of the code
Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -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."
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -872,7 +879,7 @@ The following variables are available, but should not be changed:
:group 'ido)

(defvar ido-rewrite-file-prompt-rules nil
"*Alist of rewriting rules for directory names in ido prompts.
"Alist of rewriting rules for directory names in ido prompts.
A list of elements of the form (FROM . TO) or (FROM . FUNC), each
meaning to rewrite the directory name if matched by FROM by either
substituting the matched string by TO or calling the function FUNC
Expand All @@ -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.
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)))
Expand Down Expand Up @@ -3743,7 +3762,11 @@ This is to make them appear as if they were \"virtual buffers\"."
ido-enable-flex-matching
(> (length ido-text) 1)
(not ido-enable-regexp))
(setq re (mapconcat #'regexp-quote (split-string ido-text "") ".*"))
(setq re (concat (regexp-quote (string (aref ido-text 0)))
(mapconcat (lambda (c)
(concat "[^" (string c) "]*"
(regexp-quote (string c))))
(substring ido-text 1) "")))
(if ido-enable-prefix
(setq re (concat "\\`" re)))

Expand Down Expand Up @@ -4056,8 +4079,7 @@ their normal keybindings, except for the following: \\<ido-buffer-completion-map
RET Select the buffer at the front of the list of matches. If the
list is empty, possibly prompt to create new buffer.
\\[ido-select-text] Select the current prompt as the buffer.
If no buffer 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.
Expand Down Expand Up @@ -4143,15 +4165,15 @@ except for the following: \\<ido-file-completion-map>
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.
\\[ido-complete] Complete a common suffix to the current string that
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.
Expand Down

0 comments on commit b1ac192

Please sign in to comment.