diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2023-10-13 11:46:44 +0200 |
|---|---|---|
| committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-10-13 11:46:44 +0200 |
| commit | cd9fd6ddfd837a64ebea51e495adfb8fa843eee4 (patch) | |
| tree | cfcb76cddf0937ad220df65de0b99fabbca9578a | |
| parent | cbb95bc8abfeacba8b75d516b26f6464aede439f (diff) | |
| parent | 881fe67d94f19d2b8e9fc10ce57731ca2aa005e4 (diff) | |
| download | redot-engine-cd9fd6ddfd837a64ebea51e495adfb8fa843eee4.tar.gz | |
Merge pull request #83216 from dalexeev/code-editor-fix-region-doc-comment
Code Editor: Fix regression with using doc comments for code regions
| -rw-r--r-- | modules/gdscript/editor/gdscript_highlighter.cpp | 2 | ||||
| -rw-r--r-- | scene/gui/code_edit.cpp | 5 | ||||
| -rw-r--r-- | tests/scene/test_code_edit.h | 6 |
3 files changed, 9 insertions, 4 deletions
diff --git a/modules/gdscript/editor/gdscript_highlighter.cpp b/modules/gdscript/editor/gdscript_highlighter.cpp index 144dd41f1a..8dbd262b22 100644 --- a/modules/gdscript/editor/gdscript_highlighter.cpp +++ b/modules/gdscript/editor/gdscript_highlighter.cpp @@ -907,6 +907,8 @@ void GDScriptSyntaxHighlighter::add_color_region(const String &p_start_key, cons ERR_FAIL_COND_MSG(color_regions[i].start_key == p_start_key, "color region with start key '" + p_start_key + "' already exists."); if (p_start_key.length() < color_regions[i].start_key.length()) { at++; + } else { + break; } } diff --git a/scene/gui/code_edit.cpp b/scene/gui/code_edit.cpp index 40c276e4e0..291d578add 100644 --- a/scene/gui/code_edit.cpp +++ b/scene/gui/code_edit.cpp @@ -2862,7 +2862,8 @@ void CodeEdit::_update_code_region_tags() { return; } - for (int i = 0; i < delimiters.size(); i++) { + // A shorter delimiter has higher priority. + for (int i = delimiters.size() - 1; i >= 0; i--) { if (delimiters[i].type != DelimiterType::TYPE_COMMENT) { continue; } @@ -3104,6 +3105,8 @@ void CodeEdit::_add_delimiter(const String &p_start_key, const String &p_end_key ERR_FAIL_COND_MSG(delimiters[i].start_key == p_start_key, "delimiter with start key '" + p_start_key + "' already exists."); if (p_start_key.length() < delimiters[i].start_key.length()) { at++; + } else { + break; } } diff --git a/tests/scene/test_code_edit.h b/tests/scene/test_code_edit.h index e69ac448e4..c3a374b5cd 100644 --- a/tests/scene/test_code_edit.h +++ b/tests/scene/test_code_edit.h @@ -2944,15 +2944,15 @@ TEST_CASE("[SceneTree][CodeEdit] region folding") { CHECK(code_edit->is_line_code_region_end(2)); // Update code region delimiter when removing comment delimiter. - code_edit->set_text("//region region_name\nline2\n//endregion\n#region region_name\nline2\n#endregion"); + code_edit->set_text("#region region_name\nline2\n#endregion\n//region region_name\nline2\n//endregion"); code_edit->clear_comment_delimiters(); code_edit->add_comment_delimiter("//", ""); - code_edit->add_comment_delimiter("#", ""); + code_edit->add_comment_delimiter("#", ""); // A shorter delimiter has higher priority. CHECK(code_edit->is_line_code_region_start(0)); CHECK(code_edit->is_line_code_region_end(2)); CHECK_FALSE(code_edit->is_line_code_region_start(3)); CHECK_FALSE(code_edit->is_line_code_region_end(5)); - code_edit->remove_comment_delimiter("//"); + code_edit->remove_comment_delimiter("#"); CHECK_FALSE(code_edit->is_line_code_region_start(0)); CHECK_FALSE(code_edit->is_line_code_region_end(2)); CHECK(code_edit->is_line_code_region_start(3)); |
