Explorar o código

Update GDScript syntax highlighter

Danil Alexeev hai 8 meses
pai
achega
b646c65bed
Modificáronse 1 ficheiros con 51 adicións e 23 borrados
  1. 51 23
      _extensions/gdscript.py

+ 51 - 23
_extensions/gdscript.py

@@ -80,7 +80,9 @@ class GDScriptLexer(RegexLexer):
             (r"[]{}:(),;[]", Punctuation),
             (r"[]{}:(),;[]", Punctuation),
             (r"(\\)(\n)", Whitespace),
             (r"(\\)(\n)", Whitespace),
             (r"\\", Text),
             (r"\\", Text),
-            (r"(in|and|or|not)\b", Operator.Word),
+            # modules/gdscript/gdscript.cpp - GDScriptLanguage::get_reserved_words()
+            # Operators.
+            (r"(and|as|in|is|not|or)\b", Operator.Word),
             (
             (
                 r"!=|==|<<|>>|&&|\+=|-=|\*=|/=|%=|&=|\|=|\|\||[-~+/*%=<>&^.!|$]",
                 r"!=|==|<<|>>|&&|\+=|-=|\*=|/=|%=|&=|\|=|\|\||[-~+/*%=<>&^.!|$]",
                 Operator,
                 Operator,
@@ -138,26 +140,28 @@ class GDScriptLexer(RegexLexer):
             (
             (
                 words(
                 words(
                     (
                     (
-                        "and",
-                        "await",
-                        "in",
-                        "get",
-                        "set",
-                        "not",
-                        "or",
-                        "as",
-                        "breakpoint",
+                        # modules/gdscript/gdscript.cpp - GDScriptLanguage::get_reserved_words()
+                        # Declarations.
                         "class",
                         "class",
                         "class_name",
                         "class_name",
+                        "const",
+                        "enum",
                         "extends",
                         "extends",
-                        "is",
                         "func",
                         "func",
+                        "namespace", # Reserved for potential future use.
                         "signal",
                         "signal",
-                        "const",
-                        "enum",
                         "static",
                         "static",
+                        "trait", # Reserved for potential future use.
                         "var",
                         "var",
+                        # Other keywords.
+                        "await",
+                        "breakpoint",
+                        "self",
                         "super",
                         "super",
+                        "yield", # Reserved for potential future use.
+                        # Not really keywords, but used in property syntax.
+                        "set",
+                        "get",
                     ),
                     ),
                     suffix=r"\b",
                     suffix=r"\b",
                 ),
                 ),
@@ -168,12 +172,14 @@ class GDScriptLexer(RegexLexer):
             (
             (
                 words(
                 words(
                     (
                     (
+                        # modules/gdscript/gdscript.cpp - GDScriptLanguage::get_reserved_words()
+                        # Control flow.
                         "break",
                         "break",
                         "continue",
                         "continue",
                         "elif",
                         "elif",
                         "else",
                         "else",
-                        "if",
                         "for",
                         "for",
+                        "if",
                         "match",
                         "match",
                         "pass",
                         "pass",
                         "return",
                         "return",
@@ -196,9 +202,13 @@ class GDScriptLexer(RegexLexer):
                         "absf",
                         "absf",
                         "absi",
                         "absi",
                         "acos",
                         "acos",
+                        "acosh",
+                        "angle_difference",
                         "asin",
                         "asin",
+                        "asinh",
                         "atan",
                         "atan",
                         "atan2",
                         "atan2",
+                        "atanh",
                         "bezier_derivative",
                         "bezier_derivative",
                         "bezier_interpolate",
                         "bezier_interpolate",
                         "bytes_to_var",
                         "bytes_to_var",
@@ -234,6 +244,7 @@ class GDScriptLexer(RegexLexer):
                         "is_instance_id_valid",
                         "is_instance_id_valid",
                         "is_instance_valid",
                         "is_instance_valid",
                         "is_nan",
                         "is_nan",
+                        "is_same",
                         "is_zero_approx",
                         "is_zero_approx",
                         "lerp",
                         "lerp",
                         "lerp_angle",
                         "lerp_angle",
@@ -271,6 +282,7 @@ class GDScriptLexer(RegexLexer):
                         "remap",
                         "remap",
                         "rid_allocate_id",
                         "rid_allocate_id",
                         "rid_from_int64",
                         "rid_from_int64",
+                        "rotate_toward",
                         "round",
                         "round",
                         "roundf",
                         "roundf",
                         "roundi",
                         "roundi",
@@ -290,6 +302,8 @@ class GDScriptLexer(RegexLexer):
                         "str_to_var",
                         "str_to_var",
                         "tan",
                         "tan",
                         "tanh",
                         "tanh",
+                        "type_convert",
+                        "type_string",
                         "typeof",
                         "typeof",
                         "var_to_bytes",
                         "var_to_bytes",
                         "var_to_bytes_with_objects",
                         "var_to_bytes_with_objects",
@@ -307,13 +321,13 @@ class GDScriptLexer(RegexLexer):
                         "dict_to_inst",
                         "dict_to_inst",
                         "get_stack",
                         "get_stack",
                         "inst_to_dict",
                         "inst_to_dict",
+                        "is_instance_of",
                         "len",
                         "len",
                         "load",
                         "load",
                         "preload",
                         "preload",
                         "print_debug",
                         "print_debug",
                         "print_stack",
                         "print_stack",
                         "range",
                         "range",
-                        "str",
                         "type_exists",
                         "type_exists",
                     ),
                     ),
                     prefix=r"(?<!\.)",
                     prefix=r"(?<!\.)",
@@ -321,16 +335,18 @@ class GDScriptLexer(RegexLexer):
                 ),
                 ),
                 Name.Builtin,
                 Name.Builtin,
             ),
             ),
-            (r"((?<!\.)(self|super|false|true)|(PI|TAU|NAN|INF)" r")\b", Name.Builtin.Pseudo),
+            # modules/gdscript/gdscript.cpp - GDScriptLanguage::get_reserved_words()
+            # Special values. Constants.
+            (r"((?<!\.)(false|null|true)|(INF|NAN|PI|TAU))\b", Name.Builtin.Pseudo),
             (
             (
                 words(
                 words(
                     (
                     (
+                        # core/variant/variant.cpp - Variant::get_type_name()
+                        # `Nil` is excluded because it is not allowed in GDScript.
                         "bool",
                         "bool",
                         "int",
                         "int",
                         "float",
                         "float",
                         "String",
                         "String",
-                        "StringName",
-                        "NodePath",
                         "Vector2",
                         "Vector2",
                         "Vector2i",
                         "Vector2i",
                         "Rect2",
                         "Rect2",
@@ -338,16 +354,21 @@ class GDScriptLexer(RegexLexer):
                         "Transform2D",
                         "Transform2D",
                         "Vector3",
                         "Vector3",
                         "Vector3i",
                         "Vector3i",
-                        "AABB",
-                        "Plane",
-                        "Quaternion",
                         "Vector4",
                         "Vector4",
                         "Vector4i",
                         "Vector4i",
+                        "Plane",
+                        "AABB",
+                        "Quaternion",
                         "Basis",
                         "Basis",
                         "Transform3D",
                         "Transform3D",
+                        "Projection",
                         "Color",
                         "Color",
                         "RID",
                         "RID",
                         "Object",
                         "Object",
+                        "Callable",
+                        "Signal",
+                        "StringName",
+                        "NodePath",
                         "Dictionary",
                         "Dictionary",
                         "Array",
                         "Array",
                         "PackedByteArray",
                         "PackedByteArray",
@@ -358,9 +379,10 @@ class GDScriptLexer(RegexLexer):
                         "PackedStringArray",
                         "PackedStringArray",
                         "PackedVector2Array",
                         "PackedVector2Array",
                         "PackedVector3Array",
                         "PackedVector3Array",
-                        "PackedVector4Array",
                         "PackedColorArray",
                         "PackedColorArray",
-                        "null",
+                        "PackedVector4Array",
+                        # The following are also considered types in GDScript.
+                        "Variant",
                         "void",
                         "void",
                     ),
                     ),
                     prefix=r"(?<!\.)",
                     prefix=r"(?<!\.)",
@@ -373,9 +395,11 @@ class GDScriptLexer(RegexLexer):
             (
             (
                 words(
                 words(
                     (
                     (
+                        # modules/gdscript/doc_classes/@GDScript.xml
                         "@export",
                         "@export",
                         "@export_category",
                         "@export_category",
                         "@export_color_no_alpha",
                         "@export_color_no_alpha",
+                        "@export_custom",
                         "@export_dir",
                         "@export_dir",
                         "@export_enum",
                         "@export_enum",
                         "@export_exp_easing",
                         "@export_exp_easing",
@@ -387,6 +411,7 @@ class GDScriptLexer(RegexLexer):
                         "@export_flags_3d_navigation",
                         "@export_flags_3d_navigation",
                         "@export_flags_3d_physics",
                         "@export_flags_3d_physics",
                         "@export_flags_3d_render",
                         "@export_flags_3d_render",
+                        "@export_flags_avoidance",
                         "@export_global_dir",
                         "@export_global_dir",
                         "@export_global_file",
                         "@export_global_file",
                         "@export_group",
                         "@export_group",
@@ -394,10 +419,13 @@ class GDScriptLexer(RegexLexer):
                         "@export_node_path",
                         "@export_node_path",
                         "@export_placeholder",
                         "@export_placeholder",
                         "@export_range",
                         "@export_range",
+                        "@export_storage",
                         "@export_subgroup",
                         "@export_subgroup",
+                        "@export_tool_button",
                         "@icon",
                         "@icon",
                         "@onready",
                         "@onready",
                         "@rpc",
                         "@rpc",
+                        "@static_unload",
                         "@tool",
                         "@tool",
                         "@warning_ignore",
                         "@warning_ignore",
                     ),
                     ),