PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.5.0
Code Block Pro – Beautiful Syntax Highlighting v1.5.0
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 / astro.tmLanguage.json

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

736 lines 18.9 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 "fileTypes": ["astro"],
4 "foldingStartMarker": "(?x)\n(<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)\\b.*?>\n|<!--(?!.*--\\s*>)\n|^<!--\\ \\#tminclude\\ (?>.*?-->)$\n|<\\?(?:php)?.*\\b(if|for(each)?|while)\\b.+:\n|\\{\\{?(if|foreach|capture|literal|foreach|php|section|strip)\n|\\{\\s*($|\\?>\\s*$|//|/\\*(.*\\*/\\s*$|(?!.*?\\*/)))\n)",
5 "foldingStopMarker": "(?x)\n(</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)>\n|^(?!.*?<!--).*?--\\s*>\n|^<!--\\ end\\ tminclude\\ -->$\n|<\\?(?:php)?.*\\bend(if|for(each)?|while)\\b\n|\\{\\{?/(if|foreach|capture|literal|foreach|php|section|strip)\n|^[^{]*\\}\n)",
6 "keyEquivalent": "^~H",
7 "name": "astro",
8 "scopeName": "source.astro",
9 "patterns": [
10 {
11 "include": "#astro:expressions"
12 },
13 {
14 "include": "#html:comment"
15 },
16 {
17 "include": "#html:comment:bogus"
18 },
19 {
20 "include": "#html:doctype"
21 },
22 {
23 "include": "#astro:fragment"
24 },
25 {
26 "include": "#astro:lang-scripts"
27 },
28 {
29 "include": "#astro:lang-styles"
30 },
31 {
32 "include": "#astro:component"
33 },
34 {
35 "include": "#html:element"
36 },
37 {
38 "include": "#html:entity"
39 },
40 {
41 "include": "#html:entity:bogus"
42 },
43 {
44 "include": "#frontmatter"
45 }
46 ],
47 "repository": {
48 "astro:attribute": {
49 "patterns": [
50 {
51 "include": "#html:attribute"
52 },
53 {
54 "include": "#string-double-quoted"
55 },
56 {
57 "include": "#string-single-quoted"
58 },
59 {
60 "include": "#string-template-literal"
61 },
62 {
63 "include": "#astro:expressions"
64 }
65 ]
66 },
67 "astro:component": {
68 "patterns": [
69 {
70 "name": "meta.tag.component.astro astro.component.raw",
71 "begin": "(<)([$A-Z_][^/?!\\s<>]*|[^/?!\\s<>.]+\\.[^/?!\\s<>]+)(.+is:raw.*?)(>)",
72 "end": "(</)([$A-Z_][^/?!\\s<>]*|[^/?!\\s<>.]+\\.[^/?!\\s<>]+)(?=\\s|/?>)(>)",
73 "beginCaptures": {
74 "1": {
75 "name": "punctuation.definition.tag.begin.astro"
76 },
77 "2": {
78 "name": "entity.name.tag.astro support.class.component.astro"
79 },
80 "3": {
81 "patterns": [
82 {
83 "include": "#astro:attribute"
84 }
85 ]
86 },
87 "4": {
88 "name": "punctuation.definition.tag.end.astro"
89 }
90 },
91 "endCaptures": {
92 "1": {
93 "name": "punctuation.definition.tag.begin.astro"
94 },
95 "2": {
96 "name": "entity.name.tag.astro support.class.component.astro"
97 },
98 "3": {
99 "name": "punctuation.definition.tag.end.astro"
100 }
101 },
102 "contentName": "source.unknown"
103 },
104 {
105 "name": "meta.tag.component.astro",
106 "begin": "(</?)([$A-Z_][^/?!\\s<>]*|[^/?!\\s<>.]+\\.[^/?!\\s<>]+)\\b",
107 "beginCaptures": {
108 "1": {
109 "name": "punctuation.definition.tag.begin.astro"
110 },
111 "2": {
112 "name": "entity.name.tag.astro support.class.component.astro"
113 }
114 },
115 "end": "(/?>)",
116 "endCaptures": {
117 "1": {
118 "name": "punctuation.definition.tag.end.astro"
119 }
120 },
121 "patterns": [
122 {
123 "include": "#astro:attribute"
124 }
125 ]
126 }
127 ]
128 },
129 "astro:fragment": {
130 "name": "meta.tag.component.astro",
131 "match": "(</?)(Fragment)?(\\s*>)",
132 "captures": {
133 "1": {
134 "name": "punctuation.definition.tag.astro"
135 },
136 "2": {
137 "name": "entity.name.tag.astro support.class.fragment.astro"
138 },
139 "3": {
140 "name": "punctuation.definition.tag.astro"
141 }
142 }
143 },
144 "astro:lang-scripts": {
145 "begin": "(<)(script)",
146 "end": "(</)(script)\\s*(>)|(/>)",
147 "beginCaptures": {
148 "1": {
149 "name": "punctuation.definition.tag.begin.html"
150 },
151 "2": {
152 "name": "entity.name.tag.html"
153 }
154 },
155 "endCaptures": {
156 "1": {
157 "name": "punctuation.definition.tag.begin.html"
158 },
159 "2": {
160 "name": "entity.name.tag.html"
161 },
162 "3": {
163 "name": "punctuation.definition.tag.end.html"
164 },
165 "4": {
166 "name": "punctuation.definition.tag.end.html"
167 }
168 },
169 "patterns": [
170 {
171 "comment": "Treat script tag with application/ld+json as JSON. This needs to be higher than is:raw since it's a very possible situation to have is:raw on a JSON script tag",
172 "begin": "\\G(?=\\s*[^>]*?type\\s*=\\s*(['\"]|)(?i:application/ld\\+json)\\1)",
173 "end": "(?=</|/>)",
174 "patterns": [
175 {
176 "begin": "(?<=>)(?!</)",
177 "end": "(?=</)",
178 "contentName": "source.json",
179 "patterns": [
180 {
181 "include": "source.json"
182 }
183 ]
184 },
185 {
186 "include": "#html:tag-attributes"
187 }
188 ]
189 },
190 {
191 "comment": "Treat script tag with JS-compatible types as JS",
192 "begin": "\\G(?=\\s*[^>]*?type\\s*=\\s*(['\"]|)(?i:module|(?:text/javascript|text/partytown|application/node|application/javascript))\\1)",
193 "end": "(?=</|/>)",
194 "patterns": [
195 {
196 "begin": "(?<=>)(?!</)",
197 "end": "(?=</)",
198 "contentName": "source.js",
199 "patterns": [
200 {
201 "include": "source.js"
202 }
203 ]
204 },
205 {
206 "include": "#html:tag-attributes"
207 }
208 ]
209 },
210 {
211 "comment": "Treat anything with an unknown type as unknown",
212 "begin": "\\G(?=\\s*[^>]*?type\\s*=\\s*(['\"]|)\\1)",
213 "end": "(?=</|/>)",
214 "patterns": [
215 {
216 "begin": "(?<=>)(?!</)",
217 "end": "(?=</)",
218 "name": "source.unknown"
219 },
220 {
221 "include": "#html:tag-attributes"
222 }
223 ]
224 },
225 {
226 "begin": "\\G(?=\\s*[^>]*?lang\\s*=\\s*(['\"]|)(?i:jsx?|javascript)\\1)",
227 "end": "(?=</|/>)",
228 "patterns": [
229 {
230 "begin": "(?<=>)(?!</)",
231 "end": "(?=</)",
232 "contentName": "source.js",
233 "patterns": [
234 {
235 "include": "source.js"
236 }
237 ]
238 },
239 {
240 "include": "#html:tag-attributes"
241 }
242 ]
243 },
244 {
245 "begin": "\\G(?=\\s*[^>]*?lang\\s*=\\s*(['\"]|)(?i:ts|typescript)\\1)",
246 "end": "(?=</|/>)",
247 "patterns": [
248 {
249 "begin": "(?<=>)(?!</)",
250 "end": "(?=</)",
251 "contentName": "source.ts",
252 "patterns": [
253 {
254 "include": "source.ts"
255 }
256 ]
257 },
258 {
259 "include": "#html:tag-attributes"
260 }
261 ]
262 },
263 {
264 "begin": "\\G(?=\\s*[^>]*?lang\\s*=\\s*(['\"]|)(?i:tsx)\\1)",
265 "end": "(?=</|/>)",
266 "patterns": [
267 {
268 "begin": "(?<=>)(?!</)",
269 "end": "(?=</)",
270 "contentName": "source.tsx",
271 "patterns": [
272 {
273 "include": "source.tsx"
274 }
275 ]
276 },
277 {
278 "include": "#html:tag-attributes"
279 }
280 ]
281 },
282 {
283 "begin": "(?<=>)(?!</)",
284 "end": "(?=</)",
285 "contentName": "source.js",
286 "patterns": [
287 {
288 "include": "source.js"
289 }
290 ]
291 },
292 {
293 "include": "#html:tag-attributes"
294 }
295 ]
296 },
297 "astro:lang-styles": {
298 "begin": "(<)(style)",
299 "end": "(</)(style)\\s*(>)|(/>)",
300 "beginCaptures": {
301 "1": {
302 "name": "punctuation.definition.tag.begin.html"
303 },
304 "2": {
305 "name": "entity.name.tag.html"
306 }
307 },
308 "endCaptures": {
309 "1": {
310 "name": "punctuation.definition.tag.begin.html"
311 },
312 "2": {
313 "name": "entity.name.tag.html"
314 },
315 "3": {
316 "name": "punctuation.definition.tag.end.html"
317 },
318 "4": {
319 "name": "punctuation.definition.tag.end.html"
320 }
321 },
322 "patterns": [
323 {
324 "begin": "\\G(?=\\s*[^>]*?lang\\s*=\\s*(['\"]|)(?i:css)\\1)",
325 "end": "(?=</|/>)",
326 "patterns": [
327 {
328 "begin": "(?<=>)(?!</)",
329 "end": "(?=</)",
330 "contentName": "source.css",
331 "patterns": [
332 {
333 "include": "source.css"
334 }
335 ]
336 },
337 {
338 "include": "#html:tag-attributes"
339 }
340 ]
341 },
342 {
343 "begin": "\\G(?=\\s*[^>]*?lang\\s*=\\s*(['\"]|)(?i:less)\\1)",
344 "end": "(?=</|/>)",
345 "patterns": [
346 {
347 "begin": "(?<=>)(?!</)",
348 "end": "(?=</)",
349 "contentName": "source.css.less",
350 "patterns": [
351 {
352 "include": "source.css.less"
353 }
354 ]
355 },
356 {
357 "include": "#html:tag-attributes"
358 }
359 ]
360 },
361 {
362 "begin": "\\G(?=\\s*[^>]*?lang\\s*=\\s*(['\"]|)(?i:sass)\\1)",
363 "end": "(?=</|/>)",
364 "patterns": [
365 {
366 "begin": "(?<=>)(?!</)",
367 "end": "(?=</)",
368 "contentName": "source.sass",
369 "patterns": [
370 {
371 "include": "source.sass"
372 }
373 ]
374 },
375 {
376 "include": "#html:tag-attributes"
377 }
378 ]
379 },
380 {
381 "begin": "\\G(?=\\s*[^>]*?lang\\s*=\\s*(['\"]|)(?i:scss)\\1)",
382 "end": "(?=</|/>)",
383 "patterns": [
384 {
385 "begin": "(?<=>)(?!</)",
386 "end": "(?=</)",
387 "contentName": "source.css.scss",
388 "patterns": [
389 {
390 "include": "source.css.scss"
391 }
392 ]
393 },
394 {
395 "include": "#html:tag-attributes"
396 }
397 ]
398 },
399 {
400 "begin": "\\G(?=\\s*[^>]*?lang\\s*=\\s*(['\"]|)(?i:styl(?:us)?)\\1)",
401 "end": "(?=</|/>)",
402 "patterns": [
403 {
404 "begin": "(?<=>)(?!</)",
405 "end": "(?=</)",
406 "contentName": "source.stylus",
407 "patterns": [
408 {
409 "include": "source.stylus"
410 }
411 ]
412 },
413 {
414 "include": "#html:tag-attributes"
415 }
416 ]
417 },
418 {
419 "begin": "(?<=>)(?!</)",
420 "end": "(?=</)",
421 "contentName": "source.css",
422 "patterns": [
423 {
424 "include": "source.css"
425 }
426 ]
427 },
428 {
429 "include": "#html:tag-attributes"
430 }
431 ]
432 },
433 "html:attribute": {
434 "name": "meta.attribute.$1.html",
435 "match": "([a-zA-Z\\-:@_.]+)(=?)",
436 "captures": {
437 "1": {
438 "name": "entity.other.attribute-name.html"
439 },
440 "2": {
441 "name": "punctuation.separator.key-value.html"
442 }
443 }
444 },
445 "html:tag-attributes": {
446 "begin": "\\G",
447 "end": "(?=/>)|>",
448 "endCaptures": {
449 "0": {
450 "name": "punctuation.definition.tag.end.html"
451 }
452 },
453 "patterns": [
454 {
455 "include": "#astro:attribute"
456 }
457 ]
458 },
459 "html:comment": {
460 "name": "comment.block.html",
461 "begin": "<!--",
462 "beginCaptures": {
463 "0": {
464 "name": "punctuation.definition.comment.html punctuation.definition.comment.begin.html"
465 }
466 },
467 "end": "--!?>",
468 "endCaptures": {
469 "0": {
470 "name": "punctuation.definition.comment.html punctuation.definition.comment.end.html"
471 }
472 }
473 },
474 "html:comment:bogus": {
475 "name": "comment.block.html",
476 "begin": "<\\?",
477 "captures": {
478 "0": {
479 "name": "punctuation.definition.comment.html"
480 }
481 },
482 "beginCaptures": {
483 "0": {
484 "name": "punctuation.definition.comment.html punctuation.definition.comment.begin.html"
485 }
486 },
487 "end": ">",
488 "endCaptures": {
489 "0": {
490 "name": "punctuation.definition.comment.html punctuation.definition.comment.end.html"
491 }
492 }
493 },
494 "html:doctype": {
495 "name": "meta.tag.metadata.doctype.html",
496 "begin": "(<!)([Dd][Oo][Cc][Tt][Yy][Pp][Ee])",
497 "beginCaptures": {
498 "1": {
499 "name": "punctuation.definition.tag.html punctuation.definition.tag.begin.html"
500 },
501 "2": {
502 "name": "entity.name.tag.html"
503 }
504 },
505 "end": ">",
506 "endCaptures": {
507 "0": {
508 "name": "punctuation.definition.tag.html punctuation.definition.tag.end.html"
509 }
510 },
511 "patterns": [
512 {
513 "begin": "\"",
514 "end": "\"",
515 "name": "string.quoted.double.html"
516 },
517 {
518 "match": "[^\\s>]+",
519 "name": "entity.other.attribute-name.html"
520 }
521 ]
522 },
523 "html:element": {
524 "patterns": [
525 {
526 "name": "astro.element.raw",
527 "begin": "(<)([^/?!\\s<>]+)(.+is:raw.*?)(>)",
528 "end": "(</)([^/?!\\s<>]+)(?=\\s|/?>)(>)",
529 "beginCaptures": {
530 "1": {
531 "name": "punctuation.definition.tag.begin.html"
532 },
533 "2": {
534 "name": "entity.name.tag.html"
535 },
536 "3": {
537 "patterns": [
538 {
539 "include": "#astro:attribute"
540 }
541 ]
542 },
543 "4": {
544 "name": "punctuation.definition.tag.end.html"
545 }
546 },
547 "endCaptures": {
548 "1": {
549 "name": "punctuation.definition.tag.begin.html"
550 },
551 "2": {
552 "name": "entity.name.tag.html"
553 },
554 "3": {
555 "name": "punctuation.definition.tag.end.html"
556 }
557 },
558 "contentName": "source.unknown"
559 },
560 {
561 "name": "meta.tag.any.$2.start.html",
562 "begin": "(<)([^/?!\\s<>]+)(?=\\s|/?>)",
563 "beginCaptures": {
564 "1": {
565 "name": "punctuation.definition.tag.begin.html"
566 },
567 "2": {
568 "name": "entity.name.tag.html"
569 }
570 },
571 "end": "/?>",
572 "endCaptures": {
573 "0": {
574 "name": "punctuation.definition.tag.end.html"
575 }
576 },
577 "patterns": [
578 {
579 "include": "#astro:attribute"
580 }
581 ]
582 },
583 {
584 "name": "meta.tag.any.$2.end.html",
585 "begin": "(</)([^/?!\\s<>]+)(?=\\s|/?>)",
586 "beginCaptures": {
587 "1": {
588 "name": "punctuation.definition.tag.begin.html"
589 },
590 "2": {
591 "name": "entity.name.tag.html"
592 }
593 },
594 "end": "/?>",
595 "endCaptures": {
596 "0": {
597 "name": "punctuation.definition.tag.end.html"
598 }
599 },
600 "patterns": [
601 {
602 "include": "#astro:attribute"
603 }
604 ]
605 }
606 ]
607 },
608 "html:entity": {
609 "name": "constant.character.entity.html",
610 "match": "(&)([0-9A-Za-z]+|#x[0-9A-Fa-f]+|x[0-9]+)(;)",
611 "captures": {
612 "1": {
613 "name": "punctuation.definition.entity.html"
614 },
615 "3": {
616 "name": "punctuation.definition.entity.html"
617 }
618 }
619 },
620 "html:entity:bogus": {
621 "name": "constant.character.entity.html",
622 "match": "(&)([0-9A-Za-z]+|#x[0-9A-Fa-f]+|x[0-9]+)",
623 "captures": {
624 "1": {
625 "name": "invalid.illegal.bad-ampersand.html"
626 },
627 "3": {
628 "name": "punctuation.definition.entity.html"
629 }
630 }
631 },
632 "astro:expressions": {
633 "patterns": [
634 {
635 "begin": "\\{",
636 "beginCaptures": {
637 "0": {
638 "name": "punctuation.section.embedded.begin.tsx"
639 }
640 },
641 "end": "\\}",
642 "endCaptures": {
643 "0": {
644 "name": "punctuation.section.embedded.end.tsx"
645 }
646 },
647 "name": "expression.embedded.astro",
648 "contentName": "source.tsx",
649 "patterns": [
650 {
651 "include": "source.tsx"
652 }
653 ]
654 }
655 ]
656 },
657 "frontmatter": {
658 "comment": "The frontmatter is treated as comments in order to get the \"faded\" look",
659 "begin": "\\A(-{3})\\s*$",
660 "beginCaptures": {
661 "1": {
662 "name": "comment"
663 }
664 },
665 "contentName": "source.ts",
666 "patterns": [
667 {
668 "include": "source.ts"
669 }
670 ],
671 "end": "(^|\\G)(-{3})|\\.{3}\\s*$",
672 "endCaptures": {
673 "2": {
674 "name": "comment"
675 }
676 }
677 },
678 "string-double-quoted": {
679 "begin": "\"",
680 "beginCaptures": {
681 "0": {
682 "name": "punctuation.definition.string.begin.html"
683 }
684 },
685 "end": "\"",
686 "endCaptures": {
687 "0": {
688 "name": "punctuation.definition.string.end.html"
689 }
690 },
691 "name": "string.quoted.double.html",
692 "patterns": [
693 {
694 "include": "#html:entity"
695 },
696 {
697 "include": "#html:entity:bogus"
698 }
699 ]
700 },
701 "string-single-quoted": {
702 "begin": "'",
703 "beginCaptures": {
704 "0": {
705 "name": "punctuation.definition.string.begin.html"
706 }
707 },
708 "end": "'",
709 "endCaptures": {
710 "0": {
711 "name": "punctuation.definition.string.end.html"
712 }
713 },
714 "name": "string.quoted.single.html",
715 "patterns": [
716 {
717 "include": "#html:entity"
718 },
719 {
720 "include": "#html:entity:bogus"
721 }
722 ]
723 },
724 "string-template-literal": {
725 "begin": "`",
726 "end": "`",
727 "name": "string.template.html",
728 "patterns": [
729 {
730 "include": "source.tsx#template-substitution-element"
731 }
732 ]
733 }
734 }
735 }
736