Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/cue/highlights.scm')
-rw-r--r--runtime/queries/cue/highlights.scm173
1 files changed, 109 insertions, 64 deletions
diff --git a/runtime/queries/cue/highlights.scm b/runtime/queries/cue/highlights.scm
index aef016e8..4168036b 100644
--- a/runtime/queries/cue/highlights.scm
+++ b/runtime/queries/cue/highlights.scm
@@ -1,12 +1,46 @@
-(package_clause "package" @keyword.control.import)
+; Includes
+[
+ "package"
+ "import"
+] @keyword.control.import
-(package_identifier) @variable
+; Namespaces
+(package_identifier) @namespace
-(import_declaration "import" @keyword.control.import)
+(import_spec
+ [
+ "."
+ "_"
+ ] @punctuation.special)
[
- "!"
+ (attr_path)
+ (package_path)
+] @string.special.url ; In attributes
+
+; Attributes
+(attribute) @attribute
+
+; Conditionals
+"if" @keyword.control.conditional
+
+; Repeats
+"for" @keyword.control.repeat
+
+(for_clause
+ "_" @punctuation.special)
+
+; Keywords
+"let" @keyword
+
+"in" @keyword.operator
+
+; Operators
+[
+ "+"
+ "-"
"*"
+ "/"
"|"
"&"
"||"
@@ -19,92 +53,103 @@
">="
"=~"
"!~"
- "+"
- "-"
- "*"
- "/"
+ "!"
+ "="
] @operator
-(unary_expression "*" @operator.default)
-
-(unary_expression "=~" @operator.regexp)
-
-(unary_expression "!~" @operator.regexp)
-
-(binary_expression _ "&" @operator.unify _)
-
-(binary_expression _ "|" @operator.disjunct _)
+; Fields & Properties
+(field
+ (label
+ (identifier) @variable.other.member))
-(builtin) @function.builtin
+(selector_expression
+ (_)
+ (identifier) @variable.other.member)
-(qualified_identifier) @function.builtin
+; Functions
+(call_expression
+ function: (identifier) @function)
-(let_clause "let" @keyword.storage.type)
+(call_expression
+ function: (selector_expression
+ (_)
+ (identifier) @function))
-(for_clause "for" @keyword.control.repeat)
-(for_clause "in" @keyword.control.repeat)
+(call_expression
+ function: (builtin_function) @function)
-(guard_clause "if" @keyword.control.conditional)
+(builtin_function) @function.builtin
-(comment) @comment
+; Variables
+(identifier) @variable
-[
- (string_type)
- (simple_string_lit)
- (multiline_string_lit)
- (bytes_type)
- (simple_bytes_lit)
- (multiline_bytes_lit)
-] @string
+; Types
+(primitive_type) @type.builtin
-[
- (number_type)
- (int_lit)
- (int_type)
- (uint_type)
-] @constant.numeric.integer
+((identifier) @type
+ (#match? @type "^_?#"))
[
- (float_lit)
- (float_type)
-] @constant.numeric.float
-
-[
- (bool_type)
- (true)
- (false)
-] @constant.builtin.boolean
-
-(null) @constant.builtin
-
-(ellipsis) @punctuation.bracket
+ (slice_type)
+ (pointer_type)
+] @type ; In attributes
+; Punctuation
[
","
":"
] @punctuation.delimiter
[
- "("
- ")"
- "["
- "]"
"{"
"}"
+ "["
+ "]"
+ "("
+ ")"
+ "<"
+ ">"
] @punctuation.bracket
-(interpolation "\\(" @punctuation.bracket (_) ")" @punctuation.bracket) @variable.other.member
+[
+ (ellipsis)
+ "?"
+] @punctuation.special
+
+; Literals
+(string) @string
-(field (label (identifier) @variable.other.member))
+[
+ (escape_char)
+ (escape_unicode)
+] @constant.character.escape
-(
- (identifier) @keyword.storage.type
- (#match? @keyword.storage.type "^#")
-)
+(number) @constant.numeric
-(field (label alias: (identifier) @label))
+(float) @constant.numeric.float
-(let_clause left: (identifier) @label)
+(si_unit
+ (float)
+ (_) @string.special.symbol)
+(boolean) @constant.builtin.boolean
-(attribute (identifier) @tag)
+[
+ (null)
+ (top)
+ (bottom)
+] @constant.builtin
+
+; Interpolations
+(interpolation
+ "\\(" @punctuation.special
+ (_)
+ ")" @punctuation.special)
+
+(interpolation
+ "\\("
+ (identifier) @variable
+ ")")
+
+; Comments
+(comment) @comment