瀏覽代碼

Merge pull request #27693 from YeldhamDev/method_brackets_smart

Make brackets only be inserted when necessary when autocompleting methods
Rémi Verschelde 6 年之前
父節點
當前提交
9916319df8
共有 1 個文件被更改,包括 16 次插入7 次删除
  1. 16 7
      scene/gui/text_edit.cpp

+ 16 - 7
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 {