branch: externals/consult
commit 110b560ae1e0ad398d5ce2b4aaf0e91f87f38297
Author: Daniel Mendler <m...@daniel-mendler.de>
Commit: Daniel Mendler <m...@daniel-mendler.de>

    Regexp translation: Add crude support for some syntax classes
---
 consult.el | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/consult.el b/consult.el
index 78c6a6638c..0760537e93 100644
--- a/consult.el
+++ b/consult.el
@@ -1147,7 +1147,10 @@ if IGNORE-CASE is non-nil."
    ;; since PCRE does not make this distinction.  Usually the
    ;; context determines if \b is the beginning or the end.
    '(("\\<" . "\\b") ("\\>" . "\\b")
-     ("\\_<" . "\\b") ("\\_>" . "\\b"))
+     ("\\_<" . "\\b") ("\\_>" . "\\b")
+     ("\\s-" . "[ \\n\\t\\r]") ("\\S-" . "[^ \\n\\t\\r]")
+     ("\\sw" . "[a-zA-Z0-9]") ("\\Sw" . "[^a-zA-Z0-0]")
+     ("\\s_" . "[a-zA-Z0-9_-]") ("\\S_" . "[^a-zA-Z0-0_-]"))
    ;; Treat \` and \' as beginning and end of line.  This is more
    ;; widely supported and makes sense for line-based commands.
    '(("\\`" . "^") ("\\'" . "$"))
@@ -1172,7 +1175,7 @@ if IGNORE-CASE is non-nil."
     ;; Support for Emacs regular expressions is fairly complete for basic
     ;; usage.  There are a few unsupported Emacs regexp features:
     ;; - \= point matching
-    ;; - Syntax classes \sx \Sx
+    ;; - Most syntax classes \sx \Sx
     ;; - Character classes \cx \Cx
     ;; - Explicitly numbered groups (?3:group)
     (replace-regexp-in-string
@@ -1182,6 +1185,7 @@ if IGNORE-CASE is non-nil."
              (seq (or bos "^") (any "*+?"))       ;; Historical: + or * at the 
beginning
              (seq (opt "\\") (any "(){|}"))       ;; Escape parens/braces/pipe
              (seq "\\" (any "'<>`"))              ;; Special escapes
+             (seq "\\" (any "Ss") (any "-w_"))    ;; Whitespace, word, symbol 
syntax class
              (seq "\\_" (any "<>"))))             ;; Beginning or end of symbol
      (lambda (x) (or (cdr (assoc x consult--convert-regexp-table)) x))
      regexp 'fixedcase 'literal)))

Reply via email to