@@ -287,9 +287,35 @@ Only intended for use at development time.")
287
287
288
288
:feature 'regex
289
289
:language 'clojure
290
- :override t
291
290
'((regex_lit marker: _ @font-lock-property-face))
292
291
292
+ ; ; https://github.com/tree-sitter/tree-sitter-regex/blob/master/grammar.js
293
+ :feature 'regex
294
+ :language 'regex
295
+ :override t
296
+ '(; ; Capturing Groups
297
+ ((anonymous_capturing_group ([" (" " )" ]) @font-lock-regexp-grouping-construct))
298
+ ((non_capturing_group ([" (?:" " )" ]) @font-lock-regexp-grouping-construct))
299
+ ((lookahead_assertion ([" (?" " =" " !" " )" ]) @font-lock-regexp-grouping-construct))
300
+ ((named_capturing_group ([" (?<" " >" " )" ]) @font-lock-regexp-grouping-construct))
301
+ ((group_name) @font-lock-variable-name-face)
302
+ ; ; Character classes
303
+ ((character_class ([" [" " ]" ]) @font-lock-bracket-face))
304
+ ((character_class " ^" @font-lock-negation-char-face))
305
+ ((class_range " -" @font-lock-punctuation-face))
306
+ ; ; Quantifiers
307
+ ([(zero_or_more) (one_or_more) (optional)]) @font-lock-operator-face
308
+ ((count_quantifier ([" {" " }" ]) @font-lock-bracket-face))
309
+ ((count_quantifier " ," @font-lock-punctuation-face))
310
+ ((count_quantifier (decimal_digits) @font-lock-number-face))
311
+ ; ;; Escaping
312
+ ([(start_assertion) (any_character) (end_assertion)]) @font-lock-operator-face
313
+ ([(decimal_escape)
314
+ (identity_escape)
315
+ (character_class_escape)]) @font-lock-regexp-grouping-backslash
316
+ ((pattern_character) @font-lock-regexp-face)
317
+ ([(control_escape) (boundary_assertion)] @font-lock-builtin-face))
318
+
293
319
:feature 'number
294
320
:language 'clojure
295
321
'((num_lit) @font-lock-number-face)
@@ -597,6 +623,12 @@ See `clojure-ts--standard-definition-node-name' for the implementation used.")
597
623
(interactive )
598
624
(message " clojure-ts-mode (version %s ) " clojure-ts-mode-version))
599
625
626
+ (defvar clojure-ts--treesit-range-settings
627
+ (treesit-range-rules
628
+ :embed 'regex
629
+ :host 'clojure
630
+ '((regex_lit) @capture)))
631
+
600
632
;;;### autoload
601
633
(define-derived-mode clojure-ts-mode prog-mode " Clojure[TS]"
602
634
" Major mode for editing Clojure code.
@@ -607,6 +639,9 @@ See `clojure-ts--standard-definition-node-name' for the implementation used.")
607
639
(treesit-install-language-grammar 'clojure ))
608
640
(setq-local comment-start " ;" )
609
641
(when (treesit-ready-p 'clojure )
642
+ (when (treesit-ready-p 'regex 'message )
643
+ (treesit-parser-create 'regex )
644
+ (setq-local treesit-range-settings clojure-ts--treesit-range-settings))
610
645
(treesit-parser-create 'clojure )
611
646
(setq-local treesit-font-lock-settings (clojure-ts--font-lock-settings)
612
647
treesit-defun-prefer-top-level t
0 commit comments