aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-06-01 08:40:40 +0000
committerBlaž Hrastnik2021-06-01 08:55:11 +0000
commitc2e6b9f506fddec15e48bd06cf712aef2bf53e3c (patch)
treec413901e9e6d84f6dead0badc3a8283d31a551ef /runtime
parent8fd800604334679fa42b6b1fb7b06f92c8c34d1c (diff)
Add typescript support & ts/js indentation queries
Diffstat (limited to 'runtime')
-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
5 files changed, 90 insertions, 0 deletions
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