diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/LexCSS.cxx | 23 | 
1 files changed, 17 insertions, 6 deletions
| diff --git a/src/LexCSS.cxx b/src/LexCSS.cxx index 73d5b07d9..f45ce1cda 100644 --- a/src/LexCSS.cxx +++ b/src/LexCSS.cxx @@ -2,6 +2,7 @@  /** @file LexCSS.cxx   ** Lexer for Cascading Style Sheets   ** Written by Jakub Vrána + ** Improved by Philippe Lhoste (CSS2)   **/  // Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>  // The License.txt file describes the conditions under which this software may be distributed. @@ -113,14 +114,15 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo  					sc.SetState(SCE_CSS_IDENTIFIER);  				break;  			case '}': -				if (lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_VALUE || lastState == SCE_CSS_IMPORTANT || lastState == SCE_CSS_IDENTIFIER) +				if (lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_VALUE || lastState == SCE_CSS_IMPORTANT || +					lastState == SCE_CSS_IDENTIFIER || lastState == SCE_CSS_IDENTIFIER2)  					sc.SetState(SCE_CSS_DEFAULT);  				break;  			case ':':  				if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_DEFAULT ||  					lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS)  					sc.SetState(SCE_CSS_PSEUDOCLASS); -				else if (lastState == SCE_CSS_IDENTIFIER || lastState == SCE_CSS_UNKNOWN_IDENTIFIER) +				else if (lastState == SCE_CSS_IDENTIFIER || lastState == SCE_CSS_IDENTIFIER2 || lastState == SCE_CSS_UNKNOWN_IDENTIFIER)  					sc.SetState(SCE_CSS_VALUE);  				break;  			case '.': @@ -155,7 +157,8 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo  		}  		if (IsAWordChar(sc.chPrev) && ( -			sc.state == SCE_CSS_IDENTIFIER || sc.state == SCE_CSS_UNKNOWN_IDENTIFIER +			sc.state == SCE_CSS_IDENTIFIER || sc.state == SCE_CSS_IDENTIFIER2 +			|| sc.state == SCE_CSS_UNKNOWN_IDENTIFIER  			|| sc.state == SCE_CSS_PSEUDOCLASS || sc.state == SCE_CSS_UNKNOWN_PSEUDOCLASS  			|| sc.state == SCE_CSS_IMPORTANT  		)) { @@ -166,12 +169,19 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo  				s2++;  			switch (sc.state) {  			case SCE_CSS_IDENTIFIER: -				if (!keywords.InList(s2) && !keywords2.InList(s2)) -					sc.ChangeState(SCE_CSS_UNKNOWN_IDENTIFIER); +				if (!keywords.InList(s2)) { +					if (keywords2.InList(s2)) { +						sc.ChangeState(SCE_CSS_IDENTIFIER2); +					} else { +						sc.ChangeState(SCE_CSS_UNKNOWN_IDENTIFIER); +					} +				}  				break;  			case SCE_CSS_UNKNOWN_IDENTIFIER:  				if (keywords.InList(s2))  					sc.ChangeState(SCE_CSS_IDENTIFIER); +				else if (keywords2.InList(s2)) +					sc.ChangeState(SCE_CSS_IDENTIFIER2);  				break;  			case SCE_CSS_PSEUDOCLASS:  				if (!pseudoClasses.InList(s2)) @@ -262,8 +272,9 @@ static void FoldCSSDoc(unsigned int startPos, int length, int, WordList *[], Acc  }  static const char * const cssWordListDesc[] = { -	"Keywords", +	"CSS1 Keywords",  	"Pseudo classes", +	"CSS2 Keywords",  	0  }; | 
