+ upd: merge current Scintilla dev stage

This commit is contained in:
Rainer Kottenhoff 2018-12-05 09:40:12 +01:00
parent 66ab3945ea
commit 79fe92e3d0
2 changed files with 25 additions and 10 deletions

View File

@ -577,6 +577,11 @@
<a href="https://sourceforge.net/p/scintilla/bugs/2054/">Bug #2054</a>.
</li>
<li>
The C++ lexer interprets continued preprocessor lines correctly by reading all of
the logical line.
<a href="https://sourceforge.net/p/scintilla/bugs/2062/">Bug #2062</a>.
</li>
<li>
For SciTE's Find in Files, allow case-sensitivity and whole-word options when running
a user defined command.
<a href="https://sourceforge.net/p/scintilla/bugs/2053/">Bug #2053</a>.

View File

@ -201,17 +201,27 @@ struct EscapeSequence {
std::string GetRestOfLine(LexAccessor &styler, Sci_Position start, bool allowSpace) {
std::string restOfLine;
Sci_Position i =0;
Sci_Position line = styler.GetLine(start);
Sci_Position pos = start;
Sci_Position endLine = styler.LineEnd(line);
char ch = styler.SafeGetCharAt(start, '\n');
const Sci_Position endLine = styler.LineEnd(styler.GetLine(start));
while (((start+i) < endLine) && (ch != '\r')) {
const char chNext = styler.SafeGetCharAt(start + i + 1, '\n');
if (ch == '/' && (chNext == '/' || chNext == '*'))
break;
if (allowSpace || (ch != ' '))
restOfLine += ch;
i++;
ch = chNext;
while (pos < endLine) {
if (ch == '\\' && ((pos + 1) == endLine)) {
// Continuation line
line++;
pos = styler.LineStart(line);
endLine = styler.LineEnd(line);
ch = styler.SafeGetCharAt(pos, '\n');
} else {
const char chNext = styler.SafeGetCharAt(pos + 1, '\n');
if (ch == '/' && (chNext == '/' || chNext == '*'))
break;
if (allowSpace || (ch != ' ')) {
restOfLine += ch;
}
pos++;
ch = chNext;
}
}
return restOfLine;
}