- int skipLine = lineCurrent + 1;
- int skipIndentNext = saveIndentNext;
- while (skipLine < lineNext) {
- int skipLineLevel = skip_level;
- if (skipIndentNext & SC_FOLDLEVELWHITEFLAG)
- skipLineLevel = SC_FOLDLEVELWHITEFLAG | skipLineLevel;
- styler.SetLevel(skipLine, skipLineLevel);
- skipLine++;
- skipIndentNext = styler.IndentAmount(skipLine, &spaceFlags, NULL);
+ // Do this from end to start. Once we encounter one line
+ // which is indented more than the line after the end of
+ // the comment-block, use the level of the block before
+
+ int skipLine = lineNext;
+ int skipLevel = levelAfterComments;
+
+ while (--skipLine > lineCurrent) {
+ int skipLineIndent = styler.IndentAmount(skipLine, &spaceFlags, NULL);
+
+ if ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments)
+ skipLevel = levelBeforeComments;
+
+ int whiteFlag = skipLineIndent & SC_FOLDLEVELWHITEFLAG;
+
+ styler.SetLevel(skipLine, skipLevel | whiteFlag);