package tm-grammars

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file tm_grammar_stylus.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
let lang_id = "stylus"
let json = {json|{
  "displayName": "Stylus",
  "fileTypes": [
    "styl",
    "stylus",
    "css.styl",
    "css.stylus"
  ],
  "name": "stylus",
  "patterns": [
    {
      "include": "#comment"
    },
    {
      "include": "#at_rule"
    },
    {
      "include": "#language_keywords"
    },
    {
      "include": "#language_constants"
    },
    {
      "include": "#variable_declaration"
    },
    {
      "include": "#function"
    },
    {
      "include": "#selector"
    },
    {
      "include": "#declaration"
    },
    {
      "captures": {
        "1": {
          "name": "punctuation.section.property-list.begin.css"
        },
        "2": {
          "name": "punctuation.section.property-list.end.css"
        }
      },
      "match": "(\\{)(})",
      "name": "meta.brace.curly.css"
    },
    {
      "match": "[{}]",
      "name": "meta.brace.curly.css"
    },
    {
      "include": "#numeric"
    },
    {
      "include": "#string"
    },
    {
      "include": "#operator"
    }
  ],
  "repository": {
    "at_rule": {
      "patterns": [
        {
          "begin": "\\s*((@)(import|require))\\b\\s*",
          "beginCaptures": {
            "1": {
              "name": "keyword.control.at-rule.import.stylus"
            },
            "2": {
              "name": "punctuation.definition.keyword.stylus"
            }
          },
          "end": "\\s*((?=;|$|\\n))",
          "endCaptures": {
            "1": {
              "name": "punctuation.terminator.rule.css"
            }
          },
          "name": "meta.at-rule.import.css",
          "patterns": [
            {
              "include": "#string"
            }
          ]
        },
        {
          "begin": "\\s*((@)(extends?))\\b\\s*",
          "beginCaptures": {
            "1": {
              "name": "keyword.control.at-rule.extend.stylus"
            },
            "2": {
              "name": "punctuation.definition.keyword.stylus"
            }
          },
          "end": "\\s*((?=;|$|\\n))",
          "endCaptures": {
            "1": {
              "name": "punctuation.terminator.rule.css"
            }
          },
          "name": "meta.at-rule.extend.css",
          "patterns": [
            {
              "include": "#selector"
            }
          ]
        },
        {
          "captures": {
            "1": {
              "name": "keyword.control.at-rule.fontface.stylus"
            },
            "2": {
              "name": "punctuation.definition.keyword.stylus"
            }
          },
          "match": "^\\s*((@)font-face)\\b",
          "name": "meta.at-rule.fontface.stylus"
        },
        {
          "captures": {
            "1": {
              "name": "keyword.control.at-rule.css.stylus"
            },
            "2": {
              "name": "punctuation.definition.keyword.stylus"
            }
          },
          "match": "^\\s*((@)css)\\b",
          "name": "meta.at-rule.css.stylus"
        },
        {
          "begin": "\\s*((@)charset)\\b\\s*",
          "beginCaptures": {
            "1": {
              "name": "keyword.control.at-rule.charset.stylus"
            },
            "2": {
              "name": "punctuation.definition.keyword.stylus"
            }
          },
          "end": "\\s*((?=;|$|\\n))",
          "name": "meta.at-rule.charset.stylus",
          "patterns": [
            {
              "include": "#string"
            }
          ]
        },
        {
          "begin": "\\s*((@)keyframes)\\b\\s+([-A-Z_a-z][-0-9A-Z_a-z]*)",
          "beginCaptures": {
            "1": {
              "name": "keyword.control.at-rule.keyframes.stylus"
            },
            "2": {
              "name": "punctuation.definition.keyword.stylus"
            },
            "3": {
              "name": "entity.name.function.keyframe.stylus"
            }
          },
          "end": "\\s*((?=\\{|$|\\n))",
          "name": "meta.at-rule.keyframes.stylus"
        },
        {
          "begin": "(?=\\b((\\d+%|from\\b|to\\b)))",
          "end": "(?=([\\n{]))",
          "name": "meta.at-rule.keyframes.stylus",
          "patterns": [
            {
              "match": "\\b((\\d+%|from\\b|to\\b))",
              "name": "entity.other.attribute-name.stylus"
            }
          ]
        },
        {
          "captures": {
            "1": {
              "name": "keyword.control.at-rule.media.stylus"
            },
            "2": {
              "name": "punctuation.definition.keyword.stylus"
            }
          },
          "match": "^\\s*((@)media)\\b",
          "name": "meta.at-rule.media.stylus"
        },
        {
          "match": "(?=\\w)(?<![-\\w])(width|scan|resolution|orientation|monochrome|min-width|min-resolution|min-monochrome|min-height|min-device-width|min-device-height|min-device-aspect-ratio|min-color-index|min-color|min-aspect-ratio|max-width|max-resolution|max-monochrome|max-height|max-device-width|max-device-height|max-device-aspect-ratio|max-color-index|max-color|max-aspect-ratio|height|grid|device-width|device-height|device-aspect-ratio|color-index|color|aspect-ratio)(?<=\\w)(?![-\\w])",
          "name": "support.type.property-name.media-feature.media.css"
        },
        {
          "match": "(?=\\w)(?<![-\\w])(tv|tty|screen|projection|print|handheld|embossed|braille|aural|all)(?<=\\w)(?![-\\w])",
          "name": "support.constant.media-type.media.css"
        },
        {
          "match": "(?=\\w)(?<![-\\w])(portrait|landscape)(?<=\\w)(?![-\\w])",
          "name": "support.constant.property-value.media-property.media.css"
        }
      ]
    },
    "char_escape": {
      "match": "\\\\(.)",
      "name": "constant.character.escape.stylus"
    },
    "color": {
      "patterns": [
        {
          "begin": "\\b(rgba??|hsla??)(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.function.color.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(\\))",
          "endCaptures": {
            "1": {
              "name": "punctuation.section.function.css"
            }
          },
          "name": "meta.function.color.css",
          "patterns": [
            {
              "match": "\\s*(,)\\s*",
              "name": "punctuation.separator.parameter.css"
            },
            {
              "include": "#numeric"
            },
            {
              "include": "#property_variable"
            }
          ]
        },
        {
          "captures": {
            "1": {
              "name": "punctuation.definition.constant.css"
            }
          },
          "match": "(#)(\\h{3}|\\h{6})\\b",
          "name": "constant.other.color.rgb-value.css"
        },
        {
          "match": "\\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\b",
          "name": "support.constant.color.w3c-standard-color-name.css"
        },
        {
          "match": "\\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\b",
          "name": "support.constant.color.w3c-extended-color-name.css"
        }
      ]
    },
    "comment": {
      "patterns": [
        {
          "include": "#comment_block"
        },
        {
          "include": "#comment_line"
        }
      ]
    },
    "comment_block": {
      "begin": "/\\*",
      "beginCaptures": {
        "0": {
          "name": "punctuation.definition.comment.begin.css"
        }
      },
      "end": "\\*/",
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.comment.end.css"
        }
      },
      "name": "comment.block.css"
    },
    "comment_line": {
      "begin": "(^[\\t ]+)?(?=//)",
      "beginCaptures": {
        "1": {
          "name": "punctuation.whitespace.comment.leading.stylus"
        }
      },
      "end": "(?!\\G)",
      "patterns": [
        {
          "begin": "//",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.comment.stylus"
            }
          },
          "end": "(?=\\n)",
          "name": "comment.line.double-slash.stylus"
        }
      ]
    },
    "declaration": {
      "begin": "((?<=^)[^\\n\\S]+)|((?<=;)[^\\n\\S]*)|((?<=\\{)[^\\n\\S]*)",
      "end": "(?=\\n)|(;)|(?=})|(\\n)",
      "endCaptures": {
        "2": {
          "name": "punctuation.terminator.rule.css"
        }
      },
      "name": "meta.property-list.css",
      "patterns": [
        {
          "match": "(?<![-\\w])--[-A-Z_a-z[^\\x00-\\x7F]](?:[-0-9A-Z_a-z[^\\x00-\\x7F]]|\\\\(?:\\h{1,6}|.))*",
          "name": "variable.css"
        },
        {
          "include": "#language_keywords"
        },
        {
          "include": "#language_constants"
        },
        {
          "match": "(?<=^)[^\\n\\S]+(\\n)"
        },
        {
          "captures": {
            "1": {
              "name": "support.type.property-name.css"
            },
            "2": {
              "name": "punctuation.separator.key-value.css"
            },
            "3": {
              "name": "variable.section.css"
            }
          },
          "match": "\\G\\s*(counter-(?:reset|increment))(?:(:)|[^\\n\\S])[^\\n\\S]*([-A-Z_a-z][-0-9A-Z_a-z]*)",
          "name": "meta.property.counter.css"
        },
        {
          "begin": "\\G\\s*(filter)(?:(:)|[^\\n\\S])[^\\n\\S]*",
          "beginCaptures": {
            "1": {
              "name": "support.type.property-name.css"
            },
            "2": {
              "name": "punctuation.separator.key-value.css"
            }
          },
          "end": "(?=[\\n;}]|$)",
          "name": "meta.property.filter.css",
          "patterns": [
            {
              "include": "#function"
            },
            {
              "include": "#property_values"
            }
          ]
        },
        {
          "include": "#property"
        },
        {
          "include": "#interpolation"
        },
        {
          "include": "$self"
        }
      ]
    },
    "font_name": {
      "match": "\\b((?i:arial|century|comic|courier|cursive|fantasy|futura|garamond|georgia|helvetica|impact|lucida|monospace|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif))\\b",
      "name": "support.constant.font-name.css"
    },
    "function": {
      "begin": "(?=[-A-Z_a-z][-0-9A-Z_a-z]*\\()",
      "end": "(\\))",
      "endCaptures": {
        "1": {
          "name": "punctuation.section.function.css"
        }
      },
      "patterns": [
        {
          "begin": "(format|url|local)(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.function.misc.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(?=\\))",
          "name": "meta.function.misc.css",
          "patterns": [
            {
              "match": "(?<=\\()[^)\\s]*(?=\\))",
              "name": "string.css"
            },
            {
              "include": "#string"
            },
            {
              "include": "#variable"
            },
            {
              "include": "#operator"
            },
            {
              "match": "\\s*"
            }
          ]
        },
        {
          "captures": {
            "1": {
              "name": "support.function.misc.counter.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            },
            "3": {
              "name": "variable.section.css"
            }
          },
          "match": "(counter)(\\()([-A-Z_a-z][-0-9A-Z_a-z]*)(?=\\))",
          "name": "meta.function.misc.counter.css"
        },
        {
          "begin": "(counters)(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.function.misc.counters.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(?=\\))",
          "name": "meta.function.misc.counters.css",
          "patterns": [
            {
              "match": "\\G[-A-Z_a-z][-0-9A-Z_a-z]*",
              "name": "variable.section.css"
            },
            {
              "match": "\\s*(,)\\s*",
              "name": "punctuation.separator.parameter.css"
            },
            {
              "include": "#string"
            },
            {
              "include": "#interpolation"
            }
          ]
        },
        {
          "begin": "(attr)(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.function.misc.attr.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(?=\\))",
          "name": "meta.function.misc.attr.css",
          "patterns": [
            {
              "match": "\\G[-A-Z_a-z][-0-9A-Z_a-z]*",
              "name": "entity.other.attribute-name.attribute.css"
            },
            {
              "match": "(?<=[-0-9A-Z_a-z])\\s*\\b(string|color|url|integer|number|length|em|ex|px|rem|vw|vh|vmin|vmax|mm|cm|in|pt|pc|angle|deg|grad|rad|time|s|ms|frequency|Hz|kHz|%)\\b",
              "name": "support.type.attr.css"
            },
            {
              "match": "\\s*(,)\\s*",
              "name": "punctuation.separator.parameter.css"
            },
            {
              "include": "#string"
            },
            {
              "include": "#interpolation"
            }
          ]
        },
        {
          "begin": "(calc)(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.function.misc.calc.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(?=\\))",
          "name": "meta.function.misc.calc.css",
          "patterns": [
            {
              "include": "#property_values"
            }
          ]
        },
        {
          "begin": "(cubic-bezier)(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.function.timing.cubic-bezier.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(?=\\))",
          "name": "meta.function.timing.cubic-bezier.css",
          "patterns": [
            {
              "match": "\\s*(,)\\s*",
              "name": "punctuation.separator.parameter.css"
            },
            {
              "include": "#numeric"
            },
            {
              "include": "#interpolation"
            }
          ]
        },
        {
          "begin": "(steps)(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.function.timing.steps.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(?=\\))",
          "name": "meta.function.timing.steps.css",
          "patterns": [
            {
              "match": "\\s*(,)\\s*",
              "name": "punctuation.separator.parameter.css"
            },
            {
              "include": "#numeric"
            },
            {
              "match": "\\b(start|end)\\b",
              "name": "support.constant.timing.steps.direction.css"
            },
            {
              "include": "#interpolation"
            }
          ]
        },
        {
          "begin": "((?:linear|radial|repeating-linear|repeating-radial)-gradient)(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.function.gradient.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(?=\\))",
          "name": "meta.function.gradient.css",
          "patterns": [
            {
              "match": "\\s*(,)\\s*",
              "name": "punctuation.separator.parameter.css"
            },
            {
              "include": "#numeric"
            },
            {
              "include": "#color"
            },
            {
              "match": "\\b(to|bottom|right|left|top|circle|ellipse|center|closest-side|closest-corner|farthest-side|farthest-corner|at)\\b",
              "name": "support.constant.gradient.css"
            },
            {
              "include": "#interpolation"
            }
          ]
        },
        {
          "begin": "(blur|brightness|contrast|grayscale|hue-rotate|invert|opacity|saturate|sepia)(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.function.filter.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(?=\\))",
          "name": "meta.function.filter.css",
          "patterns": [
            {
              "include": "#numeric"
            },
            {
              "include": "#property_variable"
            },
            {
              "include": "#interpolation"
            }
          ]
        },
        {
          "begin": "(drop-shadow)(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.function.filter.drop-shadow.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(?=\\))",
          "name": "meta.function.filter.drop-shadow.css",
          "patterns": [
            {
              "include": "#numeric"
            },
            {
              "include": "#color"
            },
            {
              "include": "#property_variable"
            },
            {
              "include": "#interpolation"
            }
          ]
        },
        {
          "begin": "(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[Yy]|rotate[Zz]|scale|scale3d|scale[Xx]|scale[Yy]|scale[Zz]|skew[Xx]??|skew[Yy]|translate|translate3d|translate[Xx]|translate[Yy]|translate[Zz])(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.function.transform.css"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(?=\\))",
          "name": "meta.function.transform.css",
          "patterns": [
            {
              "include": "#numeric"
            },
            {
              "include": "#property_variable"
            },
            {
              "include": "#interpolation"
            }
          ]
        },
        {
          "match": "(url|local|format|counters??|attr|calc)(?=\\()",
          "name": "support.function.misc.css"
        },
        {
          "match": "(cubic-bezier|steps)(?=\\()",
          "name": "support.function.timing.css"
        },
        {
          "match": "((?:linear|radial|repeating-linear|repeating-radial)-gradient)(?=\\()",
          "name": "support.function.gradient.css"
        },
        {
          "match": "(blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)(?=\\()",
          "name": "support.function.filter.css"
        },
        {
          "match": "(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[Yy]|rotate[Zz]|scale|scale3d|scale[Xx]|scale[Yy]|scale[Zz]|skew[Xx]??|skew[Yy]|translate|translate3d|translate[Xx]|translate[Yy]|translate[Zz])(?=\\()",
          "name": "support.function.transform.css"
        },
        {
          "begin": "([-A-Z_a-z][-0-9A-Z_a-z]*)(\\()",
          "beginCaptures": {
            "1": {
              "name": "entity.name.function.stylus"
            },
            "2": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "(?=\\))",
          "name": "meta.function.stylus",
          "patterns": [
            {
              "match": "--[-A-Z_a-z[^\\x00-\\x7F]](?:[-0-9A-Z_a-z[^\\x00-\\x7F]]|\\\\(?:\\h{1,6}|.))*",
              "name": "variable.argument.stylus"
            },
            {
              "match": "\\s*(,)\\s*",
              "name": "punctuation.separator.parameter.css"
            },
            {
              "include": "#interpolation"
            },
            {
              "include": "#property_values"
            }
          ]
        },
        {
          "match": "\\(",
          "name": "punctuation.section.function.css"
        }
      ]
    },
    "interpolation": {
      "begin": "(\\{)[^\\n\\S]*(?=[^;=]*[^\\n\\S]*})",
      "beginCaptures": {
        "1": {
          "name": "meta.brace.curly"
        }
      },
      "end": "[^\\n\\S]*(})|\\n|$",
      "endCaptures": {
        "1": {
          "name": "meta.brace.curly"
        }
      },
      "name": "meta.interpolation.stylus",
      "patterns": [
        {
          "include": "#variable"
        },
        {
          "include": "#numeric"
        },
        {
          "include": "#string"
        },
        {
          "include": "#operator"
        }
      ]
    },
    "language_constants": {
      "match": "\\b(true|false|null)\\b",
      "name": "constant.language.stylus"
    },
    "language_keywords": {
      "patterns": [
        {
          "match": "(\\b|\\s)(return|else|for|unless|if|else)\\b",
          "name": "keyword.control.stylus"
        },
        {
          "match": "(\\b|\\s)(!important|in|is defined|is a)\\b",
          "name": "keyword.other.stylus"
        },
        {
          "match": "\\barguments\\b",
          "name": "variable.language.stylus"
        }
      ]
    },
    "numeric": {
      "patterns": [
        {
          "captures": {
            "1": {
              "name": "keyword.other.unit.css"
            }
          },
          "match": "(?<![-\\w])(?:[-+]?[0-9]+(?:\\.[0-9]+)?|\\.[0-9]+)((?:px|pt|ch|cm|mm|in|r?em|ex|pc|deg|g?rad|dpi|dpcm|dppx|fr|ms|s|turn|vh|vmax|vmin|vw)\\b|%)?",
          "name": "constant.numeric.css"
        }
      ]
    },
    "operator": {
      "patterns": [
        {
          "match": "((?:[!+:?~]|(\\s-\\s)|\\*?\\*|[%/]|(\\.)?\\.\\.|[<>]|[-%*+/:<-?]?=|!=)|\\b(?:in|is(?:nt)?|(?<!:)not|or|and)\\b)",
          "name": "keyword.operator.stylus"
        },
        {
          "include": "#char_escape"
        }
      ]
    },
    "property": {
      "begin": "\\G\\s*(?:(-webkit-[-A-Za-z]+|-moz-[-A-Za-z]+|-o-[-A-Za-z]+|-ms-[-A-Za-z]+|-khtml-[-A-Za-z]+|zoom|z-index|[xy]|wrap|word-wrap|word-spacing|word-break|word|width|widows|white-space-collapse|white-space|white|weight|volume|voice-volume|voice-stress|voice-rate|voice-pitch-range|voice-pitch|voice-family|voice-duration|voice-balance|voice|visibility|vertical-align|variant|user-select|up|unicode-bidi|unicode-range|unicode|trim|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform|touch-action|top-width|top-style|top-right-radius|top-left-radius|top-color|top|timing-function|text-wrap|text-transform|text-shadow|text-replace|text-rendering|text-overflow|text-outline|text-justify|text-indent|text-height|text-emphasis|text-decoration|text-align-last|text-align|text|target-position|target-new|target-name|target|table-layout|tab-size|style-type|style-position|style-image|style|string-set|stretch|stress|stacking-strategy|stacking-shift|stacking-ruby|stacking|src|speed|speech-rate|speech|speak-punctuation|speak-numeral|speak-header|speak|span|spacing|space-collapse|space|sizing|size-adjust|size|shadow|respond-to|rule-width|rule-style|rule-color|rule|ruby-span|ruby-position|ruby-overhang|ruby-align|ruby|rows|rotation-point|rotation|role|right-width|right-style|right-color|right|richness|rest-before|rest-after|rest|resource|resize|reset|replace|repeat|rendering-intent|rate|radius|quotes|punctuation-trim|punctuation|property|profile|presentation-level|presentation|position|pointer-events|point|play-state|play-during|play-count|pitch-range|pitch|phonemes|pause-before|pause-after|pause|page-policy|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|pack|overhang|overflow-y|overflow-x|overflow-style|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|origin|orientation|orient|ordinal-group|order|opacity|offset|numeral|new|nav-up|nav-right|nav-left|nav-index|nav-down|nav|name|move-to|model|mix-blend-mode|min-width|min-height|min|max-width|max-height|max|marquee-style|marquee-speed|marquee-play-count|marquee-direction|marquee|marks|mark-before|mark-after|mark|margin-top|margin-right|margin-left|margin-bottom|margin|mask-image|list-style-type|list-style-position|list-style-image|list-style|list|lines|line-stacking-strategy|line-stacking-shift|line-stacking-ruby|line-stacking|line-height|line-break|level|letter-spacing|length|left-width|left-style|left-color|left|label|justify-content|justify|iteration-count|inline-box-align|initial-value|initial-size|initial-before-align|initial-before-adjust|initial-after-align|initial-after-adjust|index|indent|increment|image-resolution|image-orientation|image|icon|hyphens|hyphenate-resource|hyphenate-lines|hyphenate-character|hyphenate-before|hyphenate-after|hyphenate|height|header|hanging-punctuation|gap|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-start|grid-row|grid-row-end|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|row-gap|gap|font-kerning|font-language-override|font-weight|font-variant-caps|font-variant|font-style|font-synthesis|font-stretch|font-size-adjust|font-size|font-family|font|float-offset|float|flex-wrap|flex-shrink|flex-grow|flex-group|flex-flow|flex-direction|flex-basis|flex|fit-position|fit|fill|filter|family|empty-cells|emphasis|elevation|duration|drop-initial-value|drop-initial-size|drop-initial-before-align|drop-initial-before-adjust|drop-initial-after-align|drop-initial-after-adjust|drop|down|dominant-baseline|display-role|display-model|display|direction|delay|decoration-break|decoration|cursor|cue-before|cue-after|cue|crop|counter-reset|counter-increment|counter|count|content|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|column-break-before|column-break-after|column|color-profile|color|collapse|clip|clear|character|caption-side|break-inside|break-before|break-after|break|box-sizing|box-shadow|box-pack|box-orient|box-ordinal-group|box-lines|box-flex-group|box-flex|box-direction|box-decoration-break|box-align|box|bottom-width|bottom-style|bottom-right-radius|bottom-left-radius|bottom-color|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-length|border-left-width|border-left-style|border-left-color|border-left|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|bookmark-target|bookmark-level|bookmark-label|bookmark|binding|bidi|before|baseline-shift|baseline|balance|background-blend-mode|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-break|background-attachment|background|azimuth|attachment|appearance|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-duration|animation-direction|animation-delay|animation-fill-mode|animation|alignment-baseline|alignment-adjust|alignment|align-self|align-last|align-items|align-content|align|after|adjust|will-change)|(writing-mode|text-anchor|stroke-width|stroke-opacity|stroke-miterlimit|stroke-linejoin|stroke-linecap|stroke-dashoffset|stroke-dasharray|stroke|stop-opacity|stop-color|shape-rendering|marker-start|marker-mid|marker-end|lighting-color|kerning|image-rendering|glyph-orientation-vertical|glyph-orientation-horizontal|flood-opacity|flood-color|fill-rule|fill-opacity|fill|enable-background|color-rendering|color-interpolation-filters|color-interpolation|clip-rule|clip-path)|([-A-Z_a-z][-0-9A-Z_a-z]*))(?!([^\\n\\S]*&)|([^\\n\\S]*\\{))(?=:|([^\\n\\S]+\\S))",
      "beginCaptures": {
        "1": {
          "name": "support.type.property-name.css"
        },
        "2": {
          "name": "support.type.property-name.svg.css"
        },
        "3": {
          "name": "support.function.mixin.stylus"
        }
      },
      "end": "(;)|(?=[\\n}]|$)",
      "endCaptures": {
        "1": {
          "name": "punctuation.terminator.rule.css"
        }
      },
      "patterns": [
        {
          "include": "#property_value"
        }
      ]
    },
    "property_value": {
      "begin": "\\G(?:(:)|(\\s))(\\s*)(?!&)",
      "beginCaptures": {
        "1": {
          "name": "punctuation.separator.key-value.css"
        },
        "2": {
          "name": "punctuation.separator.key-value.css"
        }
      },
      "end": "(?=[\\n;}])",
      "endCaptures": {
        "1": {
          "name": "punctuation.terminator.rule.css"
        }
      },
      "name": "meta.property-value.css",
      "patterns": [
        {
          "include": "#property_values"
        },
        {
          "match": "\\N+?"
        }
      ]
    },
    "property_values": {
      "patterns": [
        {
          "include": "#function"
        },
        {
          "include": "#comment"
        },
        {
          "include": "#language_keywords"
        },
        {
          "include": "#language_constants"
        },
        {
          "match": "(?=\\w)(?<![-\\w])(wrap-reverse|wrap|whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|unicase|underline|ultra-expanded|ultra-condensed|transparent|transform|top|titling-caps|thin|thick|text-top|text-bottom|text|tb-rl|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table|sw-resize|super|strict|stretch|step-start|step-end|static|square|space-between|space-around|space|solid|soft-light|small-caps|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|saturation|s-resize|running|rtl|row-reverse|row-resize|row|round|right|ridge|reverse|repeat-y|repeat-x|repeat|relative|progressive|progress|pre-wrap|pre-line|pre|pointer|petite-caps|paused|pan-x|pan-left|pan-right|pan-y|pan-up|pan-down|padding-box|overline|overlay|outside|outset|optimizeSpeed|optimizeLegibility|opacity|oblique|nw-resize|nowrap|not-allowed|normal|none|no-repeat|no-drop|newspaper|ne-resize|n-resize|multiply|move|middle|medium|max-height|manipulation|main-size|luminosity|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|local|list-item|linear(?!-)|line-through|line-edge|line|lighter|lighten|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline-block|inline|inherit|infinite|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|hue|horizontal|hidden|help|hard-light|hand|groove|geometricPrecision|forwards|flex-start|flex-end|flex|fixed|extra-expanded|extra-condensed|expanded|exclusion|ellipsis|ease-out|ease-in-out|ease-in|ease|e-resize|double|dotted|distribute-space|distribute-letter|distribute-all-lines|distribute|disc|disabled|difference|default|decimal|dashed|darken|currentColor|crosshair|cover|content-box|contain|condensed|column-reverse|column|color-dodge|color-burn|color|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|border-box|bolder|bold|block|bidi-override|below|baseline|balance|backwards|auto|antialiased|always|alternate-reverse|alternate|all-small-caps|all-scroll|all-petite-caps|all|absolute)(?<=\\w)(?![-\\w])",
          "name": "support.constant.property-value.css"
        },
        {
          "match": "(?=\\w)(?<![-\\w])(start|sRGB|square|round|optimizeSpeed|optimizeQuality|nonzero|miter|middle|linearRGB|geometricPrecision |evenodd |end |crispEdges|butt|bevel)(?<=\\w)(?![-\\w])",
          "name": "support.constant.property-value.svg.css"
        },
        {
          "include": "#font_name"
        },
        {
          "include": "#numeric"
        },
        {
          "include": "#color"
        },
        {
          "include": "#string"
        },
        {
          "match": "!\\s*important",
          "name": "keyword.other.important.css"
        },
        {
          "include": "#operator"
        },
        {
          "include": "#stylus_keywords"
        },
        {
          "include": "#property_variable"
        }
      ]
    },
    "property_variable": {
      "patterns": [
        {
          "include": "#variable"
        },
        {
          "match": "(?<!^)(@[-A-Z_a-z][-0-9A-Z_a-z]*)",
          "name": "variable.property.stylus"
        }
      ]
    },
    "selector": {
      "patterns": [
        {
          "match": "(?=\\w)(?<![-\\w])(a|abbr|acronym|address|area|article|aside|audio|b|base|bdi|bdo|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|data|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|main|map|mark|math|menu|menuitem|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|rb|rp|rtc??|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|svg|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|ul??|var|video|wbr)(?<=\\w)(?![-\\w])",
          "name": "entity.name.tag.css"
        },
        {
          "match": "(?=\\w)(?<![-\\w])(vkern|view|use|tspan|tref|title|textPath|text|symbol|switch|svg|style|stop|set|script|rect|radialGradient|polyline|polygon|pattern|path|mpath|missing-glyph|metadata|mask|marker|linearGradient|line|image|hkern|glyphRef|glyph|g|foreignObject|font-face-uri|font-face-src|font-face-name|font-face-format|font-face|font|filter|feTurbulence|feTile|feSpotLight|feSpecularLighting|fePointLight|feOffset|feMorphology|feMergeNode|feMerge|feImage|feGaussianBlur|feFuncR|feFuncG|feFuncB|feFuncA|feFlood|feDistantLight|feDisplacementMap|feDiffuseLighting|feConvolveMatrix|feComposite|feComponentTransfer|feColorMatrix|feBlend|ellipse|desc|defs|cursor|color-profile|clipPath|circle|animateTransform|animateMotion|animateColor|animate|altGlyphItem|altGlyphDef|altGlyph|a)(?<=\\w)(?![-\\w])",
          "name": "entity.name.tag.svg.css"
        },
        {
          "match": "\\s*(,)\\s*",
          "name": "meta.selector.stylus"
        },
        {
          "match": "\\*",
          "name": "meta.selector.stylus"
        },
        {
          "captures": {
            "2": {
              "name": "entity.other.attribute-name.parent-selector-suffix.stylus"
            }
          },
          "match": "\\s*(&)([-0-9A-Z_a-z]+)\\s*",
          "name": "meta.selector.stylus"
        },
        {
          "match": "\\s*(&)\\s*",
          "name": "meta.selector.stylus"
        },
        {
          "captures": {
            "1": {
              "name": "punctuation.definition.entity.css"
            }
          },
          "match": "(\\.)[-0-9A-Z_a-z]+",
          "name": "entity.other.attribute-name.class.css"
        },
        {
          "captures": {
            "1": {
              "name": "punctuation.definition.entity.css"
            }
          },
          "match": "(#)[A-Za-z][-0-9A-Z_a-z]*",
          "name": "entity.other.attribute-name.id.css"
        },
        {
          "captures": {
            "1": {
              "name": "punctuation.definition.entity.css"
            }
          },
          "match": "(:+)(after|before|content|first-letter|first-line|host|(-(moz|webkit|ms)-)?selection)\\b",
          "name": "entity.other.attribute-name.pseudo-element.css"
        },
        {
          "captures": {
            "1": {
              "name": "punctuation.definition.entity.css"
            }
          },
          "match": "(:)((first|last)-child|(first|last|only)-of-type|empty|root|target|first|left|right)\\b",
          "name": "entity.other.attribute-name.pseudo-class.css"
        },
        {
          "captures": {
            "1": {
              "name": "punctuation.definition.entity.css"
            }
          },
          "match": "(:)(checked|enabled|default|disabled|indeterminate|invalid|optional|required|valid)\\b",
          "name": "entity.other.attribute-name.pseudo-class.ui-state.css"
        },
        {
          "begin": "((:)not)(\\()",
          "beginCaptures": {
            "1": {
              "name": "entity.other.attribute-name.pseudo-class.css"
            },
            "2": {
              "name": "punctuation.definition.entity.css"
            },
            "3": {
              "name": "punctuation.section.function.css"
            }
          },
          "end": "\\)",
          "endCaptures": {
            "0": {
              "name": "punctuation.section.function.css"
            }
          },
          "patterns": [
            {
              "include": "#selector"
            }
          ]
        },
        {
          "captures": {
            "1": {
              "name": "entity.other.attribute-name.pseudo-class.css"
            },
            "2": {
              "name": "punctuation.definition.entity.css"
            },
            "3": {
              "name": "punctuation.section.function.css"
            },
            "4": {
              "name": "constant.numeric.css"
            },
            "5": {
              "name": "punctuation.section.function.css"
            }
          },
          "match": "((:)nth-(?:(?:last-)?child|(?:last-)?of-type))(\\()(-?(?:\\d+n?|n)(?:\\+\\d+)?|even|odd)(\\))"
        },
        {
          "captures": {
            "1": {
              "name": "entity.other.attribute-name.pseudo-class.css"
            },
            "2": {
              "name": "puncutation.definition.entity.css"
            },
            "3": {
              "name": "punctuation.section.function.css"
            },
            "4": {
              "name": "constant.language.css"
            },
            "5": {
              "name": "punctuation.section.function.css"
            }
          },
          "match": "((:)dir)\\s*(?:(\\()(ltr|rtl)?(\\)))?"
        },
        {
          "captures": {
            "1": {
              "name": "entity.other.attribute-name.pseudo-class.css"
            },
            "2": {
              "name": "puncutation.definition.entity.css"
            },
            "3": {
              "name": "punctuation.section.function.css"
            },
            "4": {
              "name": "constant.language.css"
            },
            "6": {
              "name": "punctuation.section.function.css"
            }
          },
          "match": "((:)lang)\\s*(?:(\\()(\\w+(-\\w+)?)?(\\)))?"
        },
        {
          "captures": {
            "1": {
              "name": "punctuation.definition.entity.css"
            }
          },
          "match": "(:)(active|hover|link|visited|focus)\\b",
          "name": "entity.other.attribute-name.pseudo-class.css"
        },
        {
          "captures": {
            "1": {
              "name": "punctuation.definition.entity.css"
            }
          },
          "match": "(::)(shadow)\\b",
          "name": "entity.other.attribute-name.pseudo-class.css"
        },
        {
          "captures": {
            "1": {
              "name": "punctuation.definition.entity.css"
            },
            "2": {
              "name": "entity.other.attribute-name.attribute.css"
            },
            "3": {
              "name": "punctuation.separator.operator.css"
            },
            "4": {
              "name": "string.unquoted.attribute-value.css"
            },
            "5": {
              "name": "string.quoted.double.attribute-value.css"
            },
            "6": {
              "name": "punctuation.definition.string.begin.css"
            },
            "7": {
              "name": "punctuation.definition.string.end.css"
            },
            "8": {
              "name": "punctuation.definition.entity.css"
            }
          },
          "match": "(?i)(\\[)\\s*(-?[\\\\_a-z[:^ascii:]][-0-9\\\\_a-z[:^ascii:]]*)(?:\\s*([$*^|~]?=)\\s*(?:(-?[\\\\_a-z[:^ascii:]][-0-9\\\\_a-z[:^ascii:]]*)|((?>([\"'])(?:[^\\\\]|\\\\.)*?(\\6)))))?\\s*(])",
          "name": "meta.attribute-selector.css"
        },
        {
          "include": "#interpolation"
        },
        {
          "include": "#variable"
        }
      ]
    },
    "string": {
      "patterns": [
        {
          "begin": "\"",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.css"
            }
          },
          "end": "\"",
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.string.end.css"
            }
          },
          "name": "string.quoted.double.css",
          "patterns": [
            {
              "match": "\\\\(\\h{1,6}|.)",
              "name": "constant.character.escape.css"
            }
          ]
        },
        {
          "begin": "'",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.css"
            }
          },
          "end": "'",
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.string.end.css"
            }
          },
          "name": "string.quoted.single.css",
          "patterns": [
            {
              "match": "\\\\(\\h{1,6}|.)",
              "name": "constant.character.escape.css"
            }
          ]
        }
      ]
    },
    "variable": {
      "match": "(\\$[-A-Z_a-z][-0-9A-Z_a-z]*)",
      "name": "variable.stylus"
    },
    "variable_declaration": {
      "begin": "^[^\\n\\S]*(\\$?[-A-Z_a-z][-0-9A-Z_a-z]*)[^\\n\\S]*([:?]??=)",
      "beginCaptures": {
        "1": {
          "name": "variable.stylus"
        },
        "2": {
          "name": "keyword.operator.stylus"
        }
      },
      "end": "(\\n)|(;)|(?=})",
      "endCaptures": {
        "2": {
          "name": "punctuation.terminator.rule.css"
        }
      },
      "patterns": [
        {
          "include": "#property_values"
        }
      ]
    }
  },
  "scopeName": "source.stylus"
}|json}