on master help sign in
separate JSX queries from javascript (#1921)
ffdc2f1Michael Davis
book/src/generated/lang-support.md+1
@@ -28,6 +28,7 @@
28| java | ✓ | | | |
28| java | ✓ | | | |
29| javascript | ✓ | | ✓ | `typescript-language-server` |
29| javascript | ✓ | | ✓ | `typescript-language-server` |
30| json | ✓ | | ✓ | |
30| json | ✓ | | ✓ | |
31+| jsx | ✓ | | ✓ | `typescript-language-server` |
31| julia | ✓ | | | `julia` |
32| julia | ✓ | | | `julia` |
32| kotlin | ✓ | | | `kotlin-language-server` |
33| kotlin | ✓ | | | `kotlin-language-server` |
33| latex | ✓ | | | |
34| latex | ✓ | | | |
languages.toml+11
@@ -290,6 +290,17 @@ args = { program = "{0}" }
290name = "javascript"
290name = "javascript"
291source = { git = "https://github.com/tree-sitter/tree-sitter-javascript", rev = "4a95461c4761c624f2263725aca79eeaefd36cad" }
291source = { git = "https://github.com/tree-sitter/tree-sitter-javascript", rev = "4a95461c4761c624f2263725aca79eeaefd36cad" }
292
292
293+[[language]]
294+name = "jsx"
295+scope = "source.jsx"
296+injection-regex = "jsx"
297+file-types = ["jsx"]
298+roots = []
299+comment-token = "//"
300+language-server = { command = "typescript-language-server", args = ["--stdio"], language-id = "javascript" }
301+indent = { tab-width = 2, unit = " " }
302+grammar = "javascript"
303+
293[[language]]
304[[language]]
294name = "typescript"
305name = "typescript"
295scope = "source.ts"
306scope = "source.ts"
runtime/queries/javascript/highlights.scm−30
@@ -1,33 +1,3 @@
1−; JSX
2−;----
3−
4−; Highlight component names differently
5−
6−(jsx_opening_element ((identifier) @constructor
7− (#match? @constructor "^[A-Z]")))
8−
9−; Handle the dot operator effectively - <My.Component>
10−(jsx_opening_element ((nested_identifier (identifier) @tag (identifier) @constructor)))
11−
12−(jsx_closing_element ((identifier) @constructor
13− (#match? @constructor "^[A-Z]")))
14−
15−; Handle the dot operator effectively - </My.Component>
16−(jsx_closing_element ((nested_identifier (identifier) @tag (identifier) @constructor)))
17−
18−(jsx_self_closing_element ((identifier) @constructor
19− (#match? @constructor "^[A-Z]")))
20−
21−; Handle the dot operator effectively - <My.Component />
22−(jsx_self_closing_element ((nested_identifier (identifier) @tag (identifier) @constructor)))
23−
24−; TODO: also tag @punctuation.delimiter?
25−
26−(jsx_opening_element (identifier) @tag)
27−(jsx_closing_element (identifier) @tag)
28−(jsx_self_closing_element (identifier) @tag)
29−(jsx_attribute (property_identifier) @variable.other.member)
30−
31; Special identifiers
1; Special identifiers
32;--------------------
2;--------------------
33
3
runtime/queries/jsx/highlights.scmnew file+27
@@ -0,0 +1,27 @@
1+; inherits: javascript
2+
3+; Highlight component names differently
4+(jsx_opening_element ((identifier) @constructor
5+ (#match? @constructor "^[A-Z]")))
6+
7+; Handle the dot operator effectively - <My.Component>
8+(jsx_opening_element ((nested_identifier (identifier) @tag (identifier) @constructor)))
9+
10+(jsx_closing_element ((identifier) @constructor
11+ (#match? @constructor "^[A-Z]")))
12+
13+; Handle the dot operator effectively - </My.Component>
14+(jsx_closing_element ((nested_identifier (identifier) @tag (identifier) @constructor)))
15+
16+(jsx_self_closing_element ((identifier) @constructor
17+ (#match? @constructor "^[A-Z]")))
18+
19+; Handle the dot operator effectively - <My.Component />
20+(jsx_self_closing_element ((nested_identifier (identifier) @tag (identifier) @constructor)))
21+
22+; TODO: also tag @punctuation.delimiter?
23+
24+(jsx_opening_element (identifier) @tag)
25+(jsx_closing_element (identifier) @tag)
26+(jsx_self_closing_element (identifier) @tag)
27+(jsx_attribute (property_identifier) @variable.other.member)
runtime/queries/jsx/indents.scmnew file+1
@@ -0,0 +1 @@
1+; inherits: javascript
runtime/queries/jsx/injections.scmnew file+1
@@ -0,0 +1 @@
1+; inherits: javascript
runtime/queries/jsx/locals.scmnew file+1
@@ -0,0 +1 @@
1+; inherits: javascript