diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2017-04-24 12:01:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-24 12:01:29 +0200 |
commit | 8c4b7fcbb6affaa5152f57dc0ee1b502ac0243c2 (patch) | |
tree | 26cc128fa986d79e2008c365c3e420a403b5d602 | |
parent | 16f532a2023c99f61aa13a5861d5dba5eebaa91f (diff) | |
parent | 165b7bab63345347dd3e72f99afc0e97881ebbbb (diff) |
Merge pull request #8500 from Paulb23/space_indent_fixes
Space indent fixes
-rw-r--r-- | editor/plugins/script_editor_plugin.cpp | 14 | ||||
-rw-r--r-- | editor/plugins/script_text_editor.cpp | 15 |
2 files changed, 21 insertions, 8 deletions
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index a99cd7a2d6..cdcc0a0855 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -1534,13 +1534,6 @@ void ScriptEditor::save_all_scripts() { if (!se) continue; - if (!se->is_unsaved()) - continue; - - if (trim_trailing_whitespace_on_save) { - se->trim_trailing_whitespace(); - } - if (convert_indent_on_save) { if (use_space_indentation) { se->convert_indent_to_spaces(); @@ -1549,6 +1542,13 @@ void ScriptEditor::save_all_scripts() { } } + if (trim_trailing_whitespace_on_save) { + se->trim_trailing_whitespace(); + } + + if (!se->is_unsaved()) + continue; + Ref<Script> script = se->get_edited_script(); if (script.is_valid()) se->apply_code(); diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index 052c19f34e..e942d6cebd 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -285,6 +285,9 @@ void ScriptTextEditor::convert_indent_to_spaces() { indent += " "; } + int cursor_line = tx->cursor_get_line(); + int cursor_column = tx->cursor_get_column(); + bool changed_indentation = false; for (int i = 0; i < tx->get_line_count(); i++) { String line = tx->get_line(i); @@ -300,6 +303,9 @@ void ScriptTextEditor::convert_indent_to_spaces() { tx->begin_complex_operation(); changed_indentation = true; } + if (cursor_line == i && cursor_column > j) { + cursor_column += indent_size - 1; + } line = line.left(j) + indent + line.right(j + 1); } j++; @@ -307,6 +313,7 @@ void ScriptTextEditor::convert_indent_to_spaces() { tx->set_line(i, line); } if (changed_indentation) { + tx->cursor_set_column(cursor_column); tx->end_complex_operation(); tx->update(); } @@ -323,6 +330,9 @@ void ScriptTextEditor::convert_indent_to_tabs() { int indent_size = EditorSettings::get_singleton()->get("text_editor/indent/size"); indent_size -= 1; + int cursor_line = tx->cursor_get_line(); + int cursor_column = tx->cursor_get_column(); + bool changed_indentation = false; for (int i = 0; i < tx->get_line_count(); i++) { String line = tx->get_line(i); @@ -342,7 +352,9 @@ void ScriptTextEditor::convert_indent_to_tabs() { tx->begin_complex_operation(); changed_indentation = true; } - + if (cursor_line == i && cursor_column > j) { + cursor_column -= indent_size; + } line = line.left(j - indent_size) + "\t" + line.right(j + 1); j = 0; space_count = -1; @@ -355,6 +367,7 @@ void ScriptTextEditor::convert_indent_to_tabs() { tx->set_line(i, line); } if (changed_indentation) { + tx->cursor_set_column(cursor_column); tx->end_complex_operation(); tx->update(); } |