Improve Regex highlighting (#28183)

| Zed 0.180.2 | With this PR |
| --- | --- |
|
![Image](https://github.com/user-attachments/assets/e840bd81-25ff-4c7a-af03-bac6db11f910)
|
![Image](https://github.com/user-attachments/assets/3fd58164-8992-44e1-be01-8c6d70f9587d)
|

```js
match = "424242"
regex = /(42)+?\d{2}\1/g
```

- `/`: `operator` -> `string.regex` (like `"` for regex strings)
- `+?`: `operator.regex`
- `\d`: `string.escape` -> `string.escape.regex`
- `\1`: `keyword.operator.regex` (backreference)
- `/g`: `keyword.regex` -> `keyword.operator.regex`
- `{2}`: `number` -> `number.quantifier.regex`

Release Notes:

  - Improved Regex highlighting
This commit is contained in:
chbk 2025-04-18 18:44:13 +02:00 committed by GitHub
parent 7badd6053d
commit f97546b6ef
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 13 additions and 5 deletions

View file

@ -85,7 +85,7 @@
(escape_sequence) @string.escape (escape_sequence) @string.escape
(regex) @string.regex (regex) @string.regex
(regex_flags) @keyword.regex (regex_flags) @keyword.operator.regex
(number) @number (number) @number
; Tokens ; Tokens
@ -145,6 +145,8 @@
"??=" "??="
] @operator ] @operator
(regex "/" @string.regex)
[ [
"(" "("
")" ")"

View file

@ -20,7 +20,7 @@
(control_letter_escape) (control_letter_escape)
(character_class_escape) (character_class_escape)
(control_escape) (control_escape)
] @string.escape ] @string.escape.regex
[ [
"*" "*"
@ -32,17 +32,19 @@
(start_assertion) (start_assertion)
(end_assertion) (end_assertion)
(any_character) (any_character)
(lazy)
] @operator.regex ] @operator.regex
[ [
(boundary_assertion) (boundary_assertion)
(non_boundary_assertion) (non_boundary_assertion)
(backreference_escape) (backreference_escape)
(decimal_escape)
] @keyword.operator.regex ] @keyword.operator.regex
(count_quantifier (count_quantifier
[ [
(decimal_digits) @number (decimal_digits) @number.quantifier.regex
"," @punctuation.delimiter.regex "," @punctuation.delimiter.regex
]) ])

View file

@ -86,7 +86,7 @@
(escape_sequence) @string.escape (escape_sequence) @string.escape
(regex) @string.regex (regex) @string.regex
(regex_flags) @keyword.regex (regex_flags) @keyword.operator.regex
(number) @number (number) @number
; Tokens ; Tokens
@ -147,6 +147,8 @@
"??=" "??="
] @operator ] @operator
(regex "/" @string.regex)
[ [
"(" "("
")" ")"

View file

@ -113,7 +113,7 @@
(escape_sequence) @string.escape (escape_sequence) @string.escape
(regex) @string.regex (regex) @string.regex
(regex_flags) @keyword.regex (regex_flags) @keyword.operator.regex
(number) @number (number) @number
; Tokens ; Tokens
@ -166,6 +166,8 @@
"??=" "??="
] @operator ] @operator
(regex "/" @string.regex)
(ternary_expression (ternary_expression
[ [
"?" "?"