[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/orderless 8d187bd31e 171/204: Only enable regexp and li
From: |
ELPA Syncer |
Subject: |
[elpa] externals/orderless 8d187bd31e 171/204: Only enable regexp and literal matching styles by default |
Date: |
Tue, 11 Jan 2022 12:58:28 -0500 (EST) |
branch: externals/orderless
commit 8d187bd31e44e7e46fb1c3158c31c4a38e223618
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Only enable regexp and literal matching styles by default
* Avoid performance issues with initialism when filtering long candidates
(#39)
* README: Update default matching styles
* README: Document `orderless-define-completion-style`
* README: Update `without-if-bang` such that it ignores "!"
---
README.org | 36 +++++++++++++++++++++++++++++++-----
orderless.el | 4 ++--
orderless.texi | 39 ++++++++++++++++++++++++++++++++++-----
3 files changed, 67 insertions(+), 12 deletions(-)
diff --git a/README.org b/README.org
index fb55289e9b..a7aff1e399 100644
--- a/README.org
+++ b/README.org
@@ -20,7 +20,7 @@ pattern into space-separated components, and matches
candidates that
match all of the components in any order. Each component can match in
any one of several ways: literally, as a regexp, as an initialism, in
the flex style, or as multiple word prefixes. By default, regexp and
-initialism matches are enabled.
+literal matches are enabled.
A completion style is a back-end for completion and is used from a
front-end that provides a completion UI. Any completion style can be
@@ -150,8 +150,8 @@ define new matching styles. The predefined ones are:
This maps =abc= to =a.*b.*c=.
The variable =orderless-matching-styles= can be set to a list of the
-desired matching styles to use. By default it enables the literal,
-regexp and initialism styles.
+desired matching styles to use. By default it enables the literal and
+regexp styles.
*** Style dispatchers
@@ -192,8 +192,11 @@ regexp and initialism styles.
(if (= index 0) 'orderless-initialism))
(defun without-if-bang (pattern _index _total)
- (when (string-prefix-p "!" pattern)
- `(orderless-without-literal . ,(substring pattern 1))))
+ (cond
+ ((equal "!" pattern)
+ '(orderless-literal . ""))
+ ((string-prefix-p "!" pattern)
+ `(orderless-without-literal . ,(substring pattern 1)))))
(setq orderless-matching-styles '(orderless-regexp)
orderless-style-dispatchers '(first-initialism
@@ -222,6 +225,29 @@ If you are implementing a command for which you know you
want a
different separator for the components, bind
=orderless-component-separator= in a =let= form.
+** Defining custom orderless styles
+
+Orderless allows the definition of custom completion styles using the
+~orderless-define-completion-style~ macro. Any Orderless configuration
+variable can be adjusted locally for the new style, e.g.,
+~orderless-matching-styles~.
+
+By default Orderless only enables the regexp and literal matching
+styles. In the following example an ~orderless+initialism~ style is
+defined, which additionally enables initialism matching. This completion
+style can then used when matching candidates of the symbol or command
+completion category.
+
+#+begin_src emacs-lisp
+ (orderless-define-completion-style orderless+initialism
+ (orderless-matching-styles '(orderless-initialism
+ orderless-literal
+ orderless-regexp)))
+ (setq completion-category-overrides
+ '((command (styles orderless+initialism))
+ (symbol (styles orderless+initialism))))
+#+end_src
+
** Faces for component matches
The portions of a candidate matching each component get highlighted in
diff --git a/orderless.el b/orderless.el
index d21bebd573..c67e68574f 100644
--- a/orderless.el
+++ b/orderless.el
@@ -48,7 +48,7 @@
;; from strings to strings that map a component to a regexp to match
;; against. The variable `orderless-matching-styles' lists the
;; matching styles to be used for components, by default it allows
-;; literal, regexp and initialism matching.
+;; literal and regexp matching.
;;; Code:
@@ -114,7 +114,7 @@ value means highlighting is skipped."
:type '(choice boolean function))
(defcustom orderless-matching-styles
- '(orderless-literal orderless-regexp orderless-initialism)
+ '(orderless-literal orderless-regexp)
"List of component matching styles.
If this variable is nil, regexp matching is assumed.
diff --git a/orderless.texi b/orderless.texi
index eb3dc23731..c26060e6a2 100644
--- a/orderless.texi
+++ b/orderless.texi
@@ -36,6 +36,7 @@ Customization
* Component matching styles::
* Component separator regexp::
+* Defining custom orderless styles::
* Faces for component matches::
* Pattern compiler::
* Interactively changing the configuration::
@@ -67,7 +68,7 @@ pattern into space-separated components, and matches
candidates that
match all of the components in any order. Each component can match in
any one of several ways: literally, as a regexp, as an initialism, in
the flex style, or as multiple word prefixes. By default, regexp and
-initialism matches are enabled.
+literal matches are enabled.
A completion style is a back-end for completion and is used from a
front-end that provides a completion UI@. Any completion style can be
@@ -112,6 +113,7 @@ Bug reports are highly welcome and appreciated!
@menu
* Component matching styles::
* Component separator regexp::
+* Defining custom orderless styles::
* Faces for component matches::
* Pattern compiler::
* Interactively changing the configuration::
@@ -189,8 +191,8 @@ This maps @samp{abc} to @samp{a.*b.*c}.
@end table
The variable @samp{orderless-matching-styles} can be set to a list of the
-desired matching styles to use. By default it enables the literal,
-regexp and initialism styles.
+desired matching styles to use. By default it enables the literal and
+regexp styles.
@menu
* Style dispatchers::
@@ -242,8 +244,11 @@ You can achieve this with the following configuration:
(if (= index 0) 'orderless-initialism))
(defun without-if-bang (pattern _index _total)
- (when (string-prefix-p "!" pattern)
- `(orderless-without-literal . ,(substring pattern 1))))
+ (cond
+ ((equal "!" pattern)
+ '(orderless-literal . ""))
+ ((string-prefix-p "!" pattern)
+ `(orderless-without-literal . ,(substring pattern 1)))))
(setq orderless-matching-styles '(orderless-regexp)
orderless-style-dispatchers '(first-initialism
@@ -273,6 +278,30 @@ If you are implementing a command for which you know you
want a
different separator for the components, bind
@samp{orderless-component-separator} in a @samp{let} form.
+@node Defining custom orderless styles
+@section Defining custom orderless styles
+
+Orderless allows the definition of custom completion styles using the
+@code{orderless-define-completion-style} macro. Any Orderless configuration
+variable can be adjusted locally for the new style, e.g.,
+@code{orderless-matching-styles}.
+
+By default Orderless only enables the regexp and literal matching
+styles. In the following example an @code{orderless+initialism} style is
+defined, which additionally enables initialism matching. This completion
+style can then used when matching candidates of the symbol or command
+completion category.
+
+@lisp
+(orderless-define-completion-style orderless+initialism
+ (orderless-matching-styles '(orderless-initialism
+ orderless-literal
+ orderless-regexp)))
+(setq completion-category-overrides
+ '((command (styles orderless+initialism))
+ (symbol (styles orderless+initialism))))
+@end lisp
+
@node Faces for component matches
@section Faces for component matches
- [elpa] externals/orderless f49a0faceb 128/204: Off by one error in orderless-without-literal, (continued)
- [elpa] externals/orderless f49a0faceb 128/204: Off by one error in orderless-without-literal, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless ef9bff0020 133/204: Modify readme for better texinfo export, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless ec71107992 138/204: Merge branch 'master' of https://github.com/oantolin/orderless, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 4844452f4e 139/204: Update documentation, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 9f18a34d7e 141/204: Revert documentation for #31, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless ea60844b82 151/204: Add missing funcall in decision whether to skip highlighting, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless b8e7e53a8f 152/204: Don't recommend icomplete (fix #36), ELPA Syncer, 2022/01/11
- [elpa] externals/orderless edce950fe1 155/204: Capture empty string to avoid highlighting for strict initialism, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless e5cb3f7b57 164/204: update readme, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 05fc3d223e 169/204: fix typo, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 8d187bd31e 171/204: Only enable regexp and literal matching styles by default,
ELPA Syncer <=
- [elpa] externals/orderless d13f47df73 173/204: Bump version number, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 0205fb5b0e 170/204: Merge pull request #50 from minad/typo, ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 94e8940ac1 175/204: Omit null components (fix #55), ELPA Syncer, 2022/01/11
- [elpa] externals/orderless cbb1c00f99 181/204: Mention orderless works fine with Vertico (fix #59), ELPA Syncer, 2022/01/11
- [elpa] externals/orderless 793eb0ec01 190/204: Implement ^literal optimization discussed in #79, ELPA Syncer, 2022/01/11