Make icomplete-forward-completions O(1) when icomplete-scroll is t
In particular, this makes the recently added icomplete-vertical-goto-last (bug#49005) be O(n) instead of O(n^2). That used to be almost unbearably slow for large n. * lisp/icomplete.el (icomplete-forward-completions): don't call last unless needed.
This commit is contained in:
parent
a3df92f483
commit
fb81c8c3ad
1 changed files with 3 additions and 3 deletions
|
@ -258,14 +258,14 @@ Return non-nil iff something was stepped."
|
|||
(interactive)
|
||||
(let* ((beg (icomplete--field-beg))
|
||||
(end (icomplete--field-end))
|
||||
(comps (completion-all-sorted-completions beg end))
|
||||
(last (last comps)))
|
||||
(comps (completion-all-sorted-completions beg end)))
|
||||
(when (consp (cdr comps))
|
||||
(cond (icomplete-scroll
|
||||
(push (pop comps) icomplete--scrolled-past)
|
||||
(setq icomplete--scrolled-completions comps))
|
||||
(t
|
||||
(setcdr (last comps) (cons (pop comps) (cdr last)))))
|
||||
(let ((last (last comps)))
|
||||
(setcdr (last comps) (cons (pop comps) (cdr last))))))
|
||||
(completion--cache-all-sorted-completions beg end comps))))
|
||||
|
||||
(defun icomplete-backward-completions ()
|
||||
|
|
Loading…
Add table
Reference in a new issue