[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/orderless 684c5e493c 1/6: Improve orderless-try-complet
From: |
ELPA Syncer |
Subject: |
[elpa] externals/orderless 684c5e493c 1/6: Improve orderless-try-completion (Fix #118) |
Date: |
Sat, 17 Sep 2022 20:58:03 -0400 (EDT) |
branch: externals/orderless
commit 684c5e493c6b0c5cfe5119f7ad6b7c790669900a
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Improve orderless-try-completion (Fix #118)
orderless-try-completion abuses a "predicate" which throws as a fast loop
over
the completion candidate.
- The predicate returns t such that all-completions returns a list (instead
of
nil as before). This fixes completion-table-with-predicate.
- If multiple candidates match, we check that the matches are actually
different. This ensures that we don't get incorrect results if the
predicate
is called twice on the same candidate or if duplicates exists.
---
orderless.el | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/orderless.el b/orderless.el
index d1b47e9749..bcc0d4ccbf 100644
--- a/orderless.el
+++ b/orderless.el
@@ -423,18 +423,19 @@ 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.
+ ;; 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))
- (when one
+ (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 (car args) ;; first argument is key
- one (if (consp one) (car one) one) ;; alist
- one (if (symbolp one) (symbol-name one)
one)))
- nil))
+ (setq one args)
+ t)))
(when one
(if (equal string one)
t ;; unique exact match
- [elpa] externals/orderless updated (8b9af2796f -> 6b86527b30), ELPA Syncer, 2022/09/17
- [elpa] externals/orderless 684c5e493c 1/6: Improve orderless-try-completion (Fix #118),
ELPA Syncer <=
- [elpa] externals/orderless b341b825ec 2/6: Update README regarding Prescient (Fix #121), ELPA Syncer, 2022/09/17
- [elpa] externals/orderless 2e46849f5e 3/6: Merge pull request #122 from minad/fix-121, ELPA Syncer, 2022/09/17
- [elpa] externals/orderless e0b2b74d71 5/6: Merge pull request #120 from minad/fix-118, ELPA Syncer, 2022/09/17
- [elpa] externals/orderless c06e66d964 4/6: Avoid long lines, ELPA Syncer, 2022/09/17
- [elpa] externals/orderless 6b86527b30 6/6: Flex matching: more efficient regexp, better highlighting, ELPA Syncer, 2022/09/17