diff options
author | hilfazer <az13337@gmail.com> | 2019-02-24 18:18:09 +0100 |
---|---|---|
committer | hilfazer <az13337@gmail.com> | 2019-04-22 12:53:24 +0200 |
commit | 17166f564032b78fd8acc54d8036948b8be17708 (patch) | |
tree | b0afa51d2ae3f9eb530202d1d757c5c2d4ad15f8 | |
parent | 61b41d6001492527753b7047989d38ffd085a9de (diff) |
autocomplete for $" and $'
-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 f38bc62a3c..dc2092d790 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -5718,6 +5718,7 @@ void TextEdit::_update_completion_candidates() { bool inquote = false; int first_quote = -1; + int restore_quotes = -1; int c = cofs - 1; while (c >= 0) { @@ -5725,6 +5726,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--; } @@ -5792,6 +5798,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())) { |