github-linguist 5.3.3 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }