[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-27 9b1053b 5/7: Correctly cache sorted completions in icomplete--s
From: |
João Távora |
Subject: |
emacs-27 9b1053b 5/7: Correctly cache sorted completions in icomplete--sorted-completions |
Date: |
Tue, 31 Dec 2019 08:32:04 -0500 (EST) |
branch: emacs-27
commit 9b1053ba272762f2e2220b806cbd30c61ff6436a
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>
Correctly cache sorted completions in icomplete--sorted-completions
* lisp/icomplete.el (icomplete--sorted-completions): Use
completion--cache-all-sorted-completions.
(cherry picked from commit 83587bb68830bd91124f99ddf8590d1d5f63869f)
---
lisp/icomplete.el | 59 ++++++++++++++++++++++++++++---------------------------
1 file changed, 30 insertions(+), 29 deletions(-)
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index ec5591d..5126c03 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -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))
- emacs-27 updated (9b6872b -> 195bde9), João Távora, 2019/12/31
- emacs-27 5352947 1/7: Another adjustment to flex completion style's sorting function, João Távora, 2019/12/31
- emacs-27 e3276f3 3/7: Make fido-mode behave more like ido-mode when finding directories, João Távora, 2019/12/31
- emacs-27 b1c3ed9 4/7: Move flex style's minibuffer-default-aware sorting to lisp/icomplete.el, João Távora, 2019/12/31
- emacs-27 9b1053b 5/7: Correctly cache sorted completions in icomplete--sorted-completions,
João Távora <=
- emacs-27 fe0ed17 2/7: Slightly simplify lisp/icomplete.el with new icomplete--category helper, João Távora, 2019/12/31
- emacs-27 f2a349b 6/7: Don't force completion recalculation in icomplete-fido-ret, João Távora, 2019/12/31
- emacs-27 195bde9 7/7: Don't always resort in recently introduced icomplete--sorted-completions, João Távora, 2019/12/31