diff options
Diffstat (limited to 'src/LexCSS.cxx')
-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 }; |