aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--languages.toml11
-rw-r--r--runtime/queries/javascript/indents.toml28
-rw-r--r--runtime/queries/typescript/highlights.scm36
l---------runtime/queries/typescript/indents.toml1
-rw-r--r--runtime/queries/typescript/locals.scm2
-rw-r--r--runtime/queries/typescript/tags.scm23
6 files changed, 101 insertions, 0 deletions
diff --git a/languages.toml b/languages.toml
index 26ad5ddc..87f03d06 100644
--- a/languages.toml
+++ b/languages.toml
@@ -66,6 +66,17 @@ roots = []
indent = { tab-width = 2, unit = " " }
[[language]]
+name = "typescript"
+scope = "source.ts"
+injection-regex = "^(ts|typescript)$"
+file-types = ["ts"]
+roots = []
+# TODO: highlights-jsx, highlights-params
+
+language-server = { command = "typescript-language-server", args = ["--stdio"] }
+indent = { tab-width = 2, unit = " " }
+
+[[language]]
name = "css"
scope = "source.css"
injection-regex = "css"
diff --git a/runtime/queries/javascript/indents.toml b/runtime/queries/javascript/indents.toml
new file mode 100644
index 00000000..9d711ab2
--- /dev/null
+++ b/runtime/queries/javascript/indents.toml
@@ -0,0 +1,28 @@
+indent = [
+ "array",
+ "object",
+ "arguments",
+ "formal_parameters",
+
+ "statement_block",
+ "object_pattern",
+ "class_body",
+ "named_imports",
+
+ "binary_expression",
+ "return_statement",
+ "template_substitution",
+ # (expression_statement (call_expression))
+ "export_clause",
+
+ # typescript
+ "enum_declaration",
+ "interface_declaration",
+ "object_type",
+]
+
+outdent = [
+ "}",
+ "]",
+ ")"
+]
diff --git a/runtime/queries/typescript/highlights.scm b/runtime/queries/typescript/highlights.scm
new file mode 100644
index 00000000..a3212a3d
--- /dev/null
+++ b/runtime/queries/typescript/highlights.scm
@@ -0,0 +1,36 @@
+; inherits: javascript
+
+; Types
+
+(type_identifier) @type
+(predefined_type) @type.builtin
+
+((identifier) @type
+ (#match? @type "^[A-Z]"))
+
+(type_arguments
+ "<" @punctuation.bracket
+ ">" @punctuation.bracket)
+
+; Variables
+
+(required_parameter (identifier) @variable.parameter)
+(optional_parameter (identifier) @variable.parameter)
+
+; Keywords
+
+[
+ "abstract"
+ "declare"
+ "enum"
+ "export"
+ "implements"
+ "interface"
+ "keyof"
+ "namespace"
+ "private"
+ "protected"
+ "public"
+ "type"
+ "readonly"
+] @keyword
diff --git a/runtime/queries/typescript/indents.toml b/runtime/queries/typescript/indents.toml
new file mode 120000
index 00000000..3a17f258
--- /dev/null
+++ b/runtime/queries/typescript/indents.toml
@@ -0,0 +1 @@
+../javascript/indents.toml \ No newline at end of file
diff --git a/runtime/queries/typescript/locals.scm b/runtime/queries/typescript/locals.scm
new file mode 100644
index 00000000..aa6d6ffd
--- /dev/null
+++ b/runtime/queries/typescript/locals.scm
@@ -0,0 +1,2 @@
+(required_parameter (identifier) @local.definition)
+(optional_parameter (identifier) @local.definition)
diff --git a/runtime/queries/typescript/tags.scm b/runtime/queries/typescript/tags.scm
new file mode 100644
index 00000000..ccae934e
--- /dev/null
+++ b/runtime/queries/typescript/tags.scm
@@ -0,0 +1,23 @@
+(function_signature
+ name: (identifier) @name) @definition.function
+
+(method_signature
+ name: (property_identifier) @name) @definition.method
+
+(abstract_method_signature
+ name: (property_identifier) @name) @definition.method
+
+(abstract_class_declaration
+ name: (type_identifier) @name) @definition.class
+
+(module
+ name: (identifier) @name) @definition.module
+
+(interface_declaration
+ name: (type_identifier) @name) @definition.interface
+
+(type_annotation
+ (type_identifier) @name) @reference.type
+
+(new_expression
+ constructor: (identifier) @name) @reference.class