Fix comment highlighting and precedence issues

This commit is contained in:
Michael Netshipise 2026-01-19 07:12:58 +02:00
parent 177b9c811c
commit f1e5e2796f
1 changed files with 113 additions and 165 deletions

View File

@ -1,11 +1,20 @@
; Waltzing Template Highlights
; Comprehensive query file for tree-sitter-waltzing
; Tree-sitter query file - order matters for precedence
; ====================
; COMMENTS (highest priority - must come first)
; ====================
(template_comment) @comment
(html_comment) @comment
(comment_content) @comment
(html_comment_content) @comment
; ====================
; KEYWORDS
; ====================
; Template keywords (with @ prefix)
; Template keywords
"@use" @keyword.import
"@import" @keyword.import
"@struct" @keyword.type
@ -18,67 +27,91 @@
"@continue" @keyword.control
; Control flow keywords
"else" @keyword.conditional
"if" @keyword.conditional
"else" @keyword
"if" @keyword
"let" @keyword
"in" @keyword
"as" @keyword
"mut" @keyword
; Safe output keyword
"safe" @keyword.function
"safe" @keyword
; ====================
; OPERATORS
; DEFINITIONS
; ====================
(binary_operator) @operator
(unary_operator) @operator
; Struct definitions
(struct_definition
(identifier) @type.definition)
(struct_field
(identifier) @property)
; Specific operators
"=>" @operator
"=" @operator
"!" @operator
"!=" @operator
"==" @operator
"<" @operator
"<=" @operator
">" @operator
">=" @operator
"<<" @operator
">>" @operator
"+" @operator
"-" @operator
"*" @operator
"/" @operator
"%" @operator
"&" @operator
"&&" @operator
"|" @operator
"||" @operator
"^" @operator
".." @operator
; Enum definitions
(enum_definition
(identifier) @type.definition)
(enum_variant
(identifier) @constructor)
; Function definitions
(function_definition
(identifier) @function.definition)
(parameter
(identifier) @variable.parameter)
; ====================
; PUNCTUATION
; FUNCTION TAGS
; ====================
; Brackets
"{" @punctuation.bracket
"}" @punctuation.bracket
"(" @punctuation.bracket
")" @punctuation.bracket
"[" @punctuation.bracket
"]" @punctuation.bracket
(function_path) @function
"<@" @tag.delimiter
"</@" @tag.delimiter
; Delimiters
"," @punctuation.delimiter
":" @punctuation.delimiter
";" @punctuation.delimiter
"." @punctuation.delimiter
; ====================
; HTML ELEMENTS
; ====================
; Template expression marker
"@" @punctuation.special
(tag_name) @tag
(attribute_name) @attribute
(attribute_value) @string
; ====================
; TYPES
; ====================
(primitive_type) @type.builtin
(generic_params
(identifier) @type)
(generic_type
(rust_path) @type)
; ====================
; PATHS AND MODULES
; ====================
(use_statement
(rust_path) @module)
(import_statement
(string_literal) @string.special)
; ====================
; EXPRESSIONS
; ====================
; Template expression @ marker
(simple_expression
"@" @punctuation.special)
(complex_expression
"@" @punctuation.special)
(safe_expression
"@" @punctuation.special)
(attribute_reference
"@" @punctuation.special)
(expression_path
(identifier) @variable)
(field_access
(identifier) @property)
(method_call
(identifier) @function.method)
; ====================
; LITERALS
@ -89,128 +122,56 @@
(integer_literal) @number
(float_literal) @number
(boolean_literal) @constant.builtin
(escape_sequence) @string.escape
"true" @constant.builtin
"false" @constant.builtin
; ====================
; TYPES
; OPERATORS
; ====================
; Primitive types
(primitive_type) @type.builtin
"String" @type.builtin
"bool" @type.builtin
"char" @type.builtin
"str" @type.builtin
"i8" @type.builtin
"i16" @type.builtin
"i32" @type.builtin
"i64" @type.builtin
"i128" @type.builtin
"u8" @type.builtin
"u16" @type.builtin
"u32" @type.builtin
"u64" @type.builtin
"u128" @type.builtin
"isize" @type.builtin
"usize" @type.builtin
"f32" @type.builtin
"f64" @type.builtin
; Generic type parameters
(generic_params (identifier) @type)
(generic_type (rust_path) @type)
(binary_operator) @operator
(unary_operator) @operator
"=>" @operator
"=" @operator
".." @operator
; ====================
; DEFINITIONS
; PUNCTUATION
; ====================
; Struct definitions
(struct_definition (identifier) @type.definition)
(struct_field (identifier) @property.definition)
; Enum definitions
(enum_definition (identifier) @type.definition)
(enum_variant (identifier) @constructor)
; Function definitions
(function_definition (identifier) @function.definition)
(parameter (identifier) @variable.parameter)
; ====================
; FUNCTION TAGS (Components)
; ====================
(function_path) @function
(self_closing_function_tag) @tag
(container_function_tag) @tag
; Function tag delimiters
"<@" @tag.delimiter
"</@" @tag.delimiter
"/>" @tag.delimiter
; ====================
; HTML ELEMENTS
; ====================
(tag_name) @tag
(attribute_name) @attribute
(attribute_value) @string
; HTML tag delimiters
"<" @tag.delimiter
">" @tag.delimiter
"</" @tag.delimiter
; ====================
; PATHS AND IDENTIFIERS
; ====================
; Module paths
(rust_path) @module
(use_statement (rust_path) @module)
(import_statement (string_literal) @string.special)
; Expressions
(expression_path (identifier) @variable)
(simple_expression (expression_path) @variable)
(field_access (identifier) @property)
(method_call (identifier) @function.method)
"{" @punctuation.bracket
"}" @punctuation.bracket
"(" @punctuation.bracket
")" @punctuation.bracket
"[" @punctuation.bracket
"]" @punctuation.bracket
"," @punctuation.delimiter
":" @punctuation.delimiter
";" @punctuation.delimiter
"." @punctuation.delimiter
; ====================
; PATTERNS
; ====================
(wildcard_pattern) @variable.builtin
(identifier_pattern (identifier) @variable)
(struct_pattern (rust_path) @type)
(field_pattern (identifier) @property)
(identifier_pattern
(identifier) @variable)
(struct_pattern
(rust_path) @type)
(field_pattern
(identifier) @property)
; ====================
; COMMENTS
; ====================
(template_comment) @comment
(html_comment) @comment
(comment) @comment
; Comment delimiters
"@*" @comment
"*@" @comment
"<!--" @comment
"-->" @comment
; ====================
; ATTRIBUTES (derive, etc.)
; ATTRIBUTES
; ====================
(attribute_list) @attribute
(attribute (identifier) @attribute)
(attribute
(identifier) @attribute)
; ====================
; ESCAPE SEQUENCES
; ESCAPE
; ====================
(escape_at) @string.escape
@ -222,28 +183,15 @@
(embedded_language) @embedded
(language_name) @label
; Language name keywords
"css" @label
"style" @label
"javascript" @label
"js" @label
"json" @label
"alpine" @label
"html" @label
; Embedded block delimiters
"@```" @punctuation.special
"```@" @punctuation.special
; ====================
; TEXT CONTENT
; TEXT
; ====================
(text_content) @text
(text_content) @none
; ====================
; FALLBACK
; FALLBACK (lowest priority - must come last)
; ====================
; Catch-all for identifiers not matched above
(rust_path) @module
(identifier) @variable