~ubuntu-branches/ubuntu/natty/geany/natty

« back to all changes in this revision

Viewing changes to scintilla/LexCSS.cxx

  • Committer: Bazaar Package Importer
  • Author(s): Chow Loong Jin
  • Date: 2010-08-07 03:23:12 UTC
  • mfrom: (1.4.3 upstream)
  • mto: This revision was merged to the branch mainline in revision 22.
  • Revision ID: james.westby@ubuntu.com-20100807032312-ot70ac9d50cn79we
Tags: upstream-0.19
ImportĀ upstreamĀ versionĀ 0.19

Show diffs side-by-side

added added

removed removed

Lines of Context:
62
62
 
63
63
        int lastState = -1; // before operator
64
64
        int lastStateC = -1; // before comment
 
65
        int lastStateS = -1; // before single-quoted/double-quoted string
65
66
        int op = ' '; // last operator
66
67
        int opPrev = ' '; // last operator
67
68
 
105
106
                                i--;
106
107
                        if ((sc.currentPos - i) % 2 == 1)
107
108
                                continue;
108
 
                        sc.ForwardSetState(SCE_CSS_VALUE);
 
109
                        sc.ForwardSetState(lastStateS);
109
110
                }
110
111
 
111
112
                if (sc.state == SCE_CSS_OPERATOR) {
140
141
                                        sc.SetState(SCE_CSS_TAG);
141
142
                                break;
142
143
                        case '{':
143
 
                                if (lastState == SCE_CSS_DIRECTIVE)
 
144
                                if (lastState == SCE_CSS_MEDIA)
144
145
                                        sc.SetState(SCE_CSS_DEFAULT);
145
 
                                else if (lastState == SCE_CSS_TAG)
 
146
                                else if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DIRECTIVE)
146
147
                                        sc.SetState(SCE_CSS_IDENTIFIER);
147
148
                                break;
148
149
                        case '}':
219
220
                        sc.state == SCE_CSS_PSEUDOCLASS || sc.state == SCE_CSS_PSEUDOELEMENT ||
220
221
                        sc.state == SCE_CSS_EXTENDED_PSEUDOCLASS || sc.state == SCE_CSS_EXTENDED_PSEUDOELEMENT ||
221
222
                        sc.state == SCE_CSS_UNKNOWN_PSEUDOCLASS ||
222
 
                        sc.state == SCE_CSS_IMPORTANT
 
223
                        sc.state == SCE_CSS_IMPORTANT ||
 
224
                        sc.state == SCE_CSS_DIRECTIVE
223
225
                )) {
224
226
                        char s[100];
225
227
                        sc.GetCurrentLowered(s, sizeof(s));
263
265
                                if (strcmp(s2, "important") != 0)
264
266
                                        sc.ChangeState(SCE_CSS_VALUE);
265
267
                                break;
 
268
                        case SCE_CSS_DIRECTIVE:
 
269
                                if (op == '@' && strcmp(s2, "media") == 0)
 
270
                                        sc.ChangeState(SCE_CSS_MEDIA);
 
271
                                break;
266
272
                        }
267
273
                }
268
274
 
280
286
                        lastStateC = sc.state;
281
287
                        sc.SetState(SCE_CSS_COMMENT);
282
288
                        sc.Forward();
283
 
                } else if (sc.state == SCE_CSS_VALUE && (sc.ch == '\"' || sc.ch == '\'')) {
 
289
                } else if ((sc.state == SCE_CSS_VALUE || sc.state == SCE_CSS_ATTRIBUTE)
 
290
                        && (sc.ch == '\"' || sc.ch == '\'')) {
 
291
                        lastStateS = sc.state;
284
292
                        sc.SetState((sc.ch == '\"' ? SCE_CSS_DOUBLESTRING : SCE_CSS_SINGLESTRING));
285
293
                } else if (IsCssOperator(sc.ch)
286
294
                        && (sc.state != SCE_CSS_ATTRIBUTE || sc.ch == ']')
287
295
                        && (sc.state != SCE_CSS_VALUE || sc.ch == ';' || sc.ch == '}' || sc.ch == '!')
288
 
                        && (sc.state != SCE_CSS_DIRECTIVE || sc.ch == ';' || sc.ch == '{')
 
296
                        && ((sc.state != SCE_CSS_DIRECTIVE && sc.state != SCE_CSS_MEDIA) || sc.ch == ';' || sc.ch == '{')
289
297
                ) {
290
298
                        if (sc.state != SCE_CSS_OPERATOR)
291
299
                                lastState = sc.state;