aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--queries/wing/folds.scm2
-rw-r--r--queries/wing/highlights.scm96
-rw-r--r--queries/wing/injections.scm13
-rw-r--r--tests/query/highlights/wing/class.w6
4 files changed, 104 insertions, 13 deletions
diff --git a/queries/wing/folds.scm b/queries/wing/folds.scm
index 60de6116d..9c5a28483 100644
--- a/queries/wing/folds.scm
+++ b/queries/wing/folds.scm
@@ -12,4 +12,6 @@
(enum_definition)
(try_catch_statement)
(method_definition)
+ (import_statement)+
+ (initializer)
] @fold
diff --git a/queries/wing/highlights.scm b/queries/wing/highlights.scm
index d417675e1..6f6fe4a30 100644
--- a/queries/wing/highlights.scm
+++ b/queries/wing/highlights.scm
@@ -8,17 +8,34 @@
(custom_type) @type
(class_field
- name: (identifier) @variable.member)
+ name: (identifier) @property)
+
+(struct_field
+ name: (identifier) @property)
(class_definition
name: (identifier) @type)
+(struct_definition
+ name: (identifier) @type)
+
+(interface_definition
+ name: (identifier) @type)
+
(method_definition
name: (identifier) @function.method)
+(json_literal_member
+ (identifier) @property)
+
; Functions
(keyword_argument_key) @variable.parameter
+(parameter_definition
+ name: (identifier) @variable.parameter)
+
+(variadic) @variable.parameter.builtin
+
(call
caller: (reference
(nested_identifier
@@ -37,7 +54,17 @@
(bool) @boolean
-(builtin_type) @type.builtin
+[
+ (builtin_type)
+ "MutSet"
+ "MutMap"
+ "MutArray"
+ "Json"
+ "Set"
+ "Map"
+ "Array"
+ "MutJson"
+] @type.builtin
(json_container_type) @type.builtin
@@ -45,16 +72,12 @@
(comment) @comment @spell
[
- "("
- ")"
- "{"
- "}"
-] @punctuation.bracket
-
-[
"-"
+ "-="
"+"
+ "+="
"*"
+ "**"
"/"
"%"
"<"
@@ -68,23 +91,54 @@
"&&"
"??"
"||"
+ "?"
] @operator
[
+ "("
+ ")"
+ "{"
+ "}"
+ "["
+ "]"
+] @punctuation.bracket
+
+(mutable_container_type
+ [
+ "<"
+ ">"
+ ] @punctuation.bracket)
+
+(immutable_container_type
+ [
+ "<"
+ ">"
+ ] @punctuation.bracket)
+
+[
";"
"."
","
+ ":"
+ "=>"
] @punctuation.delimiter
[
"as"
- "bring"
"let"
"new"
(inflight_specifier)
+ "impl"
+ "test"
] @keyword
-"class" @keyword.type
+"bring" @keyword.import
+
+[
+ "class"
+ "struct"
+ "interface"
+] @keyword.type
[
"for"
@@ -100,6 +154,26 @@
"pub"
"protected"
"internal"
+ "extern"
+ (static)
] @keyword.modifier
"return" @keyword.return
+
+(import_statement
+ module_name: (identifier) @module)
+
+(import_statement
+ alias: (identifier) @module)
+
+(call
+ (reference
+ (nested_identifier
+ object: (reference) @_ref
+ property: (member_identifier) @_ident))
+ (argument_list
+ (positional_argument
+ (string) @string.regexp))
+ (#eq? @_ref "regex")
+ (#eq? @_ident "compile")
+ (#offset! @string.regexp 0 1 0 -1))
diff --git a/queries/wing/injections.scm b/queries/wing/injections.scm
index 2f0e58eb6..bd3fdaec5 100644
--- a/queries/wing/injections.scm
+++ b/queries/wing/injections.scm
@@ -1,2 +1,15 @@
((comment) @injection.content
(#set! injection.language "comment"))
+
+(call
+ (reference
+ (nested_identifier
+ object: (reference) @_ref
+ property: (member_identifier) @_ident))
+ (argument_list
+ (positional_argument
+ (string) @injection.content))
+ (#eq? @_ref "regex")
+ (#eq? @_ident "compile")
+ (#offset! @injection.content 0 1 0 -1)
+ (#set! injection.language "regex"))
diff --git a/tests/query/highlights/wing/class.w b/tests/query/highlights/wing/class.w
index 9f76b16e8..1507d7574 100644
--- a/tests/query/highlights/wing/class.w
+++ b/tests/query/highlights/wing/class.w
@@ -1,12 +1,13 @@
bring cloud;
-// <- @keyword
+// <- @keyword.import
+// ^ @module
class Foo {
// <- @keyword.type
// ^ @type
// ^ @punctuation.bracket
name: str;
-//^ @variable.member
+//^ @property
// ^ @type.builtin
// ^ @punctuation.delimiter
new(name: str) {
@@ -14,6 +15,7 @@ class Foo {
// ^ @variable
this.name = name;
// ^ @punctuation.delimiter
+// ^ @variable.member
// ^ @operator
}
}