Skip to content

Commit

Permalink
Fix C# comment block highlighting bug.
Browse files Browse the repository at this point in the history
  • Loading branch information
zufuliu committed Jul 31, 2024
1 parent 46c5427 commit de88eae
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 31 deletions.
4 changes: 2 additions & 2 deletions scintilla/include/SciLexer.h
Original file line number Diff line number Diff line change
Expand Up @@ -1697,8 +1697,8 @@
#define SCE_AWK_FUNCTION 16
#define SCE_CSHARP_DEFAULT 0
#define SCE_CSHARP_COMMENTLINE 1
#define SCE_CSHARP_COMMENTBLOCK 2
#define SCE_CSHARP_COMMENTLINEDOC 3
#define SCE_CSHARP_COMMENTLINEDOC 2
#define SCE_CSHARP_COMMENTBLOCK 3
#define SCE_CSHARP_COMMENTBLOCKDOC 4
#define SCE_CSHARP_COMMENTTAG_XML 5
#define SCE_CSHARP_TASKMARKER 6
Expand Down
2 changes: 1 addition & 1 deletion scintilla/include/SciLexer.iface
Original file line number Diff line number Diff line change
Expand Up @@ -2992,8 +2992,8 @@ val SCE_AWK_FUNCTION=16
lex CSharp=SCLEX_CSHARP SCE_CSHARP_
val SCE_CSHARP_DEFAULT=
val SCE_CSHARP_COMMENTLINE=
val SCE_CSHARP_COMMENTBLOCK=
val SCE_CSHARP_COMMENTLINEDOC=
val SCE_CSHARP_COMMENTBLOCK=
val SCE_CSHARP_COMMENTBLOCKDOC=
val SCE_CSHARP_COMMENTTAG_XML=
val SCE_CSHARP_TASKMARKER=
Expand Down
40 changes: 12 additions & 28 deletions scintilla/lexers/LexCSharp.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -406,45 +406,28 @@ void ColouriseCSharpDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int init
break;

case SCE_CSHARP_COMMENTLINE:
if (sc.atLineStart) {
sc.SetState(SCE_CSHARP_DEFAULT);
} else {
HighlightTaskMarker(sc, visibleChars, visibleCharsBefore, SCE_CSHARP_TASKMARKER);
}
break;

case SCE_CSHARP_COMMENTBLOCK:
if (sc.Match('*', '/')) {
sc.Forward();
sc.ForwardSetState(SCE_CSHARP_DEFAULT);
} else if (HighlightTaskMarker(sc, visibleChars, visibleCharsBefore, SCE_CSHARP_TASKMARKER)) {
continue;
}
break;

case SCE_CSHARP_COMMENTLINEDOC:
case SCE_CSHARP_COMMENTBLOCK:
case SCE_CSHARP_COMMENTBLOCKDOC:
if (sc.state == SCE_CSHARP_COMMENTLINEDOC) {
if (sc.atLineStart) {
sc.SetState(SCE_CSHARP_DEFAULT);
break;
}
} else if (sc.Match('*', '/')) {
sc.Forward();
sc.ForwardSetState(SCE_CSHARP_DEFAULT);
if (sc.atLineStart && (sc.state == SCE_CSHARP_COMMENTLINE || sc.state == SCE_CSHARP_COMMENTLINEDOC)) {
sc.SetState(SCE_CSHARP_DEFAULT);
break;
}
if (docTagState != DocTagState::None) {
if (sc.Match('/', '>') || sc.ch == '>') {
docTagState = DocTagState::None;
const int state = sc.state;
sc.SetState(SCE_CSHARP_COMMENTTAG_XML);
sc.Forward((sc.ch == '/') ? 2 : 1);
sc.SetState(state);
sc.SetState(escSeq.outerState);
}
}
if ((sc.state == SCE_CSHARP_COMMENTBLOCK || sc.state == SCE_CSHARP_COMMENTBLOCKDOC) && sc.Match('*', '/')) {
sc.Forward();
sc.ForwardSetState(SCE_CSHARP_DEFAULT);
break;
}
if (docTagState == DocTagState::None) {
if (sc.ch == '<') {
if (sc.ch == '<' && (sc.state == SCE_CSHARP_COMMENTLINEDOC || sc.state == SCE_CSHARP_COMMENTBLOCKDOC)) {
if (IsAlpha(sc.chNext)) {
docTagState = DocTagState::XmlOpen;
escSeq.outerState = sc.state;
Expand Down Expand Up @@ -626,7 +609,8 @@ void ColouriseCSharpDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int init
sc.SetState((chNext == '/') ? SCE_CSHARP_COMMENTLINE : SCE_CSHARP_COMMENTBLOCK);
sc.Forward(2);
if (sc.ch == chNext && sc.chNext != chNext) {
sc.ChangeState((chNext == '/') ? SCE_CSHARP_COMMENTLINEDOC : SCE_CSHARP_COMMENTBLOCKDOC);
static_assert(SCE_CSHARP_COMMENTLINEDOC - SCE_CSHARP_COMMENTLINE == SCE_CSHARP_COMMENTBLOCKDOC - SCE_CSHARP_COMMENTBLOCK);
sc.ChangeState(sc.state + SCE_CSHARP_COMMENTLINEDOC - SCE_CSHARP_COMMENTLINE);
}
continue;
} else if (sc.ch == '\"' || sc.ch == '$' || sc.ch == '@') {
Expand Down

0 comments on commit de88eae

Please # to comment.