diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2017-09-04 07:59:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-04 07:59:51 +0200 |
commit | fe3b8b48dd21d222ef2209c7cb5af16f86755e00 (patch) | |
tree | 2e042dbd8e0794a607d9e0bc7cd077ffd79991ae /scene/gui | |
parent | 7149be5b89040b37b444695e828a519d11e9f87b (diff) | |
parent | cfa5f37ee74db583ca181205b3cb8c67ff31fda6 (diff) |
Merge pull request #10894 from Paulb23/brace_auto_indent
Added support for brace auto indent and fixed indent above.
Diffstat (limited to 'scene/gui')
-rw-r--r-- | scene/gui/text_edit.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index ade665b418..1738e303aa 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -2136,15 +2136,25 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { break; } } - if (auto_indent) { - // indent once again if previous line will end with ':' - // (i.e. colon precedes current cursor position) - if (cursor.column > 0 && text[cursor.line][cursor.column - 1] == ':') { + + bool brace_indent = false; + + // no need to indent if we are going upwards. + if (auto_indent && !(k->get_command() && k->get_shift())) { + // indent once again if previous line will end with ':' or '{' + // (i.e. colon/brace precedes current cursor position) + if (cursor.column > 0 && (text[cursor.line][cursor.column - 1] == ':' || text[cursor.line][cursor.column - 1] == '{')) { if (indent_using_spaces) { ins += space_indent; } else { ins += "\t"; } + + // no need to move the brace below if we are not taking the text with us. + if (text[cursor.line][cursor.column] == '}' && !k->get_command()) { + brace_indent = true; + ins += "\n" + ins.substr(1, ins.length() - 2); + } } } @@ -2168,6 +2178,9 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { if (first_line) { cursor_set_line(0); + } else if (brace_indent) { + cursor_set_line(cursor.line - 1); + cursor_set_column(text[cursor.line].length()); } } break; |