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.
This commit is contained in:
Hugo Locurcio
2023-07-27 11:39:06 +02:00
parent 0260c0bc9f
commit 1dd38c2e4a
2 changed files with 29 additions and 10 deletions
+23 -10
View File
@@ -85,6 +85,7 @@ class GDScriptLexer(RegexLexer):
Operator, Operator,
), ),
include("keywords"), include("keywords"),
include("control_flow_keywords"),
(r"(func)((?:\s|\\\s)+)", bygroups(Keyword, Text), "funcname"), (r"(func)((?:\s|\\\s)+)", bygroups(Keyword, Text), "funcname"),
(r"(class)((?:\s|\\\s)+)", bygroups(Keyword, Text), "classname"), (r"(class)((?:\s|\\\s)+)", bygroups(Keyword, Text), "classname"),
include("builtins"), include("builtins"),
@@ -155,16 +156,6 @@ class GDScriptLexer(RegexLexer):
"enum", "enum",
"static", "static",
"var", "var",
"break",
"continue",
"if",
"elif",
"else",
"for",
"pass",
"return",
"match",
"while",
"super", "super",
), ),
suffix=r"\b", suffix=r"\b",
@@ -172,6 +163,28 @@ class GDScriptLexer(RegexLexer):
Keyword, Keyword,
), ),
], ],
"control_flow_keywords": [
(
words(
(
"break",
"continue",
"elif",
"else",
"if",
"for",
"match",
"pass",
"return",
"while",
),
suffix=r"\b",
),
# Custom control flow class used to give control flow keywords a different color,
# like in the Godot editor.
Keyword.ControlFlow,
),
],
"builtins": [ "builtins": [
( (
words( words(
+6
View File
@@ -95,6 +95,7 @@
--highlight-comment-color: #408090; --highlight-comment-color: #408090;
--highlight-keyword-color: #007020; --highlight-keyword-color: #007020;
--highlight-keyword2-color: #902000; --highlight-keyword2-color: #902000;
--highlight-control-flow-keyword-color: #902060;
--highlight-number-color: #208050; --highlight-number-color: #208050;
--highlight-decorator-color: #4070a0; --highlight-decorator-color: #4070a0;
--highlight-type-color: #007020; --highlight-type-color: #007020;
@@ -223,6 +224,7 @@
--highlight-comment-color: rgba(204, 206, 211, 0.5); --highlight-comment-color: rgba(204, 206, 211, 0.5);
--highlight-keyword-color: #ff7085; --highlight-keyword-color: #ff7085;
--highlight-keyword2-color: #42ffc2; --highlight-keyword2-color: #42ffc2;
--highlight-control-flow-keyword-color: #ff8ccc;
--highlight-number-color: #a1ffe0; --highlight-number-color: #a1ffe0;
--highlight-decorator-color: #ffb373; --highlight-decorator-color: #ffb373;
--highlight-type-color: #8effda; --highlight-type-color: #8effda;
@@ -877,6 +879,10 @@ code,
color: var(--highlight-keyword-color); color: var(--highlight-keyword-color);
} }
.highlight .k-ControlFlow /* Keyword.ControlFlow */ {
color: var(--highlight-control-flow-keyword-color);
}
.highlight .ch /* Comment.Hashbang */, .highlight .ch /* Comment.Hashbang */,
.highlight .cp /* Comment.Preproc */ { .highlight .cp /* Comment.Preproc */ {
color: var(--highlight-keyword2-color); color: var(--highlight-keyword2-color);