aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornyamatongwe <unknown>2012-01-23 13:29:48 +1100
committernyamatongwe <unknown>2012-01-23 13:29:48 +1100
commit5c1ab39e3566e535bab501671e3f66b25135b8eb (patch)
tree7c3ac3e3b486b50f542f9e3e8bc98a68ba59a90e
parent77f31dbbadb45f7269d9dee64da33db1f197dd6c (diff)
downloadscintilla-mirror-5c1ab39e3566e535bab501671e3f66b25135b8eb.tar.gz
Better handling of data URLs by maintaining state until a ')' marks their end.
From Ross McKay.
-rw-r--r--lexers/LexCSS.cxx27
1 files changed, 19 insertions, 8 deletions
diff --git a/lexers/LexCSS.cxx b/lexers/LexCSS.cxx
index be3e688a5..305a1dd74 100644
--- a/lexers/LexCSS.cxx
+++ b/lexers/LexCSS.cxx
@@ -144,7 +144,6 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
sc.Forward();
sc.ForwardSetState(lastStateC);
} else /* eCommentLine */ {
- sc.Forward();
sc.SetState(lastStateC);
}
}
@@ -286,16 +285,28 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
break;
case SCE_CSS_VALUE:
case SCE_CSS_IMPORTANT:
- if (lastStateVal == SCE_CSS_VARIABLE)
- sc.SetState(SCE_CSS_DEFAULT);
- else
- sc.SetState(SCE_CSS_IDENTIFIER);
+ // data URLs can have semicolons; simplistically check for wrapping parentheses and move along
+ if (insideParentheses) {
+ sc.SetState(lastState);
+ } else {
+ if (lastStateVal == SCE_CSS_VARIABLE) {
+ sc.SetState(SCE_CSS_DEFAULT);
+ } else {
+ sc.SetState(SCE_CSS_IDENTIFIER);
+ }
+ }
break;
case SCE_CSS_VARIABLE:
- if (lastStateVar == SCE_CSS_VALUE)
- sc.SetState(SCE_CSS_IDENTIFIER);
- else
+ if (lastStateVar == SCE_CSS_VALUE) {
+ // data URLs can have semicolons; simplistically check for wrapping parentheses and move along
+ if (insideParentheses) {
+ sc.SetState(SCE_CSS_VALUE);
+ } else {
+ sc.SetState(SCE_CSS_IDENTIFIER);
+ }
+ } else {
sc.SetState(SCE_CSS_DEFAULT);
+ }
break;
}
break;