Browse Source

Merge pull request #71402 from Paulb23/autocomplete-extra-quote

Fixed adding extra quote when completing strings
Rémi Verschelde 2 years ago
parent
commit
03d11e608e
2 changed files with 6 additions and 4 deletions
  1. 5 3
      scene/gui/code_edit.cpp
  2. 1 1
      tests/scene/test_code_edit.h

+ 5 - 3
scene/gui/code_edit.cpp

@@ -2086,9 +2086,11 @@ void CodeEdit::confirm_code_completion(bool p_replace) {
 		int post_brace_pair = get_caret_column(i) < get_line(caret_line).length() ? _get_auto_brace_pair_close_at_pos(caret_line, get_caret_column(i)) : -1;
 		int post_brace_pair = get_caret_column(i) < get_line(caret_line).length() ? _get_auto_brace_pair_close_at_pos(caret_line, get_caret_column(i)) : -1;
 
 
 		// Strings do not nest like brackets, so ensure we don't add an additional closing pair.
 		// Strings do not nest like brackets, so ensure we don't add an additional closing pair.
-		if (has_string_delimiter(String::chr(last_completion_char)) && post_brace_pair != -1 && last_char_matches) {
-			remove_text(caret_line, get_caret_column(i), caret_line, get_caret_column(i) + 1);
-			adjust_carets_after_edit(i, caret_line, get_caret_column(i), caret_line, get_caret_column(i) + 1);
+		if (has_string_delimiter(String::chr(last_completion_char))) {
+			if (post_brace_pair != -1 && last_char_matches) {
+				remove_text(caret_line, get_caret_column(i), caret_line, get_caret_column(i) + 1);
+				adjust_carets_after_edit(i, caret_line, get_caret_column(i), caret_line, get_caret_column(i) + 1);
+			}
 		} else {
 		} else {
 			if (pre_brace_pair != -1 && pre_brace_pair != post_brace_pair && last_char_matches) {
 			if (pre_brace_pair != -1 && pre_brace_pair != post_brace_pair && last_char_matches) {
 				remove_text(caret_line, get_caret_column(i), caret_line, get_caret_column(i) + 1);
 				remove_text(caret_line, get_caret_column(i), caret_line, get_caret_column(i) + 1);

+ 1 - 1
tests/scene/test_code_edit.h

@@ -2930,7 +2930,7 @@ TEST_CASE("[SceneTree][CodeEdit] completion") {
 		code_edit->add_code_completion_option(CodeEdit::CodeCompletionKind::KIND_NODE_PATH, "\"test", "\"test");
 		code_edit->add_code_completion_option(CodeEdit::CodeCompletionKind::KIND_NODE_PATH, "\"test", "\"test");
 		code_edit->update_code_completion_options();
 		code_edit->update_code_completion_options();
 		code_edit->confirm_code_completion();
 		code_edit->confirm_code_completion();
-		CHECK(code_edit->get_line(0) == "\"\"test\"\"");
+		CHECK(code_edit->get_line(0) == "\"\"test\"");
 		CHECK(code_edit->get_caret_column() == 7);
 		CHECK(code_edit->get_caret_column() == 7);
 		code_edit->undo();
 		code_edit->undo();