Improve JavaScript and TypeScript syntax highlighting (#25328)
Release Notes: - Improved JavaScript and TypeScript syntax highlighting. | Zed 0.174.6 | With this PR | | --- | --- | |  |  | - `regex_flags`: `keyword.regex`, see the [Regex PR](https://github.com/zed-industries/zed/pull/25332) for other Regex scopes - `@`: `punctuation.special`, as in Python - `jsx_text`: `text.jsx` - `=`: `operator` -> `punctuation.jsx.delimiter`, `punctuation` as in [VS Code](https://github.com/microsoft/vscode/blob/0fe195613ed9901f669cd0f799fe807f0189d029/extensions/html/syntaxes/html.tmLanguage.json#L78) and [Atom](https://github.com/atom/language-html/blob/ee750a014a003c3d6f10b91e3cd5f9bfa0f051e6/grammars/tree-sitter-html.cson#L47) - added `jsx` scope to target JSX tokens specifically ```javascript /** * @keyword comment */ @log class X { render() { return ( <div jsx_attribute="value"> <Input onKeyPress={super.bind(this)}/> jsx_text </div> ); } } const IDENTIFIER = true ``` --------- Co-authored-by: Marshall Bowers <git@maxdeviant.com>
This commit is contained in:
@@ -82,6 +82,7 @@
|
||||
(escape_sequence) @string.escape
|
||||
|
||||
(regex) @string.regex
|
||||
(regex_flags) @keyword.regex
|
||||
(number) @number
|
||||
|
||||
; Tokens
|
||||
@@ -210,6 +211,8 @@
|
||||
"<" @punctuation.bracket
|
||||
">" @punctuation.bracket)
|
||||
|
||||
(decorator "@" @punctuation.special)
|
||||
|
||||
; Keywords
|
||||
|
||||
[ "abstract"
|
||||
@@ -229,11 +232,13 @@
|
||||
] @keyword
|
||||
|
||||
; JSX elements
|
||||
(jsx_opening_element (identifier) @tag (#match? @tag "^[a-z][^.]*$"))
|
||||
(jsx_closing_element (identifier) @tag (#match? @tag "^[a-z][^.]*$"))
|
||||
(jsx_self_closing_element (identifier) @tag (#match? @tag "^[a-z][^.]*$"))
|
||||
(jsx_opening_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$"))
|
||||
(jsx_closing_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$"))
|
||||
(jsx_self_closing_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$"))
|
||||
|
||||
(jsx_attribute (property_identifier) @attribute)
|
||||
(jsx_opening_element (["<" ">"]) @punctuation.bracket)
|
||||
(jsx_closing_element (["</" ">"]) @punctuation.bracket)
|
||||
(jsx_self_closing_element (["<" "/>"]) @punctuation.bracket)
|
||||
(jsx_attribute (property_identifier) @attribute.jsx)
|
||||
(jsx_opening_element (["<" ">"]) @punctuation.bracket.jsx)
|
||||
(jsx_closing_element (["</" ">"]) @punctuation.bracket.jsx)
|
||||
(jsx_self_closing_element (["<" "/>"]) @punctuation.bracket.jsx)
|
||||
(jsx_attribute "=" @punctuation.delimiter.jsx)
|
||||
(jsx_text) @text.jsx
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
(escape_sequence) @string.escape
|
||||
|
||||
(regex) @string.regex
|
||||
(regex_flags) @keyword.regex
|
||||
(number) @number
|
||||
|
||||
; Tokens
|
||||
@@ -221,6 +222,8 @@
|
||||
"<" @punctuation.bracket
|
||||
">" @punctuation.bracket)
|
||||
|
||||
(decorator "@" @punctuation.special)
|
||||
|
||||
; Keywords
|
||||
|
||||
[ "abstract"
|
||||
@@ -240,11 +243,13 @@
|
||||
] @keyword
|
||||
|
||||
; JSX elements
|
||||
(jsx_opening_element (identifier) @tag (#match? @tag "^[a-z][^.]*$"))
|
||||
(jsx_closing_element (identifier) @tag (#match? @tag "^[a-z][^.]*$"))
|
||||
(jsx_self_closing_element (identifier) @tag (#match? @tag "^[a-z][^.]*$"))
|
||||
(jsx_opening_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$"))
|
||||
(jsx_closing_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$"))
|
||||
(jsx_self_closing_element (identifier) @tag.jsx (#match? @tag.jsx "^[a-z][^.]*$"))
|
||||
|
||||
(jsx_attribute (property_identifier) @attribute)
|
||||
(jsx_opening_element (["<" ">"]) @punctuation.bracket)
|
||||
(jsx_closing_element (["</" ">"]) @punctuation.bracket)
|
||||
(jsx_self_closing_element (["<" "/>"]) @punctuation.bracket)
|
||||
(jsx_attribute (property_identifier) @attribute.jsx)
|
||||
(jsx_opening_element (["<" ">"]) @punctuation.bracket.jsx)
|
||||
(jsx_closing_element (["</" ">"]) @punctuation.bracket.jsx)
|
||||
(jsx_self_closing_element (["<" "/>"]) @punctuation.bracket.jsx)
|
||||
(jsx_attribute "=" @punctuation.delimiter.jsx)
|
||||
(jsx_text) @text.jsx
|
||||
|
||||
@@ -110,6 +110,7 @@
|
||||
(escape_sequence) @string.escape
|
||||
|
||||
(regex) @string.regex
|
||||
(regex_flags) @keyword.regex
|
||||
(number) @number
|
||||
|
||||
; Tokens
|
||||
@@ -199,6 +200,8 @@
|
||||
"<" @punctuation.bracket
|
||||
">" @punctuation.bracket)
|
||||
|
||||
(decorator "@" @punctuation.special)
|
||||
|
||||
; Keywords
|
||||
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user