branch: externals/orderless
commit 74947d086226f4a1af603b28a5c5000aeb9b72b9
Author: Omar Antolín <[email protected]>
Commit: Omar Antolín <[email protected]>
Update dispatchers documentation, and documents pattern compiler
---
README.org | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/README.org b/README.org
index 9edc5a3ba3..22593e1385 100644
--- a/README.org
+++ b/README.org
@@ -177,13 +177,14 @@ For more fine-grained control on which matching styles to
use for each
component of the input string, you can use the =orderless-style-dispatchers=
variable, which should be set to list of /style dispatchers/.
-A style dispatcher is a function of two arguments, a string and an
-integer. It is called with each component of the input string and the
-component's index (starting from 0). It can either decline to handle
-the component or return which matching styles to use for it. It can
-also, if desired, additionally return a new string to use in place of
-the component. Consult the documentation of
-=orderless-style-dispatchers= for full details.
+A style dispatcher is a function of three arguments, a string and two
+integers. It is called with each component of the input string, the
+component's index (starting from 0), and the total number of
+components. It can either decline to handle the component or return
+which matching styles to use for it. It can also, if desired,
+additionally return a new string to use in place of the
+component. Consult the documentation of =orderless-style-dispatchers=
+for full details.
As an example, say you wanted the following setup:
@@ -196,17 +197,26 @@ As an example, say you wanted the following setup:
You can achieve this with the following configuration:
#+begin_src emacs-lisp
- (defun flex-if-twiddle (pattern _index)
+ (defun flex-if-twiddle (pattern _index _total)
(when (string-suffix-p "~" pattern)
`(orderless-flex . ,(substring pattern 0 (1- (length pattern))))))
- (defun first-initialism-then-literal (pattern index)
+ (defun first-initialism-then-literal (pattern index _total)
(if (= index 0) 'orderless-initialism 'orderless-literal))
(setq orderless-style-dispatchers
'(flex-if-twiddle first-initialism-then-literal))
#+end_src
+** Pattern compiler
+
+The default machanism for turning an input string into a list of
+regexps to match against, using =orderless-component-separator=,
+=orderless-component-matching-styles= and
+=orderless-style-dispatchers=, is probably fleixble enough for the
+vast majority of users. But if you want to completely change the
+mechanism, customize the =orderless-pattern-compiler=. It's value
+should be a function from string to lists of regexps.
* Related packages