Skip to content

Commit

Permalink
Simplify code folding for multiline string and comment.
Browse files Browse the repository at this point in the history
  • Loading branch information
zufuliu committed Jan 24, 2024
1 parent c809216 commit 6f09696
Show file tree
Hide file tree
Showing 18 changed files with 91 additions and 400 deletions.
18 changes: 3 additions & 15 deletions scintilla/lexers/LexAsymptote.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -230,12 +230,6 @@ struct FoldLineState {
}
};

constexpr bool IsMultilineStringStyle(int style) noexcept {
return style == SCE_ASY_STRING_SQ
|| style == SCE_ASY_STRING_DQ
|| style == SCE_ASY_ESCAPECHAR;
}

void FoldAsyDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, LexerWordList, Accessor &styler) {
const Sci_PositionU endPos = startPos + lengthDoc;
Sci_Line lineCurrent = styler.GetLine(startPos);
Expand Down Expand Up @@ -266,18 +260,12 @@ void FoldAsyDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, L

switch (style) {
case SCE_ASY_COMMENTBLOCK:
if (style != stylePrev) {
levelNext++;
} else if (style != styleNext) {
levelNext--;
}
break;

case SCE_ASY_STRING_SQ:
case SCE_ASY_STRING_DQ:
if (!IsMultilineStringStyle(stylePrev)) {
if (style != stylePrev) {
levelNext++;
} else if (!IsMultilineStringStyle(styleNext)) {
}
if (style != styleNext) {
levelNext--;
}
break;
Expand Down
30 changes: 3 additions & 27 deletions scintilla/lexers/LexAutoHotkey.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -754,24 +754,6 @@ constexpr int GetLineCommentState(int lineState) noexcept {
return lineState & AHKLineStateMaskLineComment;
}

constexpr bool IsStreamCommentStyle(int style) noexcept {
return style == SCE_AHK_COMMENTBLOCK
|| style == SCE_AHK_DIRECTIVE_AT
|| style == SCE_AHK_TASKMARKER;
}

constexpr bool IsMultilineStringStyle(int style) noexcept {
return style == SCE_AHK_SECTION_SQ
|| style == SCE_AHK_SECTION_DQ
|| style == SCE_AHK_SECTION_NQ
|| style == SCE_AHK_SECTION_COMMENT
|| style == SCE_AHK_SECTION_OPTION
|| style == SCE_AHK_ESCAPECHAR
|| style == SCE_AHK_FORMAT_SPECIFIER
|| style == SCE_AHK_SENTKEY
|| style == SCE_AHK_DYNAMIC_VARIABLE;
}

void FoldAHKDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, LexerWordList /*keywordLists*/, Accessor &styler) {
const Sci_PositionU endPos = startPos + lengthDoc;
Sci_Line lineCurrent = styler.GetLine(startPos);
Expand Down Expand Up @@ -802,19 +784,13 @@ void FoldAHKDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, L

switch (style) {
case SCE_AHK_COMMENTBLOCK:
if (!IsStreamCommentStyle(stylePrev)) {
levelNext++;
} else if (!IsStreamCommentStyle(styleNext)) {
levelNext--;
}
break;

case SCE_AHK_SECTION_SQ:
case SCE_AHK_SECTION_DQ:
case SCE_AHK_SECTION_NQ:
if (!IsMultilineStringStyle(stylePrev)) {
if (style != stylePrev) {
levelNext++;
} else if (!IsMultilineStringStyle(styleNext)) {
}
if (style != styleNext) {
levelNext--;
}
break;
Expand Down
33 changes: 5 additions & 28 deletions scintilla/lexers/LexCSharp.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -778,24 +778,6 @@ struct FoldLineState {
}
};

constexpr bool IsStreamCommentStyle(int style) noexcept {
return style == SCE_CSHARP_COMMENTBLOCK
|| style == SCE_CSHARP_COMMENTBLOCKDOC
|| style == SCE_CSHARP_COMMENTTAG_XML
|| style == SCE_CSHARP_TASKMARKER;
}

constexpr bool IsMultilineStringStyle(int style) noexcept {
return style == SCE_CSHARP_VERBATIM_STRING
|| style == SCE_CSHARP_INTERPOLATED_VERBATIM_STRING
|| style == SCE_CSHARP_RAWSTRING_ML
|| style == SCE_CSHARP_INTERPOLATED_RAWSTRING_ML
|| style == SCE_CSHARP_OPERATOR2
|| style == SCE_CSHARP_ESCAPECHAR
|| style == SCE_CSHARP_FORMAT_SPECIFIER
|| style == SCE_CSHARP_PLACEHOLDER;
}

void FoldCSharpDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, LexerWordList, Accessor &styler) {
const Sci_PositionU endPos = startPos + lengthDoc;
Sci_Line lineCurrent = styler.GetLine(startPos);
Expand Down Expand Up @@ -831,25 +813,20 @@ void FoldCSharpDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle
switch (style) {
case SCE_CSHARP_COMMENTBLOCK:
case SCE_CSHARP_COMMENTBLOCKDOC:
if (!IsStreamCommentStyle(stylePrev)) {
levelNext++;
} else if (!IsStreamCommentStyle(styleNext)) {
levelNext--;
}
break;

case SCE_CSHARP_VERBATIM_STRING:
case SCE_CSHARP_INTERPOLATED_VERBATIM_STRING:
case SCE_CSHARP_RAWSTRING_ML:
case SCE_CSHARP_INTERPOLATED_RAWSTRING_ML:
if (!IsMultilineStringStyle(stylePrev)) {
if (style != stylePrev) {
levelNext++;
} else if (!IsMultilineStringStyle(styleNext)) {
}
if (style != styleNext) {
levelNext--;
}
break;

case SCE_CSHARP_OPERATOR: {
case SCE_CSHARP_OPERATOR:
case SCE_CSHARP_OPERATOR2: {
const char ch = styler[startPos];
if (ch == '{' || ch == '[' || ch == '(') {
levelNext++;
Expand Down
41 changes: 8 additions & 33 deletions scintilla/lexers/LexD.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -642,25 +642,6 @@ struct FoldLineState {
}
};

constexpr bool IsStreamCommentStyle(int style) noexcept {
return style == SCE_D_COMMENTBLOCK
|| style == SCE_D_COMMENTBLOCKDOC
|| style == SCE_D_COMMENTDOCWORD
|| style == SCE_D_COMMENTDOCMACRO
|| style == SCE_D_TASKMARKER;
}

constexpr bool IsMultilineStringStyle(int style) noexcept {
return style == SCE_D_STRING
|| style == SCE_D_HEXSTRING
|| style == SCE_D_RAWSTRING
|| style == SCE_D_STRING_BT
|| style == SCE_D_DELIMITED_STRING
|| style == SCE_D_ESCAPECHAR
|| style == SCE_D_DELIMITED_ID
|| style == SCE_D_FORMAT_SPECIFIER;
}

void FoldDDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, LexerWordList, Accessor &styler) {
const Sci_PositionU endPos = startPos + lengthDoc;
Sci_Line lineCurrent = styler.GetLine(startPos);
Expand Down Expand Up @@ -695,9 +676,15 @@ void FoldDDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, Lex
switch (style) {
case SCE_D_COMMENTBLOCKDOC:
case SCE_D_COMMENTBLOCK:
if (!IsStreamCommentStyle(stylePrev)) {
case SCE_D_STRING:
case SCE_D_HEXSTRING:
case SCE_D_RAWSTRING:
case SCE_D_STRING_BT:
case SCE_D_DELIMITED_STRING:
if (style != stylePrev) {
levelNext++;
} else if (!IsStreamCommentStyle(styleNext)) {
}
if (style != styleNext) {
levelNext--;
}
break;
Expand All @@ -713,18 +700,6 @@ void FoldDDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, Lex
}
} break;

case SCE_D_STRING:
case SCE_D_HEXSTRING:
case SCE_D_RAWSTRING:
case SCE_D_STRING_BT:
case SCE_D_DELIMITED_STRING:
if (!IsMultilineStringStyle(stylePrev)) {
levelNext++;
} else if (!IsMultilineStringStyle(styleNext)) {
levelNext--;
}
break;

case SCE_D_OPERATOR:
if (ch == '{' || ch == '[' || ch == '(') {
levelNext++;
Expand Down
21 changes: 4 additions & 17 deletions scintilla/lexers/LexDart.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -454,14 +454,6 @@ struct FoldLineState {
}
};

constexpr bool IsMultilineStringStyle(int style) noexcept {
return style == SCE_DART_TRIPLE_STRING_SQ
|| style == SCE_DART_TRIPLE_STRING_DQ
|| style == SCE_DART_OPERATOR2
|| style == SCE_DART_VARIABLE2
|| style == SCE_DART_ESCAPECHAR;
}

void FoldDartDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, LexerWordList, Accessor &styler) {
const Sci_PositionU endPos = startPos + lengthDoc;
Sci_Line lineCurrent = styler.GetLine(startPos);
Expand Down Expand Up @@ -507,23 +499,18 @@ void FoldDartDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle,

case SCE_DART_TRIPLE_RAWSTRING_SQ:
case SCE_DART_TRIPLE_RAWSTRING_DQ:
if (style != stylePrev) {
levelNext++;
} else if (style != styleNext) {
levelNext--;
}
break;

case SCE_DART_TRIPLE_STRING_SQ:
case SCE_DART_TRIPLE_STRING_DQ:
if (!IsMultilineStringStyle(stylePrev)) {
if (style != stylePrev) {
levelNext++;
} else if (!IsMultilineStringStyle(styleNext)) {
}
if (style != styleNext) {
levelNext--;
}
break;

case SCE_DART_OPERATOR:
case SCE_DART_OPERATOR2:
if (ch == '{' || ch == '[' || ch == '(') {
levelNext++;
} else if (ch == '}' || ch == ']' || ch == ')') {
Expand Down
23 changes: 3 additions & 20 deletions scintilla/lexers/LexGo.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -545,17 +545,6 @@ constexpr int GetLineCommentState(int lineState) noexcept {
return lineState & SimpleLineStateMaskLineComment;
}

constexpr bool IsStreamCommentStyle(int style) noexcept {
return style == SCE_GO_COMMENTBLOCK
|| style == SCE_GO_TASKMARKER;
}

constexpr bool IsMultilineStringStyle(int style) noexcept {
return style == SCE_GO_RAW_STRING
|| style == SCE_GO_ESCAPECHAR
|| style == SCE_GO_FORMAT_SPECIFIER;
}

void FoldGoDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, LexerWordList, Accessor &styler) {
const Sci_PositionU endPos = startPos + lengthDoc;
Sci_Line lineCurrent = styler.GetLine(startPos);
Expand Down Expand Up @@ -586,17 +575,11 @@ void FoldGoDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, Le

switch (style) {
case SCE_GO_COMMENTBLOCK:
if (!IsStreamCommentStyle(stylePrev)) {
levelNext++;
} else if (!IsStreamCommentStyle(styleNext)) {
levelNext--;
}
break;

case SCE_GO_RAW_STRING:
if (!IsMultilineStringStyle(stylePrev)) {
if (style != stylePrev) {
levelNext++;
} else if (!IsMultilineStringStyle(styleNext)) {
}
if (style != styleNext) {
levelNext--;
}
break;
Expand Down
33 changes: 5 additions & 28 deletions scintilla/lexers/LexGroovy.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -571,24 +571,6 @@ struct FoldLineState {
}
};

constexpr bool IsStreamCommentStyle(int style) noexcept {
return style == SCE_GROOVY_COMMENTBLOCK
|| style == SCE_GROOVY_COMMENTBLOCKDOC
|| style == SCE_GROOVY_COMMENTTAGAT
|| style == SCE_GROOVY_COMMENTTAGHTML
|| style == SCE_GROOVY_TASKMARKER;
}

constexpr bool IsMultilineStringStyle(int style) noexcept {
return style == SCE_GROOVY_TRIPLE_STRING_SQ
|| style == SCE_GROOVY_TRIPLE_STRING_DQ
|| style == SCE_GROOVY_SLASHY_STRING
|| style == SCE_GROOVY_DOLLAR_SLASHY
|| style == SCE_GROOVY_OPERATOR2
|| style == SCE_GROOVY_VARIABLE
|| style == SCE_GROOVY_ESCAPECHAR;
}

void FoldGroovyDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, LexerWordList /*keywordLists*/, Accessor &styler) {
const Sci_PositionU endPos = startPos + lengthDoc;
Sci_Line lineCurrent = styler.GetLine(startPos);
Expand Down Expand Up @@ -620,25 +602,20 @@ void FoldGroovyDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle
switch (style) {
case SCE_GROOVY_COMMENTBLOCK:
case SCE_GROOVY_COMMENTBLOCKDOC:
if (!IsStreamCommentStyle(stylePrev)) {
levelNext++;
} else if (!IsStreamCommentStyle(styleNext)) {
levelNext--;
}
break;

case SCE_GROOVY_TRIPLE_STRING_SQ:
case SCE_GROOVY_TRIPLE_STRING_DQ:
case SCE_GROOVY_SLASHY_STRING:
case SCE_GROOVY_DOLLAR_SLASHY:
if (!IsMultilineStringStyle(stylePrev)) {
if (style != stylePrev) {
levelNext++;
} else if (!IsMultilineStringStyle(styleNext)) {
}
if (style != styleNext) {
levelNext--;
}
break;

case SCE_GROOVY_OPERATOR: {
case SCE_GROOVY_OPERATOR:
case SCE_GROOVY_OPERATOR2: {
const char ch = styler[startPos - 1];
if (ch == '{' || ch == '[' || ch == '(') {
levelNext++;
Expand Down
35 changes: 4 additions & 31 deletions scintilla/lexers/LexHaxe.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -377,21 +377,6 @@ struct FoldLineState {
}
};

constexpr bool IsStreamCommentStyle(int style) noexcept {
return style == SCE_HAXE_COMMENTBLOCK
|| style == SCE_HAXE_COMMENTBLOCKDOC
|| style == SCE_HAXE_COMMENTTAGAT
|| style == SCE_HAXE_TASKMARKER;
}

constexpr bool IsMultilineStringStyle(int style) noexcept {
return style == SCE_HAXE_STRINGDQ
|| style == SCE_HAXE_STRINGSQ
|| style == SCE_HAXE_OPERATOR2
|| style == SCE_HAXE_VARIABLE2
|| style == SCE_HAXE_ESCAPECHAR;
}

void FoldHaxeDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, LexerWordList, Accessor &styler) {
const Sci_PositionU endPos = startPos + lengthDoc;
Sci_Line lineCurrent = styler.GetLine(startPos);
Expand Down Expand Up @@ -426,31 +411,19 @@ void FoldHaxeDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle,
switch (style) {
case SCE_HAXE_COMMENTBLOCK:
case SCE_HAXE_COMMENTBLOCKDOC:
if (!IsStreamCommentStyle(stylePrev)) {
levelNext++;
} else if (!IsStreamCommentStyle(styleNext)) {
levelNext--;
}
break;

case SCE_HAXE_REGEX:
if (style != stylePrev) {
levelNext++;
} else if (style != styleNext) {
levelNext--;
}
break;

case SCE_HAXE_STRINGSQ:
case SCE_HAXE_STRINGDQ:
if (!IsMultilineStringStyle(stylePrev)) {
if (style != stylePrev) {
levelNext++;
} else if (!IsMultilineStringStyle(styleNext)) {
}
if (style != styleNext) {
levelNext--;
}
break;

case SCE_HAXE_OPERATOR:
case SCE_HAXE_OPERATOR2:
if (ch == '{' || ch == '[' || ch == '(') {
levelNext++;
} else if (ch == '}' || ch == ']' || ch == ')') {
Expand Down
Loading

0 comments on commit 6f09696

Please sign in to comment.