slint: Update treesitter parser and queries (#9551)

* slint: Update treesitter parser and queries

* slint: Port over suggestions from nvim review
pull/9574/head
Tobias Hunger 10 months ago committed by GitHub
parent bbcc89241f
commit a1272bdb17
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

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

@ -2139,7 +2139,7 @@ language-servers = [ "slint-lsp" ]
[[grammar]] [[grammar]]
name = "slint" 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]] [[language]]
name = "task" name = "task"

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

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

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

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

@ -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
Loading…
Cancel
Save