Skip to content
This repository was archived by the owner on Aug 10, 2022. It is now read-only.

Commit 20275fa

Browse files
committed
Fix bobbylight#225: C++: line continuation char '\' should work even in EOL comments
1 parent 2c5fc70 commit 20275fa

File tree

3 files changed

+883
-822
lines changed

3 files changed

+883
-822
lines changed

src/main/java/org/fife/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.flex

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -145,20 +145,25 @@ import org.fife.ui.rsyntaxtextarea.*;
145145
* @return The first <code>Token</code> in a linked list representing
146146
* the syntax highlighted text.
147147
*/
148+
@Override
148149
public Token getTokenList(Segment text, int initialTokenType, int startOffset) {
149150

150151
resetTokenList();
151152
this.offsetShift = -text.offset + startOffset;
152153

153154
// Start off in the proper state.
154-
int state = Token.NULL;
155+
int state = YYINITIAL;
155156
switch (initialTokenType) {
157+
case Token.COMMENT_EOL:
158+
state = EOL_COMMENT;
159+
start = text.offset;
160+
break;
156161
case Token.COMMENT_MULTILINE:
157162
state = MLC;
158163
start = text.offset;
159164
break;
160165
default:
161-
state = Token.NULL;
166+
state = YYINITIAL;
162167
}
163168

164169
s = text;
@@ -195,7 +200,7 @@ import org.fife.ui.rsyntaxtextarea.*;
195200
*
196201
* @param reader the new input stream
197202
*/
198-
public final void yyreset(java.io.Reader reader) {
203+
public final void yyreset(Reader reader) {
199204
// 's' has been updated.
200205
zzBuffer = s.array;
201206
/*
@@ -666,10 +671,15 @@ URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?)
666671
}
667672

668673
<EOL_COMMENT> {
669-
[^hwf\n]+ {}
674+
[^hwf\\\n]+ {}
670675
{URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; }
671676
[hwf] {}
672-
\n { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; }
677+
\\. { /* Skip all escaped chars. */ }
678+
\\ { /* Line ending in '\' => continue to next line. */
679+
addToken(start,zzStartRead, Token.COMMENT_EOL);
680+
return firstToken;
681+
}
682+
\n |
673683
<<EOF>> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; }
674684

675685
}

0 commit comments

Comments
 (0)