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` | | 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 | ✓ | | | |

View File

@ -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"

View File

@ -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")

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 (comment) @comment
(string_literal) @string ; Different types:
(int_literal) @constant.numeric.integer (string_value) @string
(float_literal) @constant.numeric.float (bool_value) @constant.builtin.boolean
; Constants
(escape_sequence) @constant.character.escape
(color_value) @constant
[ [
"in" (children_identifier)
"in-out" (easing_kind_identifier)
"for" ] @constant.builtin
] @keyword.control.repeat
[ [
"import" (int_value)
"export" (physical_length_value)
"from" ] @constant.numeric.integer
] @keyword.control.import
[ [
"if" (float_value)
"else" (percent_value)
"when" (length_value)
] @keyword.control.conditional (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" (comparison_operator)
"property" (mult_prec_operator)
] @keyword.storage.type (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 ] @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"
"float"
"image"
"int"
"length"
"percent"
"physical-length"
"physical_length"
"string"
] @type.builtin
[ (image_call
":=" "@image-url" @attribute)
"<=>"
"!"
"-"
"+"
"*"
"/"
"&&"
"||"
">"
"<"
">="
"<="
"="
":"
"+="
"-="
"*="
"/="
"?"
"=>" ] @operator
(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) (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

View File

@ -1,3 +1,6 @@
; locals.scm [
(component)
(component_item) @local.scope (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