slint: Update treesitter parser and queries (#9551)

* slint: Update treesitter parser and queries

* slint: Port over suggestions from nvim review
This commit is contained in:
Tobias Hunger 2024-02-07 19:36:29 +01:00 committed by GitHub
parent bbcc89241f
commit a1272bdb17
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 288 additions and 156 deletions

View file

@ -148,7 +148,7 @@
| scala | ✓ | ✓ | ✓ | `metals` |
| scheme | ✓ | | ✓ | |
| scss | ✓ | | | `vscode-css-language-server` |
| slint | ✓ | | ✓ | `slint-lsp` |
| slint | ✓ | | ✓ | `slint-lsp` |
| smali | ✓ | | ✓ | |
| smithy | ✓ | | | `cs` |
| sml | ✓ | | | |

View file

@ -2139,7 +2139,7 @@ language-servers = [ "slint-lsp" ]
[[grammar]]
name = "slint"
source = { git = "https://github.com/jrmoulton/tree-sitter-slint", rev = "00c8a2d3645766f68c0d0460086c0a994e5b0d85" }
source = { git = "https://github.com/slint-ui/tree-sitter-slint", rev = "15618215b79b9db08f824a5c97a12d073dcc1c00" }
[[language]]
name = "task"

View file

@ -2,11 +2,29 @@
(#set! injection.language "comment"))
((macro_invocation
macro: (identifier) @_html (#eq? @_html "html")
macro:
[
(scoped_identifier
name: (_) @_macro_name)
(identifier) @_macro_name
]
(token_tree) @injection.content)
(#eq? @_macro_name "html")
(#set! injection.language "html")
(#set! injection.include-children))
((macro_invocation
macro:
[
(scoped_identifier
name: (_) @_macro_name)
(identifier) @_macro_name
]
(token_tree) @injection.content)
(#eq? @_macro_name "slint")
(#set! injection.language "slint")
(#set! injection.include-children))
((macro_invocation
(token_tree) @injection.content)
(#set! injection.language "rust")

View file

@ -1,122 +1,109 @@
(identifier) @variable
[
(type_identifier)
(units)
]@type
(array_literal
(identifier) @type)
(function_identifier) @function
[
(image_macro)
(children_macro)
(radial_grad_macro)
(linear_grad_macro)
] @function.macro
(call_expression
function: (identifier) @function)
(call_expression
function: (field_expression
field: (identifier) @function))
(vis) @keyword.control.import
(transition_statement state: (identifier) @variable.other.member)
(state_expression state: (identifier) @variable.other.member)
(struct_block_definition field: (identifier) @variable.other.member)
(assign_property (identifier) @attribute)
(comment) @comment
(string_literal) @string
(int_literal) @constant.numeric.integer
(float_literal) @constant.numeric.float
; Different types:
(string_value) @string
(bool_value) @constant.builtin.boolean
; Constants
(escape_sequence) @constant.character.escape
(color_value) @constant
[
"in"
"in-out"
"for"
] @keyword.control.repeat
(children_identifier)
(easing_kind_identifier)
] @constant.builtin
[
"import"
"export"
"from"
] @keyword.control.import
(int_value)
(physical_length_value)
] @constant.numeric.integer
[
"if"
"else"
"when"
] @keyword.control.conditional
(float_value)
(percent_value)
(length_value)
(duration_value)
(angle_value)
(relative_font_size_value)
] @constant.numeric.float
(purity) @keyword.storage.modifier
(function_visibility) @keyword.storage.modifier
(property_visibility) @keyword.storage.modifier
(builtin_type_identifier) @type.builtin
(reference_identifier) @variable.builtin
(type
[
(type_list)
(user_type_identifier)
(anon_struct_block)
]) @type
(user_type_identifier) @type
; Functions and callbacks
(argument) @variable.parameter
(function_call
name: (_) @function.call)
; definitions
(callback
name: (_) @function)
(callback_alias
name: (_) @function)
(callback_event
name: (simple_identifier) @function.call)
(enum_definition
name: (_) @type.enum)
(function_definition
name: (_) @function)
(struct_definition
name: (_) @type)
(typed_identifier
type: (_) @type)
; Operators
(binary_expression
op: (_) @operator)
(unary_expression
op: (_) @operator)
[
"struct"
"property"
] @keyword.storage.type
(comparison_operator)
(mult_prec_operator)
(add_prec_operator)
(unary_prec_operator)
(assignment_prec_operator)
] @operator
[
"global"
] @keyword.storage.modifier
":="
"=>"
"->"
"<=>"
] @operator
[
"root"
"parent"
"duration"
"easing"
] @variable.builtin
[
"callback"
"animate"
"states"
"out"
"transitions"
"component"
"inherits"
] @keyword
[
"black"
"transparent"
"blue"
"ease"
"ease_in"
"ease-in"
"ease_in_out"
"ease-in-out"
"ease_out"
"ease-out"
"end"
"green"
"red"
"start"
"yellow"
"white"
"gray"
] @constant.builtin
[
"true"
"false"
] @constant.builtin.boolean
"@" @keyword
; ; Punctuation
[
","
"."
";"
":"
"."
","
] @punctuation.delimiter
; ; Brackets
[
"("
")"
@ -126,46 +113,136 @@
"}"
] @punctuation.bracket
(define_property ["<" ">"] @punctuation.bracket)
(property
[
"<"
">"
] @punctuation.bracket)
; Properties, constants and variables
(component
id: (simple_identifier) @constant)
(property
name: (simple_identifier) @variable)
(binding_alias
name: (simple_identifier) @variable)
(binding
name: (simple_identifier) @variable)
(struct_block
(simple_identifier) @variable.other.member)
(anon_struct_block
(simple_identifier) @variable.other.member)
(property_assignment
property: (simple_identifier) @variable)
(states_definition
name: (simple_identifier) @variable)
(callback
name: (simple_identifier) @variable)
(typed_identifier
name: (_) @variable)
(simple_indexed_identifier
(simple_identifier) @variable)
(expression
(simple_identifier) @variable)
; Attributes
[
"angle"
"bool"
"brush"
"color"
"duration"
"easing"
"float"
"image"
"int"
"length"
"percent"
"physical-length"
"physical_length"
"string"
] @type.builtin
(linear_gradient_identifier)
(radial_gradient_identifier)
(radial_gradient_kind)
] @attribute
[
":="
"<=>"
"!"
"-"
"+"
"*"
"/"
"&&"
"||"
">"
"<"
">="
"<="
"="
":"
"+="
"-="
"*="
"/="
"?"
"=>" ] @operator
(image_call
"@image-url" @attribute)
(ternary_expression [":" "?"] @keyword.control.conditional)
(tr
"@tr" @attribute)
; Keywords
(animate_option_identifier) @keyword
(export) @keyword.control.import
(if_statement
"if" @keyword.control.conditional)
(if_expr
[
"if"
"else"
] @keyword.control.conditional)
(ternary_expression
[
"?"
":"
] @keyword.control.conditional)
(animate_statement
"animate" @keyword)
(callback
"callback" @keyword.function)
(component_definition
[
"component"
"inherits"
] @keyword.storage.type)
(enum_definition
"enum" @keyword.storage.type)
(for_loop
[
"for"
"in"
] @keyword.control.repeat)
(function_definition
"function" @keyword.function)
(global_definition
"global" @keyword.storage.type)
(imperative_block
"return" @keyword.control.return)
(import_statement
[
"import"
"from"
] @keyword.control.import)
(import_type
"as" @keyword.control.import)
(property
"property" @keyword.storage.type)
(states_definition
[
"states"
"when"
] @keyword)
(struct_definition
"struct" @keyword.storage.type)
(transitions_definition
[
"transitions"
"in"
"out"
] @keyword)

View file

@ -1,12 +1,11 @@
[
(comp_body)
(state_statement)
(transition_statement)
(handler_body)
(consequence_body)
(global_single)
(anon_struct_block)
(assignment_block)
(block)
(enum_block)
(global_block)
(imperative_block)
(struct_block)
] @indent
[
"}"
] @outdent
"}" @outdent

View file

@ -1,3 +1,6 @@
; locals.scm
(component_item) @local.scope
[
(component)
(component_definition)
(function_definition)
(imperative_block)
] @local.scope

View file

@ -0,0 +1,35 @@
(function_definition
(imperative_block) @funtion.inside) @function.around
(callback_event
(imperative_block) @function.inside) @function.around
(property
(imperative_block) @function.inside) @function.around
(struct_definition
(struct_block) @class.inside) @class.around
(enum_definition
(enum_block) @class.inside) @class.around
(global_definition
(global_block) @class.inside) @class.around
(component_definition
(block) @class.inside) @class.around
(component_definition
(block) @class.inside) @class.around
(comment) @comment.around
(typed_identifier
name: (_) @parameter.inside) @parameter.around
(callback
arguments: (_) @parameter.inside)
(string_value
"\"" . (_) @text.inside . "\"") @text.around