github-linguist 7.4.0 → 7.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +5 -5
  2. data/grammars/annotation.liquidhaskell.haskell.json +15 -4
  3. data/grammars/hint.haskell.json +15 -4
  4. data/grammars/hint.message.haskell.json +15 -4
  5. data/grammars/hint.type.haskell.json +15 -4
  6. data/grammars/source.abap.json +14 -3
  7. data/grammars/source.apl.json +19 -2
  8. data/grammars/source.ats.json +17 -87
  9. data/grammars/source.ballerina.json +14 -19
  10. data/grammars/source.crystal.json +14 -2
  11. data/grammars/source.csound.json +37 -0
  12. data/grammars/source.css.json +25 -1
  13. data/grammars/source.css.scss.json +1724 -0
  14. data/grammars/source.gf.json +51 -0
  15. data/grammars/source.glsl.json +1 -1
  16. data/grammars/source.hack.json +2523 -0
  17. data/grammars/source.haskell.json +15 -4
  18. data/grammars/source.hc.json +709 -0
  19. data/grammars/source.hsig.json +15 -4
  20. data/grammars/source.hx.json +10 -6
  21. data/grammars/source.jolie.json +1 -1
  22. data/grammars/source.julia.json +114 -6
  23. data/grammars/source.m68k.json +412 -0
  24. data/grammars/source.mcfunction.json +62 -18
  25. data/grammars/source.objectscript.json +309 -0
  26. data/grammars/source.objectscript_class.json +674 -0
  27. data/grammars/source.objectscript_csp.json +19 -0
  28. data/grammars/source.objectscript_macros.json +226 -0
  29. data/grammars/source.powershell.json +21 -57
  30. data/grammars/source.rust.json +1 -1
  31. data/grammars/source.sass.json +836 -142
  32. data/grammars/source.sassdoc.json +346 -0
  33. data/grammars/source.scala.json +110 -10
  34. data/grammars/source.sqf.json +2 -1
  35. data/grammars/source.svelte.json +827 -0
  36. data/grammars/source.ts.json +8 -4
  37. data/grammars/source.tsql.json +507 -0
  38. data/grammars/source.tsx.json +8 -4
  39. data/grammars/source.viml.json +1 -1
  40. data/grammars/source.vtt.json +702 -0
  41. data/grammars/source.wollok.json +100 -0
  42. data/grammars/source.xojo.json +85 -0
  43. data/grammars/source.yara.json +3 -2
  44. data/grammars/source.zeek.json +412 -0
  45. data/grammars/source.zenscript.json +282 -0
  46. data/grammars/source.zig.json +2 -11
  47. data/grammars/text.haml.json +1 -1
  48. data/grammars/text.html.php.blade.json +3 -3
  49. data/grammars/text.html.vue.json +41 -1
  50. data/grammars/text.slim.json +1 -1
  51. data/grammars/text.tex.latex.haskell.json +15 -4
  52. data/grammars/version +1 -1
  53. data/lib/linguist/VERSION +1 -1
  54. data/lib/linguist/blob_helper.rb +5 -10
  55. data/lib/linguist/generated.rb +10 -2
  56. data/lib/linguist/heuristics.yml +14 -3
  57. data/lib/linguist/language.rb +3 -2
  58. data/lib/linguist/languages.json +1 -1
  59. data/lib/linguist/languages.yml +151 -16
  60. data/lib/linguist/samples.json +9844 -1711
  61. data/lib/linguist/samples.rb +8 -5
  62. data/lib/linguist/shebang.rb +6 -0
  63. data/lib/linguist/vendor.yml +3 -0
  64. metadata +25 -10
  65. data/grammars/source.bro.json +0 -403
  66. data/grammars/source.scss.json +0 -1287
@@ -75,7 +75,7 @@
75
75
  }
76
76
  },
77
77
  {
78
- "name": "meta.module.crystal",
78
+ "name": "meta.lib.crystal",
79
79
  "match": "^\\s*(lib)\\s+([.\\w\\d_]+)",
80
80
  "captures": {
81
81
  "1": {
@@ -86,6 +86,18 @@
86
86
  }
87
87
  }
88
88
  },
89
+ {
90
+ "name": "meta.annotation.crystal",
91
+ "match": "^\\s*(annotation)\\s+([.\\w\\d_]+)",
92
+ "captures": {
93
+ "1": {
94
+ "name": "keyword.control.annotation.crystal"
95
+ },
96
+ "2": {
97
+ "name": "entity.name.type.annotation.crystal"
98
+ }
99
+ }
100
+ },
89
101
  {
90
102
  "name": "constant.other.symbol.hashkey.crystal",
91
103
  "match": "(?\u003e[a-zA-Z_]\\w*(?\u003e[?!])?)(:)(?!:)",
@@ -106,7 +118,7 @@
106
118
  },
107
119
  {
108
120
  "name": "keyword.control.crystal",
109
- "match": "(?\u003c!\\.)\\b(BEGIN|begin|case|class|else|elsif|END|end|ensure|forall|for|if|ifdef|in|module|rescue|struct|then|unless|until|when|while)\\b(?![?!])"
121
+ "match": "(?\u003c!\\.)\\b(BEGIN|begin|case|class|else|elsif|END|end|ensure|forall|for|if|ifdef|in|module|rescue|struct|then|unless|until|when|while|annotation)\\b(?![?!])"
110
122
  },
111
123
  {
112
124
  "name": "keyword.control.start-block.crystal",
@@ -630,6 +630,43 @@
630
630
  "name": "keyword.preprocessor.csound",
631
631
  "match": "\\#(?:e(?:lse|nd(?:if)?)\\b|\\#\\#)|@+[ \\t]*\\d*"
632
632
  },
633
+ {
634
+ "begin": "\\#includestr",
635
+ "end": "$",
636
+ "patterns": [
637
+ {
638
+ "include": "#commentsAndMacroUses"
639
+ },
640
+ {
641
+ "name": "string.includestr.csound",
642
+ "begin": "\"",
643
+ "end": "\"",
644
+ "patterns": [
645
+ {
646
+ "include": "#macroUses"
647
+ },
648
+ {
649
+ "include": "#lineContinuations"
650
+ }
651
+ ],
652
+ "beginCaptures": {
653
+ "0": {
654
+ "name": "punctuation.definition.string.begin.csound"
655
+ }
656
+ },
657
+ "endCaptures": {
658
+ "0": {
659
+ "name": "punctuation.definition.string.end.csound"
660
+ }
661
+ }
662
+ }
663
+ ],
664
+ "beginCaptures": {
665
+ "0": {
666
+ "name": "keyword.includestr.preprocessor.csound"
667
+ }
668
+ }
669
+ },
633
670
  {
634
671
  "begin": "\\#include",
635
672
  "end": "$",
@@ -600,7 +600,31 @@
600
600
  }
601
601
  },
602
602
  {
603
- "begin": "(?i)(?=@[\\w-]+(\\s|\\(|/\\*|$))",
603
+ "begin": "(?i)(?=@[\\w-]+[^;]+;s*$)",
604
+ "end": "(?\u003c=;)(?!\\G)",
605
+ "patterns": [
606
+ {
607
+ "name": "meta.at-rule.header.css",
608
+ "begin": "(?i)\\G(@)[\\w-]+",
609
+ "end": ";",
610
+ "beginCaptures": {
611
+ "0": {
612
+ "name": "keyword.control.at-rule.css"
613
+ },
614
+ "1": {
615
+ "name": "punctuation.definition.keyword.css"
616
+ }
617
+ },
618
+ "endCaptures": {
619
+ "0": {
620
+ "name": "punctuation.terminator.rule.css"
621
+ }
622
+ }
623
+ }
624
+ ]
625
+ },
626
+ {
627
+ "begin": "(?i)(?=@[\\w-]+(\\s|\\(|{|/\\*|$))",
604
628
  "end": "(?\u003c=})(?!\\G)",
605
629
  "patterns": [
606
630
  {
@@ -0,0 +1,1724 @@
1
+ {
2
+ "name": "SCSS",
3
+ "scopeName": "source.css.scss",
4
+ "patterns": [
5
+ {
6
+ "include": "#variable_setting"
7
+ },
8
+ {
9
+ "include": "#at_rule_include"
10
+ },
11
+ {
12
+ "include": "#at_rule_import"
13
+ },
14
+ {
15
+ "include": "#general"
16
+ },
17
+ {
18
+ "include": "#flow_control"
19
+ },
20
+ {
21
+ "include": "#rules"
22
+ },
23
+ {
24
+ "include": "#property_list"
25
+ },
26
+ {
27
+ "include": "#at_rule_mixin"
28
+ },
29
+ {
30
+ "include": "#at_rule_media"
31
+ },
32
+ {
33
+ "include": "#at_rule_function"
34
+ },
35
+ {
36
+ "include": "#at_rule_charset"
37
+ },
38
+ {
39
+ "include": "#at_rule_option"
40
+ },
41
+ {
42
+ "include": "#at_rule_namespace"
43
+ },
44
+ {
45
+ "include": "#at_rule_fontface"
46
+ },
47
+ {
48
+ "include": "#at_rule_page"
49
+ },
50
+ {
51
+ "include": "#at_rule_keyframes"
52
+ },
53
+ {
54
+ "include": "#at_rule_at_root"
55
+ },
56
+ {
57
+ "include": "#at_rule_supports"
58
+ },
59
+ {
60
+ "name": "punctuation.terminator.rule.css",
61
+ "match": ";"
62
+ }
63
+ ],
64
+ "repository": {
65
+ "at_rule_at_root": {
66
+ "name": "meta.at-rule.at-root.scss",
67
+ "begin": "\\s*((@)(at-root))(\\s+|$)",
68
+ "end": "\\s*(?={)",
69
+ "patterns": [
70
+ {
71
+ "include": "#function_attributes"
72
+ },
73
+ {
74
+ "include": "#functions"
75
+ },
76
+ {
77
+ "include": "#selectors"
78
+ }
79
+ ],
80
+ "beginCaptures": {
81
+ "1": {
82
+ "name": "keyword.control.at-rule.at-root.scss"
83
+ },
84
+ "2": {
85
+ "name": "punctuation.definition.keyword.scss"
86
+ }
87
+ }
88
+ },
89
+ "at_rule_charset": {
90
+ "name": "meta.at-rule.charset.scss",
91
+ "begin": "\\s*((@)charset\\b)\\s*",
92
+ "end": "\\s*((?=;|$))",
93
+ "patterns": [
94
+ {
95
+ "include": "#variable"
96
+ },
97
+ {
98
+ "include": "#string_single"
99
+ },
100
+ {
101
+ "include": "#string_double"
102
+ }
103
+ ],
104
+ "captures": {
105
+ "1": {
106
+ "name": "keyword.control.at-rule.charset.scss"
107
+ },
108
+ "2": {
109
+ "name": "punctuation.definition.keyword.scss"
110
+ }
111
+ }
112
+ },
113
+ "at_rule_content": {
114
+ "name": "meta.content.scss",
115
+ "begin": "\\s*((@)content\\b)\\s*",
116
+ "end": "\\s*((?=;))",
117
+ "patterns": [
118
+ {
119
+ "include": "#variable"
120
+ },
121
+ {
122
+ "include": "#selectors"
123
+ },
124
+ {
125
+ "include": "#property_values"
126
+ }
127
+ ],
128
+ "captures": {
129
+ "1": {
130
+ "name": "keyword.control.content.scss"
131
+ }
132
+ }
133
+ },
134
+ "at_rule_each": {
135
+ "name": "meta.at-rule.each.scss",
136
+ "begin": "\\s*((@)each\\b)\\s*",
137
+ "end": "\\s*((?=}))",
138
+ "patterns": [
139
+ {
140
+ "name": "keyword.control.operator",
141
+ "match": "\\b(in|,)\\b"
142
+ },
143
+ {
144
+ "include": "#variable"
145
+ },
146
+ {
147
+ "include": "#property_values"
148
+ },
149
+ {
150
+ "include": "$self"
151
+ }
152
+ ],
153
+ "captures": {
154
+ "1": {
155
+ "name": "keyword.control.each.scss"
156
+ },
157
+ "2": {
158
+ "name": "punctuation.definition.keyword.scss"
159
+ }
160
+ }
161
+ },
162
+ "at_rule_else": {
163
+ "name": "meta.at-rule.else.scss",
164
+ "begin": "\\s*((@)else(\\s*(if)?))\\s*",
165
+ "end": "\\s*(?={)",
166
+ "patterns": [
167
+ {
168
+ "include": "#conditional_operators"
169
+ },
170
+ {
171
+ "include": "#variable"
172
+ },
173
+ {
174
+ "include": "#property_values"
175
+ }
176
+ ],
177
+ "captures": {
178
+ "1": {
179
+ "name": "keyword.control.else.scss"
180
+ },
181
+ "2": {
182
+ "name": "punctuation.definition.keyword.scss"
183
+ }
184
+ }
185
+ },
186
+ "at_rule_extend": {
187
+ "name": "meta.at-rule.extend.scss",
188
+ "begin": "\\s*((@)extend\\b)\\s*",
189
+ "end": "\\s*(?=;)",
190
+ "patterns": [
191
+ {
192
+ "include": "#variable"
193
+ },
194
+ {
195
+ "include": "#selectors"
196
+ },
197
+ {
198
+ "include": "#property_values"
199
+ }
200
+ ],
201
+ "captures": {
202
+ "1": {
203
+ "name": "keyword.control.at-rule.extend.scss"
204
+ },
205
+ "2": {
206
+ "name": "punctuation.definition.keyword.scss"
207
+ }
208
+ }
209
+ },
210
+ "at_rule_fontface": {
211
+ "patterns": [
212
+ {
213
+ "name": "meta.at-rule.fontface.scss",
214
+ "begin": "^\\s*((@)font-face\\b)",
215
+ "end": "\\s*(?={)",
216
+ "patterns": [
217
+ {
218
+ "include": "#function_attributes"
219
+ }
220
+ ],
221
+ "beginCaptures": {
222
+ "1": {
223
+ "name": "keyword.control.at-rule.fontface.scss"
224
+ },
225
+ "2": {
226
+ "name": "punctuation.definition.keyword.scss"
227
+ }
228
+ }
229
+ }
230
+ ]
231
+ },
232
+ "at_rule_for": {
233
+ "name": "meta.at-rule.for.scss",
234
+ "begin": "\\s*((@)for\\b)\\s*",
235
+ "end": "\\s*(?={)",
236
+ "patterns": [
237
+ {
238
+ "name": "keyword.control.operator",
239
+ "match": "(==|!=|\u003c=|\u003e=|\u003c|\u003e|from|to|through)"
240
+ },
241
+ {
242
+ "include": "#variable"
243
+ },
244
+ {
245
+ "include": "#property_values"
246
+ },
247
+ {
248
+ "include": "$self"
249
+ }
250
+ ],
251
+ "captures": {
252
+ "1": {
253
+ "name": "keyword.control.for.scss"
254
+ },
255
+ "2": {
256
+ "name": "punctuation.definition.keyword.scss"
257
+ }
258
+ }
259
+ },
260
+ "at_rule_function": {
261
+ "patterns": [
262
+ {
263
+ "name": "meta.at-rule.function.scss",
264
+ "begin": "\\s*((@)function\\b)\\s*",
265
+ "end": "\\s*(?={)",
266
+ "patterns": [
267
+ {
268
+ "include": "#function_attributes"
269
+ }
270
+ ],
271
+ "captures": {
272
+ "1": {
273
+ "name": "keyword.control.at-rule.function.scss"
274
+ },
275
+ "2": {
276
+ "name": "punctuation.definition.keyword.scss"
277
+ },
278
+ "3": {
279
+ "name": "entity.name.function.scss"
280
+ }
281
+ }
282
+ },
283
+ {
284
+ "name": "meta.at-rule.function.scss",
285
+ "match": "\\s*((@)function\\b)\\s*",
286
+ "captures": {
287
+ "1": {
288
+ "name": "keyword.control.at-rule.function.scss"
289
+ },
290
+ "2": {
291
+ "name": "punctuation.definition.keyword.scss"
292
+ },
293
+ "3": {
294
+ "name": "entity.name.function.scss"
295
+ }
296
+ }
297
+ }
298
+ ]
299
+ },
300
+ "at_rule_if": {
301
+ "name": "meta.at-rule.if.scss",
302
+ "begin": "\\s*((@)if\\b)\\s*",
303
+ "end": "\\s*(?={)",
304
+ "patterns": [
305
+ {
306
+ "include": "#conditional_operators"
307
+ },
308
+ {
309
+ "include": "#variable"
310
+ },
311
+ {
312
+ "include": "#property_values"
313
+ }
314
+ ],
315
+ "captures": {
316
+ "1": {
317
+ "name": "keyword.control.if.scss"
318
+ },
319
+ "2": {
320
+ "name": "punctuation.definition.keyword.scss"
321
+ }
322
+ }
323
+ },
324
+ "at_rule_import": {
325
+ "name": "meta.at-rule.import.scss",
326
+ "begin": "\\s*((@)import\\b)\\s*",
327
+ "end": "\\s*((?=;)|(?=}))",
328
+ "patterns": [
329
+ {
330
+ "include": "#variable"
331
+ },
332
+ {
333
+ "include": "#string_single"
334
+ },
335
+ {
336
+ "include": "#string_double"
337
+ },
338
+ {
339
+ "include": "#functions"
340
+ },
341
+ {
342
+ "include": "#comment_line"
343
+ }
344
+ ],
345
+ "captures": {
346
+ "1": {
347
+ "name": "keyword.control.at-rule.import.scss"
348
+ },
349
+ "2": {
350
+ "name": "punctuation.definition.keyword.scss"
351
+ }
352
+ }
353
+ },
354
+ "at_rule_include": {
355
+ "patterns": [
356
+ {
357
+ "name": "meta.at-rule.include.scss",
358
+ "begin": "(?\u003c=@include)\\s+([\\w-]+)\\s*(\\()",
359
+ "end": "\\)",
360
+ "patterns": [
361
+ {
362
+ "include": "#function_attributes"
363
+ }
364
+ ],
365
+ "beginCaptures": {
366
+ "1": {
367
+ "name": "entity.name.function.scss"
368
+ },
369
+ "2": {
370
+ "name": "punctuation.definition.parameters.begin.bracket.round.scss"
371
+ }
372
+ },
373
+ "endCaptures": {
374
+ "0": {
375
+ "name": "punctuation.definition.parameters.end.bracket.round.scss"
376
+ }
377
+ }
378
+ },
379
+ {
380
+ "match": "(?\u003c=@include)\\s+([\\w-]+)",
381
+ "captures": {
382
+ "0": {
383
+ "name": "meta.at-rule.include.scss"
384
+ },
385
+ "1": {
386
+ "name": "entity.name.function.scss"
387
+ }
388
+ }
389
+ },
390
+ {
391
+ "match": "((@)include)\\b",
392
+ "captures": {
393
+ "0": {
394
+ "name": "meta.at-rule.include.scss"
395
+ },
396
+ "1": {
397
+ "name": "keyword.control.at-rule.include.scss"
398
+ },
399
+ "2": {
400
+ "name": "punctuation.definition.keyword.scss"
401
+ }
402
+ }
403
+ }
404
+ ]
405
+ },
406
+ "at_rule_keyframes": {
407
+ "name": "meta.at-rule.keyframes.scss",
408
+ "begin": "(?\u003c=^|\\s)(@)(?:-(?:webkit|moz)-)?keyframes\\b",
409
+ "end": "(?\u003c=})",
410
+ "patterns": [
411
+ {
412
+ "match": "(?\u003c=@keyframes)\\s+((?:[_A-Za-z][-\\w]|-[_A-Za-z])[-\\w]*)",
413
+ "captures": {
414
+ "1": {
415
+ "name": "entity.name.function.scss"
416
+ }
417
+ }
418
+ },
419
+ {
420
+ "name": "string.quoted.double.scss",
421
+ "contentName": "entity.name.function.scss",
422
+ "begin": "(?\u003c=@keyframes)\\s+(\")",
423
+ "end": "\"",
424
+ "patterns": [
425
+ {
426
+ "name": "constant.character.escape.scss",
427
+ "match": "\\\\([[:xdigit:]]{1,6}|.)"
428
+ },
429
+ {
430
+ "include": "#interpolation"
431
+ }
432
+ ],
433
+ "beginCaptures": {
434
+ "1": {
435
+ "name": "punctuation.definition.string.begin.scss"
436
+ }
437
+ },
438
+ "endCaptures": {
439
+ "0": {
440
+ "name": "punctuation.definition.string.end.scss"
441
+ }
442
+ }
443
+ },
444
+ {
445
+ "name": "string.quoted.single.scss",
446
+ "contentName": "entity.name.function.scss",
447
+ "begin": "(?\u003c=@keyframes)\\s+(')",
448
+ "end": "'",
449
+ "patterns": [
450
+ {
451
+ "name": "constant.character.escape.scss",
452
+ "match": "\\\\([[:xdigit:]]{1,6}|.)"
453
+ },
454
+ {
455
+ "include": "#interpolation"
456
+ }
457
+ ],
458
+ "beginCaptures": {
459
+ "1": {
460
+ "name": "punctuation.definition.string.begin.scss"
461
+ }
462
+ },
463
+ "endCaptures": {
464
+ "0": {
465
+ "name": "punctuation.definition.string.end.scss"
466
+ }
467
+ }
468
+ },
469
+ {
470
+ "begin": "{",
471
+ "end": "}",
472
+ "patterns": [
473
+ {
474
+ "name": "entity.other.attribute-name.scss",
475
+ "match": "\\b(?:(?:100|[1-9]\\d|\\d)%|from|to)(?=\\s*{)"
476
+ },
477
+ {
478
+ "include": "#flow_control"
479
+ },
480
+ {
481
+ "include": "#interpolation"
482
+ },
483
+ {
484
+ "include": "#property_list"
485
+ },
486
+ {
487
+ "include": "#rules"
488
+ }
489
+ ],
490
+ "beginCaptures": {
491
+ "0": {
492
+ "name": "punctuation.section.keyframes.begin.scss"
493
+ }
494
+ },
495
+ "endCaptures": {
496
+ "0": {
497
+ "name": "punctuation.section.keyframes.end.scss"
498
+ }
499
+ }
500
+ }
501
+ ],
502
+ "beginCaptures": {
503
+ "0": {
504
+ "name": "keyword.control.at-rule.keyframes.scss"
505
+ },
506
+ "1": {
507
+ "name": "punctuation.definition.keyword.scss"
508
+ }
509
+ }
510
+ },
511
+ "at_rule_media": {
512
+ "patterns": [
513
+ {
514
+ "name": "meta.at-rule.media.scss",
515
+ "begin": "^\\s*((@)media)\\b",
516
+ "end": "\\s*(?={)",
517
+ "patterns": [
518
+ {
519
+ "include": "#comment_docblock"
520
+ },
521
+ {
522
+ "include": "#comment_block"
523
+ },
524
+ {
525
+ "include": "#comment_line"
526
+ },
527
+ {
528
+ "name": "keyword.control.operator.css.scss",
529
+ "match": "\\b(only)\\b"
530
+ },
531
+ {
532
+ "name": "meta.property-list.media-query.scss",
533
+ "begin": "\\(",
534
+ "end": "\\)",
535
+ "patterns": [
536
+ {
537
+ "name": "meta.property-name.media-query.scss",
538
+ "begin": "(?\u003c![-a-z])(?=[-a-z])",
539
+ "end": "$|(?![-a-z])",
540
+ "patterns": [
541
+ {
542
+ "include": "source.css#media-features"
543
+ },
544
+ {
545
+ "include": "source.css#property-names"
546
+ }
547
+ ]
548
+ },
549
+ {
550
+ "contentName": "meta.property-value.media-query.scss",
551
+ "begin": "(:)\\s*(?!(\\s*{))",
552
+ "end": "\\s*(;|(?=}|\\)))",
553
+ "patterns": [
554
+ {
555
+ "include": "#general"
556
+ },
557
+ {
558
+ "include": "#property_values"
559
+ }
560
+ ],
561
+ "beginCaptures": {
562
+ "1": {
563
+ "name": "punctuation.separator.key-value.scss"
564
+ }
565
+ },
566
+ "endCaptures": {
567
+ "1": {
568
+ "name": "punctuation.terminator.rule.scss"
569
+ }
570
+ }
571
+ }
572
+ ],
573
+ "beginCaptures": {
574
+ "0": {
575
+ "name": "punctuation.definition.media-query.begin.bracket.round.scss"
576
+ }
577
+ },
578
+ "endCaptures": {
579
+ "0": {
580
+ "name": "punctuation.definition.media-query.end.bracket.round.scss"
581
+ }
582
+ }
583
+ },
584
+ {
585
+ "include": "#variable"
586
+ },
587
+ {
588
+ "include": "#conditional_operators"
589
+ },
590
+ {
591
+ "include": "source.css#media-types"
592
+ }
593
+ ],
594
+ "beginCaptures": {
595
+ "1": {
596
+ "name": "keyword.control.at-rule.media.scss"
597
+ },
598
+ "2": {
599
+ "name": "punctuation.definition.keyword.scss"
600
+ }
601
+ }
602
+ }
603
+ ]
604
+ },
605
+ "at_rule_mixin": {
606
+ "patterns": [
607
+ {
608
+ "name": "meta.at-rule.mixin.scss",
609
+ "begin": "(?\u003c=@mixin)\\s+([\\w-]+)\\s*(\\()",
610
+ "end": "\\)",
611
+ "patterns": [
612
+ {
613
+ "include": "#function_attributes"
614
+ }
615
+ ],
616
+ "beginCaptures": {
617
+ "1": {
618
+ "name": "entity.name.function.scss"
619
+ },
620
+ "2": {
621
+ "name": "punctuation.definition.parameters.begin.bracket.round.scss"
622
+ }
623
+ },
624
+ "endCaptures": {
625
+ "0": {
626
+ "name": "punctuation.definition.parameters.end.bracket.round.scss"
627
+ }
628
+ }
629
+ },
630
+ {
631
+ "name": "meta.at-rule.mixin.scss",
632
+ "match": "(?\u003c=@mixin)\\s+([\\w-]+)",
633
+ "captures": {
634
+ "1": {
635
+ "name": "entity.name.function.scss"
636
+ }
637
+ }
638
+ },
639
+ {
640
+ "name": "meta.at-rule.mixin.scss",
641
+ "match": "((@)mixin)\\b",
642
+ "captures": {
643
+ "1": {
644
+ "name": "keyword.control.at-rule.mixin.scss"
645
+ },
646
+ "2": {
647
+ "name": "punctuation.definition.keyword.scss"
648
+ }
649
+ }
650
+ }
651
+ ]
652
+ },
653
+ "at_rule_namespace": {
654
+ "patterns": [
655
+ {
656
+ "name": "meta.at-rule.namespace.scss",
657
+ "begin": "(?\u003c=@namespace)\\s+(?=url)",
658
+ "end": "(?=;|$)",
659
+ "patterns": [
660
+ {
661
+ "include": "#property_values"
662
+ },
663
+ {
664
+ "include": "#string_single"
665
+ },
666
+ {
667
+ "include": "#string_double"
668
+ }
669
+ ]
670
+ },
671
+ {
672
+ "name": "meta.at-rule.namespace.scss",
673
+ "begin": "(?\u003c=@namespace)\\s+([\\w-]*)",
674
+ "end": "(?=;|$)",
675
+ "patterns": [
676
+ {
677
+ "include": "#variables"
678
+ },
679
+ {
680
+ "include": "#property_values"
681
+ },
682
+ {
683
+ "include": "#string_single"
684
+ },
685
+ {
686
+ "include": "#string_double"
687
+ }
688
+ ],
689
+ "captures": {
690
+ "1": {
691
+ "name": "entity.name.namespace-prefix.scss"
692
+ }
693
+ }
694
+ },
695
+ {
696
+ "name": "meta.at-rule.namespace.scss",
697
+ "match": "((@)namespace)\\b",
698
+ "captures": {
699
+ "1": {
700
+ "name": "keyword.control.at-rule.namespace.scss"
701
+ },
702
+ "2": {
703
+ "name": "punctuation.definition.keyword.scss"
704
+ }
705
+ }
706
+ }
707
+ ]
708
+ },
709
+ "at_rule_option": {
710
+ "name": "meta.at-rule.option.scss",
711
+ "match": "^\\s*((@)option\\b)\\s*",
712
+ "captures": {
713
+ "1": {
714
+ "name": "keyword.control.at-rule.charset.scss"
715
+ },
716
+ "2": {
717
+ "name": "punctuation.definition.keyword.scss"
718
+ }
719
+ }
720
+ },
721
+ "at_rule_page": {
722
+ "patterns": [
723
+ {
724
+ "name": "meta.at-rule.page.scss",
725
+ "begin": "^\\s*((@)page)(?=:|\\s)\\s*([-:\\w]*)",
726
+ "end": "\\s*(?={)",
727
+ "captures": {
728
+ "1": {
729
+ "name": "keyword.control.at-rule.page.scss"
730
+ },
731
+ "2": {
732
+ "name": "punctuation.definition.keyword.scss"
733
+ },
734
+ "3": {
735
+ "name": "entity.name.function.scss"
736
+ }
737
+ }
738
+ }
739
+ ]
740
+ },
741
+ "at_rule_return": {
742
+ "name": "meta.at-rule.return.scss",
743
+ "begin": "\\s*((@)(return)\\b)",
744
+ "end": "\\s*((?=;))",
745
+ "patterns": [
746
+ {
747
+ "include": "#variable"
748
+ },
749
+ {
750
+ "include": "#property_values"
751
+ }
752
+ ],
753
+ "captures": {
754
+ "1": {
755
+ "name": "keyword.control.return.scss"
756
+ },
757
+ "2": {
758
+ "name": "punctuation.definition.keyword.scss"
759
+ }
760
+ }
761
+ },
762
+ "at_rule_supports": {
763
+ "name": "meta.at-rule.supports.scss",
764
+ "begin": "(?\u003c=^|\\s)(@)supports\\b",
765
+ "end": "(?={)|$",
766
+ "patterns": [
767
+ {
768
+ "include": "#logical_operators"
769
+ },
770
+ {
771
+ "include": "#properties"
772
+ },
773
+ {
774
+ "name": "punctuation.definition.condition.begin.bracket.round.scss",
775
+ "match": "\\("
776
+ },
777
+ {
778
+ "name": "punctuation.definition.condition.end.bracket.round.scss",
779
+ "match": "\\)"
780
+ }
781
+ ],
782
+ "captures": {
783
+ "0": {
784
+ "name": "keyword.control.at-rule.supports.scss"
785
+ },
786
+ "1": {
787
+ "name": "punctuation.definition.keyword.scss"
788
+ }
789
+ }
790
+ },
791
+ "at_rule_warn": {
792
+ "name": "meta.at-rule.warn.scss",
793
+ "begin": "\\s*((@)(warn|debug|error)\\b)\\s*",
794
+ "end": "\\s*(?=;)",
795
+ "patterns": [
796
+ {
797
+ "include": "#variable"
798
+ },
799
+ {
800
+ "include": "#string_double"
801
+ },
802
+ {
803
+ "include": "#string_single"
804
+ }
805
+ ],
806
+ "captures": {
807
+ "1": {
808
+ "name": "keyword.control.warn.scss"
809
+ },
810
+ "2": {
811
+ "name": "punctuation.definition.keyword.scss"
812
+ }
813
+ }
814
+ },
815
+ "at_rule_while": {
816
+ "name": "meta.at-rule.while.scss",
817
+ "begin": "\\s*((@)while\\b)\\s*",
818
+ "end": "\\s*(?=})",
819
+ "patterns": [
820
+ {
821
+ "include": "#conditional_operators"
822
+ },
823
+ {
824
+ "include": "#variable"
825
+ },
826
+ {
827
+ "include": "#property_values"
828
+ },
829
+ {
830
+ "include": "$self"
831
+ }
832
+ ],
833
+ "captures": {
834
+ "1": {
835
+ "name": "keyword.control.while.scss"
836
+ },
837
+ "2": {
838
+ "name": "punctuation.definition.keyword.scss"
839
+ }
840
+ }
841
+ },
842
+ "comment_block": {
843
+ "name": "comment.block.scss",
844
+ "begin": "/\\*",
845
+ "end": "\\*/",
846
+ "beginCaptures": {
847
+ "0": {
848
+ "name": "punctuation.definition.comment.scss"
849
+ }
850
+ },
851
+ "endCaptures": {
852
+ "0": {
853
+ "name": "punctuation.definition.comment.scss"
854
+ }
855
+ }
856
+ },
857
+ "comment_docblock": {
858
+ "name": "comment.block.documentation.scss",
859
+ "begin": "///",
860
+ "end": "(?=$)",
861
+ "patterns": [
862
+ {
863
+ "include": "source.sassdoc"
864
+ }
865
+ ],
866
+ "beginCaptures": {
867
+ "0": {
868
+ "name": "punctuation.definition.comment.scss"
869
+ }
870
+ }
871
+ },
872
+ "comment_line": {
873
+ "name": "comment.line.scss",
874
+ "begin": "//",
875
+ "end": "\\n",
876
+ "beginCaptures": {
877
+ "0": {
878
+ "name": "punctuation.definition.comment.scss"
879
+ }
880
+ }
881
+ },
882
+ "comparison_operators": {
883
+ "name": "keyword.operator.comparison.scss",
884
+ "match": "==|!=|\u003c=|\u003e=|\u003c|\u003e"
885
+ },
886
+ "conditional_operators": {
887
+ "patterns": [
888
+ {
889
+ "include": "#comparison_operators"
890
+ },
891
+ {
892
+ "include": "#logical_operators"
893
+ }
894
+ ]
895
+ },
896
+ "constant_default": {
897
+ "name": "keyword.other.default.scss",
898
+ "match": "!default"
899
+ },
900
+ "constant_functions": {
901
+ "begin": "([\\w-]+)(\\()",
902
+ "end": "(\\))",
903
+ "patterns": [
904
+ {
905
+ "include": "#parameters"
906
+ }
907
+ ],
908
+ "beginCaptures": {
909
+ "1": {
910
+ "name": "support.function.misc.scss"
911
+ },
912
+ "2": {
913
+ "name": "punctuation.section.function.scss"
914
+ }
915
+ },
916
+ "endCaptures": {
917
+ "1": {
918
+ "name": "punctuation.section.function.scss"
919
+ }
920
+ }
921
+ },
922
+ "constant_important": {
923
+ "name": "keyword.other.important.scss",
924
+ "match": "!important"
925
+ },
926
+ "constant_mathematical_symbols": {
927
+ "name": "support.constant.mathematical-symbols.scss",
928
+ "match": "\\b(\\+|-|\\*|/)\\b"
929
+ },
930
+ "constant_optional": {
931
+ "name": "keyword.other.optional.scss",
932
+ "match": "!optional"
933
+ },
934
+ "constant_sass_functions": {
935
+ "begin": "(headings|stylesheet-url|rgba?|hsla?|ie-hex-str|red|green|blue|alpha|opacity|hue|saturation|lightness|prefixed|prefix|-moz|-svg|-css2|-pie|-webkit|-ms|font-(?:files|url)|grid-image|image-(?:width|height|url|color)|sprites?|sprite-(?:map|map-name|file|url|position)|inline-(?:font-files|image)|opposite-position|grad-point|grad-end-position|color-stops|color-stops-in-percentages|grad-color-stops|(?:radial|linear)-(?:gradient|svg-gradient)|opacify|fade-?in|transparentize|fade-?out|lighten|darken|saturate|desaturate|grayscale|adjust-(?:hue|lightness|saturation|color)|scale-(?:lightness|saturation|color)|change-color|spin|complement|invert|mix|-compass-(?:list|space-list|slice|nth|list-size)|blank|compact|nth|first-value-of|join|length|append|nest|append-selector|headers|enumerate|range|percentage|unitless|unit|if|type-of|comparable|elements-of-type|quote|unquote|escape|e|sin|cos|tan|abs|round|ceil|floor|pi|translate(?:X|Y))(\\()",
936
+ "end": "(\\))",
937
+ "patterns": [
938
+ {
939
+ "include": "#parameters"
940
+ }
941
+ ],
942
+ "beginCaptures": {
943
+ "1": {
944
+ "name": "support.function.misc.scss"
945
+ },
946
+ "2": {
947
+ "name": "punctuation.section.function.scss"
948
+ }
949
+ },
950
+ "endCaptures": {
951
+ "1": {
952
+ "name": "punctuation.section.function.scss"
953
+ }
954
+ }
955
+ },
956
+ "flow_control": {
957
+ "patterns": [
958
+ {
959
+ "include": "#at_rule_if"
960
+ },
961
+ {
962
+ "include": "#at_rule_else"
963
+ },
964
+ {
965
+ "include": "#at_rule_warn"
966
+ },
967
+ {
968
+ "include": "#at_rule_for"
969
+ },
970
+ {
971
+ "include": "#at_rule_while"
972
+ },
973
+ {
974
+ "include": "#at_rule_each"
975
+ },
976
+ {
977
+ "include": "#at_rule_return"
978
+ }
979
+ ]
980
+ },
981
+ "function_attributes": {
982
+ "patterns": [
983
+ {
984
+ "name": "punctuation.separator.key-value.scss",
985
+ "match": ":"
986
+ },
987
+ {
988
+ "include": "#general"
989
+ },
990
+ {
991
+ "include": "#property_values"
992
+ },
993
+ {
994
+ "name": "invalid.illegal.scss",
995
+ "match": "[={}\\?;@]"
996
+ }
997
+ ]
998
+ },
999
+ "functions": {
1000
+ "patterns": [
1001
+ {
1002
+ "begin": "([\\w-]{1,})(\\()\\s*",
1003
+ "end": "(\\))",
1004
+ "patterns": [
1005
+ {
1006
+ "include": "#parameters"
1007
+ }
1008
+ ],
1009
+ "beginCaptures": {
1010
+ "1": {
1011
+ "name": "support.function.misc.scss"
1012
+ },
1013
+ "2": {
1014
+ "name": "punctuation.section.function.scss"
1015
+ }
1016
+ },
1017
+ "endCaptures": {
1018
+ "1": {
1019
+ "name": "punctuation.section.function.scss"
1020
+ }
1021
+ }
1022
+ },
1023
+ {
1024
+ "name": "support.function.misc.scss",
1025
+ "match": "([\\w-]{1,})"
1026
+ }
1027
+ ]
1028
+ },
1029
+ "general": {
1030
+ "patterns": [
1031
+ {
1032
+ "include": "#variable"
1033
+ },
1034
+ {
1035
+ "include": "#comment_docblock"
1036
+ },
1037
+ {
1038
+ "include": "#comment_block"
1039
+ },
1040
+ {
1041
+ "include": "#comment_line"
1042
+ }
1043
+ ]
1044
+ },
1045
+ "interpolation": {
1046
+ "name": "variable.interpolation.scss",
1047
+ "begin": "#{",
1048
+ "end": "}",
1049
+ "patterns": [
1050
+ {
1051
+ "include": "#property_values"
1052
+ },
1053
+ {
1054
+ "include": "#variable"
1055
+ }
1056
+ ],
1057
+ "beginCaptures": {
1058
+ "0": {
1059
+ "name": "punctuation.definition.interpolation.begin.bracket.curly.scss"
1060
+ }
1061
+ },
1062
+ "endCaptures": {
1063
+ "0": {
1064
+ "name": "punctuation.definition.interpolation.end.bracket.curly.scss"
1065
+ }
1066
+ }
1067
+ },
1068
+ "logical_operators": {
1069
+ "name": "keyword.operator.logical.scss",
1070
+ "match": "\\b(not|or|and)\\b"
1071
+ },
1072
+ "map": {
1073
+ "name": "meta.definition.variable.map.scss",
1074
+ "begin": "\\(",
1075
+ "end": "\\)",
1076
+ "patterns": [
1077
+ {
1078
+ "include": "#comment_docblock"
1079
+ },
1080
+ {
1081
+ "include": "#comment_block"
1082
+ },
1083
+ {
1084
+ "include": "#comment_line"
1085
+ },
1086
+ {
1087
+ "match": "\\b([\\w-]+)\\s*(:)",
1088
+ "captures": {
1089
+ "1": {
1090
+ "name": "support.type.map.key.scss"
1091
+ },
1092
+ "2": {
1093
+ "name": "punctuation.separator.key-value.scss"
1094
+ }
1095
+ }
1096
+ },
1097
+ {
1098
+ "name": "punctuation.separator.delimiter.scss",
1099
+ "match": ","
1100
+ },
1101
+ {
1102
+ "include": "#map"
1103
+ },
1104
+ {
1105
+ "include": "#property_values"
1106
+ },
1107
+ {
1108
+ "include": "#variable"
1109
+ }
1110
+ ],
1111
+ "beginCaptures": {
1112
+ "0": {
1113
+ "name": "punctuation.definition.map.begin.bracket.round.scss"
1114
+ }
1115
+ },
1116
+ "endCaptures": {
1117
+ "0": {
1118
+ "name": "punctuation.definition.map.end.bracket.round.scss"
1119
+ }
1120
+ }
1121
+ },
1122
+ "operators": {
1123
+ "name": "keyword.operator.css",
1124
+ "match": "[-+*/](?!\\s*[-+*/])"
1125
+ },
1126
+ "parameters": {
1127
+ "patterns": [
1128
+ {
1129
+ "include": "#variable"
1130
+ },
1131
+ {
1132
+ "begin": "\\(",
1133
+ "end": "\\)",
1134
+ "patterns": [
1135
+ {
1136
+ "include": "#function_attributes"
1137
+ }
1138
+ ],
1139
+ "beginCaptures": {
1140
+ "0": {
1141
+ "name": "punctuation.definition.begin.bracket.round.scss"
1142
+ }
1143
+ },
1144
+ "endCaptures": {
1145
+ "0": {
1146
+ "name": "punctuation.definition.end.bracket.round.scss"
1147
+ }
1148
+ }
1149
+ },
1150
+ {
1151
+ "include": "#property_values"
1152
+ },
1153
+ {
1154
+ "include": "#comment_block"
1155
+ },
1156
+ {
1157
+ "name": "variable.parameter.url.scss",
1158
+ "match": "[^'\",) \\t]+"
1159
+ },
1160
+ {
1161
+ "name": "punctuation.separator.delimiter.scss",
1162
+ "match": ","
1163
+ }
1164
+ ]
1165
+ },
1166
+ "parent_selector_suffix": {
1167
+ "name": "entity.other.attribute-name.parent-selector-suffix.css",
1168
+ "match": "(?x)\n(?\u003c=\u0026)\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,.\\#)\\[:{\u003e+~|] # - Another selector\n | /\\* # - A block comment\n)",
1169
+ "captures": {
1170
+ "1": {
1171
+ "name": "punctuation.definition.entity.css"
1172
+ },
1173
+ "2": {
1174
+ "patterns": [
1175
+ {
1176
+ "include": "#interpolation"
1177
+ },
1178
+ {
1179
+ "name": "constant.character.escape.scss",
1180
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)"
1181
+ },
1182
+ {
1183
+ "name": "invalid.illegal.identifier.scss",
1184
+ "match": "\\$|}"
1185
+ }
1186
+ ]
1187
+ }
1188
+ }
1189
+ },
1190
+ "properties": {
1191
+ "patterns": [
1192
+ {
1193
+ "name": "meta.property-name.scss",
1194
+ "begin": "(?\u003c![-a-z])(?=[-a-z])",
1195
+ "end": "$|(?![-a-z])",
1196
+ "patterns": [
1197
+ {
1198
+ "include": "source.css#property-names"
1199
+ },
1200
+ {
1201
+ "include": "#at_rule_include"
1202
+ }
1203
+ ]
1204
+ },
1205
+ {
1206
+ "contentName": "meta.property-value.scss",
1207
+ "begin": "(:)\\s*(?!(\\s*{))",
1208
+ "end": "\\s*(;|(?=}|\\)))",
1209
+ "patterns": [
1210
+ {
1211
+ "include": "#general"
1212
+ },
1213
+ {
1214
+ "include": "#property_values"
1215
+ }
1216
+ ],
1217
+ "beginCaptures": {
1218
+ "1": {
1219
+ "name": "punctuation.separator.key-value.scss"
1220
+ }
1221
+ },
1222
+ "endCaptures": {
1223
+ "1": {
1224
+ "name": "punctuation.terminator.rule.scss"
1225
+ }
1226
+ }
1227
+ }
1228
+ ]
1229
+ },
1230
+ "property_list": {
1231
+ "name": "meta.property-list.scss",
1232
+ "begin": "{",
1233
+ "end": "}",
1234
+ "patterns": [
1235
+ {
1236
+ "include": "#flow_control"
1237
+ },
1238
+ {
1239
+ "include": "#rules"
1240
+ },
1241
+ {
1242
+ "include": "#properties"
1243
+ },
1244
+ {
1245
+ "include": "$self"
1246
+ }
1247
+ ],
1248
+ "beginCaptures": {
1249
+ "0": {
1250
+ "name": "punctuation.section.property-list.begin.bracket.curly.scss"
1251
+ }
1252
+ },
1253
+ "endCaptures": {
1254
+ "0": {
1255
+ "name": "punctuation.section.property-list.end.bracket.curly.scss"
1256
+ }
1257
+ }
1258
+ },
1259
+ "property_values": {
1260
+ "patterns": [
1261
+ {
1262
+ "include": "#string_single"
1263
+ },
1264
+ {
1265
+ "include": "#string_double"
1266
+ },
1267
+ {
1268
+ "include": "#constant_functions"
1269
+ },
1270
+ {
1271
+ "include": "#constant_sass_functions"
1272
+ },
1273
+ {
1274
+ "include": "#constant_important"
1275
+ },
1276
+ {
1277
+ "include": "#constant_default"
1278
+ },
1279
+ {
1280
+ "include": "#constant_optional"
1281
+ },
1282
+ {
1283
+ "include": "source.css#numeric-values"
1284
+ },
1285
+ {
1286
+ "include": "source.css#property-keywords"
1287
+ },
1288
+ {
1289
+ "include": "source.css#color-keywords"
1290
+ },
1291
+ {
1292
+ "include": "source.css#property-names"
1293
+ },
1294
+ {
1295
+ "include": "#constant_mathematical_symbols"
1296
+ },
1297
+ {
1298
+ "include": "#operators"
1299
+ },
1300
+ {
1301
+ "begin": "\\(",
1302
+ "end": "\\)",
1303
+ "patterns": [
1304
+ {
1305
+ "include": "#general"
1306
+ },
1307
+ {
1308
+ "include": "#property_values"
1309
+ }
1310
+ ],
1311
+ "beginCaptures": {
1312
+ "0": {
1313
+ "name": "punctuation.definition.begin.bracket.round.scss"
1314
+ }
1315
+ },
1316
+ "endCaptures": {
1317
+ "0": {
1318
+ "name": "punctuation.definition.end.bracket.round.scss"
1319
+ }
1320
+ }
1321
+ }
1322
+ ]
1323
+ },
1324
+ "rules": {
1325
+ "patterns": [
1326
+ {
1327
+ "include": "#general"
1328
+ },
1329
+ {
1330
+ "include": "#at_rule_extend"
1331
+ },
1332
+ {
1333
+ "include": "#at_rule_content"
1334
+ },
1335
+ {
1336
+ "include": "#at_rule_include"
1337
+ },
1338
+ {
1339
+ "include": "#at_rule_media"
1340
+ },
1341
+ {
1342
+ "include": "#selectors"
1343
+ }
1344
+ ]
1345
+ },
1346
+ "selector_attribute": {
1347
+ "name": "meta.attribute-selector.scss",
1348
+ "match": "(?xi)\n(\\[)\n\\s*\n(\n (?:\n [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+?\n)\n(?:\n \\s*([~|^$*]?=)\\s*\n (?:\n (\n (?:\n [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n )\n |\n ((\")(.*?)(\"))\n |\n ((')(.*?)('))\n )\n)?\n\\s*\n(\\])",
1349
+ "captures": {
1350
+ "1": {
1351
+ "name": "punctuation.definition.attribute-selector.begin.bracket.square.scss"
1352
+ },
1353
+ "10": {
1354
+ "name": "punctuation.definition.string.begin.scss"
1355
+ },
1356
+ "11": {
1357
+ "patterns": [
1358
+ {
1359
+ "include": "#interpolation"
1360
+ },
1361
+ {
1362
+ "name": "constant.character.escape.scss",
1363
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)"
1364
+ },
1365
+ {
1366
+ "name": "invalid.illegal.scss",
1367
+ "match": "\\$|}"
1368
+ }
1369
+ ]
1370
+ },
1371
+ "12": {
1372
+ "name": "punctuation.definition.string.end.scss"
1373
+ },
1374
+ "13": {
1375
+ "name": "punctuation.definition.attribute-selector.end.bracket.square.scss"
1376
+ },
1377
+ "2": {
1378
+ "name": "entity.other.attribute-name.attribute.scss",
1379
+ "patterns": [
1380
+ {
1381
+ "include": "#interpolation"
1382
+ },
1383
+ {
1384
+ "name": "constant.character.escape.scss",
1385
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)"
1386
+ },
1387
+ {
1388
+ "name": "invalid.illegal.scss",
1389
+ "match": "\\$|}"
1390
+ }
1391
+ ]
1392
+ },
1393
+ "3": {
1394
+ "name": "keyword.operator.scss"
1395
+ },
1396
+ "4": {
1397
+ "name": "string.unquoted.attribute-value.scss",
1398
+ "patterns": [
1399
+ {
1400
+ "include": "#interpolation"
1401
+ },
1402
+ {
1403
+ "name": "constant.character.escape.scss",
1404
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)"
1405
+ },
1406
+ {
1407
+ "name": "invalid.illegal.scss",
1408
+ "match": "\\$|}"
1409
+ }
1410
+ ]
1411
+ },
1412
+ "5": {
1413
+ "name": "string.quoted.double.attribute-value.scss"
1414
+ },
1415
+ "6": {
1416
+ "name": "punctuation.definition.string.begin.scss"
1417
+ },
1418
+ "7": {
1419
+ "patterns": [
1420
+ {
1421
+ "include": "#interpolation"
1422
+ },
1423
+ {
1424
+ "name": "constant.character.escape.scss",
1425
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)"
1426
+ },
1427
+ {
1428
+ "name": "invalid.illegal.scss",
1429
+ "match": "\\$|}"
1430
+ }
1431
+ ]
1432
+ },
1433
+ "8": {
1434
+ "name": "punctuation.definition.string.end.scss"
1435
+ },
1436
+ "9": {
1437
+ "name": "string.quoted.single.attribute-value.scss"
1438
+ }
1439
+ }
1440
+ },
1441
+ "selector_class": {
1442
+ "name": "entity.other.attribute-name.class.css",
1443
+ "match": "(?x)\n(\\.) # Valid class-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,.\\#)\\[:{\u003e+~|] # - Another selector\n | /\\* # - A block comment\n)",
1444
+ "captures": {
1445
+ "1": {
1446
+ "name": "punctuation.definition.entity.css"
1447
+ },
1448
+ "2": {
1449
+ "patterns": [
1450
+ {
1451
+ "include": "#interpolation"
1452
+ },
1453
+ {
1454
+ "name": "constant.character.escape.scss",
1455
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)"
1456
+ },
1457
+ {
1458
+ "name": "invalid.illegal.scss",
1459
+ "match": "\\$|}"
1460
+ }
1461
+ ]
1462
+ }
1463
+ }
1464
+ },
1465
+ "selector_custom": {
1466
+ "name": "entity.name.tag.custom.scss",
1467
+ "match": "\\b([a-zA-Z0-9]+(-[a-zA-Z0-9]+)+)(?=\\.|\\s++[^:]|\\s*[,\\[{]|:(link|visited|hover|active|focus|target|lang|disabled|enabled|checked|indeterminate|root|nth-(child|last-child|of-type|last-of-type)|first-child|last-child|first-of-type|last-of-type|only-child|only-of-type|empty|not|valid|invalid)(\\([0-9A-Za-z]*\\))?)"
1468
+ },
1469
+ "selector_id": {
1470
+ "name": "entity.other.attribute-name.id.css",
1471
+ "match": "(?x)\n(\\#) # Valid id-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,.\\#)\\[:{\u003e+~|] # - Another selector\n | /\\* # - A block comment\n)",
1472
+ "captures": {
1473
+ "1": {
1474
+ "name": "punctuation.definition.entity.css"
1475
+ },
1476
+ "2": {
1477
+ "patterns": [
1478
+ {
1479
+ "include": "#interpolation"
1480
+ },
1481
+ {
1482
+ "name": "constant.character.escape.scss",
1483
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)"
1484
+ },
1485
+ {
1486
+ "name": "invalid.illegal.identifier.scss",
1487
+ "match": "\\$|}"
1488
+ }
1489
+ ]
1490
+ }
1491
+ }
1492
+ },
1493
+ "selector_placeholder": {
1494
+ "name": "entity.other.attribute-name.placeholder.css",
1495
+ "match": "(?x)\n(%) # Valid placeholder-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n) # Followed by either:\n(?= ; # - End of statement\n | $ # - End of the line\n | [\\s,.\\#)\\[:{\u003e+~|] # - Another selector\n | /\\* # - A block comment\n)",
1496
+ "captures": {
1497
+ "1": {
1498
+ "name": "punctuation.definition.entity.css"
1499
+ },
1500
+ "2": {
1501
+ "patterns": [
1502
+ {
1503
+ "include": "#interpolation"
1504
+ },
1505
+ {
1506
+ "name": "constant.character.escape.scss",
1507
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)"
1508
+ },
1509
+ {
1510
+ "name": "invalid.illegal.identifier.scss",
1511
+ "match": "\\$|}"
1512
+ }
1513
+ ]
1514
+ }
1515
+ }
1516
+ },
1517
+ "selector_pseudo_class": {
1518
+ "patterns": [
1519
+ {
1520
+ "begin": "((:)\\bnth-(?:child|last-child|of-type|last-of-type))(\\()",
1521
+ "end": "\\)",
1522
+ "patterns": [
1523
+ {
1524
+ "include": "#interpolation"
1525
+ },
1526
+ {
1527
+ "name": "constant.numeric.css",
1528
+ "match": "\\d+"
1529
+ },
1530
+ {
1531
+ "name": "constant.other.scss",
1532
+ "match": "(?\u003c=\\d)n\\b|\\b(n|even|odd)\\b"
1533
+ },
1534
+ {
1535
+ "name": "invalid.illegal.scss",
1536
+ "match": "\\w+"
1537
+ }
1538
+ ],
1539
+ "beginCaptures": {
1540
+ "1": {
1541
+ "name": "entity.other.attribute-name.pseudo-class.css"
1542
+ },
1543
+ "2": {
1544
+ "name": "punctuation.definition.entity.css"
1545
+ },
1546
+ "3": {
1547
+ "name": "punctuation.definition.pseudo-class.begin.bracket.round.css"
1548
+ }
1549
+ },
1550
+ "endCaptures": {
1551
+ "0": {
1552
+ "name": "punctuation.definition.pseudo-class.end.bracket.round.css"
1553
+ }
1554
+ }
1555
+ },
1556
+ {
1557
+ "include": "source.css#pseudo-classes"
1558
+ },
1559
+ {
1560
+ "include": "source.css#pseudo-elements"
1561
+ },
1562
+ {
1563
+ "include": "source.css#functional-pseudo-classes"
1564
+ }
1565
+ ]
1566
+ },
1567
+ "selectors": {
1568
+ "patterns": [
1569
+ {
1570
+ "include": "source.css#tag-names"
1571
+ },
1572
+ {
1573
+ "include": "#selector_custom"
1574
+ },
1575
+ {
1576
+ "include": "#selector_class"
1577
+ },
1578
+ {
1579
+ "include": "#selector_id"
1580
+ },
1581
+ {
1582
+ "include": "#selector_pseudo_class"
1583
+ },
1584
+ {
1585
+ "include": "#tag_wildcard"
1586
+ },
1587
+ {
1588
+ "include": "#tag_parent_reference"
1589
+ },
1590
+ {
1591
+ "include": "source.css#pseudo-elements"
1592
+ },
1593
+ {
1594
+ "include": "#selector_attribute"
1595
+ },
1596
+ {
1597
+ "include": "#selector_placeholder"
1598
+ },
1599
+ {
1600
+ "include": "#parent_selector_suffix"
1601
+ }
1602
+ ]
1603
+ },
1604
+ "string_double": {
1605
+ "name": "string.quoted.double.scss",
1606
+ "begin": "\"",
1607
+ "end": "\"",
1608
+ "patterns": [
1609
+ {
1610
+ "name": "constant.character.escape.scss",
1611
+ "match": "\\\\([[:xdigit:]]{1,6}|.)"
1612
+ },
1613
+ {
1614
+ "include": "#interpolation"
1615
+ }
1616
+ ],
1617
+ "beginCaptures": {
1618
+ "0": {
1619
+ "name": "punctuation.definition.string.begin.scss"
1620
+ }
1621
+ },
1622
+ "endCaptures": {
1623
+ "0": {
1624
+ "name": "punctuation.definition.string.end.scss"
1625
+ }
1626
+ }
1627
+ },
1628
+ "string_single": {
1629
+ "name": "string.quoted.single.scss",
1630
+ "begin": "'",
1631
+ "end": "'",
1632
+ "patterns": [
1633
+ {
1634
+ "name": "constant.character.escape.scss",
1635
+ "match": "\\\\([[:xdigit:]]{1,6}|.)"
1636
+ },
1637
+ {
1638
+ "include": "#interpolation"
1639
+ }
1640
+ ],
1641
+ "beginCaptures": {
1642
+ "0": {
1643
+ "name": "punctuation.definition.string.begin.scss"
1644
+ }
1645
+ },
1646
+ "endCaptures": {
1647
+ "0": {
1648
+ "name": "punctuation.definition.string.end.scss"
1649
+ }
1650
+ }
1651
+ },
1652
+ "tag_parent_reference": {
1653
+ "name": "entity.name.tag.reference.scss",
1654
+ "match": "\u0026"
1655
+ },
1656
+ "tag_wildcard": {
1657
+ "name": "entity.name.tag.wildcard.scss",
1658
+ "match": "\\*"
1659
+ },
1660
+ "variable": {
1661
+ "patterns": [
1662
+ {
1663
+ "include": "#variables"
1664
+ },
1665
+ {
1666
+ "include": "#interpolation"
1667
+ }
1668
+ ]
1669
+ },
1670
+ "variable_setting": {
1671
+ "contentName": "meta.definition.variable.scss",
1672
+ "begin": "(?=\\$[\\w-]+\\s*:)",
1673
+ "end": ";",
1674
+ "patterns": [
1675
+ {
1676
+ "name": "variable.scss",
1677
+ "match": "\\$[\\w-]+(?=\\s*:)"
1678
+ },
1679
+ {
1680
+ "begin": ":",
1681
+ "end": "(?=;)",
1682
+ "patterns": [
1683
+ {
1684
+ "include": "#comment_docblock"
1685
+ },
1686
+ {
1687
+ "include": "#comment_block"
1688
+ },
1689
+ {
1690
+ "include": "#comment_line"
1691
+ },
1692
+ {
1693
+ "include": "#map"
1694
+ },
1695
+ {
1696
+ "include": "#property_values"
1697
+ },
1698
+ {
1699
+ "include": "#variable"
1700
+ },
1701
+ {
1702
+ "name": "punctuation.separator.delimiter.scss",
1703
+ "match": ","
1704
+ }
1705
+ ],
1706
+ "beginCaptures": {
1707
+ "0": {
1708
+ "name": "punctuation.separator.key-value.scss"
1709
+ }
1710
+ }
1711
+ }
1712
+ ],
1713
+ "endCaptures": {
1714
+ "0": {
1715
+ "name": "punctuation.terminator.rule.scss"
1716
+ }
1717
+ }
1718
+ },
1719
+ "variables": {
1720
+ "name": "variable.scss",
1721
+ "match": "(\\$|\\-\\-)[A-Za-z0-9_-]+\\b"
1722
+ }
1723
+ }
1724
+ }