[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/orderless cacd856f9a 041/204: Leverage completion-regex
From: |
ELPA Syncer |
Subject: |
[elpa] externals/orderless cacd856f9a 041/204: Leverage completion-regexp-list: simplify code, increase speed! |
Date: |
Tue, 11 Jan 2022 12:58:15 -0500 (EST) |
branch: externals/orderless
commit cacd856f9abf9c14fae223e82bb59dda0d2b42af
Author: Omar Antolín <omar.antolin@gmail.com>
Commit: Omar Antolín <omar.antolin@gmail.com>
Leverage completion-regexp-list: simplify code, increase speed!
---
orderless.el | 71 ++++++++++++++++++++++++++++++------------------------------
1 file changed, 35 insertions(+), 36 deletions(-)
diff --git a/orderless.el b/orderless.el
index de21508f65..c2500545b2 100644
--- a/orderless.el
+++ b/orderless.el
@@ -92,48 +92,47 @@ component regexps."
(regexp :tag "Custom regexp"))
:group 'orderless)
-(let ((faces [orderless-match-face-0
- orderless-match-face-1
- orderless-match-face-2
- orderless-match-face-3]))
- (defun orderless--highlight-match (regexp string face)
- "Highlight REGEXP match in STRING with the face numbered FACE.
+(let ((faces '(orderless-match-face-0
+ orderless-match-face-1
+ orderless-match-face-2
+ orderless-match-face-3)))
+ (nconc faces faces)
+ (defun orderless--highlight-matches (regexps string)
+ "Highlight matches of REGEXPS in STRING.
Warning: only call this function when you know REGEXP matches STRING!"
- (string-match regexp string)
- (font-lock-prepend-text-property
- (match-beginning 0)
- (match-end 0)
- 'face (aref faces (mod face 4))
- string)))
+ (setq string (copy-sequence string))
+ (cl-loop for regexp in regexps and face in faces do
+ (string-match regexp string)
+ (font-lock-prepend-text-property
+ (match-beginning 0)
+ (match-end 0)
+ 'face face
+ string))
+ string))
(defun orderless-all-completions (string table pred _point)
"Split STRING into components and find entries TABLE matching all.
The predicate PRED is used to constrain the entries in TABLE.
This function is part of the `orderless' completion style."
- (save-match-data
- (let* ((limit (car (completion-boundaries string table pred "")))
- (prefix (substring string 0 limit))
- (all (all-completions prefix table pred))
- (regexps (split-string (substring string limit)
- orderless-regexp-separator
- t)))
- (when minibuffer-completing-file-name
- (setq all (completion-pcm--filename-try-filter all)))
- (condition-case nil
- (progn
- (setq all
- (cl-loop for original in all
- when
- (cl-loop for regexp in regexps
- always (string-match-p regexp original))
- collect ; it's a match, copy and highlight
- (cl-loop with candidate = (copy-sequence original)
- for regexp in regexps and face from 0 do
- (orderless--highlight-match
- regexp candidate face)
- finally (return candidate))))
- (when all (nconc all (length prefix))))
- (invalid-regexp nil)))))
+ (condition-case nil
+ (save-match-data
+ (let* ((limit (car (completion-boundaries string table pred "")))
+ (prefix (substring string 0 limit))
+ (completion-regexp-list ; used by all-completions!!!
+ (split-string (substring string limit)
+ orderless-regexp-separator
+ t))
+ (completions (all-completions prefix table pred)))
+ (when minibuffer-completing-file-name
+ (setq completions
+ (completion-pcm--filename-try-filter completions)))
+ (nconc
+ (cl-loop for candidate in completions
+ collect (orderless--highlight-matches
+ completion-regexp-list
+ candidate))
+ limit)))
+ (invalid-regexp nil)))
(defun orderless-try-completion (string table pred point &optional _metadata)
"Complete STRING to unique matching entry in TABLE.
- [elpa] externals/orderless a11302737e 018/204: Keep split-string from modifying global match data, (continued)
- [elpa] externals/orderless a11302737e 018/204: Keep split-string from modifying global match data, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless c9ae65ea16 023/204: Highlight component matches in one of four faces, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 044fac0859 029/204: Revert "Better match face defaults (kindly contributed by Protesilaos)", ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 2813ffb2b1 039/204: Optimization: check if first component is string literal, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 25266dfc60 033/204: Update README.org, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 39202177e1 040/204: Undo previous optimization as it is invalid in general :(, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless ecddc3da2e 045/204: Un-nest definition of orderless--highlight-matches, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 582b3a9fa8 031/204: Make all `defface' syntax more efficient+readable, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless c51037b8ef 024/204: Add custom variable for component separator regexp, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 9856eeed32 047/204: Mention prefixes style in overview, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless cacd856f9a 041/204: Leverage completion-regexp-list: simplify code, increase speed!,
ELPA Syncer <=
- [elpa] externals/orderless 3005cf8ee9 077/204: Merge pull request #12 from noctuid/feature/strict-initialism, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless f8efbdae4d 087/204: Document style dispatches in the README, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless e16fc5ddb1 099/204: Ido has progressive completion too!, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless dc1a31b5fc 098/204: Merge remote-tracking branch 'github/master', ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 306fb267f5 100/204: Mark orderless-temporarily-change-separator obsolete (#15), ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 09f4c74280 105/204: Update dispatchers documentation, add transient vars, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless bc9e48216e 120/204: Add option for "smart case" matching, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 1f1e0380e2 122/204: Test for match before highlighting it, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 6b94b9abf8 124/204: Merge pull request #21 from wyuenho/patch-1, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 0826fd4eb4 130/204: Merge pull request #27 from vifon/master, ELPA Syncer, 2022/01/11