diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/LexPerl.cxx | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/LexPerl.cxx b/src/LexPerl.cxx index eff351151..2a3d4318d 100644 --- a/src/LexPerl.cxx +++ b/src/LexPerl.cxx @@ -938,6 +938,7 @@ static void FoldPerlDoc(unsigned int startPos, int length, int, WordList *[], int styleNext = styler.StyleAt(startPos); // Used at end of line to determine if the line was a package definition bool isPackageLine = false; + bool isPodHeading = false; for (unsigned int i = startPos; i < endPos; i++) { char ch = chNext; chNext = styler.SafeGetCharAt(i + 1); @@ -968,8 +969,10 @@ static void FoldPerlDoc(unsigned int startPos, int length, int, WordList *[], if (style == SCE_PL_POD) { if (stylePrevCh != SCE_PL_POD) levelCurrent++; - if (styler.Match(i, "=cut")) + else if (styler.Match(i, "=cut")) levelCurrent--; + else if (styler.Match(i, "=head")) + isPodHeading = true; } } // Custom package folding @@ -988,6 +991,12 @@ static void FoldPerlDoc(unsigned int startPos, int length, int, WordList *[], if (lev != styler.LevelAt(lineCurrent)) { styler.SetLevel(lineCurrent, lev); } + if (isPodHeading) { + lev = styler.LevelAt(lineCurrent) - 1; + lev |= SC_FOLDLEVELHEADERFLAG; + styler.SetLevel(lineCurrent, lev); + isPodHeading = false; + } // Check if line was a package declaration // because packages need "special" treatment if (isPackageLine) { |