From 596e7f91811d9d39853051e0dee691e490ce95e0 Mon Sep 17 00:00:00 2001 From: Neil Date: Fri, 21 Apr 2017 12:49:02 +1000 Subject: Treat comments at the end of the file as separate from the preceding structure. --- lexers/LexPython.cxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'lexers/LexPython.cxx') diff --git a/lexers/LexPython.cxx b/lexers/LexPython.cxx index 328ed7363..97943ca24 100644 --- a/lexers/LexPython.cxx +++ b/lexers/LexPython.cxx @@ -887,18 +887,24 @@ void SCI_METHOD LexerPython::Fold(Sci_PositionU startPos, Sci_Position length, i // Skip past any blank lines for next indent level info; we skip also // comments (all comments, not just those starting in column 0) // which effectively folds them into surrounding code rather - // than screwing up folding. + // than screwing up folding. If comments end file, use the min + // comment indent as the level after + int minCommentLevel = indentCurrentLevel; while (!quote && (lineNext < docLines) && ((indentNext & SC_FOLDLEVELWHITEFLAG) || (lineNext <= docLines && IsCommentLine(lineNext, styler)))) { + if (IsCommentLine(lineNext, styler) && indentNext < minCommentLevel) { + minCommentLevel = indentNext; + } + lineNext++; indentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL); } - const int levelAfterComments = indentNext & SC_FOLDLEVELNUMBERMASK; + const int levelAfterComments = ((lineNext < docLines) ? indentNext & SC_FOLDLEVELNUMBERMASK : minCommentLevel); const int levelBeforeComments = Maximum(indentCurrentLevel, levelAfterComments); // Now set all the indent levels on the lines we skipped -- cgit v1.2.3