mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-17 19:00:02 -04:00
feat(slint)!: change to the official parser (#6027)
This change replaces the slint parser written and maintained by @jrmoulton with the official one hosted in the slint-ui organization on github. A huge thank you to @jrmoulton for all his work on the tree-sitter parser! --------- Co-authored-by: jrmoulton <jaredmoulton3@gmail.com>
This commit is contained in:
parent
f0d43eff13
commit
0f3183dda8
9 changed files with 401 additions and 156 deletions
|
|
@ -370,7 +370,7 @@ We are looking for maintainers to add more parsers and to write query files for
|
||||||
- [ ] [scheme](https://github.com/6cdh/tree-sitter-scheme)
|
- [ ] [scheme](https://github.com/6cdh/tree-sitter-scheme)
|
||||||
- [x] [scss](https://github.com/serenadeai/tree-sitter-scss) (maintained by @elianiva)
|
- [x] [scss](https://github.com/serenadeai/tree-sitter-scss) (maintained by @elianiva)
|
||||||
- [x] [slang](https://github.com/theHamsta/tree-sitter-slang) (experimental, maintained by @theHamsta)
|
- [x] [slang](https://github.com/theHamsta/tree-sitter-slang) (experimental, maintained by @theHamsta)
|
||||||
- [x] [slint](https://github.com/jrmoulton/tree-sitter-slint) (experimental, maintained by @jrmoulton)
|
- [x] [slint](https://github.com/slint-ui/slint) (maintained by @hunger)
|
||||||
- [x] [smali](https://git.sr.ht/~yotam/tree-sitter-smali) (maintained by @amaanq)
|
- [x] [smali](https://git.sr.ht/~yotam/tree-sitter-smali) (maintained by @amaanq)
|
||||||
- [x] [smithy](https://github.com/indoorvivants/tree-sitter-smithy) (maintained by @amaanq, @keynmol)
|
- [x] [smithy](https://github.com/indoorvivants/tree-sitter-smithy) (maintained by @amaanq, @keynmol)
|
||||||
- [ ] [snakemake](https://github.com/osthomas/tree-sitter-snakemake) (experimental)
|
- [ ] [snakemake](https://github.com/osthomas/tree-sitter-snakemake) (experimental)
|
||||||
|
|
|
||||||
|
|
@ -591,7 +591,7 @@
|
||||||
"revision": "ac07aa2c875ef6ada2ec468d8a4d0c7c5efd96d7"
|
"revision": "ac07aa2c875ef6ada2ec468d8a4d0c7c5efd96d7"
|
||||||
},
|
},
|
||||||
"slint": {
|
"slint": {
|
||||||
"revision": "00c8a2d3645766f68c0d0460086c0a994e5b0d85"
|
"revision": "15618215b79b9db08f824a5c97a12d073dcc1c00"
|
||||||
},
|
},
|
||||||
"smali": {
|
"smali": {
|
||||||
"revision": "72e334b2630f5852825ba5ff9dfd872447175eb5"
|
"revision": "72e334b2630f5852825ba5ff9dfd872447175eb5"
|
||||||
|
|
|
||||||
|
|
@ -1734,11 +1734,10 @@ list.slang = {
|
||||||
|
|
||||||
list.slint = {
|
list.slint = {
|
||||||
install_info = {
|
install_info = {
|
||||||
url = "https://github.com/jrmoulton/tree-sitter-slint",
|
url = "https://github.com/slint-ui/tree-sitter-slint",
|
||||||
files = { "src/parser.c" },
|
files = { "src/parser.c" },
|
||||||
},
|
},
|
||||||
maintainers = { "@jrmoulton" },
|
maintainers = { "@hunger" },
|
||||||
experimental = true,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
list.smali = {
|
list.smali = {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,28 @@
|
||||||
(macro_invocation
|
(macro_invocation
|
||||||
|
macro:
|
||||||
|
[
|
||||||
|
(scoped_identifier
|
||||||
|
name: (_) @_macro_name)
|
||||||
|
(identifier) @_macro_name
|
||||||
|
]
|
||||||
(token_tree) @injection.content
|
(token_tree) @injection.content
|
||||||
|
(#not-eq? @_macro_name "slint")
|
||||||
(#set! injection.language "rust")
|
(#set! injection.language "rust")
|
||||||
(#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")
|
||||||
|
(#offset! @injection.content 0 1 0 -1)
|
||||||
|
(#set! injection.language "slint")
|
||||||
|
(#set! injection.include-children))
|
||||||
|
|
||||||
(macro_definition
|
(macro_definition
|
||||||
(macro_rule
|
(macro_rule
|
||||||
left: (token_tree_pattern) @injection.content
|
left: (token_tree_pattern) @injection.content
|
||||||
|
|
|
||||||
11
queries/slint/folds.scm
Normal file
11
queries/slint/folds.scm
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[
|
||||||
|
(anon_struct_block)
|
||||||
|
(block)
|
||||||
|
(callback_event)
|
||||||
|
(component)
|
||||||
|
(enum_block)
|
||||||
|
(function_definition)
|
||||||
|
(global_definition)
|
||||||
|
(imperative_block)
|
||||||
|
(struct_block)
|
||||||
|
] @fold
|
||||||
|
|
@ -1,121 +1,113 @@
|
||||||
(identifier) @variable
|
|
||||||
|
|
||||||
(type_identifier) @type
|
|
||||||
|
|
||||||
(comment) @comment @spell
|
(comment) @comment @spell
|
||||||
|
|
||||||
(int_literal) @number
|
; Different types:
|
||||||
|
(string_value) @string @spell
|
||||||
|
|
||||||
(float_literal) @number.float
|
(escape_sequence) @string.escape
|
||||||
|
|
||||||
(string_literal) @string
|
(color_value) @constant
|
||||||
|
|
||||||
(function_identifier) @function
|
|
||||||
|
|
||||||
[
|
[
|
||||||
(image_macro)
|
(children_identifier)
|
||||||
(children_macro)
|
(easing_kind_identifier)
|
||||||
(radial_grad_macro)
|
|
||||||
(linear_grad_macro)
|
|
||||||
] @function.macro
|
|
||||||
|
|
||||||
(call_expression
|
|
||||||
function: (identifier) @function.call)
|
|
||||||
|
|
||||||
(call_expression
|
|
||||||
function:
|
|
||||||
(field_expression
|
|
||||||
field: (identifier) @function.call))
|
|
||||||
|
|
||||||
(vis) @keyword.import
|
|
||||||
|
|
||||||
(units) @type
|
|
||||||
|
|
||||||
(array_literal
|
|
||||||
(identifier) @type)
|
|
||||||
|
|
||||||
(transition_statement
|
|
||||||
state: (identifier) @variable.member)
|
|
||||||
|
|
||||||
(state_expression
|
|
||||||
state: (identifier) @variable.member)
|
|
||||||
|
|
||||||
(struct_block_definition
|
|
||||||
(identifier) @variable.member)
|
|
||||||
|
|
||||||
; (state_identifier) @variable.member
|
|
||||||
[
|
|
||||||
"in"
|
|
||||||
"for"
|
|
||||||
] @keyword.repeat
|
|
||||||
|
|
||||||
"@" @keyword
|
|
||||||
|
|
||||||
[
|
|
||||||
"import"
|
|
||||||
"from"
|
|
||||||
] @keyword.import
|
|
||||||
|
|
||||||
[
|
|
||||||
"if"
|
|
||||||
"else"
|
|
||||||
] @keyword.conditional
|
|
||||||
|
|
||||||
[
|
|
||||||
"root"
|
|
||||||
"parent"
|
|
||||||
"duration"
|
|
||||||
"easing"
|
|
||||||
] @variable.builtin
|
|
||||||
|
|
||||||
[
|
|
||||||
"true"
|
|
||||||
"false"
|
|
||||||
] @boolean
|
|
||||||
|
|
||||||
[
|
|
||||||
"struct"
|
|
||||||
"property"
|
|
||||||
"callback"
|
|
||||||
"in"
|
|
||||||
"animate"
|
|
||||||
"states"
|
|
||||||
"when"
|
|
||||||
"out"
|
|
||||||
"transitions"
|
|
||||||
"global"
|
|
||||||
] @keyword
|
|
||||||
|
|
||||||
[
|
|
||||||
"black"
|
|
||||||
"transparent"
|
|
||||||
"blue"
|
|
||||||
"ease"
|
|
||||||
"ease_in"
|
|
||||||
"ease-in"
|
|
||||||
"ease_in_out"
|
|
||||||
"ease-in-out"
|
|
||||||
"ease_out"
|
|
||||||
"ease-out"
|
|
||||||
"end"
|
|
||||||
"green"
|
|
||||||
"red"
|
|
||||||
"red"
|
|
||||||
"start"
|
|
||||||
"yellow"
|
|
||||||
"white"
|
|
||||||
"gray"
|
|
||||||
] @constant.builtin
|
] @constant.builtin
|
||||||
|
|
||||||
|
(bool_value) @boolean
|
||||||
|
|
||||||
|
[
|
||||||
|
(int_value)
|
||||||
|
(physical_length_value)
|
||||||
|
] @number
|
||||||
|
|
||||||
|
[
|
||||||
|
(angle_value)
|
||||||
|
(duration_value)
|
||||||
|
(float_value)
|
||||||
|
(length_value)
|
||||||
|
(percent_value)
|
||||||
|
(relative_font_size_value)
|
||||||
|
] @number.float
|
||||||
|
|
||||||
|
(purity) @type.qualifier
|
||||||
|
|
||||||
|
(function_visibility) @type.qualifier
|
||||||
|
|
||||||
|
(property_visibility) @type.qualifier
|
||||||
|
|
||||||
|
(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)
|
||||||
|
|
||||||
|
(component
|
||||||
|
id: (_) @variable)
|
||||||
|
|
||||||
|
(enum_definition
|
||||||
|
name: (_) @type)
|
||||||
|
|
||||||
|
(function_definition
|
||||||
|
name: (_) @function)
|
||||||
|
|
||||||
|
(struct_definition
|
||||||
|
name: (_) @type)
|
||||||
|
|
||||||
|
(typed_identifier
|
||||||
|
type: (_) @type)
|
||||||
|
|
||||||
|
; Operators
|
||||||
|
(binary_expression
|
||||||
|
op: (_) @operator)
|
||||||
|
|
||||||
|
(unary_expression
|
||||||
|
op: (_) @operator)
|
||||||
|
|
||||||
|
[
|
||||||
|
(comparison_operator)
|
||||||
|
(mult_prec_operator)
|
||||||
|
(add_prec_operator)
|
||||||
|
(unary_prec_operator)
|
||||||
|
(assignment_prec_operator)
|
||||||
|
] @operator
|
||||||
|
|
||||||
|
[
|
||||||
|
":="
|
||||||
|
"=>"
|
||||||
|
"->"
|
||||||
|
"<=>"
|
||||||
|
] @operator
|
||||||
|
|
||||||
; Punctuation
|
; Punctuation
|
||||||
[
|
[
|
||||||
","
|
|
||||||
"."
|
|
||||||
";"
|
";"
|
||||||
|
"."
|
||||||
|
","
|
||||||
":"
|
":"
|
||||||
] @punctuation.delimiter
|
] @punctuation.delimiter
|
||||||
|
|
||||||
; Brackets
|
|
||||||
[
|
[
|
||||||
"("
|
"("
|
||||||
")"
|
")"
|
||||||
|
|
@ -125,53 +117,145 @@
|
||||||
"}"
|
"}"
|
||||||
] @punctuation.bracket
|
] @punctuation.bracket
|
||||||
|
|
||||||
(define_property
|
(property
|
||||||
[
|
[
|
||||||
"<"
|
"<"
|
||||||
">"
|
">"
|
||||||
] @punctuation.bracket)
|
] @punctuation.bracket)
|
||||||
|
|
||||||
[
|
; Properties, Variables and Constants:
|
||||||
"angle"
|
(component
|
||||||
"bool"
|
id: (simple_identifier) @constant)
|
||||||
"brush"
|
|
||||||
"color"
|
|
||||||
"float"
|
|
||||||
"image"
|
|
||||||
"int"
|
|
||||||
"length"
|
|
||||||
"percent"
|
|
||||||
"physical-length"
|
|
||||||
"physical_length"
|
|
||||||
"string"
|
|
||||||
] @type.builtin
|
|
||||||
|
|
||||||
|
(property
|
||||||
|
name: (simple_identifier) @property)
|
||||||
|
|
||||||
|
(binding_alias
|
||||||
|
name: (simple_identifier) @property)
|
||||||
|
|
||||||
|
(binding
|
||||||
|
name: (simple_identifier) @property)
|
||||||
|
|
||||||
|
(struct_block
|
||||||
|
(simple_identifier) @variable.member)
|
||||||
|
|
||||||
|
(anon_struct_block
|
||||||
|
(simple_identifier) @variable.member)
|
||||||
|
|
||||||
|
(property_assignment
|
||||||
|
property: (simple_identifier) @property)
|
||||||
|
|
||||||
|
(states_definition
|
||||||
|
name: (simple_identifier) @variable)
|
||||||
|
|
||||||
|
(callback
|
||||||
|
name: (simple_identifier) @variable)
|
||||||
|
|
||||||
|
(typed_identifier
|
||||||
|
name: (_) @variable)
|
||||||
|
|
||||||
|
(simple_indexed_identifier
|
||||||
|
name: (simple_identifier) @variable
|
||||||
|
index_var: (simple_identifier) @variable)
|
||||||
|
|
||||||
|
(expression
|
||||||
|
(simple_identifier) @variable)
|
||||||
|
|
||||||
|
(member_access
|
||||||
|
member:
|
||||||
|
(expression
|
||||||
|
(simple_identifier) @property))
|
||||||
|
|
||||||
|
(states_definition
|
||||||
|
name: (simple_identifier) @constant)
|
||||||
|
|
||||||
|
; Attributes:
|
||||||
[
|
[
|
||||||
":="
|
(linear_gradient_identifier)
|
||||||
"<=>"
|
(radial_gradient_identifier)
|
||||||
"!"
|
(radial_gradient_kind)
|
||||||
"-"
|
] @attribute
|
||||||
"+"
|
|
||||||
"*"
|
(image_call
|
||||||
"/"
|
"@image-url" @attribute)
|
||||||
"&&"
|
|
||||||
"||"
|
(tr
|
||||||
">"
|
"@tr" @attribute)
|
||||||
"<"
|
|
||||||
">="
|
; Keywords:
|
||||||
"<="
|
(animate_option_identifier) @keyword
|
||||||
"="
|
|
||||||
":"
|
(export) @keyword
|
||||||
"+="
|
|
||||||
"-="
|
(if_statement
|
||||||
"*="
|
"if" @keyword.conditional)
|
||||||
"/="
|
|
||||||
"?"
|
(if_expr
|
||||||
"=>"
|
[
|
||||||
] @operator
|
"if"
|
||||||
|
"else"
|
||||||
|
] @keyword.conditional)
|
||||||
|
|
||||||
(ternary_expression
|
(ternary_expression
|
||||||
[
|
[
|
||||||
":"
|
|
||||||
"?"
|
"?"
|
||||||
|
":"
|
||||||
] @keyword.conditional.ternary)
|
] @keyword.conditional.ternary)
|
||||||
|
|
||||||
|
(animate_statement
|
||||||
|
"animate" @keyword)
|
||||||
|
|
||||||
|
(callback
|
||||||
|
"callback" @keyword)
|
||||||
|
|
||||||
|
(component_definition
|
||||||
|
[
|
||||||
|
"component"
|
||||||
|
"inherits"
|
||||||
|
] @keyword)
|
||||||
|
|
||||||
|
(enum_definition
|
||||||
|
"enum" @keyword)
|
||||||
|
|
||||||
|
(for_loop
|
||||||
|
[
|
||||||
|
"for"
|
||||||
|
"in"
|
||||||
|
] @keyword.repeat)
|
||||||
|
|
||||||
|
(function_definition
|
||||||
|
"function" @keyword.function)
|
||||||
|
|
||||||
|
(global_definition
|
||||||
|
"global" @keyword)
|
||||||
|
|
||||||
|
(imperative_block
|
||||||
|
"return" @keyword.return)
|
||||||
|
|
||||||
|
(import_statement
|
||||||
|
[
|
||||||
|
"import"
|
||||||
|
"from"
|
||||||
|
] @keyword.import)
|
||||||
|
|
||||||
|
(import_type
|
||||||
|
"as" @keyword.import)
|
||||||
|
|
||||||
|
(property
|
||||||
|
"property" @keyword)
|
||||||
|
|
||||||
|
(states_definition
|
||||||
|
[
|
||||||
|
"states"
|
||||||
|
"when"
|
||||||
|
] @keyword)
|
||||||
|
|
||||||
|
(struct_definition
|
||||||
|
"struct" @keyword)
|
||||||
|
|
||||||
|
(transitions_definition
|
||||||
|
[
|
||||||
|
"transitions"
|
||||||
|
"in"
|
||||||
|
"out"
|
||||||
|
] @keyword)
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,26 @@
|
||||||
[
|
[
|
||||||
(comp_body)
|
(arguments)
|
||||||
(state_statement)
|
(block)
|
||||||
(transition_statement)
|
(enum_block)
|
||||||
(handler_body)
|
(global_block)
|
||||||
(consequence_body)
|
(imperative_block)
|
||||||
(global_single)
|
(struct_block)
|
||||||
|
(typed_identifier)
|
||||||
] @indent.begin
|
] @indent.begin
|
||||||
|
|
||||||
"}" @indent.end
|
([
|
||||||
|
(block)
|
||||||
|
(enum_block)
|
||||||
|
(global_block)
|
||||||
|
(imperative_block)
|
||||||
|
(struct_block)
|
||||||
|
]
|
||||||
|
"}" @indent.end)
|
||||||
|
|
||||||
(comment) @indent.auto
|
([
|
||||||
|
(arguments)
|
||||||
|
(typed_identifier)
|
||||||
|
]
|
||||||
|
")" @indent.end)
|
||||||
|
|
||||||
(string_literal) @indent.auto
|
(string_value) @indent.auto
|
||||||
|
|
|
||||||
2
queries/slint/injections.scm
Normal file
2
queries/slint/injections.scm
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
((comment) @injection.content
|
||||||
|
(#set! injection.language "comment"))
|
||||||
117
queries/slint/locals.scm
Normal file
117
queries/slint/locals.scm
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
[
|
||||||
|
(anon_struct_block)
|
||||||
|
(block)
|
||||||
|
(callback_event)
|
||||||
|
(component)
|
||||||
|
(enum_block)
|
||||||
|
(function_definition)
|
||||||
|
(global_definition)
|
||||||
|
(imperative_block)
|
||||||
|
(struct_block)
|
||||||
|
] @local.scope
|
||||||
|
|
||||||
|
(anon_struct_block
|
||||||
|
(_) @local.definition.field)
|
||||||
|
|
||||||
|
(argument) @local.definition.var
|
||||||
|
|
||||||
|
(callback
|
||||||
|
name: (_) @local.definition.member)
|
||||||
|
|
||||||
|
(component_definition
|
||||||
|
name: (_) @local.definition.type)
|
||||||
|
|
||||||
|
(enum_definition
|
||||||
|
name: (_) @local.definition.type)
|
||||||
|
|
||||||
|
(enum_block
|
||||||
|
(_) @local.definition.field)
|
||||||
|
|
||||||
|
(function_definition
|
||||||
|
name: (_) @local.definition.function)
|
||||||
|
|
||||||
|
(global_definition
|
||||||
|
name: (_) @local.definition.type)
|
||||||
|
|
||||||
|
(import_type
|
||||||
|
import_name: (_)
|
||||||
|
!local_name) @local.definition.import
|
||||||
|
|
||||||
|
(import_type
|
||||||
|
import_name: (_)
|
||||||
|
local_name: (_) @local.definition.import)
|
||||||
|
|
||||||
|
(property
|
||||||
|
name: (_) @local.definition.field)
|
||||||
|
|
||||||
|
(struct_block
|
||||||
|
(_) @local.definition.field)
|
||||||
|
|
||||||
|
(struct_definition
|
||||||
|
name: (_) @local.definition.type)
|
||||||
|
|
||||||
|
(typed_identifier
|
||||||
|
name: (_) @local.definition.var)
|
||||||
|
|
||||||
|
(argument
|
||||||
|
(_) @local.reference)
|
||||||
|
|
||||||
|
(binary_expression
|
||||||
|
left: (_) @local.reference)
|
||||||
|
|
||||||
|
(binary_expression
|
||||||
|
right: (_) @local.reference)
|
||||||
|
|
||||||
|
(callback_event
|
||||||
|
name: (_) @local.reference)
|
||||||
|
|
||||||
|
(component
|
||||||
|
type: (_) @local.reference
|
||||||
|
(#set! reference.kind "type"))
|
||||||
|
|
||||||
|
(component_definition
|
||||||
|
base_type: (_) @local.reference
|
||||||
|
(#set! reference.kind "type"))
|
||||||
|
|
||||||
|
(function_call
|
||||||
|
name: (_) @local.reference)
|
||||||
|
|
||||||
|
(index_op
|
||||||
|
index: (_) @local.reference)
|
||||||
|
|
||||||
|
(index_op
|
||||||
|
left: (_) @local.reference)
|
||||||
|
|
||||||
|
(member_access
|
||||||
|
base: (_) @local.reference)
|
||||||
|
|
||||||
|
(member_access
|
||||||
|
member: (_) @local.reference)
|
||||||
|
|
||||||
|
(parens_op
|
||||||
|
left: (_) @local.reference)
|
||||||
|
|
||||||
|
(property
|
||||||
|
type: (_) @local.reference
|
||||||
|
(#set! reference.kind "type"))
|
||||||
|
|
||||||
|
(property_assignment
|
||||||
|
property: (_) @local.reference
|
||||||
|
(#set! reference.kind "field"))
|
||||||
|
|
||||||
|
(property_assignment
|
||||||
|
value: (_) @local.reference)
|
||||||
|
|
||||||
|
(struct_block
|
||||||
|
(_) @local.reference
|
||||||
|
(#set! reference.kind "type"))
|
||||||
|
|
||||||
|
(tr
|
||||||
|
percent: (_) @local.reference)
|
||||||
|
|
||||||
|
(typed_identifier
|
||||||
|
type: (_) @local.reference
|
||||||
|
(#set! reference.kind "type"))
|
||||||
|
|
||||||
|
(unary_expression
|
||||||
|
left: (_) @local.reference)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue