Fixed issue 1377 about script editor parenthesis matching.

This commit is contained in:
ElectricSolstice 2015-02-19 16:34:04 -08:00
parent 31e076d16a
commit 11a5949ec4
1 changed files with 47 additions and 2 deletions

View File

@ -498,7 +498,29 @@ void TextEdit::_notification(int p_what) {
for(int j=from;j<text[i].length();j++) { for(int j=from;j<text[i].length();j++) {
CharType cc = text[i][j]; CharType cc = text[i][j];
if (cc==c) //ignore any brackets inside a string
if (cc== '"' | cc == '\'') {
CharType quotation = cc;
do {
j++;
if (!(j<text[i].length())) {
break;
}
cc=text[i][j];
//skip over escaped quotation marks inside strings
if (cc=='\\') {
bool escaped = true;
while (j+1<text[i].length() && text[i][j+1]=='\\') {
escaped=!escaped;
j++;
}
if (escaped) {
j++;
continue;
}
}
} while (cc!= quotation);
} else if (cc==c)
stack++; stack++;
else if (cc==closec) else if (cc==closec)
stack--; stack--;
@ -547,7 +569,30 @@ void TextEdit::_notification(int p_what) {
for(int j=from;j>=0;j--) { for(int j=from;j>=0;j--) {
CharType cc = text[i][j]; CharType cc = text[i][j];
if (cc==c) //ignore any brackets inside a string
if (cc== '"' | cc == '\'') {
CharType quotation = cc;
do {
j--;
if (!(j>=0)) {
break;
}
cc=text[i][j];
//skip over escaped quotation marks inside strings
if (cc==quotation) {
bool escaped = false;
while (j-1>=0 && text[i][j-1]=='\\') {
escaped=!escaped;
j--;
}
if (escaped) {
j--;
cc='\\';
continue;
}
}
} while (cc!= quotation);
} else if (cc==c)
stack++; stack++;
else if (cc==closec) else if (cc==closec)
stack--; stack--;