diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-04-30 13:32:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-30 13:32:37 +0200 |
commit | 2cc8848c3c3815c6f72ce5f9b75bfab8a1498292 (patch) | |
tree | 38be915e6bb6ee9c8df55cd1bd571bb448034687 /scene | |
parent | 88c0a8d4b8a0a4262c4e6fcc215f785f24b26382 (diff) | |
parent | 17166f564032b78fd8acc54d8036948b8be17708 (diff) |
Merge pull request #26224 from hilfazer/autocomplete
Working autocomplete for $" and $'
Diffstat (limited to 'scene')
-rw-r--r-- | scene/gui/text_edit.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index ebd4e8094b..fbf6550362 100644 --- a/scene/gui/text_edit.cpp +++ b/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())) { |