Simplify ignored extensions filtering in Icomplete (bug#34070)
* lisp/icomplete.el: Use lexical binding. (icomplete-completions): Use minibuffer-completion-predicate to filter out completion-ignored-extensions.
This commit is contained in:
parent
7560ef7de9
commit
5a6df06494
1 changed files with 22 additions and 12 deletions
|
@ -1,4 +1,4 @@
|
|||
;;; icomplete.el --- minibuffer completion incremental feedback
|
||||
;;; icomplete.el --- minibuffer completion incremental feedback -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 1992-1994, 1997, 1999, 2001-2019 Free Software
|
||||
;; Foundation, Inc.
|
||||
|
@ -368,8 +368,21 @@ If there are multiple possibilities, `icomplete-separator' separates them.
|
|||
The displays for unambiguous matches have ` [Matched]' appended
|
||||
\(whether complete or not), or ` [No matches]', if no eligible
|
||||
matches exist."
|
||||
(let* ((minibuffer-completion-table candidates)
|
||||
(minibuffer-completion-predicate predicate)
|
||||
(let* ((ignored-extension-re
|
||||
(and minibuffer-completing-file-name
|
||||
icomplete-with-completion-tables
|
||||
completion-ignored-extensions
|
||||
(concat "\\(?:\\`\\.\\./\\|"
|
||||
(regexp-opt completion-ignored-extensions)
|
||||
"\\)\\'")))
|
||||
(minibuffer-completion-table candidates)
|
||||
(minibuffer-completion-predicate
|
||||
(if ignored-extension-re
|
||||
(lambda (cand)
|
||||
(and (not (string-match ignored-extension-re cand))
|
||||
(or (null predicate)
|
||||
(funcall predicate cand))))
|
||||
predicate))
|
||||
(md (completion--field-metadata (icomplete--field-beg)))
|
||||
(comps (completion-all-sorted-completions
|
||||
(icomplete--field-beg) (icomplete--field-end)))
|
||||
|
@ -380,11 +393,8 @@ matches exist."
|
|||
;; `concat'/`mapconcat' is the slow part.
|
||||
(if (not (consp comps))
|
||||
(progn ;;(debug (format "Candidates=%S field=%S" candidates name))
|
||||
(format " %sNo matches%s" open-bracket close-bracket))
|
||||
(format " %sNo matches%s" open-bracket close-bracket))
|
||||
(if last (setcdr last nil))
|
||||
(when (and minibuffer-completing-file-name
|
||||
icomplete-with-completion-tables)
|
||||
(setq comps (completion-pcm--filename-try-filter comps)))
|
||||
(let* ((most-try
|
||||
(if (and base-size (> base-size 0))
|
||||
(completion-try-completion
|
||||
|
@ -470,11 +480,11 @@ matches exist."
|
|||
(if prefix-len (substring (car comps) prefix-len) (car comps))
|
||||
comps (cdr comps))
|
||||
(setq prospects-len
|
||||
(+ (string-width comp)
|
||||
(string-width icomplete-separator)
|
||||
prospects-len))
|
||||
(if (< prospects-len prospects-max)
|
||||
(push comp prospects)
|
||||
(+ (string-width comp)
|
||||
(string-width icomplete-separator)
|
||||
prospects-len))
|
||||
(if (< prospects-len prospects-max)
|
||||
(push comp prospects)
|
||||
(setq limit t))))
|
||||
(setq prospects (nreverse prospects))
|
||||
;; Decorate first of the prospects.
|
||||
|
|
Loading…
Add table
Reference in a new issue