Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/bicep/highlights.scm')
-rw-r--r--runtime/queries/bicep/highlights.scm255
1 files changed, 207 insertions, 48 deletions
diff --git a/runtime/queries/bicep/highlights.scm b/runtime/queries/bicep/highlights.scm
index b6f92872..b80de7fd 100644
--- a/runtime/queries/bicep/highlights.scm
+++ b/runtime/queries/bicep/highlights.scm
@@ -1,73 +1,232 @@
-; Keywords
+; Includes
+[
+ "import"
+ "provider"
+ "with"
+ "as"
+ "from"
+] @keyword.control.import
+
+; Namespaces
+(module_declaration
+ (identifier) @namespace)
+
+; Builtins
+(primitive_type) @type.builtin
+
+((member_expression
+ object: (identifier) @type.builtin)
+ (#eq? @type.builtin "sys"))
+
+; Functions
+(call_expression
+ function: (identifier) @function)
+
+(user_defined_function
+ name: (identifier) @function)
+
+; Properties
+(object_property
+ (identifier) @function.method
+ ":" @punctuation.delimiter
+ (_))
+
+(object_property
+ (compatible_identifier) @function.method
+ ":" @punctuation.delimiter
+ (_))
+
+(property_identifier) @function.method
+
+; Attributes
+(decorator
+ "@" @attribute)
+
+(decorator
+ (call_expression
+ (identifier) @attribute))
+
+(decorator
+ (call_expression
+ (member_expression
+ object: (identifier) @attribute
+ property: (property_identifier) @attribute)))
+
+; Types
+(type_declaration
+ (identifier) @type)
+(type_declaration
+ (identifier)
+ "="
+ (identifier) @type)
+
+(type
+ (identifier) @type)
+
+(resource_declaration
+ (identifier) @type)
+
+(resource_expression
+ (identifier) @type)
+
+; Parameters
+(parameter_declaration
+ (identifier) @variable.parameter
+ (_))
+
+(call_expression
+ function: (_)
+ (arguments
+ (identifier) @variable.parameter))
+
+(call_expression
+ function: (_)
+ (arguments
+ (member_expression
+ object: (identifier) @variable.parameter)))
+
+(parameter
+ .
+ (identifier) @variable.parameter)
+
+; Variables
+(variable_declaration
+ (identifier) @variable
+ (_))
+
+(metadata_declaration
+ (identifier) @variable
+ (_))
+
+(output_declaration
+ (identifier) @variable
+ (_))
+
+(object_property
+ (_)
+ ":"
+ (identifier) @variable)
+
+(for_statement
+ "for"
+ (for_loop_parameters
+ (loop_variable) @variable
+ (loop_enumerator) @variable))
+
+; Conditionals
+"if" @keyword.conditional
+
+(ternary_expression
+ "?" @keyword.control.conditional
+ ":" @keyword.control.conditional)
+
+; Loops
+(for_statement
+ "for" @keyword.control.repeat
+ "in"
+ ":" @punctuation.delimiter)
+
+; Keywords
[
"module"
- "var"
+ "metadata"
+ "output"
"param"
- "import"
"resource"
"existing"
- "if"
"targetScope"
- "output"
+ "type"
+ "var"
+ "using"
+ "test"
] @keyword
-; Functions
+"func" @keyword.function
-(decorator) @function.builtin
+"assert" @keyword.control.exception
-(functionCall) @function
+; Operators
+[
+ "+"
+ "-"
+ "*"
+ "/"
+ "%"
+ "||"
+ "&&"
+ "|"
+ "=="
+ "!="
+ "=~"
+ "!~"
+ ">"
+ ">="
+ "<="
+ "<"
+ "??"
+ "="
+ "!"
+ ".?"
+] @operator
-(functionCall
- (functionArgument
- (variableAccess) @variable))
+(subscript_expression
+ "?" @operator)
-; Literals/Types
+(nullable_type
+ "?" @operator)
-[
- "("
- ")"
- "["
- "]"
- "{"
- "}"
-] @punctuation.bracket
+"in" @keyword.operator
-(resourceDeclaration
- (string
- (stringLiteral) @string.special))
+; Literals
+(string) @string
-(moduleDeclaration
- (string
- (stringLiteral) @string.special))
+(escape_sequence) @constant.character
-[
- (string)
- (stringLiteral)
-] @string
+(number) @constant.number
-(nullLiteral) @keyword
-(booleanLiteral) @constant.builtin.boolean
-(integerLiteral) @constant.numeric.integer
-(comment) @comment
+(boolean) @constant.builtin.boolean
-(string
- (variableAccess
- (identifier) @variable))
+(null) @constant.builtin
-(type) @type
+; Misc
+(compatible_identifier
+ "?" @punctuation.special)
-; Variables
+(nullable_return_type) @punctuation.special
+
+[
+ "{"
+ "}"
+] @punctuation.bracket
-(localVariable) @variable
+[
+ "["
+ "]"
+] @punctuation.bracket
-; Statements
+[
+ "("
+ ")"
+] @punctuation.bracket
-(object
- (objectProperty
- (identifier) @identifier))
+[
+ "."
+ ":"
+ "::"
+ "=>"
+] @punctuation.delimiter
-(propertyAccess
- (identifier) @identifier)
-
-(ifCondition) @keyword.control.conditional
+; Interpolation
+(interpolation
+ "${" @punctuation.special
+ "}" @punctuation.special)
+
+(interpolation
+ (identifier) @variable)
+
+; Comments
+[
+ (comment)
+ (diagnostic_comment)
+] @comment