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

View File

@@ -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,16 +156,6 @@ class GDScriptLexer(RegexLexer):
"enum",
"static",
"var",
"break",
"continue",
"if",
"elif",
"else",
"for",
"pass",
"return",
"match",
"while",
"super",
),
suffix=r"\b",
@@ -172,6 +163,28 @@ class GDScriptLexer(RegexLexer):
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": [
(
words(

View File

@@ -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);