github-linguist 5.3.3 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. checksums.yaml +4 -4
  2. data/bin/git-linguist +5 -2
  3. data/ext/linguist/linguist.c +18 -7
  4. data/grammars/annotation.liquidhaskell.haskell.json +969 -862
  5. data/grammars/config.xcompose.json +22 -25
  6. data/grammars/file.lasso.json +296 -309
  7. data/grammars/hint.haskell.json +867 -766
  8. data/grammars/hint.message.haskell.json +867 -766
  9. data/grammars/hint.type.haskell.json +867 -766
  10. data/grammars/objdump.x86asm.json +20 -24
  11. data/grammars/source.Kotlin.json +220 -225
  12. data/grammars/source.LS.json +36 -55
  13. data/grammars/source.MCPOST.json +24 -38
  14. data/grammars/source.MOD.json +26 -41
  15. data/grammars/source.SASLog.json +9 -16
  16. data/grammars/source.abap.json +48 -56
  17. data/grammars/source.abl.json +8 -14
  18. data/grammars/source.abnf.json +88 -98
  19. data/grammars/source.actionscript.3.json +398 -429
  20. data/grammars/source.acucobol.json +5 -8
  21. data/grammars/source.ada.json +46 -53
  22. data/grammars/source.afm.json +548 -554
  23. data/grammars/source.agc.json +34 -37
  24. data/grammars/source.agda.json +79 -91
  25. data/grammars/source.ahk.json +62 -66
  26. data/grammars/source.alloy.json +16 -20
  27. data/grammars/source.ampl.json +41 -47
  28. data/grammars/source.angelscript.json +71 -80
  29. data/grammars/source.antlr.json +131 -136
  30. data/grammars/source.apache-config.json +93 -99
  31. data/grammars/source.apache-config.mod_perl.json +19 -24
  32. data/grammars/source.apl.json +1038 -1029
  33. data/grammars/source.applescript.json +501 -523
  34. data/grammars/source.apt.json +9 -16
  35. data/grammars/source.asn.json +27 -31
  36. data/grammars/source.asp.json +61 -67
  37. data/grammars/source.aspectj.json +385 -391
  38. data/grammars/source.assembly.json +49 -55
  39. data/grammars/source.ats.json +45 -121
  40. data/grammars/source.autoit.json +64 -69
  41. data/grammars/source.awk.json +172 -176
  42. data/grammars/source.ballerina.json +48 -395
  43. data/grammars/source.batchfile.json +269 -269
  44. data/grammars/source.befunge.json +17 -21
  45. data/grammars/source.bf.json +5 -11
  46. data/grammars/source.bison.json +10 -14
  47. data/grammars/source.blitzmax.json +300 -305
  48. data/grammars/source.boo.json +189 -193
  49. data/grammars/source.brightauthorproject.json +8 -13
  50. data/grammars/source.brightscript.json +37 -47
  51. data/grammars/source.bro.json +134 -140
  52. data/grammars/source.bsl.json +152 -193
  53. data/grammars/source.bsv.json +96 -102
  54. data/grammars/source.c++.json +176 -193
  55. data/grammars/source.c++.qt.json +13 -21
  56. data/grammars/source.c.ec.json +15 -21
  57. data/grammars/source.c.json +237 -251
  58. data/grammars/source.c.platform.json +153 -159
  59. data/grammars/source.c2hs.json +3 -6
  60. data/grammars/source.cabal.json +17 -20
  61. data/grammars/source.cache.cmake.json +18 -23
  62. data/grammars/source.cake.json +4 -7
  63. data/grammars/source.camlp4.ocaml.json +24 -27
  64. data/grammars/source.capnp.json +33 -38
  65. data/grammars/source.ceylon.json +44 -50
  66. data/grammars/source.cfscript.cfc.json +78 -86
  67. data/grammars/source.cfscript.json +513 -520
  68. data/grammars/source.changelogs.rpm-spec.json +8 -16
  69. data/grammars/source.chapel.json +109 -87
  70. data/grammars/source.cirru.json +25 -30
  71. data/grammars/source.clarion.json +41 -54
  72. data/grammars/source.clean.json +90 -95
  73. data/grammars/source.click.json +25 -28
  74. data/grammars/source.clips.json +10 -23
  75. data/grammars/source.clojure.json +151 -168
  76. data/grammars/source.cm.json +14 -19
  77. data/grammars/source.cmake.json +53 -61
  78. data/grammars/source.cobol.json +165 -180
  79. data/grammars/source.coffee.json +454 -462
  80. data/grammars/source.cool.json +36 -43
  81. data/grammars/source.coq.json +17 -21
  82. data/grammars/source.crystal.json +889 -983
  83. data/grammars/source.cs.json +739 -740
  84. data/grammars/source.csound-document.json +69 -73
  85. data/grammars/source.csound-score.json +52 -55
  86. data/grammars/source.csound.json +167 -171
  87. data/grammars/source.css.json +683 -688
  88. data/grammars/source.css.less.json +211 -511
  89. data/grammars/source.css.mss.json +94 -101
  90. data/grammars/source.css.postcss.sugarss.json +260 -0
  91. data/grammars/source.csx.json +4 -7
  92. data/grammars/source.cuda-c++.json +47 -81
  93. data/grammars/source.cwl.json +103 -0
  94. data/grammars/source.cython.json +536 -582
  95. data/grammars/source.d.json +243 -252
  96. data/grammars/source.dart.json +161 -166
  97. data/grammars/source.data-weave.json +901 -905
  98. data/grammars/source.desktop.json +29 -33
  99. data/grammars/source.diff.json +43 -52
  100. data/grammars/source.disasm.json +15 -16
  101. data/grammars/source.ditroff.desc.json +73 -84
  102. data/grammars/source.ditroff.json +60 -61
  103. data/grammars/source.dm.json +202 -213
  104. data/grammars/source.dmf.json +44 -47
  105. data/grammars/source.dockerfile.json +29 -34
  106. data/grammars/source.dot.json +46 -55
  107. data/grammars/source.dylan.json +63 -68
  108. data/grammars/source.ebnf.json +55 -62
  109. data/grammars/source.eiffel.json +57 -62
  110. data/grammars/source.elixir.json +321 -366
  111. data/grammars/source.emacs.lisp.json +458 -249
  112. data/grammars/source.erazor.json +49 -57
  113. data/grammars/source.erlang.json +508 -515
  114. data/grammars/source.essl.json +17 -30
  115. data/grammars/source.factor.json +85 -91
  116. data/grammars/source.fan.json +92 -96
  117. data/grammars/source.fancy.json +93 -118
  118. data/grammars/source.fish.json +74 -98
  119. data/grammars/source.fontforge.json +142 -146
  120. data/grammars/source.forth.json +42 -57
  121. data/grammars/source.fortran.json +193 -231
  122. data/grammars/source.fortran.modern.json +77 -103
  123. data/grammars/source.fsharp.fsi.json +1 -6
  124. data/grammars/source.fsharp.fsl.json +1 -6
  125. data/grammars/source.fsharp.fsx.json +1 -6
  126. data/grammars/source.fsharp.json +148 -153
  127. data/grammars/source.gap.json +60 -70
  128. data/grammars/source.gcode.json +9 -16
  129. data/grammars/source.gdb.json +63 -79
  130. data/grammars/source.gdb.session.json +27 -28
  131. data/grammars/source.gdbregs.json +7 -8
  132. data/grammars/source.gdscript.json +92 -96
  133. data/grammars/source.gerber.json +38 -56
  134. data/grammars/source.gfm.json +447 -462
  135. data/grammars/source.glsl.json +58 -83
  136. data/grammars/source.gn.json +188 -193
  137. data/grammars/source.gnuplot.json +104 -120
  138. data/grammars/source.go.json +169 -181
  139. data/grammars/source.golo.json +82 -87
  140. data/grammars/source.gosu.2.json +58 -68
  141. data/grammars/source.grace.json +266 -270
  142. data/grammars/source.graphql.json +586 -596
  143. data/grammars/source.groovy.gradle.json +18 -22
  144. data/grammars/source.groovy.json +422 -433
  145. data/grammars/source.harbour.json +129 -173
  146. data/grammars/source.haskell.json +871 -772
  147. data/grammars/source.haxe.2.json +402 -413
  148. data/grammars/source.hlsl.json +6 -16
  149. data/grammars/source.hsc2hs.json +1 -4
  150. data/grammars/source.hsig.json +871 -770
  151. data/grammars/source.hss.1.json +122 -144
  152. data/grammars/source.httpspec.json +119 -123
  153. data/grammars/source.hxml.json +8 -15
  154. data/grammars/source.ideal.json +125 -125
  155. data/grammars/source.idl-dlm.json +25 -32
  156. data/grammars/source.idl.json +59 -80
  157. data/grammars/source.idris.json +171 -185
  158. data/grammars/source.inform7.json +117 -121
  159. data/grammars/source.ini.json +37 -43
  160. data/grammars/source.io.json +65 -73
  161. data/grammars/source.ioke.json +72 -78
  162. data/grammars/source.isabelle.root.json +26 -30
  163. data/grammars/source.isabelle.theory.json +46 -50
  164. data/grammars/source.j.json +18 -21
  165. data/grammars/source.jasmin.json +45 -50
  166. data/grammars/source.java-properties.json +31 -41
  167. data/grammars/source.java.json +333 -342
  168. data/grammars/source.jcl.json +15 -18
  169. data/grammars/source.jflex.json +166 -172
  170. data/grammars/source.jison.json +331 -334
  171. data/grammars/source.jisonlex-injection.json +1 -2
  172. data/grammars/source.jisonlex.json +148 -151
  173. data/grammars/source.jolie.json +37 -43
  174. data/grammars/source.jq.json +80 -87
  175. data/grammars/source.js.json +798 -818
  176. data/grammars/source.js.jsx.json +2115 -2225
  177. data/grammars/source.js.objj.json +167 -172
  178. data/grammars/source.js.regexp.json +50 -50
  179. data/grammars/source.js.regexp.replacement.json +7 -7
  180. data/grammars/source.jsdoc.json +94 -94
  181. data/grammars/source.json.json +61 -71
  182. data/grammars/source.julia.console.json +5 -6
  183. data/grammars/source.julia.json +237 -234
  184. data/grammars/source.lean.json +55 -67
  185. data/grammars/source.lid.json +6 -10
  186. data/grammars/source.lilypond.json +181 -195
  187. data/grammars/source.lisp.json +40 -50
  188. data/grammars/source.litcoffee.json +169 -183
  189. data/grammars/source.livescript.json +207 -220
  190. data/grammars/source.llvm.json +28 -38
  191. data/grammars/source.logos.json +7 -14
  192. data/grammars/source.logtalk.json +136 -141
  193. data/grammars/source.loomscript.json +77 -83
  194. data/grammars/source.lsl.json +90 -106
  195. data/grammars/source.lua.json +100 -109
  196. data/grammars/source.makefile.json +181 -188
  197. data/grammars/source.makegen.json +3 -7
  198. data/grammars/source.mask.json +260 -265
  199. data/grammars/source.mata.json +38 -46
  200. data/grammars/source.mathematica.json +155 -167
  201. data/grammars/source.matlab.json +407 -684
  202. data/grammars/source.maxscript.json +293 -281
  203. data/grammars/source.mercury.json +179 -184
  204. data/grammars/source.meson.json +52 -58
  205. data/grammars/source.meta-info.json +64 -74
  206. data/grammars/source.ml.json +107 -113
  207. data/grammars/source.modelica.json +51 -59
  208. data/grammars/source.modula2.json +33 -42
  209. data/grammars/source.monkey.json +234 -241
  210. data/grammars/source.moonscript.json +51 -56
  211. data/grammars/source.mql5.json +74 -101
  212. data/grammars/source.mupad.json +30 -72
  213. data/grammars/source.ncl.json +1 -14
  214. data/grammars/source.ne.json +39 -42
  215. data/grammars/source.nemerle.json +58 -63
  216. data/grammars/source.nesc.json +9 -15
  217. data/grammars/source.netlinx.erb.json +13 -25
  218. data/grammars/source.netlinx.json +231 -292
  219. data/grammars/source.nextflow-groovy.json +1360 -0
  220. data/grammars/source.nextflow.json +74 -0
  221. data/grammars/source.nginx.json +274 -287
  222. data/grammars/source.nim.json +442 -483
  223. data/grammars/source.nim_filter.json +6 -26
  224. data/grammars/source.nimcfg.json +38 -51
  225. data/grammars/source.ninja.json +64 -70
  226. data/grammars/source.nit.json +60 -64
  227. data/grammars/source.nix.json +269 -273
  228. data/grammars/source.nmml.json +31 -37
  229. data/grammars/source.nsis.json +66 -72
  230. data/grammars/source.nu.json +129 -139
  231. data/grammars/source.nut.json +129 -133
  232. data/grammars/source.objc++.json +3 -10
  233. data/grammars/source.objc.json +303 -314
  234. data/grammars/source.objc.platform.json +145 -151
  235. data/grammars/source.ocaml.json +506 -514
  236. data/grammars/source.ocamllex.json +108 -115
  237. data/grammars/source.ocamlyacc.json +116 -123
  238. data/grammars/source.ooc.json +148 -155
  239. data/grammars/source.opa.json +39 -49
  240. data/grammars/source.opal.json +84 -89
  241. data/grammars/source.opalsysdefs.json +9 -13
  242. data/grammars/source.opencobol.json +22 -25
  243. data/grammars/source.opentype.json +148 -152
  244. data/grammars/source.ox.json +36 -44
  245. data/grammars/source.oz.json +31 -38
  246. data/grammars/source.p4.json +49 -59
  247. data/grammars/source.pan.json +273 -278
  248. data/grammars/source.papyrus.skyrim.json +705 -781
  249. data/grammars/source.parrot.pir.json +59 -65
  250. data/grammars/source.pascal.json +54 -61
  251. data/grammars/source.pawn.json +835 -849
  252. data/grammars/source.pcb.board.json +153 -158
  253. data/grammars/source.pcb.schematic.json +134 -138
  254. data/grammars/source.pcb.sexp.json +64 -74
  255. data/grammars/source.pep8.json +28 -32
  256. data/grammars/source.perl.6.json +83 -92
  257. data/grammars/source.perl.json +711 -737
  258. data/grammars/source.perl6fe.json +1204 -1218
  259. data/grammars/source.php.zephir.json +80 -89
  260. data/grammars/source.pic.json +137 -142
  261. data/grammars/source.pig_latin.json +76 -80
  262. data/grammars/source.pike.json +23 -36
  263. data/grammars/source.po.json +74 -84
  264. data/grammars/source.pogoscript.json +23 -29
  265. data/grammars/source.pony.json +98 -108
  266. data/grammars/source.postcss.json +370 -0
  267. data/grammars/source.postscript.json +88 -97
  268. data/grammars/source.pov-ray sdl.json +36 -42
  269. data/grammars/source.powershell.json +175 -197
  270. data/grammars/source.processing.json +236 -249
  271. data/grammars/source.prolog.eclipse.json +33 -38
  272. data/grammars/source.prolog.json +66 -72
  273. data/grammars/source.protobuf.json +88 -94
  274. data/grammars/source.puppet.json +144 -151
  275. data/grammars/source.purescript.json +268 -289
  276. data/grammars/source.pyjade.json +256 -281
  277. data/grammars/source.python.django.json +13 -18
  278. data/grammars/source.python.json +3319 -3367
  279. data/grammars/source.python.salt.json +3 -7
  280. data/grammars/source.qmake.json +83 -90
  281. data/grammars/source.qml.json +57 -78
  282. data/grammars/source.quoting.perl6fe.json +666 -669
  283. data/grammars/source.r.json +75 -84
  284. data/grammars/source.racket.json +17 -38
  285. data/grammars/source.rascal.json +77 -80
  286. data/grammars/source.reason.hover.type.json +1 -1
  287. data/grammars/source.reason.json +1025 -1080
  288. data/grammars/source.rebol.json +167 -177
  289. data/grammars/source.red.json +169 -177
  290. data/grammars/source.regexp.babel.json +74 -77
  291. data/grammars/source.regexp.extended.json +4 -5
  292. data/grammars/source.regexp.json +260 -264
  293. data/grammars/source.regexp.perl6fe.json +108 -111
  294. data/grammars/source.regexp.python.json +210 -215
  295. data/grammars/source.regexp.spin.json +63 -72
  296. data/grammars/source.renpy.json +617 -687
  297. data/grammars/source.rexx.json +25 -32
  298. data/grammars/source.ring.json +84 -114
  299. data/grammars/source.rpm-spec.json +392 -401
  300. data/grammars/source.ruby.gemfile.json +9 -12
  301. data/grammars/source.ruby.json +862 -952
  302. data/grammars/source.ruby.rspec.cucumber.steps.json +90 -103
  303. data/grammars/source.rust.json +223 -281
  304. data/grammars/source.sas.json +88 -105
  305. data/grammars/source.sass.json +100 -108
  306. data/grammars/source.sbt.json +16 -23
  307. data/grammars/source.scad.json +60 -67
  308. data/grammars/source.scala.json +215 -228
  309. data/grammars/source.scaml.json +120 -135
  310. data/grammars/source.scheme.json +119 -136
  311. data/grammars/source.scilab.json +40 -47
  312. data/grammars/source.scss.json +369 -403
  313. data/grammars/source.sdbl.json +14 -25
  314. data/grammars/source.shaderlab.json +24 -27
  315. data/grammars/source.shell.json +409 -440
  316. data/grammars/source.shen.json +75 -94
  317. data/grammars/source.smali.json +232 -293
  318. data/grammars/source.smalltalk.json +60 -75
  319. data/grammars/source.smt.json +67 -82
  320. data/grammars/source.solidity.json +35 -54
  321. data/grammars/source.sp.json +40 -45
  322. data/grammars/source.sparql.json +3 -8
  323. data/grammars/source.spin.json +277 -297
  324. data/grammars/source.sqf.json +34 -44
  325. data/grammars/source.sql.json +142 -156
  326. data/grammars/source.stan.json +201 -160
  327. data/grammars/source.stata.json +57 -68
  328. data/grammars/source.strings.json +26 -30
  329. data/grammars/source.stylus.json +558 -565
  330. data/grammars/source.supercollider.json +33 -40
  331. data/grammars/source.swift.json +999 -1077
  332. data/grammars/source.systemverilog.json +351 -365
  333. data/grammars/source.tcl.json +77 -94
  334. data/grammars/source.tea.json +61 -67
  335. data/grammars/source.terra.json +25 -32
  336. data/grammars/source.terraform.json +68 -88
  337. data/grammars/source.thrift.json +300 -306
  338. data/grammars/source.tl.json +112 -117
  339. data/grammars/source.tla.json +65 -69
  340. data/grammars/source.toc.json +21 -25
  341. data/grammars/source.toml.json +117 -122
  342. data/grammars/source.ts.json +2838 -2774
  343. data/grammars/source.tsx.json +180 -184
  344. data/grammars/source.turing.json +970 -974
  345. data/grammars/source.turtle.json +124 -140
  346. data/grammars/source.txl.json +23 -37
  347. data/grammars/source.ucfconstraints.json +16 -21
  348. data/grammars/source.ur.json +15 -27
  349. data/grammars/source.vala.json +221 -235
  350. data/grammars/source.varnish.vcl.json +117 -129
  351. data/grammars/source.vbnet.json +69 -106
  352. data/grammars/source.verilog.json +101 -107
  353. data/grammars/source.vhdl.json +437 -445
  354. data/grammars/source.viml.json +540 -550
  355. data/grammars/source.wavefront.mtl.json +274 -277
  356. data/grammars/source.wavefront.obj.json +781 -784
  357. data/grammars/source.wdl.json +66 -46
  358. data/grammars/source.webassembly.json +97 -102
  359. data/grammars/source.webidl.json +311 -326
  360. data/grammars/source.x10.json +28 -32
  361. data/grammars/source.x86asm.json +21 -26
  362. data/grammars/source.xc.json +164 -172
  363. data/grammars/source.xq.json +81 -92
  364. data/grammars/source.xtend.json +199 -208
  365. data/grammars/source.yaml-ext.json +118 -124
  366. data/grammars/source.yaml.json +155 -174
  367. data/grammars/source.yaml.salt.json +113 -116
  368. data/grammars/source.yang.json +10 -13
  369. data/grammars/source.yara.json +98 -0
  370. data/grammars/text.bibtex.json +95 -100
  371. data/grammars/text.cfml.basic.json +403 -404
  372. data/grammars/text.elixir.json +18 -23
  373. data/grammars/text.error-list.json +15 -16
  374. data/grammars/text.find-refs.json +487 -488
  375. data/grammars/text.gherkin.feature.json +45 -53
  376. data/grammars/text.haml.json +176 -189
  377. data/grammars/text.hamlc.json +82 -88
  378. data/grammars/text.html.abl.json +16 -21
  379. data/grammars/text.html.asciidoc.json +139 -153
  380. data/grammars/text.html.asdoc.json +145 -155
  381. data/grammars/text.html.asp.json +23 -28
  382. data/grammars/text.html.basic.json +323 -338
  383. data/grammars/text.html.cfm.json +316 -325
  384. data/grammars/text.html.creole.json +177 -189
  385. data/grammars/text.html.django.json +27 -33
  386. data/grammars/text.html.ecr.json +21 -25
  387. data/grammars/text.html.elixir.json +3 -9
  388. data/grammars/text.html.erb.json +81 -85
  389. data/grammars/text.html.erlang.yaws.json +24 -29
  390. data/grammars/text.html.factor.json +5 -11
  391. data/grammars/text.html.ftl.json +16 -25
  392. data/grammars/text.html.handlebars.json +579 -598
  393. data/grammars/text.html.javadoc.json +426 -0
  394. data/grammars/text.html.js.json +11 -17
  395. data/grammars/text.html.jsp.json +377 -384
  396. data/grammars/text.html.liquid.json +8 -18
  397. data/grammars/text.html.mako.json +257 -275
  398. data/grammars/text.html.markdown.source.gfm.apib.json +419 -427
  399. data/grammars/text.html.markdown.source.gfm.mson.json +405 -414
  400. data/grammars/text.html.mediawiki.json +318 -344
  401. data/grammars/text.html.php.blade.json +2134 -2140
  402. data/grammars/text.html.php.json +980 -1013
  403. data/grammars/text.html.slash.json +101 -107
  404. data/grammars/text.html.smarty.json +75 -83
  405. data/grammars/text.html.soy.json +250 -253
  406. data/grammars/text.html.ssp.json +18 -24
  407. data/grammars/text.html.tcl.json +17 -24
  408. data/grammars/text.html.twig.json +712 -718
  409. data/grammars/text.idl-idldoc.json +5 -9
  410. data/grammars/text.jade.json +213 -235
  411. data/grammars/text.junit-test-report.json +25 -28
  412. data/grammars/text.log.latex.json +44 -46
  413. data/grammars/text.marko.json +370 -401
  414. data/grammars/text.python.console.json +3 -7
  415. data/grammars/text.python.traceback.json +2 -5
  416. data/grammars/text.rdoc.json +15 -19
  417. data/grammars/text.restructuredtext.clean.json +8 -11
  418. data/grammars/text.restructuredtext.json +886 -873
  419. data/grammars/text.robot.json +26 -36
  420. data/grammars/text.roff.json +2852 -2915
  421. data/grammars/text.runoff.json +56 -69
  422. data/grammars/text.sfd.json +151 -155
  423. data/grammars/text.shell-session.json +5 -8
  424. data/grammars/text.slim.json +184 -210
  425. data/grammars/text.srt.json +54 -57
  426. data/grammars/text.tex.json +98 -105
  427. data/grammars/text.tex.latex.beamer.json +14 -20
  428. data/grammars/text.tex.latex.haskell.json +883 -782
  429. data/grammars/text.tex.latex.json +281 -291
  430. data/grammars/text.tex.latex.memoir.json +39 -46
  431. data/grammars/text.tex.latex.rd.json +32 -38
  432. data/grammars/text.xml.ant.json +62 -69
  433. data/grammars/text.xml.flex-config.json +1009 -1013
  434. data/grammars/text.xml.genshi.json +10 -16
  435. data/grammars/text.xml.json +117 -130
  436. data/grammars/text.xml.pom.json +235 -240
  437. data/grammars/text.xml.xsl.json +31 -37
  438. data/grammars/text.zone_file.json +24 -29
  439. data/lib/linguist/blob.rb +10 -1
  440. data/lib/linguist/blob_helper.rb +4 -1
  441. data/lib/linguist/file_blob.rb +5 -0
  442. data/lib/linguist/generated.rb +16 -0
  443. data/lib/linguist/heuristics.rb +23 -11
  444. data/lib/linguist/language.rb +3 -6
  445. data/lib/linguist/languages.json +1 -1
  446. data/lib/linguist/languages.yml +74 -12
  447. data/lib/linguist/lazy_blob.rb +15 -1
  448. data/lib/linguist/linguist.bundle +0 -0
  449. data/lib/linguist/samples.json +1666 -3381
  450. data/lib/linguist/shebang.rb +2 -0
  451. data/lib/linguist/strategy/modeline.rb +2 -0
  452. data/lib/linguist/vendor.yml +5 -6
  453. data/lib/linguist/version.rb +1 -1
  454. metadata +12 -11
  455. data/grammars/source.elm.json +0 -381
  456. data/grammars/source.nant-build.json +0 -86
  457. data/grammars/source.octave.json +0 -451
  458. data/grammars/text.html.mediawiki.elm-build-output.json +0 -111
  459. data/grammars/text.html.mediawiki.elm-documentation.json +0 -22
  460. data/grammars/text.html.vue.json +0 -936
@@ -1,12 +1,6 @@
1
1
  {
2
2
  "name": "1C (Query)",
3
3
  "scopeName": "source.sdbl",
4
- "fileTypes": [
5
- "sdbl",
6
- "query"
7
- ],
8
- "firstLineMatch": "(?i)Выбрать|Select(\\s+Разрешенные|\\s+Allowed)?(\\s+Различные|\\s+Distinct)?(\\s+Первые|\\s+Top)?.*",
9
- "uuid": "d94265d3-2270-4ff2-ba36-649fbb4160df",
10
4
  "patterns": [
11
5
  {
12
6
  "name": "comment.line.double-slash.sdbl",
@@ -34,23 +28,23 @@
34
28
  },
35
29
  {
36
30
  "name": "constant.language.sdbl",
37
- "match": "(?i)(?<=[^\\wа-яё\\.]|^)(Неопределено|Undefined|Истина|True|Ложь|False|NULL)(?=[^\\wа-яё\\.]|$)"
31
+ "match": "(?i)(?\u003c=[^\\wа-яё\\.]|^)(Неопределено|Undefined|Истина|True|Ложь|False|NULL)(?=[^\\wа-яё\\.]|$)"
38
32
  },
39
33
  {
40
34
  "name": "constant.numeric.sdbl",
41
- "match": "(?<=[^\\wа-яё\\.]|^)(\\d+\\.?\\d*)(?=[^\\wа-яё\\.]|$)"
35
+ "match": "(?\u003c=[^\\wа-яё\\.]|^)(\\d+\\.?\\d*)(?=[^\\wа-яё\\.]|$)"
42
36
  },
43
37
  {
44
38
  "name": "keyword.control.conditional.sdbl",
45
- "match": "(?i)(?<=[^\\wа-яё\\.]|^)(Выбор|Case|Когда|When|Тогда|Then|Иначе|Else|Конец|End)(?=[^\\wа-яё\\.]|$)"
39
+ "match": "(?i)(?\u003c=[^\\wа-яё\\.]|^)(Выбор|Case|Когда|When|Тогда|Then|Иначе|Else|Конец|End)(?=[^\\wа-яё\\.]|$)"
46
40
  },
47
41
  {
48
42
  "name": "keyword.operator.logical.sdbl",
49
- "match": "(?i)(?<!КАК\\s|AS\\s)(?<=[^\\wа-яё\\.]|^)(НЕ|NOT|И|AND|ИЛИ|OR|В\\s+ИЕРАРХИИ|IN\\s+HIERARCHY|В|In|Между|Between|Есть(\\s+НЕ)?\\s+NULL|Is(\\s+NOT)?\\s+NULL|Ссылка|Refs|Подобно|Like)(?=[^\\wа-яё\\.]|$)"
43
+ "match": "(?i)(?\u003c!КАК\\s|AS\\s)(?\u003c=[^\\wа-яё\\.]|^)(НЕ|NOT|И|AND|ИЛИ|OR|В\\s+ИЕРАРХИИ|IN\\s+HIERARCHY|В|In|Между|Between|Есть(\\s+НЕ)?\\s+NULL|Is(\\s+NOT)?\\s+NULL|Ссылка|Refs|Подобно|Like)(?=[^\\wа-яё\\.]|$)"
50
44
  },
51
45
  {
52
46
  "name": "keyword.operator.comparison.sdbl",
53
- "match": "<=|>=|=|<|>"
47
+ "match": "\u003c=|\u003e=|=|\u003c|\u003e"
54
48
  },
55
49
  {
56
50
  "name": "keyword.operator.arithmetic.sdbl",
@@ -62,40 +56,35 @@
62
56
  },
63
57
  {
64
58
  "name": "keyword.control.sdbl",
65
- "match": "(?i)(?<=[^\\wа-яё\\.]|^)(Выбрать|Select|Разрешенные|Allowed|Различные|Distinct|Первые|Top|Как|As|ПустаяТаблица|EpmtyTable|Поместить|Into|Уничтожить|Drop|Из|From|((Левое|Left|Правое|Right|Полное|Full)\\s+(Внешнее\\s+|Outer\\s+)?Соединение|Join)|((Внутреннее|Inner)\\s+Соединение|Join)|Где|Where|(Сгруппировать\\s+По)|(Group\\s+By)|Имеющие|Having|Объединить(\\s+Все)?|Union(\\s+All)?|(Упорядочить\\s+По)|(Order\\s+By)|Автоупорядочивание|Autoorder|Итоги|Totals|По(\\s+Общие)?|By(\\s+Overall)?|(Только\\s+)?Иерархия|(Only\\s+)?Hierarchy|Периодами|Periods|Индексировать|Index|Выразить|Cast|Возр|Asc|Убыв|Desc|Для\\s+Изменения|(For\\s+Update(\\s+Of)?)|Спецсимвол|Escape)(?=[^\\wа-яё\\.]|$)"
59
+ "match": "(?i)(?\u003c=[^\\wа-яё\\.]|^)(Выбрать|Select|Разрешенные|Allowed|Различные|Distinct|Первые|Top|Как|As|ПустаяТаблица|EpmtyTable|Поместить|Into|Уничтожить|Drop|Из|From|((Левое|Left|Правое|Right|Полное|Full)\\s+(Внешнее\\s+|Outer\\s+)?Соединение|Join)|((Внутреннее|Inner)\\s+Соединение|Join)|Где|Where|(Сгруппировать\\s+По)|(Group\\s+By)|Имеющие|Having|Объединить(\\s+Все)?|Union(\\s+All)?|(Упорядочить\\s+По)|(Order\\s+By)|Автоупорядочивание|Autoorder|Итоги|Totals|По(\\s+Общие)?|By(\\s+Overall)?|(Только\\s+)?Иерархия|(Only\\s+)?Hierarchy|Периодами|Periods|Индексировать|Index|Выразить|Cast|Возр|Asc|Убыв|Desc|Для\\s+Изменения|(For\\s+Update(\\s+Of)?)|Спецсимвол|Escape)(?=[^\\wа-яё\\.]|$)"
66
60
  },
67
61
  {
68
- "comment": "Функции языка запросов",
69
62
  "name": "support.function.sdbl",
70
- "match": "(?i)(?<=[^\\wа-яё\\.]|^)(Значение|Value|ДатаВремя|DateTime|Тип|Type)(?=\\()"
63
+ "match": "(?i)(?\u003c=[^\\wа-яё\\.]|^)(Значение|Value|ДатаВремя|DateTime|Тип|Type)(?=\\()"
71
64
  },
72
65
  {
73
- "comment": "Функции работы со строками",
74
66
  "name": "support.function.sdbl",
75
- "match": "(?i)(?<=[^\\wа-яё\\.]|^)(Подстрока|Substring)(?=\\()"
67
+ "match": "(?i)(?\u003c=[^\\wа-яё\\.]|^)(Подстрока|Substring)(?=\\()"
76
68
  },
77
69
  {
78
- "comment": "Функции работы с датами",
79
70
  "name": "support.function.sdbl",
80
- "match": "(?i)(?<=[^\\wа-яё\\.]|^)(Год|Year|Квартал|Quarter|Месяц|Month|ДеньГода|DayOfYear|День|Day|Неделя|Week|ДеньНедели|Weekday|Час|Hour|Минута|Minute|Секунда|Second|НачалоПериода|BeginOfPeriod|КонецПериода|EndOfPeriod|ДобавитьКДате|DateAdd|РазностьДат|DateDiff)(?=\\()"
71
+ "match": "(?i)(?\u003c=[^\\wа-яё\\.]|^)(Год|Year|Квартал|Quarter|Месяц|Month|ДеньГода|DayOfYear|День|Day|Неделя|Week|ДеньНедели|Weekday|Час|Hour|Минута|Minute|Секунда|Second|НачалоПериода|BeginOfPeriod|КонецПериода|EndOfPeriod|ДобавитьКДате|DateAdd|РазностьДат|DateDiff)(?=\\()"
81
72
  },
82
73
  {
83
- "comment": "Агрегатные функции",
84
74
  "name": "support.function.sdbl",
85
- "match": "(?i)(?<=[^\\wа-яё\\.]|^)(Сумма|Sum|Среднее|Avg|Минимум|Min|Максимум|Max|Количество|Count)(?=\\()"
75
+ "match": "(?i)(?\u003c=[^\\wа-яё\\.]|^)(Сумма|Sum|Среднее|Avg|Минимум|Min|Максимум|Max|Количество|Count)(?=\\()"
86
76
  },
87
77
  {
88
- "comment": "Прочие функции",
89
78
  "name": "support.function.sdbl",
90
- "match": "(?i)(?<=[^\\wа-яё\\.]|^)(ЕстьNULL|IsNULL|Представление|Presentation|ПредставлениеСсылки|RefPresentation|ТипЗначения|ValueType)(?=\\()"
79
+ "match": "(?i)(?\u003c=[^\\wа-яё\\.]|^)(ЕстьNULL|IsNULL|Представление|Presentation|ПредставлениеСсылки|RefPresentation|ТипЗначения|ValueType)(?=\\()"
91
80
  },
92
81
  {
93
82
  "name": "support.type.sdbl",
94
- "match": "(?i)(?<=[^\\wа-яё\\.])(Число|Number|Строка|String|Дата|Date)(?=[^\\wа-яё\\.]|$)"
83
+ "match": "(?i)(?\u003c=[^\\wа-яё\\.])(Число|Number|Строка|String|Дата|Date)(?=[^\\wа-яё\\.]|$)"
95
84
  },
96
85
  {
97
86
  "name": "variable.parameter.sdbl",
98
- "match": "(&[\\wа-яё]+)"
87
+ "match": "(\u0026[\\wа-яё]+)"
99
88
  }
100
89
  ]
101
- }
90
+ }
@@ -1,9 +1,6 @@
1
1
  {
2
- "scopeName": "source.shaderlab",
3
2
  "name": "ShaderLab",
4
- "fileTypes": [
5
- "shader"
6
- ],
3
+ "scopeName": "source.shaderlab",
7
4
  "patterns": [
8
5
  {
9
6
  "name": "comment.line.double-slash.shaderlab",
@@ -82,42 +79,42 @@
82
79
  {
83
80
  "name": "meta.cgblock",
84
81
  "begin": "\\b(CGPROGRAM|CGINCLUDE)\\b",
82
+ "end": "\\b(ENDCG)\\b",
83
+ "patterns": [
84
+ {
85
+ "include": "#hlsl-embedded"
86
+ }
87
+ ],
85
88
  "beginCaptures": {
86
89
  "1": {
87
90
  "name": "keyword.other"
88
91
  }
89
92
  },
90
- "end": "\\b(ENDCG)\\b",
91
93
  "endCaptures": {
92
94
  "1": {
93
95
  "name": "keyword.other"
94
96
  }
95
- },
96
- "patterns": [
97
- {
98
- "include": "#hlsl-embedded"
99
- }
100
- ]
97
+ }
101
98
  },
102
99
  {
103
100
  "name": "meta.hlslblock",
104
101
  "begin": "\\b(HLSLPROGRAM|HLSLINCLUDE)\\b",
102
+ "end": "\\b(ENDHLSL)\\b",
103
+ "patterns": [
104
+ {
105
+ "include": "#hlsl-embedded"
106
+ }
107
+ ],
105
108
  "beginCaptures": {
106
109
  "1": {
107
110
  "name": "keyword.other"
108
111
  }
109
112
  },
110
- "end": "\\b(ENDHLSL)\\b",
111
113
  "endCaptures": {
112
114
  "1": {
113
115
  "name": "keyword.other"
114
116
  }
115
- },
116
- "patterns": [
117
- {
118
- "include": "#hlsl-embedded"
119
- }
120
- ]
117
+ }
121
118
  },
122
119
  {
123
120
  "name": "string.quoted.double.shaderlab",
@@ -126,14 +123,6 @@
126
123
  }
127
124
  ],
128
125
  "repository": {
129
- "numbers": {
130
- "patterns": [
131
- {
132
- "name": "constant.numeric.shaderlab",
133
- "match": "\\b([0-9]+\\.?[0-9]*)\\b"
134
- }
135
- ]
136
- },
137
126
  "hlsl-embedded": {
138
127
  "patterns": [
139
128
  {
@@ -196,6 +185,14 @@
196
185
  "match": "\\b(SurfaceOutputStandardSpecular|SurfaceOutputStandard|SurfaceOutput|Input)\\b"
197
186
  }
198
187
  ]
188
+ },
189
+ "numbers": {
190
+ "patterns": [
191
+ {
192
+ "name": "constant.numeric.shaderlab",
193
+ "match": "\\b([0-9]+\\.?[0-9]*)\\b"
194
+ }
195
+ ]
199
196
  }
200
197
  }
201
- }
198
+ }
@@ -1,32 +1,6 @@
1
1
  {
2
- "scopeName": "source.shell",
3
2
  "name": "Shell Script",
4
- "fileTypes": [
5
- "sh",
6
- "bash",
7
- "ksh",
8
- "zsh",
9
- "zsh-theme",
10
- "zshenv",
11
- "zlogin",
12
- "zlogout",
13
- "zprofile",
14
- "zshrc",
15
- "bashrc",
16
- "bash_aliases",
17
- "bash_profile",
18
- "bash_login",
19
- "profile",
20
- "bash_logout",
21
- ".textmate_init",
22
- "npmrc",
23
- "PKGBUILD",
24
- "install",
25
- "cygport",
26
- "bats",
27
- "ebuild"
28
- ],
29
- "firstLineMatch": "(?x)\n# Hashbang\n^\\#!.*(?:\\s|\\/)\n (?:bash|zsh|sh|tcsh|ksh|dash|ash|csh|rc)\n(?:$|\\s)\n|\n# Modeline\n(?i:\n # Emacs\n -\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*)\n (?:shell-script|sh)\n (?=[\\s;]|(?<![-*])-\\*-).*?-\\*-\n |\n # Vim\n (?:(?:\\s|^)vi(?:m[<=>]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s* set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*=\n sh\n (?=\\s|:|$)\n)",
3
+ "scopeName": "source.shell",
30
4
  "patterns": [
31
5
  {
32
6
  "include": "#comment"
@@ -78,33 +52,18 @@
78
52
  "case-clause": {
79
53
  "patterns": [
80
54
  {
55
+ "name": "meta.scope.case-clause.shell",
81
56
  "begin": "(?=\\S)",
82
57
  "end": ";;",
83
- "endCaptures": {
84
- "0": {
85
- "name": "punctuation.terminator.case-clause.shell"
86
- }
87
- },
88
- "name": "meta.scope.case-clause.shell",
89
58
  "patterns": [
90
59
  {
60
+ "name": "meta.scope.case-pattern.shell",
91
61
  "begin": "\\(|(?=\\S)",
92
- "beginCaptures": {
93
- "0": {
94
- "name": "punctuation.definition.case-pattern.shell"
95
- }
96
- },
97
62
  "end": "\\)",
98
- "endCaptures": {
99
- "0": {
100
- "name": "punctuation.definition.case-pattern.shell"
101
- }
102
- },
103
- "name": "meta.scope.case-pattern.shell",
104
63
  "patterns": [
105
64
  {
106
- "match": "\\|",
107
- "name": "punctuation.separator.pipe-sign.shell"
65
+ "name": "punctuation.separator.pipe-sign.shell",
66
+ "match": "\\|"
108
67
  },
109
68
  {
110
69
  "include": "#string"
@@ -118,144 +77,166 @@
118
77
  {
119
78
  "include": "#pathname"
120
79
  }
121
- ]
80
+ ],
81
+ "beginCaptures": {
82
+ "0": {
83
+ "name": "punctuation.definition.case-pattern.shell"
84
+ }
85
+ },
86
+ "endCaptures": {
87
+ "0": {
88
+ "name": "punctuation.definition.case-pattern.shell"
89
+ }
90
+ }
122
91
  },
123
92
  {
124
- "begin": "(?<=\\))",
125
- "end": "(?=;;)",
126
93
  "name": "meta.scope.case-clause-body.shell",
94
+ "begin": "(?\u003c=\\))",
95
+ "end": "(?=;;)",
127
96
  "patterns": [
128
97
  {
129
98
  "include": "$self"
130
99
  }
131
100
  ]
132
101
  }
133
- ]
102
+ ],
103
+ "endCaptures": {
104
+ "0": {
105
+ "name": "punctuation.terminator.case-clause.shell"
106
+ }
107
+ }
134
108
  }
135
109
  ]
136
110
  },
137
111
  "comment": {
138
- "begin": "(^\\s+)?(?<=^|\\W)(?=#)(?!#{)",
139
- "beginCaptures": {
140
- "1": {
141
- "name": "punctuation.whitespace.comment.leading.shell"
142
- }
143
- },
112
+ "begin": "(^\\s+)?(?\u003c=^|\\W)(?=#)(?!#{)",
144
113
  "end": "(?!\\G)",
145
114
  "patterns": [
146
115
  {
116
+ "name": "comment.line.number-sign.shebang.shell",
147
117
  "begin": "#!",
118
+ "end": "$",
148
119
  "beginCaptures": {
149
120
  "0": {
150
121
  "name": "punctuation.definition.comment.shebang.shell"
151
122
  }
152
- },
153
- "end": "$",
154
- "name": "comment.line.number-sign.shebang.shell"
123
+ }
155
124
  },
156
125
  {
126
+ "name": "comment.line.number-sign.shell",
157
127
  "begin": "#",
128
+ "end": "$",
158
129
  "beginCaptures": {
159
130
  "0": {
160
131
  "name": "punctuation.definition.comment.shell"
161
132
  }
162
- },
163
- "end": "$",
164
- "name": "comment.line.number-sign.shell"
133
+ }
165
134
  }
166
- ]
135
+ ],
136
+ "beginCaptures": {
137
+ "1": {
138
+ "name": "punctuation.whitespace.comment.leading.shell"
139
+ }
140
+ }
167
141
  },
168
142
  "compound-command": {
169
143
  "patterns": [
170
144
  {
145
+ "name": "meta.scope.logical-expression.shell",
171
146
  "begin": "\\[{1,2}",
147
+ "end": "\\]{1,2}",
148
+ "patterns": [
149
+ {
150
+ "include": "#logical-expression"
151
+ },
152
+ {
153
+ "include": "$self"
154
+ }
155
+ ],
172
156
  "beginCaptures": {
173
157
  "0": {
174
158
  "name": "punctuation.definition.logical-expression.shell"
175
159
  }
176
160
  },
177
- "end": "\\]{1,2}",
178
161
  "endCaptures": {
179
162
  "0": {
180
163
  "name": "punctuation.definition.logical-expression.shell"
181
164
  }
182
- },
183
- "name": "meta.scope.logical-expression.shell",
184
- "patterns": [
185
- {
186
- "include": "#logical-expression"
187
- },
188
- {
189
- "include": "$self"
190
- }
191
- ]
165
+ }
192
166
  },
193
167
  {
168
+ "name": "string.other.math.shell",
194
169
  "begin": "\\({2}",
170
+ "end": "\\){2}",
171
+ "patterns": [
172
+ {
173
+ "include": "#math"
174
+ }
175
+ ],
195
176
  "beginCaptures": {
196
177
  "0": {
197
178
  "name": "punctuation.definition.string.begin.shell"
198
179
  }
199
180
  },
200
- "end": "\\){2}",
201
181
  "endCaptures": {
202
182
  "0": {
203
183
  "name": "punctuation.definition.string.end.shell"
204
184
  }
205
- },
206
- "name": "string.other.math.shell",
207
- "patterns": [
208
- {
209
- "include": "#math"
210
- }
211
- ]
185
+ }
212
186
  },
213
187
  {
188
+ "name": "meta.scope.subshell.shell",
214
189
  "begin": "\\(",
190
+ "end": "\\)",
191
+ "patterns": [
192
+ {
193
+ "include": "$self"
194
+ }
195
+ ],
215
196
  "beginCaptures": {
216
197
  "0": {
217
198
  "name": "punctuation.definition.subshell.shell"
218
199
  }
219
200
  },
220
- "end": "\\)",
221
201
  "endCaptures": {
222
202
  "0": {
223
203
  "name": "punctuation.definition.subshell.shell"
224
204
  }
225
- },
226
- "name": "meta.scope.subshell.shell",
205
+ }
206
+ },
207
+ {
208
+ "name": "meta.scope.group.shell",
209
+ "begin": "(?\u003c=\\s|^){(?=\\s|$)",
210
+ "end": "(?\u003c=^|;)\\s*(})",
227
211
  "patterns": [
228
212
  {
229
213
  "include": "$self"
230
214
  }
231
- ]
232
- },
233
- {
234
- "begin": "(?<=\\s|^){(?=\\s|$)",
215
+ ],
235
216
  "beginCaptures": {
236
217
  "0": {
237
218
  "name": "punctuation.definition.group.shell"
238
219
  }
239
220
  },
240
- "end": "(?<=^|;)\\s*(})",
241
221
  "endCaptures": {
242
222
  "1": {
243
223
  "name": "punctuation.definition.group.shell"
244
224
  }
245
- },
246
- "name": "meta.scope.group.shell",
247
- "patterns": [
248
- {
249
- "include": "$self"
250
- }
251
- ]
225
+ }
252
226
  }
253
227
  ]
254
228
  },
255
229
  "function-definition": {
256
230
  "patterns": [
257
231
  {
258
- "begin": "(?<=^|;|&|\\s)(function)\\s+([^\\s\\\\]+)(?:\\s*(\\(\\)))?",
232
+ "name": "meta.function.shell",
233
+ "begin": "(?\u003c=^|;|\u0026|\\s)(function)\\s+([^\\s\\\\]+)(?:\\s*(\\(\\)))?",
234
+ "end": ";|\u0026|$",
235
+ "patterns": [
236
+ {
237
+ "include": "$self"
238
+ }
239
+ ],
259
240
  "beginCaptures": {
260
241
  "1": {
261
242
  "name": "storage.type.function.shell"
@@ -267,21 +248,21 @@
267
248
  "name": "punctuation.definition.arguments.shell"
268
249
  }
269
250
  },
270
- "end": ";|&|$",
271
251
  "endCaptures": {
272
252
  "0": {
273
253
  "name": "punctuation.definition.function.shell"
274
254
  }
275
- },
255
+ }
256
+ },
257
+ {
276
258
  "name": "meta.function.shell",
259
+ "begin": "(?\u003c=^|;|\u0026|\\s)([^\\s\\\\=]+)\\s*(\\(\\))",
260
+ "end": ";|\u0026|$",
277
261
  "patterns": [
278
262
  {
279
263
  "include": "$self"
280
264
  }
281
- ]
282
- },
283
- {
284
- "begin": "(?<=^|;|&|\\s)([^\\s\\\\=]+)\\s*(\\(\\))",
265
+ ],
285
266
  "beginCaptures": {
286
267
  "1": {
287
268
  "name": "entity.name.function.shell"
@@ -290,49 +271,26 @@
290
271
  "name": "punctuation.definition.arguments.shell"
291
272
  }
292
273
  },
293
- "end": ";|&|$",
294
274
  "endCaptures": {
295
275
  "0": {
296
276
  "name": "punctuation.definition.function.shell"
297
277
  }
298
- },
299
- "name": "meta.function.shell",
300
- "patterns": [
301
- {
302
- "include": "$self"
303
- }
304
- ]
278
+ }
305
279
  }
306
280
  ]
307
281
  },
308
282
  "heredoc": {
309
283
  "patterns": [
310
284
  {
311
- "begin": "(<<)-(\"|'|)\\s*(RUBY)(?=\\s|;|&|<|\"|')\\2",
312
- "beginCaptures": {
313
- "1": {
314
- "name": "keyword.operator.heredoc.shell"
315
- },
316
- "3": {
317
- "name": "keyword.control.heredoc-token.shell"
318
- }
319
- },
320
- "end": "^\\t*(RUBY)(?=\\s|;|&|$)",
321
- "endCaptures": {
322
- "1": {
323
- "name": "keyword.control.heredoc-token.shell"
324
- }
325
- },
326
285
  "name": "string.unquoted.heredoc.no-indent.ruby.shell",
327
286
  "contentName": "source.ruby.embedded.shell",
287
+ "begin": "(\u003c\u003c)-(\"|'|)\\s*(RUBY)(?=\\s|;|\u0026|\u003c|\"|')\\2",
288
+ "end": "^\\t*(RUBY)(?=\\s|;|\u0026|$)",
328
289
  "patterns": [
329
290
  {
330
291
  "include": "source.ruby"
331
292
  }
332
- ]
333
- },
334
- {
335
- "begin": "(<<)(\"|'|)\\s*(RUBY)(?=\\s|;|&|<|\"|')\\2",
293
+ ],
336
294
  "beginCaptures": {
337
295
  "1": {
338
296
  "name": "keyword.operator.heredoc.shell"
@@ -341,22 +299,22 @@
341
299
  "name": "keyword.control.heredoc-token.shell"
342
300
  }
343
301
  },
344
- "end": "^(RUBY)(?=\\s|;|&|$)",
345
302
  "endCaptures": {
346
303
  "1": {
347
304
  "name": "keyword.control.heredoc-token.shell"
348
305
  }
349
- },
306
+ }
307
+ },
308
+ {
350
309
  "name": "string.unquoted.heredoc.ruby.shell",
351
310
  "contentName": "source.ruby.embedded.shell",
311
+ "begin": "(\u003c\u003c)(\"|'|)\\s*(RUBY)(?=\\s|;|\u0026|\u003c|\"|')\\2",
312
+ "end": "^(RUBY)(?=\\s|;|\u0026|$)",
352
313
  "patterns": [
353
314
  {
354
315
  "include": "source.ruby"
355
316
  }
356
- ]
357
- },
358
- {
359
- "begin": "(<<)-(\"|'|)\\s*(PYTHON)(?=\\s|;|&|<|\"|')\\2",
317
+ ],
360
318
  "beginCaptures": {
361
319
  "1": {
362
320
  "name": "keyword.operator.heredoc.shell"
@@ -365,22 +323,22 @@
365
323
  "name": "keyword.control.heredoc-token.shell"
366
324
  }
367
325
  },
368
- "end": "^\\t*(PYTHON)(?=\\s|;|&|$)",
369
326
  "endCaptures": {
370
327
  "1": {
371
328
  "name": "keyword.control.heredoc-token.shell"
372
329
  }
373
- },
330
+ }
331
+ },
332
+ {
374
333
  "name": "string.unquoted.heredoc.no-indent.python.shell",
375
334
  "contentName": "source.python.embedded.shell",
335
+ "begin": "(\u003c\u003c)-(\"|'|)\\s*(PYTHON)(?=\\s|;|\u0026|\u003c|\"|')\\2",
336
+ "end": "^\\t*(PYTHON)(?=\\s|;|\u0026|$)",
376
337
  "patterns": [
377
338
  {
378
339
  "include": "source.python"
379
340
  }
380
- ]
381
- },
382
- {
383
- "begin": "(<<)(\"|'|)\\s*(PYTHON)(?=\\s|;|&|<|\"|')\\2",
341
+ ],
384
342
  "beginCaptures": {
385
343
  "1": {
386
344
  "name": "keyword.operator.heredoc.shell"
@@ -389,22 +347,22 @@
389
347
  "name": "keyword.control.heredoc-token.shell"
390
348
  }
391
349
  },
392
- "end": "^(PYTHON)(?=\\s|;|&|$)",
393
350
  "endCaptures": {
394
351
  "1": {
395
352
  "name": "keyword.control.heredoc-token.shell"
396
353
  }
397
- },
354
+ }
355
+ },
356
+ {
398
357
  "name": "string.unquoted.heredoc.python.shell",
399
358
  "contentName": "source.python.embedded.shell",
359
+ "begin": "(\u003c\u003c)(\"|'|)\\s*(PYTHON)(?=\\s|;|\u0026|\u003c|\"|')\\2",
360
+ "end": "^(PYTHON)(?=\\s|;|\u0026|$)",
400
361
  "patterns": [
401
362
  {
402
363
  "include": "source.python"
403
364
  }
404
- ]
405
- },
406
- {
407
- "begin": "(<<)-(\"|'|)\\s*(APPLESCRIPT)(?=\\s|;|&|<|\"|')\\2",
365
+ ],
408
366
  "beginCaptures": {
409
367
  "1": {
410
368
  "name": "keyword.operator.heredoc.shell"
@@ -413,22 +371,22 @@
413
371
  "name": "keyword.control.heredoc-token.shell"
414
372
  }
415
373
  },
416
- "end": "^\\t*(APPLESCRIPT)(?=\\s|;|&|$)",
417
374
  "endCaptures": {
418
375
  "1": {
419
376
  "name": "keyword.control.heredoc-token.shell"
420
377
  }
421
- },
378
+ }
379
+ },
380
+ {
422
381
  "name": "string.unquoted.heredoc.no-indent.applescript.shell",
423
382
  "contentName": "source.applescript.embedded.shell",
383
+ "begin": "(\u003c\u003c)-(\"|'|)\\s*(APPLESCRIPT)(?=\\s|;|\u0026|\u003c|\"|')\\2",
384
+ "end": "^\\t*(APPLESCRIPT)(?=\\s|;|\u0026|$)",
424
385
  "patterns": [
425
386
  {
426
387
  "include": "source.applescript"
427
388
  }
428
- ]
429
- },
430
- {
431
- "begin": "(<<)(\"|'|)\\s*(APPLESCRIPT)(?=\\s|;|&|<|\"|')\\2",
389
+ ],
432
390
  "beginCaptures": {
433
391
  "1": {
434
392
  "name": "keyword.operator.heredoc.shell"
@@ -437,22 +395,22 @@
437
395
  "name": "keyword.control.heredoc-token.shell"
438
396
  }
439
397
  },
440
- "end": "^(APPLESCRIPT)(?=\\s|;|&|$)",
441
398
  "endCaptures": {
442
399
  "1": {
443
400
  "name": "keyword.control.heredoc-token.shell"
444
401
  }
445
- },
402
+ }
403
+ },
404
+ {
446
405
  "name": "string.unquoted.heredoc.applescript.shell",
447
406
  "contentName": "source.applescript.embedded.shell",
407
+ "begin": "(\u003c\u003c)(\"|'|)\\s*(APPLESCRIPT)(?=\\s|;|\u0026|\u003c|\"|')\\2",
408
+ "end": "^(APPLESCRIPT)(?=\\s|;|\u0026|$)",
448
409
  "patterns": [
449
410
  {
450
411
  "include": "source.applescript"
451
412
  }
452
- ]
453
- },
454
- {
455
- "begin": "(<<)-(\"|'|)\\s*(HTML)(?=\\s|;|&|<|\"|')\\2",
413
+ ],
456
414
  "beginCaptures": {
457
415
  "1": {
458
416
  "name": "keyword.operator.heredoc.shell"
@@ -461,22 +419,22 @@
461
419
  "name": "keyword.control.heredoc-token.shell"
462
420
  }
463
421
  },
464
- "end": "^\\t*(HTML)(?=\\s|;|&|$)",
465
422
  "endCaptures": {
466
423
  "1": {
467
424
  "name": "keyword.control.heredoc-token.shell"
468
425
  }
469
- },
426
+ }
427
+ },
428
+ {
470
429
  "name": "string.unquoted.heredoc.no-indent.html.shell",
471
430
  "contentName": "text.html.embedded.shell",
431
+ "begin": "(\u003c\u003c)-(\"|'|)\\s*(HTML)(?=\\s|;|\u0026|\u003c|\"|')\\2",
432
+ "end": "^\\t*(HTML)(?=\\s|;|\u0026|$)",
472
433
  "patterns": [
473
434
  {
474
435
  "include": "text.html.basic"
475
436
  }
476
- ]
477
- },
478
- {
479
- "begin": "(<<)(\"|'|)\\s*(HTML)(?=\\s|;|&|<|\"|')\\2",
437
+ ],
480
438
  "beginCaptures": {
481
439
  "1": {
482
440
  "name": "keyword.operator.heredoc.shell"
@@ -485,22 +443,22 @@
485
443
  "name": "keyword.control.heredoc-token.shell"
486
444
  }
487
445
  },
488
- "end": "^(HTML)(?=\\s|;|&|$)",
489
446
  "endCaptures": {
490
447
  "1": {
491
448
  "name": "keyword.control.heredoc-token.shell"
492
449
  }
493
- },
450
+ }
451
+ },
452
+ {
494
453
  "name": "string.unquoted.heredoc.html.shell",
495
454
  "contentName": "text.html.embedded.shell",
455
+ "begin": "(\u003c\u003c)(\"|'|)\\s*(HTML)(?=\\s|;|\u0026|\u003c|\"|')\\2",
456
+ "end": "^(HTML)(?=\\s|;|\u0026|$)",
496
457
  "patterns": [
497
458
  {
498
459
  "include": "text.html.basic"
499
460
  }
500
- ]
501
- },
502
- {
503
- "begin": "(<<)-(\"|'|)\\s*(MARKDOWN)(?=\\s|;|&|<|\"|')\\2",
461
+ ],
504
462
  "beginCaptures": {
505
463
  "1": {
506
464
  "name": "keyword.operator.heredoc.shell"
@@ -509,22 +467,22 @@
509
467
  "name": "keyword.control.heredoc-token.shell"
510
468
  }
511
469
  },
512
- "end": "^\\t*(MARKDOWN)(?=\\s|;|&|$)",
513
470
  "endCaptures": {
514
471
  "1": {
515
472
  "name": "keyword.control.heredoc-token.shell"
516
473
  }
517
- },
474
+ }
475
+ },
476
+ {
518
477
  "name": "string.unquoted.heredoc.no-indent.markdown.shell",
519
478
  "contentName": "text.html.markdown.embedded.shell",
479
+ "begin": "(\u003c\u003c)-(\"|'|)\\s*(MARKDOWN)(?=\\s|;|\u0026|\u003c|\"|')\\2",
480
+ "end": "^\\t*(MARKDOWN)(?=\\s|;|\u0026|$)",
520
481
  "patterns": [
521
482
  {
522
- "include": "text.html.markdown"
483
+ "include": "source.gfm"
523
484
  }
524
- ]
525
- },
526
- {
527
- "begin": "(<<)(\"|'|)\\s*(MARKDOWN)(?=\\s|;|&|<|\"|')\\2",
485
+ ],
528
486
  "beginCaptures": {
529
487
  "1": {
530
488
  "name": "keyword.operator.heredoc.shell"
@@ -533,22 +491,22 @@
533
491
  "name": "keyword.control.heredoc-token.shell"
534
492
  }
535
493
  },
536
- "end": "^(MARKDOWN)(?=\\s|;|&|$)",
537
494
  "endCaptures": {
538
495
  "1": {
539
496
  "name": "keyword.control.heredoc-token.shell"
540
497
  }
541
- },
498
+ }
499
+ },
500
+ {
542
501
  "name": "string.unquoted.heredoc.markdown.shell",
543
502
  "contentName": "text.html.markdown.embedded.shell",
503
+ "begin": "(\u003c\u003c)(\"|'|)\\s*(MARKDOWN)(?=\\s|;|\u0026|\u003c|\"|')\\2",
504
+ "end": "^(MARKDOWN)(?=\\s|;|\u0026|$)",
544
505
  "patterns": [
545
506
  {
546
- "include": "text.html.markdown"
507
+ "include": "source.gfm"
547
508
  }
548
- ]
549
- },
550
- {
551
- "begin": "(<<)-(\"|'|)\\s*(TEXTILE)(?=\\s|;|&|<|\"|')\\2",
509
+ ],
552
510
  "beginCaptures": {
553
511
  "1": {
554
512
  "name": "keyword.operator.heredoc.shell"
@@ -557,22 +515,20 @@
557
515
  "name": "keyword.control.heredoc-token.shell"
558
516
  }
559
517
  },
560
- "end": "^\\t*(TEXTILE)(?=\\s|;|&|$)",
561
518
  "endCaptures": {
562
519
  "1": {
563
520
  "name": "keyword.control.heredoc-token.shell"
564
521
  }
565
- },
522
+ }
523
+ },
524
+ {
566
525
  "name": "string.unquoted.heredoc.no-indent.textile.shell",
567
526
  "contentName": "text.html.textile.embedded.shell",
527
+ "begin": "(\u003c\u003c)-(\"|'|)\\s*(TEXTILE)(?=\\s|;|\u0026|\u003c|\"|')\\2",
528
+ "end": "^\\t*(TEXTILE)(?=\\s|;|\u0026|$)",
568
529
  "patterns": [
569
- {
570
- "include": "text.html.textile"
571
- }
572
- ]
573
- },
574
- {
575
- "begin": "(<<)(\"|'|)\\s*(TEXTILE)(?=\\s|;|&|<|\"|')\\2",
530
+ {}
531
+ ],
576
532
  "beginCaptures": {
577
533
  "1": {
578
534
  "name": "keyword.operator.heredoc.shell"
@@ -581,22 +537,20 @@
581
537
  "name": "keyword.control.heredoc-token.shell"
582
538
  }
583
539
  },
584
- "end": "^(TEXTILE)(?=\\s|;|&|$)",
585
540
  "endCaptures": {
586
541
  "1": {
587
542
  "name": "keyword.control.heredoc-token.shell"
588
543
  }
589
- },
544
+ }
545
+ },
546
+ {
590
547
  "name": "string.unquoted.heredoc.textile.shell",
591
548
  "contentName": "text.html.textile.embedded.shell",
549
+ "begin": "(\u003c\u003c)(\"|'|)\\s*(TEXTILE)(?=\\s|;|\u0026|\u003c|\"|')\\2",
550
+ "end": "^(TEXTILE)(?=\\s|;|\u0026|$)",
592
551
  "patterns": [
593
- {
594
- "include": "text.html.textile"
595
- }
596
- ]
597
- },
598
- {
599
- "begin": "(<<)-(\"|'|)\\s*(SHELL)(?=\\s|;|&|<|\"|')\\2",
552
+ {}
553
+ ],
600
554
  "beginCaptures": {
601
555
  "1": {
602
556
  "name": "keyword.operator.heredoc.shell"
@@ -605,22 +559,22 @@
605
559
  "name": "keyword.control.heredoc-token.shell"
606
560
  }
607
561
  },
608
- "end": "^\\t*(\\3)(?=\\s|;|&|$)",
609
562
  "endCaptures": {
610
563
  "1": {
611
564
  "name": "keyword.control.heredoc-token.shell"
612
565
  }
613
- },
614
- "contentName": "source.shell.embedded.shell",
566
+ }
567
+ },
568
+ {
615
569
  "name": "string.unquoted.heredoc.no-indent.shell.shell",
570
+ "contentName": "source.shell.embedded.shell",
571
+ "begin": "(\u003c\u003c)-(\"|'|)\\s*(SHELL)(?=\\s|;|\u0026|\u003c|\"|')\\2",
572
+ "end": "^\\t*(\\3)(?=\\s|;|\u0026|$)",
616
573
  "patterns": [
617
574
  {
618
575
  "include": "source.shell"
619
576
  }
620
- ]
621
- },
622
- {
623
- "begin": "(<<)(\"|'|)\\s*(SHELL)(?=\\s|;|&|<|\"|')\\2",
577
+ ],
624
578
  "beginCaptures": {
625
579
  "1": {
626
580
  "name": "keyword.operator.heredoc.shell"
@@ -629,22 +583,40 @@
629
583
  "name": "keyword.control.heredoc-token.shell"
630
584
  }
631
585
  },
632
- "end": "^(\\3)(?=\\s|;|&|$)",
633
586
  "endCaptures": {
634
587
  "1": {
635
588
  "name": "keyword.control.heredoc-token.shell"
636
589
  }
637
- },
590
+ }
591
+ },
592
+ {
638
593
  "name": "string.unquoted.heredoc.shell.shell",
639
594
  "contentName": "source.shell.embedded.shell",
595
+ "begin": "(\u003c\u003c)(\"|'|)\\s*(SHELL)(?=\\s|;|\u0026|\u003c|\"|')\\2",
596
+ "end": "^(\\3)(?=\\s|;|\u0026|$)",
640
597
  "patterns": [
641
598
  {
642
599
  "include": "source.shell"
643
600
  }
644
- ]
601
+ ],
602
+ "beginCaptures": {
603
+ "1": {
604
+ "name": "keyword.operator.heredoc.shell"
605
+ },
606
+ "3": {
607
+ "name": "keyword.control.heredoc-token.shell"
608
+ }
609
+ },
610
+ "endCaptures": {
611
+ "1": {
612
+ "name": "keyword.control.heredoc-token.shell"
613
+ }
614
+ }
645
615
  },
646
616
  {
647
- "begin": "(<<)-(\"|'|)\\s*\\\\?([^;&<\\s]+)\\2",
617
+ "name": "string.unquoted.heredoc.no-indent.shell",
618
+ "begin": "(\u003c\u003c)-(\"|'|)\\s*\\\\?([^;\u0026\u003c\\s]+)\\2",
619
+ "end": "^\\t*(\\3)(?=\\s|;|\u0026|$)",
648
620
  "beginCaptures": {
649
621
  "1": {
650
622
  "name": "keyword.operator.heredoc.shell"
@@ -653,16 +625,16 @@
653
625
  "name": "keyword.control.heredoc-token.shell"
654
626
  }
655
627
  },
656
- "end": "^\\t*(\\3)(?=\\s|;|&|$)",
657
628
  "endCaptures": {
658
629
  "1": {
659
630
  "name": "keyword.control.heredoc-token.shell"
660
631
  }
661
- },
662
- "name": "string.unquoted.heredoc.no-indent.shell"
632
+ }
663
633
  },
664
634
  {
665
- "begin": "(<<)(\"|'|)\\s*\\\\?([^;&<\\s]+)\\2",
635
+ "name": "string.unquoted.heredoc.shell",
636
+ "begin": "(\u003c\u003c)(\"|'|)\\s*\\\\?([^;\u0026\u003c\\s]+)\\2",
637
+ "end": "^(\\3)(?=\\s|;|\u0026|$)",
666
638
  "beginCaptures": {
667
639
  "1": {
668
640
  "name": "keyword.operator.heredoc.shell"
@@ -671,20 +643,21 @@
671
643
  "name": "keyword.control.heredoc-token.shell"
672
644
  }
673
645
  },
674
- "end": "^(\\3)(?=\\s|;|&|$)",
675
646
  "endCaptures": {
676
647
  "1": {
677
648
  "name": "keyword.control.heredoc-token.shell"
678
649
  }
679
- },
680
- "name": "string.unquoted.heredoc.shell"
650
+ }
681
651
  }
682
652
  ]
683
653
  },
684
654
  "herestring": {
685
655
  "patterns": [
686
656
  {
687
- "begin": "(<<<)\\s*(('))",
657
+ "name": "meta.herestring.shell",
658
+ "contentName": "string.quoted.single.shell",
659
+ "begin": "(\u003c\u003c\u003c)\\s*(('))",
660
+ "end": "(')",
688
661
  "beginCaptures": {
689
662
  "1": {
690
663
  "name": "keyword.operator.herestring.shell"
@@ -696,7 +669,6 @@
696
669
  "name": "punctuation.definition.string.begin.shell"
697
670
  }
698
671
  },
699
- "end": "(')",
700
672
  "endCaptures": {
701
673
  "0": {
702
674
  "name": "string.quoted.single.shell"
@@ -704,12 +676,13 @@
704
676
  "1": {
705
677
  "name": "punctuation.definition.string.end.shell"
706
678
  }
707
- },
708
- "name": "meta.herestring.shell",
709
- "contentName": "string.quoted.single.shell"
679
+ }
710
680
  },
711
681
  {
712
- "begin": "(<<<)\\s*((\"))",
682
+ "name": "meta.herestring.shell",
683
+ "contentName": "string.quoted.double.shell",
684
+ "begin": "(\u003c\u003c\u003c)\\s*((\"))",
685
+ "end": "(\")",
713
686
  "beginCaptures": {
714
687
  "1": {
715
688
  "name": "keyword.operator.herestring.shell"
@@ -721,7 +694,6 @@
721
694
  "name": "punctuation.definition.string.begin.shell"
722
695
  }
723
696
  },
724
- "end": "(\")",
725
697
  "endCaptures": {
726
698
  "0": {
727
699
  "name": "string.quoted.double.shell"
@@ -729,11 +701,11 @@
729
701
  "1": {
730
702
  "name": "punctuation.definition.string.end.shell"
731
703
  }
732
- },
733
- "name": "meta.herestring.shell",
734
- "contentName": "string.quoted.double.shell"
704
+ }
735
705
  },
736
706
  {
707
+ "name": "meta.herestring.shell",
708
+ "match": "(\u003c\u003c\u003c)\\s*(([^\\s)\\\\]|\\\\.)+)",
737
709
  "captures": {
738
710
  "1": {
739
711
  "name": "keyword.operator.herestring.shell"
@@ -746,158 +718,162 @@
746
718
  }
747
719
  ]
748
720
  }
749
- },
750
- "match": "(<<<)\\s*(([^\\s\\\\]|\\\\.)+)",
751
- "name": "meta.herestring.shell"
721
+ }
752
722
  }
753
723
  ]
754
724
  },
755
725
  "interpolation": {
756
726
  "patterns": [
757
727
  {
728
+ "name": "string.other.math.shell",
758
729
  "begin": "\\$\\({2}",
759
- "beginCaptures": {
760
- "0": {
761
- "name": "punctuation.definition.string.begin.shell"
762
- }
763
- },
764
730
  "end": "\\){2}",
765
- "endCaptures": {
766
- "0": {
767
- "name": "punctuation.definition.string.end.shell"
768
- }
769
- },
770
- "name": "string.other.math.shell",
771
731
  "patterns": [
772
732
  {
773
733
  "include": "#math"
774
734
  }
775
- ]
776
- },
777
- {
778
- "begin": "`",
735
+ ],
779
736
  "beginCaptures": {
780
737
  "0": {
781
738
  "name": "punctuation.definition.string.begin.shell"
782
739
  }
783
740
  },
784
- "end": "`",
785
741
  "endCaptures": {
786
742
  "0": {
787
743
  "name": "punctuation.definition.string.end.shell"
788
744
  }
789
- },
745
+ }
746
+ },
747
+ {
790
748
  "name": "string.interpolated.backtick.shell",
749
+ "begin": "`",
750
+ "end": "`",
791
751
  "patterns": [
792
752
  {
793
- "match": "\\\\[`\\\\$]",
794
- "name": "constant.character.escape.shell"
753
+ "name": "constant.character.escape.shell",
754
+ "match": "\\\\[`\\\\$]"
795
755
  },
796
756
  {
797
- "begin": "(?<=\\W)(?=#)(?!#{)",
798
- "beginCaptures": {
799
- "1": {
800
- "name": "punctuation.whitespace.comment.leading.shell"
801
- }
802
- },
757
+ "begin": "(?\u003c=\\W)(?=#)(?!#{)",
803
758
  "end": "(?!\\G)",
804
759
  "patterns": [
805
760
  {
761
+ "name": "comment.line.number-sign.shell",
806
762
  "begin": "#",
763
+ "end": "(?=`)",
807
764
  "beginCaptures": {
808
765
  "0": {
809
766
  "name": "punctuation.definition.comment.shell"
810
767
  }
811
- },
812
- "end": "(?=`)",
813
- "name": "comment.line.number-sign.shell"
768
+ }
814
769
  }
815
- ]
770
+ ],
771
+ "beginCaptures": {
772
+ "1": {
773
+ "name": "punctuation.whitespace.comment.leading.shell"
774
+ }
775
+ }
816
776
  },
817
777
  {
818
778
  "include": "$self"
819
779
  }
820
- ]
821
- },
822
- {
823
- "begin": "\\$\\(",
780
+ ],
824
781
  "beginCaptures": {
825
782
  "0": {
826
783
  "name": "punctuation.definition.string.begin.shell"
827
784
  }
828
785
  },
829
- "end": "\\)",
830
786
  "endCaptures": {
831
787
  "0": {
832
788
  "name": "punctuation.definition.string.end.shell"
833
789
  }
834
- },
790
+ }
791
+ },
792
+ {
835
793
  "name": "string.interpolated.dollar.shell",
794
+ "begin": "\\$\\(",
795
+ "end": "\\)",
836
796
  "patterns": [
837
797
  {
838
798
  "include": "$self"
839
799
  }
840
- ]
800
+ ],
801
+ "beginCaptures": {
802
+ "0": {
803
+ "name": "punctuation.definition.string.begin.shell"
804
+ }
805
+ },
806
+ "endCaptures": {
807
+ "0": {
808
+ "name": "punctuation.definition.string.end.shell"
809
+ }
810
+ }
841
811
  }
842
812
  ]
843
813
  },
844
814
  "keyword": {
845
815
  "patterns": [
846
816
  {
847
- "match": "(?<=^|;|&|\\s)(then|else|elif|fi|for|in|do|done|select|case|continue|esac|while|until|return)(?=\\s|;|&|$)",
848
- "name": "keyword.control.shell"
817
+ "name": "keyword.control.shell",
818
+ "match": "(?\u003c=^|;|\u0026|\\s)(then|else|elif|fi|for|in|do|done|select|case|continue|esac|while|until|return)(?=\\s|;|\u0026|$)"
849
819
  },
850
820
  {
851
- "match": "(?<=^|;|&|\\s)(?:export|declare|typeset|local|readonly)(?=\\s|;|&|$)",
852
- "name": "storage.modifier.shell"
821
+ "name": "storage.modifier.shell",
822
+ "match": "(?\u003c=^|;|\u0026|\\s)(?:export|declare|typeset|local|readonly)(?=\\s|;|\u0026|$)"
853
823
  }
854
824
  ]
855
825
  },
856
826
  "list": {
857
827
  "patterns": [
858
828
  {
859
- "match": ";|&&|&|\\|\\|",
860
- "name": "keyword.operator.list.shell"
829
+ "name": "keyword.operator.list.shell",
830
+ "match": ";|\u0026\u0026|\u0026|\\|\\|"
861
831
  }
862
832
  ]
863
833
  },
864
834
  "logical-expression": {
865
835
  "patterns": [
866
836
  {
867
- "comment": "do we want a special rule for ( expr )?",
868
- "match": "=[=~]?|!=?|<|>|&&|\\|\\|",
869
- "name": "keyword.operator.logical.shell"
837
+ "name": "keyword.operator.logical.shell",
838
+ "match": "=[=~]?|!=?|\u003c|\u003e|\u0026\u0026|\\|\\|"
870
839
  },
871
840
  {
872
- "match": "(?<!\\S)-(nt|ot|ef|eq|ne|l[te]|g[te]|[a-hknoprstuwxzOGLSN])",
873
- "name": "keyword.operator.logical.shell"
841
+ "name": "keyword.operator.logical.shell",
842
+ "match": "(?\u003c!\\S)-(nt|ot|ef|eq|ne|l[te]|g[te]|[a-hknoprstuwxzOGLSN])"
874
843
  }
875
844
  ]
876
845
  },
877
846
  "loop": {
878
847
  "patterns": [
879
848
  {
880
- "begin": "(?<=^|;|&|\\s)(for)\\s+(?=\\({2})",
849
+ "name": "meta.scope.for-loop.shell",
850
+ "begin": "(?\u003c=^|;|\u0026|\\s)(for)\\s+(?=\\({2})",
851
+ "end": "(?\u003c=^|;|\u0026|\\s)done(?=\\s|;|\u0026|$)",
852
+ "patterns": [
853
+ {
854
+ "include": "$self"
855
+ }
856
+ ],
881
857
  "beginCaptures": {
882
858
  "1": {
883
859
  "name": "keyword.control.shell"
884
860
  }
885
861
  },
886
- "end": "(?<=^|;|&|\\s)done(?=\\s|;|&|$)",
887
862
  "endCaptures": {
888
863
  "0": {
889
864
  "name": "keyword.control.shell"
890
865
  }
891
- },
892
- "name": "meta.scope.for-loop.shell",
866
+ }
867
+ },
868
+ {
869
+ "name": "meta.scope.for-in-loop.shell",
870
+ "begin": "(?\u003c=^|;|\u0026|\\s)(for)\\s+(.+?)\\s+(in)(?=\\s|;|\u0026|$)",
871
+ "end": "(?\u003c=^|;|\u0026|\\s)done(?=\\s|;|\u0026|$)",
893
872
  "patterns": [
894
873
  {
895
874
  "include": "$self"
896
875
  }
897
- ]
898
- },
899
- {
900
- "begin": "(?<=^|;|&|\\s)(for)\\s+(.+?)\\s+(in)(?=\\s|;|&|$)",
876
+ ],
901
877
  "beginCaptures": {
902
878
  "1": {
903
879
  "name": "keyword.control.shell"
@@ -914,41 +890,41 @@
914
890
  "name": "keyword.control.shell"
915
891
  }
916
892
  },
917
- "end": "(?<=^|;|&|\\s)done(?=\\s|;|&|$)",
918
893
  "endCaptures": {
919
894
  "0": {
920
895
  "name": "keyword.control.shell"
921
896
  }
922
- },
923
- "name": "meta.scope.for-in-loop.shell",
897
+ }
898
+ },
899
+ {
900
+ "name": "meta.scope.while-loop.shell",
901
+ "begin": "(?\u003c=^|;|\u0026|\\s)(while|until)(?=\\s|;|\u0026|$)",
902
+ "end": "(?\u003c=^|;|\u0026|\\s)done(?=\\s|;|\u0026|$)",
924
903
  "patterns": [
925
904
  {
926
905
  "include": "$self"
927
906
  }
928
- ]
929
- },
930
- {
931
- "begin": "(?<=^|;|&|\\s)(while|until)(?=\\s|;|&|$)",
907
+ ],
932
908
  "beginCaptures": {
933
909
  "1": {
934
910
  "name": "keyword.control.shell"
935
911
  }
936
912
  },
937
- "end": "(?<=^|;|&|\\s)done(?=\\s|;|&|$)",
938
913
  "endCaptures": {
939
914
  "0": {
940
915
  "name": "keyword.control.shell"
941
916
  }
942
- },
943
- "name": "meta.scope.while-loop.shell",
917
+ }
918
+ },
919
+ {
920
+ "name": "meta.scope.select-block.shell",
921
+ "begin": "(?\u003c=^|;|\u0026|\\s)(select)\\s+((?:[^\\s\\\\]|\\\\.)+)(?=\\s|;|\u0026|$)",
922
+ "end": "(?\u003c=^|;|\u0026|\\s)(done)(?=\\s|;|\u0026|$)",
944
923
  "patterns": [
945
924
  {
946
925
  "include": "$self"
947
926
  }
948
- ]
949
- },
950
- {
951
- "begin": "(?<=^|;|&|\\s)(select)\\s+((?:[^\\s\\\\]|\\\\.)+)(?=\\s|;|&|$)",
927
+ ],
952
928
  "beginCaptures": {
953
929
  "1": {
954
930
  "name": "keyword.control.shell"
@@ -957,43 +933,21 @@
957
933
  "name": "variable.other.loop.shell"
958
934
  }
959
935
  },
960
- "end": "(?<=^|;|&|\\s)(done)(?=\\s|;|&|$)",
961
936
  "endCaptures": {
962
937
  "1": {
963
938
  "name": "keyword.control.shell"
964
939
  }
965
- },
966
- "name": "meta.scope.select-block.shell",
967
- "patterns": [
968
- {
969
- "include": "$self"
970
- }
971
- ]
940
+ }
972
941
  },
973
942
  {
974
- "begin": "(?<=^|;|&|\\s)case(?=\\s|;|&|$)",
975
- "beginCaptures": {
976
- "0": {
977
- "name": "keyword.control.shell"
978
- }
979
- },
980
- "end": "(?<=^|;|&|\\s)esac(?=\\s|;|&|$)",
981
- "endCaptures": {
982
- "0": {
983
- "name": "keyword.control.shell"
984
- }
985
- },
986
943
  "name": "meta.scope.case-block.shell",
944
+ "begin": "(?\u003c=^|;|\u0026|\\s)case(?=\\s|;|\u0026|$)",
945
+ "end": "(?\u003c=^|;|\u0026|\\s)esac(?=\\s|;|\u0026|$)",
987
946
  "patterns": [
988
947
  {
989
- "begin": "(?<=^|;|&|\\s)in(?=\\s|;|&|$)",
990
- "beginCaptures": {
991
- "0": {
992
- "name": "keyword.control.shell"
993
- }
994
- },
995
- "end": "(?<=^|;|&|\\s)(?=esac(\\s|;|&|$))",
996
948
  "name": "meta.scope.case-body.shell",
949
+ "begin": "(?\u003c=^|;|\u0026|\\s)in(?=\\s|;|\u0026|$)",
950
+ "end": "(?\u003c=^|;|\u0026|\\s)(?=esac(\\s|;|\u0026|$))",
997
951
  "patterns": [
998
952
  {
999
953
  "include": "#comment"
@@ -1004,32 +958,47 @@
1004
958
  {
1005
959
  "include": "$self"
1006
960
  }
1007
- ]
961
+ ],
962
+ "beginCaptures": {
963
+ "0": {
964
+ "name": "keyword.control.shell"
965
+ }
966
+ }
1008
967
  },
1009
968
  {
1010
969
  "include": "$self"
1011
970
  }
1012
- ]
1013
- },
1014
- {
1015
- "begin": "(?<=^|;|&|\\s)if(?=\\s|;|&|$)",
971
+ ],
1016
972
  "beginCaptures": {
1017
973
  "0": {
1018
974
  "name": "keyword.control.shell"
1019
975
  }
1020
976
  },
1021
- "end": "(?<=^|;|&|\\s)fi(?=\\s|;|&|$)",
1022
977
  "endCaptures": {
1023
978
  "0": {
1024
979
  "name": "keyword.control.shell"
1025
980
  }
1026
- },
981
+ }
982
+ },
983
+ {
1027
984
  "name": "meta.scope.if-block.shell",
985
+ "begin": "(?\u003c=^|;|\u0026|\\s)if(?=\\s|;|\u0026|$)",
986
+ "end": "(?\u003c=^|;|\u0026|\\s)fi(?=\\s|;|\u0026|$)",
1028
987
  "patterns": [
1029
988
  {
1030
989
  "include": "$self"
1031
990
  }
1032
- ]
991
+ ],
992
+ "beginCaptures": {
993
+ "0": {
994
+ "name": "keyword.control.shell"
995
+ }
996
+ },
997
+ "endCaptures": {
998
+ "0": {
999
+ "name": "keyword.control.shell"
1000
+ }
1001
+ }
1033
1002
  }
1034
1003
  ]
1035
1004
  },
@@ -1039,39 +1008,46 @@
1039
1008
  "include": "#variable"
1040
1009
  },
1041
1010
  {
1042
- "match": "\\+{1,2}|-{1,2}|!|~|\\*{1,2}|/|%|<[<=]?|>[>=]?|==|!=|^|\\|{1,2}|&{1,2}|\\?|\\:|,|=|[*/%+\\-&^|]=|<<=|>>=",
1043
- "name": "keyword.operator.arithmetic.shell"
1011
+ "name": "keyword.operator.arithmetic.shell",
1012
+ "match": "\\+{1,2}|-{1,2}|!|~|\\*{1,2}|/|%|\u003c[\u003c=]?|\u003e[\u003e=]?|==|!=|^|\\|{1,2}|\u0026{1,2}|\\?|\\:|,|=|[*/%+\\-\u0026^|]=|\u003c\u003c=|\u003e\u003e="
1044
1013
  },
1045
1014
  {
1046
- "match": "0[xX][0-9A-Fa-f]+",
1047
- "name": "constant.numeric.hex.shell"
1015
+ "name": "constant.numeric.hex.shell",
1016
+ "match": "0[xX][0-9A-Fa-f]+"
1048
1017
  },
1049
1018
  {
1050
- "match": "0\\d+",
1051
- "name": "constant.numeric.octal.shell"
1019
+ "name": "constant.numeric.octal.shell",
1020
+ "match": "0\\d+"
1052
1021
  },
1053
1022
  {
1054
- "match": "\\d{1,2}#[0-9a-zA-Z@_]+",
1055
- "name": "constant.numeric.other.shell"
1023
+ "name": "constant.numeric.other.shell",
1024
+ "match": "\\d{1,2}#[0-9a-zA-Z@_]+"
1056
1025
  },
1057
1026
  {
1058
- "match": "\\d+",
1059
- "name": "constant.numeric.integer.shell"
1027
+ "name": "constant.numeric.integer.shell",
1028
+ "match": "\\d+"
1060
1029
  }
1061
1030
  ]
1062
1031
  },
1063
1032
  "pathname": {
1064
1033
  "patterns": [
1065
1034
  {
1066
- "match": "(?<=\\s|:|=|^)~",
1067
- "name": "keyword.operator.tilde.shell"
1035
+ "name": "keyword.operator.tilde.shell",
1036
+ "match": "(?\u003c=\\s|:|=|^)~"
1068
1037
  },
1069
1038
  {
1070
- "match": "\\*|\\?",
1071
- "name": "keyword.operator.glob.shell"
1039
+ "name": "keyword.operator.glob.shell",
1040
+ "match": "\\*|\\?"
1072
1041
  },
1073
1042
  {
1043
+ "name": "meta.structure.extglob.shell",
1074
1044
  "begin": "([?*+@!])(\\()",
1045
+ "end": "\\)",
1046
+ "patterns": [
1047
+ {
1048
+ "include": "$self"
1049
+ }
1050
+ ],
1075
1051
  "beginCaptures": {
1076
1052
  "1": {
1077
1053
  "name": "keyword.operator.extglob.shell"
@@ -1080,100 +1056,83 @@
1080
1056
  "name": "punctuation.definition.extglob.shell"
1081
1057
  }
1082
1058
  },
1083
- "end": "\\)",
1084
1059
  "endCaptures": {
1085
1060
  "0": {
1086
1061
  "name": "punctuation.definition.extglob.shell"
1087
1062
  }
1088
- },
1089
- "name": "meta.structure.extglob.shell",
1090
- "patterns": [
1091
- {
1092
- "include": "$self"
1093
- }
1094
- ]
1063
+ }
1095
1064
  }
1096
1065
  ]
1097
1066
  },
1098
1067
  "pipeline": {
1099
1068
  "patterns": [
1100
1069
  {
1101
- "match": "(?<=^|;|&|\\s)(time)(?=\\s|;|&|$)",
1102
- "name": "keyword.other.shell"
1070
+ "name": "keyword.other.shell",
1071
+ "match": "(?\u003c=^|;|\u0026|\\s)(time)(?=\\s|;|\u0026|$)"
1103
1072
  },
1104
1073
  {
1105
- "match": "[|!]",
1106
- "name": "keyword.operator.pipe.shell"
1074
+ "name": "keyword.operator.pipe.shell",
1075
+ "match": "[|!]"
1107
1076
  }
1108
1077
  ]
1109
1078
  },
1110
1079
  "redirection": {
1111
1080
  "patterns": [
1112
1081
  {
1113
- "begin": "[><]\\(",
1082
+ "name": "string.interpolated.process-substitution.shell",
1083
+ "begin": "[\u003e\u003c]\\(",
1084
+ "end": "\\)",
1085
+ "patterns": [
1086
+ {
1087
+ "include": "$self"
1088
+ }
1089
+ ],
1114
1090
  "beginCaptures": {
1115
1091
  "0": {
1116
1092
  "name": "punctuation.definition.string.begin.shell"
1117
1093
  }
1118
1094
  },
1119
- "end": "\\)",
1120
1095
  "endCaptures": {
1121
1096
  "0": {
1122
1097
  "name": "punctuation.definition.string.end.shell"
1123
1098
  }
1124
- },
1125
- "name": "string.interpolated.process-substitution.shell",
1126
- "patterns": [
1127
- {
1128
- "include": "$self"
1129
- }
1130
- ]
1099
+ }
1131
1100
  },
1132
1101
  {
1133
- "match": "(?<![<>])(&>|\\d*>&\\d*|\\d*(>>|>|<)|\\d*<&|\\d*<>)(?![<>])",
1134
- "name": "keyword.operator.redirect.shell"
1102
+ "name": "keyword.operator.redirect.shell",
1103
+ "match": "(?\u003c![\u003c\u003e])(\u0026\u003e|\\d*\u003e\u0026\\d*|\\d*(\u003e\u003e|\u003e|\u003c)|\\d*\u003c\u0026|\\d*\u003c\u003e)(?![\u003c\u003e])"
1135
1104
  }
1136
1105
  ]
1137
1106
  },
1138
1107
  "string": {
1139
1108
  "patterns": [
1140
1109
  {
1141
- "match": "\\\\.",
1142
- "name": "constant.character.escape.shell"
1110
+ "name": "constant.character.escape.shell",
1111
+ "match": "\\\\."
1143
1112
  },
1144
1113
  {
1114
+ "name": "string.quoted.single.shell",
1145
1115
  "begin": "'",
1116
+ "end": "'",
1146
1117
  "beginCaptures": {
1147
1118
  "0": {
1148
1119
  "name": "punctuation.definition.string.begin.shell"
1149
1120
  }
1150
1121
  },
1151
- "end": "'",
1152
1122
  "endCaptures": {
1153
1123
  "0": {
1154
1124
  "name": "punctuation.definition.string.end.shell"
1155
1125
  }
1156
- },
1157
- "name": "string.quoted.single.shell"
1126
+ }
1158
1127
  },
1159
1128
  {
1129
+ "name": "string.quoted.double.shell",
1160
1130
  "begin": "\\$?\"",
1161
- "beginCaptures": {
1162
- "0": {
1163
- "name": "punctuation.definition.string.begin.shell"
1164
- }
1165
- },
1166
1131
  "end": "\"",
1167
- "endCaptures": {
1168
- "0": {
1169
- "name": "punctuation.definition.string.end.shell"
1170
- }
1171
- },
1172
- "name": "string.quoted.double.shell",
1173
1132
  "patterns": [
1174
1133
  {
1175
- "match": "\\\\[\\$`\"\\\\\\n]",
1176
- "name": "constant.character.escape.shell"
1134
+ "name": "constant.character.escape.shell",
1135
+ "match": "\\\\[\\$`\"\\\\\\n]"
1177
1136
  },
1178
1137
  {
1179
1138
  "include": "#variable"
@@ -1181,104 +1140,105 @@
1181
1140
  {
1182
1141
  "include": "#interpolation"
1183
1142
  }
1184
- ]
1185
- },
1186
- {
1187
- "begin": "\\$'",
1143
+ ],
1188
1144
  "beginCaptures": {
1189
1145
  "0": {
1190
1146
  "name": "punctuation.definition.string.begin.shell"
1191
1147
  }
1192
1148
  },
1193
- "end": "'",
1194
1149
  "endCaptures": {
1195
1150
  "0": {
1196
1151
  "name": "punctuation.definition.string.end.shell"
1197
1152
  }
1198
- },
1153
+ }
1154
+ },
1155
+ {
1199
1156
  "name": "string.quoted.single.dollar.shell",
1157
+ "begin": "\\$'",
1158
+ "end": "'",
1200
1159
  "patterns": [
1201
1160
  {
1202
- "match": "\\\\(a|b|e|f|n|r|t|v|\\\\|')",
1203
- "name": "constant.character.escape.ansi-c.shell"
1161
+ "name": "constant.character.escape.ansi-c.shell",
1162
+ "match": "\\\\(a|b|e|f|n|r|t|v|\\\\|')"
1204
1163
  },
1205
1164
  {
1206
- "match": "\\\\[0-9]{3}",
1207
- "name": "constant.character.escape.octal.shell"
1165
+ "name": "constant.character.escape.octal.shell",
1166
+ "match": "\\\\[0-9]{3}"
1208
1167
  },
1209
1168
  {
1210
- "match": "\\\\x[0-9a-fA-F]{2}",
1211
- "name": "constant.character.escape.hex.shell"
1169
+ "name": "constant.character.escape.hex.shell",
1170
+ "match": "\\\\x[0-9a-fA-F]{2}"
1212
1171
  },
1213
1172
  {
1214
- "match": "\\\\c.",
1215
- "name": "constant.character.escape.control-char.shell"
1173
+ "name": "constant.character.escape.control-char.shell",
1174
+ "match": "\\\\c."
1216
1175
  }
1217
- ]
1176
+ ],
1177
+ "beginCaptures": {
1178
+ "0": {
1179
+ "name": "punctuation.definition.string.begin.shell"
1180
+ }
1181
+ },
1182
+ "endCaptures": {
1183
+ "0": {
1184
+ "name": "punctuation.definition.string.end.shell"
1185
+ }
1186
+ }
1218
1187
  }
1219
1188
  ]
1220
1189
  },
1221
1190
  "support": {
1222
1191
  "patterns": [
1223
1192
  {
1224
- "match": "(?<=^|;|&|\\s)(?::|\\.)(?=\\s|;|&|$)",
1225
- "name": "support.function.builtin.shell"
1193
+ "name": "support.function.builtin.shell",
1194
+ "match": "(?\u003c=^|;|\u0026|\\s)(?::|\\.)(?=\\s|;|\u0026|$)"
1226
1195
  },
1227
1196
  {
1228
- "match": "(?<=^|;|&|\\s)(?:alias|bg|bind|break|builtin|caller|cd|command|compgen|complete|dirs|disown|echo|enable|eval|exec|exit|false|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|read|readonly|set|shift|shopt|source|suspend|test|times|trap|true|type|ulimit|umask|unalias|unset|wait)(?=\\s|;|&|$)",
1229
- "name": "support.function.builtin.shell"
1197
+ "name": "support.function.builtin.shell",
1198
+ "match": "(?\u003c=^|;|\u0026|\\s)(?:alias|bg|bind|break|builtin|caller|cd|command|compgen|complete|dirs|disown|echo|enable|eval|exec|exit|false|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|read|readonly|set|shift|shopt|source|suspend|test|times|trap|true|type|ulimit|umask|unalias|unset|wait)(?=\\s|;|\u0026|$)"
1230
1199
  }
1231
1200
  ]
1232
1201
  },
1233
1202
  "variable": {
1234
1203
  "patterns": [
1235
1204
  {
1205
+ "name": "variable.other.normal.shell",
1206
+ "match": "(\\$)[a-zA-Z_][a-zA-Z0-9_]*",
1236
1207
  "captures": {
1237
1208
  "1": {
1238
1209
  "name": "punctuation.definition.variable.shell"
1239
1210
  }
1240
- },
1241
- "match": "(\\$)[a-zA-Z_][a-zA-Z0-9_]*",
1242
- "name": "variable.other.normal.shell"
1211
+ }
1243
1212
  },
1244
1213
  {
1214
+ "name": "variable.other.special.shell",
1215
+ "match": "(\\$)[-*@#?$!0_]",
1245
1216
  "captures": {
1246
1217
  "1": {
1247
1218
  "name": "punctuation.definition.variable.shell"
1248
1219
  }
1249
- },
1250
- "match": "(\\$)[-*@#?$!0_]",
1251
- "name": "variable.other.special.shell"
1220
+ }
1252
1221
  },
1253
1222
  {
1223
+ "name": "variable.other.positional.shell",
1224
+ "match": "(\\$)[1-9]",
1254
1225
  "captures": {
1255
1226
  "1": {
1256
1227
  "name": "punctuation.definition.variable.shell"
1257
1228
  }
1258
- },
1259
- "match": "(\\$)[1-9]",
1260
- "name": "variable.other.positional.shell"
1229
+ }
1261
1230
  },
1262
1231
  {
1232
+ "name": "variable.other.bracket.shell",
1263
1233
  "begin": "\\${",
1264
- "beginCaptures": {
1265
- "0": {
1266
- "name": "punctuation.definition.variable.shell"
1267
- }
1268
- },
1269
1234
  "end": "}",
1270
- "endCaptures": {
1271
- "0": {
1272
- "name": "punctuation.definition.variable.shell"
1273
- }
1274
- },
1275
- "name": "variable.other.bracket.shell",
1276
1235
  "patterns": [
1277
1236
  {
1278
- "match": "!|:[-=?]?|\\*|@|#{1,2}|%{1,2}|/",
1279
- "name": "keyword.operator.expansion.shell"
1237
+ "name": "keyword.operator.expansion.shell",
1238
+ "match": "!|:[-=?]?|\\*|@|#{1,2}|%{1,2}|/"
1280
1239
  },
1281
1240
  {
1241
+ "match": "(\\[)([^\\]]+)(\\])",
1282
1242
  "captures": {
1283
1243
  "1": {
1284
1244
  "name": "punctuation.section.array.shell"
@@ -1286,8 +1246,7 @@
1286
1246
  "3": {
1287
1247
  "name": "punctuation.section.array.shell"
1288
1248
  }
1289
- },
1290
- "match": "(\\[)([^\\]]+)(\\])"
1249
+ }
1291
1250
  },
1292
1251
  {
1293
1252
  "include": "#variable"
@@ -1295,9 +1254,19 @@
1295
1254
  {
1296
1255
  "include": "#string"
1297
1256
  }
1298
- ]
1257
+ ],
1258
+ "beginCaptures": {
1259
+ "0": {
1260
+ "name": "punctuation.definition.variable.shell"
1261
+ }
1262
+ },
1263
+ "endCaptures": {
1264
+ "0": {
1265
+ "name": "punctuation.definition.variable.shell"
1266
+ }
1267
+ }
1299
1268
  }
1300
1269
  ]
1301
1270
  }
1302
1271
  }
1303
- }
1272
+ }