diff options
Diffstat (limited to 'src/LexHTML.cxx')
| -rw-r--r-- | src/LexHTML.cxx | 21 | 
1 files changed, 15 insertions, 6 deletions
| diff --git a/src/LexHTML.cxx b/src/LexHTML.cxx index 91a79bed1..15f7ed3cb 100644 --- a/src/LexHTML.cxx +++ b/src/LexHTML.cxx @@ -330,7 +330,7 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty  	bool fold = styler.GetPropertyInt("fold");  	int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;  	int levelCurrent = levelPrev; -	int visChars = 0; +	int visibleChars = 0;  	char chPrev = ' ';  	char ch = ' '; @@ -351,7 +351,7 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty  		}  		if (fold && !isspace(ch)) -			visChars++; +			visibleChars++;  		// handle script folding  		if (fold) { @@ -392,15 +392,17 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty  		StateToPrint = statePrintForState(state, inScriptType);  		if ((ch == '\r' && chNext != '\n') || (ch == '\n')) { +			// Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix) +			// Avoid triggering two times on Dos/Win  			// New line -> record any line state onto /next/ line  			if (fold) {  				int lev = levelPrev; -				if (visChars == 0) +				if (visibleChars == 0)  					lev |= SC_FOLDLEVELWHITEFLAG; -				if ((levelCurrent > levelPrev) && (visChars > 0)) +				if ((levelCurrent > levelPrev) && (visibleChars > 0))  					lev |= SC_FOLDLEVELHEADERFLAG;  				styler.SetLevel(lineCurrent, lev); -				visChars = 0; +				visibleChars = 0;  				levelPrev = levelCurrent;  			}  			lineCurrent++; @@ -527,7 +529,10 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty  		case SCE_H_DEFAULT:  			if (ch == '<') {  				styler.ColourTo(i - 1, StateToPrint); -				state = SCE_H_TAGUNKNOWN; +				if (chNext == '!' && chNext2 == '-' && styler.SafeGetCharAt(i + 3) == '-') +					state = SCE_H_COMMENT; +				else +					state = SCE_H_TAGUNKNOWN;  			} else if (ch == '&') {  				styler.ColourTo(i - 1, SCE_H_DEFAULT);  				state = SCE_H_ENTITY; @@ -573,6 +578,10 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty  				} else {  					if (eClass == SCE_H_COMMENT) {  						state = SCE_H_COMMENT; +						if ((ch == '>') && (chPrev == '-') && (chPrev2 == '-')) { +							styler.ColourTo(i, state); +							state = SCE_H_DEFAULT; +						}  					} else if (eClass == SCE_H_CDATA) {  						state = SCE_H_CDATA;  					} else { | 
