aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/LexCSS.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/LexCSS.cxx')
-rw-r--r--src/LexCSS.cxx23
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
};