diff --git a/modules/gdscript/editor/gdscript_highlighter.cpp b/modules/gdscript/editor/gdscript_highlighter.cpp index 88e634f425c..4309639fd41 100644 --- a/modules/gdscript/editor/gdscript_highlighter.cpp +++ b/modules/gdscript/editor/gdscript_highlighter.cpp @@ -150,6 +150,12 @@ Dictionary GDScriptSyntaxHighlighter::_get_line_syntax_highlighting_impl(int p_l break; } } + // "#region" and "#endregion" only highlighted if they're the first region on the line. + if (color_regions[c].type == ColorRegion::TYPE_CODE_REGION && + str.strip_edges().split_spaces()[0] != "#region" && + str.strip_edges().split_spaces()[0] != "#endregion") { + match = false; + } if (!match) { continue; } diff --git a/scene/gui/code_edit.cpp b/scene/gui/code_edit.cpp index 4418d5b0fa6..0a05a2838d5 100644 --- a/scene/gui/code_edit.cpp +++ b/scene/gui/code_edit.cpp @@ -1872,7 +1872,8 @@ bool CodeEdit::is_line_code_region_start(int p_line) const { if (is_in_string(p_line) != -1) { return false; } - return get_line(p_line).strip_edges().begins_with(code_region_start_string); + Vector split = get_line(p_line).strip_edges().split_spaces(); + return split.size() > 0 && split[0] == code_region_start_string; } bool CodeEdit::is_line_code_region_end(int p_line) const { @@ -1883,7 +1884,8 @@ bool CodeEdit::is_line_code_region_end(int p_line) const { if (is_in_string(p_line) != -1) { return false; } - return get_line(p_line).strip_edges().begins_with(code_region_end_string); + Vector split = get_line(p_line).strip_edges().split_spaces(); + return split.size() > 0 && split[0] == code_region_end_string; } /* Delimiters */