Merge pull request #94474 from dalexeev/editor-fix-jump-to-error-column
Editor: Consider tabs when calculating column for jump to error
This commit is contained in:
commit
da4f6e439c
2 changed files with 20 additions and 2 deletions
|
@ -1431,12 +1431,21 @@ Point2i CodeTextEditor::get_error_pos() const {
|
||||||
|
|
||||||
void CodeTextEditor::goto_error() {
|
void CodeTextEditor::goto_error() {
|
||||||
if (!error->get_text().is_empty()) {
|
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) {
|
if (text_editor->get_line_count() != error_line) {
|
||||||
text_editor->unfold_line(error_line);
|
text_editor->unfold_line(error_line);
|
||||||
}
|
}
|
||||||
text_editor->remove_secondary_carets();
|
text_editor->remove_secondary_carets();
|
||||||
text_editor->set_caret_line(error_line);
|
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();
|
text_editor->center_viewport_to_caret();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -317,7 +317,16 @@ void ScriptTextEditor::_error_clicked(const Variant &p_line) {
|
||||||
if (!scr.is_valid()) {
|
if (!scr.is_valid()) {
|
||||||
EditorNode::get_singleton()->show_warning(TTR("Could not load file at:") + "\n\n" + path, TTR("Error!"));
|
EditorNode::get_singleton()->show_warning(TTR("Could not load file at:") + "\n\n" + path, TTR("Error!"));
|
||||||
} else {
|
} 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue