Skip to content

Commit

Permalink
slint: Update treesitter parser and queries
Browse files Browse the repository at this point in the history
  • Loading branch information
hunger committed Feb 6, 2024
1 parent a37af2d commit 8564bc9
Show file tree
Hide file tree
Showing 7 changed files with 249 additions and 147 deletions.
2 changes: 1 addition & 1 deletion book/src/generated/lang-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@
| scala |||| `metals` |
| scheme || || |
| scss || | | `vscode-css-language-server` |
| slint || || `slint-lsp` |
| slint || || `slint-lsp` |
| smali || || |
| smithy || | | `cs` |
| sml || | | |
Expand Down
2 changes: 1 addition & 1 deletion languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 = "fcdc1d5a302fa2792d941d77ce5525ff4f3b4fca" }

[[language]]
name = "task"
Expand Down
20 changes: 19 additions & 1 deletion runtime/queries/rust/injections.scm
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
311 changes: 179 additions & 132 deletions runtime/queries/slint/highlights.scm
Original file line number Diff line number Diff line change
@@ -1,122 +1,125 @@
(comment) @comment

; Different types:
(string_value) @string

(escape_sequence) @constant.character.escape

(color_value) @constant

(identifier) @variable
[
(type_identifier)
(units)
]@type
(children_identifier)
(easing_kind_identifier)
] @constant.builtin

(array_literal
(identifier) @type)
(bool_value) @constant.builtin.boolean

(int_value) @constant.numeric.integer

(function_identifier) @function
[
(image_macro)
(children_macro)
(radial_grad_macro)
(linear_grad_macro)
] @function.macro
(float_value)
(percent_value)
(length_value)
(physical_length_value)
(duration_value)
(angle_value)
(relative_font_size_value)
] @constant.numeric.float

(call_expression
function: (identifier) @function)
(call_expression
function: (field_expression
field: (identifier) @function))
(simple_identifier) @variable.other

(vis) @keyword.control.import
(purity) @keyword.storage.modifier

(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)
(function_visibility) @keyword.storage.modifier

(comment) @comment
(property_visibility) @keyword.storage.modifier

(string_literal) @string
(int_literal) @constant.numeric.integer
(float_literal) @constant.numeric.float
(animate_option_identifier) @keyword

[
"in"
"in-out"
"for"
] @keyword.control.repeat
(builtin_type_identifier) @type.builtin

[
"import"
"export"
"from"
] @keyword.control.import
(reference_identifier) @variable.builtin

[
"if"
"else"
"when"
] @keyword.control.conditional
(type
[
(type_list)
(user_type_identifier)
(anon_struct_block)
]) @type

[
"struct"
"property"
] @keyword.storage.type
(user_type_identifier) @type

[
"global"
] @keyword.storage.modifier
(comparison_operator)
(mult_prec_operator)
(add_prec_operator)
(unary_prec_operator)
(assignment_prec_operator)
] @operator

; Functions and callbacks
(argument) @variable.parameter

[
"root"
"parent"
"duration"
"easing"
] @variable.builtin
(function_call) @function

; definitions
(callback
name: (_) @function)

[
"callback"
"animate"
"states"
"out"
"transitions"
"component"
"inherits"
] @keyword
(component
id: (_) @variable)

[
"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
(enum_definition
name: (_) @type.enum)

[
"true"
"false"
] @constant.builtin.boolean
(function_definition
name: (_) @function)

(property
name: (_) @variable.other.member)

(struct_definition
name: (_) @type)

(typed_identifier
name: (_) @variable)

(typed_identifier
type: (_) @type)

(binary_expression
op: (_) @operator)

"@" @keyword
":=" @operator

; ; Punctuation
(unary_expression
op: (_) @operator)

(if_statement
"if" @keyword.conditional)

(if_statement
":" @punctuation.delimiter)

(if_expr
[
"if"
"else"
] @keyword.conditional)

(ternary_expression
[
"?"
":"
] @keyword.conditional)

; Keywords:
[
","
"."
";"
":"
"."
","
] @punctuation.delimiter

; ; Brackets
[
"("
")"
Expand All @@ -126,46 +129,90 @@
"}"
] @punctuation.bracket

(define_property ["<" ">"] @punctuation.bracket)

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

(ternary_expression [":" "?"] @keyword.control.conditional)
(export) @keyword.import

(animate_option
":" @punctuation.delimiter)

(animate_statement
"animate" @keyword)

(assignment_expr
name: (_) @variable.other.member)

(callback
"callback" @keyword.function)

(component_definition
[
"component"
"inherits"
] @keyword.storage.type)

(enum_definition
"enum" @keyword.storage.type)

(for_loop
[
"for"
"in"
] @keyword.repeat)

(for_loop
":" @punctuation.delimiter)

(function_definition
"function" @keyword.function)

(function_call
name: (_) @function.call)

(global_definition
"global" @keyword.storage.type)

(image_call
"@image-url" @attribute)

(imperative_block
"return" @keyword.return)

(import_statement
[
"import"
"from"
] @keyword.import)

(import_type
"as" @keyword.import)

(property
[
"property"
"<"
">"
] @keyword.storage.type)

(states_definition
[
"states"
"when"
] @keyword)

(struct_definition
"struct" @keyword.storage.type)

(tr
"@tr" @attribute)

(transitions_definition
[
"transitions"
"in"
"out"
] @keyword)
Loading

0 comments on commit 8564bc9

Please sign in to comment.