emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/corfu 48c646338e 1/3: Better state update


From: ELPA Syncer
Subject: [elpa] externals/corfu 48c646338e 1/3: Better state update
Date: Thu, 13 Oct 2022 21:57:25 -0400 (EDT)

branch: externals/corfu
commit 48c646338eff09a01ebf8f623c5794dcc1277276
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Better state update
---
 corfu.el | 46 +++++++++++++++++++++++-----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/corfu.el b/corfu.el
index 9a4b877537..2582ed1a71 100644
--- a/corfu.el
+++ b/corfu.el
@@ -642,14 +642,18 @@ A scroll bar is displayed from LO to LO+BAR."
     (when (and completing-file (not (string-suffix-p "/" field)))
       (setq all (corfu--move-to-front (concat field "/") all)))
     (setq all (corfu--move-to-front field all))
-    (list corfu--base all (length all) hl corfu--metadata
-          ;; Select the prompt when the input is a valid completion
-          ;; and if it is not equal to the first candidate.
-          (if (or (not corfu-preselect-first) (not all)
-                  (and (not (equal field (car all)))
-                       (not (and completing-file (equal (concat field "/") 
(car all))))
-                       (test-completion str table pred)))
-              -1 0))))
+    `((corfu--base . ,corfu--base)
+      (corfu--metadata . ,corfu--metadata)
+      (corfu--candidates . ,all)
+      (corfu--total . ,(length all))
+      (corfu--highlight . ,hl)
+      ;; Select the prompt when the input is a valid completion
+      ;; and if it is not equal to the first candidate.
+      (corfu--preselect . ,(if (or (not corfu-preselect-first) (not all)
+                                   (and (not (equal field (car all)))
+                                        (not (and completing-file (equal 
(concat field "/") (car all))))
+                                        (test-completion str table pred)))
+                               -1 0)))))
 
 (defun corfu--update-state (str pt table pred)
   "Interruptibly update state from STR, PT, TABLE and PRED."
@@ -657,21 +661,15 @@ A scroll bar is displayed from LO to LO+BAR."
   ;; expensive candidate recomputation is performed (Issue #48). See also
   ;; corresponding vertico#89.
   (redisplay)
-  (pcase
-      ;; Bind non-essential=t to prevent Tramp from opening new connections,
-      ;; without the user explicitly requesting it via M-TAB.
-      (let ((non-essential t))
-        (while-no-input (corfu--recompute-state str pt table pred)))
+  ;; Bind non-essential=t to prevent Tramp from opening new connections,
+  ;; without the user explicitly requesting it via M-TAB.
+  (pcase (let ((non-essential t))
+           (while-no-input (corfu--recompute-state str pt table pred)))
     ('nil (keyboard-quit))
-    (`(,base ,candidates ,total ,hl ,metadata ,preselect)
+    ((and state (pred consp))
+     (dolist (s state) (set (car s) (cdr s)))
      (setq corfu--input (cons str pt)
-           corfu--candidates candidates
-           corfu--base base
-           corfu--total total
-           corfu--preselect preselect
-           corfu--index preselect
-           corfu--highlight hl
-           corfu--metadata metadata))))
+           corfu--index corfu--preselect))))
 
 (defun corfu--match-symbol-p (pattern sym)
   "Return non-nil if SYM is matching an element of the PATTERN list."
@@ -1124,8 +1122,10 @@ Quit if no candidate is selected."
           (when exit (funcall exit str 'finished))
           t)
       (`(,newstr . ,newpt)
-       (pcase-let ((`(,base ,candidates ,total . ,_)
-                    (corfu--recompute-state str pt table pred)))
+       (let* ((state (corfu--recompute-state str pt table pred))
+              (base (alist-get 'corfu--base state))
+              (total (alist-get 'corfu--total state))
+              (candidates (alist-get 'corfu--candidates state)))
          (unless (markerp beg) (setq beg (copy-marker beg)))
          (setq end (copy-marker end t)
                completion-in-region--data (list beg end table pred))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]