From e7a2033f2a67dc99ce8455797f10764b1ffa6b28 Mon Sep 17 00:00:00 2001 From: Teddytrombone Date: Fri, 12 Dec 2025 11:53:43 +0100 Subject: [PATCH] feat(typoscript): updated grammar --- lua/nvim-treesitter/parsers.lua | 2 +- runtime/queries/typoscript/folds.scm | 9 ++- runtime/queries/typoscript/highlights.scm | 82 ++++++++++++++++++++--- runtime/queries/typoscript/indents.scm | 12 +++- runtime/queries/typoscript/injections.scm | 9 +++ 5 files changed, 101 insertions(+), 13 deletions(-) diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index 0f9fc5057..49db353da 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -2422,7 +2422,7 @@ return { }, typoscript = { install_info = { - revision = '5d8fde870b0ded1f429ba5bb249a9d9f8589ff5f', + revision = 'e59069a4cc08b2dacccd40827fe971ca3c6821b7', url = 'https://github.com/Teddytrombone/tree-sitter-typoscript', }, maintainers = { '@Teddytrombone' }, diff --git a/runtime/queries/typoscript/folds.scm b/runtime/queries/typoscript/folds.scm index fd7d23999..81f5ff785 100644 --- a/runtime/queries/typoscript/folds.scm +++ b/runtime/queries/typoscript/folds.scm @@ -1 +1,8 @@ -(block) @fold +[ + (block) + (condition_block) + (import_legacy)+ + (import)+ + (comment)+ + (multiline_value) +] @fold diff --git a/runtime/queries/typoscript/highlights.scm b/runtime/queries/typoscript/highlights.scm index 63327f178..a446d7577 100644 --- a/runtime/queries/typoscript/highlights.scm +++ b/runtime/queries/typoscript/highlights.scm @@ -1,10 +1,34 @@ (identifier) @variable.member +(symfony_variable) @variable + (constant) @constant -(modifier_function) @function +(symfony_function) @function.call -(modifier_predefined) @function.builtin +(symfony_method) @function.method.call + +[ + (modifier_function) + (symfony_function) +] @function + +[ + (modifier_predefined) + (symfony_predefined_function) +] @function.builtin + +[ + (symfony_function_parameter) + (symfony_method_parameter) + (modifier_parameter) +] @variable.parameter + +(symfony_function_parameter + (symfony_variable) @variable.parameter) + +(symfony_method_parameter + (symfony_variable) @variable.parameter) [ (condition) @@ -12,13 +36,27 @@ (condition_else) ] @keyword.conditional -(cobject) @type.builtin +((condition + "[" @keyword.conditional) + (#set! "priority" 110)) + +((condition + "]" @keyword.conditional) + (#set! "priority" 110)) [ "@import" "INCLUDE_TYPOSCRIPT" ] @keyword.import +(condition_attribute) @tag.attribute + +(cobject) @type.builtin + +(symfony_built_in_variable) @variable.builtin + +(symfony_property) @variable.member + [ (comment) (single_line_comment) @@ -26,22 +64,48 @@ [ (string) - (multiline_value) + (multiline_value_content) + (symfony_string) ] @string +(reference_line + "=<" @operator) + +(deletion_line + ">" @operator) + +(copy_line + "<" @operator) + +(modification_line + ":=" @operator) + [ "=" - ">" - "<" - ":=" - "=<" - (condition_bool) + "." + "?." + (symfony_condition_operator) + (condition_bool_legacy) + (constant_null_coalescing) ] @operator +(symfony_ternary_operator) @keyword.conditional.ternary + +((symfony_condition_operator) @keyword.operator + (#match? @keyword.operator "and|or|xor|not|not in|in|contains|starts with|ends with|matches")) + "," @punctuation.delimiter [ "(" ")" + "[" + "]" (block_punctuation) ] @punctuation.bracket + +(symfony_number) @number + +(symfony_boolean) @boolean + +(symfony_null) @constant.builtin diff --git a/runtime/queries/typoscript/indents.scm b/runtime/queries/typoscript/indents.scm index 4f5fb4797..ff5ddb603 100644 --- a/runtime/queries/typoscript/indents.scm +++ b/runtime/queries/typoscript/indents.scm @@ -1,5 +1,13 @@ (block) @indent.begin -"}" @indent.branch @indent.end +"}" @indent.end -(comment) @indent.ignore +[ + "{" + "}" +] @indent.branch + +[ + (comment) + (multiline_value) +] @indent.ignore diff --git a/runtime/queries/typoscript/injections.scm b/runtime/queries/typoscript/injections.scm index 2f0e58eb6..11a7cc6a0 100644 --- a/runtime/queries/typoscript/injections.scm +++ b/runtime/queries/typoscript/injections.scm @@ -1,2 +1,11 @@ +((multiline_line + (identifier) @_id + . + (multiline_value + (multiline_value_content) @injection.content)) + (#match? @_id "_CSS_DEFAULT_STYLE$") + (#set! injection.language "css") + (#set! injection.overlay "constant")) + ((comment) @injection.content (#set! injection.language "comment"))