PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.27.7
Code Block Pro – Beautiful Syntax Highlighting v1.27.7
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
code-block-pro / build / shiki / languages / vue.tmLanguage.json

vue.tmLanguage.json in Code Block Pro – Beautiful Syntax Highlighting 1.27.7, at build/shiki/languages/vue.tmLanguage.json

1,238 lines 31.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
3 "name": "vue",
4 "scopeName": "source.vue",
5 "patterns": [
6 {
7 "include": "text.html.basic#comment"
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": "([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 "patterns": [
75 {
76 "include": "#tag-stuff"
77 },
78 {
79 "begin": "(?<=>)",
80 "end": "(?=<\\/)",
81 "name": "text.html.derivative",
82 "patterns": [
83 {
84 "include": "#html-stuff"
85 }
86 ]
87 }
88 ]
89 },
90 {
91 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)pug\\b\\2)",
92 "beginCaptures": {
93 "1": {
94 "name": "entity.name.tag.$1.html.vue"
95 }
96 },
97 "end": "(</)(\\1)\\s*(?=>)",
98 "endCaptures": {
99 "1": {
100 "name": "punctuation.definition.tag.begin.html.vue"
101 },
102 "2": {
103 "name": "entity.name.tag.$2.html.vue"
104 }
105 },
106 "patterns": [
107 {
108 "include": "#tag-stuff"
109 },
110 {
111 "begin": "(?<=>)",
112 "end": "(?=<\\/)",
113 "name": "text.pug",
114 "patterns": [
115 {
116 "include": "text.pug"
117 }
118 ]
119 }
120 ]
121 },
122 {
123 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)stylus\\b\\2)",
124 "beginCaptures": {
125 "1": {
126 "name": "entity.name.tag.$1.html.vue"
127 }
128 },
129 "end": "(</)(\\1)\\s*(?=>)",
130 "endCaptures": {
131 "1": {
132 "name": "punctuation.definition.tag.begin.html.vue"
133 },
134 "2": {
135 "name": "entity.name.tag.$2.html.vue"
136 }
137 },
138 "patterns": [
139 {
140 "include": "#tag-stuff"
141 },
142 {
143 "begin": "(?<=>)",
144 "end": "(?=<\\/)",
145 "name": "source.stylus",
146 "patterns": [
147 {
148 "include": "source.stylus"
149 }
150 ]
151 }
152 ]
153 },
154 {
155 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)postcss\\b\\2)",
156 "beginCaptures": {
157 "1": {
158 "name": "entity.name.tag.$1.html.vue"
159 }
160 },
161 "end": "(</)(\\1)\\s*(?=>)",
162 "endCaptures": {
163 "1": {
164 "name": "punctuation.definition.tag.begin.html.vue"
165 },
166 "2": {
167 "name": "entity.name.tag.$2.html.vue"
168 }
169 },
170 "patterns": [
171 {
172 "include": "#tag-stuff"
173 },
174 {
175 "begin": "(?<=>)",
176 "end": "(?=<\\/)",
177 "name": "source.postcss",
178 "patterns": [
179 {
180 "include": "source.postcss"
181 }
182 ]
183 }
184 ]
185 },
186 {
187 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)sass\\b\\2)",
188 "beginCaptures": {
189 "1": {
190 "name": "entity.name.tag.$1.html.vue"
191 }
192 },
193 "end": "(</)(\\1)\\s*(?=>)",
194 "endCaptures": {
195 "1": {
196 "name": "punctuation.definition.tag.begin.html.vue"
197 },
198 "2": {
199 "name": "entity.name.tag.$2.html.vue"
200 }
201 },
202 "patterns": [
203 {
204 "include": "#tag-stuff"
205 },
206 {
207 "begin": "(?<=>)",
208 "end": "(?=<\\/)",
209 "name": "source.sass",
210 "patterns": [
211 {
212 "include": "source.sass"
213 }
214 ]
215 }
216 ]
217 },
218 {
219 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)css\\b\\2)",
220 "beginCaptures": {
221 "1": {
222 "name": "entity.name.tag.$1.html.vue"
223 }
224 },
225 "end": "(</)(\\1)\\s*(?=>)",
226 "endCaptures": {
227 "1": {
228 "name": "punctuation.definition.tag.begin.html.vue"
229 },
230 "2": {
231 "name": "entity.name.tag.$2.html.vue"
232 }
233 },
234 "patterns": [
235 {
236 "include": "#tag-stuff"
237 },
238 {
239 "begin": "(?<=>)",
240 "end": "(?=<\\/)",
241 "name": "source.css",
242 "patterns": [
243 {
244 "include": "source.css"
245 }
246 ]
247 }
248 ]
249 },
250 {
251 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)scss\\b\\2)",
252 "beginCaptures": {
253 "1": {
254 "name": "entity.name.tag.$1.html.vue"
255 }
256 },
257 "end": "(</)(\\1)\\s*(?=>)",
258 "endCaptures": {
259 "1": {
260 "name": "punctuation.definition.tag.begin.html.vue"
261 },
262 "2": {
263 "name": "entity.name.tag.$2.html.vue"
264 }
265 },
266 "patterns": [
267 {
268 "include": "#tag-stuff"
269 },
270 {
271 "begin": "(?<=>)",
272 "end": "(?=<\\/)",
273 "name": "source.css.scss",
274 "patterns": [
275 {
276 "include": "source.css.scss"
277 }
278 ]
279 }
280 ]
281 },
282 {
283 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)less\\b\\2)",
284 "beginCaptures": {
285 "1": {
286 "name": "entity.name.tag.$1.html.vue"
287 }
288 },
289 "end": "(</)(\\1)\\s*(?=>)",
290 "endCaptures": {
291 "1": {
292 "name": "punctuation.definition.tag.begin.html.vue"
293 },
294 "2": {
295 "name": "entity.name.tag.$2.html.vue"
296 }
297 },
298 "patterns": [
299 {
300 "include": "#tag-stuff"
301 },
302 {
303 "begin": "(?<=>)",
304 "end": "(?=<\\/)",
305 "name": "source.css.less",
306 "patterns": [
307 {
308 "include": "source.css.less"
309 }
310 ]
311 }
312 ]
313 },
314 {
315 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)js\\b\\2)",
316 "beginCaptures": {
317 "1": {
318 "name": "entity.name.tag.$1.html.vue"
319 }
320 },
321 "end": "(</)(\\1)\\s*(?=>)",
322 "endCaptures": {
323 "1": {
324 "name": "punctuation.definition.tag.begin.html.vue"
325 },
326 "2": {
327 "name": "entity.name.tag.$2.html.vue"
328 }
329 },
330 "patterns": [
331 {
332 "include": "#tag-stuff"
333 },
334 {
335 "begin": "(?<=>)",
336 "end": "(?=<\\/)",
337 "name": "source.js",
338 "patterns": [
339 {
340 "include": "source.js"
341 }
342 ]
343 }
344 ]
345 },
346 {
347 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)ts\\b\\2)",
348 "beginCaptures": {
349 "1": {
350 "name": "entity.name.tag.$1.html.vue"
351 }
352 },
353 "end": "(</)(\\1)\\s*(?=>)",
354 "endCaptures": {
355 "1": {
356 "name": "punctuation.definition.tag.begin.html.vue"
357 },
358 "2": {
359 "name": "entity.name.tag.$2.html.vue"
360 }
361 },
362 "patterns": [
363 {
364 "include": "#tag-stuff"
365 },
366 {
367 "begin": "(?<=>)",
368 "end": "(?=<\\/)",
369 "name": "source.ts",
370 "patterns": [
371 {
372 "include": "source.ts"
373 }
374 ]
375 }
376 ]
377 },
378 {
379 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)jsx\\b\\2)",
380 "beginCaptures": {
381 "1": {
382 "name": "entity.name.tag.$1.html.vue"
383 }
384 },
385 "end": "(</)(\\1)\\s*(?=>)",
386 "endCaptures": {
387 "1": {
388 "name": "punctuation.definition.tag.begin.html.vue"
389 },
390 "2": {
391 "name": "entity.name.tag.$2.html.vue"
392 }
393 },
394 "patterns": [
395 {
396 "include": "#tag-stuff"
397 },
398 {
399 "begin": "(?<=>)",
400 "end": "(?=<\\/)",
401 "name": "source.js.jsx",
402 "patterns": [
403 {
404 "include": "source.js.jsx"
405 }
406 ]
407 }
408 ]
409 },
410 {
411 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)tsx\\b\\2)",
412 "beginCaptures": {
413 "1": {
414 "name": "entity.name.tag.$1.html.vue"
415 }
416 },
417 "end": "(</)(\\1)\\s*(?=>)",
418 "endCaptures": {
419 "1": {
420 "name": "punctuation.definition.tag.begin.html.vue"
421 },
422 "2": {
423 "name": "entity.name.tag.$2.html.vue"
424 }
425 },
426 "patterns": [
427 {
428 "include": "#tag-stuff"
429 },
430 {
431 "begin": "(?<=>)",
432 "end": "(?=<\\/)",
433 "name": "source.tsx",
434 "patterns": [
435 {
436 "include": "source.tsx"
437 }
438 ]
439 }
440 ]
441 },
442 {
443 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)json\\b\\2)",
444 "beginCaptures": {
445 "1": {
446 "name": "entity.name.tag.$1.html.vue"
447 }
448 },
449 "end": "(</)(\\1)\\s*(?=>)",
450 "endCaptures": {
451 "1": {
452 "name": "punctuation.definition.tag.begin.html.vue"
453 },
454 "2": {
455 "name": "entity.name.tag.$2.html.vue"
456 }
457 },
458 "patterns": [
459 {
460 "include": "#tag-stuff"
461 },
462 {
463 "begin": "(?<=>)",
464 "end": "(?=<\\/)",
465 "name": "source.json",
466 "patterns": [
467 {
468 "include": "source.json"
469 }
470 ]
471 }
472 ]
473 },
474 {
475 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)jsonc\\b\\2)",
476 "beginCaptures": {
477 "1": {
478 "name": "entity.name.tag.$1.html.vue"
479 }
480 },
481 "end": "(</)(\\1)\\s*(?=>)",
482 "endCaptures": {
483 "1": {
484 "name": "punctuation.definition.tag.begin.html.vue"
485 },
486 "2": {
487 "name": "entity.name.tag.$2.html.vue"
488 }
489 },
490 "patterns": [
491 {
492 "include": "#tag-stuff"
493 },
494 {
495 "begin": "(?<=>)",
496 "end": "(?=<\\/)",
497 "name": "source.json.comments",
498 "patterns": [
499 {
500 "include": "source.json.comments"
501 }
502 ]
503 }
504 ]
505 },
506 {
507 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)json5\\b\\2)",
508 "beginCaptures": {
509 "1": {
510 "name": "entity.name.tag.$1.html.vue"
511 }
512 },
513 "end": "(</)(\\1)\\s*(?=>)",
514 "endCaptures": {
515 "1": {
516 "name": "punctuation.definition.tag.begin.html.vue"
517 },
518 "2": {
519 "name": "entity.name.tag.$2.html.vue"
520 }
521 },
522 "patterns": [
523 {
524 "include": "#tag-stuff"
525 },
526 {
527 "begin": "(?<=>)",
528 "end": "(?=<\\/)",
529 "name": "source.json5",
530 "patterns": [
531 {
532 "include": "source.json5"
533 }
534 ]
535 }
536 ]
537 },
538 {
539 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)yaml\\b\\2)",
540 "beginCaptures": {
541 "1": {
542 "name": "entity.name.tag.$1.html.vue"
543 }
544 },
545 "end": "(</)(\\1)\\s*(?=>)",
546 "endCaptures": {
547 "1": {
548 "name": "punctuation.definition.tag.begin.html.vue"
549 },
550 "2": {
551 "name": "entity.name.tag.$2.html.vue"
552 }
553 },
554 "patterns": [
555 {
556 "include": "#tag-stuff"
557 },
558 {
559 "begin": "(?<=>)",
560 "end": "(?=<\\/)",
561 "name": "source.yaml",
562 "patterns": [
563 {
564 "include": "source.yaml"
565 }
566 ]
567 }
568 ]
569 },
570 {
571 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)toml\\b\\2)",
572 "beginCaptures": {
573 "1": {
574 "name": "entity.name.tag.$1.html.vue"
575 }
576 },
577 "end": "(</)(\\1)\\s*(?=>)",
578 "endCaptures": {
579 "1": {
580 "name": "punctuation.definition.tag.begin.html.vue"
581 },
582 "2": {
583 "name": "entity.name.tag.$2.html.vue"
584 }
585 },
586 "patterns": [
587 {
588 "include": "#tag-stuff"
589 },
590 {
591 "begin": "(?<=>)",
592 "end": "(?=<\\/)",
593 "name": "source.toml",
594 "patterns": [
595 {
596 "include": "source.toml"
597 }
598 ]
599 }
600 ]
601 },
602 {
603 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)(gql|graphql)\\b\\2)",
604 "beginCaptures": {
605 "1": {
606 "name": "entity.name.tag.$1.html.vue"
607 }
608 },
609 "end": "(</)(\\1)\\s*(?=>)",
610 "endCaptures": {
611 "1": {
612 "name": "punctuation.definition.tag.begin.html.vue"
613 },
614 "2": {
615 "name": "entity.name.tag.$2.html.vue"
616 }
617 },
618 "patterns": [
619 {
620 "include": "#tag-stuff"
621 },
622 {
623 "begin": "(?<=>)",
624 "end": "(?=<\\/)",
625 "name": "source.graphql",
626 "patterns": [
627 {
628 "include": "source.graphql"
629 }
630 ]
631 }
632 ]
633 },
634 {
635 "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)vue\\b\\2)",
636 "beginCaptures": {
637 "1": {
638 "name": "entity.name.tag.$1.html.vue"
639 }
640 },
641 "end": "(</)(\\1)\\s*(?=>)",
642 "endCaptures": {
643 "1": {
644 "name": "punctuation.definition.tag.begin.html.vue"
645 },
646 "2": {
647 "name": "entity.name.tag.$2.html.vue"
648 }
649 },
650 "patterns": [
651 {
652 "include": "#tag-stuff"
653 },
654 {
655 "begin": "(?<=>)",
656 "end": "(?=<\\/)",
657 "name": "source.vue",
658 "patterns": [
659 {
660 "include": "source.vue"
661 }
662 ]
663 }
664 ]
665 },
666 {
667 "begin": "(template)\\b",
668 "beginCaptures": {
669 "1": {
670 "name": "entity.name.tag.$1.html.vue"
671 }
672 },
673 "end": "(</)(\\1)\\s*(?=>)",
674 "endCaptures": {
675 "1": {
676 "name": "punctuation.definition.tag.begin.html.vue"
677 },
678 "2": {
679 "name": "entity.name.tag.$2.html.vue"
680 }
681 },
682 "patterns": [
683 {
684 "include": "#tag-stuff"
685 },
686 {
687 "begin": "(?<=>)",
688 "end": "(?=<\\/template\\b)",
689 "name": "text.html.derivative",
690 "patterns": [
691 {
692 "include": "#html-stuff"
693 }
694 ]
695 }
696 ]
697 },
698 {
699 "begin": "(script)\\b",
700 "beginCaptures": {
701 "1": {
702 "name": "entity.name.tag.$1.html.vue"
703 }
704 },
705 "end": "(</)(\\1)\\s*(?=>)",
706 "endCaptures": {
707 "1": {
708 "name": "punctuation.definition.tag.begin.html.vue"
709 },
710 "2": {
711 "name": "entity.name.tag.$2.html.vue"
712 }
713 },
714 "patterns": [
715 {
716 "include": "#tag-stuff"
717 },
718 {
719 "begin": "(?<=>)",
720 "end": "(?=<\\/script\\b)",
721 "name": "source.js",
722 "patterns": [
723 {
724 "include": "source.js"
725 }
726 ]
727 }
728 ]
729 },
730 {
731 "begin": "(style)\\b",
732 "beginCaptures": {
733 "1": {
734 "name": "entity.name.tag.$1.html.vue"
735 }
736 },
737 "end": "(</)(\\1)\\s*(?=>)",
738 "endCaptures": {
739 "1": {
740 "name": "punctuation.definition.tag.begin.html.vue"
741 },
742 "2": {
743 "name": "entity.name.tag.$2.html.vue"
744 }
745 },
746 "patterns": [
747 {
748 "include": "#tag-stuff"
749 },
750 {
751 "begin": "(?<=>)",
752 "end": "(?=<\\/style\\b)",
753 "name": "source.css",
754 "patterns": [
755 {
756 "include": "source.css"
757 }
758 ]
759 }
760 ]
761 },
762 {
763 "begin": "([a-zA-Z0-9:-]+)",
764 "beginCaptures": {
765 "1": {
766 "name": "entity.name.tag.$1.html.vue"
767 }
768 },
769 "end": "(</)(\\1)\\s*(?=>)",
770 "endCaptures": {
771 "1": {
772 "name": "punctuation.definition.tag.begin.html.vue"
773 },
774 "2": {
775 "name": "entity.name.tag.$2.html.vue"
776 }
777 },
778 "patterns": [
779 {
780 "include": "#tag-stuff"
781 },
782 {
783 "begin": "(?<=>)",
784 "end": "(?=<\\/)",
785 "name": "text"
786 }
787 ]
788 }
789 ]
790 }
791 ],
792 "repository": {
793 "self-closing-tag": {
794 "begin": "(<)([a-zA-Z0-9:-]+)(?=([^>]+/>))",
795 "beginCaptures": {
796 "1": {
797 "name": "punctuation.definition.tag.begin.html.vue"
798 },
799 "2": {
800 "name": "entity.name.tag.$2.html.vue"
801 }
802 },
803 "end": "(/>)",
804 "endCaptures": {
805 "1": {
806 "name": "punctuation.definition.tag.end.html.vue"
807 }
808 },
809 "name": "self-closing-tag",
810 "patterns": [
811 {
812 "include": "#tag-stuff"
813 }
814 ]
815 },
816 "template-tag": {
817 "patterns": [
818 {
819 "include": "#template-tag-1"
820 },
821 {
822 "include": "#template-tag-2"
823 }
824 ]
825 },
826 "template-tag-1": {
827 "begin": "(<)(template)\\b(>)",
828 "beginCaptures": {
829 "1": {
830 "name": "punctuation.definition.tag.begin.html.vue"
831 },
832 "2": {
833 "name": "entity.name.tag.$2.html.vue"
834 },
835 "3": {
836 "name": "punctuation.definition.tag.end.html.vue"
837 }
838 },
839 "end": "(/?>)",
840 "endCaptures": {
841 "1": {
842 "name": "punctuation.definition.tag.end.html.vue"
843 }
844 },
845 "name": "meta.template-tag.start",
846 "patterns": [
847 {
848 "begin": "\\G",
849 "end": "(?=/>)|((</)(template)\\b)",
850 "endCaptures": {
851 "2": {
852 "name": "punctuation.definition.tag.begin.html.vue"
853 },
854 "3": {
855 "name": "entity.name.tag.$3.html.vue"
856 }
857 },
858 "name": "meta.template-tag.end",
859 "patterns": [
860 {
861 "include": "#html-stuff"
862 }
863 ]
864 }
865 ]
866 },
867 "template-tag-2": {
868 "begin": "(<)(template)\\b",
869 "beginCaptures": {
870 "1": {
871 "name": "punctuation.definition.tag.begin.html.vue"
872 },
873 "2": {
874 "name": "entity.name.tag.$2.html.vue"
875 }
876 },
877 "end": "(/?>)",
878 "endCaptures": {
879 "1": {
880 "name": "punctuation.definition.tag.end.html.vue"
881 }
882 },
883 "name": "meta.template-tag.start",
884 "patterns": [
885 {
886 "begin": "\\G",
887 "end": "(?=/>)|((</)(template)\\b)",
888 "endCaptures": {
889 "2": {
890 "name": "punctuation.definition.tag.begin.html.vue"
891 },
892 "3": {
893 "name": "entity.name.tag.$3.html.vue"
894 }
895 },
896 "name": "meta.template-tag.end",
897 "patterns": [
898 {
899 "include": "#tag-stuff"
900 },
901 {
902 "include": "#html-stuff"
903 }
904 ]
905 }
906 ]
907 },
908 "html-stuff": {
909 "patterns": [
910 {
911 "include": "#template-tag"
912 },
913 {
914 "include": "text.html.derivative"
915 },
916 {
917 "include": "text.html.basic"
918 }
919 ]
920 },
921 "tag-stuff": {
922 "begin": "\\G",
923 "end": "(?=/>)|(>)",
924 "endCaptures": {
925 "1": {
926 "name": "punctuation.definition.tag.end.html.vue"
927 }
928 },
929 "name": "meta.tag-stuff",
930 "patterns": [
931 {
932 "include": "#vue-directives"
933 },
934 {
935 "include": "text.html.basic#attribute"
936 }
937 ]
938 },
939 "vue-directives": {
940 "patterns": [
941 {
942 "include": "#vue-directives-control"
943 },
944 {
945 "include": "#vue-directives-style-attr"
946 },
947 {
948 "include": "#vue-directives-original"
949 },
950 {
951 "include": "#vue-directives-generic-attr"
952 }
953 ]
954 },
955 "vue-directives-original": {
956 "begin": "(?:\\b(v-)|([:\\.])|(@)|(#))(\\[?)([\\w\\-]*)(\\]?)(?:\\.([\\w\\-]*))*",
957 "beginCaptures": {
958 "1": {
959 "name": "entity.other.attribute-name.html.vue"
960 },
961 "2": {
962 "name": "punctuation.attribute-shorthand.bind.html.vue"
963 },
964 "3": {
965 "name": "punctuation.attribute-shorthand.event.html.vue"
966 },
967 "4": {
968 "name": "punctuation.attribute-shorthand.slot.html.vue"
969 },
970 "5": {
971 "name": "punctuation.separator.key-value.html.vue"
972 },
973 "6": {
974 "name": "entity.other.attribute-name.html.vue"
975 },
976 "7": {
977 "name": "punctuation.separator.key-value.html.vue"
978 },
979 "8": {
980 "name": "entity.other.attribute-name.html.vue"
981 },
982 "9": {
983 "name": "punctuation.separator.key-value.html.vue"
984 }
985 },
986 "end": "(?=\\s*+[^=\\s])",
987 "endCaptures": {
988 "1": {
989 "name": "punctuation.definition.string.end.html.vue"
990 }
991 },
992 "name": "meta.attribute.directive.vue",
993 "patterns": [
994 {
995 "include": "#vue-directives-expression"
996 }
997 ]
998 },
999 "vue-directives-control": {
1000 "begin": "(v-for)|(v-if|v-else-if|v-else)",
1001 "captures": {
1002 "1": {
1003 "name": "keyword.control.loop.vue"
1004 },
1005 "2": {
1006 "name": "keyword.control.conditional.vue"
1007 }
1008 },
1009 "end": "(?=\\s*+[^=\\s])",
1010 "name": "meta.attribute.directive.control.vue",
1011 "patterns": [
1012 {
1013 "include": "#vue-directives-expression"
1014 }
1015 ]
1016 },
1017 "vue-directives-expression": {
1018 "patterns": [
1019 {
1020 "begin": "(=)\\s*('|\"|`)",
1021 "beginCaptures": {
1022 "1": {
1023 "name": "punctuation.separator.key-value.html.vue"
1024 },
1025 "2": {
1026 "name": "punctuation.definition.string.begin.html.vue"
1027 }
1028 },
1029 "end": "(\\2)",
1030 "endCaptures": {
1031 "1": {
1032 "name": "punctuation.definition.string.end.html.vue"
1033 }
1034 },
1035 "patterns": [
1036 {
1037 "begin": "(?<=('|\"|`))",
1038 "end": "(?=\\1)",
1039 "name": "source.ts.embedded.html.vue",
1040 "patterns": [
1041 {
1042 "include": "source.ts"
1043 }
1044 ]
1045 }
1046 ]
1047 },
1048 {
1049 "begin": "(=)\\s*(?=[^'\"`])",
1050 "beginCaptures": {
1051 "1": {
1052 "name": "punctuation.separator.key-value.html.vue"
1053 }
1054 },
1055 "end": "(?=(\\s|>|\\/>))",
1056 "patterns": [
1057 {
1058 "begin": "(?=[^'\"`])",
1059 "end": "(?=(\\s|>|\\/>))",
1060 "name": "source.ts.embedded.html.vue",
1061 "patterns": [
1062 {
1063 "include": "source.ts"
1064 }
1065 ]
1066 }
1067 ]
1068 }
1069 ]
1070 },
1071 "vue-directives-style-attr": {
1072 "begin": "\\b(style)\\s*(=)",
1073 "captures": {
1074 "1": {
1075 "name": "entity.other.attribute-name.html.vue"
1076 },
1077 "2": {
1078 "name": "punctuation.separator.key-value.html.vue"
1079 }
1080 },
1081 "end": "(?<='|\")",
1082 "name": "meta.attribute.style.vue",
1083 "patterns": [
1084 {
1085 "comment": "Copy from source.css#rule-list-innards",
1086 "begin": "('|\")",
1087 "beginCaptures": {
1088 "1": {
1089 "name": "punctuation.definition.string.begin.html.vue"
1090 }
1091 },
1092 "end": "(\\1)",
1093 "endCaptures": {
1094 "1": {
1095 "name": "punctuation.definition.string.end.html.vue"
1096 }
1097 },
1098 "name": "source.css.embedded.html.vue",
1099 "patterns": [
1100 {
1101 "include": "source.css#comment-block"
1102 },
1103 {
1104 "include": "source.css#escapes"
1105 },
1106 {
1107 "include": "source.css#font-features"
1108 },
1109 {
1110 "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)*",
1111 "name": "variable.css"
1112 },
1113 {
1114 "begin": "(?<![-a-zA-Z])(?=[-a-zA-Z])",
1115 "end": "$|(?![-a-zA-Z])",
1116 "name": "meta.property-name.css",
1117 "patterns": [
1118 {
1119 "include": "source.css#property-names"
1120 }
1121 ]
1122 },
1123 {
1124 "comment": "Modify end to fix #199. TODO: handle ' character.",
1125 "begin": "(:)\\s*",
1126 "beginCaptures": {
1127 "1": {
1128 "name": "punctuation.separator.key-value.css"
1129 }
1130 },
1131 "end": "\\s*(;)|\\s*(?='|\")",
1132 "endCaptures": {
1133 "1": {
1134 "name": "punctuation.terminator.rule.css"
1135 }
1136 },
1137 "contentName": "meta.property-value.css",
1138 "patterns": [
1139 {
1140 "include": "source.css#comment-block"
1141 },
1142 {
1143 "include": "source.css#property-values"
1144 }
1145 ]
1146 },
1147 {
1148 "match": ";",
1149 "name": "punctuation.terminator.rule.css"
1150 }
1151 ]
1152 }
1153 ]
1154 },
1155 "vue-directives-generic-attr": {
1156 "begin": "\\b(generic)\\s*(=)",
1157 "captures": {
1158 "1": {
1159 "name": "entity.other.attribute-name.html.vue"
1160 },
1161 "2": {
1162 "name": "punctuation.separator.key-value.html.vue"
1163 }
1164 },
1165 "end": "(?<='|\")",
1166 "name": "meta.attribute.generic.vue",
1167 "patterns": [
1168 {
1169 "begin": "('|\")",
1170 "beginCaptures": {
1171 "1": {
1172 "name": "punctuation.definition.string.begin.html.vue"
1173 }
1174 },
1175 "end": "(\\1)",
1176 "endCaptures": {
1177 "1": {
1178 "name": "punctuation.definition.string.end.html.vue"
1179 }
1180 },
1181 "name": "meta.type.parameters.vue",
1182 "comment": "https://github.com/microsoft/vscode/blob/fd4346210f59135fad81a8b8c4cea7bf5a9ca6b4/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json#L4002-L4020",
1183 "patterns": [
1184 {
1185 "include": "source.ts#comment"
1186 },
1187 {
1188 "name": "storage.modifier.ts",
1189 "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1190 },
1191 {
1192 "include": "source.ts#type"
1193 },
1194 {
1195 "include": "source.ts#punctuation-comma"
1196 },
1197 {
1198 "name": "keyword.operator.assignment.ts",
1199 "match": "(=)(?!>)"
1200 }
1201 ]
1202 }
1203 ]
1204 },
1205 "vue-interpolations": {
1206 "patterns": [
1207 {
1208 "begin": "(\\{\\{)",
1209 "beginCaptures": {
1210 "1": {
1211 "name": "punctuation.definition.interpolation.begin.html.vue"
1212 }
1213 },
1214 "end": "(\\}\\})",
1215 "endCaptures": {
1216 "1": {
1217 "name": "punctuation.definition.interpolation.end.html.vue"
1218 }
1219 },
1220 "name": "expression.embedded.vue",
1221 "patterns": [
1222 {
1223 "begin": "\\G",
1224 "end": "(?=\\}\\})",
1225 "name": "source.ts.embedded.html.vue",
1226 "patterns": [
1227 {
1228 "include": "source.ts"
1229 }
1230 ]
1231 }
1232 ]
1233 }
1234 ]
1235 }
1236 }
1237 }
1238