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:
parent
bbcc89241f
commit
a1272bdb17
7 changed files with 288 additions and 156 deletions
|
@ -148,7 +148,7 @@
|
|||
| scala | ✓ | ✓ | ✓ | `metals` |
|
||||
| scheme | ✓ | | ✓ | |
|
||||
| scss | ✓ | | | `vscode-css-language-server` |
|
||||
| slint | ✓ | | ✓ | `slint-lsp` |
|
||||
| slint | ✓ | ✓ | ✓ | `slint-lsp` |
|
||||
| smali | ✓ | | ✓ | |
|
||||
| smithy | ✓ | | | `cs` |
|
||||
| sml | ✓ | | | |
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
; locals.scm
|
||||
|
||||
(component_item) @local.scope
|
||||
[
|
||||
(component)
|
||||
(component_definition)
|
||||
(function_definition)
|
||||
(imperative_block)
|
||||
] @local.scope
|
||||
|
|
35
runtime/queries/slint/textobjects.scm
Normal file
35
runtime/queries/slint/textobjects.scm
Normal 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
|
||||
|
Loading…
Add table
Reference in a new issue