From e6597bc9927c73800d31d4a45dc695a4abe77ec8 Mon Sep 17 00:00:00 2001 From: Erasin Wang Date: Mon, 6 Mar 2023 02:41:18 +0800 Subject: [PATCH] Update queries for godot4 (#6186) --- languages.toml | 2 +- runtime/queries/gdscript/highlights.scm | 98 +++++++++++++------ runtime/queries/gdscript/indents.scm | 2 +- runtime/queries/godot-resource/injections.scm | 16 +++ 4 files changed, 84 insertions(+), 34 deletions(-) diff --git a/languages.toml b/languages.toml index e9a77b5a4..c34135244 100644 --- a/languages.toml +++ b/languages.toml @@ -1463,7 +1463,7 @@ indent = { tab-width = 4, unit = "\t" } [[grammar]] name = "gdscript" -source = { git = "https://github.com/PrestonKnopp/tree-sitter-gdscript", rev = "a56a6fcec3fb63ec3324bf9373aae7298861eb30" } +source = { git = "https://github.com/PrestonKnopp/tree-sitter-gdscript", rev = "a4b57cc3bcbfc24550e858159647e9238e7ad1ac" } [[language]] name = "godot-resource" diff --git a/runtime/queries/gdscript/highlights.scm b/runtime/queries/gdscript/highlights.scm index f36f4e35c..88f2a1875 100644 --- a/runtime/queries/gdscript/highlights.scm +++ b/runtime/queries/gdscript/highlights.scm @@ -1,7 +1,8 @@ ; Identifier naming conventions -((identifier) @constant - (#match? @constant "^[A-Z][A-Z_]*$")) +( + (identifier) @constant + (#match? @constant "^[A-Z][A-Z\\d_]+$")) ; class (class_name_statement (name) @type) @@ -11,32 +12,35 @@ ; Function calls (attribute_call (identifier) @function) - (base_call (identifier) @function) - (call (identifier) @function) ; Function definitions (function_definition (name) @function) - (constructor_definition "_init" @function) -;; Literals -(integer) @constant.numeric.integer -(float) @constant.numeric.float -(comment) @comment -(string) @string -(escape_sequence) @constant.character.escape -(identifier) @variable -(type) @type ;; Literals +(comment) @comment +(string) @string + +(type) @type +(expression_statement (array (identifier) @type)) +(binary_operator (identifier) @type) + +(variable_statement (identifier) @variable) +(get_node) @label + +(const_statement (name) @constant) +(integer) @constant.numeric.integer +(float) @constant.numeric.float +(escape_sequence) @constant.character.escape [ (true) (false) - (null) -] @constant.builtin +] @constant.builtin.boolean +(null) @constant.builtin [ "+" @@ -62,37 +66,67 @@ "~" "<<" ">>" - "and" - "or" - "not" ] @operator +(annotation (identifier) @keyword.storage.modifier) + [ - (static_keyword) - (remote_keyword) - (tool_statement) - "var" - "func" - "setget" - "in" - "is" - "as" "if" "else" "elif" +] @keyword.control.conditional + +[ "while" "for" +] @keyword.control.repeat + +[ "return" + "pass" "break" "continue" - "pass" +] @keyword.control.return + +[ + "func" +] @keyword.control.function + +[ + "export" +] @keyword.control.import + +[ + "in" + "is" + "as" "match" + "and" + "or" + "not" +] @keyword.operator + +[ + "var" "class" "class_name" "enum" - "signal" - "onready" - "export" - "extends" +] @keyword.storage.type + + +[ + (remote_keyword) + (static_keyword) "const" + "signal" + "@" +] @keyword.storage.modifier + +[ + "setget" + "onready" + "extends" + "set" + "get" ] @keyword + diff --git a/runtime/queries/gdscript/indents.scm b/runtime/queries/gdscript/indents.scm index 1ab41a44d..c969eb7cf 100644 --- a/runtime/queries/gdscript/indents.scm +++ b/runtime/queries/gdscript/indents.scm @@ -12,6 +12,7 @@ (dictionary (_)) (array (_)) + (setget) ] @indent [ @@ -25,7 +26,6 @@ (class_definition) ] @extend - [ (return_statement) (break_statement) diff --git a/runtime/queries/godot-resource/injections.scm b/runtime/queries/godot-resource/injections.scm index 321c90add..7929d63cd 100644 --- a/runtime/queries/godot-resource/injections.scm +++ b/runtime/queries/godot-resource/injections.scm @@ -1,2 +1,18 @@ ((comment) @injection.content (#set! injection.language "comment")) + +; ((section) @injection.content +; (#set! injection.language "comment")) + +((section + (attribute + (identifier) @_type + (string) @_is_shader) + (property + (path) @_is_code + (string) @injection.content)) + (#match? @_type "type") + (#match? @_is_shader "Shader") + (#eq? @_is_code "code") + (#set! injection.language "glsl") +)