add tree-sitter-regex (#1362)
* add tree-sitter-regex * adapt regex highlights from upstream * inject regex into elixir sigil_r/2 and sigil_R/2 * generate lang-support docs * capture interesting nodes in character-ranges * make $.character_class captures more consistent * fix fallthrough behavior for character classes * capture pattern characters as 'string' * use latest tree-sitter-regex * set elixir regex injections as combined * add link to upstream queries * inject regex in rust into 'Regex::new' raw string literals
This commit is contained in:
parent
2e02a1d6bc
commit
a8fd33ac01
7 changed files with 87 additions and 0 deletions
4
.gitmodules
vendored
4
.gitmodules
vendored
|
@ -190,3 +190,7 @@
|
||||||
path = helix-syntax/languages/tree-sitter-git-rebase
|
path = helix-syntax/languages/tree-sitter-git-rebase
|
||||||
url = https://github.com/the-mikedavis/tree-sitter-git-rebase.git
|
url = https://github.com/the-mikedavis/tree-sitter-git-rebase.git
|
||||||
shallow = true
|
shallow = true
|
||||||
|
[submodule "helix-syntax/languages/tree-sitter-regex"]
|
||||||
|
path = helix-syntax/languages/tree-sitter-regex
|
||||||
|
url = https://github.com/tree-sitter/tree-sitter-regex.git
|
||||||
|
shallow = true
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
| protobuf | ✓ | | ✓ | |
|
| protobuf | ✓ | | ✓ | |
|
||||||
| python | ✓ | ✓ | ✓ | `pylsp` |
|
| python | ✓ | ✓ | ✓ | `pylsp` |
|
||||||
| racket | | | | `racket` |
|
| racket | | | | `racket` |
|
||||||
|
| regex | ✓ | | | |
|
||||||
| ruby | ✓ | | ✓ | `solargraph` |
|
| ruby | ✓ | | ✓ | `solargraph` |
|
||||||
| rust | ✓ | ✓ | ✓ | `rust-analyzer` |
|
| rust | ✓ | ✓ | ✓ | `rust-analyzer` |
|
||||||
| scala | ✓ | | ✓ | `metals` |
|
| scala | ✓ | | ✓ | `metals` |
|
||||||
|
|
1
helix-syntax/languages/tree-sitter-regex
Submodule
1
helix-syntax/languages/tree-sitter-regex
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit e1cfca3c79896ff79842f057ea13e529b66af636
|
|
@ -530,3 +530,10 @@ file-types = ["git-rebase-todo"]
|
||||||
injection-regex = "git-rebase"
|
injection-regex = "git-rebase"
|
||||||
comment-token = "#"
|
comment-token = "#"
|
||||||
indent = { tab-width = 2, unit = " " }
|
indent = { tab-width = 2, unit = " " }
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "regex"
|
||||||
|
scope = "source.regex"
|
||||||
|
injection-regex = "regex"
|
||||||
|
file-types = ["regex"]
|
||||||
|
roots = []
|
||||||
|
|
|
@ -1,2 +1,9 @@
|
||||||
((comment) @injection.content
|
((comment) @injection.content
|
||||||
(#set! injection.language "comment"))
|
(#set! injection.language "comment"))
|
||||||
|
|
||||||
|
((sigil
|
||||||
|
(sigil_name) @_sigil_name
|
||||||
|
(quoted_content) @injection.content)
|
||||||
|
(#match? @_sigil_name "^(r|R)$")
|
||||||
|
(#set! injection.language "regex")
|
||||||
|
(#set! injection.combined))
|
||||||
|
|
53
runtime/queries/regex/highlights.scm
Normal file
53
runtime/queries/regex/highlights.scm
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
; upstream: https://github.com/tree-sitter/tree-sitter-regex/blob/e1cfca3c79896ff79842f057ea13e529b66af636/queries/highlights.scm
|
||||||
|
|
||||||
|
[
|
||||||
|
"("
|
||||||
|
")"
|
||||||
|
"(?"
|
||||||
|
"(?:"
|
||||||
|
"(?<"
|
||||||
|
">"
|
||||||
|
"["
|
||||||
|
"]"
|
||||||
|
"{"
|
||||||
|
"}"
|
||||||
|
] @punctuation.bracket
|
||||||
|
|
||||||
|
[
|
||||||
|
"*"
|
||||||
|
"+"
|
||||||
|
"|"
|
||||||
|
"="
|
||||||
|
"<="
|
||||||
|
"!"
|
||||||
|
"<!"
|
||||||
|
"?"
|
||||||
|
] @operator
|
||||||
|
|
||||||
|
[
|
||||||
|
(identity_escape)
|
||||||
|
(control_letter_escape)
|
||||||
|
(character_class_escape)
|
||||||
|
(control_escape)
|
||||||
|
(start_assertion)
|
||||||
|
(end_assertion)
|
||||||
|
(boundary_assertion)
|
||||||
|
(non_boundary_assertion)
|
||||||
|
] @constant.character.escape
|
||||||
|
|
||||||
|
(group_name) @property
|
||||||
|
|
||||||
|
(count_quantifier
|
||||||
|
[
|
||||||
|
(decimal_digits) @constant.numeric
|
||||||
|
"," @punctuation.delimiter
|
||||||
|
])
|
||||||
|
|
||||||
|
(character_class
|
||||||
|
[
|
||||||
|
"^" @operator
|
||||||
|
(class_range "-" @operator)
|
||||||
|
])
|
||||||
|
|
||||||
|
(class_character) @constant.character
|
||||||
|
(pattern_character) @string
|
|
@ -10,3 +10,17 @@
|
||||||
(token_tree) @injection.content)
|
(token_tree) @injection.content)
|
||||||
(#set! injection.language "rust")
|
(#set! injection.language "rust")
|
||||||
(#set! injection.include-children))
|
(#set! injection.include-children))
|
||||||
|
|
||||||
|
(call_expression
|
||||||
|
function: (scoped_identifier
|
||||||
|
path: (identifier) @_regex (#eq? @_regex "Regex")
|
||||||
|
name: (identifier) @_new (#eq? @_new "new"))
|
||||||
|
arguments: (arguments (raw_string_literal) @injection.content)
|
||||||
|
(#set! injection.language "regex"))
|
||||||
|
|
||||||
|
(call_expression
|
||||||
|
function: (scoped_identifier
|
||||||
|
path: (scoped_identifier (identifier) @_regex (#eq? @_regex "Regex") .)
|
||||||
|
name: (identifier) @_new (#eq? @_new "new"))
|
||||||
|
arguments: (arguments (raw_string_literal) @injection.content)
|
||||||
|
(#set! injection.language "regex"))
|
||||||
|
|
Loading…
Add table
Reference in a new issue