mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-15 17:00:26 +00:00
(ido-find-common-substring): Return substring instead of t.
This commit is contained in:
parent
79814626bd
commit
9066a4d070
54
lisp/ido.el
54
lisp/ido.el
@ -1545,7 +1545,7 @@ If INITIAL is non-nil, it specifies the initial input string."
|
||||
(catch 'ido
|
||||
(completing-read
|
||||
(ido-make-prompt item prompt)
|
||||
'(("dummy".1)) nil nil ; table predicate require-match
|
||||
'(("dummy" . 1)) nil nil ; table predicate require-match
|
||||
(prog1 ido-text-init (setq ido-text-init nil)) ;initial-contents
|
||||
history))))
|
||||
(ido-trace "completing-read" ido-final-text)
|
||||
@ -2751,7 +2751,7 @@ for first matching file."
|
||||
ido-enable-flex-matching
|
||||
(> (length ido-text) 1)
|
||||
(not ido-enable-regexp))
|
||||
(setq re (mapconcat 'regexp-quote (split-string ido-text "") ".*"))
|
||||
(setq re (mapconcat #'regexp-quote (split-string ido-text "") ".*"))
|
||||
(if ido-enable-prefix
|
||||
(setq re (concat "\\`" re)))
|
||||
(mapcar
|
||||
@ -2817,14 +2817,16 @@ for first matching file."
|
||||
(if ido-enable-regexp
|
||||
subs
|
||||
(regexp-quote subs)))
|
||||
(setq res (mapcar 'ido-word-matching-substring items))
|
||||
(setq res (mapcar #'ido-word-matching-substring items))
|
||||
(setq res (delq nil res)) ;; remove any nil elements (shouldn't happen)
|
||||
(setq alist (mapcar 'ido-makealist res)) ;; could use an OBARRAY
|
||||
(setq alist (mapcar #'ido-makealist res)) ;; could use an OBARRAY
|
||||
|
||||
;; try-completion returns t if there is an exact match.
|
||||
(let ((completion-ignore-case ido-case-fold))
|
||||
|
||||
(try-completion subs alist))))
|
||||
(let* ((completion-ignore-case ido-case-fold)
|
||||
(comp (try-completion subs alist)))
|
||||
(if (eq comp t)
|
||||
subs
|
||||
comp))))
|
||||
|
||||
(defun ido-word-matching-substring (word)
|
||||
;; Return part of WORD before 1st match to `ido-change-word-sub'.
|
||||
@ -3499,28 +3501,30 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
|
||||
(let* ((items (if (> ido-max-prospects 0) (1+ ido-max-prospects) 999))
|
||||
(alternatives
|
||||
(apply
|
||||
(function concat)
|
||||
#'concat
|
||||
(cdr (apply
|
||||
(function nconc)
|
||||
(mapcar '(lambda (com)
|
||||
(setq com (ido-name com))
|
||||
(setq items (1- items))
|
||||
(cond
|
||||
((< items 0) ())
|
||||
((= items 0) (list (nth 3 ido-decorations))) ; " | ..."
|
||||
(t
|
||||
(list (or ido-separator (nth 2 ido-decorations)) ; " | "
|
||||
(let ((str (substring com 0)))
|
||||
(if (and ido-use-faces
|
||||
(not (string= str first))
|
||||
(ido-final-slash str))
|
||||
(put-text-property 0 (length str) 'face 'ido-subdir-face str))
|
||||
str)))))
|
||||
comps))))))
|
||||
#'nconc
|
||||
(mapcar
|
||||
(lambda (com)
|
||||
(setq com (ido-name com))
|
||||
(setq items (1- items))
|
||||
(cond
|
||||
((< items 0) ())
|
||||
((= items 0) (list (nth 3 ido-decorations))) ; " | ..."
|
||||
(t
|
||||
(list (or ido-separator (nth 2 ido-decorations)) ; " | "
|
||||
(let ((str (substring com 0)))
|
||||
(if (and ido-use-faces
|
||||
(not (string= str first))
|
||||
(ido-final-slash str))
|
||||
(put-text-property 0 (length str) 'face 'ido-subdir-face str))
|
||||
str)))))
|
||||
comps))))))
|
||||
|
||||
(concat
|
||||
;; put in common completion item -- what you get by pressing tab
|
||||
(if (> (length ido-common-match-string) (length name))
|
||||
(if (and (stringp ido-common-match-string)
|
||||
(> (length ido-common-match-string) (length name)))
|
||||
(concat (nth 4 ido-decorations) ;; [ ... ]
|
||||
(substring ido-common-match-string (length name))
|
||||
(nth 5 ido-decorations)))
|
||||
|
Loading…
Reference in New Issue
Block a user