Pārlūkot izejas kodu

Merge pull request #96925 from SaNeOr/fix-#96908

Fix spaces converted to tabs in triple quote strings
Thaddeus Crews 4 mēneši atpakaļ
vecāks
revīzija
5df01a8c5a
2 mainītis faili ar 14 papildinājumiem un 0 dzēšanām
  1. 4 0
      scene/gui/code_edit.cpp
  2. 10 0
      tests/scene/test_code_edit.h

+ 4 - 0
scene/gui/code_edit.cpp

@@ -1039,6 +1039,10 @@ void CodeEdit::convert_indent(int p_from_line, int p_to_line) {
 			continue;
 		}
 
+		if (is_in_string(i) != -1) {
+			continue;
+		}
+
 		// Check chars in the line.
 		int j = 0;
 		int space_count = 0;

+ 10 - 0
tests/scene/test_code_edit.h

@@ -2825,6 +2825,16 @@ TEST_CASE("[SceneTree][CodeEdit] indent") {
 		CHECK(code_edit->has_selection());
 		CHECK(code_edit->get_selection_origin_column() == 2);
 		CHECK(code_edit->get_caret_column() == 3);
+
+		// Multiline blocks.
+		code_edit->set_text("'''\n    test\n        test\n'''");
+		code_edit->select(1, 0, 1, 8);
+		code_edit->convert_indent();
+		CHECK(code_edit->get_line(1) == "    test");
+		CHECK(code_edit->get_line(2) == "        test");
+		CHECK(code_edit->has_selection());
+		CHECK(code_edit->get_selection_origin_column() == 0);
+		CHECK(code_edit->get_caret_column() == 8);
 	}
 
 	SUBCASE("[CodeEdit] convert indent to spaces") {