Browse Source

Merge pull request #26224 from hilfazer/autocomplete

Working autocomplete for $" and $'
Rémi Verschelde 6 years ago
parent
commit
2cc8848c3c
1 changed files with 11 additions and 0 deletions
  1. 11 0
      scene/gui/text_edit.cpp

+ 11 - 0
scene/gui/text_edit.cpp

@@ -5849,6 +5849,7 @@ void TextEdit::_update_completion_candidates() {
 
 	bool inquote = false;
 	int first_quote = -1;
+	int restore_quotes = -1;
 
 	int c = cofs - 1;
 	while (c >= 0) {
@@ -5856,6 +5857,11 @@ void TextEdit::_update_completion_candidates() {
 			inquote = !inquote;
 			if (first_quote == -1)
 				first_quote = c;
+			restore_quotes = 0;
+		} else if (restore_quotes == 0 && l[c] == '$') {
+			restore_quotes = 1;
+		} else if (restore_quotes == 0 && !_is_whitespace(l[c])) {
+			restore_quotes = -1;
 		}
 		c--;
 	}
@@ -5923,6 +5929,11 @@ void TextEdit::_update_completion_candidates() {
 			completion_strings.write[i] = completion_strings[i].unquote().quote("'");
 		}
 
+		if (inquote && restore_quotes == 1 && !completion_strings[i].is_quoted()) {
+			String quote = single_quote ? "'" : "\"";
+			completion_strings.write[i] = completion_strings[i].quote(quote);
+		}
+
 		if (completion_strings[i].begins_with(s)) {
 			completion_options.push_back(completion_strings[i]);
 		} else if (completion_strings[i].to_lower().begins_with(s.to_lower())) {