Fix: auto brace complete for quoted strings

Fixes #36002
This commit is contained in:
Dominik 'dreamsComeTrue' Jasiński 2020-02-10 23:09:07 +01:00
parent 78074fed8d
commit 6a404a88e4

View file

@ -1844,6 +1844,42 @@ void TextEdit::_consume_pair_symbol(CharType ch) {
} }
} }
String line = text[cursor.line];
bool in_single_quote = false;
bool in_double_quote = false;
int c = 0;
while (c < line.length()) {
if (line[c] == '\\') {
c++; // Skip quoted anything.
if (cursor.column == c) {
break;
}
} else {
if (line[c] == '\'' && !in_double_quote) {
in_single_quote = !in_single_quote;
} else if (line[c] == '"' && !in_single_quote) {
in_double_quote = !in_double_quote;
}
}
c++;
if (cursor.column == c) {
break;
}
}
// Disallow inserting duplicated quotes while already in string
if ((in_single_quote || in_double_quote) && (ch == '"' || ch == '\'')) {
insert_text_at_cursor(ch_single);
cursor_set_column(cursor_position_to_move);
return;
}
insert_text_at_cursor(ch_pair); insert_text_at_cursor(ch_pair);
cursor_set_column(cursor_position_to_move); cursor_set_column(cursor_position_to_move);
} }