on master help sign in
Add typescript support & ts/js indentation queries
c2e6b9fBlaž Hrastnik
languages.toml+11
@@ -65,6 +65,17 @@ roots = []
65
65
66indent = { tab-width = 2, unit = " " }
66indent = { tab-width = 2, unit = " " }
67
67
68+[[language]]
69+name = "typescript"
70+scope = "source.ts"
71+injection-regex = "^(ts|typescript)$"
72+file-types = ["ts"]
73+roots = []
74+# TODO: highlights-jsx, highlights-params
75+
76+language-server = { command = "typescript-language-server", args = ["--stdio"] }
77+indent = { tab-width = 2, unit = " " }
78+
68[[language]]
79[[language]]
69name = "css"
80name = "css"
70scope = "source.css"
81scope = "source.css"
runtime/queries/javascript/indents.tomlnew file+28
@@ -0,0 +1,28 @@
1+indent = [
2+ "array",
3+ "object",
4+ "arguments",
5+ "formal_parameters",
6+
7+ "statement_block",
8+ "object_pattern",
9+ "class_body",
10+ "named_imports",
11+
12+ "binary_expression",
13+ "return_statement",
14+ "template_substitution",
15+ # (expression_statement (call_expression))
16+ "export_clause",
17+
18+ # typescript
19+ "enum_declaration",
20+ "interface_declaration",
21+ "object_type",
22+]
23+
24+outdent = [
25+ "}",
26+ "]",
27+ ")"
28+]
runtime/queries/typescript/highlights.scmnew file+36
@@ -0,0 +1,36 @@
1+; inherits: javascript
2+
3+; Types
4+
5+(type_identifier) @type
6+(predefined_type) @type.builtin
7+
8+((identifier) @type
9+ (#match? @type "^[A-Z]"))
10+
11+(type_arguments
12+ "<" @punctuation.bracket
13+ ">" @punctuation.bracket)
14+
15+; Variables
16+
17+(required_parameter (identifier) @variable.parameter)
18+(optional_parameter (identifier) @variable.parameter)
19+
20+; Keywords
21+
22+[
23+ "abstract"
24+ "declare"
25+ "enum"
26+ "export"
27+ "implements"
28+ "interface"
29+ "keyof"
30+ "namespace"
31+ "private"
32+ "protected"
33+ "public"
34+ "type"
35+ "readonly"
36+] @keyword
runtime/queries/typescript/indents.tomlnew file+1
@@ -0,0 +1 @@
1+../javascript/indents.toml
runtime/queries/typescript/locals.scmnew file+2
@@ -0,0 +1,2 @@
1+(required_parameter (identifier) @local.definition)
2+(optional_parameter (identifier) @local.definition)
runtime/queries/typescript/tags.scmnew file+23
@@ -0,0 +1,23 @@
1+(function_signature
2+ name: (identifier) @name) @definition.function
3+
4+(method_signature
5+ name: (property_identifier) @name) @definition.method
6+
7+(abstract_method_signature
8+ name: (property_identifier) @name) @definition.method
9+
10+(abstract_class_declaration
11+ name: (type_identifier) @name) @definition.class
12+
13+(module
14+ name: (identifier) @name) @definition.module
15+
16+(interface_declaration
17+ name: (type_identifier) @name) @definition.interface
18+
19+(type_annotation
20+ (type_identifier) @name) @reference.type
21+
22+(new_expression
23+ constructor: (identifier) @name) @reference.class