diff options
| -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) { | 
