From 19dff5c3a4c1f41436cc11372e5e7dcbfe197112 Mon Sep 17 00:00:00 2001 From: Erasin Wang Date: Sun, 13 Aug 2023 15:18:57 +0800 Subject: [PATCH] Update slint grammar (#7893) --- languages.toml | 2 +- runtime/queries/slint/highlights.scm | 192 +++++++++++++++++---------- runtime/queries/slint/indents.scm | 11 +- runtime/queries/slint/injections.scm | 2 + runtime/queries/slint/locals.scm | 2 +- 5 files changed, 129 insertions(+), 80 deletions(-) create mode 100644 runtime/queries/slint/injections.scm diff --git a/languages.toml b/languages.toml index e85fcdb16..8fdb5f1f8 100644 --- a/languages.toml +++ b/languages.toml @@ -2029,7 +2029,7 @@ language-servers = [ "slint-lsp" ] [[grammar]] name = "slint" -source = { git = "https://github.com/jrmoulton/tree-sitter-slint", rev = "0d4dda94f96623302dfc234e06be62a5717f47da" } +source = { git = "https://github.com/jrmoulton/tree-sitter-slint", rev = "00c8a2d3645766f68c0d0460086c0a994e5b0d85" } [[language]] name = "task" diff --git a/runtime/queries/slint/highlights.scm b/runtime/queries/slint/highlights.scm index c7773913d..c0ef3dd88 100644 --- a/runtime/queries/slint/highlights.scm +++ b/runtime/queries/slint/highlights.scm @@ -1,105 +1,153 @@ -(user_type_identifier) @type +(identifier) @variable +[ + (type_identifier) + (units) +]@type -(var_identifier) @variable - -(state_identifier) @variable.other.member - -(var_identifier - (post_identifier) @variable) +(array_literal + (identifier) @type) (function_identifier) @function +[ + (image_macro) + (children_macro) + (radial_grad_macro) + (linear_grad_macro) +] @function.macro -(reference_identifier) @keyword.storage.modifier.ref -(visibility_modifier) @keyword.storage.modifier +(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) @string -(int_number) @constant.numeric -(unit_type) @type.builtin +(string_literal) @string +(int_literal) @constant.numeric.integer +(float_literal) @constant.numeric.float [ -"struct" -"property" -"callback" -"import" -"from" -"root" -"parent" -"this" -"for" -"in" -"if" -"else if" -"else" -"animate" -"states" -"when" -"in" -"out" -"transitions" -"global" + "in" + "in-out" + "for" +] @keyword.control.repeat + +[ + "import" + "export" + "from" +] @keyword.control.import + +[ + "if" + "else" + "when" +] @keyword.control.conditional + +[ + "struct" + "property" +] @keyword.storage.type + +[ + "global" +] @keyword.storage.modifier + + +[ + "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" - "red" - "start" - "yellow" - "true" - "false" + "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 [ -"(" -")" -"[" -"]" -"{" -"}" + "(" + ")" + "[" + "]" + "{" + "}" ] @punctuation.bracket +(define_property ["<" ">"] @punctuation.bracket) + [ -"angle" -"bool" -"brush" -; "color" // This causes problems -"duration" -"easing" -"float" -"image" -"int" -"length" -"percent" -"physical-length" -"physical_length" -"string" + "angle" + "bool" + "brush" + "color" + "duration" + "easing" + "float" + "image" + "int" + "length" + "percent" + "physical-length" + "physical_length" + "string" ] @type.builtin [ ":=" + "<=>" "!" "-" "+" @@ -118,8 +166,6 @@ "*=" "/=" "?" - - "=>" - ] @operator + "=>" ] @operator (ternary_expression [":" "?"] @keyword.control.conditional) \ No newline at end of file diff --git a/runtime/queries/slint/indents.scm b/runtime/queries/slint/indents.scm index 37bbd5360..4b5ce41b8 100644 --- a/runtime/queries/slint/indents.scm +++ b/runtime/queries/slint/indents.scm @@ -1,11 +1,12 @@ [ - (field_declaration_list_body) - (list_definition_body) - (struct_field_declaration_list_body) + (comp_body) + (state_statement) + (transition_statement) + (handler_body) + (consequence_body) + (global_single) ] @indent [ "}" - "]" - ")" ] @outdent diff --git a/runtime/queries/slint/injections.scm b/runtime/queries/slint/injections.scm new file mode 100644 index 000000000..321c90add --- /dev/null +++ b/runtime/queries/slint/injections.scm @@ -0,0 +1,2 @@ +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/runtime/queries/slint/locals.scm b/runtime/queries/slint/locals.scm index feba5ebb0..a115f0c69 100644 --- a/runtime/queries/slint/locals.scm +++ b/runtime/queries/slint/locals.scm @@ -1,3 +1,3 @@ ; locals.scm -(component_definition) @local.scope +(component_item) @local.scope