Correctly cache sorted completions in icomplete--sorted-completions
* lisp/icomplete.el (icomplete--sorted-completions): Use completion--cache-all-sorted-completions.
This commit is contained in:
parent
c454fa7b48
commit
83587bb688
1 changed files with 30 additions and 29 deletions
|
@ -444,35 +444,36 @@ Usually run by inclusion in `minibuffer-setup-hook'."
|
|||
(add-hook 'post-command-hook 'icomplete-post-command-hook nil t)))
|
||||
|
||||
(defun icomplete--sorted-completions ()
|
||||
(let ((all (completion-all-sorted-completions
|
||||
(icomplete--field-beg) (icomplete--field-end))))
|
||||
(cl-loop
|
||||
for fn in (cond ((and minibuffer-default
|
||||
(= (icomplete--field-end) (icomplete--field-beg)))
|
||||
;; When we have a non-nil default and no input
|
||||
;; whatsoever: we want to make sure that default
|
||||
;; is bubbled to the top so that
|
||||
;; `icomplete-force-complete-and-exit' will
|
||||
;; select it (do that even if the match doesn't
|
||||
;; match the completion perfectly.
|
||||
`(,(lambda (comp)
|
||||
(equal minibuffer-default comp))
|
||||
,(lambda (comp)
|
||||
(string-prefix-p minibuffer-default comp))))
|
||||
((and fido-mode
|
||||
(not minibuffer-default)
|
||||
(eq (icomplete--category) 'file))
|
||||
`(,(lambda (comp)
|
||||
(string= "./" comp)))))
|
||||
thereis (cl-loop
|
||||
for l on all
|
||||
while (consp (cdr l))
|
||||
for comp = (cadr l)
|
||||
when (funcall fn comp)
|
||||
do (setf (cdr l) (cddr l))
|
||||
and return
|
||||
(setq completion-all-sorted-completions (cons comp all)))
|
||||
finally return all)))
|
||||
(cl-loop
|
||||
with beg = (icomplete--field-beg)
|
||||
with end = (icomplete--field-end)
|
||||
with all = (completion-all-sorted-completions beg end)
|
||||
for fn in (cond ((and minibuffer-default
|
||||
(= (icomplete--field-end) (icomplete--field-beg)))
|
||||
;; When we have a non-nil default and no input
|
||||
;; whatsoever: we want to make sure that default
|
||||
;; is bubbled to the top so that
|
||||
;; `icomplete-force-complete-and-exit' will
|
||||
;; select it (do that even if the match doesn't
|
||||
;; match the completion perfectly.
|
||||
`(,(lambda (comp)
|
||||
(equal minibuffer-default comp))
|
||||
,(lambda (comp)
|
||||
(string-prefix-p minibuffer-default comp))))
|
||||
((and fido-mode
|
||||
(not minibuffer-default)
|
||||
(eq (icomplete--category) 'file))
|
||||
`(,(lambda (comp)
|
||||
(string= "./" comp)))))
|
||||
thereis (cl-loop
|
||||
for l on all
|
||||
while (consp (cdr l))
|
||||
for comp = (cadr l)
|
||||
when (funcall fn comp)
|
||||
do (setf (cdr l) (cddr l))
|
||||
and return
|
||||
(completion--cache-all-sorted-completions beg end (cons comp all)))
|
||||
finally return all))
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue