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

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

[elpa] externals/orderless e0b2b74d71 5/6: Merge pull request #120 from


From: ELPA Syncer
Subject: [elpa] externals/orderless e0b2b74d71 5/6: Merge pull request #120 from minad/fix-118
Date: Sat, 17 Sep 2022 20:58:03 -0400 (EDT)

branch: externals/orderless
commit e0b2b74d71d96c2da74a79bfef6aec197887ce86
Merge: 2e46849f5e c06e66d964
Author: Omar AntolĂ­n Camarena <omar.antolin@gmail.com>
Commit: GitHub <noreply@github.com>

    Merge pull request #120 from minad/fix-118
    
    Improve orderless-try-completion (Fix #118)
---
 orderless.el | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/orderless.el b/orderless.el
index d1b47e9749..0d99e35ed7 100644
--- a/orderless.el
+++ b/orderless.el
@@ -423,18 +423,20 @@ This function is part of the `orderless' completion 
style."
   (catch 'orderless--many
     (let (one)
       ;; Abuse all-completions/orderless-filter as a fast search loop.
-      ;; Should be more or less allocation-free since our "predicate"
-      ;; always returns nil.
-      (orderless-filter string table
-                        ;; key/value for hash tables
-                        (lambda (&rest args)
-                          (when (or (not pred) (apply pred args))
-                            (when one
-                              (throw 'orderless--many (cons string point)))
-                            (setq one (car args) ;; first argument is key
-                                  one (if (consp one) (car one) one) ;; alist
-                                  one (if (symbolp one) (symbol-name one) 
one)))
-                          nil))
+      ;; Should be almost allocation-free since our "predicate" is not
+      ;; called more than two times.
+      (orderless-filter
+       string table
+       ;; key/value for hash tables
+       (lambda (&rest args)
+         (when (or (not pred) (apply pred args))
+           (setq args (car args) ;; first argument is key
+                 args (if (consp args) (car args) args) ;; alist
+                 args (if (symbolp args) (symbol-name args) args))
+           (when (and one (not (equal one args)))
+             (throw 'orderless--many (cons string point)))
+           (setq one args)
+           t)))
       (when one
         (if (equal string one)
             t ;; unique exact match



reply via email to

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