From bc96e1ef1163b4e2a11d8ba87c2d623f7778408a Mon Sep 17 00:00:00 2001 From: Fish Date: Wed, 29 Oct 2025 17:10:20 -0700 Subject: [PATCH 1/7] Update GDScript highlighting for Godot 4 --- runtime/syntax/gdscript.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/runtime/syntax/gdscript.yaml b/runtime/syntax/gdscript.yaml index 0498ab548f..ddcbffe9f9 100644 --- a/runtime/syntax/gdscript.yaml +++ b/runtime/syntax/gdscript.yaml @@ -16,10 +16,12 @@ rules: # Definitions - identifier: "func [a-zA-Z_0-9]+" # Keywords - - statement: "\\b(and|as|assert|break|breakpoint|class|const|continue|elif|else|enum|export|extends|for|func|if|in|is|map|master|mastersync|match|not|onready|or|pass|remote|remotesync|return|self|setget|slave|slavesync|signal|sync|tool|var|while|yield)\\b" + - statement: "\\b(and|as|assert|await|break|breakpoint|class|const|continue|elif|else|enum|extends|for|func|get|if|in|is|match|not|or|pass|return|self|set|signal|var|while)\\b" + # Annotations + - statement.meta: "@[A-Za-z_][A-Za-z0-9_]*\\b" # Operators - - statement: "[.:;,+*|=!\\%@]|<|>|/|-|&" + - statement: "[.:;,+*|=!\\%]|<|>|/|-|&" # Parentheses - statement: "[(){}]|\\[|\\]" From f8c624f9b25b8a13623728d9308f99117e0a6e11 Mon Sep 17 00:00:00 2001 From: Fish Date: Fri, 31 Oct 2025 20:39:24 -0700 Subject: [PATCH 2/7] Make godot syntax highlighting better --- runtime/syntax/gdscript.yaml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/runtime/syntax/gdscript.yaml b/runtime/syntax/gdscript.yaml index ddcbffe9f9..79306d98fc 100644 --- a/runtime/syntax/gdscript.yaml +++ b/runtime/syntax/gdscript.yaml @@ -8,17 +8,18 @@ rules: - constant: "\\b(INF|NAN|PI|TAU)\\b" - constant.bool: "\\b(null|true|false)\\b" # Built-in functions - - identifier: "\\b(abs|acos|asin|atan|atan2|ceil|clamp|convert|cos|cosh|db2linear|decimals|deg2rad|ease|exp|float|floor|fmod|fposmod|hash|int|isinf|isnan|lerp|linear2db|load|log|max|min|nearest_po2|pow|preload|print|printerr|printraw|prints|printt|rad2deg|rand_range|rand_seed|randomize|randi|randf|range|round|seed|sin|slerp|sqrt|str|str2var|tan|typeof|var2str|weakref)\\b" - # Built-in node names - - identifier: "\\b(AnimationPlayer|AnimationTreePlayer|Button|Control|Engine|HTTPClient|HTTPRequest|Input|InputEvent|MainLoop|Node|Node2D|OS|SceneTree|Spatial|StreamPeer|PacketPeer|PacketPeerUDP|Timer|Tween)\\b" + - identifier: "\\b(abs|acos|asin|atan|atan2|bool|ceil|clamp|convert|cos|cosh|db2linear|decimals|deg2rad|ease|exp|float|floor|fmod|fposmod|hash|int|isinf|isnan|lerp|linear2db|load|log|max|min|nearest_po2|pow|preload|print|printerr|printraw|prints|printt|rad2deg|rand_range|rand_seed|randomize|randi|randf|range|round|seed|sin|slerp|sqrt|str|str2var|tan|typeof|var2str|weakref)\\b" # Types - - type: "\\b(AABB|Array|Basis|Color|Dictionary|NodePath|Object|Plane|PoolByteArray|PoolColorArray|PoolIntArray|PoolRealArray|PoolVector2Array|PoolVector3Array|Quat|Rect2|RID|String|Transform|Transform2D|Vector2|Vector3)\\b" + - type: "\\b(AABB|Array|Basis|Callable|Color|Dictionary|NodePath|Object|PackedByteArray|PackedColorArray|PackedFloat32Array|PackedFloat64Array|PackedInt32Array|PackedInt64Array|PackedVector2Array|PackedVector3Array|PackedVector4Array|Plane|PoolByteArray|PoolColorArray|PoolIntArray|PoolRealArray|PoolVector2Array|PoolVector3Array|Projection|Quat|Quaternion|Rect2|Rect2i|RID|Signal|String|StringName|Transform|Transform2D|Transform3D|Variant|Vector2|Vector2i|Vector3|Vector3i|Vector4|Vector4i)\\b" + - constant: "\\b([A-Z][A-Z0-9_]*)\\b" + # Built-in node names + - identifier: "\\b([A-Z][a-zA-Z0-9_]*)\\b" # Definitions - identifier: "func [a-zA-Z_0-9]+" - # Keywords - - statement: "\\b(and|as|assert|await|break|breakpoint|class|const|continue|elif|else|enum|extends|for|func|get|if|in|is|match|not|or|pass|return|self|set|signal|var|while)\\b" # Annotations - statement.meta: "@[A-Za-z_][A-Za-z0-9_]*\\b" + # Keywords + - statement: "\\b(and|as|assert|await|break|breakpoint|class|class_name|const|continue|elif|else|enum|export|extends|for|func|get|if|in|is|map|master|mastersync|match|not|onready|or|pass|remote|remotesync|return|self|set|setget|slave|slavesync|signal|sync|tool|var|while|yield)\\b" # Operators - statement: "[.:;,+*|=!\\%]|<|>|/|-|&" From 36578f910b8957e78e406df45f57a70f09e8eb93 Mon Sep 17 00:00:00 2001 From: fish Date: Sat, 1 Nov 2025 15:43:25 -0700 Subject: [PATCH 3/7] Add more keywords, make function highlighting more reliable --- runtime/syntax/gdscript.yaml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/runtime/syntax/gdscript.yaml b/runtime/syntax/gdscript.yaml index 79306d98fc..97a8a7178c 100644 --- a/runtime/syntax/gdscript.yaml +++ b/runtime/syntax/gdscript.yaml @@ -7,19 +7,22 @@ rules: # Built-in constants - constant: "\\b(INF|NAN|PI|TAU)\\b" - constant.bool: "\\b(null|true|false)\\b" + # Function calls + - identifier: "[a-zA-Z_0-9]+\\(" # Built-in functions - identifier: "\\b(abs|acos|asin|atan|atan2|bool|ceil|clamp|convert|cos|cosh|db2linear|decimals|deg2rad|ease|exp|float|floor|fmod|fposmod|hash|int|isinf|isnan|lerp|linear2db|load|log|max|min|nearest_po2|pow|preload|print|printerr|printraw|prints|printt|rad2deg|rand_range|rand_seed|randomize|randi|randf|range|round|seed|sin|slerp|sqrt|str|str2var|tan|typeof|var2str|weakref)\\b" # Types - type: "\\b(AABB|Array|Basis|Callable|Color|Dictionary|NodePath|Object|PackedByteArray|PackedColorArray|PackedFloat32Array|PackedFloat64Array|PackedInt32Array|PackedInt64Array|PackedVector2Array|PackedVector3Array|PackedVector4Array|Plane|PoolByteArray|PoolColorArray|PoolIntArray|PoolRealArray|PoolVector2Array|PoolVector3Array|Projection|Quat|Quaternion|Rect2|Rect2i|RID|Signal|String|StringName|Transform|Transform2D|Transform3D|Variant|Vector2|Vector2i|Vector3|Vector3i|Vector4|Vector4i)\\b" - - constant: "\\b([A-Z][A-Z0-9_]*)\\b" - # Built-in node names + # Class names (PascalCase) - identifier: "\\b([A-Z][a-zA-Z0-9_]*)\\b" + # Constant names (CONSTANT_CASE) + - constant: "\\b([A-Z][A-Z0-9_]*)\\b" # Definitions - - identifier: "func [a-zA-Z_0-9]+" + - identifier: "func\\s+[a-zA-Z_0-9]+" # Annotations - statement.meta: "@[A-Za-z_][A-Za-z0-9_]*\\b" # Keywords - - statement: "\\b(and|as|assert|await|break|breakpoint|class|class_name|const|continue|elif|else|enum|export|extends|for|func|get|if|in|is|map|master|mastersync|match|not|onready|or|pass|remote|remotesync|return|self|set|setget|slave|slavesync|signal|sync|tool|var|while|yield)\\b" + - statement: "\\b(and|as|assert|await|break|breakpoint|class|class_name|const|continue|elif|else|enum|export|extends|for|func|get|if|in|is|map|master|mastersync|match|not|onready|or|pass|remote|remotesync|return|self|set|setget|slave|slavesync|signal|static|super|sync|tool|var|when|while|yield)\\b" # Operators - statement: "[.:;,+*|=!\\%]|<|>|/|-|&" @@ -29,7 +32,7 @@ rules: # Numbers - constant: "\\b[0-9]+\\b" - - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b|'.'" + - constant.number: "-?\\b([0-9]?\\.[0-9]+|[0-9]+|0x[0-9a-fA-F]*)(e-?[0-9]+)?\\b" - comment: start: "\"\"\"" From e2b4775b0d5f62dfa459e43dd423b36c6b680385 Mon Sep 17 00:00:00 2001 From: fish Date: Sun, 2 Nov 2025 16:36:22 -0800 Subject: [PATCH 4/7] Add void, triple quoted strings --- runtime/syntax/gdscript.yaml | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/runtime/syntax/gdscript.yaml b/runtime/syntax/gdscript.yaml index 97a8a7178c..050c6feb49 100644 --- a/runtime/syntax/gdscript.yaml +++ b/runtime/syntax/gdscript.yaml @@ -12,7 +12,7 @@ rules: # Built-in functions - identifier: "\\b(abs|acos|asin|atan|atan2|bool|ceil|clamp|convert|cos|cosh|db2linear|decimals|deg2rad|ease|exp|float|floor|fmod|fposmod|hash|int|isinf|isnan|lerp|linear2db|load|log|max|min|nearest_po2|pow|preload|print|printerr|printraw|prints|printt|rad2deg|rand_range|rand_seed|randomize|randi|randf|range|round|seed|sin|slerp|sqrt|str|str2var|tan|typeof|var2str|weakref)\\b" # Types - - type: "\\b(AABB|Array|Basis|Callable|Color|Dictionary|NodePath|Object|PackedByteArray|PackedColorArray|PackedFloat32Array|PackedFloat64Array|PackedInt32Array|PackedInt64Array|PackedVector2Array|PackedVector3Array|PackedVector4Array|Plane|PoolByteArray|PoolColorArray|PoolIntArray|PoolRealArray|PoolVector2Array|PoolVector3Array|Projection|Quat|Quaternion|Rect2|Rect2i|RID|Signal|String|StringName|Transform|Transform2D|Transform3D|Variant|Vector2|Vector2i|Vector3|Vector3i|Vector4|Vector4i)\\b" + - type: "\\b(AABB|Array|Basis|Callable|Color|Dictionary|NodePath|Object|PackedByteArray|PackedColorArray|PackedFloat32Array|PackedFloat64Array|PackedInt32Array|PackedInt64Array|PackedVector2Array|PackedVector3Array|PackedVector4Array|Plane|PoolByteArray|PoolColorArray|PoolIntArray|PoolRealArray|PoolVector2Array|PoolVector3Array|Projection|Quat|Quaternion|Rect2|Rect2i|RID|Signal|String|StringName|Transform|Transform2D|Transform3D|Variant|Vector2|Vector2i|Vector3|Vector3i|Vector4|Vector4i|void)\\b" # Class names (PascalCase) - identifier: "\\b([A-Z][a-zA-Z0-9_]*)\\b" # Constant names (CONSTANT_CASE) @@ -31,21 +31,8 @@ rules: - statement: "[(){}]|\\[|\\]" # Numbers - - constant: "\\b[0-9]+\\b" - constant.number: "-?\\b([0-9]?\\.[0-9]+|[0-9]+|0x[0-9a-fA-F]*)(e-?[0-9]+)?\\b" - - comment: - start: "\"\"\"" - end: "\"\"\"" - rules: - - todo: "(TODO|XXX|FIXME):?" - - - comment: - start: "'''" - end: "'''" - rules: - - todo: "(TODO|XXX|FIXME):?" - - constant.string: start: "\"" end: "\"" @@ -60,6 +47,18 @@ rules: rules: - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + - constant.string: + start: "\"\"\"" + end: "\"\"\"" + rules: + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - constant.string: + start: "\'\'\'" + end: "\'\'\'" + rules: + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + - comment: start: "#" end: "$" From de14ff47cd2be5e1f974621c269e55296c3dc00b Mon Sep 17 00:00:00 2001 From: fish Date: Mon, 3 Nov 2025 01:34:04 -0800 Subject: [PATCH 5/7] Fix triple quoted strings --- runtime/syntax/gdscript.yaml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/runtime/syntax/gdscript.yaml b/runtime/syntax/gdscript.yaml index 050c6feb49..c34e1cac95 100644 --- a/runtime/syntax/gdscript.yaml +++ b/runtime/syntax/gdscript.yaml @@ -34,28 +34,30 @@ rules: - constant.number: "-?\\b([0-9]?\\.[0-9]+|[0-9]+|0x[0-9a-fA-F]*)(e-?[0-9]+)?\\b" - constant.string: - start: "\"" - end: "\"" + start: "\"\"\"" + end: "\"\"\"" skip: "\\\\." rules: - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" - constant.string: - start: "'" - end: "'" + start: "\'\'\'" + end: "\'\'\'" skip: "\\\\." rules: - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" - constant.string: - start: "\"\"\"" - end: "\"\"\"" + start: "\"" + end: "\"" + skip: "\\\\." rules: - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" - constant.string: - start: "\'\'\'" - end: "\'\'\'" + start: "'" + end: "'" + skip: "\\\\." rules: - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" From f2457235fca47d93b67cef2706cd4aa8235dc542 Mon Sep 17 00:00:00 2001 From: fish Date: Sat, 8 Nov 2025 15:25:31 -0800 Subject: [PATCH 6/7] Fix function highlighting --- runtime/syntax/gdscript.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/syntax/gdscript.yaml b/runtime/syntax/gdscript.yaml index c34e1cac95..037663abfc 100644 --- a/runtime/syntax/gdscript.yaml +++ b/runtime/syntax/gdscript.yaml @@ -8,7 +8,7 @@ rules: - constant: "\\b(INF|NAN|PI|TAU)\\b" - constant.bool: "\\b(null|true|false)\\b" # Function calls - - identifier: "[a-zA-Z_0-9]+\\(" + - identifier: "\\b[a-zA-Z_][a-zA-Z_0-9]+\\(" # Built-in functions - identifier: "\\b(abs|acos|asin|atan|atan2|bool|ceil|clamp|convert|cos|cosh|db2linear|decimals|deg2rad|ease|exp|float|floor|fmod|fposmod|hash|int|isinf|isnan|lerp|linear2db|load|log|max|min|nearest_po2|pow|preload|print|printerr|printraw|prints|printt|rad2deg|rand_range|rand_seed|randomize|randi|randf|range|round|seed|sin|slerp|sqrt|str|str2var|tan|typeof|var2str|weakref)\\b" # Types From 5cbb1b6d33662b5ef5771256424c946a186dd1b2 Mon Sep 17 00:00:00 2001 From: fish Date: Sun, 9 Nov 2025 18:55:44 -0800 Subject: [PATCH 7/7] Update number, function definition highlighting --- runtime/syntax/gdscript.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/syntax/gdscript.yaml b/runtime/syntax/gdscript.yaml index 037663abfc..59575538e6 100644 --- a/runtime/syntax/gdscript.yaml +++ b/runtime/syntax/gdscript.yaml @@ -18,7 +18,7 @@ rules: # Constant names (CONSTANT_CASE) - constant: "\\b([A-Z][A-Z0-9_]*)\\b" # Definitions - - identifier: "func\\s+[a-zA-Z_0-9]+" + - identifier: "func\\s+[a-zA-Z_][a-zA-Z_0-9]*" # Annotations - statement.meta: "@[A-Za-z_][A-Za-z0-9_]*\\b" # Keywords @@ -31,7 +31,7 @@ rules: - statement: "[(){}]|\\[|\\]" # Numbers - - constant.number: "-?\\b([0-9]?\\.[0-9]+|[0-9]+|0x[0-9a-fA-F]*)(e-?[0-9]+)?\\b" + - constant.number: "-?\\b(?:0[xX](?:[0-9a-fA-F]_?)+|0[bB](?:[01]_?)+|(?:(?:[0-9]_?)*\\.(?:[0-9]_?)+)(?:[eE]-?(?:[0-9]_?)+)?|(?:[0-9]_?)+\\.?(?:[eE]-?(?:[0-9]_?)+)?)\\b" - constant.string: start: "\"\"\""