github-linguist 7.6.0 → 7.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +5 -5
  2. data/bin/github-linguist +17 -4
  3. data/grammars/annotation.liquidhaskell.haskell.json +58 -11
  4. data/grammars/etc.json +472 -4
  5. data/grammars/hidden.manref.json +29 -0
  6. data/grammars/hidden.regexp.injection-shell.json +28 -0
  7. data/grammars/hint.haskell.json +58 -11
  8. data/grammars/hint.message.haskell.json +58 -11
  9. data/grammars/hint.type.haskell.json +58 -11
  10. data/grammars/injections.etc.json +601 -1
  11. data/grammars/markdown.plantuml.codeblock.json +26 -0
  12. data/grammars/source.4dm.json +1156 -0
  13. data/grammars/source.abap.json +7 -7
  14. data/grammars/source.abl.json +685 -83
  15. data/grammars/source.abnf.json +23 -1
  16. data/grammars/source.agda.json +33 -203
  17. data/grammars/source.ahk.json +9 -5
  18. data/grammars/source.angelscript.json +1 -1
  19. data/grammars/source.ballerina.json +55 -19
  20. data/grammars/source.c++.json +4 -4
  21. data/grammars/source.c.platform.json +584 -33
  22. data/grammars/source.chapel.json +7 -4
  23. data/grammars/source.csound.json +1 -1
  24. data/grammars/source.css.json +3 -3
  25. data/grammars/source.css.scss.json +164 -15
  26. data/grammars/source.curlrc.json +869 -65
  27. data/grammars/source.d.json +2 -2
  28. data/grammars/source.dart.json +58 -32
  29. data/grammars/source.dircolors.json +137 -0
  30. data/grammars/source.direct-x.json +135 -0
  31. data/grammars/source.ebnf.json +67 -39
  32. data/grammars/source.editorconfig.json +23 -5
  33. data/grammars/source.elixir.json +51 -0
  34. data/grammars/source.elm.json +1 -1
  35. data/grammars/source.emacs.lisp.json +10 -0
  36. data/grammars/source.faust.json +119 -0
  37. data/grammars/source.futhark.json +146 -0
  38. data/grammars/source.gcode.json +166 -8
  39. data/grammars/source.gedcom.json +196 -0
  40. data/grammars/source.generic-db.json +41 -0
  41. data/grammars/source.gfm.blade.json +15 -0
  42. data/grammars/source.gfm.json +1697 -1439
  43. data/grammars/source.gitconfig.json +1 -1
  44. data/grammars/source.hack.json +200 -98
  45. data/grammars/source.haskell.json +58 -11
  46. data/grammars/source.hlsl.json +9 -5
  47. data/grammars/source.hosts.json +40 -0
  48. data/grammars/source.hsig.json +58 -11
  49. data/grammars/source.httpspec.json +1 -1
  50. data/grammars/source.hx.json +9 -5
  51. data/grammars/source.hxml.json +2 -2
  52. data/grammars/source.idris.json +1 -1
  53. data/grammars/source.igor.json +46 -2
  54. data/grammars/source.ini.npmrc.json +311 -0
  55. data/grammars/source.inno.json +133 -0
  56. data/grammars/source.inputrc.json +500 -0
  57. data/grammars/source.isabelle.root.json +1 -1
  58. data/grammars/source.jison.json +3 -0
  59. data/grammars/source.jisonlex.json +3 -0
  60. data/grammars/source.js.json +4 -4
  61. data/grammars/source.julia.json +70 -24
  62. data/grammars/source.kotlin.json +17 -51
  63. data/grammars/source.lcov.json +398 -0
  64. data/grammars/source.lean.json +20 -4
  65. data/grammars/source.lean.markdown.json +2598 -0
  66. data/grammars/source.lex.json +4 -4
  67. data/grammars/source.m2.json +125 -0
  68. data/grammars/source.m4.json +141 -99
  69. data/grammars/source.man-conf.json +47 -35
  70. data/grammars/source.matlab.json +437 -184
  71. data/grammars/source.mcfunction-snapshot.json +21388 -561
  72. data/grammars/source.mcfunction.json +55 -5
  73. data/grammars/source.meson.json +1 -1
  74. data/grammars/source.mlir.json +37 -317
  75. data/grammars/source.modula-3.json +10 -0
  76. data/grammars/source.msl.json +755 -0
  77. data/grammars/source.nasl.json +155 -0
  78. data/grammars/source.neon.json +381 -0
  79. data/grammars/source.nextflow.json +2 -2
  80. data/grammars/source.objc.platform.json +493 -35
  81. data/grammars/source.odin-ehr.json +806 -0
  82. data/grammars/source.odin.json +402 -0
  83. data/grammars/source.openbsd-pkg.contents.json +128 -0
  84. data/grammars/source.opts.json +12 -2
  85. data/grammars/source.perl6fe.json +1 -1
  86. data/grammars/source.postscript.json +358 -103
  87. data/grammars/source.prisma.json +435 -0
  88. data/grammars/source.purescript.json +29 -2
  89. data/grammars/source.python.json +52 -0
  90. data/grammars/source.q.json +150 -63
  91. data/grammars/source.qasm.json +66 -0
  92. data/grammars/source.ql.json +1408 -0
  93. data/grammars/source.r.json +4 -4
  94. data/grammars/source.reason.json +28 -16
  95. data/grammars/source.rego.json +124 -0
  96. data/grammars/source.sass.json +158 -3
  97. data/grammars/source.scala.json +53 -18
  98. data/grammars/source.sieve.json +383 -0
  99. data/grammars/source.solidity.json +1 -1
  100. data/grammars/source.ssh-config.json +1 -14
  101. data/grammars/source.swift.json +162 -2
  102. data/grammars/source.sy.json +2088 -183
  103. data/grammars/source.tags.json +266 -0
  104. data/grammars/source.terraform.json +576 -132
  105. data/grammars/source.tnsaudit.json +256 -0
  106. data/grammars/source.ts.json +246 -70
  107. data/grammars/source.tsx.json +247 -71
  108. data/grammars/source.v.json +587 -761
  109. data/grammars/source.vim-snippet.json +645 -0
  110. data/grammars/source.viml.json +6 -6
  111. data/grammars/source.webassembly.json +10 -0
  112. data/grammars/source.webidl.json +8 -0
  113. data/grammars/source.wgetrc.json +1640 -0
  114. data/grammars/source.wsd.json +781 -0
  115. data/grammars/source.x86.json +7 -3
  116. data/grammars/source.zig.json +231 -360
  117. data/grammars/text.dfy.dafny.json +188 -0
  118. data/grammars/text.html.php.blade.json +535 -528
  119. data/grammars/text.html.riot.json +788 -0
  120. data/grammars/text.muse.json +1471 -0
  121. data/grammars/text.openbsd-pkg.desc.json +78 -0
  122. data/grammars/text.roff.json +49 -1
  123. data/grammars/text.sfd.json +21 -0
  124. data/grammars/text.tex.latex.haskell.json +58 -11
  125. data/grammars/text.vim-help.json +383 -0
  126. data/grammars/text.xml.svg.json +8 -2
  127. data/grammars/version +1 -1
  128. data/lib/linguist/VERSION +1 -1
  129. data/lib/linguist/blob_helper.rb +4 -2
  130. data/lib/linguist/file_blob.rb +1 -1
  131. data/lib/linguist/generated.rb +96 -28
  132. data/lib/linguist/heuristics.yml +64 -4
  133. data/lib/linguist/languages.json +1 -1
  134. data/lib/linguist/languages.yml +408 -49
  135. data/lib/linguist/lazy_blob.rb +10 -10
  136. data/lib/linguist/linguist.bundle +0 -0
  137. data/lib/linguist/samples.json +48129 -31562
  138. data/lib/linguist/shebang.rb +5 -3
  139. data/lib/linguist/vendor.yml +71 -60
  140. metadata +48 -17
  141. data/grammars/source.LS.json +0 -85
  142. data/grammars/source.MCPOST.json +0 -54
  143. data/grammars/source.MOD.json +0 -55
  144. data/grammars/source.apt.json +0 -18
  145. data/grammars/source.jlex.json +0 -322
  146. data/grammars/source.yaml-ext.json +0 -324
  147. data/grammars/text.html.abl.json +0 -70
@@ -131,10 +131,10 @@
131
131
  }
132
132
  }
133
133
  },
134
- "bytestream": {
134
+ "byteArray": {
135
135
  "patterns": [
136
136
  {
137
- "name": "meta.bytestream.base64.sy",
137
+ "name": "meta.byte-array.base64.sy",
138
138
  "begin": "(\u003c)(base64)(:)",
139
139
  "end": "(\u003e)\\s*([^:,}\\]]+)",
140
140
  "patterns": [
@@ -152,7 +152,7 @@
152
152
  ],
153
153
  "beginCaptures": {
154
154
  "1": {
155
- "name": "punctuation.section.bytestream.begin.bracket.angle.sy"
155
+ "name": "punctuation.section.byte-array.begin.bracket.angle.sy"
156
156
  },
157
157
  "2": {
158
158
  "name": "storage.modifier.encoding.base64.sy"
@@ -163,7 +163,7 @@
163
163
  },
164
164
  "endCaptures": {
165
165
  "1": {
166
- "name": "punctuation.section.bytestream.end.bracket.angle.sy"
166
+ "name": "punctuation.section.byte-array.end.bracket.angle.sy"
167
167
  },
168
168
  "2": {
169
169
  "name": "invalid.illegal.characters.sy"
@@ -171,7 +171,7 @@
171
171
  }
172
172
  },
173
173
  {
174
- "name": "meta.bytestream.base85.sy",
174
+ "name": "meta.byte-array.base85.sy",
175
175
  "begin": "\u003c~",
176
176
  "end": "~\u003e",
177
177
  "patterns": [
@@ -186,17 +186,17 @@
186
186
  ],
187
187
  "beginCaptures": {
188
188
  "0": {
189
- "name": "punctuation.section.bytestream.begin.bracket.angle.sy"
189
+ "name": "punctuation.section.byte-array.begin.bracket.angle.sy"
190
190
  }
191
191
  },
192
192
  "endCaptures": {
193
193
  "0": {
194
- "name": "punctuation.section.bytestream.end.bracket.angle.sy"
194
+ "name": "punctuation.section.byte-array.end.bracket.angle.sy"
195
195
  }
196
196
  }
197
197
  },
198
198
  {
199
- "name": "meta.bytestream.sy",
199
+ "name": "meta.byte-array.sy",
200
200
  "begin": "\u003c",
201
201
  "end": "(\u003e)\\s*([^:,}\\]]+)",
202
202
  "patterns": [
@@ -214,12 +214,12 @@
214
214
  ],
215
215
  "beginCaptures": {
216
216
  "0": {
217
- "name": "punctuation.section.bytestream.begin.bracket.angle.sy"
217
+ "name": "punctuation.section.byte-array.begin.bracket.angle.sy"
218
218
  }
219
219
  },
220
220
  "endCaptures": {
221
221
  "1": {
222
- "name": "punctuation.section.bytestream.end.bracket.angle.sy"
222
+ "name": "punctuation.section.byte-array.end.bracket.angle.sy"
223
223
  },
224
224
  "2": {
225
225
  "name": "invalid.illegal.characters.sy"
@@ -331,12 +331,7 @@
331
331
  },
332
332
  "escapeVerbatim": {
333
333
  "name": "constant.character.escape.backtick.sy",
334
- "match": "(\\\\)`",
335
- "captures": {
336
- "1": {
337
- "name": "punctuation.backslash.definition.escape.sy"
338
- }
339
- }
334
+ "match": "``"
340
335
  },
341
336
  "expression": {
342
337
  "name": "meta.expression.sy",
@@ -359,7 +354,7 @@
359
354
  },
360
355
  "field": {
361
356
  "name": "meta.field.sy",
362
- "begin": "(?x)\n(?:\n\t# Quoted property name\n\t(?\u003c=[:{\\[]) \\s*\n\t(?: (\"(?:[^\"\\\\]|\\\\.)*\")\n\t| ('(?:[^'\\\\]|\\\\.)*')\n\t| (`(?:[^`\\\\]|\\\\.)*`)\n\t) \\s* (:)\n\t\n\t|\n\t\n\t# Unquoted property name\n\t([^{}\\[\\]\u003c\u003e\\s][^,]*?)\n\t(?\u003c!\\\\) (:)\n\t\n\t|\n\t\n\t# Presumably one following a multiline string\n\t(?\u003c=[\"'`]) \\s* (:)\n)\n(?=\\s|$)\n\\s*",
357
+ "begin": "(?x)\n(?:\n\t# Quoted property name\n\t(?\u003c=[:{\\[]) \\s*\n\t(?: (\"(?:[^\"\\\\]|\\\\.)*\")\n\t| ('(?:[^'\\\\]|\\\\.)*')\n\t| (`(?:[^`]|``)*+`(?!`))\n\t) \\s* (:)\n\t\n\t|\n\t\n\t# Unquoted property name\n\t([^{}\\[\\]\u003c\u003e\\s][^,]*?)\n\t(?\u003c!\\\\) (:)\n\t\n\t|\n\t\n\t# Presumably one following a multiline string\n\t(?\u003c=[\"'`]) \\s* (:)\n)\n(?=\\s|$)\n\\s*",
363
358
  "end": "(?=\\s*})|^(?!\\G)",
364
359
  "patterns": [
365
360
  {
@@ -438,7 +433,7 @@
438
433
  },
439
434
  "fieldQuotedEarly": {
440
435
  "name": "meta.field.sy",
441
- "begin": "(?x) ^ \\s*\n(?: (\"(?:[^\"\\\\]|\\\\.)*\")\n| ('(?:[^'\\\\]|\\\\.)*')\n| (`(?:[^`\\\\]|\\\\.)*`)\n) \\s* (:)\n(?=\\s|$)\n\\s*",
436
+ "begin": "(?x) ^ \\s*\n(?: (\"(?:[^\"\\\\]|\\\\.)*\")\n| ('(?:[^'\\\\]|\\\\.)*')\n| (`(?:[^`]|``)*+`(?!`))\n) \\s* (:)\n(?=\\s|$)\n\\s*",
442
437
  "end": "(?=\\s*})|^(?!\\G)",
443
438
  "patterns": [
444
439
  {
@@ -475,269 +470,318 @@
475
470
  }
476
471
  }
477
472
  },
478
- "main": {
473
+ "heredoc": {
479
474
  "patterns": [
480
475
  {
481
- "include": "#comment"
482
- },
483
- {
484
- "include": "#regexp"
485
- },
486
- {
487
- "include": "#fieldQuotedEarly"
488
- },
489
- {
490
- "include": "#string"
491
- },
492
- {
493
- "include": "#stringJunk"
494
- },
495
- {
496
- "include": "#block"
497
- },
498
- {
499
- "include": "#field"
500
- },
501
- {
502
- "include": "#array"
503
- },
504
- {
505
- "include": "#bytestream"
506
- },
507
- {
508
- "include": "#brackets"
509
- },
510
- {
511
- "include": "#boolean"
512
- },
513
- {
514
- "include": "#null"
515
- },
516
- {
517
- "include": "#date"
518
- },
519
- {
520
- "include": "#number"
521
- },
522
- {
523
- "include": "#comma"
524
- },
525
- {
526
- "include": "#operator"
527
- }
528
- ]
529
- },
530
- "null": {
531
- "name": "constant.language.null.sy",
532
- "match": "(?x)\n(?:^|(?\u003c=[\\s\\[{,]))\n(?:null|NULL)\n(?=$|[\\s\\]},])"
533
- },
534
- "number": {
535
- "match": "(?x)\n(?:^|(?\u003c=[\\s\\[\\({,~]))\n(?: ([-+]?0[xX][A-Fa-f0-9]+) # Hexadecimal\n| ([-+]?0[oO][0-7]+) # Octal\n| ([-+]?0[bB][0-1]+) # Binary\n| ([-+]?[0-9]+\\.(?:[0-9]*[eE][+-]?[0-9]+|[0-9]+)) # Float\n| ([-+]?[0-9]+(?:[eE][+-]?[0-9]+)?) # Integer\n)\n\\s*\n(?= $\n| [-+*/%^\u0026|\\)\u003c\u003e\\s\\]},]\n| (?\u003c=\\s)\\#(?=\\s|$)\n)",
536
- "captures": {
537
- "1": {
538
- "name": "constant.numeric.integer.int.hexadecimal.hex.sy"
539
- },
540
- "2": {
541
- "name": "constant.numeric.integer.int.octal.oct.sy"
476
+ "include": "#heredocDouble"
542
477
  },
543
- "3": {
544
- "name": "constant.numeric.integer.int.binary.bin.sy"
545
- },
546
- "4": {
547
- "name": "constant.numeric.float.decimal.dec.sy"
548
- },
549
- "5": {
550
- "name": "constant.numeric.integer.int.decimal.dec.sy"
551
- }
552
- }
553
- },
554
- "operator": {
555
- "patterns": [
556
478
  {
557
- "name": "keyword.operator.arithmetic.sy",
558
- "match": "\\*\\*|[-+*/%]"
479
+ "include": "#heredocSingle"
559
480
  },
560
481
  {
561
- "name": "keyword.operator.bitwise.sy",
562
- "match": "(\u003c\u003c|\u003e\u003e|\u003e\u003e\u003e|[~\u0026|^])"
482
+ "include": "#heredocVerbatim"
563
483
  }
564
484
  ]
565
485
  },
566
- "regexp": {
486
+ "heredocDouble": {
567
487
  "patterns": [
568
488
  {
569
- "name": "string.regexp.multiline.sy",
570
- "begin": "(/{3,})",
571
- "end": "(\\1)([A-Za-z]*)",
489
+ "name": "string.quoted.double.heredoc.annotated.${1:/downcase}.sy",
490
+ "contentName": "text.embedded.html.basic",
491
+ "begin": "(?i)(X?HTML)[ \\t]+(\"{3,})",
492
+ "end": "((?:(?!\\2).)*+)(\\2)",
572
493
  "patterns": [
573
494
  {
574
- "include": "source.regexp#main"
495
+ "match": ".+",
496
+ "captures": {
497
+ "0": {
498
+ "patterns": [
499
+ {
500
+ "include": "text.html.basic"
501
+ }
502
+ ]
503
+ }
504
+ }
575
505
  }
576
506
  ],
577
507
  "beginCaptures": {
578
508
  "1": {
579
- "patterns": [
580
- {
581
- "name": "punctuation.definition.string.begin.triple-slash.sy",
582
- "match": "^/{3}$"
583
- },
584
- {
585
- "name": "punctuation.definition.string.begin.sy",
586
- "match": ".+"
587
- }
588
- ]
509
+ "name": "storage.modifier.type.annotation.sy"
510
+ },
511
+ "2": {
512
+ "name": "punctuation.definition.string.begin.sy"
589
513
  }
590
514
  },
591
515
  "endCaptures": {
592
516
  "1": {
517
+ "name": "text.embedded.html.basic",
593
518
  "patterns": [
594
519
  {
595
- "name": "punctuation.definition.string.end.triple-slash.sy",
596
- "match": "^/{3}$"
597
- },
598
- {
599
- "name": "punctuation.definition.string.end.sy",
600
- "match": ".+"
520
+ "include": "text.html.basic"
601
521
  }
602
522
  ]
603
523
  },
604
524
  "2": {
605
- "patterns": [
606
- {
607
- "include": "source.regexp#scopedModifiers"
608
- }
609
- ]
525
+ "name": "punctuation.definition.string.end.sy"
610
526
  }
611
527
  }
612
528
  },
613
529
  {
614
- "name": "string.regexp.sy",
615
- "begin": "(/)",
616
- "end": "(/)([A-Za-z]*)",
530
+ "name": "string.quoted.double.heredoc.annotated.${1:/downcase}.sy",
531
+ "contentName": "source.embedded.css",
532
+ "begin": "(?i)(CSS)[ \\t]+(\"{3,})",
533
+ "end": "((?:(?!\\2).)*+)(\\2)",
617
534
  "patterns": [
618
535
  {
619
- "include": "source.regexp#main"
536
+ "match": ".+",
537
+ "captures": {
538
+ "0": {
539
+ "patterns": [
540
+ {
541
+ "include": "source.css"
542
+ }
543
+ ]
544
+ }
545
+ }
620
546
  }
621
547
  ],
622
548
  "beginCaptures": {
623
- "0": {
549
+ "1": {
550
+ "name": "storage.modifier.type.annotation.sy"
551
+ },
552
+ "2": {
624
553
  "name": "punctuation.definition.string.begin.sy"
625
554
  }
626
555
  },
627
556
  "endCaptures": {
628
557
  "1": {
629
- "name": "punctuation.definition.string.end.sy"
630
- },
631
- "2": {
558
+ "name": "source.embedded.css",
632
559
  "patterns": [
633
560
  {
634
- "include": "source.regexp#scopedModifiers"
561
+ "include": "source.css"
635
562
  }
636
563
  ]
564
+ },
565
+ "2": {
566
+ "name": "punctuation.definition.string.end.sy"
637
567
  }
638
568
  }
639
- }
640
- ]
641
- },
642
- "string": {
643
- "patterns": [
569
+ },
644
570
  {
645
- "name": "string.quoted.double.heredoc.sy",
646
- "begin": "(\"{3,})",
647
- "end": "\\1",
571
+ "name": "string.quoted.double.heredoc.annotated.${1:/downcase}.sy",
572
+ "contentName": "source.embedded.js",
573
+ "begin": "(?i)(JS|JavaScript)[ \\t]+(\"{3,})",
574
+ "end": "((?:(?!\\2).)*+)(\\2)",
648
575
  "patterns": [
649
576
  {
650
- "include": "#stringInnards"
577
+ "match": ".+",
578
+ "captures": {
579
+ "0": {
580
+ "patterns": [
581
+ {
582
+ "include": "source.js"
583
+ }
584
+ ]
585
+ }
586
+ }
651
587
  }
652
588
  ],
653
589
  "beginCaptures": {
654
- "0": {
590
+ "1": {
591
+ "name": "storage.modifier.type.annotation.sy"
592
+ },
593
+ "2": {
655
594
  "name": "punctuation.definition.string.begin.sy"
656
595
  }
657
596
  },
658
597
  "endCaptures": {
659
- "0": {
598
+ "1": {
599
+ "name": "source.embedded.js",
600
+ "patterns": [
601
+ {
602
+ "include": "source.js"
603
+ }
604
+ ]
605
+ },
606
+ "2": {
660
607
  "name": "punctuation.definition.string.end.sy"
661
608
  }
662
609
  }
663
610
  },
664
611
  {
665
- "name": "string.quoted.single.heredoc.sy",
666
- "begin": "('{3,})",
667
- "end": "\\1",
612
+ "name": "string.quoted.double.heredoc.annotated.${1:/downcase}.sy",
613
+ "contentName": "source.embedded.gfm",
614
+ "begin": "(?i)(MD|Markdown|GFM)[ \\t]+(\"{3,})",
615
+ "end": "((?:(?!\\2).)*+)(\\2)",
668
616
  "patterns": [
669
617
  {
670
- "include": "#stringInnards"
618
+ "match": ".+",
619
+ "captures": {
620
+ "0": {
621
+ "patterns": [
622
+ {
623
+ "include": "source.gfm"
624
+ }
625
+ ]
626
+ }
627
+ }
671
628
  }
672
629
  ],
673
630
  "beginCaptures": {
674
- "0": {
631
+ "1": {
632
+ "name": "storage.modifier.type.annotation.sy"
633
+ },
634
+ "2": {
675
635
  "name": "punctuation.definition.string.begin.sy"
676
636
  }
677
637
  },
678
638
  "endCaptures": {
679
- "0": {
639
+ "1": {
640
+ "name": "source.embedded.gfm",
641
+ "patterns": [
642
+ {
643
+ "include": "source.gfm"
644
+ }
645
+ ]
646
+ },
647
+ "2": {
680
648
  "name": "punctuation.definition.string.end.sy"
681
649
  }
682
650
  }
683
651
  },
684
652
  {
685
- "name": "string.quoted.verbatim.backtick.heredoc.sy",
686
- "begin": "(`{3,})",
687
- "end": "\\1",
653
+ "name": "string.quoted.double.heredoc.annotated.${1:/downcase}.sy",
654
+ "contentName": "source.embedded.shell",
655
+ "begin": "(?i)(bash|shell(?:-script)?|[zkc]?sh|mksh)[ \\t]+(\"{3,})",
656
+ "end": "((?:(?!\\2).)*+)(\\2)",
688
657
  "patterns": [
689
658
  {
690
- "name": "constant.character.escape.heredoc.sy",
691
- "match": "(\\\\)```",
659
+ "match": ".+",
692
660
  "captures": {
693
- "1": {
694
- "name": "punctuation.backslash.definition.escape.sy"
661
+ "0": {
662
+ "patterns": [
663
+ {
664
+ "include": "source.shell"
665
+ }
666
+ ]
695
667
  }
696
668
  }
697
669
  }
698
670
  ],
699
671
  "beginCaptures": {
700
- "0": {
672
+ "1": {
673
+ "name": "storage.modifier.type.annotation.sy"
674
+ },
675
+ "2": {
701
676
  "name": "punctuation.definition.string.begin.sy"
702
677
  }
703
678
  },
704
679
  "endCaptures": {
705
- "0": {
680
+ "1": {
681
+ "name": "source.embedded.shell",
682
+ "patterns": [
683
+ {
684
+ "include": "source.shell"
685
+ }
686
+ ]
687
+ },
688
+ "2": {
706
689
  "name": "punctuation.definition.string.end.sy"
707
690
  }
708
691
  }
709
692
  },
710
693
  {
711
- "name": "string.quoted.double.sy",
712
- "begin": "\"",
713
- "end": "\"",
694
+ "name": "string.quoted.double.heredoc.annotated.${1:/downcase}.sy",
695
+ "contentName": "source.embedded.powershell",
696
+ "begin": "(?i)(powershell|pw?sh|ps1)[ \\t]+(\"{3,})",
697
+ "end": "((?:(?!\\2).)*+)(\\2)",
714
698
  "patterns": [
715
699
  {
716
- "include": "#stringInnards"
700
+ "match": ".+",
701
+ "captures": {
702
+ "0": {
703
+ "patterns": [
704
+ {
705
+ "include": "source.powershell"
706
+ }
707
+ ]
708
+ }
709
+ }
717
710
  }
718
711
  ],
719
712
  "beginCaptures": {
720
- "0": {
713
+ "1": {
714
+ "name": "storage.modifier.type.annotation.sy"
715
+ },
716
+ "2": {
721
717
  "name": "punctuation.definition.string.begin.sy"
722
718
  }
723
719
  },
724
720
  "endCaptures": {
725
- "0": {
721
+ "1": {
722
+ "name": "source.embedded.powershell",
723
+ "patterns": [
724
+ {
725
+ "include": "source.powershell"
726
+ }
727
+ ]
728
+ },
729
+ "2": {
726
730
  "name": "punctuation.definition.string.end.sy"
727
731
  }
728
732
  }
729
733
  },
730
734
  {
731
- "name": "string.quoted.single.sy",
732
- "begin": "'",
733
- "end": "'",
735
+ "name": "string.quoted.double.heredoc.annotated.${1:/downcase}.sy",
736
+ "contentName": "source.embedded.batchfile",
737
+ "begin": "(?i)(bat|batch(?:-?(?:script|file))?)[ \\t]+(\"{3,})",
738
+ "end": "((?:(?!\\2).)*+)(\\2)",
734
739
  "patterns": [
735
740
  {
736
- "include": "#stringInnards"
741
+ "match": ".+",
742
+ "captures": {
743
+ "0": {
744
+ "patterns": [
745
+ {
746
+ "include": "source.batchfile"
747
+ }
748
+ ]
749
+ }
750
+ }
737
751
  }
738
752
  ],
739
753
  "beginCaptures": {
740
- "0": {
754
+ "1": {
755
+ "name": "storage.modifier.type.annotation.sy"
756
+ },
757
+ "2": {
758
+ "name": "punctuation.definition.string.begin.sy"
759
+ }
760
+ },
761
+ "endCaptures": {
762
+ "1": {
763
+ "name": "source.embedded.batchfile",
764
+ "patterns": [
765
+ {
766
+ "include": "source.batchfile"
767
+ }
768
+ ]
769
+ },
770
+ "2": {
771
+ "name": "punctuation.definition.string.end.sy"
772
+ }
773
+ }
774
+ },
775
+ {
776
+ "name": "string.quoted.double.heredoc.annotated.${1:/downcase}.sy",
777
+ "contentName": "source.embedded.${1:/downcase}",
778
+ "begin": "([-\\w]+)[ \\t]+(\"{3,})",
779
+ "end": "\\2",
780
+ "beginCaptures": {
781
+ "1": {
782
+ "name": "storage.modifier.type.annotation.sy"
783
+ },
784
+ "2": {
741
785
  "name": "punctuation.definition.string.begin.sy"
742
786
  }
743
787
  },
@@ -748,12 +792,12 @@
748
792
  }
749
793
  },
750
794
  {
751
- "name": "string.quoted.verbatim.backtick.sy",
752
- "begin": "`",
753
- "end": "`",
795
+ "name": "string.quoted.double.heredoc.sy",
796
+ "begin": "(\"{3,})",
797
+ "end": "\\1",
754
798
  "patterns": [
755
799
  {
756
- "include": "#escapeVerbatim"
800
+ "include": "#stringInnards"
757
801
  }
758
802
  ],
759
803
  "beginCaptures": {
@@ -769,21 +813,1873 @@
769
813
  }
770
814
  ]
771
815
  },
772
- "stringInnards": {
816
+ "heredocSingle": {
773
817
  "patterns": [
774
818
  {
775
- "include": "#url"
776
- },
777
- {
778
- "include": "#escape"
779
- }
780
- ]
781
- },
782
- "stringJunk": {
783
- "name": "invalid.illegal.syntax.sy",
819
+ "name": "string.quoted.single.heredoc.annotated.${1:/downcase}.sy",
820
+ "contentName": "text.embedded.html.basic",
821
+ "begin": "(?i)(X?HTML)[ \\t]+('{3,})",
822
+ "end": "((?:(?!\\2).)*+)(\\2)",
823
+ "patterns": [
824
+ {
825
+ "match": ".+",
826
+ "captures": {
827
+ "0": {
828
+ "patterns": [
829
+ {
830
+ "include": "text.html.basic"
831
+ }
832
+ ]
833
+ }
834
+ }
835
+ }
836
+ ],
837
+ "beginCaptures": {
838
+ "1": {
839
+ "name": "storage.modifier.type.annotation.sy"
840
+ },
841
+ "2": {
842
+ "name": "punctuation.definition.string.begin.sy"
843
+ }
844
+ },
845
+ "endCaptures": {
846
+ "1": {
847
+ "name": "text.embedded.html.basic",
848
+ "patterns": [
849
+ {
850
+ "include": "text.html.basic"
851
+ }
852
+ ]
853
+ },
854
+ "2": {
855
+ "name": "punctuation.definition.string.end.sy"
856
+ }
857
+ }
858
+ },
859
+ {
860
+ "name": "string.quoted.single.heredoc.annotated.${1:/downcase}.sy",
861
+ "contentName": "source.embedded.css",
862
+ "begin": "(?i)(CSS)[ \\t]+('{3,})",
863
+ "end": "((?:(?!\\2).)*+)(\\2)",
864
+ "patterns": [
865
+ {
866
+ "match": ".+",
867
+ "captures": {
868
+ "0": {
869
+ "patterns": [
870
+ {
871
+ "include": "source.css"
872
+ }
873
+ ]
874
+ }
875
+ }
876
+ }
877
+ ],
878
+ "beginCaptures": {
879
+ "1": {
880
+ "name": "storage.modifier.type.annotation.sy"
881
+ },
882
+ "2": {
883
+ "name": "punctuation.definition.string.begin.sy"
884
+ }
885
+ },
886
+ "endCaptures": {
887
+ "1": {
888
+ "name": "source.embedded.css",
889
+ "patterns": [
890
+ {
891
+ "include": "source.css"
892
+ }
893
+ ]
894
+ },
895
+ "2": {
896
+ "name": "punctuation.definition.string.end.sy"
897
+ }
898
+ }
899
+ },
900
+ {
901
+ "name": "string.quoted.single.heredoc.annotated.${1:/downcase}.sy",
902
+ "contentName": "source.embedded.js",
903
+ "begin": "(?i)(JS|JavaScript)[ \\t]+('{3,})",
904
+ "end": "((?:(?!\\2).)*+)(\\2)",
905
+ "patterns": [
906
+ {
907
+ "match": ".+",
908
+ "captures": {
909
+ "0": {
910
+ "patterns": [
911
+ {
912
+ "include": "source.js"
913
+ }
914
+ ]
915
+ }
916
+ }
917
+ }
918
+ ],
919
+ "beginCaptures": {
920
+ "1": {
921
+ "name": "storage.modifier.type.annotation.sy"
922
+ },
923
+ "2": {
924
+ "name": "punctuation.definition.string.begin.sy"
925
+ }
926
+ },
927
+ "endCaptures": {
928
+ "1": {
929
+ "name": "source.embedded.js",
930
+ "patterns": [
931
+ {
932
+ "include": "source.js"
933
+ }
934
+ ]
935
+ },
936
+ "2": {
937
+ "name": "punctuation.definition.string.end.sy"
938
+ }
939
+ }
940
+ },
941
+ {
942
+ "name": "string.quoted.single.heredoc.annotated.${1:/downcase}.sy",
943
+ "contentName": "source.embedded.gfm",
944
+ "begin": "(?i)(MD|Markdown|GFM)[ \\t]+('{3,})",
945
+ "end": "((?:(?!\\2).)*+)(\\2)",
946
+ "patterns": [
947
+ {
948
+ "match": ".+",
949
+ "captures": {
950
+ "0": {
951
+ "patterns": [
952
+ {
953
+ "include": "source.gfm"
954
+ }
955
+ ]
956
+ }
957
+ }
958
+ }
959
+ ],
960
+ "beginCaptures": {
961
+ "1": {
962
+ "name": "storage.modifier.type.annotation.sy"
963
+ },
964
+ "2": {
965
+ "name": "punctuation.definition.string.begin.sy"
966
+ }
967
+ },
968
+ "endCaptures": {
969
+ "1": {
970
+ "name": "source.embedded.gfm",
971
+ "patterns": [
972
+ {
973
+ "include": "source.gfm"
974
+ }
975
+ ]
976
+ },
977
+ "2": {
978
+ "name": "punctuation.definition.string.end.sy"
979
+ }
980
+ }
981
+ },
982
+ {
983
+ "name": "string.quoted.single.heredoc.annotated.${1:/downcase}.sy",
984
+ "contentName": "source.embedded.shell",
985
+ "begin": "(?i)(bash|shell(?:-script)?|[zkc]?sh|mksh)[ \\t]+('{3,})",
986
+ "end": "((?:(?!\\2).)*+)(\\2)",
987
+ "patterns": [
988
+ {
989
+ "match": ".+",
990
+ "captures": {
991
+ "0": {
992
+ "patterns": [
993
+ {
994
+ "include": "source.shell"
995
+ }
996
+ ]
997
+ }
998
+ }
999
+ }
1000
+ ],
1001
+ "beginCaptures": {
1002
+ "1": {
1003
+ "name": "storage.modifier.type.annotation.sy"
1004
+ },
1005
+ "2": {
1006
+ "name": "punctuation.definition.string.begin.sy"
1007
+ }
1008
+ },
1009
+ "endCaptures": {
1010
+ "1": {
1011
+ "name": "source.embedded.shell",
1012
+ "patterns": [
1013
+ {
1014
+ "include": "source.shell"
1015
+ }
1016
+ ]
1017
+ },
1018
+ "2": {
1019
+ "name": "punctuation.definition.string.end.sy"
1020
+ }
1021
+ }
1022
+ },
1023
+ {
1024
+ "name": "string.quoted.single.heredoc.annotated.${1:/downcase}.sy",
1025
+ "contentName": "source.embedded.powershell",
1026
+ "begin": "(?i)(powershell|pw?sh|ps1)[ \\t]+('{3,})",
1027
+ "end": "((?:(?!\\2).)*+)(\\2)",
1028
+ "patterns": [
1029
+ {
1030
+ "match": ".+",
1031
+ "captures": {
1032
+ "0": {
1033
+ "patterns": [
1034
+ {
1035
+ "include": "source.powershell"
1036
+ }
1037
+ ]
1038
+ }
1039
+ }
1040
+ }
1041
+ ],
1042
+ "beginCaptures": {
1043
+ "1": {
1044
+ "name": "storage.modifier.type.annotation.sy"
1045
+ },
1046
+ "2": {
1047
+ "name": "punctuation.definition.string.begin.sy"
1048
+ }
1049
+ },
1050
+ "endCaptures": {
1051
+ "1": {
1052
+ "name": "source.embedded.powershell",
1053
+ "patterns": [
1054
+ {
1055
+ "include": "source.powershell"
1056
+ }
1057
+ ]
1058
+ },
1059
+ "2": {
1060
+ "name": "punctuation.definition.string.end.sy"
1061
+ }
1062
+ }
1063
+ },
1064
+ {
1065
+ "name": "string.quoted.single.heredoc.annotated.${1:/downcase}.sy",
1066
+ "contentName": "source.embedded.batchfile",
1067
+ "begin": "(?i)(bat|batch(?:-?(?:script|file))?)[ \\t]+('{3,})",
1068
+ "end": "((?:(?!\\2).)*+)(\\2)",
1069
+ "patterns": [
1070
+ {
1071
+ "match": ".+",
1072
+ "captures": {
1073
+ "0": {
1074
+ "patterns": [
1075
+ {
1076
+ "include": "source.batchfile"
1077
+ }
1078
+ ]
1079
+ }
1080
+ }
1081
+ }
1082
+ ],
1083
+ "beginCaptures": {
1084
+ "1": {
1085
+ "name": "storage.modifier.type.annotation.sy"
1086
+ },
1087
+ "2": {
1088
+ "name": "punctuation.definition.string.begin.sy"
1089
+ }
1090
+ },
1091
+ "endCaptures": {
1092
+ "1": {
1093
+ "name": "source.embedded.batchfile",
1094
+ "patterns": [
1095
+ {
1096
+ "include": "source.batchfile"
1097
+ }
1098
+ ]
1099
+ },
1100
+ "2": {
1101
+ "name": "punctuation.definition.string.end.sy"
1102
+ }
1103
+ }
1104
+ },
1105
+ {
1106
+ "name": "string.quoted.single.heredoc.annotated.${1:/downcase}.sy",
1107
+ "contentName": "source.embedded.${1:/downcase}",
1108
+ "begin": "([-\\w]+)[ \\t]+('{3,})",
1109
+ "end": "\\2",
1110
+ "beginCaptures": {
1111
+ "1": {
1112
+ "name": "storage.modifier.type.annotation.sy"
1113
+ },
1114
+ "2": {
1115
+ "name": "punctuation.definition.string.begin.sy"
1116
+ }
1117
+ },
1118
+ "endCaptures": {
1119
+ "0": {
1120
+ "name": "punctuation.definition.string.end.sy"
1121
+ }
1122
+ }
1123
+ },
1124
+ {
1125
+ "name": "string.quoted.single.heredoc.sy",
1126
+ "begin": "('{3,})",
1127
+ "end": "\\1",
1128
+ "patterns": [
1129
+ {
1130
+ "include": "#stringInnards"
1131
+ }
1132
+ ],
1133
+ "beginCaptures": {
1134
+ "0": {
1135
+ "name": "punctuation.definition.string.begin.sy"
1136
+ }
1137
+ },
1138
+ "endCaptures": {
1139
+ "0": {
1140
+ "name": "punctuation.definition.string.end.sy"
1141
+ }
1142
+ }
1143
+ }
1144
+ ]
1145
+ },
1146
+ "heredocVerbatim": {
1147
+ "patterns": [
1148
+ {
1149
+ "name": "string.quoted.verbatim.backtick.heredoc.annotated.${1:/downcase}.sy",
1150
+ "contentName": "text.embedded.html.basic",
1151
+ "begin": "(?i)(X?HTML)[ \\t]+(`{3,})",
1152
+ "end": "((?:(?!\\2).)*+)(\\2)",
1153
+ "patterns": [
1154
+ {
1155
+ "match": ".+",
1156
+ "captures": {
1157
+ "0": {
1158
+ "patterns": [
1159
+ {
1160
+ "include": "text.html.basic"
1161
+ }
1162
+ ]
1163
+ }
1164
+ }
1165
+ }
1166
+ ],
1167
+ "beginCaptures": {
1168
+ "1": {
1169
+ "name": "storage.modifier.type.annotation.sy"
1170
+ },
1171
+ "2": {
1172
+ "name": "punctuation.definition.string.begin.sy"
1173
+ }
1174
+ },
1175
+ "endCaptures": {
1176
+ "1": {
1177
+ "name": "text.embedded.html.basic",
1178
+ "patterns": [
1179
+ {
1180
+ "include": "text.html.basic"
1181
+ }
1182
+ ]
1183
+ },
1184
+ "2": {
1185
+ "name": "punctuation.definition.string.end.sy"
1186
+ }
1187
+ }
1188
+ },
1189
+ {
1190
+ "name": "string.quoted.verbatim.backtick.heredoc.annotated.${1:/downcase}.sy",
1191
+ "contentName": "source.embedded.css",
1192
+ "begin": "(?i)(CSS)[ \\t]+(`{3,})",
1193
+ "end": "((?:(?!\\2).)*+)(\\2)",
1194
+ "patterns": [
1195
+ {
1196
+ "match": ".+",
1197
+ "captures": {
1198
+ "0": {
1199
+ "patterns": [
1200
+ {
1201
+ "include": "source.css"
1202
+ }
1203
+ ]
1204
+ }
1205
+ }
1206
+ }
1207
+ ],
1208
+ "beginCaptures": {
1209
+ "1": {
1210
+ "name": "storage.modifier.type.annotation.sy"
1211
+ },
1212
+ "2": {
1213
+ "name": "punctuation.definition.string.begin.sy"
1214
+ }
1215
+ },
1216
+ "endCaptures": {
1217
+ "1": {
1218
+ "name": "source.embedded.css",
1219
+ "patterns": [
1220
+ {
1221
+ "include": "source.css"
1222
+ }
1223
+ ]
1224
+ },
1225
+ "2": {
1226
+ "name": "punctuation.definition.string.end.sy"
1227
+ }
1228
+ }
1229
+ },
1230
+ {
1231
+ "name": "string.quoted.verbatim.backtick.heredoc.annotated.${1:/downcase}.sy",
1232
+ "contentName": "source.embedded.js",
1233
+ "begin": "(?i)(JS|JavaScript)[ \\t]+(`{3,})",
1234
+ "end": "((?:(?!\\2).)*+)(\\2)",
1235
+ "patterns": [
1236
+ {
1237
+ "match": ".+",
1238
+ "captures": {
1239
+ "0": {
1240
+ "patterns": [
1241
+ {
1242
+ "include": "source.js"
1243
+ }
1244
+ ]
1245
+ }
1246
+ }
1247
+ }
1248
+ ],
1249
+ "beginCaptures": {
1250
+ "1": {
1251
+ "name": "storage.modifier.type.annotation.sy"
1252
+ },
1253
+ "2": {
1254
+ "name": "punctuation.definition.string.begin.sy"
1255
+ }
1256
+ },
1257
+ "endCaptures": {
1258
+ "1": {
1259
+ "name": "source.embedded.js",
1260
+ "patterns": [
1261
+ {
1262
+ "include": "source.js"
1263
+ }
1264
+ ]
1265
+ },
1266
+ "2": {
1267
+ "name": "punctuation.definition.string.end.sy"
1268
+ }
1269
+ }
1270
+ },
1271
+ {
1272
+ "name": "string.quoted.verbatim.backtick.heredoc.annotated.${1:/downcase}.sy",
1273
+ "contentName": "source.embedded.gfm",
1274
+ "begin": "(?i)(MD|Markdown|GFM)[ \\t]+(`{3,})",
1275
+ "end": "((?:(?!\\2).)*+)(\\2)",
1276
+ "patterns": [
1277
+ {
1278
+ "match": ".+",
1279
+ "captures": {
1280
+ "0": {
1281
+ "patterns": [
1282
+ {
1283
+ "include": "source.gfm"
1284
+ }
1285
+ ]
1286
+ }
1287
+ }
1288
+ }
1289
+ ],
1290
+ "beginCaptures": {
1291
+ "1": {
1292
+ "name": "storage.modifier.type.annotation.sy"
1293
+ },
1294
+ "2": {
1295
+ "name": "punctuation.definition.string.begin.sy"
1296
+ }
1297
+ },
1298
+ "endCaptures": {
1299
+ "1": {
1300
+ "name": "source.embedded.gfm",
1301
+ "patterns": [
1302
+ {
1303
+ "include": "source.gfm"
1304
+ }
1305
+ ]
1306
+ },
1307
+ "2": {
1308
+ "name": "punctuation.definition.string.end.sy"
1309
+ }
1310
+ }
1311
+ },
1312
+ {
1313
+ "name": "string.quoted.verbatim.backtick.heredoc.annotated.${1:/downcase}.sy",
1314
+ "contentName": "source.embedded.shell",
1315
+ "begin": "(?i)(bash|shell(?:-script)?|[zkc]?sh|mksh)[ \\t]+(`{3,})",
1316
+ "end": "((?:(?!\\2).)*+)(\\2)",
1317
+ "patterns": [
1318
+ {
1319
+ "match": ".+",
1320
+ "captures": {
1321
+ "0": {
1322
+ "patterns": [
1323
+ {
1324
+ "include": "source.shell"
1325
+ }
1326
+ ]
1327
+ }
1328
+ }
1329
+ }
1330
+ ],
1331
+ "beginCaptures": {
1332
+ "1": {
1333
+ "name": "storage.modifier.type.annotation.sy"
1334
+ },
1335
+ "2": {
1336
+ "name": "punctuation.definition.string.begin.sy"
1337
+ }
1338
+ },
1339
+ "endCaptures": {
1340
+ "1": {
1341
+ "name": "source.embedded.shell",
1342
+ "patterns": [
1343
+ {
1344
+ "include": "source.shell"
1345
+ }
1346
+ ]
1347
+ },
1348
+ "2": {
1349
+ "name": "punctuation.definition.string.end.sy"
1350
+ }
1351
+ }
1352
+ },
1353
+ {
1354
+ "name": "string.quoted.verbatim.backtick.heredoc.annotated.${1:/downcase}.sy",
1355
+ "contentName": "source.embedded.powershell",
1356
+ "begin": "(?i)(powershell|pw?sh|ps1)[ \\t]+(`{3,})",
1357
+ "end": "((?:(?!\\2).)*+)(\\2)",
1358
+ "patterns": [
1359
+ {
1360
+ "match": ".+",
1361
+ "captures": {
1362
+ "0": {
1363
+ "patterns": [
1364
+ {
1365
+ "include": "source.powershell"
1366
+ }
1367
+ ]
1368
+ }
1369
+ }
1370
+ }
1371
+ ],
1372
+ "beginCaptures": {
1373
+ "1": {
1374
+ "name": "storage.modifier.type.annotation.sy"
1375
+ },
1376
+ "2": {
1377
+ "name": "punctuation.definition.string.begin.sy"
1378
+ }
1379
+ },
1380
+ "endCaptures": {
1381
+ "1": {
1382
+ "name": "source.embedded.powershell",
1383
+ "patterns": [
1384
+ {
1385
+ "include": "source.powershell"
1386
+ }
1387
+ ]
1388
+ },
1389
+ "2": {
1390
+ "name": "punctuation.definition.string.end.sy"
1391
+ }
1392
+ }
1393
+ },
1394
+ {
1395
+ "name": "string.quoted.verbatim.backtick.heredoc.annotated.${1:/downcase}.sy",
1396
+ "contentName": "source.embedded.batchfile",
1397
+ "begin": "(?i)(bat|batch(?:-?(?:script|file))?)[ \\t]+(`{3,})",
1398
+ "end": "((?:(?!\\2).)*+)(\\2)",
1399
+ "patterns": [
1400
+ {
1401
+ "match": ".+",
1402
+ "captures": {
1403
+ "0": {
1404
+ "patterns": [
1405
+ {
1406
+ "include": "source.batchfile"
1407
+ }
1408
+ ]
1409
+ }
1410
+ }
1411
+ }
1412
+ ],
1413
+ "beginCaptures": {
1414
+ "1": {
1415
+ "name": "storage.modifier.type.annotation.sy"
1416
+ },
1417
+ "2": {
1418
+ "name": "punctuation.definition.string.begin.sy"
1419
+ }
1420
+ },
1421
+ "endCaptures": {
1422
+ "1": {
1423
+ "name": "source.embedded.batchfile",
1424
+ "patterns": [
1425
+ {
1426
+ "include": "source.batchfile"
1427
+ }
1428
+ ]
1429
+ },
1430
+ "2": {
1431
+ "name": "punctuation.definition.string.end.sy"
1432
+ }
1433
+ }
1434
+ },
1435
+ {
1436
+ "name": "string.quoted.verbatim.backtick.heredoc.annotated.${1:/downcase}.sy",
1437
+ "contentName": "source.embedded.${1:/downcase}",
1438
+ "begin": "([-\\w]+)[ \\t]+(`{3,})",
1439
+ "end": "\\2",
1440
+ "beginCaptures": {
1441
+ "1": {
1442
+ "name": "storage.modifier.type.annotation.sy"
1443
+ },
1444
+ "2": {
1445
+ "name": "punctuation.definition.string.begin.sy"
1446
+ }
1447
+ },
1448
+ "endCaptures": {
1449
+ "0": {
1450
+ "name": "punctuation.definition.string.end.sy"
1451
+ }
1452
+ }
1453
+ },
1454
+ {
1455
+ "name": "string.quoted.verbatim.backtick.heredoc.sy",
1456
+ "begin": "(`{3,})",
1457
+ "end": "\\1",
1458
+ "beginCaptures": {
1459
+ "0": {
1460
+ "name": "punctuation.definition.string.begin.sy"
1461
+ }
1462
+ },
1463
+ "endCaptures": {
1464
+ "0": {
1465
+ "name": "punctuation.definition.string.end.sy"
1466
+ }
1467
+ }
1468
+ }
1469
+ ]
1470
+ },
1471
+ "main": {
1472
+ "patterns": [
1473
+ {
1474
+ "include": "#comment"
1475
+ },
1476
+ {
1477
+ "include": "#regexp"
1478
+ },
1479
+ {
1480
+ "include": "#fieldQuotedEarly"
1481
+ },
1482
+ {
1483
+ "include": "#heredoc"
1484
+ },
1485
+ {
1486
+ "include": "#string"
1487
+ },
1488
+ {
1489
+ "include": "#stringJunk"
1490
+ },
1491
+ {
1492
+ "include": "#block"
1493
+ },
1494
+ {
1495
+ "include": "#field"
1496
+ },
1497
+ {
1498
+ "include": "#array"
1499
+ },
1500
+ {
1501
+ "include": "#byteArray"
1502
+ },
1503
+ {
1504
+ "include": "#brackets"
1505
+ },
1506
+ {
1507
+ "include": "#boolean"
1508
+ },
1509
+ {
1510
+ "include": "#null"
1511
+ },
1512
+ {
1513
+ "include": "#date"
1514
+ },
1515
+ {
1516
+ "include": "#number"
1517
+ },
1518
+ {
1519
+ "include": "#comma"
1520
+ },
1521
+ {
1522
+ "include": "#operator"
1523
+ }
1524
+ ]
1525
+ },
1526
+ "null": {
1527
+ "name": "constant.language.null.sy",
1528
+ "match": "(?x)\n(?:^|(?\u003c=[\\s\\[{,]))\n(?:null|NULL)\n(?=$|[\\s\\]},])"
1529
+ },
1530
+ "number": {
1531
+ "match": "(?x)\n(?:^|(?\u003c=[\\s\\[\\({,~]))\n(?: ([-+]?0[xX][A-Fa-f0-9_]+) # Hexadecimal\n| ([-+]?0[oO][0-7_]+) # Octal\n| ([-+]?0[bB][0-1_]+) # Binary\n| ([-+]?[0-9_]+\\.(?:[0-9_]*[eE][+-]?[0-9_]+|[0-9_]+)) # Float\n| ([-+]?[0-9_]+(?:[eE][+-]?[0-9_]+)?) # Integer\n)\n\\s*\n(?= $\n| [-+*/%^\u0026|\\)\u003c\u003e\\s\\]},]\n| (?\u003c=\\s)\\#(?=\\s|$)\n)",
1532
+ "captures": {
1533
+ "1": {
1534
+ "name": "constant.numeric.integer.int.hexadecimal.hex.sy"
1535
+ },
1536
+ "2": {
1537
+ "name": "constant.numeric.integer.int.octal.oct.sy"
1538
+ },
1539
+ "3": {
1540
+ "name": "constant.numeric.integer.int.binary.bin.sy"
1541
+ },
1542
+ "4": {
1543
+ "name": "constant.numeric.float.decimal.dec.sy"
1544
+ },
1545
+ "5": {
1546
+ "name": "constant.numeric.integer.int.decimal.dec.sy"
1547
+ }
1548
+ }
1549
+ },
1550
+ "operator": {
1551
+ "patterns": [
1552
+ {
1553
+ "name": "keyword.operator.arithmetic.sy",
1554
+ "match": "\\*\\*|[-+*/%]"
1555
+ },
1556
+ {
1557
+ "name": "keyword.operator.bitwise.sy",
1558
+ "match": "(\u003c\u003c|\u003e\u003e|\u003e\u003e\u003e|[~\u0026|^])"
1559
+ }
1560
+ ]
1561
+ },
1562
+ "regexp": {
1563
+ "patterns": [
1564
+ {
1565
+ "name": "string.regexp.multiline.sy",
1566
+ "begin": "(?:([-\\w]+)[ \\t]+)?(/{3,})",
1567
+ "end": "(\\2)([A-Za-z]*)",
1568
+ "patterns": [
1569
+ {
1570
+ "include": "source.regexp#main"
1571
+ }
1572
+ ],
1573
+ "beginCaptures": {
1574
+ "1": {
1575
+ "name": "storage.modifier.type.annotation.sy"
1576
+ },
1577
+ "2": {
1578
+ "patterns": [
1579
+ {
1580
+ "name": "punctuation.definition.string.begin.triple-slash.sy",
1581
+ "match": "^/{3}$"
1582
+ },
1583
+ {
1584
+ "name": "punctuation.definition.string.begin.sy",
1585
+ "match": ".+"
1586
+ }
1587
+ ]
1588
+ }
1589
+ },
1590
+ "endCaptures": {
1591
+ "1": {
1592
+ "patterns": [
1593
+ {
1594
+ "name": "punctuation.definition.string.end.triple-slash.sy",
1595
+ "match": "^/{3}$"
1596
+ },
1597
+ {
1598
+ "name": "punctuation.definition.string.end.sy",
1599
+ "match": ".+"
1600
+ }
1601
+ ]
1602
+ },
1603
+ "2": {
1604
+ "patterns": [
1605
+ {
1606
+ "include": "source.regexp#scopedModifiers"
1607
+ }
1608
+ ]
1609
+ }
1610
+ }
1611
+ },
1612
+ {
1613
+ "name": "string.regexp.sy",
1614
+ "begin": "(?:([-\\w]+)[ \\t]+)?(/)",
1615
+ "end": "(/)([A-Za-z]*)",
1616
+ "patterns": [
1617
+ {
1618
+ "include": "source.regexp#main"
1619
+ }
1620
+ ],
1621
+ "beginCaptures": {
1622
+ "1": {
1623
+ "name": "storage.modifier.type.annotation.sy"
1624
+ },
1625
+ "2": {
1626
+ "name": "punctuation.definition.string.begin.sy"
1627
+ }
1628
+ },
1629
+ "endCaptures": {
1630
+ "1": {
1631
+ "name": "punctuation.definition.string.end.sy"
1632
+ },
1633
+ "2": {
1634
+ "patterns": [
1635
+ {
1636
+ "include": "source.regexp#scopedModifiers"
1637
+ }
1638
+ ]
1639
+ }
1640
+ }
1641
+ }
1642
+ ]
1643
+ },
1644
+ "string": {
1645
+ "patterns": [
1646
+ {
1647
+ "include": "#stringDouble"
1648
+ },
1649
+ {
1650
+ "include": "#stringSingle"
1651
+ },
1652
+ {
1653
+ "include": "#stringVerbatim"
1654
+ }
1655
+ ]
1656
+ },
1657
+ "stringDouble": {
1658
+ "patterns": [
1659
+ {
1660
+ "name": "string.quoted.double.annotated.${1:/downcase}.sy",
1661
+ "contentName": "text.embedded.html.basic",
1662
+ "begin": "(?i)(X?HTML)[ \\t]+(\")",
1663
+ "end": "((?:[^\\\\\"]|\\\\.)*+)(\")",
1664
+ "patterns": [
1665
+ {
1666
+ "match": "(?:[^\\\\\"]|\\\\.)+",
1667
+ "captures": {
1668
+ "0": {
1669
+ "patterns": [
1670
+ {
1671
+ "include": "text.html.basic"
1672
+ }
1673
+ ]
1674
+ }
1675
+ }
1676
+ }
1677
+ ],
1678
+ "beginCaptures": {
1679
+ "1": {
1680
+ "name": "storage.modifier.type.annotation.sy"
1681
+ },
1682
+ "2": {
1683
+ "name": "punctuation.definition.string.begin.sy"
1684
+ }
1685
+ },
1686
+ "endCaptures": {
1687
+ "1": {
1688
+ "name": "text.embedded.html.basic",
1689
+ "patterns": [
1690
+ {
1691
+ "include": "text.html.basic"
1692
+ }
1693
+ ]
1694
+ },
1695
+ "2": {
1696
+ "name": "punctuation.definition.string.end.sy"
1697
+ }
1698
+ }
1699
+ },
1700
+ {
1701
+ "name": "string.quoted.double.annotated.${1:/downcase}.sy",
1702
+ "contentName": "source.embedded.css",
1703
+ "begin": "(?i)(CSS)[ \\t]+(\")",
1704
+ "end": "((?:[^\\\\\"]|\\\\.)*+)(\")",
1705
+ "patterns": [
1706
+ {
1707
+ "match": "(?:[^\\\\\"]|\\\\.)+",
1708
+ "captures": {
1709
+ "0": {
1710
+ "patterns": [
1711
+ {
1712
+ "include": "source.css"
1713
+ }
1714
+ ]
1715
+ }
1716
+ }
1717
+ }
1718
+ ],
1719
+ "beginCaptures": {
1720
+ "1": {
1721
+ "name": "storage.modifier.type.annotation.sy"
1722
+ },
1723
+ "2": {
1724
+ "name": "punctuation.definition.string.begin.sy"
1725
+ }
1726
+ },
1727
+ "endCaptures": {
1728
+ "1": {
1729
+ "name": "source.embedded.css",
1730
+ "patterns": [
1731
+ {
1732
+ "include": "source.css"
1733
+ }
1734
+ ]
1735
+ },
1736
+ "2": {
1737
+ "name": "punctuation.definition.string.end.sy"
1738
+ }
1739
+ }
1740
+ },
1741
+ {
1742
+ "name": "string.quoted.double.annotated.${1:/downcase}.sy",
1743
+ "contentName": "source.embedded.js",
1744
+ "begin": "(?i)(JS|JavaScript)[ \\t]+(\")",
1745
+ "end": "((?:[^\\\\\"]|\\\\.)*+)(\")",
1746
+ "patterns": [
1747
+ {
1748
+ "match": "(?:[^\\\\\"]|\\\\.)+",
1749
+ "captures": {
1750
+ "0": {
1751
+ "patterns": [
1752
+ {
1753
+ "include": "source.js"
1754
+ }
1755
+ ]
1756
+ }
1757
+ }
1758
+ }
1759
+ ],
1760
+ "beginCaptures": {
1761
+ "1": {
1762
+ "name": "storage.modifier.type.annotation.sy"
1763
+ },
1764
+ "2": {
1765
+ "name": "punctuation.definition.string.begin.sy"
1766
+ }
1767
+ },
1768
+ "endCaptures": {
1769
+ "1": {
1770
+ "name": "source.embedded.js",
1771
+ "patterns": [
1772
+ {
1773
+ "include": "source.js"
1774
+ }
1775
+ ]
1776
+ },
1777
+ "2": {
1778
+ "name": "punctuation.definition.string.end.sy"
1779
+ }
1780
+ }
1781
+ },
1782
+ {
1783
+ "name": "string.quoted.double.annotated.${1:/downcase}.sy",
1784
+ "contentName": "source.embedded.gfm",
1785
+ "begin": "(?i)(MD|Markdown|GFM)[ \\t]+(\")",
1786
+ "end": "((?:[^\\\\\"]|\\\\.)*+)(\")",
1787
+ "patterns": [
1788
+ {
1789
+ "match": "(?:[^\\\\\"]|\\\\.)+",
1790
+ "captures": {
1791
+ "0": {
1792
+ "patterns": [
1793
+ {
1794
+ "include": "source.gfm"
1795
+ }
1796
+ ]
1797
+ }
1798
+ }
1799
+ }
1800
+ ],
1801
+ "beginCaptures": {
1802
+ "1": {
1803
+ "name": "storage.modifier.type.annotation.sy"
1804
+ },
1805
+ "2": {
1806
+ "name": "punctuation.definition.string.begin.sy"
1807
+ }
1808
+ },
1809
+ "endCaptures": {
1810
+ "1": {
1811
+ "name": "source.embedded.gfm",
1812
+ "patterns": [
1813
+ {
1814
+ "include": "source.gfm"
1815
+ }
1816
+ ]
1817
+ },
1818
+ "2": {
1819
+ "name": "punctuation.definition.string.end.sy"
1820
+ }
1821
+ }
1822
+ },
1823
+ {
1824
+ "name": "string.quoted.double.annotated.${1:/downcase}.sy",
1825
+ "contentName": "source.embedded.shell",
1826
+ "begin": "(?i)(bash|shell(?:-script)?|[zkc]?sh|mksh)[ \\t]+(\")",
1827
+ "end": "((?:[^\\\\\"]|\\\\.)*+)(\")",
1828
+ "patterns": [
1829
+ {
1830
+ "match": "(?:[^\\\\\"]|\\\\.)+",
1831
+ "captures": {
1832
+ "0": {
1833
+ "patterns": [
1834
+ {
1835
+ "include": "source.shell"
1836
+ }
1837
+ ]
1838
+ }
1839
+ }
1840
+ }
1841
+ ],
1842
+ "beginCaptures": {
1843
+ "1": {
1844
+ "name": "storage.modifier.type.annotation.sy"
1845
+ },
1846
+ "2": {
1847
+ "name": "punctuation.definition.string.begin.sy"
1848
+ }
1849
+ },
1850
+ "endCaptures": {
1851
+ "1": {
1852
+ "name": "source.embedded.shell",
1853
+ "patterns": [
1854
+ {
1855
+ "include": "source.shell"
1856
+ }
1857
+ ]
1858
+ },
1859
+ "2": {
1860
+ "name": "punctuation.definition.string.end.sy"
1861
+ }
1862
+ }
1863
+ },
1864
+ {
1865
+ "name": "string.quoted.double.annotated.${1:/downcase}.sy",
1866
+ "contentName": "source.embedded.powershell",
1867
+ "begin": "(?i)(powershell|pw?sh|ps1)[ \\t]+(\")",
1868
+ "end": "((?:[^\\\\\"]|\\\\.)*+)(\")",
1869
+ "patterns": [
1870
+ {
1871
+ "match": "(?:[^\\\\\"]|\\\\.)+",
1872
+ "captures": {
1873
+ "0": {
1874
+ "patterns": [
1875
+ {
1876
+ "include": "source.powershell"
1877
+ }
1878
+ ]
1879
+ }
1880
+ }
1881
+ }
1882
+ ],
1883
+ "beginCaptures": {
1884
+ "1": {
1885
+ "name": "storage.modifier.type.annotation.sy"
1886
+ },
1887
+ "2": {
1888
+ "name": "punctuation.definition.string.begin.sy"
1889
+ }
1890
+ },
1891
+ "endCaptures": {
1892
+ "1": {
1893
+ "name": "source.embedded.powershell",
1894
+ "patterns": [
1895
+ {
1896
+ "include": "source.powershell"
1897
+ }
1898
+ ]
1899
+ },
1900
+ "2": {
1901
+ "name": "punctuation.definition.string.end.sy"
1902
+ }
1903
+ }
1904
+ },
1905
+ {
1906
+ "name": "string.quoted.double.annotated.${1:/downcase}.sy",
1907
+ "contentName": "source.embedded.batchfile",
1908
+ "begin": "(?i)(bat|batch(?:-?(?:script|file))?)[ \\t]+(\")",
1909
+ "end": "((?:[^\\\\\"]|\\\\.)*+)(\")",
1910
+ "patterns": [
1911
+ {
1912
+ "match": "(?:[^\\\\\"]|\\\\.)+",
1913
+ "captures": {
1914
+ "0": {
1915
+ "patterns": [
1916
+ {
1917
+ "include": "source.batchfile"
1918
+ }
1919
+ ]
1920
+ }
1921
+ }
1922
+ }
1923
+ ],
1924
+ "beginCaptures": {
1925
+ "1": {
1926
+ "name": "storage.modifier.type.annotation.sy"
1927
+ },
1928
+ "2": {
1929
+ "name": "punctuation.definition.string.begin.sy"
1930
+ }
1931
+ },
1932
+ "endCaptures": {
1933
+ "1": {
1934
+ "name": "source.embedded.batchfile",
1935
+ "patterns": [
1936
+ {
1937
+ "include": "source.batchfile"
1938
+ }
1939
+ ]
1940
+ },
1941
+ "2": {
1942
+ "name": "punctuation.definition.string.end.sy"
1943
+ }
1944
+ }
1945
+ },
1946
+ {
1947
+ "name": "string.quoted.double.annotated.${1:/downcase}.sy",
1948
+ "contentName": "source.embedded.${1:/downcase}",
1949
+ "begin": "([-\\w]+)[ \\t]+(\")",
1950
+ "end": "\"",
1951
+ "beginCaptures": {
1952
+ "1": {
1953
+ "name": "storage.modifier.type.annotation.sy"
1954
+ },
1955
+ "2": {
1956
+ "name": "punctuation.definition.string.begin.sy"
1957
+ }
1958
+ },
1959
+ "endCaptures": {
1960
+ "0": {
1961
+ "name": "punctuation.definition.string.end.sy"
1962
+ }
1963
+ }
1964
+ },
1965
+ {
1966
+ "name": "string.quoted.double.sy",
1967
+ "begin": "\"",
1968
+ "end": "\"",
1969
+ "patterns": [
1970
+ {
1971
+ "include": "#stringInnards"
1972
+ }
1973
+ ],
1974
+ "beginCaptures": {
1975
+ "0": {
1976
+ "name": "punctuation.definition.string.begin.sy"
1977
+ }
1978
+ },
1979
+ "endCaptures": {
1980
+ "0": {
1981
+ "name": "punctuation.definition.string.end.sy"
1982
+ }
1983
+ }
1984
+ }
1985
+ ]
1986
+ },
1987
+ "stringInnards": {
1988
+ "patterns": [
1989
+ {
1990
+ "include": "#url"
1991
+ },
1992
+ {
1993
+ "include": "#escape"
1994
+ }
1995
+ ]
1996
+ },
1997
+ "stringJunk": {
1998
+ "name": "invalid.illegal.syntax.sy",
784
1999
  "begin": "(?\u003c=[\"'`])(?!\\s*$)(?=\\s*[^:,}\\]])",
785
2000
  "end": "(?=[:,}\\]])"
786
2001
  },
2002
+ "stringSingle": {
2003
+ "patterns": [
2004
+ {
2005
+ "name": "string.quoted.single.annotated.${1:/downcase}.sy",
2006
+ "contentName": "text.embedded.html.basic",
2007
+ "begin": "(?i)(X?HTML)[ \\t]+(')",
2008
+ "end": "((?:[^\\\\']|\\\\.)*+)(')",
2009
+ "patterns": [
2010
+ {
2011
+ "match": "(?:[^\\\\']|\\\\.)+",
2012
+ "captures": {
2013
+ "0": {
2014
+ "patterns": [
2015
+ {
2016
+ "include": "text.html.basic"
2017
+ }
2018
+ ]
2019
+ }
2020
+ }
2021
+ }
2022
+ ],
2023
+ "beginCaptures": {
2024
+ "1": {
2025
+ "name": "storage.modifier.type.annotation.sy"
2026
+ },
2027
+ "2": {
2028
+ "name": "punctuation.definition.string.begin.sy"
2029
+ }
2030
+ },
2031
+ "endCaptures": {
2032
+ "1": {
2033
+ "name": "text.embedded.html.basic",
2034
+ "patterns": [
2035
+ {
2036
+ "include": "text.html.basic"
2037
+ }
2038
+ ]
2039
+ },
2040
+ "2": {
2041
+ "name": "punctuation.definition.string.end.sy"
2042
+ }
2043
+ }
2044
+ },
2045
+ {
2046
+ "name": "string.quoted.single.annotated.${1:/downcase}.sy",
2047
+ "contentName": "source.embedded.css",
2048
+ "begin": "(?i)(CSS)[ \\t]+(')",
2049
+ "end": "((?:[^\\\\']|\\\\.)*+)(')",
2050
+ "patterns": [
2051
+ {
2052
+ "match": "(?:[^\\\\']|\\\\.)+",
2053
+ "captures": {
2054
+ "0": {
2055
+ "patterns": [
2056
+ {
2057
+ "include": "source.css"
2058
+ }
2059
+ ]
2060
+ }
2061
+ }
2062
+ }
2063
+ ],
2064
+ "beginCaptures": {
2065
+ "1": {
2066
+ "name": "storage.modifier.type.annotation.sy"
2067
+ },
2068
+ "2": {
2069
+ "name": "punctuation.definition.string.begin.sy"
2070
+ }
2071
+ },
2072
+ "endCaptures": {
2073
+ "1": {
2074
+ "name": "source.embedded.css",
2075
+ "patterns": [
2076
+ {
2077
+ "include": "source.css"
2078
+ }
2079
+ ]
2080
+ },
2081
+ "2": {
2082
+ "name": "punctuation.definition.string.end.sy"
2083
+ }
2084
+ }
2085
+ },
2086
+ {
2087
+ "name": "string.quoted.single.annotated.${1:/downcase}.sy",
2088
+ "contentName": "source.embedded.js",
2089
+ "begin": "(?i)(JS|JavaScript)[ \\t]+(')",
2090
+ "end": "((?:[^\\\\']|\\\\.)*+)(')",
2091
+ "patterns": [
2092
+ {
2093
+ "match": "(?:[^\\\\']|\\\\.)+",
2094
+ "captures": {
2095
+ "0": {
2096
+ "patterns": [
2097
+ {
2098
+ "include": "source.js"
2099
+ }
2100
+ ]
2101
+ }
2102
+ }
2103
+ }
2104
+ ],
2105
+ "beginCaptures": {
2106
+ "1": {
2107
+ "name": "storage.modifier.type.annotation.sy"
2108
+ },
2109
+ "2": {
2110
+ "name": "punctuation.definition.string.begin.sy"
2111
+ }
2112
+ },
2113
+ "endCaptures": {
2114
+ "1": {
2115
+ "name": "source.embedded.js",
2116
+ "patterns": [
2117
+ {
2118
+ "include": "source.js"
2119
+ }
2120
+ ]
2121
+ },
2122
+ "2": {
2123
+ "name": "punctuation.definition.string.end.sy"
2124
+ }
2125
+ }
2126
+ },
2127
+ {
2128
+ "name": "string.quoted.single.annotated.${1:/downcase}.sy",
2129
+ "contentName": "source.embedded.gfm",
2130
+ "begin": "(?i)(MD|Markdown|GFM)[ \\t]+(')",
2131
+ "end": "((?:[^\\\\']|\\\\.)*+)(')",
2132
+ "patterns": [
2133
+ {
2134
+ "match": "(?:[^\\\\']|\\\\.)+",
2135
+ "captures": {
2136
+ "0": {
2137
+ "patterns": [
2138
+ {
2139
+ "include": "source.gfm"
2140
+ }
2141
+ ]
2142
+ }
2143
+ }
2144
+ }
2145
+ ],
2146
+ "beginCaptures": {
2147
+ "1": {
2148
+ "name": "storage.modifier.type.annotation.sy"
2149
+ },
2150
+ "2": {
2151
+ "name": "punctuation.definition.string.begin.sy"
2152
+ }
2153
+ },
2154
+ "endCaptures": {
2155
+ "1": {
2156
+ "name": "source.embedded.gfm",
2157
+ "patterns": [
2158
+ {
2159
+ "include": "source.gfm"
2160
+ }
2161
+ ]
2162
+ },
2163
+ "2": {
2164
+ "name": "punctuation.definition.string.end.sy"
2165
+ }
2166
+ }
2167
+ },
2168
+ {
2169
+ "name": "string.quoted.single.annotated.${1:/downcase}.sy",
2170
+ "contentName": "source.embedded.shell",
2171
+ "begin": "(?i)(bash|shell(?:-script)?|[zkc]?sh|mksh)[ \\t]+(')",
2172
+ "end": "((?:[^\\\\']|\\\\.)*+)(')",
2173
+ "patterns": [
2174
+ {
2175
+ "match": "(?:[^\\\\']|\\\\.)+",
2176
+ "captures": {
2177
+ "0": {
2178
+ "patterns": [
2179
+ {
2180
+ "include": "source.shell"
2181
+ }
2182
+ ]
2183
+ }
2184
+ }
2185
+ }
2186
+ ],
2187
+ "beginCaptures": {
2188
+ "1": {
2189
+ "name": "storage.modifier.type.annotation.sy"
2190
+ },
2191
+ "2": {
2192
+ "name": "punctuation.definition.string.begin.sy"
2193
+ }
2194
+ },
2195
+ "endCaptures": {
2196
+ "1": {
2197
+ "name": "source.embedded.shell",
2198
+ "patterns": [
2199
+ {
2200
+ "include": "source.shell"
2201
+ }
2202
+ ]
2203
+ },
2204
+ "2": {
2205
+ "name": "punctuation.definition.string.end.sy"
2206
+ }
2207
+ }
2208
+ },
2209
+ {
2210
+ "name": "string.quoted.single.annotated.${1:/downcase}.sy",
2211
+ "contentName": "source.embedded.powershell",
2212
+ "begin": "(?i)(powershell|pw?sh|ps1)[ \\t]+(')",
2213
+ "end": "((?:[^\\\\']|\\\\.)*+)(')",
2214
+ "patterns": [
2215
+ {
2216
+ "match": "(?:[^\\\\']|\\\\.)+",
2217
+ "captures": {
2218
+ "0": {
2219
+ "patterns": [
2220
+ {
2221
+ "include": "source.powershell"
2222
+ }
2223
+ ]
2224
+ }
2225
+ }
2226
+ }
2227
+ ],
2228
+ "beginCaptures": {
2229
+ "1": {
2230
+ "name": "storage.modifier.type.annotation.sy"
2231
+ },
2232
+ "2": {
2233
+ "name": "punctuation.definition.string.begin.sy"
2234
+ }
2235
+ },
2236
+ "endCaptures": {
2237
+ "1": {
2238
+ "name": "source.embedded.powershell",
2239
+ "patterns": [
2240
+ {
2241
+ "include": "source.powershell"
2242
+ }
2243
+ ]
2244
+ },
2245
+ "2": {
2246
+ "name": "punctuation.definition.string.end.sy"
2247
+ }
2248
+ }
2249
+ },
2250
+ {
2251
+ "name": "string.quoted.single.annotated.${1:/downcase}.sy",
2252
+ "contentName": "source.embedded.batchfile",
2253
+ "begin": "(?i)(bat|batch(?:-?(?:script|file))?)[ \\t]+(')",
2254
+ "end": "((?:[^\\\\']|\\\\.)*+)(')",
2255
+ "patterns": [
2256
+ {
2257
+ "match": "(?:[^\\\\']|\\\\.)+",
2258
+ "captures": {
2259
+ "0": {
2260
+ "patterns": [
2261
+ {
2262
+ "include": "source.batchfile"
2263
+ }
2264
+ ]
2265
+ }
2266
+ }
2267
+ }
2268
+ ],
2269
+ "beginCaptures": {
2270
+ "1": {
2271
+ "name": "storage.modifier.type.annotation.sy"
2272
+ },
2273
+ "2": {
2274
+ "name": "punctuation.definition.string.begin.sy"
2275
+ }
2276
+ },
2277
+ "endCaptures": {
2278
+ "1": {
2279
+ "name": "source.embedded.batchfile",
2280
+ "patterns": [
2281
+ {
2282
+ "include": "source.batchfile"
2283
+ }
2284
+ ]
2285
+ },
2286
+ "2": {
2287
+ "name": "punctuation.definition.string.end.sy"
2288
+ }
2289
+ }
2290
+ },
2291
+ {
2292
+ "name": "string.quoted.single.annotated.${1:/downcase}.sy",
2293
+ "contentName": "source.embedded.${1:/downcase}",
2294
+ "begin": "([-\\w]+)[ \\t]+(')",
2295
+ "end": "'",
2296
+ "beginCaptures": {
2297
+ "1": {
2298
+ "name": "storage.modifier.type.annotation.sy"
2299
+ },
2300
+ "2": {
2301
+ "name": "punctuation.definition.string.begin.sy"
2302
+ }
2303
+ },
2304
+ "endCaptures": {
2305
+ "0": {
2306
+ "name": "punctuation.definition.string.end.sy"
2307
+ }
2308
+ }
2309
+ },
2310
+ {
2311
+ "name": "string.quoted.single.sy",
2312
+ "begin": "'",
2313
+ "end": "'",
2314
+ "patterns": [
2315
+ {
2316
+ "include": "#stringInnards"
2317
+ }
2318
+ ],
2319
+ "beginCaptures": {
2320
+ "0": {
2321
+ "name": "punctuation.definition.string.begin.sy"
2322
+ }
2323
+ },
2324
+ "endCaptures": {
2325
+ "0": {
2326
+ "name": "punctuation.definition.string.end.sy"
2327
+ }
2328
+ }
2329
+ }
2330
+ ]
2331
+ },
2332
+ "stringVerbatim": {
2333
+ "patterns": [
2334
+ {
2335
+ "name": "string.quoted.verbatim.backtick.annotated.${1:/downcase}.sy",
2336
+ "contentName": "text.embedded.html.basic",
2337
+ "begin": "(?i)(X?HTML)[ \\t]+(`)",
2338
+ "end": "([^`]*)(`)(?!`)",
2339
+ "patterns": [
2340
+ {
2341
+ "include": "#escapeVerbatim"
2342
+ },
2343
+ {
2344
+ "match": "[^`]+",
2345
+ "captures": {
2346
+ "0": {
2347
+ "patterns": [
2348
+ {
2349
+ "include": "text.html.basic"
2350
+ }
2351
+ ]
2352
+ }
2353
+ }
2354
+ }
2355
+ ],
2356
+ "beginCaptures": {
2357
+ "1": {
2358
+ "name": "storage.modifier.type.annotation.sy"
2359
+ },
2360
+ "2": {
2361
+ "name": "punctuation.definition.string.begin.sy"
2362
+ }
2363
+ },
2364
+ "endCaptures": {
2365
+ "1": {
2366
+ "name": "text.embedded.html.basic",
2367
+ "patterns": [
2368
+ {
2369
+ "include": "text.html.basic"
2370
+ }
2371
+ ]
2372
+ },
2373
+ "2": {
2374
+ "name": "punctuation.definition.string.end.sy"
2375
+ }
2376
+ }
2377
+ },
2378
+ {
2379
+ "name": "string.quoted.verbatim.backtick.annotated.${1:/downcase}.sy",
2380
+ "contentName": "source.embedded.css",
2381
+ "begin": "(?i)(CSS)[ \\t]+(`)",
2382
+ "end": "([^`]*)(`)(?!`)",
2383
+ "patterns": [
2384
+ {
2385
+ "include": "#escapeVerbatim"
2386
+ },
2387
+ {
2388
+ "match": "[^`]+",
2389
+ "captures": {
2390
+ "0": {
2391
+ "patterns": [
2392
+ {
2393
+ "include": "source.css"
2394
+ }
2395
+ ]
2396
+ }
2397
+ }
2398
+ }
2399
+ ],
2400
+ "beginCaptures": {
2401
+ "1": {
2402
+ "name": "storage.modifier.type.annotation.sy"
2403
+ },
2404
+ "2": {
2405
+ "name": "punctuation.definition.string.begin.sy"
2406
+ }
2407
+ },
2408
+ "endCaptures": {
2409
+ "1": {
2410
+ "name": "source.embedded.css",
2411
+ "patterns": [
2412
+ {
2413
+ "include": "source.css"
2414
+ }
2415
+ ]
2416
+ },
2417
+ "2": {
2418
+ "name": "punctuation.definition.string.end.sy"
2419
+ }
2420
+ }
2421
+ },
2422
+ {
2423
+ "name": "string.quoted.verbatim.backtick.annotated.${1:/downcase}.sy",
2424
+ "contentName": "source.embedded.js",
2425
+ "begin": "(?i)(JS|JavaScript)[ \\t]+(`)",
2426
+ "end": "([^`]*)(`)(?!`)",
2427
+ "patterns": [
2428
+ {
2429
+ "include": "#escapeVerbatim"
2430
+ },
2431
+ {
2432
+ "match": "[^`]+",
2433
+ "captures": {
2434
+ "0": {
2435
+ "patterns": [
2436
+ {
2437
+ "include": "source.js"
2438
+ }
2439
+ ]
2440
+ }
2441
+ }
2442
+ }
2443
+ ],
2444
+ "beginCaptures": {
2445
+ "1": {
2446
+ "name": "storage.modifier.type.annotation.sy"
2447
+ },
2448
+ "2": {
2449
+ "name": "punctuation.definition.string.begin.sy"
2450
+ }
2451
+ },
2452
+ "endCaptures": {
2453
+ "1": {
2454
+ "name": "source.embedded.js",
2455
+ "patterns": [
2456
+ {
2457
+ "include": "source.js"
2458
+ }
2459
+ ]
2460
+ },
2461
+ "2": {
2462
+ "name": "punctuation.definition.string.end.sy"
2463
+ }
2464
+ }
2465
+ },
2466
+ {
2467
+ "name": "string.quoted.verbatim.backtick.annotated.${1:/downcase}.sy",
2468
+ "contentName": "source.embedded.gfm",
2469
+ "begin": "(?i)(MD|Markdown|GFM)[ \\t]+(`)",
2470
+ "end": "([^`]*)(`)(?!`)",
2471
+ "patterns": [
2472
+ {
2473
+ "include": "#escapeVerbatim"
2474
+ },
2475
+ {
2476
+ "match": "[^`]+",
2477
+ "captures": {
2478
+ "0": {
2479
+ "patterns": [
2480
+ {
2481
+ "include": "source.gfm"
2482
+ }
2483
+ ]
2484
+ }
2485
+ }
2486
+ }
2487
+ ],
2488
+ "beginCaptures": {
2489
+ "1": {
2490
+ "name": "storage.modifier.type.annotation.sy"
2491
+ },
2492
+ "2": {
2493
+ "name": "punctuation.definition.string.begin.sy"
2494
+ }
2495
+ },
2496
+ "endCaptures": {
2497
+ "1": {
2498
+ "name": "source.embedded.gfm",
2499
+ "patterns": [
2500
+ {
2501
+ "include": "source.gfm"
2502
+ }
2503
+ ]
2504
+ },
2505
+ "2": {
2506
+ "name": "punctuation.definition.string.end.sy"
2507
+ }
2508
+ }
2509
+ },
2510
+ {
2511
+ "name": "string.quoted.verbatim.backtick.annotated.${1:/downcase}.sy",
2512
+ "contentName": "source.embedded.shell",
2513
+ "begin": "(?i)(bash|shell(?:-script)?|[zkc]?sh|mksh)[ \\t]+(`)",
2514
+ "end": "([^`]*)(`)(?!`)",
2515
+ "patterns": [
2516
+ {
2517
+ "include": "#escapeVerbatim"
2518
+ },
2519
+ {
2520
+ "match": "[^`]+",
2521
+ "captures": {
2522
+ "0": {
2523
+ "patterns": [
2524
+ {
2525
+ "include": "source.shell"
2526
+ }
2527
+ ]
2528
+ }
2529
+ }
2530
+ }
2531
+ ],
2532
+ "beginCaptures": {
2533
+ "1": {
2534
+ "name": "storage.modifier.type.annotation.sy"
2535
+ },
2536
+ "2": {
2537
+ "name": "punctuation.definition.string.begin.sy"
2538
+ }
2539
+ },
2540
+ "endCaptures": {
2541
+ "1": {
2542
+ "name": "source.embedded.shell",
2543
+ "patterns": [
2544
+ {
2545
+ "include": "source.shell"
2546
+ }
2547
+ ]
2548
+ },
2549
+ "2": {
2550
+ "name": "punctuation.definition.string.end.sy"
2551
+ }
2552
+ }
2553
+ },
2554
+ {
2555
+ "name": "string.quoted.verbatim.backtick.annotated.${1:/downcase}.sy",
2556
+ "contentName": "source.embedded.powershell",
2557
+ "begin": "(?i)(powershell|pw?sh|ps1)[ \\t]+(`)",
2558
+ "end": "([^`]*)(`)(?!`)",
2559
+ "patterns": [
2560
+ {
2561
+ "include": "#escapeVerbatim"
2562
+ },
2563
+ {
2564
+ "match": "[^`]+",
2565
+ "captures": {
2566
+ "0": {
2567
+ "patterns": [
2568
+ {
2569
+ "include": "source.powershell"
2570
+ }
2571
+ ]
2572
+ }
2573
+ }
2574
+ }
2575
+ ],
2576
+ "beginCaptures": {
2577
+ "1": {
2578
+ "name": "storage.modifier.type.annotation.sy"
2579
+ },
2580
+ "2": {
2581
+ "name": "punctuation.definition.string.begin.sy"
2582
+ }
2583
+ },
2584
+ "endCaptures": {
2585
+ "1": {
2586
+ "name": "source.embedded.powershell",
2587
+ "patterns": [
2588
+ {
2589
+ "include": "source.powershell"
2590
+ }
2591
+ ]
2592
+ },
2593
+ "2": {
2594
+ "name": "punctuation.definition.string.end.sy"
2595
+ }
2596
+ }
2597
+ },
2598
+ {
2599
+ "name": "string.quoted.verbatim.backtick.annotated.${1:/downcase}.sy",
2600
+ "contentName": "source.embedded.batchfile",
2601
+ "begin": "(?i)(bat|batch(?:-?(?:script|file))?)[ \\t]+(`)",
2602
+ "end": "([^`]*)(`)(?!`)",
2603
+ "patterns": [
2604
+ {
2605
+ "include": "#escapeVerbatim"
2606
+ },
2607
+ {
2608
+ "match": "[^`]+",
2609
+ "captures": {
2610
+ "0": {
2611
+ "patterns": [
2612
+ {
2613
+ "include": "source.batchfile"
2614
+ }
2615
+ ]
2616
+ }
2617
+ }
2618
+ }
2619
+ ],
2620
+ "beginCaptures": {
2621
+ "1": {
2622
+ "name": "storage.modifier.type.annotation.sy"
2623
+ },
2624
+ "2": {
2625
+ "name": "punctuation.definition.string.begin.sy"
2626
+ }
2627
+ },
2628
+ "endCaptures": {
2629
+ "1": {
2630
+ "name": "source.embedded.batchfile",
2631
+ "patterns": [
2632
+ {
2633
+ "include": "source.batchfile"
2634
+ }
2635
+ ]
2636
+ },
2637
+ "2": {
2638
+ "name": "punctuation.definition.string.end.sy"
2639
+ }
2640
+ }
2641
+ },
2642
+ {
2643
+ "name": "string.quoted.verbatim.backtick.annotated.${1:/downcase}.sy",
2644
+ "contentName": "source.embedded.${1:/downcase}",
2645
+ "begin": "([-\\w]+)[ \\t]+(`)",
2646
+ "end": "`",
2647
+ "beginCaptures": {
2648
+ "1": {
2649
+ "name": "storage.modifier.type.annotation.sy"
2650
+ },
2651
+ "2": {
2652
+ "name": "punctuation.definition.string.begin.sy"
2653
+ }
2654
+ },
2655
+ "endCaptures": {
2656
+ "0": {
2657
+ "name": "punctuation.definition.string.end.sy"
2658
+ }
2659
+ }
2660
+ },
2661
+ {
2662
+ "name": "string.quoted.verbatim.backtick.sy",
2663
+ "begin": "`",
2664
+ "end": "`(?!`)",
2665
+ "patterns": [
2666
+ {
2667
+ "include": "#escapeVerbatim"
2668
+ }
2669
+ ],
2670
+ "beginCaptures": {
2671
+ "0": {
2672
+ "name": "punctuation.definition.string.begin.sy"
2673
+ }
2674
+ },
2675
+ "endCaptures": {
2676
+ "0": {
2677
+ "name": "punctuation.definition.string.end.sy"
2678
+ }
2679
+ }
2680
+ }
2681
+ ]
2682
+ },
787
2683
  "url": {
788
2684
  "patterns": [
789
2685
  {
@@ -796,5 +2692,14 @@
796
2692
  }
797
2693
  ]
798
2694
  }
2695
+ },
2696
+ "injections": {
2697
+ "source.sy string.quoted.double.heredoc.annotated, source.sy string.quoted.single.heredoc.annotated, source.sy string.quoted.double.annotated, source.sy string.quoted.single.annotated": {
2698
+ "patterns": [
2699
+ {
2700
+ "include": "#escape"
2701
+ }
2702
+ ]
2703
+ }
799
2704
  }
800
2705
  }