Jelajahi Sumber

Code region keywords must be followed by whitespace

Julian 7 bulan lalu
induk
melakukan
ba3f4a4b24

+ 6 - 0
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;
 						}

+ 4 - 2
scene/gui/code_edit.cpp

@@ -1869,7 +1869,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<String> 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 {
@@ -1880,7 +1881,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<String> split = get_line(p_line).strip_edges().split_spaces();
+	return split.size() > 0 && split[0] == code_region_end_string;
 }
 
 /* Delimiters */