Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/src/resources/pandoc/syntax-definitions/scss.xml
12926 views
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE language SYSTEM "language.dtd"
3
[
4
<!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization -->
5
<!ENTITY nmstart "[_a-zA-Z]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
6
<!ENTITY nmchar "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
7
]>
8
9
<!--
10
11
Kate SCSS syntax highlighting definition
12
13
Changelog:
14
15
- Version 7, by Jonathan Poelen
16
- fix tag followed by a pseudo-class in a nested rule (@media, ...)
17
- fix constraint in a rule
18
- fix Kate auto-completion for properties and rules
19
- fix highlighting of pseudoclass/pseudoelement in a sub-rule
20
- New highlighting categories: Keyword, Operator, Separator Symbol, SpecialChar, Value Keyword, Color, Number, Unit, Selector Tag, Placeholder Selector
21
22
- Version 4, by Guo Yunhe [email protected]
23
- Remake for complex SCSS syntax, avoid errors
24
25
- Version 2.06, by Guo Yunhe
26
- Add all W3C Work Draft properties, inherit rules from css.xml
27
28
- Version 1.2.03.6, by Mte90
29
- Css3 Tag
30
31
- Version 1.2.03.1, by Tijn Schuurmans
32
- Added basic support for "@include mixin();"
33
- Clean the indentation to use 4 spaces everywhere
34
35
-->
36
37
<language name="SCSS" version="13" kateversion="5.53" section="Markup" extensions="*.scss" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen ([email protected])" license="LGPL">
38
39
<highlighting>
40
<list name="properties">
41
<include>properties##CSS</include>
42
</list>
43
44
<list name="sub-properties">
45
<item>adjust</item>
46
<item>after</item>
47
<item>align-all</item>
48
<item>align</item>
49
<item>align-last</item>
50
<item>alternates</item>
51
<item>anchor</item>
52
<item>area</item>
53
<item>areas</item>
54
<item>attachment</item>
55
<item>auto-columns</item>
56
<item>auto-flow</item>
57
<item>auto-rows</item>
58
<item>baseline</item>
59
<item>basis</item>
60
<item>before</item>
61
<item>bidi</item>
62
<item>blend-mode</item>
63
<item>block-color</item>
64
<item>block-end-color</item>
65
<item>block-end</item>
66
<item>block-end-style</item>
67
<item>block-end-width</item>
68
<item>block</item>
69
<item>block-start-color</item>
70
<item>block-start</item>
71
<item>block-start-style</item>
72
<item>block-start-width</item>
73
<item>block-style</item>
74
<item>block-width</item>
75
<item>border-mode</item>
76
<item>border-outset</item>
77
<item>border-repeat</item>
78
<item>border-slice</item>
79
<item>border-source</item>
80
<item>bottom-color</item>
81
<item>bottom-left-radius</item>
82
<item>bottom-right-radius</item>
83
<item>bottom-style</item>
84
<item>bottom-width</item>
85
<item>boundary</item>
86
<item>box</item>
87
<item>break</item>
88
<item>caps</item>
89
<item>cells</item>
90
<item>change</item>
91
<item>character</item>
92
<item>chars</item>
93
<item>collapse</item>
94
<item>column-end</item>
95
<item>column</item>
96
<item>column-start</item>
97
<item>combine-upright</item>
98
<item>composite</item>
99
<item>count</item>
100
<item>decoration-break</item>
101
<item>decoration-color</item>
102
<item>decoration</item>
103
<item>decoration-line</item>
104
<item>decoration-skip-ink</item>
105
<item>decoration-skip</item>
106
<item>decoration-style</item>
107
<item>decoration-width</item>
108
<item>defer</item>
109
<item>delay</item>
110
<item>distance</item>
111
<item>down</item>
112
<item>duration</item>
113
<item>during</item>
114
<item>east-asian</item>
115
<item>emoji</item>
116
<item>emphasis-color</item>
117
<item>emphasis</item>
118
<item>emphasis-position</item>
119
<item>emphasis-skip</item>
120
<item>emphasis-style</item>
121
<item>end-color</item>
122
<item>end</item>
123
<item>end-style</item>
124
<item>end-width</item>
125
<item>events</item>
126
<item>family</item>
127
<item>feature-settings</item>
128
<item>fill-mode</item>
129
<item>filters</item>
130
<item>fit</item>
131
<item>flow</item>
132
<item>fragment</item>
133
<item>from</item>
134
<item>function</item>
135
<item>grow</item>
136
<item>gutter</item>
137
<item>header</item>
138
<item>height-step</item>
139
<item>image</item>
140
<item>image-outset</item>
141
<item>image-repeat</item>
142
<item>image-slice</item>
143
<item>image-source</item>
144
<item>image-threshold</item>
145
<item>image-transform</item>
146
<item>image-width</item>
147
<item>increment</item>
148
<item>indent</item>
149
<item>inline-color</item>
150
<item>inline-end-color</item>
151
<item>inline-end</item>
152
<item>inline-end-style</item>
153
<item>inline-end-width</item>
154
<item>inline</item>
155
<item>inline-start-color</item>
156
<item>inline-start</item>
157
<item>inline-start-style</item>
158
<item>inline-start-width</item>
159
<item>inline-style</item>
160
<item>inline-width</item>
161
<item>insert</item>
162
<item>inside</item>
163
<item>interpolation-filters</item>
164
<item>into</item>
165
<item>items</item>
166
<item>iteration-count</item>
167
<item>justify</item>
168
<item>kerning</item>
169
<item>knockout-left</item>
170
<item>knockout-right</item>
171
<item>label</item>
172
<item>language-override</item>
173
<item>last</item>
174
<item>layout</item>
175
<item>left-color</item>
176
<item>left-radius</item>
177
<item>left-style</item>
178
<item>left-width</item>
179
<item>letter-align</item>
180
<item>letter</item>
181
<item>letter-wrap</item>
182
<item>level</item>
183
<item>ligatures</item>
184
<item>limit-chars</item>
185
<item>limit-last</item>
186
<item>limit-lines</item>
187
<item>limit-zone</item>
188
<item>line</item>
189
<item>lines</item>
190
<item>loop</item>
191
<item>max-size</item>
192
<item>merge</item>
193
<item>mid</item>
194
<item>min-size</item>
195
<item>mode</item>
196
<item>name</item>
197
<item>numeral</item>
198
<item>numeric</item>
199
<item>optical-sizing</item>
200
<item>orientation</item>
201
<item>orientation-vertical</item>
202
<item>origin</item>
203
<item>outset</item>
204
<item>outside</item>
205
<item>override</item>
206
<item>palette</item>
207
<item>path</item>
208
<item>pattern</item>
209
<item>play-state</item>
210
<item>point</item>
211
<item>policy</item>
212
<item>property</item>
213
<item>punctuation</item>
214
<item>radius</item>
215
<item>range</item>
216
<item>rate</item>
217
<item>reference</item>
218
<item>rendering</item>
219
<item>repeat</item>
220
<item>reset</item>
221
<item>resolution</item>
222
<item>right-color</item>
223
<item>right-radius</item>
224
<item>right-style</item>
225
<item>right-width</item>
226
<item>rotate</item>
227
<item>round</item>
228
<item>row-end</item>
229
<item>row</item>
230
<item>rows</item>
231
<item>row-start</item>
232
<item>rule-color</item>
233
<item>rule</item>
234
<item>rule-style</item>
235
<item>rule-width</item>
236
<item>segment</item>
237
<item>select</item>
238
<item>self</item>
239
<item>set</item>
240
<item>settings</item>
241
<item>shadow</item>
242
<item>shape</item>
243
<item>shift</item>
244
<item>shrink</item>
245
<item>side</item>
246
<item>size-adjust</item>
247
<item>sizing</item>
248
<item>skip-ink</item>
249
<item>skip</item>
250
<item>slice</item>
251
<item>snap</item>
252
<item>source</item>
253
<item>space-collapse</item>
254
<item>space</item>
255
<item>space-trim</item>
256
<item>spacing</item>
257
<item>span</item>
258
<item>speed</item>
259
<item>start-color</item>
260
<item>start</item>
261
<item>start-style</item>
262
<item>start-width</item>
263
<item>state</item>
264
<item>step-align</item>
265
<item>step-insert</item>
266
<item>step</item>
267
<item>step-round</item>
268
<item>step-size</item>
269
<item>stretch</item>
270
<item>style-image</item>
271
<item>style</item>
272
<item>style-position</item>
273
<item>style-type</item>
274
<item>synthesis</item>
275
<item>template-areas</item>
276
<item>template-columns</item>
277
<item>template</item>
278
<item>template-rows</item>
279
<item>threshold</item>
280
<item>through</item>
281
<item>timing-function</item>
282
<item>top-color</item>
283
<item>top-left-radius</item>
284
<item>top-right-radius</item>
285
<item>top-style</item>
286
<item>top-width</item>
287
<item>trim</item>
288
<item>type</item>
289
<item>underline-offset</item>
290
<item>underline-position</item>
291
<item>up</item>
292
<item>upright</item>
293
<item>variant-alternates</item>
294
<item>variant-caps</item>
295
<item>variant-east-asian</item>
296
<item>variant-emoji</item>
297
<item>variant</item>
298
<item>variant-ligatures</item>
299
<item>variant-numeric</item>
300
<item>variant-position</item>
301
<item>variation-settings</item>
302
<item>vertical</item>
303
<item>weight</item>
304
<item>wrap</item>
305
<item>x</item>
306
<item>y</item>
307
<item>zone</item>
308
</list>
309
310
<list name="special values">
311
<item>true</item>
312
<item>false</item>
313
<item>null</item>
314
</list>
315
316
<list name="value keywords">
317
<include>value keywords##CSS</include>
318
</list>
319
320
<list name="values">
321
<include>values##CSS</include>
322
</list>
323
324
<list name="colors">
325
<include>colors##CSS</include>
326
</list>
327
328
<list name="functions">
329
<include>functions##CSS</include>
330
331
<!-- sass -->
332
<item>red</item>
333
<item>green</item>
334
<item>blue</item>
335
<item>mix</item>
336
<item>hue</item>
337
<item>saturation</item>
338
<item>lightness</item>
339
<item>adjust-hue</item>
340
<item>lighten</item>
341
<item>darken</item>
342
<item>saturate</item>
343
<item>desaturate</item>
344
<item>grayscale</item>
345
<item>complement</item>
346
<item>invert</item>
347
<item>alpha</item>
348
<item>opacify</item>
349
<item>transparentize</item>
350
<item>adjust-color</item>
351
<item>scale-color</item>
352
<item>change-color</item>
353
<item>ie-hex-str</item>
354
<item>unquote</item>
355
<item>quote</item>
356
<item>str-length</item>
357
<item>str-insert</item>
358
<item>str-index</item>
359
<item>str-slice</item>
360
<item>to-upper-case</item>
361
<item>to-lower-case</item>
362
<item>percentage</item>
363
<item>round</item>
364
<item>ceil</item>
365
<item>floor</item>
366
<item>abs</item>
367
<item>min</item>
368
<item>max</item>
369
<item>random</item>
370
<item>length</item>
371
<item>nth</item>
372
<item>set-nth</item>
373
<item>join</item>
374
<item>append</item>
375
<item>zip</item>
376
<item>index</item>
377
<item>list-separator</item>
378
<item>is-bracketed</item>
379
<item>map-get</item>
380
<item>map-merge</item>
381
<item>map-remove</item>
382
<item>map-keys</item>
383
<item>map-values</item>
384
<item>map-has-key</item>
385
<item>keywords</item>
386
<item>selector-nest</item>
387
<item>selector-append</item>
388
<item>selector-extend</item>
389
<item>selector-replace</item>
390
<item>selector-unify</item>
391
<item>is-superselector</item>
392
<item>simple-selectors</item>
393
<item>selector-parse</item>
394
<item>feature-exists</item>
395
<item>variable-exists</item>
396
<item>global-variable-exists</item>
397
<item>function-exists</item>
398
<item>mixin-exists</item>
399
<item>content-exists</item>
400
<item>inspect</item>
401
<item>type-of</item>
402
<item>unit</item>
403
<item>unitless</item>
404
<item>comparable</item>
405
<item>call</item>
406
<item>get-function</item>
407
<item>if</item>
408
<item>unique-id</item>
409
</list>
410
411
<list name="medias">
412
<include>medias##CSS</include>
413
</list>
414
415
<!-- prefixed by :: -->
416
<list name="pseudoelements">
417
<include>pseudoelements##CSS</include>
418
</list>
419
420
<!-- prefixed by : -->
421
<list name="pseudoclasses">
422
<include>pseudoclasses##CSS</include>
423
</list>
424
425
<list name="pseudoclass-selector">
426
<include>pseudoclass-selector##CSS</include>
427
</list>
428
429
<list name="pseudoclasses-@page">
430
<include>pseudoclasses-@page##CSS</include>
431
</list>
432
433
<list name="at-rules">
434
<include>at-rules##CSS</include>
435
436
<!-- scss -->
437
<item>@debug</item>
438
<item>@warn</item>
439
<item>@error</item>
440
<item>@content</item>
441
<item>@return</item>
442
</list>
443
444
<list name="nested at-rules">
445
<include>nested at-rules##CSS</include>
446
447
<!-- scss -->
448
<item>@at-rule</item>
449
<item>@for</item>
450
<item>@each</item>
451
<item>@while</item>
452
</list>
453
454
<list name="inline and nested at-rules">
455
<!-- CSS: inline -->
456
<!-- SCSS: inline or block -->
457
<item>@include</item>
458
</list>
459
460
<list name="@extend">
461
<item>@extend</item>
462
</list>
463
464
<list name="@if">
465
<item>@if</item>
466
</list>
467
468
<list name="@else">
469
<item>@else</item>
470
</list>
471
472
<list name="@mixin">
473
<item>@mixin</item>
474
<item>@function</item>
475
</list>
476
477
<list name="@viewport">
478
<item>@viewport</item>
479
</list>
480
481
<list name="within-@viewport">
482
<include>within-@viewport##CSS</include>
483
</list>
484
485
<list name="@page">
486
<item>@page</item>
487
</list>
488
489
<list name="within-@page">
490
<include>within-@page##CSS</include>
491
</list>
492
493
<list name="@font-face">
494
<item>@font-face</item>
495
</list>
496
497
<list name="within-@font-face">
498
<include>within-@font-face##CSS</include>
499
</list>
500
501
<list name="@keyframes">
502
<item>@keyframes</item>
503
</list>
504
505
<list name="within-@keyframes">
506
<include>within-@keyframes##CSS</include>
507
</list>
508
509
<list name="media operators">
510
<include>media operators##CSS</include>
511
</list>
512
513
<list name="operators">
514
<item>and</item>
515
<item>or</item>
516
<item>not</item>
517
</list>
518
519
<list name="annotations">
520
<item>important</item>
521
<item>default</item>
522
<item>global</item>
523
</list>
524
525
<contexts>
526
<context name="Base" attribute="Normal Text" lineEndContext="#stay">
527
<DetectSpaces />
528
<IncludeRules context="FindComments" />
529
<DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
530
<DetectChar attribute="At Rule" context="SelectAtRule" char="@" lookAhead="true" />
531
<!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
532
<DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
533
<DetectChar attribute="Separator Symbol" context="IsSelectors" char="," />
534
<AnyChar attribute="Operator" context="IsSelectors" String="*>+~|&amp;" />
535
<RegExpr attribute="Selector Pseudo" context="SelectorPseudo" String=":(?=[a-z:])" />
536
<RegExpr attribute="Selector Id" context="IsSelectors" String="#[-]?(&nmstart;)(&nmchar;)*" />
537
<RegExpr attribute="Selector Class" context="IsSelectors" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
538
<RegExpr attribute="Placeholder Selector" context="IsSelectors" String="%[_a-zA-Z][_a-zA-Z\-]*" />
539
<RegExpr attribute="Selector Tag" context="IsSelectors" String="[-]?(&nmstart;)(&nmchar;)*(?=\s|:?[#.&amp;{[*>+~|,]|:[a-z:])" />
540
<RegExpr attribute="Variable" context="VariableDefine" String="\$[a-zA-Z0-9\-_]+(?=\s*:)" />
541
<Detect2Chars attribute="Interpolation" context="InterpolationMaybeProperty" char="#" char1="{" />
542
</context>
543
544
<context name="IsSelectors" attribute="Normal Text" lineEndContext="#stay">
545
<DetectSpaces />
546
<DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
547
<DetectChar attribute="At Rule" context="#pop!SelectAtRule" char="@" lookAhead="true" />
548
<DetectChar attribute="Separator Symbol" context="#stay" char="," />
549
<DetectChar attribute="Error" context="#pop" char=";" />
550
<AnyChar attribute="Operator" context="#stay" String="*>+~|&amp;" />
551
<IncludeRules context="SelectorTypes" />
552
</context>
553
554
<context name="FindSelector" attribute="Normal Text" lineEndContext="#stay">
555
<AnyChar attribute="Error" context="#stay" String=",&amp;" />
556
<AnyChar attribute="Operator" context="#stay" String="*>+~|" />
557
<IncludeRules context="SelectorTypes" />
558
</context>
559
560
<context name="SelectorTypes" attribute="Normal Text" lineEndContext="#stay">
561
<!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
562
<DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
563
<DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
564
<IncludeRules context="FindComments" />
565
<RegExpr attribute="Selector Id" context="#stay" String="#[-]?(&nmstart;)(&nmchar;)*" />
566
<RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
567
<RegExpr attribute="Placeholder Selector" context="#stay" String="%[_a-zA-Z][_a-zA-Z\-]*" />
568
<RegExpr attribute="Selector Tag" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
569
<Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
570
</context>
571
572
<context name="VariableDefine" attribute="Normal Text" lineEndContext="#stay">
573
<DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
574
</context>
575
576
<context name="Interpolation" attribute="Normal Text" lineEndContext="#stay">
577
<DetectSpaces />
578
<DetectChar attribute="Interpolation" context="#pop" char="}" />
579
<IncludeRules context="FindStrings" />
580
<IncludeRules context="FindFunctions" />
581
<IncludeRules context="FindValues" />
582
<!-- auto-completion only -->
583
<keyword attribute="Normal Text" context="#stay" String="functions" />
584
</context>
585
586
<context name="InterpolationMaybeProperty" attribute="Normal Text" lineEndContext="#stay">
587
<DetectSpaces />
588
<DetectChar attribute="Interpolation" context="#pop!MaybeProperty" char="}" />
589
<IncludeRules context="FindStrings" />
590
<IncludeRules context="FindFunctions" />
591
<IncludeRules context="FindValues" />
592
<!-- auto-completion only -->
593
<keyword attribute="Normal Text" context="#stay" String="functions" />
594
</context>
595
596
<context name="MaybeProperty" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
597
<DetectSpaces />
598
<IncludeRules context="FindComments" />
599
<RegExpr attribute="Normal Text" context="Rule" String=":($|[/{\s0-9$&quot;'])" lookAhead="true"/>
600
</context>
601
602
603
<!-- find functions // rgba(255,255,255,0.75) -->
604
<context name="FindFunctions" attribute="Normal Text" lineEndContext="#stay">
605
<RegExpr attribute="Function" context="Function" String="[a-z\-]{2,}\(" lookAhead="true" />
606
</context>
607
608
<!-- find values // 10px 12pt 2.5em 1rem 75% #ffcc99 red solid -->
609
<context name="FindValues" attribute="Normal Text" lineEndContext="#stay">
610
<DetectChar attribute="Annotation" context="Annotation" char="!" />
611
<keyword attribute="Operator" context="#stay" String="operators" />
612
<keyword attribute="Value Keyword" context="#stay" String="value keywords" />
613
<keyword attribute="Value" context="#stay" String="values" />
614
<keyword attribute="Color" context="#stay" String="colors" />
615
<RegExpr attribute="Number" context="FindUnits" String="([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?" />
616
<RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3,4}){1,2}\b" />
617
<RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
618
<keyword attribute="Value Keyword" context="#stay" String="special values" />
619
<RegExpr attribute="Normal Text" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
620
<AnyChar attribute="Operator" context="#stay" String="*/+%-" />
621
<Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
622
</context>
623
624
<context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
625
<keyword attribute="Annotation" context="#pop" String="annotations" />
626
</context>
627
628
<context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
629
<RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx|x)\b)" />
630
</context>
631
632
<!-- find strings // "some words" 'some words' -->
633
<context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
634
<DetectChar attribute="String" context="StringDQ" char="&quot;" />
635
<DetectChar attribute="String" context="StringSQ" char="'" />
636
</context>
637
638
<!-- find comments // /* comment */ -->
639
<context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
640
<Detect2Chars attribute="Comment" context="IsComments" char="/" char1="/" lookAhead="true"/>
641
<Detect2Chars attribute="Comment" context="IsComments" char="/" char1="*" lookAhead="true"/>
642
</context>
643
644
<context name="IsComments" attribute="Normal Text" lineEndContext="#stay">
645
<RegExpr attribute="Region Marker" context="#stay" String="/\*\s*BEGIN\b.*\*/|//\s*BEGIN\b.*" beginRegion="UserDefined" />
646
<RegExpr attribute="Region Marker" context="#stay" String="/\*\s*END\b.*\*/|//\s*END\b.*" endRegion="UserDefined" />
647
<Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment" />
648
<Detect2Chars attribute="Comment" context="SassComment" char="/" char1="/" />
649
</context>
650
651
<context name="SassComment" attribute="Comment" lineEndContext="#pop#pop">
652
<DetectSpaces />
653
<IncludeRules context="##Comments" />
654
<DetectIdentifier />
655
</context>
656
657
<context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
658
<keyword attribute="At Rule" context="#pop!NestedAtRule" String="nested at-rules" />
659
<keyword attribute="At Rule" context="#pop!AtRule" String="at-rules" />
660
<keyword attribute="At Rule" context="#pop!UnknownAtRule" String="inline and nested at-rules" />
661
<keyword attribute="At Rule" context="#pop!@extend" String="@extend" />
662
<keyword attribute="At Rule" context="#pop!@mixin" String="@mixin" />
663
<keyword attribute="At Rule" context="#pop!@keyframes" String="@keyframes" />
664
<keyword attribute="At Rule" context="#pop!@viewport" String="@viewport" />
665
<keyword attribute="At Rule" context="#pop!@font-face" String="@font-face" />
666
<keyword attribute="At Rule" context="#pop!@if" String="@if" />
667
<keyword attribute="At Rule" context="#pop!@else" String="@else" />
668
<keyword attribute="At Rule" context="#pop!@page" String="@page" />
669
<RegExpr attribute="At Rule" context="#pop!UnknownAtRule" String="@[a-zA-Z0-9\-_]+\b" />
670
</context>
671
672
<context name="@if" attribute="Normal Text" lineEndContext="#stay">
673
<DetectSpaces />
674
<DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
675
<IncludeRules context="FindComments" />
676
<IncludeRules context="FindStrings" />
677
<IncludeRules context="FindFunctions" />
678
<IncludeRules context="FindValues" />
679
<AnyChar attribute="Operator" context="#stay" String="=!&lt;&gt;" />
680
<!-- auto-completion only -->
681
<keyword attribute="Normal Text" context="#stay" String="functions" />
682
</context>
683
684
<context name="@else" attribute="Error" lineEndContext="#stay">
685
<DetectSpaces attribute="Normal Text" />
686
<DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
687
<IncludeRules context="FindComments" />
688
<WordDetect attribute="At Rule" context="#pop!@if" String="if" />
689
<DetectIdentifier attribute="Error" />
690
</context>
691
692
<context name="@extend" attribute="Normal Text" lineEndContext="#stay">
693
<DetectSpaces />
694
<DetectChar attribute="Separator Symbol" context="#pop" char=";" />
695
<DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
696
<IncludeRules context="FindSelector" />
697
</context>
698
699
<context name="@mixin" attribute="Normal Text" lineEndContext="#stay">
700
<DetectSpaces />
701
<IncludeRules context="FindComments" />
702
<RegExpr attribute="Function" context="MixinParameter" String="[a-zA-Z0-9\-_]+" />
703
</context>
704
705
<context name="MixinParameter" attribute="Error" lineEndContext="#stay">
706
<DetectSpaces attribute="Normal Text" />
707
<AnyChar attribute="Normal Text" context="#stay" String="()" />
708
<DetectChar attribute="Separator Symbol" context="#stay" char="," />
709
<DetectChar attribute="Normal Text" context="#pop#pop!RuleSet" char="{" beginRegion="ruleset" />
710
<IncludeRules context="FindComments" />
711
<RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
712
<StringDetect attribute="Operator" context="#stay" String="..." />
713
</context>
714
715
<context name="@keyframes" attribute="Normal Text" lineEndContext="#stay">
716
<DetectSpaces />
717
<IncludeRules context="FindComments" />
718
<DetectChar attribute="Normal Text" context="Within-@keyframes" char="{" beginRegion="ruleset" />
719
</context>
720
721
<context name="Within-@keyframes" attribute="Normal Text" lineEndContext="#stay">
722
<DetectSpaces />
723
<IncludeRules context="FindComments" />
724
<DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset" />
725
<DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
726
<keyword attribute="Value" context="#stay" String="within-@keyframes" />
727
<RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+%" />
728
</context>
729
730
<context name="@viewport" attribute="Normal Text" lineEndContext="#stay">
731
<DetectSpaces />
732
<IncludeRules context="FindComments" />
733
<DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
734
<DetectChar attribute="Normal Text" context="#pop!Within-@viewport" char="{" beginRegion="ruleset" />
735
</context>
736
737
<context name="Within-@viewport" attribute="Normal Text" lineEndContext="#stay">
738
<DetectSpaces />
739
<keyword attribute="Property" context="IsProperty" String="within-@viewport" />
740
<IncludeRules context="RuleSet" />
741
</context>
742
743
<context name="@font-face" attribute="Normal Text" lineEndContext="#stay">
744
<DetectSpaces />
745
<IncludeRules context="FindComments" />
746
<DetectChar attribute="Normal Text" context="#pop!Within-@font-face" char="{" beginRegion="ruleset" />
747
</context>
748
749
<context name="Within-@font-face" attribute="Normal Text" lineEndContext="#stay">
750
<DetectSpaces />
751
<IncludeRules context="FindComments" />
752
<keyword attribute="Property" context="IsProperty" String="within-@font-face" />
753
<RegExpr attribute="Unknown Property" context="IsProperty" String="[A-Za-z_-]+\b" />
754
<DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
755
</context>
756
757
<context name="@page" attribute="Normal Text" lineEndContext="#stay">
758
<DetectSpaces />
759
<IncludeRules context="FindComments" />
760
<DetectChar attribute="Selector Pseudo" context="SelectorPseudo-@page" char=":" />
761
<DetectChar attribute="Normal Text" context="#pop!Within-@page" char="{" beginRegion="ruleset" />
762
</context>
763
764
<context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
765
<keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses-@page" />
766
<RegExpr attribute="Selector Pseudo" context="#pop" String="[-a-zA-Z][-a-zA-Z0-9]*" />
767
</context>
768
769
<context name="Within-@page" attribute="Normal Text" lineEndContext="#stay">
770
<DetectSpaces />
771
<keyword attribute="Property" context="IsProperty" String="within-@page" />
772
<IncludeRules context="RuleSet" />
773
</context>
774
775
<context name="IsProperty" attribute="Error" lineEndContext="#stay">
776
<DetectSpaces attribute="Normal Text" />
777
<DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
778
<IncludeRules context="FindComments" />
779
</context>
780
781
<context name="NestedAtRule" attribute="Normal Text" lineEndContext="#stay">
782
<DetectSpaces />
783
<DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
784
<IncludeRules context="AtRuleValue" />
785
</context>
786
787
<context name="AtRule" attribute="Normal Text" lineEndContext="#pop">
788
<DetectSpaces />
789
<DetectChar attribute="Separator Symbol" context="#pop" char=";" />
790
<DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
791
<IncludeRules context="AtRuleValue" />
792
</context>
793
794
<context name="UnknownAtRule" attribute="Normal Text" lineEndContext="#pop">
795
<DetectSpaces />
796
<DetectChar attribute="Separator Symbol" context="#pop" char=";" />
797
<DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
798
<DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
799
<IncludeRules context="AtRuleValue" />
800
</context>
801
802
<context name="AtRuleValue" attribute="Normal Text" lineEndContext="#stay">
803
<DetectChar attribute="Operator" context="#stay" char="&amp;" />
804
<IncludeRules context="FindComments" />
805
<IncludeRules context="FindStrings" />
806
<IncludeRules context="FindFunctions" />
807
<keyword attribute="Keyword" context="#stay" String="media operators" />
808
<RegExpr attribute="Property" context="#stay" String="[A-Za-z_-]+(?=\s*:)" />
809
<keyword attribute="Value" context="#stay" String="medias" />
810
<IncludeRules context="FindValues" />
811
<!-- auto-completion only -->
812
<keyword attribute="Normal Text" context="#stay" String="functions" />
813
</context>
814
815
<context name="SelectorAttr" attribute="Selector Attribute" lineEndContext="#stay">
816
<DetectChar attribute="Selector Attribute" context="#pop" char="]" />
817
<IncludeRules context="FindStrings" />
818
<DetectChar attribute="Operator" context="SelectorAttrValue" char="=" />
819
<Detect2Chars attribute="Operator" context="SelectorAttrValue" char="~" char1="=" />
820
<Detect2Chars attribute="Operator" context="SelectorAttrValue" char="^" char1="=" />
821
<Detect2Chars attribute="Operator" context="SelectorAttrValue" char="$" char1="=" />
822
<Detect2Chars attribute="Operator" context="SelectorAttrValue" char="*" char1="=" />
823
<Detect2Chars attribute="Operator" context="SelectorAttrValue" char="|" char1="=" />
824
<DetectIdentifier />
825
</context>
826
827
<context name="SelectorAttrValue" attribute="String" lineEndContext="#stay">
828
<DetectChar attribute="Selector Attribute" context="#pop#pop" char="]" />
829
<DetectIdentifier />
830
</context>
831
832
<context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop">
833
<DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" />
834
<keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-selector" />
835
<keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" />
836
<RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
837
</context>
838
839
<context name="SelectorPseudoElements" attribute="Selector Pseudo" lineEndContext="#pop#pop">
840
<keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudoelements" />
841
<RegExpr attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
842
</context>
843
844
<context name="SelectorPseudoValueSelector" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
845
<DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueCloseSelector" char="(" />
846
</context>
847
848
<context name="SelectorPseudoValueCloseSelector" attribute="Normal Text" lineEndContext="#stay">
849
<DetectSpaces />
850
<DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
851
<DetectChar attribute="Error" context="#pop#pop#pop!RuleSet" char="{" beginRegion="ruleset" />
852
<IncludeRules context="FindSelector" />
853
</context>
854
855
<context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
856
<DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueClose" char="(" />
857
</context>
858
859
<context name="SelectorPseudoValueClose" attribute="Selector Pseudo" lineEndContext="#pop#pop#pop">
860
<DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
861
<DetectIdentifier />
862
</context>
863
864
<context name="Comment" attribute="Comment" lineEndContext="#stay">
865
<DetectSpaces />
866
<Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment" />
867
<IncludeRules context="##Comments" />
868
<DetectIdentifier />
869
</context>
870
871
<context name="RuleSet" attribute="Normal Text" lineEndContext="#stay">
872
<DetectSpaces />
873
<DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
874
<RegExpr attribute="Property" context="Rule" String="[A-Za-z_-]+\s*:($|[/{\s0-9$&quot;'])" lookAhead="true" />
875
<IncludeRules context="Base" />
876
<!-- auto-completion only, includes by a previous rule -->
877
<keyword attribute="Normal Text" context="#stay" String="properties" />
878
</context>
879
880
<context name="Rule" attribute="Normal Text" lineEndContext="#stay">
881
<DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
882
<Detect2Chars attribute="Variable" context="IsVariable" char="-" char1="-" />
883
<keyword attribute="Property" context="#stay" String="properties" />
884
<RegExpr attribute="Unknown Property" context="#stay" String="[^:]+" />
885
</context>
886
887
<context name="IsVariable" attribute="Normal Text" lineEndContext="#pop">
888
<DetectChar attribute="Normal Text" context="#pop!RuleParameters" char=":" />
889
<RegExpr attribute="Variable" context="#stay" String="[^:]+" />
890
</context>
891
892
<context name="RuleParameters" attribute="Normal Text" lineEndContext="#stay">
893
<DetectSpaces />
894
<!-- Jump out conditions -->
895
<DetectChar attribute="Separator Symbol" context="#pop#pop" char=";" />
896
<DetectChar attribute="Separator Symbol" context="#stay" char="," />
897
<DetectChar attribute="Normal Text" context="#pop#pop#pop" char="}" endRegion="ruleset" />
898
<DetectChar attribute="Normal Text" context="SubRule" char="{" beginRegion="ruleset" />
899
<IncludeRules context="FindComments" />
900
<IncludeRules context="FindStrings" />
901
<IncludeRules context="FindFunctions" />
902
<IncludeRules context="FindValues" />
903
<!-- auto-completion only -->
904
<keyword attribute="Normal Text" context="#stay" String="functions" />
905
</context>
906
907
<context name="SubRule" attribute="Normal Text" lineEndContext="#stay">
908
<DetectSpaces />
909
<IncludeRules context="FindComments" />
910
<DetectChar attribute="Normal Text" context="#pop#pop#pop" char="}" endRegion="ruleset" />
911
<RegExpr attribute="Property" context="IsProperty" String="[A-Za-z_-]+(?=\s*:)" />
912
<RegExpr attribute="Variable" context="VariableDefine" String="\$[a-zA-Z0-9\-_]+(?=\s*:)" />
913
<Detect2Chars attribute="Interpolation" context="InterpolationMaybeProperty" char="#" char1="{" />
914
<DetectIdentifier />
915
<AnyChar attribute="Error" context="#stay" String="*>+~|.#" />
916
<!-- auto-completion only, includes by previous rule -->
917
<keyword attribute="Normal Text" context="#stay" String="properties" />
918
<keyword attribute="Normal Text" context="#stay" String="sub-properties" />
919
</context>
920
921
<context name="Function" attribute="Normal Text" lineEndContext="#stay">
922
<DetectChar attribute="Function" context="FunctionParameters" char="(" />
923
<StringDetect attribute="Function" context="FunctionVar" String="var(" />
924
<StringDetect attribute="Function" context="FunctionUrl" String="url(" />
925
<StringDetect attribute="Function" context="FunctionCalc" String="calc(" />
926
<keyword attribute="Function" context="#stay" String="functions" />
927
<RegExpr attribute="Function" context="#stay" String="[-a-zA-Z][-a-zA-Z0-9]*" />
928
</context>
929
930
<context name="FunctionVar" attribute="Variable" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!FunctionParameters">
931
<DetectSpaces />
932
<IncludeRules context="FindComments" />
933
<RegExpr attribute="Variable" context="#pop!FunctionParameters" String="--[^ \t\),]+" />
934
</context>
935
936
<context name="FunctionCalc" attribute="Normal Text" lineEndContext="#stay">
937
<DetectSpaces />
938
<DetectChar attribute="Function" context="#pop#pop" char=")" />
939
<IncludeRules context="Calc" />
940
</context>
941
942
<context name="NestedCalc" attribute="Normal Text" lineEndContext="#stay">
943
<DetectSpaces />
944
<DetectChar attribute="Normal Text" context="#pop" char=")" />
945
<IncludeRules context="Calc" />
946
</context>
947
948
<context name="Calc" attribute="Normal Text" lineEndContext="#stay">
949
<DetectChar attribute="Separator Symbol" context="#stay" char="," />
950
<DetectChar attribute="Normal Text" context="NestedCalc" char="(" />
951
<IncludeRules context="FindComments" />
952
<IncludeRules context="FindStrings" />
953
<IncludeRules context="FindFunctions" />
954
<IncludeRules context="FindValues" />
955
<RegExpr attribute="Operator" context="#stay" String="[-](?=$|[ \t(,;])|[+](?=$|[^0-9)])|[/*]" />
956
<!-- auto-completion only -->
957
<keyword attribute="Normal Text" context="#stay" String="functions" />
958
</context>
959
960
<context name="FunctionUrl" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="UrlValue">
961
<DetectSpaces />
962
<IncludeRules context="FindStrings" />
963
<DetectChar attribute="Function" context="#pop#pop" char=")" />
964
</context>
965
966
<context name="UrlValue" attribute="String" lineEndContext="#stay">
967
<DetectChar attribute="Function" context="#pop#pop#pop" char=")" />
968
</context>
969
970
<context name="FunctionParameters" attribute="Normal Text" lineEndContext="#stay">
971
<DetectSpaces />
972
<DetectChar attribute="Function" context="#pop#pop" char=")" />
973
<IncludeRules context="FindComments" />
974
<IncludeRules context="FindStrings" />
975
<IncludeRules context="FindFunctions" />
976
<IncludeRules context="FindValues" />
977
<DetectChar attribute="Separator Symbol" context="#stay" char="," />
978
<StringDetect attribute="Operator" String="..." />
979
</context>
980
981
<!-- string contexts -->
982
<context name="StringDQ" attribute="String" lineEndContext="#stay">
983
<DetectChar attribute="String" context="#pop" char="&quot;" />
984
<IncludeRules context="InsideString" />
985
</context>
986
987
<context name="StringSQ" attribute="String" lineEndContext="#stay">
988
<DetectChar attribute="String" context="#pop" char="'" />
989
<IncludeRules context="InsideString" />
990
</context>
991
992
<context name="InsideString" attribute="String" lineEndContext="#stay">
993
<Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
994
<RegExpr attribute="SpecialChar" context="#stay" String="\\([0-9A-Fa-f]{1,6}|.?)" />
995
<RegExpr attribute="String" context="#stay" String="\\?[^#&quot;'\\]+" />
996
</context>
997
998
</contexts>
999
1000
<itemDatas>
1001
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
1002
<itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/>
1003
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
1004
<itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
1005
<itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/>
1006
<itemData name="String" defStyleNum="dsString"/>
1007
<itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/>
1008
<itemData name="Interpolation" defStyleNum="dsOperator" spellChecking="false"/>
1009
<itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
1010
<itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/>
1011
<itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/>
1012
<itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
1013
<itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
1014
<itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
1015
<itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/>
1016
<itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
1017
<itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
1018
<itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/>
1019
<itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/>
1020
<itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/>
1021
<itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
1022
<itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/>
1023
<itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/>
1024
<itemData name="Placeholder Selector" defStyleNum="dsBuiltIn" spellChecking="false"/>
1025
<itemData name="Comment" defStyleNum="dsComment" />
1026
<itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
1027
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
1028
</itemDatas>
1029
</highlighting>
1030
1031
<general>
1032
<keywords casesensitive="0" weakDeliminator="-%@" />
1033
<comments>
1034
<comment name="singleLine" start="//" position="afterwhitespace" />
1035
<comment name="multiLine" start="/*" end="*/" region="comment" />
1036
</comments>
1037
</general>
1038
1039
</language>
1040
<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
1041
1042