diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-04-30 11:11:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-30 11:11:08 +0200 |
commit | 9916319df869d49128d72a97d02802ef3f931762 (patch) | |
tree | a45e1037df0fe449537ee14c9c098b7ecc63c139 /scene | |
parent | 36d4f86ed9ed7f21818abee772ba55c41df2f993 (diff) | |
parent | 24137f423ab7967ab89edddca9761d2b41f54dcd (diff) |
Merge pull request #27693 from YeldhamDev/method_brackets_smart
Make brackets only be inserted when necessary when autocompleting methods
Diffstat (limited to 'scene')
-rw-r--r-- | scene/gui/text_edit.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index e44e340ecf..ebd4e8094b 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -5783,19 +5783,29 @@ void TextEdit::_confirm_completion() { cursor_set_column(cursor.column - completion_base.length(), false); insert_text_at_cursor(completion_current); - // When inserted into the middle of an existing string, don't add an unnecessary quote + // When inserted into the middle of an existing string/method, don't add an unnecessary quote/bracket. String line = text[cursor.line]; CharType next_char = line[cursor.column]; CharType last_completion_char = completion_current[completion_current.length() - 1]; - if ((last_completion_char == '"' || last_completion_char == '\'') && - last_completion_char == next_char) { + if ((last_completion_char == '"' || last_completion_char == '\'') && last_completion_char == next_char) { _base_remove_text(cursor.line, cursor.column, cursor.line, cursor.column + 1); } - if (last_completion_char == '(' && auto_brace_completion_enabled) { - insert_text_at_cursor(")"); - cursor.column--; + if (last_completion_char == '(') { + + if (next_char == last_completion_char) { + _base_remove_text(cursor.line, cursor.column - 1, cursor.line, cursor.column); + } else if (auto_brace_completion_enabled) { + insert_text_at_cursor(")"); + cursor.column--; + } + } else if (last_completion_char == ')' && next_char == '(') { + + _base_remove_text(cursor.line, cursor.column - 2, cursor.line, cursor.column); + if (line[cursor.column + 1] != ')') { + cursor.column--; + } } end_complex_operation(); @@ -5990,7 +6000,6 @@ void TextEdit::code_complete(const Vector<String> &p_strings, bool p_forced) { completion_current = ""; completion_index = 0; _update_completion_candidates(); - // } String TextEdit::get_word_at_pos(const Vector2 &p_pos) const { |