2
0
Эх сурвалжийг харах

Use different color for control flow keywords in GDScript syntax highlighting

This matches the Godot script editor's behavior.

Note that this does not apply to C# and shaders
(which currently use GLSL highlighting), as it would require copying
their respective highlighters to this repository and modifying them.
Hugo Locurcio 2 жил өмнө
parent
commit
5f4c6838fc

+ 17 - 4
_extensions/gdscript.py

@@ -85,6 +85,7 @@ class GDScriptLexer(RegexLexer):
                 Operator,
             ),
             include("keywords"),
+            include("control_flow_keywords"),
             (r"(func)((?:\s|\\\s)+)", bygroups(Keyword, Text), "funcname"),
             (r"(class)((?:\s|\\\s)+)", bygroups(Keyword, Text), "classname"),
             include("builtins"),
@@ -155,21 +156,33 @@ class GDScriptLexer(RegexLexer):
                         "enum",
                         "static",
                         "var",
+                        "super",
+                    ),
+                    suffix=r"\b",
+                ),
+                Keyword,
+            ),
+        ],
+        "control_flow_keywords": [
+            (
+                words(
+                    (
                         "break",
                         "continue",
-                        "if",
                         "elif",
                         "else",
+                        "if",
                         "for",
+                        "match",
                         "pass",
                         "return",
-                        "match",
                         "while",
-                        "super",
                     ),
                     suffix=r"\b",
                 ),
-                Keyword,
+                # Custom control flow class used to give control flow keywords a different color,
+                # like in the Godot editor.
+                Keyword.ControlFlow,
             ),
         ],
         "builtins": [

+ 6 - 0
_static/css/custom.css

@@ -95,6 +95,7 @@
     --highlight-comment-color: #408090;
     --highlight-keyword-color: #007020;
     --highlight-keyword2-color: #902000;
+    --highlight-control-flow-keyword-color: #902060;
     --highlight-number-color: #208050;
     --highlight-decorator-color: #4070a0;
     --highlight-type-color: #007020;
@@ -223,6 +224,7 @@
         --highlight-comment-color: rgba(204, 206, 211, 0.5);
         --highlight-keyword-color: #ff7085;
         --highlight-keyword2-color: #42ffc2;
+        --highlight-control-flow-keyword-color: #ff8ccc;
         --highlight-number-color: #a1ffe0;
         --highlight-decorator-color: #ffb373;
         --highlight-type-color: #8effda;
@@ -877,6 +879,10 @@ code,
     color: var(--highlight-keyword-color);
 }
 
+.highlight .k-ControlFlow /* Keyword.ControlFlow */ {
+    color: var(--highlight-control-flow-keyword-color);
+}
+
 .highlight .ch /* Comment.Hashbang */,
 .highlight .cp /* Comment.Preproc */ {
     color: var(--highlight-keyword2-color);