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,24 +1,19 @@
1
1
  {
2
- "comment": "\n\tTODO:\tInclude RegExp syntax\n",
3
- "fileTypes": [
4
- "pl",
5
- "pm",
6
- "pod",
7
- "t",
8
- "PL",
9
- "psgi",
10
- "vcl"
11
- ],
12
- "firstLineMatch": "(?x)\n# Hashbang\n^\\#!.*(?:\\s|\\/|(?<=!)\\b)perl(?:$|\\s)\n|\n# Modeline\n(?i:\n # Emacs\n -\\*-(?:(?:(?!mode\\s*:)[^:;]+:[^:;]+;)*\\s*mode\\s*:)?\\s*\n\tperl\n \\s*(?:;[^:;]+:[^:;]+?)*;?\\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\tperl\n (?=\\s|:|$)\n)",
13
- "keyEquivalent": "^~P",
14
2
  "name": "Perl",
3
+ "scopeName": "source.perl",
15
4
  "patterns": [
16
5
  {
17
6
  "include": "#line_comment"
18
7
  },
19
8
  {
9
+ "name": "comment.block.documentation.perl",
20
10
  "begin": "^(?==[a-zA-Z]+)",
21
11
  "end": "^(=cut\\b.*$)",
12
+ "patterns": [
13
+ {
14
+ "include": "#pod"
15
+ }
16
+ ],
22
17
  "endCaptures": {
23
18
  "1": {
24
19
  "patterns": [
@@ -27,46 +22,19 @@
27
22
  }
28
23
  ]
29
24
  }
30
- },
31
- "name": "comment.block.documentation.perl",
32
- "patterns": [
33
- {
34
- "include": "#pod"
35
- }
36
- ]
25
+ }
37
26
  },
38
27
  {
39
28
  "include": "#variable"
40
29
  },
41
30
  {
42
- "applyEndPatternLast": 1,
43
31
  "begin": "\\b(?=qr\\s*[^\\s\\w])",
44
- "comment": "string.regexp.compile.perl",
45
32
  "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
46
- "endCaptures": {
47
- "1": {
48
- "name": "string.regexp.compile.perl"
49
- },
50
- "2": {
51
- "name": "punctuation.definition.string.perl"
52
- },
53
- "3": {
54
- "name": "keyword.control.regexp-option.perl"
55
- }
56
- },
57
33
  "patterns": [
58
34
  {
35
+ "name": "string.regexp.compile.nested_braces.perl",
59
36
  "begin": "(qr)\\s*\\{",
60
- "captures": {
61
- "0": {
62
- "name": "punctuation.definition.string.perl"
63
- },
64
- "1": {
65
- "name": "support.function.perl"
66
- }
67
- },
68
37
  "end": "\\}",
69
- "name": "string.regexp.compile.nested_braces.perl",
70
38
  "patterns": [
71
39
  {
72
40
  "include": "#escaped_char"
@@ -77,10 +45,7 @@
77
45
  {
78
46
  "include": "#nested_braces_interpolated"
79
47
  }
80
- ]
81
- },
82
- {
83
- "begin": "(qr)\\s*\\[",
48
+ ],
84
49
  "captures": {
85
50
  "0": {
86
51
  "name": "punctuation.definition.string.perl"
@@ -88,9 +53,12 @@
88
53
  "1": {
89
54
  "name": "support.function.perl"
90
55
  }
91
- },
92
- "end": "\\]",
56
+ }
57
+ },
58
+ {
93
59
  "name": "string.regexp.compile.nested_brackets.perl",
60
+ "begin": "(qr)\\s*\\[",
61
+ "end": "\\]",
94
62
  "patterns": [
95
63
  {
96
64
  "include": "#escaped_char"
@@ -101,10 +69,7 @@
101
69
  {
102
70
  "include": "#nested_brackets_interpolated"
103
71
  }
104
- ]
105
- },
106
- {
107
- "begin": "(qr)\\s*<",
72
+ ],
108
73
  "captures": {
109
74
  "0": {
110
75
  "name": "punctuation.definition.string.perl"
@@ -112,9 +77,12 @@
112
77
  "1": {
113
78
  "name": "support.function.perl"
114
79
  }
115
- },
116
- "end": ">",
80
+ }
81
+ },
82
+ {
117
83
  "name": "string.regexp.compile.nested_ltgt.perl",
84
+ "begin": "(qr)\\s*\u003c",
85
+ "end": "\u003e",
118
86
  "patterns": [
119
87
  {
120
88
  "include": "#escaped_char"
@@ -125,10 +93,7 @@
125
93
  {
126
94
  "include": "#nested_ltgt_interpolated"
127
95
  }
128
- ]
129
- },
130
- {
131
- "begin": "(qr)\\s*\\(",
96
+ ],
132
97
  "captures": {
133
98
  "0": {
134
99
  "name": "punctuation.definition.string.perl"
@@ -136,13 +101,15 @@
136
101
  "1": {
137
102
  "name": "support.function.perl"
138
103
  }
139
- },
140
- "end": "\\)",
104
+ }
105
+ },
106
+ {
141
107
  "name": "string.regexp.compile.nested_parens.perl",
108
+ "begin": "(qr)\\s*\\(",
109
+ "end": "\\)",
142
110
  "patterns": [
143
111
  {
144
- "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
145
- "match": "\\$(?=[^\\s\\w\\\\'\\{\\[\\(\\<])"
112
+ "match": "\\$(?=[^\\s\\w\\\\'\\{\\[\\(\\\u003c])"
146
113
  },
147
114
  {
148
115
  "include": "#escaped_char"
@@ -153,10 +120,7 @@
153
120
  {
154
121
  "include": "#nested_parens_interpolated"
155
122
  }
156
- ]
157
- },
158
- {
159
- "begin": "(qr)\\s*'",
123
+ ],
160
124
  "captures": {
161
125
  "0": {
162
126
  "name": "punctuation.definition.string.perl"
@@ -164,17 +128,17 @@
164
128
  "1": {
165
129
  "name": "support.function.perl"
166
130
  }
167
- },
168
- "end": "'",
131
+ }
132
+ },
133
+ {
169
134
  "name": "string.regexp.compile.single-quote.perl",
135
+ "begin": "(qr)\\s*'",
136
+ "end": "'",
170
137
  "patterns": [
171
138
  {
172
139
  "include": "#escaped_char"
173
140
  }
174
- ]
175
- },
176
- {
177
- "begin": "(qr)\\s*([^\\s\\w'\\{\\[\\(\\<])",
141
+ ],
178
142
  "captures": {
179
143
  "0": {
180
144
  "name": "punctuation.definition.string.perl"
@@ -182,14 +146,16 @@
182
146
  "1": {
183
147
  "name": "support.function.perl"
184
148
  }
185
- },
186
- "end": "\\2",
149
+ }
150
+ },
151
+ {
187
152
  "name": "string.regexp.compile.simple-delimiter.perl",
153
+ "begin": "(qr)\\s*([^\\s\\w'\\{\\[\\(\\\u003c])",
154
+ "end": "\\2",
188
155
  "patterns": [
189
156
  {
190
- "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
191
- "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
192
- "name": "keyword.control.anchor.perl"
157
+ "name": "keyword.control.anchor.perl",
158
+ "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\\u003c])"
193
159
  },
194
160
  {
195
161
  "include": "#escaped_char"
@@ -200,18 +166,20 @@
200
166
  {
201
167
  "include": "#nested_parens_interpolated"
202
168
  }
203
- ]
169
+ ],
170
+ "captures": {
171
+ "0": {
172
+ "name": "punctuation.definition.string.perl"
173
+ },
174
+ "1": {
175
+ "name": "support.function.perl"
176
+ }
177
+ }
204
178
  }
205
- ]
206
- },
207
- {
208
- "applyEndPatternLast": 1,
209
- "begin": "(?<!\\{|\\+|\\-)\\b(?=m\\s*[^\\sa-zA-Z0-9])",
210
- "comment": "string.regexp.find-m.perl",
211
- "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
179
+ ],
212
180
  "endCaptures": {
213
181
  "1": {
214
- "name": "string.regexp.find-m.perl"
182
+ "name": "string.regexp.compile.perl"
215
183
  },
216
184
  "2": {
217
185
  "name": "punctuation.definition.string.perl"
@@ -220,19 +188,16 @@
220
188
  "name": "keyword.control.regexp-option.perl"
221
189
  }
222
190
  },
191
+ "applyEndPatternLast": true
192
+ },
193
+ {
194
+ "begin": "(?\u003c!\\{|\\+|\\-)\\b(?=m\\s*[^\\sa-zA-Z0-9])",
195
+ "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
223
196
  "patterns": [
224
197
  {
198
+ "name": "string.regexp.find-m.nested_braces.perl",
225
199
  "begin": "(m)\\s*\\{",
226
- "captures": {
227
- "0": {
228
- "name": "punctuation.definition.string.perl"
229
- },
230
- "1": {
231
- "name": "support.function.perl"
232
- }
233
- },
234
200
  "end": "\\}",
235
- "name": "string.regexp.find-m.nested_braces.perl",
236
201
  "patterns": [
237
202
  {
238
203
  "include": "#escaped_char"
@@ -243,10 +208,7 @@
243
208
  {
244
209
  "include": "#nested_braces_interpolated"
245
210
  }
246
- ]
247
- },
248
- {
249
- "begin": "(m)\\s*\\[",
211
+ ],
250
212
  "captures": {
251
213
  "0": {
252
214
  "name": "punctuation.definition.string.perl"
@@ -254,9 +216,12 @@
254
216
  "1": {
255
217
  "name": "support.function.perl"
256
218
  }
257
- },
258
- "end": "\\]",
219
+ }
220
+ },
221
+ {
259
222
  "name": "string.regexp.find-m.nested_brackets.perl",
223
+ "begin": "(m)\\s*\\[",
224
+ "end": "\\]",
260
225
  "patterns": [
261
226
  {
262
227
  "include": "#escaped_char"
@@ -267,10 +232,7 @@
267
232
  {
268
233
  "include": "#nested_brackets_interpolated"
269
234
  }
270
- ]
271
- },
272
- {
273
- "begin": "(m)\\s*<",
235
+ ],
274
236
  "captures": {
275
237
  "0": {
276
238
  "name": "punctuation.definition.string.perl"
@@ -278,9 +240,12 @@
278
240
  "1": {
279
241
  "name": "support.function.perl"
280
242
  }
281
- },
282
- "end": ">",
243
+ }
244
+ },
245
+ {
283
246
  "name": "string.regexp.find-m.nested_ltgt.perl",
247
+ "begin": "(m)\\s*\u003c",
248
+ "end": "\u003e",
284
249
  "patterns": [
285
250
  {
286
251
  "include": "#escaped_char"
@@ -291,10 +256,7 @@
291
256
  {
292
257
  "include": "#nested_ltgt_interpolated"
293
258
  }
294
- ]
295
- },
296
- {
297
- "begin": "(m)\\s*\\(",
259
+ ],
298
260
  "captures": {
299
261
  "0": {
300
262
  "name": "punctuation.definition.string.perl"
@@ -302,9 +264,12 @@
302
264
  "1": {
303
265
  "name": "support.function.perl"
304
266
  }
305
- },
306
- "end": "\\)",
267
+ }
268
+ },
269
+ {
307
270
  "name": "string.regexp.find-m.nested_parens.perl",
271
+ "begin": "(m)\\s*\\(",
272
+ "end": "\\)",
308
273
  "patterns": [
309
274
  {
310
275
  "include": "#escaped_char"
@@ -315,10 +280,7 @@
315
280
  {
316
281
  "include": "#nested_parens_interpolated"
317
282
  }
318
- ]
319
- },
320
- {
321
- "begin": "(m)\\s*'",
283
+ ],
322
284
  "captures": {
323
285
  "0": {
324
286
  "name": "punctuation.definition.string.perl"
@@ -326,17 +288,17 @@
326
288
  "1": {
327
289
  "name": "support.function.perl"
328
290
  }
329
- },
330
- "end": "'",
291
+ }
292
+ },
293
+ {
331
294
  "name": "string.regexp.find-m.single-quote.perl",
295
+ "begin": "(m)\\s*'",
296
+ "end": "'",
332
297
  "patterns": [
333
298
  {
334
299
  "include": "#escaped_char"
335
300
  }
336
- ]
337
- },
338
- {
339
- "begin": "(?<!\\{|\\+|\\-)(m)(?!_)\\s*([^\\sa-zA-Z0-9'\\{\\[\\(\\<])",
301
+ ],
340
302
  "captures": {
341
303
  "0": {
342
304
  "name": "punctuation.definition.string.perl"
@@ -344,14 +306,16 @@
344
306
  "1": {
345
307
  "name": "support.function.perl"
346
308
  }
347
- },
348
- "end": "\\2",
309
+ }
310
+ },
311
+ {
349
312
  "name": "string.regexp.find-m.simple-delimiter.perl",
313
+ "begin": "(?\u003c!\\{|\\+|\\-)(m)(?!_)\\s*([^\\sa-zA-Z0-9'\\{\\[\\(\\\u003c])",
314
+ "end": "\\2",
350
315
  "patterns": [
351
316
  {
352
- "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
353
- "match": "\\$(?=[^\\sa-zA-Z0-9'\\{\\[\\(\\<])",
354
- "name": "keyword.control.anchor.perl"
317
+ "name": "keyword.control.anchor.perl",
318
+ "match": "\\$(?=[^\\sa-zA-Z0-9'\\{\\[\\(\\\u003c])"
355
319
  },
356
320
  {
357
321
  "include": "#escaped_char"
@@ -360,45 +324,46 @@
360
324
  "include": "#variable"
361
325
  },
362
326
  {
327
+ "name": "constant.other.character-class.set.perl",
363
328
  "begin": "\\[",
329
+ "end": "\\]",
330
+ "patterns": [
331
+ {
332
+ "name": "keyword.control.anchor.perl",
333
+ "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\\u003c])"
334
+ },
335
+ {
336
+ "include": "#escaped_char"
337
+ }
338
+ ],
364
339
  "beginCaptures": {
365
340
  "1": {
366
341
  "name": "punctuation.definition.character-class.begin.perl"
367
342
  }
368
343
  },
369
- "end": "\\]",
370
344
  "endCaptures": {
371
345
  "1": {
372
346
  "name": "punctuation.definition.character-class.end.perl"
373
347
  }
374
- },
375
- "name": "constant.other.character-class.set.perl",
376
- "patterns": [
377
- {
378
- "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
379
- "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
380
- "name": "keyword.control.anchor.perl"
381
- },
382
- {
383
- "include": "#escaped_char"
384
- }
385
- ]
348
+ }
386
349
  },
387
350
  {
388
351
  "include": "#nested_parens_interpolated"
389
352
  }
390
- ]
353
+ ],
354
+ "captures": {
355
+ "0": {
356
+ "name": "punctuation.definition.string.perl"
357
+ },
358
+ "1": {
359
+ "name": "support.function.perl"
360
+ }
361
+ }
391
362
  }
392
- ]
393
- },
394
- {
395
- "applyEndPatternLast": 1,
396
- "begin": "\\b(?=(?<!\\&)(s)(\\s+\\S|\\s*[;\\,\\{\\}\\(\\)\\[<]|$))",
397
- "comment": "string.regexp.replace.perl",
398
- "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\{\\}\\)\\]>]|\\s*$))",
363
+ ],
399
364
  "endCaptures": {
400
365
  "1": {
401
- "name": "string.regexp.replace.perl"
366
+ "name": "string.regexp.find-m.perl"
402
367
  },
403
368
  "2": {
404
369
  "name": "punctuation.definition.string.perl"
@@ -407,19 +372,16 @@
407
372
  "name": "keyword.control.regexp-option.perl"
408
373
  }
409
374
  },
375
+ "applyEndPatternLast": true
376
+ },
377
+ {
378
+ "begin": "\\b(?=(?\u003c!\\\u0026)(s)(\\s+\\S|\\s*[;\\,\\{\\}\\(\\)\\[\u003c]|$))",
379
+ "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\{\\}\\)\\]\u003e]|\\s*$))",
410
380
  "patterns": [
411
381
  {
382
+ "name": "string.regexp.nested_braces.perl",
412
383
  "begin": "(s)\\s*\\{",
413
- "captures": {
414
- "0": {
415
- "name": "punctuation.definition.string.perl"
416
- },
417
- "1": {
418
- "name": "support.function.perl"
419
- }
420
- },
421
384
  "end": "\\}",
422
- "name": "string.regexp.nested_braces.perl",
423
385
  "patterns": [
424
386
  {
425
387
  "include": "#escaped_char"
@@ -427,10 +389,7 @@
427
389
  {
428
390
  "include": "#nested_braces"
429
391
  }
430
- ]
431
- },
432
- {
433
- "begin": "(s)\\s*\\[",
392
+ ],
434
393
  "captures": {
435
394
  "0": {
436
395
  "name": "punctuation.definition.string.perl"
@@ -438,9 +397,12 @@
438
397
  "1": {
439
398
  "name": "support.function.perl"
440
399
  }
441
- },
442
- "end": "\\]",
400
+ }
401
+ },
402
+ {
443
403
  "name": "string.regexp.nested_brackets.perl",
404
+ "begin": "(s)\\s*\\[",
405
+ "end": "\\]",
444
406
  "patterns": [
445
407
  {
446
408
  "include": "#escaped_char"
@@ -448,10 +410,7 @@
448
410
  {
449
411
  "include": "#nested_brackets"
450
412
  }
451
- ]
452
- },
453
- {
454
- "begin": "(s)\\s*<",
413
+ ],
455
414
  "captures": {
456
415
  "0": {
457
416
  "name": "punctuation.definition.string.perl"
@@ -459,9 +418,12 @@
459
418
  "1": {
460
419
  "name": "support.function.perl"
461
420
  }
462
- },
463
- "end": ">",
421
+ }
422
+ },
423
+ {
464
424
  "name": "string.regexp.nested_ltgt.perl",
425
+ "begin": "(s)\\s*\u003c",
426
+ "end": "\u003e",
465
427
  "patterns": [
466
428
  {
467
429
  "include": "#escaped_char"
@@ -469,10 +431,7 @@
469
431
  {
470
432
  "include": "#nested_ltgt"
471
433
  }
472
- ]
473
- },
474
- {
475
- "begin": "(s)\\s*\\(",
434
+ ],
476
435
  "captures": {
477
436
  "0": {
478
437
  "name": "punctuation.definition.string.perl"
@@ -480,9 +439,12 @@
480
439
  "1": {
481
440
  "name": "support.function.perl"
482
441
  }
483
- },
484
- "end": "\\)",
442
+ }
443
+ },
444
+ {
485
445
  "name": "string.regexp.nested_parens.perl",
446
+ "begin": "(s)\\s*\\(",
447
+ "end": "\\)",
486
448
  "patterns": [
487
449
  {
488
450
  "include": "#escaped_char"
@@ -490,17 +452,20 @@
490
452
  {
491
453
  "include": "#nested_parens"
492
454
  }
493
- ]
494
- },
495
- {
496
- "begin": "\\{",
455
+ ],
497
456
  "captures": {
498
457
  "0": {
499
458
  "name": "punctuation.definition.string.perl"
459
+ },
460
+ "1": {
461
+ "name": "support.function.perl"
500
462
  }
501
- },
502
- "end": "\\}",
463
+ }
464
+ },
465
+ {
503
466
  "name": "string.regexp.format.nested_braces.perl",
467
+ "begin": "\\{",
468
+ "end": "\\}",
504
469
  "patterns": [
505
470
  {
506
471
  "include": "#escaped_char"
@@ -511,17 +476,17 @@
511
476
  {
512
477
  "include": "#nested_braces_interpolated"
513
478
  }
514
- ]
515
- },
516
- {
517
- "begin": "\\[",
479
+ ],
518
480
  "captures": {
519
481
  "0": {
520
482
  "name": "punctuation.definition.string.perl"
521
483
  }
522
- },
523
- "end": "\\]",
484
+ }
485
+ },
486
+ {
524
487
  "name": "string.regexp.format.nested_brackets.perl",
488
+ "begin": "\\[",
489
+ "end": "\\]",
525
490
  "patterns": [
526
491
  {
527
492
  "include": "#escaped_char"
@@ -532,17 +497,17 @@
532
497
  {
533
498
  "include": "#nested_brackets_interpolated"
534
499
  }
535
- ]
536
- },
537
- {
538
- "begin": "<",
500
+ ],
539
501
  "captures": {
540
502
  "0": {
541
503
  "name": "punctuation.definition.string.perl"
542
504
  }
543
- },
544
- "end": ">",
505
+ }
506
+ },
507
+ {
545
508
  "name": "string.regexp.format.nested_ltgt.perl",
509
+ "begin": "\u003c",
510
+ "end": "\u003e",
546
511
  "patterns": [
547
512
  {
548
513
  "include": "#escaped_char"
@@ -553,17 +518,17 @@
553
518
  {
554
519
  "include": "#nested_ltgt_interpolated"
555
520
  }
556
- ]
557
- },
558
- {
559
- "begin": "\\(",
521
+ ],
560
522
  "captures": {
561
523
  "0": {
562
524
  "name": "punctuation.definition.string.perl"
563
525
  }
564
- },
565
- "end": "\\)",
526
+ }
527
+ },
528
+ {
566
529
  "name": "string.regexp.format.nested_parens.perl",
530
+ "begin": "\\(",
531
+ "end": "\\)",
567
532
  "patterns": [
568
533
  {
569
534
  "include": "#escaped_char"
@@ -574,33 +539,33 @@
574
539
  {
575
540
  "include": "#nested_parens_interpolated"
576
541
  }
577
- ]
578
- },
579
- {
580
- "begin": "'",
542
+ ],
581
543
  "captures": {
582
544
  "0": {
583
545
  "name": "punctuation.definition.string.perl"
584
546
  }
585
- },
586
- "end": "'",
547
+ }
548
+ },
549
+ {
587
550
  "name": "string.regexp.format.single_quote.perl",
551
+ "begin": "'",
552
+ "end": "'",
588
553
  "patterns": [
589
554
  {
590
- "match": "\\\\['\\\\]",
591
- "name": "constant.character.escape.perl"
555
+ "name": "constant.character.escape.perl",
556
+ "match": "\\\\['\\\\]"
592
557
  }
593
- ]
594
- },
595
- {
596
- "begin": "([^\\s\\w\\[({<;])",
558
+ ],
597
559
  "captures": {
598
560
  "0": {
599
561
  "name": "punctuation.definition.string.perl"
600
562
  }
601
- },
602
- "end": "\\1",
563
+ }
564
+ },
565
+ {
603
566
  "name": "string.regexp.format.simple_delimiter.perl",
567
+ "begin": "([^\\s\\w\\[({\u003c;])",
568
+ "end": "\\1",
604
569
  "patterns": [
605
570
  {
606
571
  "include": "#escaped_char"
@@ -608,17 +573,17 @@
608
573
  {
609
574
  "include": "#variable"
610
575
  }
611
- ]
576
+ ],
577
+ "captures": {
578
+ "0": {
579
+ "name": "punctuation.definition.string.perl"
580
+ }
581
+ }
612
582
  },
613
583
  {
614
584
  "match": "\\s+"
615
585
  }
616
- ]
617
- },
618
- {
619
- "begin": "\\b(?=s([^\\sa-zA-Z0-9\\[({<]).*\\1([egimosxradlupcn]*)([\\}\\)\\;\\,]|\\s+))",
620
- "comment": "string.regexp.replaceXXX",
621
- "end": "((([egimosxradlupcn]*)))(?=([\\}\\)\\;\\,]|\\s+|\\s*$))",
586
+ ],
622
587
  "endCaptures": {
623
588
  "1": {
624
589
  "name": "string.regexp.replace.perl"
@@ -630,9 +595,21 @@
630
595
  "name": "keyword.control.regexp-option.perl"
631
596
  }
632
597
  },
598
+ "applyEndPatternLast": true
599
+ },
600
+ {
601
+ "begin": "\\b(?=s([^\\sa-zA-Z0-9\\[({\u003c]).*\\1([egimosxradlupcn]*)([\\}\\)\\;\\,]|\\s+))",
602
+ "end": "((([egimosxradlupcn]*)))(?=([\\}\\)\\;\\,]|\\s+|\\s*$))",
633
603
  "patterns": [
634
604
  {
635
- "begin": "(s\\s*)([^\\sa-zA-Z0-9\\[({<])",
605
+ "name": "string.regexp.replaceXXX.simple_delimiter.perl",
606
+ "begin": "(s\\s*)([^\\sa-zA-Z0-9\\[({\u003c])",
607
+ "end": "(?=\\2)",
608
+ "patterns": [
609
+ {
610
+ "include": "#escaped_char"
611
+ }
612
+ ],
636
613
  "captures": {
637
614
  "0": {
638
615
  "name": "punctuation.definition.string.perl"
@@ -640,40 +617,28 @@
640
617
  "1": {
641
618
  "name": "support.function.perl"
642
619
  }
643
- },
644
- "end": "(?=\\2)",
645
- "name": "string.regexp.replaceXXX.simple_delimiter.perl",
646
- "patterns": [
647
- {
648
- "include": "#escaped_char"
649
- }
650
- ]
620
+ }
651
621
  },
652
622
  {
623
+ "name": "string.regexp.replaceXXX.format.single_quote.perl",
653
624
  "begin": "'",
654
- "captures": {
655
- "0": {
656
- "name": "punctuation.definition.string.perl"
657
- }
658
- },
659
625
  "end": "'",
660
- "name": "string.regexp.replaceXXX.format.single_quote.perl",
661
626
  "patterns": [
662
627
  {
663
- "match": "\\\\['\\\\]",
664
- "name": "constant.character.escape.perl.perl"
628
+ "name": "constant.character.escape.perl.perl",
629
+ "match": "\\\\['\\\\]"
665
630
  }
666
- ]
667
- },
668
- {
669
- "begin": "([^\\sa-zA-Z0-9\\[({<])",
631
+ ],
670
632
  "captures": {
671
633
  "0": {
672
634
  "name": "punctuation.definition.string.perl"
673
635
  }
674
- },
675
- "end": "\\1",
636
+ }
637
+ },
638
+ {
676
639
  "name": "string.regexp.replaceXXX.format.simple_delimiter.perl",
640
+ "begin": "([^\\sa-zA-Z0-9\\[({\u003c])",
641
+ "end": "\\1",
677
642
  "patterns": [
678
643
  {
679
644
  "include": "#escaped_char"
@@ -681,14 +646,14 @@
681
646
  {
682
647
  "include": "#variable"
683
648
  }
684
- ]
649
+ ],
650
+ "captures": {
651
+ "0": {
652
+ "name": "punctuation.definition.string.perl"
653
+ }
654
+ }
685
655
  }
686
- ]
687
- },
688
- {
689
- "begin": "\\b(?=(?<!\\\\)s\\s*([^\\s\\w\\[({<>]))",
690
- "comment": "string.regexp.replace.extended",
691
- "end": "((([egimosradlupc]*x[egimosradlupc]*)))\\b",
656
+ ],
692
657
  "endCaptures": {
693
658
  "1": {
694
659
  "name": "string.regexp.replace.perl"
@@ -699,10 +664,21 @@
699
664
  "3": {
700
665
  "name": "keyword.control.regexp-option.perl"
701
666
  }
702
- },
667
+ }
668
+ },
669
+ {
670
+ "begin": "\\b(?=(?\u003c!\\\\)s\\s*([^\\s\\w\\[({\u003c\u003e]))",
671
+ "end": "((([egimosradlupc]*x[egimosradlupc]*)))\\b",
703
672
  "patterns": [
704
673
  {
674
+ "name": "string.regexp.replace.extended.simple_delimiter.perl",
705
675
  "begin": "(s)\\s*(.)",
676
+ "end": "(?=\\2)",
677
+ "patterns": [
678
+ {
679
+ "include": "#escaped_char"
680
+ }
681
+ ],
706
682
  "captures": {
707
683
  "0": {
708
684
  "name": "punctuation.definition.string.perl"
@@ -710,39 +686,27 @@
710
686
  "1": {
711
687
  "name": "support.function.perl"
712
688
  }
713
- },
714
- "end": "(?=\\2)",
715
- "name": "string.regexp.replace.extended.simple_delimiter.perl",
716
- "patterns": [
717
- {
718
- "include": "#escaped_char"
719
- }
720
- ]
689
+ }
721
690
  },
722
691
  {
692
+ "name": "string.regexp.replace.extended.simple_delimiter.perl",
723
693
  "begin": "'",
724
- "captures": {
725
- "0": {
726
- "name": "punctuation.definition.string.perl"
727
- }
728
- },
729
694
  "end": "'(?=[egimosradlupc]*x[egimosradlupc]*)\\b",
730
- "name": "string.regexp.replace.extended.simple_delimiter.perl",
731
695
  "patterns": [
732
696
  {
733
697
  "include": "#escaped_char"
734
698
  }
735
- ]
736
- },
737
- {
738
- "begin": "(.)",
699
+ ],
739
700
  "captures": {
740
701
  "0": {
741
702
  "name": "punctuation.definition.string.perl"
742
703
  }
743
- },
744
- "end": "\\1(?=[egimosradlupc]*x[egimosradlupc]*)\\b",
704
+ }
705
+ },
706
+ {
745
707
  "name": "string.regexp.replace.extended.simple_delimiter.perl",
708
+ "begin": "(.)",
709
+ "end": "\\1(?=[egimosradlupc]*x[egimosradlupc]*)\\b",
746
710
  "patterns": [
747
711
  {
748
712
  "include": "#escaped_char"
@@ -750,12 +714,42 @@
750
714
  {
751
715
  "include": "#variable"
752
716
  }
753
- ]
717
+ ],
718
+ "captures": {
719
+ "0": {
720
+ "name": "punctuation.definition.string.perl"
721
+ }
722
+ }
754
723
  }
755
- ]
724
+ ],
725
+ "endCaptures": {
726
+ "1": {
727
+ "name": "string.regexp.replace.perl"
728
+ },
729
+ "2": {
730
+ "name": "punctuation.definition.string.perl"
731
+ },
732
+ "3": {
733
+ "name": "keyword.control.regexp-option.perl"
734
+ }
735
+ }
756
736
  },
757
737
  {
758
- "begin": "(?<=\\(|\\{|~|&|\\||if|unless|^)\\s*((\\/))",
738
+ "contentName": "string.regexp.find.perl",
739
+ "begin": "(?\u003c=\\(|\\{|~|\u0026|\\||if|unless|^)\\s*((\\/))",
740
+ "end": "((\\1([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
741
+ "patterns": [
742
+ {
743
+ "name": "keyword.control.anchor.perl",
744
+ "match": "\\$(?=\\/)"
745
+ },
746
+ {
747
+ "include": "#escaped_char"
748
+ },
749
+ {
750
+ "include": "#variable"
751
+ }
752
+ ],
759
753
  "beginCaptures": {
760
754
  "1": {
761
755
  "name": "string.regexp.find.perl"
@@ -764,8 +758,6 @@
764
758
  "name": "punctuation.definition.string.perl"
765
759
  }
766
760
  },
767
- "contentName": "string.regexp.find.perl",
768
- "end": "((\\1([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
769
761
  "endCaptures": {
770
762
  "1": {
771
763
  "name": "string.regexp.find.perl"
@@ -776,34 +768,23 @@
776
768
  "3": {
777
769
  "name": "keyword.control.regexp-option.perl"
778
770
  }
779
- },
780
- "patterns": [
781
- {
782
- "comment": "This is to prevent thinks like /foo$/ to treat $/ as a variable",
783
- "match": "\\$(?=\\/)",
784
- "name": "keyword.control.anchor.perl"
785
- },
786
- {
787
- "include": "#escaped_char"
788
- },
789
- {
790
- "include": "#variable"
791
- }
792
- ]
771
+ }
793
772
  },
794
773
  {
774
+ "match": "\\b(\\w+)\\s*(?==\u003e)",
795
775
  "captures": {
796
776
  "1": {
797
777
  "name": "constant.other.key.perl"
798
778
  }
799
- },
800
- "match": "\\b(\\w+)\\s*(?==>)"
779
+ }
801
780
  },
802
781
  {
803
- "match": "(?<={)\\s*\\w+\\s*(?=})",
804
- "name": "constant.other.bareword.perl"
782
+ "name": "constant.other.bareword.perl",
783
+ "match": "(?\u003c={)\\s*\\w+\\s*(?=})"
805
784
  },
806
785
  {
786
+ "name": "meta.class.perl",
787
+ "match": "^\\s*(package)\\s+([^\\s;]+)",
807
788
  "captures": {
808
789
  "1": {
809
790
  "name": "keyword.control.perl"
@@ -811,11 +792,11 @@
811
792
  "2": {
812
793
  "name": "entity.name.type.class.perl"
813
794
  }
814
- },
815
- "match": "^\\s*(package)\\s+([^\\s;]+)",
816
- "name": "meta.class.perl"
795
+ }
817
796
  },
818
797
  {
798
+ "name": "meta.function.perl",
799
+ "match": "\\b(sub)(?:\\s+([-a-zA-Z0-9_]+))?\\s*(?:\\([\\$\\@\\*;]*\\))?[^\\w\\{]",
819
800
  "captures": {
820
801
  "1": {
821
802
  "name": "storage.type.sub.perl"
@@ -826,11 +807,11 @@
826
807
  "3": {
827
808
  "name": "storage.type.method.perl"
828
809
  }
829
- },
830
- "match": "\\b(sub)(?:\\s+([-a-zA-Z0-9_]+))?\\s*(?:\\([\\$\\@\\*;]*\\))?[^\\w\\{]",
831
- "name": "meta.function.perl"
810
+ }
832
811
  },
833
812
  {
813
+ "name": "meta.function.perl",
814
+ "match": "^\\s*(BEGIN|UNITCHECK|CHECK|INIT|END|DESTROY)\\b",
834
815
  "captures": {
835
816
  "1": {
836
817
  "name": "entity.name.function.perl"
@@ -841,16 +822,15 @@
841
822
  "3": {
842
823
  "name": "variable.parameter.function.perl"
843
824
  }
844
- },
845
- "match": "^\\s*(BEGIN|UNITCHECK|CHECK|INIT|END|DESTROY)\\b",
846
- "name": "meta.function.perl"
825
+ }
847
826
  },
848
827
  {
828
+ "name": "meta.leading-tabs",
849
829
  "begin": "^(?=(\\t| {4}))",
850
830
  "end": "(?=[^\\t\\s])",
851
- "name": "meta.leading-tabs",
852
831
  "patterns": [
853
832
  {
833
+ "match": "(\\t| {4})(\\t| {4})?",
854
834
  "captures": {
855
835
  "1": {
856
836
  "name": "meta.odd-tab"
@@ -858,12 +838,13 @@
858
838
  "2": {
859
839
  "name": "meta.even-tab"
860
840
  }
861
- },
862
- "match": "(\\t| {4})(\\t| {4})?"
841
+ }
863
842
  }
864
843
  ]
865
844
  },
866
845
  {
846
+ "name": "string.regexp.replace.perl",
847
+ "match": "\\b(tr|y)\\s*([^A-Za-z0-9\\s])(.*?)(?\u003c!\\\\)(\\\\{2})*(\\2)(.*?)(?\u003c!\\\\)(\\\\{2})*(\\2)",
867
848
  "captures": {
868
849
  "1": {
869
850
  "name": "support.function.perl"
@@ -877,70 +858,50 @@
877
858
  "8": {
878
859
  "name": "punctuation.definition.string.perl"
879
860
  }
880
- },
881
- "match": "\\b(tr|y)\\s*([^A-Za-z0-9\\s])(.*?)(?<!\\\\)(\\\\{2})*(\\2)(.*?)(?<!\\\\)(\\\\{2})*(\\2)",
882
- "name": "string.regexp.replace.perl"
861
+ }
883
862
  },
884
863
  {
885
- "match": "\\b(__FILE__|__LINE__|__PACKAGE__|__SUB__)\\b",
886
- "name": "constant.language.perl"
864
+ "name": "constant.language.perl",
865
+ "match": "\\b(__FILE__|__LINE__|__PACKAGE__|__SUB__)\\b"
887
866
  },
888
867
  {
889
- "begin": "\\b(__DATA__|__END__)\\n?",
890
- "beginCaptures": {
891
- "1": {
892
- "name": "constant.language.perl"
893
- }
894
- },
895
868
  "contentName": "comment.block.documentation.perl",
869
+ "begin": "\\b(__DATA__|__END__)\\n?",
896
870
  "end": "\\z",
897
871
  "patterns": [
898
872
  {
899
873
  "include": "#pod"
900
874
  }
901
- ]
875
+ ],
876
+ "beginCaptures": {
877
+ "1": {
878
+ "name": "constant.language.perl"
879
+ }
880
+ }
902
881
  },
903
882
  {
904
- "match": "(?<!->)\\b(continue|default|die|do|else|elsif|exit|for|foreach|given|goto|if|last|next|redo|return|select|unless|until|wait|when|while|switch|case|require|use|eval)\\b",
905
- "name": "keyword.control.perl"
883
+ "name": "keyword.control.perl",
884
+ "match": "(?\u003c!-\u003e)\\b(continue|default|die|do|else|elsif|exit|for|foreach|given|goto|if|last|next|redo|return|select|unless|until|wait|when|while|switch|case|require|use|eval)\\b"
906
885
  },
907
886
  {
908
- "match": "\\b(my|our|local)\\b",
909
- "name": "storage.modifier.perl"
887
+ "name": "storage.modifier.perl",
888
+ "match": "\\b(my|our|local)\\b"
910
889
  },
911
890
  {
912
- "match": "(?<!\\w)\\-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b",
913
- "name": "keyword.operator.filetest.perl"
891
+ "name": "keyword.operator.filetest.perl",
892
+ "match": "(?\u003c!\\w)\\-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b"
914
893
  },
915
894
  {
916
- "match": "\\b(and|or|xor|as|not)\\b",
917
- "name": "keyword.operator.logical.perl"
895
+ "name": "keyword.operator.logical.perl",
896
+ "match": "\\b(and|or|xor|as|not)\\b"
918
897
  },
919
898
  {
920
- "match": "(<=>|=>|->)",
921
- "name": "keyword.operator.comparison.perl"
899
+ "name": "keyword.operator.comparison.perl",
900
+ "match": "(\u003c=\u003e|=\u003e|-\u003e)"
922
901
  },
923
902
  {
924
- "begin": "(((<<) *\"HTML\"))(.*)\\n?",
925
- "captures": {
926
- "1": {
927
- "name": "punctuation.definition.string.perl"
928
- },
929
- "2": {
930
- "name": "string.unquoted.heredoc.doublequote.perl"
931
- },
932
- "3": {
933
- "name": "punctuation.definition.heredoc.perl"
934
- },
935
- "4": {
936
- "patterns": [
937
- {
938
- "include": "$self"
939
- }
940
- ]
941
- }
942
- },
943
903
  "contentName": "text.html.embedded.perl",
904
+ "begin": "(((\u003c\u003c) *\"HTML\"))(.*)\\n?",
944
905
  "end": "(^HTML$)",
945
906
  "patterns": [
946
907
  {
@@ -952,10 +913,7 @@
952
913
  {
953
914
  "include": "text.html.basic"
954
915
  }
955
- ]
956
- },
957
- {
958
- "begin": "(((<<) *\"XML\"))(.*)\\n?",
916
+ ],
959
917
  "captures": {
960
918
  "1": {
961
919
  "name": "punctuation.definition.string.perl"
@@ -973,8 +931,11 @@
973
931
  }
974
932
  ]
975
933
  }
976
- },
934
+ }
935
+ },
936
+ {
977
937
  "contentName": "text.xml.embedded.perl",
938
+ "begin": "(((\u003c\u003c) *\"XML\"))(.*)\\n?",
978
939
  "end": "(^XML$)",
979
940
  "patterns": [
980
941
  {
@@ -986,10 +947,7 @@
986
947
  {
987
948
  "include": "text.xml"
988
949
  }
989
- ]
990
- },
991
- {
992
- "begin": "(((<<) *\"CSS\"))(.*)\\n?",
950
+ ],
993
951
  "captures": {
994
952
  "1": {
995
953
  "name": "punctuation.definition.string.perl"
@@ -1007,8 +965,11 @@
1007
965
  }
1008
966
  ]
1009
967
  }
1010
- },
968
+ }
969
+ },
970
+ {
1011
971
  "contentName": "text.css.embedded.perl",
972
+ "begin": "(((\u003c\u003c) *\"CSS\"))(.*)\\n?",
1012
973
  "end": "(^CSS$)",
1013
974
  "patterns": [
1014
975
  {
@@ -1020,10 +981,7 @@
1020
981
  {
1021
982
  "include": "source.css"
1022
983
  }
1023
- ]
1024
- },
1025
- {
1026
- "begin": "(((<<) *\"JAVASCRIPT\"))(.*)\\n?",
984
+ ],
1027
985
  "captures": {
1028
986
  "1": {
1029
987
  "name": "punctuation.definition.string.perl"
@@ -1041,8 +999,11 @@
1041
999
  }
1042
1000
  ]
1043
1001
  }
1044
- },
1002
+ }
1003
+ },
1004
+ {
1045
1005
  "contentName": "text.js.embedded.perl",
1006
+ "begin": "(((\u003c\u003c) *\"JAVASCRIPT\"))(.*)\\n?",
1046
1007
  "end": "(^JAVASCRIPT$)",
1047
1008
  "patterns": [
1048
1009
  {
@@ -1054,10 +1015,7 @@
1054
1015
  {
1055
1016
  "include": "source.js"
1056
1017
  }
1057
- ]
1058
- },
1059
- {
1060
- "begin": "(((<<) *\"SQL\"))(.*)\\n?",
1018
+ ],
1061
1019
  "captures": {
1062
1020
  "1": {
1063
1021
  "name": "punctuation.definition.string.perl"
@@ -1075,8 +1033,11 @@
1075
1033
  }
1076
1034
  ]
1077
1035
  }
1078
- },
1036
+ }
1037
+ },
1038
+ {
1079
1039
  "contentName": "source.sql.embedded.perl",
1040
+ "begin": "(((\u003c\u003c) *\"SQL\"))(.*)\\n?",
1080
1041
  "end": "(^SQL$)",
1081
1042
  "patterns": [
1082
1043
  {
@@ -1088,10 +1049,7 @@
1088
1049
  {
1089
1050
  "include": "source.sql"
1090
1051
  }
1091
- ]
1092
- },
1093
- {
1094
- "begin": "(((<<) *\"POSTSCRIPT\"))(.*)\\n?",
1052
+ ],
1095
1053
  "captures": {
1096
1054
  "1": {
1097
1055
  "name": "punctuation.definition.string.perl"
@@ -1109,8 +1067,11 @@
1109
1067
  }
1110
1068
  ]
1111
1069
  }
1112
- },
1070
+ }
1071
+ },
1072
+ {
1113
1073
  "contentName": "text.postscript.embedded.perl",
1074
+ "begin": "(((\u003c\u003c) *\"POSTSCRIPT\"))(.*)\\n?",
1114
1075
  "end": "(^POSTSCRIPT$)",
1115
1076
  "patterns": [
1116
1077
  {
@@ -1122,10 +1083,7 @@
1122
1083
  {
1123
1084
  "include": "source.postscript"
1124
1085
  }
1125
- ]
1126
- },
1127
- {
1128
- "begin": "(((<<) *\"([^\"]*)\"))(.*)\\n?",
1086
+ ],
1129
1087
  "captures": {
1130
1088
  "1": {
1131
1089
  "name": "punctuation.definition.string.perl"
@@ -1143,8 +1101,11 @@
1143
1101
  }
1144
1102
  ]
1145
1103
  }
1146
- },
1104
+ }
1105
+ },
1106
+ {
1147
1107
  "contentName": "string.unquoted.heredoc.doublequote.perl",
1108
+ "begin": "(((\u003c\u003c) *\"([^\"]*)\"))(.*)\\n?",
1148
1109
  "end": "(^\\4$)",
1149
1110
  "patterns": [
1150
1111
  {
@@ -1153,16 +1114,13 @@
1153
1114
  {
1154
1115
  "include": "#variable"
1155
1116
  }
1156
- ]
1157
- },
1158
- {
1159
- "begin": "(((<<) *'HTML'))(.*)\\n?",
1117
+ ],
1160
1118
  "captures": {
1161
1119
  "1": {
1162
1120
  "name": "punctuation.definition.string.perl"
1163
1121
  },
1164
1122
  "2": {
1165
- "name": "string.unquoted.heredoc.quote.perl"
1123
+ "name": "string.unquoted.heredoc.doublequote.perl"
1166
1124
  },
1167
1125
  "3": {
1168
1126
  "name": "punctuation.definition.heredoc.perl"
@@ -1174,17 +1132,17 @@
1174
1132
  }
1175
1133
  ]
1176
1134
  }
1177
- },
1135
+ }
1136
+ },
1137
+ {
1178
1138
  "contentName": "text.html.embedded.perl",
1139
+ "begin": "(((\u003c\u003c) *'HTML'))(.*)\\n?",
1179
1140
  "end": "(^HTML$)",
1180
1141
  "patterns": [
1181
1142
  {
1182
1143
  "include": "text.html.basic"
1183
1144
  }
1184
- ]
1185
- },
1186
- {
1187
- "begin": "(((<<) *'XML'))(.*)\\n?",
1145
+ ],
1188
1146
  "captures": {
1189
1147
  "1": {
1190
1148
  "name": "punctuation.definition.string.perl"
@@ -1202,17 +1160,17 @@
1202
1160
  }
1203
1161
  ]
1204
1162
  }
1205
- },
1163
+ }
1164
+ },
1165
+ {
1206
1166
  "contentName": "text.xml.embedded.perl",
1167
+ "begin": "(((\u003c\u003c) *'XML'))(.*)\\n?",
1207
1168
  "end": "(^XML$)",
1208
1169
  "patterns": [
1209
1170
  {
1210
1171
  "include": "text.xml"
1211
1172
  }
1212
- ]
1213
- },
1214
- {
1215
- "begin": "(((<<) *'CSS'))(.*)\\n?",
1173
+ ],
1216
1174
  "captures": {
1217
1175
  "1": {
1218
1176
  "name": "punctuation.definition.string.perl"
@@ -1230,17 +1188,17 @@
1230
1188
  }
1231
1189
  ]
1232
1190
  }
1233
- },
1191
+ }
1192
+ },
1193
+ {
1234
1194
  "contentName": "text.css.embedded.perl",
1195
+ "begin": "(((\u003c\u003c) *'CSS'))(.*)\\n?",
1235
1196
  "end": "(^CSS$)",
1236
1197
  "patterns": [
1237
1198
  {
1238
1199
  "include": "source.css"
1239
1200
  }
1240
- ]
1241
- },
1242
- {
1243
- "begin": "(((<<) *'JAVASCRIPT'))(.*)\\n?",
1201
+ ],
1244
1202
  "captures": {
1245
1203
  "1": {
1246
1204
  "name": "punctuation.definition.string.perl"
@@ -1258,17 +1216,17 @@
1258
1216
  }
1259
1217
  ]
1260
1218
  }
1261
- },
1219
+ }
1220
+ },
1221
+ {
1262
1222
  "contentName": "text.js.embedded.perl",
1223
+ "begin": "(((\u003c\u003c) *'JAVASCRIPT'))(.*)\\n?",
1263
1224
  "end": "(^JAVASCRIPT$)",
1264
1225
  "patterns": [
1265
1226
  {
1266
1227
  "include": "source.js"
1267
1228
  }
1268
- ]
1269
- },
1270
- {
1271
- "begin": "(((<<) *'SQL'))(.*)\\n?",
1229
+ ],
1272
1230
  "captures": {
1273
1231
  "1": {
1274
1232
  "name": "punctuation.definition.string.perl"
@@ -1286,17 +1244,17 @@
1286
1244
  }
1287
1245
  ]
1288
1246
  }
1289
- },
1247
+ }
1248
+ },
1249
+ {
1290
1250
  "contentName": "source.sql.embedded.perl",
1251
+ "begin": "(((\u003c\u003c) *'SQL'))(.*)\\n?",
1291
1252
  "end": "(^SQL$)",
1292
1253
  "patterns": [
1293
1254
  {
1294
1255
  "include": "source.sql"
1295
1256
  }
1296
- ]
1297
- },
1298
- {
1299
- "begin": "(((<<) *'POSTSCRIPT'))(.*)\\n?",
1257
+ ],
1300
1258
  "captures": {
1301
1259
  "1": {
1302
1260
  "name": "punctuation.definition.string.perl"
@@ -1314,17 +1272,17 @@
1314
1272
  }
1315
1273
  ]
1316
1274
  }
1317
- },
1275
+ }
1276
+ },
1277
+ {
1318
1278
  "contentName": "source.postscript.embedded.perl",
1279
+ "begin": "(((\u003c\u003c) *'POSTSCRIPT'))(.*)\\n?",
1319
1280
  "end": "(^POSTSCRIPT$)",
1320
1281
  "patterns": [
1321
1282
  {
1322
1283
  "include": "source.postscript"
1323
1284
  }
1324
- ]
1325
- },
1326
- {
1327
- "begin": "(((<<) *'([^']*)'))(.*)\\n?",
1285
+ ],
1328
1286
  "captures": {
1329
1287
  "1": {
1330
1288
  "name": "punctuation.definition.string.perl"
@@ -1342,12 +1300,12 @@
1342
1300
  }
1343
1301
  ]
1344
1302
  }
1345
- },
1346
- "contentName": "string.unquoted.heredoc.quote.perl",
1347
- "end": "(^\\4$)"
1303
+ }
1348
1304
  },
1349
1305
  {
1350
- "begin": "(((<<) *\\\\((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)))(.*)\\n?",
1306
+ "contentName": "string.unquoted.heredoc.quote.perl",
1307
+ "begin": "(((\u003c\u003c) *'([^']*)'))(.*)\\n?",
1308
+ "end": "(^\\4$)",
1351
1309
  "captures": {
1352
1310
  "1": {
1353
1311
  "name": "punctuation.definition.string.perl"
@@ -1365,18 +1323,18 @@
1365
1323
  }
1366
1324
  ]
1367
1325
  }
1368
- },
1369
- "contentName": "string.unquoted.heredoc.quote.perl",
1370
- "end": "(^\\4$)"
1326
+ }
1371
1327
  },
1372
1328
  {
1373
- "begin": "(((<<) *`([^`]*)`))(.*)\\n?",
1329
+ "contentName": "string.unquoted.heredoc.quote.perl",
1330
+ "begin": "(((\u003c\u003c) *\\\\((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)))(.*)\\n?",
1331
+ "end": "(^\\4$)",
1374
1332
  "captures": {
1375
1333
  "1": {
1376
1334
  "name": "punctuation.definition.string.perl"
1377
1335
  },
1378
1336
  "2": {
1379
- "name": "string.unquoted.heredoc.backtick.perl"
1337
+ "name": "string.unquoted.heredoc.quote.perl"
1380
1338
  },
1381
1339
  "3": {
1382
1340
  "name": "punctuation.definition.heredoc.perl"
@@ -1388,8 +1346,11 @@
1388
1346
  }
1389
1347
  ]
1390
1348
  }
1391
- },
1349
+ }
1350
+ },
1351
+ {
1392
1352
  "contentName": "string.unquoted.heredoc.backtick.perl",
1353
+ "begin": "(((\u003c\u003c) *`([^`]*)`))(.*)\\n?",
1393
1354
  "end": "(^\\4$)",
1394
1355
  "patterns": [
1395
1356
  {
@@ -1398,16 +1359,13 @@
1398
1359
  {
1399
1360
  "include": "#variable"
1400
1361
  }
1401
- ]
1402
- },
1403
- {
1404
- "begin": "(((<<) *HTML\\b))(.*)\\n?",
1362
+ ],
1405
1363
  "captures": {
1406
1364
  "1": {
1407
1365
  "name": "punctuation.definition.string.perl"
1408
1366
  },
1409
1367
  "2": {
1410
- "name": "string.unquoted.heredoc.perl"
1368
+ "name": "string.unquoted.heredoc.backtick.perl"
1411
1369
  },
1412
1370
  "3": {
1413
1371
  "name": "punctuation.definition.heredoc.perl"
@@ -1419,8 +1377,11 @@
1419
1377
  }
1420
1378
  ]
1421
1379
  }
1422
- },
1380
+ }
1381
+ },
1382
+ {
1423
1383
  "contentName": "text.html.embedded.perl",
1384
+ "begin": "(((\u003c\u003c) *HTML\\b))(.*)\\n?",
1424
1385
  "end": "(^HTML$)",
1425
1386
  "patterns": [
1426
1387
  {
@@ -1432,10 +1393,7 @@
1432
1393
  {
1433
1394
  "include": "text.html.basic"
1434
1395
  }
1435
- ]
1436
- },
1437
- {
1438
- "begin": "(((<<) *XML\\b))(.*)\\n?",
1396
+ ],
1439
1397
  "captures": {
1440
1398
  "1": {
1441
1399
  "name": "punctuation.definition.string.perl"
@@ -1453,8 +1411,11 @@
1453
1411
  }
1454
1412
  ]
1455
1413
  }
1456
- },
1414
+ }
1415
+ },
1416
+ {
1457
1417
  "contentName": "text.xml.embedded.perl",
1418
+ "begin": "(((\u003c\u003c) *XML\\b))(.*)\\n?",
1458
1419
  "end": "(^XML$)",
1459
1420
  "patterns": [
1460
1421
  {
@@ -1466,10 +1427,7 @@
1466
1427
  {
1467
1428
  "include": "text.xml"
1468
1429
  }
1469
- ]
1470
- },
1471
- {
1472
- "begin": "(((<<) *JAVASCRIPT\\b))(.*)\\n?",
1430
+ ],
1473
1431
  "captures": {
1474
1432
  "1": {
1475
1433
  "name": "punctuation.definition.string.perl"
@@ -1487,8 +1445,11 @@
1487
1445
  }
1488
1446
  ]
1489
1447
  }
1490
- },
1448
+ }
1449
+ },
1450
+ {
1491
1451
  "contentName": "source.js.embedded.perl",
1452
+ "begin": "(((\u003c\u003c) *JAVASCRIPT\\b))(.*)\\n?",
1492
1453
  "end": "(^JAVASCRIPT$)",
1493
1454
  "patterns": [
1494
1455
  {
@@ -1500,10 +1461,7 @@
1500
1461
  {
1501
1462
  "include": "source.js"
1502
1463
  }
1503
- ]
1504
- },
1505
- {
1506
- "begin": "(((<<) *SQL\\b))(.*)\\n?",
1464
+ ],
1507
1465
  "captures": {
1508
1466
  "1": {
1509
1467
  "name": "punctuation.definition.string.perl"
@@ -1521,8 +1479,11 @@
1521
1479
  }
1522
1480
  ]
1523
1481
  }
1524
- },
1482
+ }
1483
+ },
1484
+ {
1525
1485
  "contentName": "source.sql.embedded.perl",
1486
+ "begin": "(((\u003c\u003c) *SQL\\b))(.*)\\n?",
1526
1487
  "end": "(^SQL$)",
1527
1488
  "patterns": [
1528
1489
  {
@@ -1534,10 +1495,7 @@
1534
1495
  {
1535
1496
  "include": "source.sql"
1536
1497
  }
1537
- ]
1538
- },
1539
- {
1540
- "begin": "(((<<) *POSTSCRIPT\\b))(.*)\\n?",
1498
+ ],
1541
1499
  "captures": {
1542
1500
  "1": {
1543
1501
  "name": "punctuation.definition.string.perl"
@@ -1555,8 +1513,11 @@
1555
1513
  }
1556
1514
  ]
1557
1515
  }
1558
- },
1516
+ }
1517
+ },
1518
+ {
1559
1519
  "contentName": "source.postscript.embedded.perl",
1520
+ "begin": "(((\u003c\u003c) *POSTSCRIPT\\b))(.*)\\n?",
1560
1521
  "end": "(^POSTSCRIPT$)",
1561
1522
  "patterns": [
1562
1523
  {
@@ -1568,10 +1529,7 @@
1568
1529
  {
1569
1530
  "include": "source.postscript"
1570
1531
  }
1571
- ]
1572
- },
1573
- {
1574
- "begin": "(((<<) *((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)))(.*)\\n?",
1532
+ ],
1575
1533
  "captures": {
1576
1534
  "1": {
1577
1535
  "name": "punctuation.definition.string.perl"
@@ -1582,15 +1540,18 @@
1582
1540
  "3": {
1583
1541
  "name": "punctuation.definition.heredoc.perl"
1584
1542
  },
1585
- "5": {
1543
+ "4": {
1586
1544
  "patterns": [
1587
1545
  {
1588
1546
  "include": "$self"
1589
1547
  }
1590
1548
  ]
1591
1549
  }
1592
- },
1550
+ }
1551
+ },
1552
+ {
1593
1553
  "contentName": "string.unquoted.heredoc.perl",
1554
+ "begin": "(((\u003c\u003c) *((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)))(.*)\\n?",
1594
1555
  "end": "(^\\4$)",
1595
1556
  "patterns": [
1596
1557
  {
@@ -1599,22 +1560,30 @@
1599
1560
  {
1600
1561
  "include": "#variable"
1601
1562
  }
1602
- ]
1563
+ ],
1564
+ "captures": {
1565
+ "1": {
1566
+ "name": "punctuation.definition.string.perl"
1567
+ },
1568
+ "2": {
1569
+ "name": "string.unquoted.heredoc.perl"
1570
+ },
1571
+ "3": {
1572
+ "name": "punctuation.definition.heredoc.perl"
1573
+ },
1574
+ "5": {
1575
+ "patterns": [
1576
+ {
1577
+ "include": "$self"
1578
+ }
1579
+ ]
1580
+ }
1581
+ }
1603
1582
  },
1604
1583
  {
1605
- "begin": "\\bqq\\s*([^\\(\\{\\[\\<\\w\\s])",
1606
- "beginCaptures": {
1607
- "0": {
1608
- "name": "punctuation.definition.string.begin.perl"
1609
- }
1610
- },
1611
- "end": "\\1",
1612
- "endCaptures": {
1613
- "0": {
1614
- "name": "punctuation.definition.string.end.perl"
1615
- }
1616
- },
1617
1584
  "name": "string.quoted.other.qq.perl",
1585
+ "begin": "\\bqq\\s*([^\\(\\{\\[\\\u003c\\w\\s])",
1586
+ "end": "\\1",
1618
1587
  "patterns": [
1619
1588
  {
1620
1589
  "include": "#escaped_char"
@@ -1622,22 +1591,22 @@
1622
1591
  {
1623
1592
  "include": "#variable"
1624
1593
  }
1625
- ]
1626
- },
1627
- {
1628
- "begin": "\\bqx\\s*([^'\\(\\{\\[\\<\\w\\s])",
1594
+ ],
1629
1595
  "beginCaptures": {
1630
1596
  "0": {
1631
1597
  "name": "punctuation.definition.string.begin.perl"
1632
1598
  }
1633
1599
  },
1634
- "end": "\\1",
1635
1600
  "endCaptures": {
1636
1601
  "0": {
1637
1602
  "name": "punctuation.definition.string.end.perl"
1638
1603
  }
1639
- },
1604
+ }
1605
+ },
1606
+ {
1640
1607
  "name": "string.interpolated.qx.perl",
1608
+ "begin": "\\bqx\\s*([^'\\(\\{\\[\\\u003c\\w\\s])",
1609
+ "end": "\\1",
1641
1610
  "patterns": [
1642
1611
  {
1643
1612
  "include": "#escaped_char"
@@ -1645,42 +1614,42 @@
1645
1614
  {
1646
1615
  "include": "#variable"
1647
1616
  }
1648
- ]
1649
- },
1650
- {
1651
- "begin": "\\bqx\\s*'",
1617
+ ],
1652
1618
  "beginCaptures": {
1653
1619
  "0": {
1654
1620
  "name": "punctuation.definition.string.begin.perl"
1655
1621
  }
1656
1622
  },
1657
- "end": "'",
1658
1623
  "endCaptures": {
1659
1624
  "0": {
1660
1625
  "name": "punctuation.definition.string.end.perl"
1661
1626
  }
1662
- },
1627
+ }
1628
+ },
1629
+ {
1663
1630
  "name": "string.interpolated.qx.single-quote.perl",
1631
+ "begin": "\\bqx\\s*'",
1632
+ "end": "'",
1664
1633
  "patterns": [
1665
1634
  {
1666
1635
  "include": "#escaped_char"
1667
1636
  }
1668
- ]
1669
- },
1670
- {
1671
- "begin": "\"",
1637
+ ],
1672
1638
  "beginCaptures": {
1673
1639
  "0": {
1674
1640
  "name": "punctuation.definition.string.begin.perl"
1675
1641
  }
1676
1642
  },
1677
- "end": "\"",
1678
1643
  "endCaptures": {
1679
1644
  "0": {
1680
1645
  "name": "punctuation.definition.string.end.perl"
1681
1646
  }
1682
- },
1647
+ }
1648
+ },
1649
+ {
1683
1650
  "name": "string.quoted.double.perl",
1651
+ "begin": "\"",
1652
+ "end": "\"",
1684
1653
  "patterns": [
1685
1654
  {
1686
1655
  "include": "#escaped_char"
@@ -1688,58 +1657,58 @@
1688
1657
  {
1689
1658
  "include": "#variable"
1690
1659
  }
1691
- ]
1692
- },
1693
- {
1694
- "begin": "(?<!->)\\bqw?\\s*([^\\(\\{\\[\\<\\w\\s])",
1660
+ ],
1695
1661
  "beginCaptures": {
1696
1662
  "0": {
1697
1663
  "name": "punctuation.definition.string.begin.perl"
1698
1664
  }
1699
1665
  },
1700
- "end": "\\1",
1701
1666
  "endCaptures": {
1702
1667
  "0": {
1703
1668
  "name": "punctuation.definition.string.end.perl"
1704
1669
  }
1705
- },
1706
- "name": "string.quoted.other.q.perl"
1670
+ }
1707
1671
  },
1708
1672
  {
1709
- "begin": "'",
1673
+ "name": "string.quoted.other.q.perl",
1674
+ "begin": "(?\u003c!-\u003e)\\bqw?\\s*([^\\(\\{\\[\\\u003c\\w\\s])",
1675
+ "end": "\\1",
1710
1676
  "beginCaptures": {
1711
1677
  "0": {
1712
1678
  "name": "punctuation.definition.string.begin.perl"
1713
1679
  }
1714
1680
  },
1715
- "end": "'",
1716
1681
  "endCaptures": {
1717
1682
  "0": {
1718
1683
  "name": "punctuation.definition.string.end.perl"
1719
1684
  }
1720
- },
1685
+ }
1686
+ },
1687
+ {
1721
1688
  "name": "string.quoted.single.perl",
1689
+ "begin": "'",
1690
+ "end": "'",
1722
1691
  "patterns": [
1723
1692
  {
1724
- "match": "\\\\['\\\\]",
1725
- "name": "constant.character.escape.perl"
1693
+ "name": "constant.character.escape.perl",
1694
+ "match": "\\\\['\\\\]"
1726
1695
  }
1727
- ]
1728
- },
1729
- {
1730
- "begin": "`",
1696
+ ],
1731
1697
  "beginCaptures": {
1732
1698
  "0": {
1733
1699
  "name": "punctuation.definition.string.begin.perl"
1734
1700
  }
1735
1701
  },
1736
- "end": "`",
1737
1702
  "endCaptures": {
1738
1703
  "0": {
1739
1704
  "name": "punctuation.definition.string.end.perl"
1740
1705
  }
1741
- },
1706
+ }
1707
+ },
1708
+ {
1742
1709
  "name": "string.interpolated.perl",
1710
+ "begin": "`",
1711
+ "end": "`",
1743
1712
  "patterns": [
1744
1713
  {
1745
1714
  "include": "#escaped_char"
@@ -1747,22 +1716,22 @@
1747
1716
  {
1748
1717
  "include": "#variable"
1749
1718
  }
1750
- ]
1751
- },
1752
- {
1753
- "begin": "(?<!->)\\bqq\\s*\\(",
1719
+ ],
1754
1720
  "beginCaptures": {
1755
1721
  "0": {
1756
1722
  "name": "punctuation.definition.string.begin.perl"
1757
1723
  }
1758
1724
  },
1759
- "end": "\\)",
1760
1725
  "endCaptures": {
1761
1726
  "0": {
1762
1727
  "name": "punctuation.definition.string.end.perl"
1763
1728
  }
1764
- },
1729
+ }
1730
+ },
1731
+ {
1765
1732
  "name": "string.quoted.other.qq-paren.perl",
1733
+ "begin": "(?\u003c!-\u003e)\\bqq\\s*\\(",
1734
+ "end": "\\)",
1766
1735
  "patterns": [
1767
1736
  {
1768
1737
  "include": "#escaped_char"
@@ -1773,22 +1742,22 @@
1773
1742
  {
1774
1743
  "include": "#variable"
1775
1744
  }
1776
- ]
1777
- },
1778
- {
1779
- "begin": "\\bqq\\s*\\{",
1745
+ ],
1780
1746
  "beginCaptures": {
1781
1747
  "0": {
1782
1748
  "name": "punctuation.definition.string.begin.perl"
1783
1749
  }
1784
1750
  },
1785
- "end": "\\}",
1786
1751
  "endCaptures": {
1787
1752
  "0": {
1788
1753
  "name": "punctuation.definition.string.end.perl"
1789
1754
  }
1790
- },
1755
+ }
1756
+ },
1757
+ {
1791
1758
  "name": "string.quoted.other.qq-brace.perl",
1759
+ "begin": "\\bqq\\s*\\{",
1760
+ "end": "\\}",
1792
1761
  "patterns": [
1793
1762
  {
1794
1763
  "include": "#escaped_char"
@@ -1799,22 +1768,22 @@
1799
1768
  {
1800
1769
  "include": "#variable"
1801
1770
  }
1802
- ]
1803
- },
1804
- {
1805
- "begin": "\\bqq\\s*\\[",
1771
+ ],
1806
1772
  "beginCaptures": {
1807
1773
  "0": {
1808
1774
  "name": "punctuation.definition.string.begin.perl"
1809
1775
  }
1810
1776
  },
1811
- "end": "\\]",
1812
1777
  "endCaptures": {
1813
1778
  "0": {
1814
1779
  "name": "punctuation.definition.string.end.perl"
1815
1780
  }
1816
- },
1781
+ }
1782
+ },
1783
+ {
1817
1784
  "name": "string.quoted.other.qq-bracket.perl",
1785
+ "begin": "\\bqq\\s*\\[",
1786
+ "end": "\\]",
1818
1787
  "patterns": [
1819
1788
  {
1820
1789
  "include": "#escaped_char"
@@ -1825,22 +1794,22 @@
1825
1794
  {
1826
1795
  "include": "#variable"
1827
1796
  }
1828
- ]
1829
- },
1830
- {
1831
- "begin": "\\bqq\\s*\\<",
1797
+ ],
1832
1798
  "beginCaptures": {
1833
1799
  "0": {
1834
1800
  "name": "punctuation.definition.string.begin.perl"
1835
1801
  }
1836
1802
  },
1837
- "end": "\\>",
1838
1803
  "endCaptures": {
1839
1804
  "0": {
1840
1805
  "name": "punctuation.definition.string.end.perl"
1841
1806
  }
1842
- },
1807
+ }
1808
+ },
1809
+ {
1843
1810
  "name": "string.quoted.other.qq-ltgt.perl",
1811
+ "begin": "\\bqq\\s*\\\u003c",
1812
+ "end": "\\\u003e",
1844
1813
  "patterns": [
1845
1814
  {
1846
1815
  "include": "#escaped_char"
@@ -1851,22 +1820,22 @@
1851
1820
  {
1852
1821
  "include": "#variable"
1853
1822
  }
1854
- ]
1855
- },
1856
- {
1857
- "begin": "(?<!->)\\bqx\\s*\\(",
1823
+ ],
1858
1824
  "beginCaptures": {
1859
1825
  "0": {
1860
1826
  "name": "punctuation.definition.string.begin.perl"
1861
1827
  }
1862
1828
  },
1863
- "end": "\\)",
1864
1829
  "endCaptures": {
1865
1830
  "0": {
1866
1831
  "name": "punctuation.definition.string.end.perl"
1867
1832
  }
1868
- },
1833
+ }
1834
+ },
1835
+ {
1869
1836
  "name": "string.interpolated.qx-paren.perl",
1837
+ "begin": "(?\u003c!-\u003e)\\bqx\\s*\\(",
1838
+ "end": "\\)",
1870
1839
  "patterns": [
1871
1840
  {
1872
1841
  "include": "#escaped_char"
@@ -1877,22 +1846,22 @@
1877
1846
  {
1878
1847
  "include": "#variable"
1879
1848
  }
1880
- ]
1881
- },
1882
- {
1883
- "begin": "\\bqx\\s*\\{",
1849
+ ],
1884
1850
  "beginCaptures": {
1885
1851
  "0": {
1886
1852
  "name": "punctuation.definition.string.begin.perl"
1887
1853
  }
1888
1854
  },
1889
- "end": "\\}",
1890
1855
  "endCaptures": {
1891
1856
  "0": {
1892
1857
  "name": "punctuation.definition.string.end.perl"
1893
1858
  }
1894
- },
1859
+ }
1860
+ },
1861
+ {
1895
1862
  "name": "string.interpolated.qx-brace.perl",
1863
+ "begin": "\\bqx\\s*\\{",
1864
+ "end": "\\}",
1896
1865
  "patterns": [
1897
1866
  {
1898
1867
  "include": "#escaped_char"
@@ -1903,22 +1872,22 @@
1903
1872
  {
1904
1873
  "include": "#variable"
1905
1874
  }
1906
- ]
1907
- },
1908
- {
1909
- "begin": "\\bqx\\s*\\[",
1875
+ ],
1910
1876
  "beginCaptures": {
1911
1877
  "0": {
1912
1878
  "name": "punctuation.definition.string.begin.perl"
1913
1879
  }
1914
1880
  },
1915
- "end": "\\]",
1916
1881
  "endCaptures": {
1917
1882
  "0": {
1918
1883
  "name": "punctuation.definition.string.end.perl"
1919
1884
  }
1920
- },
1885
+ }
1886
+ },
1887
+ {
1921
1888
  "name": "string.interpolated.qx-bracket.perl",
1889
+ "begin": "\\bqx\\s*\\[",
1890
+ "end": "\\]",
1922
1891
  "patterns": [
1923
1892
  {
1924
1893
  "include": "#escaped_char"
@@ -1929,22 +1898,22 @@
1929
1898
  {
1930
1899
  "include": "#variable"
1931
1900
  }
1932
- ]
1933
- },
1934
- {
1935
- "begin": "\\bqx\\s*\\<",
1901
+ ],
1936
1902
  "beginCaptures": {
1937
1903
  "0": {
1938
1904
  "name": "punctuation.definition.string.begin.perl"
1939
1905
  }
1940
1906
  },
1941
- "end": "\\>",
1942
1907
  "endCaptures": {
1943
1908
  "0": {
1944
1909
  "name": "punctuation.definition.string.end.perl"
1945
1910
  }
1946
- },
1911
+ }
1912
+ },
1913
+ {
1947
1914
  "name": "string.interpolated.qx-ltgt.perl",
1915
+ "begin": "\\bqx\\s*\\\u003c",
1916
+ "end": "\\\u003e",
1948
1917
  "patterns": [
1949
1918
  {
1950
1919
  "include": "#escaped_char"
@@ -1955,115 +1924,117 @@
1955
1924
  {
1956
1925
  "include": "#variable"
1957
1926
  }
1958
- ]
1959
- },
1960
- {
1961
- "begin": "(?<!->)\\bqw?\\s*\\(",
1927
+ ],
1962
1928
  "beginCaptures": {
1963
1929
  "0": {
1964
1930
  "name": "punctuation.definition.string.begin.perl"
1965
1931
  }
1966
1932
  },
1967
- "end": "\\)",
1968
1933
  "endCaptures": {
1969
1934
  "0": {
1970
1935
  "name": "punctuation.definition.string.end.perl"
1971
1936
  }
1972
- },
1937
+ }
1938
+ },
1939
+ {
1973
1940
  "name": "string.quoted.other.q-paren.perl",
1941
+ "begin": "(?\u003c!-\u003e)\\bqw?\\s*\\(",
1942
+ "end": "\\)",
1974
1943
  "patterns": [
1975
1944
  {
1976
1945
  "include": "#nested_parens"
1977
1946
  }
1978
- ]
1979
- },
1980
- {
1981
- "begin": "\\bqw?\\s*\\{",
1947
+ ],
1982
1948
  "beginCaptures": {
1983
1949
  "0": {
1984
1950
  "name": "punctuation.definition.string.begin.perl"
1985
1951
  }
1986
1952
  },
1987
- "end": "\\}",
1988
1953
  "endCaptures": {
1989
1954
  "0": {
1990
1955
  "name": "punctuation.definition.string.end.perl"
1991
1956
  }
1992
- },
1957
+ }
1958
+ },
1959
+ {
1993
1960
  "name": "string.quoted.other.q-brace.perl",
1961
+ "begin": "\\bqw?\\s*\\{",
1962
+ "end": "\\}",
1994
1963
  "patterns": [
1995
1964
  {
1996
1965
  "include": "#nested_braces"
1997
1966
  }
1998
- ]
1999
- },
2000
- {
2001
- "begin": "\\bqw?\\s*\\[",
1967
+ ],
2002
1968
  "beginCaptures": {
2003
1969
  "0": {
2004
1970
  "name": "punctuation.definition.string.begin.perl"
2005
1971
  }
2006
1972
  },
2007
- "end": "\\]",
2008
1973
  "endCaptures": {
2009
1974
  "0": {
2010
1975
  "name": "punctuation.definition.string.end.perl"
2011
1976
  }
2012
- },
1977
+ }
1978
+ },
1979
+ {
2013
1980
  "name": "string.quoted.other.q-bracket.perl",
1981
+ "begin": "\\bqw?\\s*\\[",
1982
+ "end": "\\]",
2014
1983
  "patterns": [
2015
1984
  {
2016
1985
  "include": "#nested_brackets"
2017
1986
  }
2018
- ]
2019
- },
2020
- {
2021
- "begin": "\\bqw?\\s*\\<",
1987
+ ],
2022
1988
  "beginCaptures": {
2023
1989
  "0": {
2024
1990
  "name": "punctuation.definition.string.begin.perl"
2025
1991
  }
2026
1992
  },
2027
- "end": "\\>",
2028
1993
  "endCaptures": {
2029
1994
  "0": {
2030
1995
  "name": "punctuation.definition.string.end.perl"
2031
1996
  }
2032
- },
1997
+ }
1998
+ },
1999
+ {
2033
2000
  "name": "string.quoted.other.q-ltgt.perl",
2001
+ "begin": "\\bqw?\\s*\\\u003c",
2002
+ "end": "\\\u003e",
2034
2003
  "patterns": [
2035
2004
  {
2036
2005
  "include": "#nested_ltgt"
2037
2006
  }
2038
- ]
2007
+ ],
2008
+ "beginCaptures": {
2009
+ "0": {
2010
+ "name": "punctuation.definition.string.begin.perl"
2011
+ }
2012
+ },
2013
+ "endCaptures": {
2014
+ "0": {
2015
+ "name": "punctuation.definition.string.end.perl"
2016
+ }
2017
+ }
2039
2018
  },
2040
2019
  {
2020
+ "name": "string.unquoted.program-block.perl",
2041
2021
  "begin": "^__\\w+__",
2022
+ "end": "$",
2042
2023
  "beginCaptures": {
2043
2024
  "0": {
2044
2025
  "name": "punctuation.definition.string.begin.perl"
2045
2026
  }
2046
2027
  },
2047
- "end": "$",
2048
2028
  "endCaptures": {
2049
2029
  "0": {
2050
2030
  "name": "punctuation.definition.string.end.perl"
2051
2031
  }
2052
- },
2053
- "name": "string.unquoted.program-block.perl"
2032
+ }
2054
2033
  },
2055
2034
  {
2035
+ "name": "meta.format.perl",
2056
2036
  "begin": "\\b(format)\\s+(\\w+)\\s*=",
2057
- "beginCaptures": {
2058
- "1": {
2059
- "name": "support.function.perl"
2060
- },
2061
- "2": {
2062
- "name": "entity.name.function.format.perl"
2063
- }
2064
- },
2065
2037
  "end": "^\\.\\s*$",
2066
- "name": "meta.format.perl",
2067
2038
  "patterns": [
2068
2039
  {
2069
2040
  "include": "#line_comment"
@@ -2071,9 +2042,18 @@
2071
2042
  {
2072
2043
  "include": "#variable"
2073
2044
  }
2074
- ]
2045
+ ],
2046
+ "beginCaptures": {
2047
+ "1": {
2048
+ "name": "support.function.perl"
2049
+ },
2050
+ "2": {
2051
+ "name": "entity.name.function.format.perl"
2052
+ }
2053
+ }
2075
2054
  },
2076
2055
  {
2056
+ "match": "\\b(x)\\s*(\\d+)\\b",
2077
2057
  "captures": {
2078
2058
  "1": {
2079
2059
  "name": "support.function.perl"
@@ -2081,14 +2061,14 @@
2081
2061
  "2": {
2082
2062
  "name": "entity.name.function.perl"
2083
2063
  }
2084
- },
2085
- "match": "\\b(x)\\s*(\\d+)\\b"
2064
+ }
2086
2065
  },
2087
2066
  {
2088
- "match": "\\b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|quotemeta|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|say|scalar|seek|seekdir|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y)\\b",
2089
- "name": "support.function.perl"
2067
+ "name": "support.function.perl",
2068
+ "match": "\\b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|quotemeta|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|say|scalar|seek|seekdir|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y)\\b"
2090
2069
  },
2091
2070
  {
2071
+ "match": "(\\{)(\\})",
2092
2072
  "captures": {
2093
2073
  "1": {
2094
2074
  "name": "punctuation.section.scope.begin.perl"
@@ -2096,11 +2076,10 @@
2096
2076
  "2": {
2097
2077
  "name": "punctuation.section.scope.end.perl"
2098
2078
  }
2099
- },
2100
- "comment": "Match empty brackets for ↩ snippet",
2101
- "match": "(\\{)(\\})"
2079
+ }
2102
2080
  },
2103
2081
  {
2082
+ "match": "(\\()(\\))",
2104
2083
  "captures": {
2105
2084
  "1": {
2106
2085
  "name": "punctuation.section.scope.begin.perl"
@@ -2108,49 +2087,47 @@
2108
2087
  "2": {
2109
2088
  "name": "punctuation.section.scope.end.perl"
2110
2089
  }
2111
- },
2112
- "comment": "Match empty parenthesis for ↩ snippet",
2113
- "match": "(\\()(\\))"
2090
+ }
2114
2091
  }
2115
2092
  ],
2116
2093
  "repository": {
2117
2094
  "escaped_char": {
2118
2095
  "patterns": [
2119
2096
  {
2120
- "match": "\\\\\\d+",
2121
- "name": "constant.character.escape.perl"
2097
+ "name": "constant.character.escape.perl",
2098
+ "match": "\\\\\\d+"
2122
2099
  },
2123
2100
  {
2124
- "match": "\\\\c[^\\s\\\\]",
2125
- "name": "constant.character.escape.perl"
2101
+ "name": "constant.character.escape.perl",
2102
+ "match": "\\\\c[^\\s\\\\]"
2126
2103
  },
2127
2104
  {
2128
- "match": "\\\\g(?:\\{(?:\\w*|-\\d+)\\}|\\d+)",
2129
- "name": "constant.character.escape.perl"
2105
+ "name": "constant.character.escape.perl",
2106
+ "match": "\\\\g(?:\\{(?:\\w*|-\\d+)\\}|\\d+)"
2130
2107
  },
2131
2108
  {
2132
- "match": "\\\\k(?:\\{\\w*\\}|<\\w*>|'\\w*')",
2133
- "name": "constant.character.escape.perl"
2109
+ "name": "constant.character.escape.perl",
2110
+ "match": "\\\\k(?:\\{\\w*\\}|\u003c\\w*\u003e|'\\w*')"
2134
2111
  },
2135
2112
  {
2136
- "match": "\\\\N\\{[^\\}]*\\}",
2137
- "name": "constant.character.escape.perl"
2113
+ "name": "constant.character.escape.perl",
2114
+ "match": "\\\\N\\{[^\\}]*\\}"
2138
2115
  },
2139
2116
  {
2140
- "match": "\\\\o\\{\\d*\\}",
2141
- "name": "constant.character.escape.perl"
2117
+ "name": "constant.character.escape.perl",
2118
+ "match": "\\\\o\\{\\d*\\}"
2142
2119
  },
2143
2120
  {
2144
- "match": "\\\\(?:p|P)(?:\\{\\w*\\}|P)",
2145
- "name": "constant.character.escape.perl"
2121
+ "name": "constant.character.escape.perl",
2122
+ "match": "\\\\(?:p|P)(?:\\{\\w*\\}|P)"
2146
2123
  },
2147
2124
  {
2148
- "match": "\\\\x(?:[0-9a-zA-Z]{2}|\\{\\w*\\})?",
2149
- "name": "constant.character.escape.perl"
2125
+ "name": "constant.character.escape.perl",
2126
+ "match": "\\\\x(?:[0-9a-zA-Z]{2}|\\{\\w*\\})?"
2150
2127
  },
2151
2128
  {
2152
- "match": "\\\\.",
2153
- "name": "constant.character.escape.perl"
2129
+ "name": "constant.character.escape.perl",
2130
+ "match": "\\\\."
2154
2131
  }
2155
2132
  ]
2156
2133
  },
@@ -2158,34 +2135,29 @@
2158
2135
  "patterns": [
2159
2136
  {
2160
2137
  "begin": "(^[ \\t]+)?(?=#)",
2161
- "beginCaptures": {
2162
- "1": {
2163
- "name": "punctuation.whitespace.comment.leading.perl"
2164
- }
2165
- },
2166
2138
  "end": "(?!\\G)",
2167
2139
  "patterns": [
2168
2140
  {
2141
+ "name": "comment.line.number-sign.perl",
2169
2142
  "begin": "#",
2143
+ "end": "\\n",
2170
2144
  "beginCaptures": {
2171
2145
  "0": {
2172
2146
  "name": "punctuation.definition.comment.perl"
2173
2147
  }
2174
- },
2175
- "end": "\\n",
2176
- "name": "comment.line.number-sign.perl"
2148
+ }
2177
2149
  }
2178
- ]
2150
+ ],
2151
+ "beginCaptures": {
2152
+ "1": {
2153
+ "name": "punctuation.whitespace.comment.leading.perl"
2154
+ }
2155
+ }
2179
2156
  }
2180
2157
  ]
2181
2158
  },
2182
2159
  "nested_braces": {
2183
2160
  "begin": "\\{",
2184
- "captures": {
2185
- "1": {
2186
- "name": "punctuation.section.scope.perl"
2187
- }
2188
- },
2189
2161
  "end": "\\}",
2190
2162
  "patterns": [
2191
2163
  {
@@ -2194,15 +2166,15 @@
2194
2166
  {
2195
2167
  "include": "#nested_braces"
2196
2168
  }
2197
- ]
2198
- },
2199
- "nested_braces_interpolated": {
2200
- "begin": "\\{",
2169
+ ],
2201
2170
  "captures": {
2202
2171
  "1": {
2203
2172
  "name": "punctuation.section.scope.perl"
2204
2173
  }
2205
- },
2174
+ }
2175
+ },
2176
+ "nested_braces_interpolated": {
2177
+ "begin": "\\{",
2206
2178
  "end": "\\}",
2207
2179
  "patterns": [
2208
2180
  {
@@ -2214,15 +2186,15 @@
2214
2186
  {
2215
2187
  "include": "#nested_braces_interpolated"
2216
2188
  }
2217
- ]
2218
- },
2219
- "nested_brackets": {
2220
- "begin": "\\[",
2189
+ ],
2221
2190
  "captures": {
2222
2191
  "1": {
2223
2192
  "name": "punctuation.section.scope.perl"
2224
2193
  }
2225
- },
2194
+ }
2195
+ },
2196
+ "nested_brackets": {
2197
+ "begin": "\\[",
2226
2198
  "end": "\\]",
2227
2199
  "patterns": [
2228
2200
  {
@@ -2231,15 +2203,15 @@
2231
2203
  {
2232
2204
  "include": "#nested_brackets"
2233
2205
  }
2234
- ]
2235
- },
2236
- "nested_brackets_interpolated": {
2237
- "begin": "\\[",
2206
+ ],
2238
2207
  "captures": {
2239
2208
  "1": {
2240
2209
  "name": "punctuation.section.scope.perl"
2241
2210
  }
2242
- },
2211
+ }
2212
+ },
2213
+ "nested_brackets_interpolated": {
2214
+ "begin": "\\[",
2243
2215
  "end": "\\]",
2244
2216
  "patterns": [
2245
2217
  {
@@ -2251,30 +2223,30 @@
2251
2223
  {
2252
2224
  "include": "#nested_brackets_interpolated"
2253
2225
  }
2254
- ]
2255
- },
2256
- "nested_ltgt": {
2257
- "begin": "<",
2226
+ ],
2258
2227
  "captures": {
2259
2228
  "1": {
2260
2229
  "name": "punctuation.section.scope.perl"
2261
2230
  }
2262
- },
2263
- "end": ">",
2231
+ }
2232
+ },
2233
+ "nested_ltgt": {
2234
+ "begin": "\u003c",
2235
+ "end": "\u003e",
2264
2236
  "patterns": [
2265
2237
  {
2266
2238
  "include": "#nested_ltgt"
2267
2239
  }
2268
- ]
2269
- },
2270
- "nested_ltgt_interpolated": {
2271
- "begin": "<",
2240
+ ],
2272
2241
  "captures": {
2273
2242
  "1": {
2274
2243
  "name": "punctuation.section.scope.perl"
2275
2244
  }
2276
- },
2277
- "end": ">",
2245
+ }
2246
+ },
2247
+ "nested_ltgt_interpolated": {
2248
+ "begin": "\u003c",
2249
+ "end": "\u003e",
2278
2250
  "patterns": [
2279
2251
  {
2280
2252
  "include": "#variable"
@@ -2282,15 +2254,15 @@
2282
2254
  {
2283
2255
  "include": "#nested_ltgt_interpolated"
2284
2256
  }
2285
- ]
2286
- },
2287
- "nested_parens": {
2288
- "begin": "\\(",
2257
+ ],
2289
2258
  "captures": {
2290
2259
  "1": {
2291
2260
  "name": "punctuation.section.scope.perl"
2292
2261
  }
2293
- },
2262
+ }
2263
+ },
2264
+ "nested_parens": {
2265
+ "begin": "\\(",
2294
2266
  "end": "\\)",
2295
2267
  "patterns": [
2296
2268
  {
@@ -2299,21 +2271,20 @@
2299
2271
  {
2300
2272
  "include": "#nested_parens"
2301
2273
  }
2302
- ]
2303
- },
2304
- "nested_parens_interpolated": {
2305
- "begin": "\\(",
2274
+ ],
2306
2275
  "captures": {
2307
2276
  "1": {
2308
2277
  "name": "punctuation.section.scope.perl"
2309
2278
  }
2310
- },
2279
+ }
2280
+ },
2281
+ "nested_parens_interpolated": {
2282
+ "begin": "\\(",
2311
2283
  "end": "\\)",
2312
2284
  "patterns": [
2313
2285
  {
2314
- "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
2315
- "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
2316
- "name": "keyword.control.anchor.perl"
2286
+ "name": "keyword.control.anchor.perl",
2287
+ "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\\u003c])"
2317
2288
  },
2318
2289
  {
2319
2290
  "include": "#escaped_char"
@@ -2324,16 +2295,29 @@
2324
2295
  {
2325
2296
  "include": "#nested_parens_interpolated"
2326
2297
  }
2327
- ]
2298
+ ],
2299
+ "captures": {
2300
+ "1": {
2301
+ "name": "punctuation.section.scope.perl"
2302
+ }
2303
+ }
2328
2304
  },
2329
2305
  "pod": {
2330
2306
  "patterns": [
2331
2307
  {
2332
- "match": "^=(pod|back|cut)\\b",
2333
- "name": "storage.type.class.pod.perl"
2308
+ "name": "storage.type.class.pod.perl",
2309
+ "match": "^=(pod|back|cut)\\b"
2334
2310
  },
2335
2311
  {
2312
+ "name": "meta.embedded.pod.perl",
2313
+ "contentName": "text.embedded.html.basic",
2336
2314
  "begin": "^(=begin)\\s+(html)\\s*$",
2315
+ "end": "^(=end)\\s+(html)|^(?==cut)",
2316
+ "patterns": [
2317
+ {
2318
+ "include": "text.html.basic"
2319
+ }
2320
+ ],
2337
2321
  "beginCaptures": {
2338
2322
  "1": {
2339
2323
  "name": "storage.type.class.pod.perl"
@@ -2342,8 +2326,6 @@
2342
2326
  "name": "variable.other.pod.perl"
2343
2327
  }
2344
2328
  },
2345
- "contentName": "text.embedded.html.basic",
2346
- "end": "^(=end)\\s+(html)|^(?==cut)",
2347
2329
  "endCaptures": {
2348
2330
  "1": {
2349
2331
  "name": "storage.type.class.pod.perl"
@@ -2351,15 +2333,10 @@
2351
2333
  "2": {
2352
2334
  "name": "variable.other.pod.perl"
2353
2335
  }
2354
- },
2355
- "name": "meta.embedded.pod.perl",
2356
- "patterns": [
2357
- {
2358
- "include": "text.html.basic"
2359
- }
2360
- ]
2336
+ }
2361
2337
  },
2362
2338
  {
2339
+ "match": "^(=(?:head[1-4]|item|over|encoding|begin|end|for))\\b\\s*(.*)",
2363
2340
  "captures": {
2364
2341
  "1": {
2365
2342
  "name": "storage.type.class.pod.perl"
@@ -2372,8 +2349,7 @@
2372
2349
  }
2373
2350
  ]
2374
2351
  }
2375
- },
2376
- "match": "^(=(?:head[1-4]|item|over|encoding|begin|end|for))\\b\\s*(.*)"
2352
+ }
2377
2353
  },
2378
2354
  {
2379
2355
  "include": "#pod-formatting"
@@ -2383,6 +2359,8 @@
2383
2359
  "pod-formatting": {
2384
2360
  "patterns": [
2385
2361
  {
2362
+ "name": "entity.name.type.instance.pod.perl",
2363
+ "match": "I(?:\u003c([^\u003c\u003e]+)\u003e|\u003c+(\\s+(?:(?\u003c!\\s)\u003e|[^\u003e])+\\s+)\u003e+)",
2386
2364
  "captures": {
2387
2365
  "1": {
2388
2366
  "name": "markup.italic.pod.perl"
@@ -2390,11 +2368,11 @@
2390
2368
  "2": {
2391
2369
  "name": "markup.italic.pod.perl"
2392
2370
  }
2393
- },
2394
- "match": "I(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)",
2395
- "name": "entity.name.type.instance.pod.perl"
2371
+ }
2396
2372
  },
2397
2373
  {
2374
+ "name": "entity.name.type.instance.pod.perl",
2375
+ "match": "B(?:\u003c([^\u003c\u003e]+)\u003e|\u003c+(\\s+(?:(?\u003c!\\s)\u003e|[^\u003e])+\\s+)\u003e+)",
2398
2376
  "captures": {
2399
2377
  "1": {
2400
2378
  "name": "markup.bold.pod.perl"
@@ -2402,11 +2380,11 @@
2402
2380
  "2": {
2403
2381
  "name": "markup.bold.pod.perl"
2404
2382
  }
2405
- },
2406
- "match": "B(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)",
2407
- "name": "entity.name.type.instance.pod.perl"
2383
+ }
2408
2384
  },
2409
2385
  {
2386
+ "name": "entity.name.type.instance.pod.perl",
2387
+ "match": "C(?:\u003c([^\u003c\u003e]+)\u003e|\u003c+(\\\\s+(?:(?\u003c!\\\\s)\u003e|[^\u003e])+\\\\s+)\u003e+)",
2410
2388
  "captures": {
2411
2389
  "1": {
2412
2390
  "name": "markup.raw.pod.perl"
@@ -2414,109 +2392,109 @@
2414
2392
  "2": {
2415
2393
  "name": "markup.raw.pod.perl"
2416
2394
  }
2417
- },
2418
- "match": "C(?:<([^<>]+)>|<+(\\\\s+(?:(?<!\\\\s)>|[^>])+\\\\s+)>+)",
2419
- "name": "entity.name.type.instance.pod.perl"
2395
+ }
2420
2396
  },
2421
2397
  {
2398
+ "name": "entity.name.type.instance.pod.perl",
2399
+ "match": "L\u003c([^\u003e]+)\u003e",
2422
2400
  "captures": {
2423
2401
  "1": {
2424
2402
  "name": "markup.underline.link.hyperlink.pod.perl"
2425
2403
  }
2426
- },
2427
- "match": "L<([^>]+)>",
2428
- "name": "entity.name.type.instance.pod.perl"
2404
+ }
2429
2405
  },
2430
2406
  {
2431
- "match": "[EFSXZ]<[^>]*>",
2432
- "name": "entity.name.type.instance.pod.perl"
2407
+ "name": "entity.name.type.instance.pod.perl",
2408
+ "match": "[EFSXZ]\u003c[^\u003e]*\u003e"
2433
2409
  }
2434
2410
  ]
2435
2411
  },
2436
2412
  "variable": {
2437
2413
  "patterns": [
2438
2414
  {
2415
+ "name": "variable.other.regexp.match.perl",
2416
+ "match": "(\\$)\u0026(?![A-Za-z0-9_])",
2439
2417
  "captures": {
2440
2418
  "1": {
2441
2419
  "name": "punctuation.definition.variable.perl"
2442
2420
  }
2443
- },
2444
- "match": "(\\$)&(?![A-Za-z0-9_])",
2445
- "name": "variable.other.regexp.match.perl"
2421
+ }
2446
2422
  },
2447
2423
  {
2424
+ "name": "variable.other.regexp.pre-match.perl",
2425
+ "match": "(\\$)`(?![A-Za-z0-9_])",
2448
2426
  "captures": {
2449
2427
  "1": {
2450
2428
  "name": "punctuation.definition.variable.perl"
2451
2429
  }
2452
- },
2453
- "match": "(\\$)`(?![A-Za-z0-9_])",
2454
- "name": "variable.other.regexp.pre-match.perl"
2430
+ }
2455
2431
  },
2456
2432
  {
2433
+ "name": "variable.other.regexp.post-match.perl",
2434
+ "match": "(\\$)'(?![A-Za-z0-9_])",
2457
2435
  "captures": {
2458
2436
  "1": {
2459
2437
  "name": "punctuation.definition.variable.perl"
2460
2438
  }
2461
- },
2462
- "match": "(\\$)'(?![A-Za-z0-9_])",
2463
- "name": "variable.other.regexp.post-match.perl"
2439
+ }
2464
2440
  },
2465
2441
  {
2442
+ "name": "variable.other.regexp.last-paren-match.perl",
2443
+ "match": "(\\$)\\+(?![A-Za-z0-9_])",
2466
2444
  "captures": {
2467
2445
  "1": {
2468
2446
  "name": "punctuation.definition.variable.perl"
2469
2447
  }
2470
- },
2471
- "match": "(\\$)\\+(?![A-Za-z0-9_])",
2472
- "name": "variable.other.regexp.last-paren-match.perl"
2448
+ }
2473
2449
  },
2474
2450
  {
2451
+ "name": "variable.other.readwrite.list-separator.perl",
2452
+ "match": "(\\$)\"(?![A-Za-z0-9_])",
2475
2453
  "captures": {
2476
2454
  "1": {
2477
2455
  "name": "punctuation.definition.variable.perl"
2478
2456
  }
2479
- },
2480
- "match": "(\\$)\"(?![A-Za-z0-9_])",
2481
- "name": "variable.other.readwrite.list-separator.perl"
2457
+ }
2482
2458
  },
2483
2459
  {
2460
+ "name": "variable.other.predefined.program-name.perl",
2461
+ "match": "(\\$)0(?![A-Za-z0-9_])",
2484
2462
  "captures": {
2485
2463
  "1": {
2486
2464
  "name": "punctuation.definition.variable.perl"
2487
2465
  }
2488
- },
2489
- "match": "(\\$)0(?![A-Za-z0-9_])",
2490
- "name": "variable.other.predefined.program-name.perl"
2466
+ }
2491
2467
  },
2492
2468
  {
2469
+ "name": "variable.other.predefined.perl",
2470
+ "match": "(\\$)[_ab\\*\\.\\/\\|,\\\\;#%=\\-~^:?!\\$\u003c\u003e\\(\\)\\[\\]@](?![A-Za-z0-9_])",
2493
2471
  "captures": {
2494
2472
  "1": {
2495
2473
  "name": "punctuation.definition.variable.perl"
2496
2474
  }
2497
- },
2498
- "match": "(\\$)[_ab\\*\\.\\/\\|,\\\\;#%=\\-~^:?!\\$<>\\(\\)\\[\\]@](?![A-Za-z0-9_])",
2499
- "name": "variable.other.predefined.perl"
2475
+ }
2500
2476
  },
2501
2477
  {
2478
+ "name": "variable.other.subpattern.perl",
2479
+ "match": "(\\$)[0-9]+(?![A-Za-z0-9_])",
2502
2480
  "captures": {
2503
2481
  "1": {
2504
2482
  "name": "punctuation.definition.variable.perl"
2505
2483
  }
2506
- },
2507
- "match": "(\\$)[0-9]+(?![A-Za-z0-9_])",
2508
- "name": "variable.other.subpattern.perl"
2484
+ }
2509
2485
  },
2510
2486
  {
2487
+ "name": "variable.other.readwrite.global.perl",
2488
+ "match": "([\\$\\@\\%](#)?)([a-zA-Zx7f-xff\\$]|::)([a-zA-Z0-9_x7f-xff\\$]|::)*\\b",
2511
2489
  "captures": {
2512
2490
  "1": {
2513
2491
  "name": "punctuation.definition.variable.perl"
2514
2492
  }
2515
- },
2516
- "match": "([\\$\\@\\%](#)?)([a-zA-Zx7f-xff\\$]|::)([a-zA-Z0-9_x7f-xff\\$]|::)*\\b",
2517
- "name": "variable.other.readwrite.global.perl"
2493
+ }
2518
2494
  },
2519
2495
  {
2496
+ "name": "variable.other.readwrite.global.perl",
2497
+ "match": "(\\$\\{)(?:[a-zA-Zx7f-xff\\$]|::)(?:[a-zA-Z0-9_x7f-xff\\$]|::)*(\\})",
2520
2498
  "captures": {
2521
2499
  "1": {
2522
2500
  "name": "punctuation.definition.variable.perl"
@@ -2524,22 +2502,18 @@
2524
2502
  "2": {
2525
2503
  "name": "punctuation.definition.variable.perl"
2526
2504
  }
2527
- },
2528
- "match": "(\\$\\{)(?:[a-zA-Zx7f-xff\\$]|::)(?:[a-zA-Z0-9_x7f-xff\\$]|::)*(\\})",
2529
- "name": "variable.other.readwrite.global.perl"
2505
+ }
2530
2506
  },
2531
2507
  {
2508
+ "name": "variable.other.readwrite.global.special.perl",
2509
+ "match": "([\\$\\@\\%](#)?)[0-9_]\\b",
2532
2510
  "captures": {
2533
2511
  "1": {
2534
2512
  "name": "punctuation.definition.variable.perl"
2535
2513
  }
2536
- },
2537
- "match": "([\\$\\@\\%](#)?)[0-9_]\\b",
2538
- "name": "variable.other.readwrite.global.special.perl"
2514
+ }
2539
2515
  }
2540
2516
  ]
2541
2517
  }
2542
- },
2543
- "scopeName": "source.perl",
2544
- "uuid": "EDBFE125-6B1C-11D9-9189-000D93589AF6"
2545
- }
2518
+ }
2519
+ }