[OCaml] Mobile-friendly clone of cgit.
1
{
2
"$schema":"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
3
"name":"Vue",
4
"scopeName":"text.html.vue",
5
"patterns":[
6
{
7
"include":"#vue-comments"
8
},
9
{
10
"include":"#self-closing-tag"
11
},
12
{
13
"begin":"(<)",
14
"beginCaptures":{
15
"1":{
16
"name":"punctuation.definition.tag.begin.html.vue"
17
}
18
},
19
"end":"(>)",
20
"endCaptures":{
21
"1":{
22
"name":"punctuation.definition.tag.end.html.vue"
23
}
24
},
25
"patterns":[
26
{
27
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)md\\b\\2)",
28
"beginCaptures":{
29
"1":{
30
"name":"entity.name.tag.$1.html.vue"
31
}
32
},
33
"end":"(</)(\\1)\\s*(?=>)",
34
"endCaptures":{
35
"1":{
36
"name":"punctuation.definition.tag.begin.html.vue"
37
},
38
"2":{
39
"name":"entity.name.tag.$2.html.vue"
40
}
41
},
42
"patterns":[
43
{
44
"include":"#tag-stuff"
45
},
46
{
47
"begin":"(?<=>)",
48
"end":"(?=<\\/)",
49
"name":"text.html.markdown",
50
"patterns":[
51
{
52
"include":"text.html.markdown"
53
}
54
]
55
}
56
]
57
},
58
{
59
"begin":"(?!template(?![A-Za-z0-9:-]))([A-Za-z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)html\\b\\2)",
60
"beginCaptures":{
61
"1":{
62
"name":"entity.name.tag.$1.html.vue"
63
}
64
},
65
"end":"(</)(\\1)\\s*(?=>)",
66
"endCaptures":{
67
"1":{
68
"name":"punctuation.definition.tag.begin.html.vue"
69
},
70
"2":{
71
"name":"entity.name.tag.$2.html.vue"
72
}
73
},
74
"contentName":"text.html.derivative",
75
"patterns":[
76
{
77
"include":"#tag-stuff"
78
},
79
{
80
"include":"#html-stuff"
81
}
82
]
83
},
84
{
85
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)pug\\b\\2)",
86
"beginCaptures":{
87
"1":{
88
"name":"entity.name.tag.$1.html.vue"
89
}
90
},
91
"end":"(</)(\\1)\\s*(?=>)",
92
"endCaptures":{
93
"1":{
94
"name":"punctuation.definition.tag.begin.html.vue"
95
},
96
"2":{
97
"name":"entity.name.tag.$2.html.vue"
98
}
99
},
100
"patterns":[
101
{
102
"include":"#tag-stuff"
103
},
104
{
105
"begin":"(?<=>)",
106
"end":"(?=<\\/)",
107
"name":"text.pug",
108
"patterns":[
109
{
110
"include":"text.pug"
111
}
112
]
113
}
114
]
115
},
116
{
117
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)stylus\\b\\2)",
118
"beginCaptures":{
119
"1":{
120
"name":"entity.name.tag.$1.html.vue"
121
}
122
},
123
"end":"(</)(\\1)\\s*(?=>)",
124
"endCaptures":{
125
"1":{
126
"name":"punctuation.definition.tag.begin.html.vue"
127
},
128
"2":{
129
"name":"entity.name.tag.$2.html.vue"
130
}
131
},
132
"patterns":[
133
{
134
"include":"#tag-stuff"
135
},
136
{
137
"begin":"(?<=>)",
138
"end":"(?=<\\/)",
139
"name":"source.stylus",
140
"patterns":[
141
{
142
"include":"source.stylus"
143
}
144
]
145
}
146
]
147
},
148
{
149
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)postcss\\b\\2)",
150
"beginCaptures":{
151
"1":{
152
"name":"entity.name.tag.$1.html.vue"
153
}
154
},
155
"end":"(</)(\\1)\\s*(?=>)",
156
"endCaptures":{
157
"1":{
158
"name":"punctuation.definition.tag.begin.html.vue"
159
},
160
"2":{
161
"name":"entity.name.tag.$2.html.vue"
162
}
163
},
164
"patterns":[
165
{
166
"include":"#tag-stuff"
167
},
168
{
169
"begin":"(?<=>)",
170
"end":"(?=<\\/)",
171
"name":"source.postcss",
172
"patterns":[
173
{
174
"include":"source.postcss"
175
}
176
]
177
}
178
]
179
},
180
{
181
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)sass\\b\\2)",
182
"beginCaptures":{
183
"1":{
184
"name":"entity.name.tag.$1.html.vue"
185
}
186
},
187
"end":"(</)(\\1)\\s*(?=>)",
188
"endCaptures":{
189
"1":{
190
"name":"punctuation.definition.tag.begin.html.vue"
191
},
192
"2":{
193
"name":"entity.name.tag.$2.html.vue"
194
}
195
},
196
"patterns":[
197
{
198
"include":"#tag-stuff"
199
},
200
{
201
"begin":"(?<=>)",
202
"end":"(?=<\\/)",
203
"name":"source.sass",
204
"patterns":[
205
{
206
"include":"source.sass"
207
}
208
]
209
}
210
]
211
},
212
{
213
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)css\\b\\2)",
214
"beginCaptures":{
215
"1":{
216
"name":"entity.name.tag.$1.html.vue"
217
}
218
},
219
"end":"(</)(\\1)\\s*(?=>)",
220
"endCaptures":{
221
"1":{
222
"name":"punctuation.definition.tag.begin.html.vue"
223
},
224
"2":{
225
"name":"entity.name.tag.$2.html.vue"
226
}
227
},
228
"patterns":[
229
{
230
"include":"#tag-stuff"
231
},
232
{
233
"begin":"(?<=>)",
234
"end":"(?=<\\/)",
235
"name":"source.css",
236
"patterns":[
237
{
238
"include":"source.css"
239
}
240
]
241
}
242
]
243
},
244
{
245
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)scss\\b\\2)",
246
"beginCaptures":{
247
"1":{
248
"name":"entity.name.tag.$1.html.vue"
249
}
250
},
251
"end":"(</)(\\1)\\s*(?=>)",
252
"endCaptures":{
253
"1":{
254
"name":"punctuation.definition.tag.begin.html.vue"
255
},
256
"2":{
257
"name":"entity.name.tag.$2.html.vue"
258
}
259
},
260
"patterns":[
261
{
262
"include":"#tag-stuff"
263
},
264
{
265
"begin":"(?<=>)",
266
"end":"(?=<\\/)",
267
"name":"source.css.scss",
268
"patterns":[
269
{
270
"include":"source.css.scss"
271
}
272
]
273
}
274
]
275
},
276
{
277
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)less\\b\\2)",
278
"beginCaptures":{
279
"1":{
280
"name":"entity.name.tag.$1.html.vue"
281
}
282
},
283
"end":"(</)(\\1)\\s*(?=>)",
284
"endCaptures":{
285
"1":{
286
"name":"punctuation.definition.tag.begin.html.vue"
287
},
288
"2":{
289
"name":"entity.name.tag.$2.html.vue"
290
}
291
},
292
"patterns":[
293
{
294
"include":"#tag-stuff"
295
},
296
{
297
"begin":"(?<=>)",
298
"end":"(?=<\\/)",
299
"name":"source.css.less",
300
"patterns":[
301
{
302
"include":"source.css.less"
303
}
304
]
305
}
306
]
307
},
308
{
309
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)js\\b\\2)",
310
"beginCaptures":{
311
"1":{
312
"name":"entity.name.tag.$1.html.vue"
313
}
314
},
315
"end":"(</)(\\1)\\s*(?=>)",
316
"endCaptures":{
317
"1":{
318
"name":"punctuation.definition.tag.begin.html.vue"
319
},
320
"2":{
321
"name":"entity.name.tag.$2.html.vue"
322
}
323
},
324
"patterns":[
325
{
326
"include":"#tag-stuff"
327
},
328
{
329
"begin":"(?<=>)",
330
"end":"(?=<\\/)",
331
"name":"source.js",
332
"patterns":[
333
{
334
"include":"source.js"
335
}
336
]
337
}
338
]
339
},
340
{
341
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)ts\\b\\2)",
342
"beginCaptures":{
343
"1":{
344
"name":"entity.name.tag.$1.html.vue"
345
}
346
},
347
"end":"(</)(\\1)\\s*(?=>)",
348
"endCaptures":{
349
"1":{
350
"name":"punctuation.definition.tag.begin.html.vue"
351
},
352
"2":{
353
"name":"entity.name.tag.$2.html.vue"
354
}
355
},
356
"patterns":[
357
{
358
"include":"#tag-stuff"
359
},
360
{
361
"begin":"(?<=>)(?=[^\\n]*<\\/script[\\s>])",
362
"end":"(?=<\\/script[\\s>])",
363
"name":"source.ts",
364
"patterns":[
365
{
366
"include":"source.ts"
367
}
368
]
369
},
370
{
371
"begin":"(?<=>)",
372
"while":"^(?!\\s*<\\/script[\\s>])",
373
"name":"source.ts",
374
"patterns":[
375
{
376
"include":"source.ts"
377
}
378
]
379
}
380
]
381
},
382
{
383
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)jsx\\b\\2)",
384
"beginCaptures":{
385
"1":{
386
"name":"entity.name.tag.$1.html.vue"
387
}
388
},
389
"end":"(</)(\\1)\\s*(?=>)",
390
"endCaptures":{
391
"1":{
392
"name":"punctuation.definition.tag.begin.html.vue"
393
},
394
"2":{
395
"name":"entity.name.tag.$2.html.vue"
396
}
397
},
398
"patterns":[
399
{
400
"include":"#tag-stuff"
401
},
402
{
403
"begin":"(?<=>)",
404
"end":"(?=<\\/)",
405
"name":"source.js.jsx",
406
"patterns":[
407
{
408
"include":"source.js.jsx"
409
}
410
]
411
}
412
]
413
},
414
{
415
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)tsx\\b\\2)",
416
"beginCaptures":{
417
"1":{
418
"name":"entity.name.tag.$1.html.vue"
419
}
420
},
421
"end":"(</)(\\1)\\s*(?=>)",
422
"endCaptures":{
423
"1":{
424
"name":"punctuation.definition.tag.begin.html.vue"
425
},
426
"2":{
427
"name":"entity.name.tag.$2.html.vue"
428
}
429
},
430
"patterns":[
431
{
432
"include":"#tag-stuff"
433
},
434
{
435
"begin":"(?<=>)(?=[^\\n]*<\\/script[\\s>])",
436
"end":"(?=<\\/script[\\s>])",
437
"name":"source.tsx",
438
"patterns":[
439
{
440
"include":"source.tsx"
441
}
442
]
443
},
444
{
445
"begin":"(?<=>)",
446
"while":"^(?!\\s*<\\/script[\\s>])",
447
"name":"source.tsx",
448
"patterns":[
449
{
450
"include":"source.tsx"
451
}
452
]
453
}
454
]
455
},
456
{
457
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)coffee\\b\\2)",
458
"beginCaptures":{
459
"1":{
460
"name":"entity.name.tag.$1.html.vue"
461
}
462
},
463
"end":"(</)(\\1)\\s*(?=>)",
464
"endCaptures":{
465
"1":{
466
"name":"punctuation.definition.tag.begin.html.vue"
467
},
468
"2":{
469
"name":"entity.name.tag.$2.html.vue"
470
}
471
},
472
"patterns":[
473
{
474
"include":"#tag-stuff"
475
},
476
{
477
"begin":"(?<=>)",
478
"end":"(?=<\\/)",
479
"name":"source.coffee",
480
"patterns":[
481
{
482
"include":"source.coffee"
483
}
484
]
485
}
486
]
487
},
488
{
489
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)json\\b\\2)",
490
"beginCaptures":{
491
"1":{
492
"name":"entity.name.tag.$1.html.vue"
493
}
494
},
495
"end":"(</)(\\1)\\s*(?=>)",
496
"endCaptures":{
497
"1":{
498
"name":"punctuation.definition.tag.begin.html.vue"
499
},
500
"2":{
501
"name":"entity.name.tag.$2.html.vue"
502
}
503
},
504
"patterns":[
505
{
506
"include":"#tag-stuff"
507
},
508
{
509
"begin":"(?<=>)",
510
"end":"(?=<\\/)",
511
"name":"source.json",
512
"patterns":[
513
{
514
"include":"source.json"
515
}
516
]
517
}
518
]
519
},
520
{
521
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)jsonc\\b\\2)",
522
"beginCaptures":{
523
"1":{
524
"name":"entity.name.tag.$1.html.vue"
525
}
526
},
527
"end":"(</)(\\1)\\s*(?=>)",
528
"endCaptures":{
529
"1":{
530
"name":"punctuation.definition.tag.begin.html.vue"
531
},
532
"2":{
533
"name":"entity.name.tag.$2.html.vue"
534
}
535
},
536
"patterns":[
537
{
538
"include":"#tag-stuff"
539
},
540
{
541
"begin":"(?<=>)",
542
"end":"(?=<\\/)",
543
"name":"source.json.comments",
544
"patterns":[
545
{
546
"include":"source.json.comments"
547
}
548
]
549
}
550
]
551
},
552
{
553
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)json5\\b\\2)",
554
"beginCaptures":{
555
"1":{
556
"name":"entity.name.tag.$1.html.vue"
557
}
558
},
559
"end":"(</)(\\1)\\s*(?=>)",
560
"endCaptures":{
561
"1":{
562
"name":"punctuation.definition.tag.begin.html.vue"
563
},
564
"2":{
565
"name":"entity.name.tag.$2.html.vue"
566
}
567
},
568
"patterns":[
569
{
570
"include":"#tag-stuff"
571
},
572
{
573
"begin":"(?<=>)",
574
"end":"(?=<\\/)",
575
"name":"source.json5",
576
"patterns":[
577
{
578
"include":"source.json5"
579
}
580
]
581
}
582
]
583
},
584
{
585
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)yaml\\b\\2)",
586
"beginCaptures":{
587
"1":{
588
"name":"entity.name.tag.$1.html.vue"
589
}
590
},
591
"end":"(</)(\\1)\\s*(?=>)",
592
"endCaptures":{
593
"1":{
594
"name":"punctuation.definition.tag.begin.html.vue"
595
},
596
"2":{
597
"name":"entity.name.tag.$2.html.vue"
598
}
599
},
600
"patterns":[
601
{
602
"include":"#tag-stuff"
603
},
604
{
605
"begin":"(?<=>)",
606
"end":"(?=<\\/)",
607
"name":"source.yaml",
608
"patterns":[
609
{
610
"include":"source.yaml"
611
}
612
]
613
}
614
]
615
},
616
{
617
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)toml\\b\\2)",
618
"beginCaptures":{
619
"1":{
620
"name":"entity.name.tag.$1.html.vue"
621
}
622
},
623
"end":"(</)(\\1)\\s*(?=>)",
624
"endCaptures":{
625
"1":{
626
"name":"punctuation.definition.tag.begin.html.vue"
627
},
628
"2":{
629
"name":"entity.name.tag.$2.html.vue"
630
}
631
},
632
"patterns":[
633
{
634
"include":"#tag-stuff"
635
},
636
{
637
"begin":"(?<=>)",
638
"end":"(?=<\\/)",
639
"name":"source.toml",
640
"patterns":[
641
{
642
"include":"source.toml"
643
}
644
]
645
}
646
]
647
},
648
{
649
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)(gql|graphql)\\b\\2)",
650
"beginCaptures":{
651
"1":{
652
"name":"entity.name.tag.$1.html.vue"
653
}
654
},
655
"end":"(</)(\\1)\\s*(?=>)",
656
"endCaptures":{
657
"1":{
658
"name":"punctuation.definition.tag.begin.html.vue"
659
},
660
"2":{
661
"name":"entity.name.tag.$2.html.vue"
662
}
663
},
664
"patterns":[
665
{
666
"include":"#tag-stuff"
667
},
668
{
669
"begin":"(?<=>)",
670
"end":"(?=<\\/)",
671
"name":"source.graphql",
672
"patterns":[
673
{
674
"include":"source.graphql"
675
}
676
]
677
}
678
]
679
},
680
{
681
"begin":"([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)vue\\b\\2)",
682
"beginCaptures":{
683
"1":{
684
"name":"entity.name.tag.$1.html.vue"
685
}
686
},
687
"end":"(</)(\\1)\\s*(?=>)",
688
"endCaptures":{
689
"1":{
690
"name":"punctuation.definition.tag.begin.html.vue"
691
},
692
"2":{
693
"name":"entity.name.tag.$2.html.vue"
694
}
695
},
696
"patterns":[
697
{
698
"include":"#tag-stuff"
699
},
700
{
701
"begin":"(?<=>)",
702
"end":"(?=<\\/)",
703
"name":"text.html.vue",
704
"patterns":[
705
{
706
"include":"text.html.vue"
707
}
708
]
709
}
710
]
711
},
712
{
713
"begin":"(template)(?=\\s|\\/?>)",
714
"beginCaptures":{
715
"1":{
716
"name":"entity.name.tag.$1.html.vue"
717
}
718
},
719
"end":"(</)(\\1)\\s*(?=>)",
720
"endCaptures":{
721
"1":{
722
"name":"punctuation.definition.tag.begin.html.vue"
723
},
724
"2":{
725
"name":"entity.name.tag.$2.html.vue"
726
}
727
},
728
"patterns":[
729
{
730
"include":"#tag-stuff"
731
},
732
{
733
"begin":"(?<=>)",
734
"end":"(?=<\\/template[\\s>])",
735
"name":"text.html.derivative",
736
"patterns":[
737
{
738
"include":"#html-stuff"
739
}
740
]
741
}
742
]
743
},
744
{
745
"begin":"(script)(?=\\s|\\/?>)",
746
"beginCaptures":{
747
"1":{
748
"name":"entity.name.tag.$1.html.vue"
749
}
750
},
751
"end":"(</)(\\1)\\s*(?=>)",
752
"endCaptures":{
753
"1":{
754
"name":"punctuation.definition.tag.begin.html.vue"
755
},
756
"2":{
757
"name":"entity.name.tag.$2.html.vue"
758
}
759
},
760
"patterns":[
761
{
762
"include":"#multi-line-script-tag-stuff"
763
}
764
]
765
},
766
{
767
"begin":"(style)(?=\\s|\\/?>)",
768
"beginCaptures":{
769
"1":{
770
"name":"entity.name.tag.$1.html.vue"
771
}
772
},
773
"end":"(</)(\\1)\\s*(?=>)",
774
"endCaptures":{
775
"1":{
776
"name":"punctuation.definition.tag.begin.html.vue"
777
},
778
"2":{
779
"name":"entity.name.tag.$2.html.vue"
780
}
781
},
782
"patterns":[
783
{
784
"include":"#multi-line-style-tag-stuff"
785
}
786
]
787
},
788
{
789
"begin":"([a-zA-Z0-9:-]+)",
790
"beginCaptures":{
791
"1":{
792
"name":"entity.name.tag.$1.html.vue"
793
}
794
},
795
"end":"(</)(\\1)\\s*(?=>)",
796
"endCaptures":{
797
"1":{
798
"name":"punctuation.definition.tag.begin.html.vue"
799
},
800
"2":{
801
"name":"entity.name.tag.$2.html.vue"
802
}
803
},
804
"patterns":[
805
{
806
"include":"#tag-stuff"
807
},
808
{
809
"begin":"(?<=>)",
810
"end":"(?=<\\/)",
811
"name":"text"
812
}
813
]
814
}
815
]
816
}
817
],
818
"repository":{
819
"multi-line-script-tag-stuff":{
820
"begin":"\\G",
821
"end":"(?=<\\/script[\\s>])",
822
"patterns":[
823
{
824
"begin":"\\G(?!\\blang\\s*=\\s*(?:['\"]?)(?:ts|tsx|jsx|coffee)\\b)",
825
"end":"(?=\\blang\\s*=\\s*(?:['\"]?)(?:ts|tsx|jsx|coffee)\\b)|(>)",
826
"endCaptures":{
827
"1":{
828
"name":"punctuation.definition.tag.end.html.vue"
829
}
830
},
831
"name":"meta.tag-stuff",
832
"patterns":[
833
{
834
"include":"#vue-directives"
835
},
836
{
837
"include":"text.html.basic#attribute"
838
}
839
]
840
},
841
{
842
"begin":"(?=\\blang\\s*=\\s*(?:['\"]?)ts\\b)",
843
"end":"(?=<\\/script[\\s>])",
844
"patterns":[
845
{
846
"include":"#tag-stuff"
847
},
848
{
849
"begin":"(?<=>)(?=[^\\n]*<\\/script[\\s>])",
850
"end":"(?=<\\/script[\\s>])",
851
"name":"source.ts",
852
"patterns":[
853
{
854
"include":"source.ts"
855
}
856
]
857
},
858
{
859
"begin":"(?<=>)",
860
"while":"^(?!\\s*<\\/script[\\s>])",
861
"name":"source.ts",
862
"patterns":[
863
{
864
"include":"source.ts"
865
}
866
]
867
}
868
]
869
},
870
{
871
"begin":"(?=\\blang\\s*=\\s*(?:['\"]?)tsx\\b)",
872
"end":"(?=<\\/script[\\s>])",
873
"patterns":[
874
{
875
"include":"#tag-stuff"
876
},
877
{
878
"begin":"(?<=>)(?=[^\\n]*<\\/script[\\s>])",
879
"end":"(?=<\\/script[\\s>])",
880
"name":"source.tsx",
881
"patterns":[
882
{
883
"include":"source.tsx"
884
}
885
]
886
},
887
{
888
"begin":"(?<=>)",
889
"while":"^(?!\\s*<\\/script[\\s>])",
890
"name":"source.tsx",
891
"patterns":[
892
{
893
"include":"source.tsx"
894
}
895
]
896
}
897
]
898
},
899
{
900
"begin":"(?=\\blang\\s*=\\s*(?:['\"]?)jsx\\b)",
901
"end":"(?=<\\/script[\\s>])",
902
"patterns":[
903
{
904
"include":"#tag-stuff"
905
},
906
{
907
"begin":"(?<=>)",
908
"end":"(?=<\\/script[\\s>])",
909
"name":"source.js.jsx",
910
"patterns":[
911
{
912
"include":"source.js.jsx"
913
}
914
]
915
}
916
]
917
},
918
{
919
"begin":"(?=\\blang\\s*=\\s*(?:['\"]?)coffee\\b)",
920
"end":"(?=<\\/script[\\s>])",
921
"patterns":[
922
{
923
"include":"#tag-stuff"
924
},
925
{
926
"begin":"(?<=>)",
927
"end":"(?=<\\/script[\\s>])",
928
"name":"source.coffee",
929
"patterns":[
930
{
931
"include":"source.coffee"
932
}
933
]
934
}
935
]
936
},
937
{
938
"begin":"(?<=>)",
939
"end":"(?=<\\/script[\\s>])",
940
"name":"source.js",
941
"patterns":[
942
{
943
"include":"source.js"
944
}
945
]
946
}
947
]
948
},
949
"multi-line-style-tag-stuff":{
950
"begin":"\\G",
951
"end":"(?=<\\/style[\\s>])",
952
"patterns":[
953
{
954
"begin":"\\G(?!\\blang\\s*=\\s*(?:['\"]?)(?:scss|stylus|less|postcss)\\b)",
955
"end":"(?=\\blang\\s*=\\s*(?:['\"]?)(?:scss|stylus|less|postcss)\\b)|(>)",
956
"endCaptures":{
957
"1":{
958
"name":"punctuation.definition.tag.end.html.vue"
959
}
960
},
961
"name":"meta.tag-stuff",
962
"patterns":[
963
{
964
"include":"#vue-directives"
965
},
966
{
967
"include":"text.html.basic#attribute"
968
}
969
]
970
},
971
{
972
"begin":"(?=\\blang\\s*=\\s*(?:['\"]?)scss\\b)",
973
"end":"(?=<\\/style[\\s>])",
974
"patterns":[
975
{
976
"include":"#tag-stuff"
977
},
978
{
979
"begin":"(?<=>)",
980
"end":"(?=<\\/style[\\s>])",
981
"name":"source.css.scss",
982
"patterns":[
983
{
984
"include":"source.css.scss"
985
}
986
]
987
}
988
]
989
},
990
{
991
"begin":"(?=\\blang\\s*=\\s*(?:['\"]?)stylus\\b)",
992
"end":"(?=<\\/style[\\s>])",
993
"patterns":[
994
{
995
"include":"#tag-stuff"
996
},
997
{
998
"begin":"(?<=>)",
999
"end":"(?=<\\/style[\\s>])",
1000
"name":"source.stylus",
1001
"patterns":[
1002
{
1003
"include":"source.stylus"
1004
}
1005
]
1006
}
1007
]
1008
},
1009
{
1010
"begin":"(?=\\blang\\s*=\\s*(?:['\"]?)less\\b)",
1011
"end":"(?=<\\/style[\\s>])",
1012
"patterns":[
1013
{
1014
"include":"#tag-stuff"
1015
},
1016
{
1017
"begin":"(?<=>)",
1018
"end":"(?=<\\/style[\\s>])",
1019
"name":"source.css.less",
1020
"patterns":[
1021
{
1022
"include":"source.css.less"
1023
}
1024
]
1025
}
1026
]
1027
},
1028
{
1029
"begin":"(?=\\blang\\s*=\\s*(?:['\"]?)postcss\\b)",
1030
"end":"(?=<\\/style[\\s>])",
1031
"patterns":[
1032
{
1033
"include":"#tag-stuff"
1034
},
1035
{
1036
"begin":"(?<=>)",
1037
"end":"(?=<\\/style[\\s>])",
1038
"name":"source.postcss",
1039
"patterns":[
1040
{
1041
"include":"source.postcss"
1042
}
1043
]
1044
}
1045
]
1046
},
1047
{
1048
"begin":"(?<=>)",
1049
"end":"(?=<\\/style[\\s>])",
1050
"name":"source.css",
1051
"patterns":[
1052
{
1053
"include":"source.css"
1054
}
1055
]
1056
}
1057
]
1058
},
1059
"self-closing-tag":{
1060
"begin":"(<)([a-zA-Z0-9:-]+)(?=([^>]+/>))",
1061
"beginCaptures":{
1062
"1":{
1063
"name":"punctuation.definition.tag.begin.html.vue"
1064
},
1065
"2":{
1066
"name":"entity.name.tag.$2.html.vue"
1067
}
1068
},
1069
"end":"(/>)",
1070
"endCaptures":{
1071
"1":{
1072
"name":"punctuation.definition.tag.end.html.vue"
1073
}
1074
},
1075
"name":"self-closing-tag",
1076
"patterns":[
1077
{
1078
"include":"#tag-stuff"
1079
}
1080
]
1081
},
1082
"capitalized-tag":{
1083
"begin":"(<)([A-Z][a-zA-Z0-9:-]*)(?=\\s|/?>)",
1084
"beginCaptures":{
1085
"1":{
1086
"name":"punctuation.definition.tag.begin.html.vue"
1087
},
1088
"2":{
1089
"name":"entity.name.tag.html.vue"
1090
}
1091
},
1092
"end":"/?>",
1093
"endCaptures":{
1094
"0":{
1095
"name":"punctuation.definition.tag.end.html.vue"
1096
}
1097
},
1098
"name":"meta.tag.structure.$2.start.html.vue",
1099
"patterns":[
1100
{
1101
"begin":"\\G",
1102
"end":"(?=/?>)",
1103
"patterns":[
1104
{
1105
"include":"#vue-directives"
1106
},
1107
{
1108
"include":"text.html.basic#attribute"
1109
}
1110
]
1111
}
1112
]
1113
},
1114
"template-tag":{
1115
"patterns":[
1116
{
1117
"include":"#template-tag-1"
1118
},
1119
{
1120
"include":"#template-tag-2"
1121
}
1122
]
1123
},
1124
"template-tag-1":{
1125
"begin":"(<)(template)\\b(>)",
1126
"beginCaptures":{
1127
"1":{
1128
"name":"punctuation.definition.tag.begin.html.vue"
1129
},
1130
"2":{
1131
"name":"entity.name.tag.$2.html.vue"
1132
},
1133
"3":{
1134
"name":"punctuation.definition.tag.end.html.vue"
1135
}
1136
},
1137
"end":"(/?>)",
1138
"endCaptures":{
1139
"1":{
1140
"name":"punctuation.definition.tag.end.html.vue"
1141
}
1142
},
1143
"name":"meta.template-tag.start",
1144
"patterns":[
1145
{
1146
"begin":"\\G",
1147
"end":"(?=/>)|((</)(template)(?=[\\s>]))",
1148
"endCaptures":{
1149
"2":{
1150
"name":"punctuation.definition.tag.begin.html.vue"
1151
},
1152
"3":{
1153
"name":"entity.name.tag.$3.html.vue"
1154
}
1155
},
1156
"name":"meta.template-tag.end",
1157
"patterns":[
1158
{
1159
"include":"#html-stuff"
1160
}
1161
]
1162
}
1163
]
1164
},
1165
"template-tag-2":{
1166
"begin":"(<)(template)(?=\\s|\\/?>)",
1167
"beginCaptures":{
1168
"1":{
1169
"name":"punctuation.definition.tag.begin.html.vue"
1170
},
1171
"2":{
1172
"name":"entity.name.tag.$2.html.vue"
1173
}
1174
},
1175
"end":"(/?>)",
1176
"endCaptures":{
1177
"1":{
1178
"name":"punctuation.definition.tag.end.html.vue"
1179
}
1180
},
1181
"name":"meta.template-tag.start",
1182
"patterns":[
1183
{
1184
"begin":"\\G",
1185
"end":"(?=/>)|((</)(template)(?=[\\s>]))",
1186
"endCaptures":{
1187
"2":{
1188
"name":"punctuation.definition.tag.begin.html.vue"
1189
},
1190
"3":{
1191
"name":"entity.name.tag.$3.html.vue"
1192
}
1193
},
1194
"name":"meta.template-tag.end",
1195
"patterns":[
1196
{
1197
"include":"#tag-stuff"
1198
},
1199
{
1200
"include":"#html-stuff"
1201
}
1202
]
1203
}
1204
]
1205
},
1206
"html-stuff":{
1207
"patterns":[
1208
{
1209
"include":"#template-tag"
1210
},
1211
{
1212
"include":"#capitalized-tag"
1213
},
1214
{
1215
"include":"text.html.derivative"
1216
},
1217
{
1218
"include":"text.html.basic"
1219
}
1220
]
1221
},
1222
"tag-stuff":{
1223
"begin":"\\G",
1224
"end":"(?=/>)|(>)",
1225
"endCaptures":{
1226
"1":{
1227
"name":"punctuation.definition.tag.end.html.vue"
1228
}
1229
},
1230
"name":"meta.tag-stuff",
1231
"patterns":[
1232
{
1233
"include":"#vue-directives"
1234
},
1235
{
1236
"include":"text.html.basic#attribute"
1237
}
1238
]
1239
},
1240
"vue-directives":{
1241
"patterns":[
1242
{
1243
"include":"#vue-directives-control"
1244
},
1245
{
1246
"include":"#vue-directives-generic-attr"
1247
},
1248
{
1249
"include":"#vue-directives-style-attr"
1250
},
1251
{
1252
"include":"#vue-directives-original"
1253
}
1254
]
1255
},
1256
"vue-directives-original":{
1257
"begin":"(?:(?:(v-[\\w-]+)(:)?)|([:\\.])|(@)|(#))(?:(?:(\\[)([^\\]]*)(\\]))|([\\w-]+))?",
1258
"beginCaptures":{
1259
"1":{
1260
"name":"entity.other.attribute-name.html.vue"
1261
},
1262
"2":{
1263
"name":"punctuation.separator.key-value.html.vue"
1264
},
1265
"3":{
1266
"name":"punctuation.attribute-shorthand.bind.html.vue"
1267
},
1268
"4":{
1269
"name":"punctuation.attribute-shorthand.event.html.vue"
1270
},
1271
"5":{
1272
"name":"punctuation.attribute-shorthand.slot.html.vue"
1273
},
1274
"6":{
1275
"name":"punctuation.separator.key-value.html.vue"
1276
},
1277
"7":{
1278
"name":"source.ts.embedded.html.vue",
1279
"patterns":[
1280
{
1281
"include":"source.ts#expression"
1282
}
1283
]
1284
},
1285
"8":{
1286
"name":"punctuation.separator.key-value.html.vue"
1287
},
1288
"9":{
1289
"name":"entity.other.attribute-name.html.vue"
1290
}
1291
},
1292
"end":"(?=\\s*[^=\\s])",
1293
"name":"meta.attribute.directive.vue",
1294
"patterns":[
1295
{
1296
"match":"(\\.)([\\w-]*)",
1297
"1":{
1298
"name":"punctuation.separator.key-value.html.vue"
1299
},
1300
"2":{
1301
"name":"entity.other.attribute-name.html.vue"
1302
}
1303
},
1304
{
1305
"include":"#vue-directives-expression"
1306
}
1307
]
1308
},
1309
"vue-directives-control":{
1310
"begin":"(?:(v-for)|(v-if|v-else-if|v-else))(?=[=/>)\\s])",
1311
"beginCaptures":{
1312
"1":{
1313
"name":"keyword.control.loop.vue"
1314
},
1315
"2":{
1316
"name":"keyword.control.conditional.vue"
1317
}
1318
},
1319
"end":"(?=\\s*[^=\\s])",
1320
"name":"meta.attribute.directive.control.vue",
1321
"patterns":[
1322
{
1323
"include":"#vue-directives-expression"
1324
}
1325
]
1326
},
1327
"vue-directives-expression":{
1328
"patterns":[
1329
{
1330
"begin":"(=)\\s*('|\"|`)",
1331
"beginCaptures":{
1332
"1":{
1333
"name":"punctuation.separator.key-value.html.vue"
1334
},
1335
"2":{
1336
"name":"punctuation.definition.string.begin.html.vue"
1337
}
1338
},
1339
"end":"(\\2)",
1340
"endCaptures":{
1341
"1":{
1342
"name":"punctuation.definition.string.end.html.vue"
1343
}
1344
},
1345
"patterns":[
1346
{
1347
"begin":"(?<=('|\"|`))",
1348
"end":"(?=\\1)",
1349
"name":"source.ts.embedded.html.vue",
1350
"patterns":[
1351
{
1352
"include":"source.ts#expression"
1353
}
1354
]
1355
}
1356
]
1357
},
1358
{
1359
"begin":"(=)\\s*(?=[^'\"`])",
1360
"beginCaptures":{
1361
"1":{
1362
"name":"punctuation.separator.key-value.html.vue"
1363
}
1364
},
1365
"end":"(?=(\\s|>|\\/>))",
1366
"patterns":[
1367
{
1368
"begin":"(?=[^'\"`])",
1369
"end":"(?=(\\s|>|\\/>))",
1370
"name":"source.ts.embedded.html.vue",
1371
"patterns":[
1372
{
1373
"include":"source.ts#expression"
1374
}
1375
]
1376
}
1377
]
1378
}
1379
]
1380
},
1381
"vue-directives-style-attr":{
1382
"begin":"\\b(style)\\s*(=)",
1383
"beginCaptures":{
1384
"1":{
1385
"name":"entity.other.attribute-name.html.vue"
1386
},
1387
"2":{
1388
"name":"punctuation.separator.key-value.html.vue"
1389
}
1390
},
1391
"end":"(?<='|\")",
1392
"name":"meta.attribute.style.vue",
1393
"patterns":[
1394
{
1395
"comment":"Copy from source.css#rule-list-innards",
1396
"begin":"('|\")",
1397
"beginCaptures":{
1398
"1":{
1399
"name":"punctuation.definition.string.begin.html.vue"
1400
}
1401
},
1402
"end":"(\\1)",
1403
"endCaptures":{
1404
"1":{
1405
"name":"punctuation.definition.string.end.html.vue"
1406
}
1407
},
1408
"name":"source.css.embedded.html.vue",
1409
"patterns":[
1410
{
1411
"include":"source.css#comment-block"
1412
},
1413
{
1414
"include":"source.css#escapes"
1415
},
1416
{
1417
"include":"source.css#font-features"
1418
},
1419
{
1420
"match":"(?x) (?<![\\w-])\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
1421
"name":"variable.css"
1422
},
1423
{
1424
"begin":"(?<![-a-zA-Z])(?=[-a-zA-Z])",
1425
"end":"$|(?![-a-zA-Z])",
1426
"name":"meta.property-name.css",
1427
"patterns":[
1428
{
1429
"include":"source.css#property-names"
1430
}
1431
]
1432
},
1433
{
1434
"comment":"Modify end to fix #199. TODO: handle ' character.",
1435
"begin":"(:)\\s*",
1436
"beginCaptures":{
1437
"1":{
1438
"name":"punctuation.separator.key-value.css"
1439
}
1440
},
1441
"end":"\\s*(;)|\\s*(?='|\")",
1442
"endCaptures":{
1443
"1":{
1444
"name":"punctuation.terminator.rule.css"
1445
}
1446
},
1447
"contentName":"meta.property-value.css",
1448
"patterns":[
1449
{
1450
"include":"source.css#comment-block"
1451
},
1452
{
1453
"include":"source.css#property-values"
1454
}
1455
]
1456
},
1457
{
1458
"match":";",
1459
"name":"punctuation.terminator.rule.css"
1460
}
1461
]
1462
}
1463
]
1464
},
1465
"vue-directives-generic-attr":{
1466
"begin":"\\b(generic)\\s*(=)",
1467
"beginCaptures":{
1468
"1":{
1469
"name":"entity.other.attribute-name.html.vue"
1470
},
1471
"2":{
1472
"name":"punctuation.separator.key-value.html.vue"
1473
}
1474
},
1475
"end":"(?<='|\")",
1476
"name":"meta.attribute.generic.vue",
1477
"patterns":[
1478
{
1479
"begin":"('|\")",
1480
"beginCaptures":{
1481
"1":{
1482
"name":"punctuation.definition.string.begin.html.vue"
1483
}
1484
},
1485
"end":"(\\1)",
1486
"endCaptures":{
1487
"1":{
1488
"name":"punctuation.definition.string.end.html.vue"
1489
}
1490
},
1491
"name":"meta.type.parameters.vue",
1492
"comment":"https://github.com/microsoft/vscode/blob/fd4346210f59135fad81a8b8c4cea7bf5a9ca6b4/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json#L4002-L4020",
1493
"patterns":[
1494
{
1495
"include":"source.ts#comment"
1496
},
1497
{
1498
"name":"storage.modifier.ts",
1499
"match":"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1500
},
1501
{
1502
"include":"source.ts#type"
1503
},
1504
{
1505
"include":"source.ts#punctuation-comma"
1506
},
1507
{
1508
"name":"keyword.operator.assignment.ts",
1509
"match":"(=)(?!>)"
1510
}
1511
]
1512
}
1513
]
1514
},
1515
"vue-interpolations":{
1516
"patterns":[
1517
{
1518
"begin":"(\\{\\{)",
1519
"beginCaptures":{
1520
"1":{
1521
"name":"punctuation.definition.interpolation.begin.html.vue"
1522
}
1523
},
1524
"end":"(\\}\\})",
1525
"endCaptures":{
1526
"1":{
1527
"name":"punctuation.definition.interpolation.end.html.vue"
1528
}
1529
},
1530
"name":"expression.embedded.vue",
1531
"patterns":[
1532
{
1533
"begin":"\\G",
1534
"end":"(?=\\}\\})",
1535
"name":"source.ts.embedded.html.vue",
1536
"patterns":[
1537
{
1538
"include":"source.ts#expression"
1539
}
1540
]
1541
}
1542
]
1543
}
1544
]
1545
},
1546
"vue-comments":{
1547
"patterns":[
1548
{
1549
"include":"#vue-comments-key-value"
1550
},
1551
{
1552
"begin":"<!--",
1553
"captures":{
1554
"0":{
1555
"name":"punctuation.definition.comment.vue"
1556
}
1557
},
1558
"end":"-->",
1559
"name":"comment.block.vue"
1560
}
1561
]
1562
},
1563
"vue-comments-key-value":{
1564
"begin":"(<!--)\\s*(@)([\\w$]+)(?=\\s)",
1565
"beginCaptures":{
1566
"1":{
1567
"name":"punctuation.definition.comment.vue"
1568
},
1569
"2":{
1570
"name":"punctuation.definition.block.tag.comment.vue"
1571
},
1572
"3":{
1573
"name":"storage.type.class.comment.vue"
1574
}
1575
},
1576
"end":"(-->)",
1577
"endCaptures":{
1578
"1":{
1579
"name":"punctuation.definition.comment.vue"
1580
}
1581
},
1582
"name":"comment.block.vue",
1583
"patterns":[
1584
{
1585
"include":"source.json#value"
1586
}
1587
]
1588
}
1589
}
1590
}
1591