Przeglądaj źródła

Merge pull request #94474 from dalexeev/editor-fix-jump-to-error-column

Editor: Consider tabs when calculating column for jump to error
Rémi Verschelde 1 rok temu
rodzic
commit
da4f6e439c
2 zmienionych plików z 20 dodań i 2 usunięć
  1. 10 1
      editor/code_editor.cpp
  2. 10 1
      editor/plugins/script_text_editor.cpp

+ 10 - 1
editor/code_editor.cpp

@@ -1431,12 +1431,21 @@ Point2i CodeTextEditor::get_error_pos() const {
 
 void CodeTextEditor::goto_error() {
 	if (!error->get_text().is_empty()) {
+		int corrected_column = error_column;
+
+		const String line_text = text_editor->get_line(error_line);
+		const int indent_size = text_editor->get_indent_size();
+		if (indent_size > 1) {
+			const int tab_count = line_text.length() - line_text.lstrip("\t").length();
+			corrected_column -= tab_count * (indent_size - 1);
+		}
+
 		if (text_editor->get_line_count() != error_line) {
 			text_editor->unfold_line(error_line);
 		}
 		text_editor->remove_secondary_carets();
 		text_editor->set_caret_line(error_line);
-		text_editor->set_caret_column(error_column);
+		text_editor->set_caret_column(corrected_column);
 		text_editor->center_viewport_to_caret();
 	}
 }

+ 10 - 1
editor/plugins/script_text_editor.cpp

@@ -317,7 +317,16 @@ void ScriptTextEditor::_error_clicked(const Variant &p_line) {
 			if (!scr.is_valid()) {
 				EditorNode::get_singleton()->show_warning(TTR("Could not load file at:") + "\n\n" + path, TTR("Error!"));
 			} else {
-				ScriptEditor::get_singleton()->edit(scr, line, column);
+				int corrected_column = column;
+
+				const String line_text = code_editor->get_text_editor()->get_line(line);
+				const int indent_size = code_editor->get_text_editor()->get_indent_size();
+				if (indent_size > 1) {
+					const int tab_count = line_text.length() - line_text.lstrip("\t").length();
+					corrected_column -= tab_count * (indent_size - 1);
+				}
+
+				ScriptEditor::get_singleton()->edit(scr, line, corrected_column);
 			}
 		}
 	}