Skip to content

Commit

Permalink
Don't set header flag for empty INI section.
Browse files Browse the repository at this point in the history
  • Loading branch information
zufuliu committed Jul 26, 2022
1 parent 27e098d commit fd7c01e
Showing 1 changed file with 17 additions and 11 deletions.
28 changes: 17 additions & 11 deletions scintilla/lexers/LexProps.cxx
Expand Up @@ -120,6 +120,10 @@ void ColourisePropsDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int initS
int nextLevel;
if (initStyle == SCE_PROPS_SECTION) {
nextLevel = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;
if (prevLevel & SC_FOLDLEVELHEADERFLAG) {
// empty section
styler.SetLevel(lineCurrent - 1, SC_FOLDLEVELBASE);
}
} else if (prevLevel & SC_FOLDLEVELHEADERFLAG) {
nextLevel = (prevLevel & SC_FOLDLEVELNUMBERMASK) + 1;
} else {
Expand All @@ -145,37 +149,39 @@ void FoldPropsDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int /*initStyl
Sci_Line lineCurrent = styler.GetLine(startPos);

int prevLevel = SC_FOLDLEVELBASE;
bool prevComment = false;
bool prev2Comment = false;
int prevState = 0;
int prev2State = 0;
if (lineCurrent > 0) {
prevLevel = styler.LevelAt(lineCurrent - 1);
prevComment = styler.GetLineState(lineCurrent - 1) == SCE_PROPS_COMMENT;
prev2Comment = lineCurrent > 1 && styler.GetLineState(lineCurrent - 2) == SCE_PROPS_COMMENT;
prevState = styler.GetLineState(lineCurrent - 1);
prev2State = styler.GetLineState(lineCurrent - 2);
}

bool commentHead = prevComment && (prevLevel & SC_FOLDLEVELHEADERFLAG);
bool commentHead = (prevState == SCE_PROPS_COMMENT) && (prevLevel & SC_FOLDLEVELHEADERFLAG);
while (lineCurrent <= maxLines) {
int nextLevel;
const int initStyle = styler.GetLineState(lineCurrent);

const bool currentComment = initStyle == SCE_PROPS_COMMENT;
if (currentComment) {
commentHead = !prevComment;
if (initStyle == SCE_PROPS_COMMENT) {
if (prevLevel & SC_FOLDLEVELHEADERFLAG) {
nextLevel = (prevLevel & SC_FOLDLEVELNUMBERMASK) + 1;
} else {
nextLevel = prevLevel;
}
commentHead = prevState != SCE_PROPS_COMMENT;
nextLevel |= commentHead ? SC_FOLDLEVELHEADERFLAG : 0;
} else {
if (initStyle == SCE_PROPS_SECTION) {
nextLevel = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;
if (prevState == SCE_PROPS_SECTION) {
commentHead = true; // empty section
}
} else {
if (commentHead) {
nextLevel = prevLevel & SC_FOLDLEVELNUMBERMASK;
} else if (prevLevel & SC_FOLDLEVELHEADERFLAG) {
nextLevel = (prevLevel & SC_FOLDLEVELNUMBERMASK) + 1;
} else if (prevComment && prev2Comment) {
} else if ((prevState == SCE_PROPS_COMMENT) && (prev2State == SCE_PROPS_COMMENT)) {
nextLevel = prevLevel - 1;
} else {
nextLevel = prevLevel;
Expand All @@ -193,8 +199,8 @@ void FoldPropsDoc(Sci_PositionU startPos, Sci_Position lengthDoc, int /*initStyl
}

prevLevel = nextLevel;
prev2Comment = prevComment;
prevComment = currentComment;
prev2State = prevState;
prevState = initStyle;
lineCurrent++;
}
}
Expand Down

0 comments on commit fd7c01e

Please sign in to comment.