github-linguist 5.3.3 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. checksums.yaml +4 -4
  2. data/bin/git-linguist +5 -2
  3. data/ext/linguist/linguist.c +18 -7
  4. data/grammars/annotation.liquidhaskell.haskell.json +969 -862
  5. data/grammars/config.xcompose.json +22 -25
  6. data/grammars/file.lasso.json +296 -309
  7. data/grammars/hint.haskell.json +867 -766
  8. data/grammars/hint.message.haskell.json +867 -766
  9. data/grammars/hint.type.haskell.json +867 -766
  10. data/grammars/objdump.x86asm.json +20 -24
  11. data/grammars/source.Kotlin.json +220 -225
  12. data/grammars/source.LS.json +36 -55
  13. data/grammars/source.MCPOST.json +24 -38
  14. data/grammars/source.MOD.json +26 -41
  15. data/grammars/source.SASLog.json +9 -16
  16. data/grammars/source.abap.json +48 -56
  17. data/grammars/source.abl.json +8 -14
  18. data/grammars/source.abnf.json +88 -98
  19. data/grammars/source.actionscript.3.json +398 -429
  20. data/grammars/source.acucobol.json +5 -8
  21. data/grammars/source.ada.json +46 -53
  22. data/grammars/source.afm.json +548 -554
  23. data/grammars/source.agc.json +34 -37
  24. data/grammars/source.agda.json +79 -91
  25. data/grammars/source.ahk.json +62 -66
  26. data/grammars/source.alloy.json +16 -20
  27. data/grammars/source.ampl.json +41 -47
  28. data/grammars/source.angelscript.json +71 -80
  29. data/grammars/source.antlr.json +131 -136
  30. data/grammars/source.apache-config.json +93 -99
  31. data/grammars/source.apache-config.mod_perl.json +19 -24
  32. data/grammars/source.apl.json +1038 -1029
  33. data/grammars/source.applescript.json +501 -523
  34. data/grammars/source.apt.json +9 -16
  35. data/grammars/source.asn.json +27 -31
  36. data/grammars/source.asp.json +61 -67
  37. data/grammars/source.aspectj.json +385 -391
  38. data/grammars/source.assembly.json +49 -55
  39. data/grammars/source.ats.json +45 -121
  40. data/grammars/source.autoit.json +64 -69
  41. data/grammars/source.awk.json +172 -176
  42. data/grammars/source.ballerina.json +48 -395
  43. data/grammars/source.batchfile.json +269 -269
  44. data/grammars/source.befunge.json +17 -21
  45. data/grammars/source.bf.json +5 -11
  46. data/grammars/source.bison.json +10 -14
  47. data/grammars/source.blitzmax.json +300 -305
  48. data/grammars/source.boo.json +189 -193
  49. data/grammars/source.brightauthorproject.json +8 -13
  50. data/grammars/source.brightscript.json +37 -47
  51. data/grammars/source.bro.json +134 -140
  52. data/grammars/source.bsl.json +152 -193
  53. data/grammars/source.bsv.json +96 -102
  54. data/grammars/source.c++.json +176 -193
  55. data/grammars/source.c++.qt.json +13 -21
  56. data/grammars/source.c.ec.json +15 -21
  57. data/grammars/source.c.json +237 -251
  58. data/grammars/source.c.platform.json +153 -159
  59. data/grammars/source.c2hs.json +3 -6
  60. data/grammars/source.cabal.json +17 -20
  61. data/grammars/source.cache.cmake.json +18 -23
  62. data/grammars/source.cake.json +4 -7
  63. data/grammars/source.camlp4.ocaml.json +24 -27
  64. data/grammars/source.capnp.json +33 -38
  65. data/grammars/source.ceylon.json +44 -50
  66. data/grammars/source.cfscript.cfc.json +78 -86
  67. data/grammars/source.cfscript.json +513 -520
  68. data/grammars/source.changelogs.rpm-spec.json +8 -16
  69. data/grammars/source.chapel.json +109 -87
  70. data/grammars/source.cirru.json +25 -30
  71. data/grammars/source.clarion.json +41 -54
  72. data/grammars/source.clean.json +90 -95
  73. data/grammars/source.click.json +25 -28
  74. data/grammars/source.clips.json +10 -23
  75. data/grammars/source.clojure.json +151 -168
  76. data/grammars/source.cm.json +14 -19
  77. data/grammars/source.cmake.json +53 -61
  78. data/grammars/source.cobol.json +165 -180
  79. data/grammars/source.coffee.json +454 -462
  80. data/grammars/source.cool.json +36 -43
  81. data/grammars/source.coq.json +17 -21
  82. data/grammars/source.crystal.json +889 -983
  83. data/grammars/source.cs.json +739 -740
  84. data/grammars/source.csound-document.json +69 -73
  85. data/grammars/source.csound-score.json +52 -55
  86. data/grammars/source.csound.json +167 -171
  87. data/grammars/source.css.json +683 -688
  88. data/grammars/source.css.less.json +211 -511
  89. data/grammars/source.css.mss.json +94 -101
  90. data/grammars/source.css.postcss.sugarss.json +260 -0
  91. data/grammars/source.csx.json +4 -7
  92. data/grammars/source.cuda-c++.json +47 -81
  93. data/grammars/source.cwl.json +103 -0
  94. data/grammars/source.cython.json +536 -582
  95. data/grammars/source.d.json +243 -252
  96. data/grammars/source.dart.json +161 -166
  97. data/grammars/source.data-weave.json +901 -905
  98. data/grammars/source.desktop.json +29 -33
  99. data/grammars/source.diff.json +43 -52
  100. data/grammars/source.disasm.json +15 -16
  101. data/grammars/source.ditroff.desc.json +73 -84
  102. data/grammars/source.ditroff.json +60 -61
  103. data/grammars/source.dm.json +202 -213
  104. data/grammars/source.dmf.json +44 -47
  105. data/grammars/source.dockerfile.json +29 -34
  106. data/grammars/source.dot.json +46 -55
  107. data/grammars/source.dylan.json +63 -68
  108. data/grammars/source.ebnf.json +55 -62
  109. data/grammars/source.eiffel.json +57 -62
  110. data/grammars/source.elixir.json +321 -366
  111. data/grammars/source.emacs.lisp.json +458 -249
  112. data/grammars/source.erazor.json +49 -57
  113. data/grammars/source.erlang.json +508 -515
  114. data/grammars/source.essl.json +17 -30
  115. data/grammars/source.factor.json +85 -91
  116. data/grammars/source.fan.json +92 -96
  117. data/grammars/source.fancy.json +93 -118
  118. data/grammars/source.fish.json +74 -98
  119. data/grammars/source.fontforge.json +142 -146
  120. data/grammars/source.forth.json +42 -57
  121. data/grammars/source.fortran.json +193 -231
  122. data/grammars/source.fortran.modern.json +77 -103
  123. data/grammars/source.fsharp.fsi.json +1 -6
  124. data/grammars/source.fsharp.fsl.json +1 -6
  125. data/grammars/source.fsharp.fsx.json +1 -6
  126. data/grammars/source.fsharp.json +148 -153
  127. data/grammars/source.gap.json +60 -70
  128. data/grammars/source.gcode.json +9 -16
  129. data/grammars/source.gdb.json +63 -79
  130. data/grammars/source.gdb.session.json +27 -28
  131. data/grammars/source.gdbregs.json +7 -8
  132. data/grammars/source.gdscript.json +92 -96
  133. data/grammars/source.gerber.json +38 -56
  134. data/grammars/source.gfm.json +447 -462
  135. data/grammars/source.glsl.json +58 -83
  136. data/grammars/source.gn.json +188 -193
  137. data/grammars/source.gnuplot.json +104 -120
  138. data/grammars/source.go.json +169 -181
  139. data/grammars/source.golo.json +82 -87
  140. data/grammars/source.gosu.2.json +58 -68
  141. data/grammars/source.grace.json +266 -270
  142. data/grammars/source.graphql.json +586 -596
  143. data/grammars/source.groovy.gradle.json +18 -22
  144. data/grammars/source.groovy.json +422 -433
  145. data/grammars/source.harbour.json +129 -173
  146. data/grammars/source.haskell.json +871 -772
  147. data/grammars/source.haxe.2.json +402 -413
  148. data/grammars/source.hlsl.json +6 -16
  149. data/grammars/source.hsc2hs.json +1 -4
  150. data/grammars/source.hsig.json +871 -770
  151. data/grammars/source.hss.1.json +122 -144
  152. data/grammars/source.httpspec.json +119 -123
  153. data/grammars/source.hxml.json +8 -15
  154. data/grammars/source.ideal.json +125 -125
  155. data/grammars/source.idl-dlm.json +25 -32
  156. data/grammars/source.idl.json +59 -80
  157. data/grammars/source.idris.json +171 -185
  158. data/grammars/source.inform7.json +117 -121
  159. data/grammars/source.ini.json +37 -43
  160. data/grammars/source.io.json +65 -73
  161. data/grammars/source.ioke.json +72 -78
  162. data/grammars/source.isabelle.root.json +26 -30
  163. data/grammars/source.isabelle.theory.json +46 -50
  164. data/grammars/source.j.json +18 -21
  165. data/grammars/source.jasmin.json +45 -50
  166. data/grammars/source.java-properties.json +31 -41
  167. data/grammars/source.java.json +333 -342
  168. data/grammars/source.jcl.json +15 -18
  169. data/grammars/source.jflex.json +166 -172
  170. data/grammars/source.jison.json +331 -334
  171. data/grammars/source.jisonlex-injection.json +1 -2
  172. data/grammars/source.jisonlex.json +148 -151
  173. data/grammars/source.jolie.json +37 -43
  174. data/grammars/source.jq.json +80 -87
  175. data/grammars/source.js.json +798 -818
  176. data/grammars/source.js.jsx.json +2115 -2225
  177. data/grammars/source.js.objj.json +167 -172
  178. data/grammars/source.js.regexp.json +50 -50
  179. data/grammars/source.js.regexp.replacement.json +7 -7
  180. data/grammars/source.jsdoc.json +94 -94
  181. data/grammars/source.json.json +61 -71
  182. data/grammars/source.julia.console.json +5 -6
  183. data/grammars/source.julia.json +237 -234
  184. data/grammars/source.lean.json +55 -67
  185. data/grammars/source.lid.json +6 -10
  186. data/grammars/source.lilypond.json +181 -195
  187. data/grammars/source.lisp.json +40 -50
  188. data/grammars/source.litcoffee.json +169 -183
  189. data/grammars/source.livescript.json +207 -220
  190. data/grammars/source.llvm.json +28 -38
  191. data/grammars/source.logos.json +7 -14
  192. data/grammars/source.logtalk.json +136 -141
  193. data/grammars/source.loomscript.json +77 -83
  194. data/grammars/source.lsl.json +90 -106
  195. data/grammars/source.lua.json +100 -109
  196. data/grammars/source.makefile.json +181 -188
  197. data/grammars/source.makegen.json +3 -7
  198. data/grammars/source.mask.json +260 -265
  199. data/grammars/source.mata.json +38 -46
  200. data/grammars/source.mathematica.json +155 -167
  201. data/grammars/source.matlab.json +407 -684
  202. data/grammars/source.maxscript.json +293 -281
  203. data/grammars/source.mercury.json +179 -184
  204. data/grammars/source.meson.json +52 -58
  205. data/grammars/source.meta-info.json +64 -74
  206. data/grammars/source.ml.json +107 -113
  207. data/grammars/source.modelica.json +51 -59
  208. data/grammars/source.modula2.json +33 -42
  209. data/grammars/source.monkey.json +234 -241
  210. data/grammars/source.moonscript.json +51 -56
  211. data/grammars/source.mql5.json +74 -101
  212. data/grammars/source.mupad.json +30 -72
  213. data/grammars/source.ncl.json +1 -14
  214. data/grammars/source.ne.json +39 -42
  215. data/grammars/source.nemerle.json +58 -63
  216. data/grammars/source.nesc.json +9 -15
  217. data/grammars/source.netlinx.erb.json +13 -25
  218. data/grammars/source.netlinx.json +231 -292
  219. data/grammars/source.nextflow-groovy.json +1360 -0
  220. data/grammars/source.nextflow.json +74 -0
  221. data/grammars/source.nginx.json +274 -287
  222. data/grammars/source.nim.json +442 -483
  223. data/grammars/source.nim_filter.json +6 -26
  224. data/grammars/source.nimcfg.json +38 -51
  225. data/grammars/source.ninja.json +64 -70
  226. data/grammars/source.nit.json +60 -64
  227. data/grammars/source.nix.json +269 -273
  228. data/grammars/source.nmml.json +31 -37
  229. data/grammars/source.nsis.json +66 -72
  230. data/grammars/source.nu.json +129 -139
  231. data/grammars/source.nut.json +129 -133
  232. data/grammars/source.objc++.json +3 -10
  233. data/grammars/source.objc.json +303 -314
  234. data/grammars/source.objc.platform.json +145 -151
  235. data/grammars/source.ocaml.json +506 -514
  236. data/grammars/source.ocamllex.json +108 -115
  237. data/grammars/source.ocamlyacc.json +116 -123
  238. data/grammars/source.ooc.json +148 -155
  239. data/grammars/source.opa.json +39 -49
  240. data/grammars/source.opal.json +84 -89
  241. data/grammars/source.opalsysdefs.json +9 -13
  242. data/grammars/source.opencobol.json +22 -25
  243. data/grammars/source.opentype.json +148 -152
  244. data/grammars/source.ox.json +36 -44
  245. data/grammars/source.oz.json +31 -38
  246. data/grammars/source.p4.json +49 -59
  247. data/grammars/source.pan.json +273 -278
  248. data/grammars/source.papyrus.skyrim.json +705 -781
  249. data/grammars/source.parrot.pir.json +59 -65
  250. data/grammars/source.pascal.json +54 -61
  251. data/grammars/source.pawn.json +835 -849
  252. data/grammars/source.pcb.board.json +153 -158
  253. data/grammars/source.pcb.schematic.json +134 -138
  254. data/grammars/source.pcb.sexp.json +64 -74
  255. data/grammars/source.pep8.json +28 -32
  256. data/grammars/source.perl.6.json +83 -92
  257. data/grammars/source.perl.json +711 -737
  258. data/grammars/source.perl6fe.json +1204 -1218
  259. data/grammars/source.php.zephir.json +80 -89
  260. data/grammars/source.pic.json +137 -142
  261. data/grammars/source.pig_latin.json +76 -80
  262. data/grammars/source.pike.json +23 -36
  263. data/grammars/source.po.json +74 -84
  264. data/grammars/source.pogoscript.json +23 -29
  265. data/grammars/source.pony.json +98 -108
  266. data/grammars/source.postcss.json +370 -0
  267. data/grammars/source.postscript.json +88 -97
  268. data/grammars/source.pov-ray sdl.json +36 -42
  269. data/grammars/source.powershell.json +175 -197
  270. data/grammars/source.processing.json +236 -249
  271. data/grammars/source.prolog.eclipse.json +33 -38
  272. data/grammars/source.prolog.json +66 -72
  273. data/grammars/source.protobuf.json +88 -94
  274. data/grammars/source.puppet.json +144 -151
  275. data/grammars/source.purescript.json +268 -289
  276. data/grammars/source.pyjade.json +256 -281
  277. data/grammars/source.python.django.json +13 -18
  278. data/grammars/source.python.json +3319 -3367
  279. data/grammars/source.python.salt.json +3 -7
  280. data/grammars/source.qmake.json +83 -90
  281. data/grammars/source.qml.json +57 -78
  282. data/grammars/source.quoting.perl6fe.json +666 -669
  283. data/grammars/source.r.json +75 -84
  284. data/grammars/source.racket.json +17 -38
  285. data/grammars/source.rascal.json +77 -80
  286. data/grammars/source.reason.hover.type.json +1 -1
  287. data/grammars/source.reason.json +1025 -1080
  288. data/grammars/source.rebol.json +167 -177
  289. data/grammars/source.red.json +169 -177
  290. data/grammars/source.regexp.babel.json +74 -77
  291. data/grammars/source.regexp.extended.json +4 -5
  292. data/grammars/source.regexp.json +260 -264
  293. data/grammars/source.regexp.perl6fe.json +108 -111
  294. data/grammars/source.regexp.python.json +210 -215
  295. data/grammars/source.regexp.spin.json +63 -72
  296. data/grammars/source.renpy.json +617 -687
  297. data/grammars/source.rexx.json +25 -32
  298. data/grammars/source.ring.json +84 -114
  299. data/grammars/source.rpm-spec.json +392 -401
  300. data/grammars/source.ruby.gemfile.json +9 -12
  301. data/grammars/source.ruby.json +862 -952
  302. data/grammars/source.ruby.rspec.cucumber.steps.json +90 -103
  303. data/grammars/source.rust.json +223 -281
  304. data/grammars/source.sas.json +88 -105
  305. data/grammars/source.sass.json +100 -108
  306. data/grammars/source.sbt.json +16 -23
  307. data/grammars/source.scad.json +60 -67
  308. data/grammars/source.scala.json +215 -228
  309. data/grammars/source.scaml.json +120 -135
  310. data/grammars/source.scheme.json +119 -136
  311. data/grammars/source.scilab.json +40 -47
  312. data/grammars/source.scss.json +369 -403
  313. data/grammars/source.sdbl.json +14 -25
  314. data/grammars/source.shaderlab.json +24 -27
  315. data/grammars/source.shell.json +409 -440
  316. data/grammars/source.shen.json +75 -94
  317. data/grammars/source.smali.json +232 -293
  318. data/grammars/source.smalltalk.json +60 -75
  319. data/grammars/source.smt.json +67 -82
  320. data/grammars/source.solidity.json +35 -54
  321. data/grammars/source.sp.json +40 -45
  322. data/grammars/source.sparql.json +3 -8
  323. data/grammars/source.spin.json +277 -297
  324. data/grammars/source.sqf.json +34 -44
  325. data/grammars/source.sql.json +142 -156
  326. data/grammars/source.stan.json +201 -160
  327. data/grammars/source.stata.json +57 -68
  328. data/grammars/source.strings.json +26 -30
  329. data/grammars/source.stylus.json +558 -565
  330. data/grammars/source.supercollider.json +33 -40
  331. data/grammars/source.swift.json +999 -1077
  332. data/grammars/source.systemverilog.json +351 -365
  333. data/grammars/source.tcl.json +77 -94
  334. data/grammars/source.tea.json +61 -67
  335. data/grammars/source.terra.json +25 -32
  336. data/grammars/source.terraform.json +68 -88
  337. data/grammars/source.thrift.json +300 -306
  338. data/grammars/source.tl.json +112 -117
  339. data/grammars/source.tla.json +65 -69
  340. data/grammars/source.toc.json +21 -25
  341. data/grammars/source.toml.json +117 -122
  342. data/grammars/source.ts.json +2838 -2774
  343. data/grammars/source.tsx.json +180 -184
  344. data/grammars/source.turing.json +970 -974
  345. data/grammars/source.turtle.json +124 -140
  346. data/grammars/source.txl.json +23 -37
  347. data/grammars/source.ucfconstraints.json +16 -21
  348. data/grammars/source.ur.json +15 -27
  349. data/grammars/source.vala.json +221 -235
  350. data/grammars/source.varnish.vcl.json +117 -129
  351. data/grammars/source.vbnet.json +69 -106
  352. data/grammars/source.verilog.json +101 -107
  353. data/grammars/source.vhdl.json +437 -445
  354. data/grammars/source.viml.json +540 -550
  355. data/grammars/source.wavefront.mtl.json +274 -277
  356. data/grammars/source.wavefront.obj.json +781 -784
  357. data/grammars/source.wdl.json +66 -46
  358. data/grammars/source.webassembly.json +97 -102
  359. data/grammars/source.webidl.json +311 -326
  360. data/grammars/source.x10.json +28 -32
  361. data/grammars/source.x86asm.json +21 -26
  362. data/grammars/source.xc.json +164 -172
  363. data/grammars/source.xq.json +81 -92
  364. data/grammars/source.xtend.json +199 -208
  365. data/grammars/source.yaml-ext.json +118 -124
  366. data/grammars/source.yaml.json +155 -174
  367. data/grammars/source.yaml.salt.json +113 -116
  368. data/grammars/source.yang.json +10 -13
  369. data/grammars/source.yara.json +98 -0
  370. data/grammars/text.bibtex.json +95 -100
  371. data/grammars/text.cfml.basic.json +403 -404
  372. data/grammars/text.elixir.json +18 -23
  373. data/grammars/text.error-list.json +15 -16
  374. data/grammars/text.find-refs.json +487 -488
  375. data/grammars/text.gherkin.feature.json +45 -53
  376. data/grammars/text.haml.json +176 -189
  377. data/grammars/text.hamlc.json +82 -88
  378. data/grammars/text.html.abl.json +16 -21
  379. data/grammars/text.html.asciidoc.json +139 -153
  380. data/grammars/text.html.asdoc.json +145 -155
  381. data/grammars/text.html.asp.json +23 -28
  382. data/grammars/text.html.basic.json +323 -338
  383. data/grammars/text.html.cfm.json +316 -325
  384. data/grammars/text.html.creole.json +177 -189
  385. data/grammars/text.html.django.json +27 -33
  386. data/grammars/text.html.ecr.json +21 -25
  387. data/grammars/text.html.elixir.json +3 -9
  388. data/grammars/text.html.erb.json +81 -85
  389. data/grammars/text.html.erlang.yaws.json +24 -29
  390. data/grammars/text.html.factor.json +5 -11
  391. data/grammars/text.html.ftl.json +16 -25
  392. data/grammars/text.html.handlebars.json +579 -598
  393. data/grammars/text.html.javadoc.json +426 -0
  394. data/grammars/text.html.js.json +11 -17
  395. data/grammars/text.html.jsp.json +377 -384
  396. data/grammars/text.html.liquid.json +8 -18
  397. data/grammars/text.html.mako.json +257 -275
  398. data/grammars/text.html.markdown.source.gfm.apib.json +419 -427
  399. data/grammars/text.html.markdown.source.gfm.mson.json +405 -414
  400. data/grammars/text.html.mediawiki.json +318 -344
  401. data/grammars/text.html.php.blade.json +2134 -2140
  402. data/grammars/text.html.php.json +980 -1013
  403. data/grammars/text.html.slash.json +101 -107
  404. data/grammars/text.html.smarty.json +75 -83
  405. data/grammars/text.html.soy.json +250 -253
  406. data/grammars/text.html.ssp.json +18 -24
  407. data/grammars/text.html.tcl.json +17 -24
  408. data/grammars/text.html.twig.json +712 -718
  409. data/grammars/text.idl-idldoc.json +5 -9
  410. data/grammars/text.jade.json +213 -235
  411. data/grammars/text.junit-test-report.json +25 -28
  412. data/grammars/text.log.latex.json +44 -46
  413. data/grammars/text.marko.json +370 -401
  414. data/grammars/text.python.console.json +3 -7
  415. data/grammars/text.python.traceback.json +2 -5
  416. data/grammars/text.rdoc.json +15 -19
  417. data/grammars/text.restructuredtext.clean.json +8 -11
  418. data/grammars/text.restructuredtext.json +886 -873
  419. data/grammars/text.robot.json +26 -36
  420. data/grammars/text.roff.json +2852 -2915
  421. data/grammars/text.runoff.json +56 -69
  422. data/grammars/text.sfd.json +151 -155
  423. data/grammars/text.shell-session.json +5 -8
  424. data/grammars/text.slim.json +184 -210
  425. data/grammars/text.srt.json +54 -57
  426. data/grammars/text.tex.json +98 -105
  427. data/grammars/text.tex.latex.beamer.json +14 -20
  428. data/grammars/text.tex.latex.haskell.json +883 -782
  429. data/grammars/text.tex.latex.json +281 -291
  430. data/grammars/text.tex.latex.memoir.json +39 -46
  431. data/grammars/text.tex.latex.rd.json +32 -38
  432. data/grammars/text.xml.ant.json +62 -69
  433. data/grammars/text.xml.flex-config.json +1009 -1013
  434. data/grammars/text.xml.genshi.json +10 -16
  435. data/grammars/text.xml.json +117 -130
  436. data/grammars/text.xml.pom.json +235 -240
  437. data/grammars/text.xml.xsl.json +31 -37
  438. data/grammars/text.zone_file.json +24 -29
  439. data/lib/linguist/blob.rb +10 -1
  440. data/lib/linguist/blob_helper.rb +4 -1
  441. data/lib/linguist/file_blob.rb +5 -0
  442. data/lib/linguist/generated.rb +16 -0
  443. data/lib/linguist/heuristics.rb +23 -11
  444. data/lib/linguist/language.rb +3 -6
  445. data/lib/linguist/languages.json +1 -1
  446. data/lib/linguist/languages.yml +74 -12
  447. data/lib/linguist/lazy_blob.rb +15 -1
  448. data/lib/linguist/linguist.bundle +0 -0
  449. data/lib/linguist/samples.json +1666 -3381
  450. data/lib/linguist/shebang.rb +2 -0
  451. data/lib/linguist/strategy/modeline.rb +2 -0
  452. data/lib/linguist/vendor.yml +5 -6
  453. data/lib/linguist/version.rb +1 -1
  454. metadata +12 -11
  455. data/grammars/source.elm.json +0 -381
  456. data/grammars/source.nant-build.json +0 -86
  457. data/grammars/source.octave.json +0 -451
  458. data/grammars/text.html.mediawiki.elm-build-output.json +0 -111
  459. data/grammars/text.html.mediawiki.elm-documentation.json +0 -22
  460. data/grammars/text.html.vue.json +0 -936
@@ -1,48 +1,49 @@
1
1
  {
2
- "comment": "Matches Spins's regular expression syntax.",
3
- "fileTypes": [
4
- "re"
5
- ],
6
- "foldingStartMarker": "(/\\*|\\{|\\()",
7
- "foldingStopMarker": "(\\*/|\\}|\\))",
8
2
  "name": "Regular Expressions (spin)",
3
+ "scopeName": "source.regexp.spin",
9
4
  "patterns": [
10
5
  {
11
- "match": "\\\\[bBAZzG]|\\^|\\$",
12
- "name": "keyword.control.anchor.regexp"
6
+ "name": "keyword.control.anchor.regexp",
7
+ "match": "\\\\[bBAZzG]|\\^|\\$"
13
8
  },
14
9
  {
15
- "match": "\\\\[1-9][0-9]?",
16
- "name": "keyword.other.back-reference.regexp"
10
+ "name": "keyword.other.back-reference.regexp",
11
+ "match": "\\\\[1-9][0-9]?"
17
12
  },
18
13
  {
19
- "match": "[?+*][?+]?|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",
20
- "name": "keyword.operator.quantifier.regexp"
14
+ "name": "keyword.operator.quantifier.regexp",
15
+ "match": "[?+*][?+]?|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
21
16
  },
22
17
  {
23
- "match": "\\|",
24
- "name": "keyword.operator.or.regexp"
18
+ "name": "keyword.operator.or.regexp",
19
+ "match": "\\|"
25
20
  },
26
21
  {
22
+ "name": "comment.block.regexp",
27
23
  "begin": "\\(\\?\\#",
28
- "end": "\\)",
29
- "name": "comment.block.regexp"
24
+ "end": "\\)"
30
25
  },
31
26
  {
32
- "comment": "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.",
33
- "match": "(?<=^|\\s)#\\s[[a-zA-Z0-9,. \\t?!-:][^\\x{00}-\\x{7F}]]*$",
34
- "name": "comment.line.number-sign.regexp"
27
+ "name": "comment.line.number-sign.regexp",
28
+ "match": "(?\u003c=^|\\s)#\\s[[a-zA-Z0-9,. \\t?!-:][^\\x{00}-\\x{7F}]]*$"
35
29
  },
36
30
  {
37
- "match": "\\(\\?[iLmsux]+\\)",
38
- "name": "keyword.other.option-toggle.regexp"
31
+ "name": "keyword.other.option-toggle.regexp",
32
+ "match": "\\(\\?[iLmsux]+\\)"
39
33
  },
40
34
  {
41
- "match": "(\\()(\\?P=([a-zA-Z_][a-zA-Z_0-9]*\\w*))(\\))",
42
- "name": "keyword.other.back-reference.named.regexp"
35
+ "name": "keyword.other.back-reference.named.regexp",
36
+ "match": "(\\()(\\?P=([a-zA-Z_][a-zA-Z_0-9]*\\w*))(\\))"
43
37
  },
44
38
  {
45
- "begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
39
+ "name": "meta.group.assertion.regexp",
40
+ "begin": "(\\()((\\?=)|(\\?!)|(\\?\u003c=)|(\\?\u003c!))",
41
+ "end": "(\\))",
42
+ "patterns": [
43
+ {
44
+ "include": "$self"
45
+ }
46
+ ],
46
47
  "beginCaptures": {
47
48
  "1": {
48
49
  "name": "punctuation.definition.group.regexp"
@@ -63,21 +64,21 @@
63
64
  "name": "meta.assertion.negative-look-behind.regexp"
64
65
  }
65
66
  },
66
- "end": "(\\))",
67
67
  "endCaptures": {
68
68
  "1": {
69
69
  "name": "punctuation.definition.group.regexp"
70
70
  }
71
- },
72
- "name": "meta.group.assertion.regexp",
71
+ }
72
+ },
73
+ {
74
+ "name": "meta.group.assertion.conditional.regexp",
75
+ "begin": "(\\()(\\?\\(([1-9][0-9]?|[a-zA-Z_][a-zA-Z_0-9]*)\\))",
76
+ "end": "(\\))",
73
77
  "patterns": [
74
78
  {
75
79
  "include": "$self"
76
80
  }
77
- ]
78
- },
79
- {
80
- "begin": "(\\()(\\?\\(([1-9][0-9]?|[a-zA-Z_][a-zA-Z_0-9]*)\\))",
81
+ ],
81
82
  "beginCaptures": {
82
83
  "1": {
83
84
  "name": "punctuation.definition.group.regexp"
@@ -88,18 +89,17 @@
88
89
  "3": {
89
90
  "name": "entity.name.section.back-reference.regexp"
90
91
  }
91
- },
92
- "comment": "we can make this more sophisticated to match the | character that separates yes-pattern from no-pattern, but it's not really necessary.",
92
+ }
93
+ },
94
+ {
95
+ "name": "meta.group.regexp",
96
+ "begin": "(\\()((\\?P\u003c)([a-z]\\w*)(\u003e)|(\\?:))?",
93
97
  "end": "(\\))",
94
- "name": "meta.group.assertion.conditional.regexp",
95
98
  "patterns": [
96
99
  {
97
100
  "include": "$self"
98
101
  }
99
- ]
100
- },
101
- {
102
- "begin": "(\\()((\\?P<)([a-z]\\w*)(>)|(\\?:))?",
102
+ ],
103
103
  "beginCaptures": {
104
104
  "1": {
105
105
  "name": "punctuation.definition.group.regexp"
@@ -117,18 +117,11 @@
117
117
  "name": "punctuation.definition.group.no-capture.regexp"
118
118
  }
119
119
  },
120
- "end": "(\\))",
121
120
  "endCaptures": {
122
121
  "1": {
123
122
  "name": "punctuation.definition.group.regexp"
124
123
  }
125
- },
126
- "name": "meta.group.regexp",
127
- "patterns": [
128
- {
129
- "include": "$self"
130
- }
131
- ]
124
+ }
132
125
  },
133
126
  {
134
127
  "include": "#character-class"
@@ -138,35 +131,24 @@
138
131
  "character-class": {
139
132
  "patterns": [
140
133
  {
141
- "match": "\\\\[wWsSdDhH]|\\.",
142
- "name": "constant.character.character-class.regexp"
134
+ "name": "constant.character.character-class.regexp",
135
+ "match": "\\\\[wWsSdDhH]|\\."
143
136
  },
144
137
  {
145
- "match": "\\\\.",
146
- "name": "constant.character.escape.backslash.regexp"
138
+ "name": "constant.character.escape.backslash.regexp",
139
+ "match": "\\\\."
147
140
  },
148
141
  {
142
+ "name": "constant.other.character-class.set.regexp",
149
143
  "begin": "(\\[)(\\^)?",
150
- "beginCaptures": {
151
- "1": {
152
- "name": "punctuation.definition.character-class.regexp"
153
- },
154
- "2": {
155
- "name": "keyword.operator.negation.regexp"
156
- }
157
- },
158
144
  "end": "(\\])",
159
- "endCaptures": {
160
- "1": {
161
- "name": "punctuation.definition.character-class.regexp"
162
- }
163
- },
164
- "name": "constant.other.character-class.set.regexp",
165
145
  "patterns": [
166
146
  {
167
147
  "include": "#character-class"
168
148
  },
169
149
  {
150
+ "name": "constant.other.character-class.range.regexp",
151
+ "match": "((\\\\.)|.)\\-((\\\\.)|[^\\]])",
170
152
  "captures": {
171
153
  "2": {
172
154
  "name": "constant.character.escape.backslash.regexp"
@@ -174,15 +156,24 @@
174
156
  "4": {
175
157
  "name": "constant.character.escape.backslash.regexp"
176
158
  }
177
- },
178
- "match": "((\\\\.)|.)\\-((\\\\.)|[^\\]])",
179
- "name": "constant.other.character-class.range.regexp"
159
+ }
160
+ }
161
+ ],
162
+ "beginCaptures": {
163
+ "1": {
164
+ "name": "punctuation.definition.character-class.regexp"
165
+ },
166
+ "2": {
167
+ "name": "keyword.operator.negation.regexp"
168
+ }
169
+ },
170
+ "endCaptures": {
171
+ "1": {
172
+ "name": "punctuation.definition.character-class.regexp"
180
173
  }
181
- ]
174
+ }
182
175
  }
183
176
  ]
184
177
  }
185
- },
186
- "scopeName": "source.regexp.spin",
187
- "uuid": "DD867ABF-1EC6-415D-B047-687F550A1D51"
188
- }
178
+ }
179
+ }
@@ -1,90 +1,86 @@
1
1
  {
2
- "scopeName": "source.renpy",
3
2
  "name": "Ren'Py",
4
- "fileTypes": [
5
- "rpy",
6
- "rpym"
7
- ],
8
- "firstLineMatch": "^#!/.*\\brenpy\\b",
3
+ "scopeName": "source.renpy",
9
4
  "patterns": [
10
5
  {
11
6
  "begin": "(^[ \\t]+)?(?=#)",
12
- "beginCaptures": {
13
- "1": {
14
- "name": "punctuation.whitespace.comment.leading.python"
15
- }
16
- },
17
7
  "end": "(?!\\G)",
18
8
  "patterns": [
19
9
  {
10
+ "name": "comment.line.number-sign.python",
20
11
  "begin": "#",
12
+ "end": "\\n",
21
13
  "beginCaptures": {
22
14
  "0": {
23
15
  "name": "punctuation.definition.comment.python"
24
16
  }
25
- },
26
- "end": "\\n",
27
- "name": "comment.line.number-sign.python"
17
+ }
28
18
  }
29
- ]
19
+ ],
20
+ "beginCaptures": {
21
+ "1": {
22
+ "name": "punctuation.whitespace.comment.leading.python"
23
+ }
24
+ }
30
25
  },
31
26
  {
32
- "match": "\\b(?i:(0x\\h*)L)",
33
- "name": "constant.numeric.integer.long.hexadecimal.python"
27
+ "name": "constant.numeric.integer.long.hexadecimal.python",
28
+ "match": "\\b(?i:(0x[[:xdigit:]]*)L)"
34
29
  },
35
30
  {
36
- "match": "\\b(?i:(0x\\h*))",
37
- "name": "constant.numeric.integer.hexadecimal.python"
31
+ "name": "constant.numeric.integer.hexadecimal.python",
32
+ "match": "\\b(?i:(0x[[:xdigit:]]*))"
38
33
  },
39
34
  {
40
- "match": "\\b(?i:(0[0-7]+)L)",
41
- "name": "constant.numeric.integer.long.octal.python"
35
+ "name": "constant.numeric.integer.long.octal.python",
36
+ "match": "\\b(?i:(0[0-7]+)L)"
42
37
  },
43
38
  {
44
- "match": "\\b(0[0-7]+)",
45
- "name": "constant.numeric.integer.octal.python"
39
+ "name": "constant.numeric.integer.octal.python",
40
+ "match": "\\b(0[0-7]+)"
46
41
  },
47
42
  {
48
- "match": "\\b(?i:(((\\d+(\\.(?=[^a-zA-Z_])\\d*)?|(?<=[^0-9a-zA-Z_])\\.\\d+)(e[\\-\\+]?\\d+)?))J)",
49
- "name": "constant.numeric.complex.python"
43
+ "name": "constant.numeric.complex.python",
44
+ "match": "\\b(?i:(((\\d+(\\.(?=[^a-zA-Z_])\\d*)?|(?\u003c=[^0-9a-zA-Z_])\\.\\d+)(e[\\-\\+]?\\d+)?))J)"
50
45
  },
51
46
  {
52
- "match": "\\b(?i:(\\d+\\.\\d*(e[\\-\\+]?\\d+)?))(?=[^a-zA-Z_])",
53
- "name": "constant.numeric.float.python"
47
+ "name": "constant.numeric.float.python",
48
+ "match": "\\b(?i:(\\d+\\.\\d*(e[\\-\\+]?\\d+)?))(?=[^a-zA-Z_])"
54
49
  },
55
50
  {
56
- "match": "(?<=[^0-9a-zA-Z_])(?i:(\\.\\d+(e[\\-\\+]?\\d+)?))",
57
- "name": "constant.numeric.float.python"
51
+ "name": "constant.numeric.float.python",
52
+ "match": "(?\u003c=[^0-9a-zA-Z_])(?i:(\\.\\d+(e[\\-\\+]?\\d+)?))"
58
53
  },
59
54
  {
60
- "match": "\\b(?i:(\\d+e[\\-\\+]?\\d+))",
61
- "name": "constant.numeric.float.python"
55
+ "name": "constant.numeric.float.python",
56
+ "match": "\\b(?i:(\\d+e[\\-\\+]?\\d+))"
62
57
  },
63
58
  {
64
- "match": "\\b(?i:([1-9]+[0-9]*|0)L)",
65
- "name": "constant.numeric.integer.long.decimal.python"
59
+ "name": "constant.numeric.integer.long.decimal.python",
60
+ "match": "\\b(?i:([1-9]+[0-9]*|0)L)"
66
61
  },
67
62
  {
68
- "match": "\\b([1-9]+[0-9]*|0)",
69
- "name": "constant.numeric.integer.decimal.python"
63
+ "name": "constant.numeric.integer.decimal.python",
64
+ "match": "\\b([1-9]+[0-9]*|0)"
70
65
  },
71
66
  {
67
+ "match": "\\b(global)\\b",
72
68
  "captures": {
73
69
  "1": {
74
70
  "name": "storage.modifier.global.python"
75
71
  }
76
- },
77
- "match": "\\b(global)\\b"
72
+ }
78
73
  },
79
74
  {
75
+ "match": "\\b(nonlocal)\\b",
80
76
  "captures": {
81
77
  "1": {
82
78
  "name": "storage.modifier.nonlocal.python"
83
79
  }
84
- },
85
- "match": "\\b(nonlocal)\\b"
80
+ }
86
81
  },
87
82
  {
83
+ "match": "\\b(?:(import)|(from))\\b",
88
84
  "captures": {
89
85
  "1": {
90
86
  "name": "keyword.control.import.python"
@@ -92,75 +88,62 @@
92
88
  "2": {
93
89
  "name": "keyword.control.import.from.python"
94
90
  }
95
- },
96
- "match": "\\b(?:(import)|(from))\\b"
91
+ }
97
92
  },
98
93
  {
99
- "comment": "keywords that delimit flow conditionals",
100
94
  "name": "keyword.control.conditional.python",
101
95
  "match": "\\b(if|elif|else)\\b"
102
96
  },
103
97
  {
104
- "comment": "keywords that delimit an exception",
105
98
  "name": "keyword.control.exception.python",
106
99
  "match": "\\b(except|finally|try|raise)\\b"
107
100
  },
108
101
  {
109
- "comment": "keywords that delimit loops",
110
102
  "name": "keyword.control.repeat.python",
111
103
  "match": "\\b(for|while)\\b"
112
104
  },
113
105
  {
114
- "comment": "keywords that alter flow from within a block",
115
106
  "name": "keyword.control.statement.python",
116
107
  "match": "\\b(function|nvl|block|choice|parallel|contains|on|voice|imagemap|hotspot|text|frame|textbutton|grid|add|key|use|bar|with|is|button|window|hbox|vbox|mousearea|imagebutton)\\b"
117
108
  },
118
109
  {
119
- "comment": "renpy screen statement keywords",
120
110
  "name": "support.type.screen.renpy",
121
111
  "match": "\\b(kind|color|action|area|hovered|unhovered|clicked|modal|text_style|has|who|what|tag|value|theme)\\b"
122
112
  },
123
113
  {
124
- "comment": "renpy transform keywords",
125
114
  "name": "support.type.transform.renpy",
126
115
  "match": "\\b(repeat|fadein|fadeout|position|Position|easein|easeout|time|ui)\\b"
127
116
  },
128
117
  {
129
- "comment": "other renpy keywords",
130
118
  "name": "support.type.other.renpy",
131
119
  "match": "\\b(MultiPersistent|Character|DynamicCharacter|music|sound|movie|pause|Transform|clear)\\b"
132
120
  },
133
121
  {
134
- "comment": "python one-line renpy keyword",
135
122
  "name": "invalid.deprecated.operator.renpy",
136
123
  "match": "\\$"
137
124
  },
138
125
  {
139
- "comment": "python control statements",
140
126
  "name": "keyword.control.statement.python",
141
127
  "match": "\\b(return|pass|break|continue|yield)\\b"
142
128
  },
143
129
  {
144
- "comment": "python statements renpy keywords",
145
130
  "name": "support.type.objects.renpy",
146
131
  "match": "\\b(renpy|store|persistent|config|build)\\b"
147
132
  },
148
133
  {
149
- "comment": "python statements renpy keywords",
150
134
  "name": "support.type.python.renpy",
151
135
  "match": "\\b(python)\\b"
152
136
  },
153
137
  {
154
- "comment": "init statements renpy keywords",
155
138
  "name": "keyword.control.statement.init.renpy",
156
139
  "match": "\\b(init)\\b"
157
140
  },
158
141
  {
159
- "comment": "transition class renpy keywords",
160
142
  "name": "support.type.transition.renpy",
161
143
  "match": "\\b(Solid|AlphaDissolve|ComposeTransition|CropMove|Dissolve|Fade|ImageDissolve|MoveTransition|MultipleTransition|Pause|Pixellate|move_transitions)\\b"
162
144
  },
163
145
  {
146
+ "match": "\\s+(with)\\s+\\b(fade|dissolve|pixellate|move|moveinright|moveinleft|moveintop|moveinbottom|moveoutright|moveoutleft|moveouttop|moveoutbottom|ease|easeinright|easeinleft|easeintop|easeinbottom|easeoutright|easeoutleft|easeouttop|easeoutbottom|zoomin|zoomout|zoominout|vpunch|hpunch|blinds|squares|wipeleft|wiperight|wipeup|wipedown|slideleft|slideright|slideup|slidedown|slideawayleft|slideawayright|slideawayup|slideawaydown|irisin|irisout)\\b",
164
147
  "captures": {
165
148
  "1": {
166
149
  "name": "keyword.control.statement.with.renpy"
@@ -168,26 +151,22 @@
168
151
  "2": {
169
152
  "name": "support.type.transition.renpy"
170
153
  }
171
- },
172
- "comment": "transitions renpy keywords",
173
- "match": "\\s+(with)\\s+\\b(fade|dissolve|pixellate|move|moveinright|moveinleft|moveintop|moveinbottom|moveoutright|moveoutleft|moveouttop|moveoutbottom|ease|easeinright|easeinleft|easeintop|easeinbottom|easeoutright|easeoutleft|easeouttop|easeoutbottom|zoomin|zoomout|zoominout|vpunch|hpunch|blinds|squares|wipeleft|wiperight|wipeup|wipedown|slideleft|slideright|slideup|slidedown|slideawayleft|slideawayright|slideawayup|slideawaydown|irisin|irisout)\\b"
154
+ }
174
155
  },
175
156
  {
176
- "comment": "transform properties renpy keywords",
177
157
  "name": "support.type.transform.renpy",
178
158
  "match": "\\b(linear|top_margin|ymargin|xsize|ysize|yminimum|xminimum|ymaximum|xmaximum|transpose|insensitive|selected_idle|selected_hover|ground|idle|hover|focus_mask|hover_sound|activate_sound|style|spacing|text_align|size_group|layout|style_group|background|ypadding|xpadding|idle_color|hover_color|selected_idle_color|selected_hover_color|insensitive_color|xfill|xmargin|pos|xpos|ypos|anchor|xanchor|yanchor|align|xalign|yalign|xoffset|yoffset|xcenter|ycenter|rotate|rotate_pad|transform_anchor|zoom|xzoom|yzoom|nearest|alpha|additive|around|alignaround|angle|radius|crop|crop_relative|corner1|corner2|size|subpixel|delay|events)\\b"
179
159
  },
180
160
  {
181
- "comment": "Movie renpy keywords",
182
161
  "name": "support.type.movie.renpy",
183
162
  "match": "\\b(Movie|movie_cutscene)\\b"
184
163
  },
185
164
  {
186
- "comment": "Audio/Movie statements renpy keywords",
187
165
  "name": "keyword.control.statement.python",
188
166
  "match": "\\b(play|queue|stop)\\b"
189
167
  },
190
168
  {
169
+ "match": "(\\s*\\.\\s*)(music|sound)\\s*\\.\\s*(play|seen_audio|get_duration|get_pause|get_playing|get_pos|is_playing|queue|register_channel|set_pan|set_pause|set_queue_empty_callback|set_volume|stop|loop|noloop)\\b",
191
170
  "captures": {
192
171
  "2": {
193
172
  "name": "support.type.music.renpy"
@@ -195,74 +174,62 @@
195
174
  "3": {
196
175
  "name": "entity.name.function.images.renpy"
197
176
  }
198
- },
199
- "comment": "Audio functions renpy keywords",
200
- "match": "(\\s*\\.\\s*)(music|sound)\\s*\\.\\s*(play|seen_audio|get_duration|get_pause|get_playing|get_pos|is_playing|queue|register_channel|set_pan|set_pause|set_queue_empty_callback|set_volume|stop|loop|noloop)\\b"
177
+ }
201
178
  },
202
179
  {
180
+ "match": "(\\s*\\.\\s*)(play|seen_audio)\\b",
203
181
  "captures": {
204
182
  "2": {
205
183
  "name": "entity.name.function.images.renpy"
206
184
  }
207
- },
208
- "comment": "Audio functions renpy keywords",
209
- "match": "(\\s*\\.\\s*)(play|seen_audio)\\b"
185
+ }
210
186
  },
211
187
  {
212
- "comment": "show statements renpy keywords",
213
188
  "name": "support.type.show.renpy",
214
189
  "match": "\\b(as|at|behind|onlayer|zorder|expression)\\b"
215
190
  },
216
191
  {
192
+ "match": "(\\s*\\.\\s*)(can_show|copy_images|get_available_image_attributes|get_available_image_tags|get_image_bounds|get_placement|get_showing_tags|has_image|image_exists|seen_image|showing|start_predict|stop_predict)\\b",
217
193
  "captures": {
218
194
  "2": {
219
195
  "name": "entity.name.function.images.renpy"
220
196
  }
221
- },
222
- "comment": "image functions renpy keywords",
223
- "match": "(\\s*\\.\\s*)(can_show|copy_images|get_available_image_attributes|get_available_image_tags|get_image_bounds|get_placement|get_showing_tags|has_image|image_exists|seen_image|showing|start_predict|stop_predict)\\b"
197
+ }
224
198
  },
225
199
  {
226
- "comment": "action renpy keywords",
227
200
  "name": "support.type.action.renpy",
228
201
  "match": "\\b(Hide|Jump|NullAction|Return|Show|ShowTransient)\\b"
229
202
  },
230
203
  {
231
- "comment": "Data Action renpy keywords",
232
204
  "name": "support.type.action.renpy",
233
205
  "match": "\\b(SetDict|SetField|SetScreenVariable|SetVariable|ToggleDict|ToggleField|ToggleScreenVariable|ToggleVariable)\\b"
234
206
  },
235
207
  {
236
- "comment": "Menu Action renpy keywords",
237
208
  "name": "support.type.action.renpy",
238
209
  "match": "\\b(MainMenu|Quit|ShowMenu|Start)\\b"
239
210
  },
240
211
  {
241
- "comment": "File Action renpy keywords",
242
212
  "name": "support.type.action.renpy",
243
213
  "match": "\\b(FileAction|FileDelete|FileLoad|FilePage|FilePageNext|FilePagePrevious|FileSave|FileTakeScreenShot|QuickLoad|QuickSave)\\b"
244
214
  },
245
215
  {
246
- "comment": "Audio Action renpy keywords",
247
216
  "name": "support.type.action.renpy",
248
217
  "match": "\\b(Play|Queue|SetMixer|Stop)\\b"
249
218
  },
250
219
  {
251
- "comment": "Other Action renpy keywords",
252
220
  "name": "support.type.other.renpy",
253
221
  "match": "\\b(Preference|Function|Help|HideInterface|If|InvertSelected|MouseMove|Notify|OpenURL|RollForward|Rollback|ScreenShot|SelectedIf|Skip|With)\\b"
254
222
  },
255
223
  {
256
- "comment": "Translation key \"new\"",
257
224
  "name": "entity.name.function.translation.renpy",
258
225
  "match": "(?:\\s+)\\b(new)\\b"
259
226
  },
260
227
  {
261
- "comment": "Translation key \"old\"",
262
228
  "name": "keyword.operator.logical.translation.renpy",
263
229
  "match": "(?:\\s+)\\b(old)\\b"
264
230
  },
265
231
  {
232
+ "match": "^\\b(translate)\\b\\s\\b([a-zA-z0-9_]+)\\b\\s\\b(strings)\\b",
266
233
  "captures": {
267
234
  "1": {
268
235
  "name": "keyword.operator.logical.translation.renpy"
@@ -273,89 +240,69 @@
273
240
  "3": {
274
241
  "name": "support.type.translation.renpy"
275
242
  }
276
- },
277
- "comment": "python statements renpy keywords",
278
- "match": "^\\b(translate)\\b\\s\\b([a-zA-z0-9_]+)\\b\\s\\b(strings)\\b"
243
+ }
279
244
  },
280
245
  {
281
- "comment": "keyword operators that evaluate to True or False",
282
- "match": "\\b(and|in|is|not|or)\\b",
283
- "name": "keyword.operator.logical.python"
246
+ "name": "keyword.operator.logical.python",
247
+ "match": "\\b(and|in|is|not|or)\\b"
284
248
  },
285
249
  {
250
+ "match": "\\b(assert|del|exec|print)\\b",
286
251
  "captures": {
287
252
  "1": {
288
253
  "name": "keyword.other.python"
289
254
  }
290
- },
291
- "comment": "keywords that haven't fit into other groups (yet).",
292
- "match": "\\b(assert|del|exec|print)\\b"
255
+ }
293
256
  },
294
257
  {
295
- "match": "<>",
296
- "name": "invalid.deprecated.operator.python"
258
+ "name": "invalid.deprecated.operator.python",
259
+ "match": "\u003c\u003e"
297
260
  },
298
261
  {
299
- "match": "<\\=|>\\=|\\=\\=|<|>|\\!\\=",
300
- "name": "keyword.operator.comparison.python"
262
+ "name": "keyword.operator.comparison.python",
263
+ "match": "\u003c\\=|\u003e\\=|\\=\\=|\u003c|\u003e|\\!\\="
301
264
  },
302
265
  {
303
- "match": "\\+\\=|-\\=|\\*\\=|/\\=|//\\=|%\\=|&\\=|\\|\\=|\\^\\=|>>\\=|<<\\=|\\*\\*\\=",
304
- "name": "keyword.operator.assignment.augmented.python"
266
+ "name": "keyword.operator.assignment.augmented.python",
267
+ "match": "\\+\\=|-\\=|\\*\\=|/\\=|//\\=|%\\=|\u0026\\=|\\|\\=|\\^\\=|\u003e\u003e\\=|\u003c\u003c\\=|\\*\\*\\="
305
268
  },
306
269
  {
307
- "match": "\\+|\\-|\\*|\\*\\*|/|//|%|<<|>>|&|\\||\\^|~",
308
- "name": "keyword.operator.arithmetic.python"
270
+ "name": "keyword.operator.arithmetic.python",
271
+ "match": "\\+|\\-|\\*|\\*\\*|/|//|%|\u003c\u003c|\u003e\u003e|\u0026|\\||\\^|~"
309
272
  },
310
273
  {
311
- "match": "\\=",
312
- "name": "keyword.operator.assignment.python"
274
+ "name": "keyword.operator.assignment.python",
275
+ "match": "\\="
313
276
  },
314
277
  {
315
- "begin": "^\\s*(class)\\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\\s*\\:)",
316
- "beginCaptures": {
317
- "1": {
318
- "name": "storage.type.class.python"
319
- }
320
- },
278
+ "name": "meta.class.old-style.python",
321
279
  "contentName": "entity.name.type.class.python",
280
+ "begin": "^\\s*(class)\\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\\s*\\:)",
322
281
  "end": "\\s*(:)",
323
- "endCaptures": {
324
- "1": {
325
- "name": "punctuation.section.class.begin.python"
326
- }
327
- },
328
- "name": "meta.class.old-style.python",
329
282
  "patterns": [
330
283
  {
331
284
  "include": "#entity_name_class"
332
285
  }
333
- ]
334
- },
335
- {
336
- "begin": "^\\s*(class)\\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\\s*\\()",
286
+ ],
337
287
  "beginCaptures": {
338
288
  "1": {
339
289
  "name": "storage.type.class.python"
340
290
  }
341
291
  },
342
- "end": "(\\))\\s*(?:(\\:)|(.*$\\n?))",
343
292
  "endCaptures": {
344
293
  "1": {
345
- "name": "punctuation.definition.inheritance.end.python"
346
- },
347
- "2": {
348
294
  "name": "punctuation.section.class.begin.python"
349
- },
350
- "3": {
351
- "name": "invalid.illegal.missing-section-begin.python"
352
295
  }
353
- },
296
+ }
297
+ },
298
+ {
354
299
  "name": "meta.class.python",
300
+ "begin": "^\\s*(class)\\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\\s*\\()",
301
+ "end": "(\\))\\s*(?:(\\:)|(.*$\\n?))",
355
302
  "patterns": [
356
303
  {
357
- "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
358
304
  "contentName": "entity.name.type.class.python",
305
+ "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
359
306
  "end": "(?![A-Za-z0-9_])",
360
307
  "patterns": [
361
308
  {
@@ -364,42 +311,38 @@
364
311
  ]
365
312
  },
366
313
  {
367
- "begin": "(\\()",
368
- "beginCaptures": {
369
- "1": {
370
- "name": "punctuation.definition.inheritance.begin.python"
371
- }
372
- },
373
314
  "contentName": "meta.class.inheritance.python",
315
+ "begin": "(\\()",
374
316
  "end": "(?=\\)|:)",
375
317
  "patterns": [
376
318
  {
377
- "begin": "(?<=\\(|,)\\s*",
378
319
  "contentName": "entity.other.inherited-class.python",
320
+ "begin": "(?\u003c=\\(|,)\\s*",
379
321
  "end": "\\s*(?:(,)|(?=\\)))",
380
- "endCaptures": {
381
- "1": {
382
- "name": "punctuation.separator.inheritance.python"
383
- }
384
- },
385
322
  "patterns": [
386
323
  {
387
324
  "include": "$self"
388
325
  }
389
- ]
326
+ ],
327
+ "endCaptures": {
328
+ "1": {
329
+ "name": "punctuation.separator.inheritance.python"
330
+ }
331
+ }
390
332
  }
391
- ]
333
+ ],
334
+ "beginCaptures": {
335
+ "1": {
336
+ "name": "punctuation.definition.inheritance.begin.python"
337
+ }
338
+ }
392
339
  }
393
- ]
394
- },
395
- {
396
- "begin": "^\\s*((jump)|(call)|(screen)|(label)|(menu)|(transform))\\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\\s*)",
340
+ ],
397
341
  "beginCaptures": {
398
342
  "1": {
399
- "name": "keyword.control.statement.renpy"
343
+ "name": "storage.type.class.python"
400
344
  }
401
345
  },
402
- "end": "(\\n|\\()|\\:",
403
346
  "endCaptures": {
404
347
  "1": {
405
348
  "name": "punctuation.definition.inheritance.end.python"
@@ -410,12 +353,16 @@
410
353
  "3": {
411
354
  "name": "invalid.illegal.missing-section-begin.python"
412
355
  }
413
- },
356
+ }
357
+ },
358
+ {
414
359
  "name": "meta.class.python",
360
+ "begin": "^\\s*((jump)|(call)|(screen)|(label)|(menu)|(transform))\\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\\s*)",
361
+ "end": "(\\n|\\()|\\:",
415
362
  "patterns": [
416
363
  {
417
- "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
418
364
  "contentName": "entity.name.type.class.python",
365
+ "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
419
366
  "end": "(?![A-Za-z0-9_])",
420
367
  "patterns": [
421
368
  {
@@ -424,42 +371,38 @@
424
371
  ]
425
372
  },
426
373
  {
427
- "begin": "(\\()",
428
- "beginCaptures": {
429
- "1": {
430
- "name": "punctuation.definition.inheritance.begin.python"
431
- }
432
- },
433
374
  "contentName": "meta.class.inheritance.python",
375
+ "begin": "(\\()",
434
376
  "end": "(?=\\)|:)",
435
377
  "patterns": [
436
378
  {
437
- "begin": "(?<=\\(|,)\\s*",
438
379
  "contentName": "entity.other.inherited-class.python",
380
+ "begin": "(?\u003c=\\(|,)\\s*",
439
381
  "end": "\\s*(?:(,)|(?=\\)))",
440
- "endCaptures": {
441
- "1": {
442
- "name": "punctuation.separator.inheritance.python"
443
- }
444
- },
445
382
  "patterns": [
446
383
  {
447
384
  "include": "$self"
448
385
  }
449
- ]
386
+ ],
387
+ "endCaptures": {
388
+ "1": {
389
+ "name": "punctuation.separator.inheritance.python"
390
+ }
391
+ }
450
392
  }
451
- ]
393
+ ],
394
+ "beginCaptures": {
395
+ "1": {
396
+ "name": "punctuation.definition.inheritance.begin.python"
397
+ }
398
+ }
452
399
  }
453
- ]
454
- },
455
- {
456
- "begin": "((default)|(define)|(image)|(scene)|(show)|(hide))\\s+((\\s)|(?=[a-zA-Z_][a-zA-Z_0-9]*\\s*))",
400
+ ],
457
401
  "beginCaptures": {
458
402
  "1": {
459
403
  "name": "keyword.control.statement.renpy"
460
404
  }
461
405
  },
462
- "end": "(\\=)|(\\s)|(\\s*$\\n?|#.*$\\n?)",
463
406
  "endCaptures": {
464
407
  "1": {
465
408
  "name": "punctuation.definition.inheritance.end.python"
@@ -470,12 +413,16 @@
470
413
  "3": {
471
414
  "name": "invalid.illegal.missing-section-begin.python"
472
415
  }
473
- },
416
+ }
417
+ },
418
+ {
474
419
  "name": "meta.class.python",
420
+ "begin": "((default)|(define)|(image)|(scene)|(show)|(hide))\\s+((\\s)|(?=[a-zA-Z_][a-zA-Z_0-9]*\\s*))",
421
+ "end": "(\\=)|(\\s)|(\\s*$\\n?|#.*$\\n?)",
475
422
  "patterns": [
476
423
  {
477
- "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
478
424
  "contentName": "entity.name.type.class.python",
425
+ "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
479
426
  "end": "(?![A-Za-z0-9_])",
480
427
  "patterns": [
481
428
  {
@@ -484,55 +431,58 @@
484
431
  ]
485
432
  },
486
433
  {
487
- "begin": "(\\()",
488
- "beginCaptures": {
489
- "1": {
490
- "name": "punctuation.definition.inheritance.begin.python"
491
- }
492
- },
493
434
  "contentName": "meta.class.inheritance.python",
435
+ "begin": "(\\()",
494
436
  "end": "(?=\\)|:|)",
495
437
  "patterns": [
496
438
  {
497
- "begin": "(?<=\\(|,)\\s*",
498
439
  "contentName": "entity.other.inherited-class.python",
440
+ "begin": "(?\u003c=\\(|,)\\s*",
499
441
  "end": "\\s*(?:(,)|(?=\\)))",
500
- "endCaptures": {
501
- "1": {
502
- "name": "punctuation.separator.inheritance.python"
503
- }
504
- },
505
442
  "patterns": [
506
443
  {
507
444
  "include": "$self"
508
445
  }
509
- ]
446
+ ],
447
+ "endCaptures": {
448
+ "1": {
449
+ "name": "punctuation.separator.inheritance.python"
450
+ }
451
+ }
510
452
  }
511
- ]
453
+ ],
454
+ "beginCaptures": {
455
+ "1": {
456
+ "name": "punctuation.definition.inheritance.begin.python"
457
+ }
458
+ }
512
459
  }
513
- ]
514
- },
515
- {
516
- "begin": "^\\s*(class)\\s+(?=[a-zA-Z_][a-zA-Z_0-9])",
460
+ ],
517
461
  "beginCaptures": {
518
462
  "1": {
519
- "name": "storage.type.class.python"
463
+ "name": "keyword.control.statement.renpy"
520
464
  }
521
465
  },
522
- "end": "(\\()|(\\s*$\\n?|#.*$\\n?)",
523
466
  "endCaptures": {
524
467
  "1": {
525
- "name": "punctuation.definition.inheritance.begin.python"
468
+ "name": "punctuation.definition.inheritance.end.python"
526
469
  },
527
470
  "2": {
528
- "name": "invalid.illegal.missing-inheritance.python"
471
+ "name": "punctuation.section.class.begin.python"
472
+ },
473
+ "3": {
474
+ "name": "invalid.illegal.missing-section-begin.python"
529
475
  }
530
- },
476
+ }
477
+ },
478
+ {
531
479
  "name": "meta.class.python",
480
+ "begin": "^\\s*(class)\\s+(?=[a-zA-Z_][a-zA-Z_0-9])",
481
+ "end": "(\\()|(\\s*$\\n?|#.*$\\n?)",
532
482
  "patterns": [
533
483
  {
534
- "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
535
484
  "contentName": "entity.name.type.class.python",
485
+ "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
536
486
  "end": "(?![A-Za-z0-9_])",
537
487
  "patterns": [
538
488
  {
@@ -540,32 +490,29 @@
540
490
  }
541
491
  ]
542
492
  }
543
- ]
544
- },
545
- {
546
- "begin": "^\\s*(def)\\s+(?=[A-Za-z_][A-Za-z0-9_]*\\s*\\()",
493
+ ],
547
494
  "beginCaptures": {
548
495
  "1": {
549
- "name": "storage.type.function.python"
496
+ "name": "storage.type.class.python"
550
497
  }
551
498
  },
552
- "end": "(\\))\\s*(?:(\\:)|(.*$\\n?))",
553
499
  "endCaptures": {
554
500
  "1": {
555
- "name": "punctuation.definition.parameters.end.python"
501
+ "name": "punctuation.definition.inheritance.begin.python"
556
502
  },
557
503
  "2": {
558
- "name": "punctuation.section.function.begin.python"
559
- },
560
- "3": {
561
- "name": "invalid.illegal.missing-section-begin.python"
504
+ "name": "invalid.illegal.missing-inheritance.python"
562
505
  }
563
- },
506
+ }
507
+ },
508
+ {
564
509
  "name": "meta.function.python",
510
+ "begin": "^\\s*(def)\\s+(?=[A-Za-z_][A-Za-z0-9_]*\\s*\\()",
511
+ "end": "(\\))\\s*(?:(\\:)|(.*$\\n?))",
565
512
  "patterns": [
566
513
  {
567
- "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
568
514
  "contentName": "entity.name.function.python",
515
+ "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
569
516
  "end": "(?![A-Za-z0-9_])",
570
517
  "patterns": [
571
518
  {
@@ -574,19 +521,15 @@
574
521
  ]
575
522
  },
576
523
  {
577
- "begin": "(\\()",
578
- "beginCaptures": {
579
- "1": {
580
- "name": "punctuation.definition.parameters.begin.python"
581
- }
582
- },
583
524
  "contentName": "meta.function.parameters.python",
525
+ "begin": "(\\()",
584
526
  "end": "(?=\\)\\s*\\:)",
585
527
  "patterns": [
586
528
  {
587
529
  "include": "#keyword_arguments"
588
530
  },
589
531
  {
532
+ "match": "\\b([a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(,)|(?=[\\n\\)]))",
590
533
  "captures": {
591
534
  "1": {
592
535
  "name": "variable.parameter.function.python"
@@ -594,34 +537,41 @@
594
537
  "2": {
595
538
  "name": "punctuation.separator.parameters.python"
596
539
  }
597
- },
598
- "match": "\\b([a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(,)|(?=[\\n\\)]))"
540
+ }
599
541
  }
600
- ]
542
+ ],
543
+ "beginCaptures": {
544
+ "1": {
545
+ "name": "punctuation.definition.parameters.begin.python"
546
+ }
547
+ }
601
548
  }
602
- ]
603
- },
604
- {
605
- "begin": "^\\s*(def)\\s+(?=[A-Za-z_][A-Za-z0-9_]*)",
549
+ ],
606
550
  "beginCaptures": {
607
551
  "1": {
608
552
  "name": "storage.type.function.python"
609
553
  }
610
554
  },
611
- "end": "(\\()|\\s*($\\n?|#.*$\\n?)",
612
555
  "endCaptures": {
613
556
  "1": {
614
- "name": "punctuation.definition.parameters.begin.python"
557
+ "name": "punctuation.definition.parameters.end.python"
615
558
  },
616
559
  "2": {
617
- "name": "invalid.illegal.missing-parameters.python"
560
+ "name": "punctuation.section.function.begin.python"
561
+ },
562
+ "3": {
563
+ "name": "invalid.illegal.missing-section-begin.python"
618
564
  }
619
- },
565
+ }
566
+ },
567
+ {
620
568
  "name": "meta.function.python",
569
+ "begin": "^\\s*(def)\\s+(?=[A-Za-z_][A-Za-z0-9_]*)",
570
+ "end": "(\\()|\\s*($\\n?|#.*$\\n?)",
621
571
  "patterns": [
622
572
  {
623
- "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
624
573
  "contentName": "entity.name.function.python",
574
+ "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
625
575
  "end": "(?![A-Za-z0-9_])",
626
576
  "patterns": [
627
577
  {
@@ -629,38 +579,36 @@
629
579
  }
630
580
  ]
631
581
  }
632
- ]
633
- },
634
- {
635
- "begin": "(lambda)(?=\\s+)",
582
+ ],
636
583
  "beginCaptures": {
637
584
  "1": {
638
- "name": "storage.type.function.inline.python"
585
+ "name": "storage.type.function.python"
639
586
  }
640
587
  },
641
- "end": "(\\:)",
642
588
  "endCaptures": {
643
589
  "1": {
644
- "name": "punctuation.definition.parameters.end.python"
590
+ "name": "punctuation.definition.parameters.begin.python"
645
591
  },
646
592
  "2": {
647
- "name": "punctuation.section.function.begin.python"
648
- },
649
- "3": {
650
- "name": "invalid.illegal.missing-section-begin.python"
593
+ "name": "invalid.illegal.missing-parameters.python"
651
594
  }
652
- },
595
+ }
596
+ },
597
+ {
653
598
  "name": "meta.function.inline.python",
599
+ "begin": "(lambda)(?=\\s+)",
600
+ "end": "(\\:)",
654
601
  "patterns": [
655
602
  {
656
- "begin": "\\s+",
657
603
  "contentName": "meta.function.inline.parameters.python",
604
+ "begin": "\\s+",
658
605
  "end": "(?=\\:)",
659
606
  "patterns": [
660
607
  {
661
608
  "include": "#keyword_arguments"
662
609
  },
663
610
  {
611
+ "match": "\\b([a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(,)|(?=[\\n\\)\\:]))",
664
612
  "captures": {
665
613
  "1": {
666
614
  "name": "variable.parameter.function.python"
@@ -668,47 +616,51 @@
668
616
  "2": {
669
617
  "name": "punctuation.separator.parameters.python"
670
618
  }
671
- },
672
- "match": "\\b([a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(,)|(?=[\\n\\)\\:]))"
619
+ }
673
620
  }
674
621
  ]
675
622
  }
676
- ]
677
- },
678
- {
679
- "begin": "^\\s*(?=@\\s*[A-Za-z_][A-Za-z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*\\s*\\()",
680
- "comment": "a decorator may be a function call which returns a decorator.",
681
- "end": "(\\))",
682
- "endCaptures": {
623
+ ],
624
+ "beginCaptures": {
683
625
  "1": {
684
- "name": "punctuation.definition.arguments.end.python"
626
+ "name": "storage.type.function.inline.python"
685
627
  }
686
628
  },
629
+ "endCaptures": {
630
+ "1": {
631
+ "name": "punctuation.definition.parameters.end.python"
632
+ },
633
+ "2": {
634
+ "name": "punctuation.section.function.begin.python"
635
+ },
636
+ "3": {
637
+ "name": "invalid.illegal.missing-section-begin.python"
638
+ }
639
+ }
640
+ },
641
+ {
687
642
  "name": "meta.function.decorator.python",
643
+ "begin": "^\\s*(?=@\\s*[A-Za-z_][A-Za-z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*\\s*\\()",
644
+ "end": "(\\))",
688
645
  "patterns": [
689
646
  {
690
- "begin": "(?=(@)\\s*[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*)*\\s*\\()",
691
- "beginCaptures": {
692
- "1": {
693
- "name": "punctuation.definition.decorator.python"
694
- }
695
- },
696
647
  "contentName": "entity.name.function.decorator.python",
648
+ "begin": "(?=(@)\\s*[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*)*\\s*\\()",
697
649
  "end": "(?=\\s*\\()",
698
650
  "patterns": [
699
651
  {
700
652
  "include": "#dotted_name"
701
653
  }
702
- ]
703
- },
704
- {
705
- "begin": "(\\()",
654
+ ],
706
655
  "beginCaptures": {
707
656
  "1": {
708
- "name": "punctuation.definition.arguments.begin.python"
657
+ "name": "punctuation.definition.decorator.python"
709
658
  }
710
- },
659
+ }
660
+ },
661
+ {
711
662
  "contentName": "meta.function.decorator.arguments.python",
663
+ "begin": "(\\()",
712
664
  "end": "(?=\\))",
713
665
  "patterns": [
714
666
  {
@@ -717,47 +669,47 @@
717
669
  {
718
670
  "include": "$self"
719
671
  }
720
- ]
672
+ ],
673
+ "beginCaptures": {
674
+ "1": {
675
+ "name": "punctuation.definition.arguments.begin.python"
676
+ }
677
+ }
721
678
  }
722
- ]
679
+ ],
680
+ "endCaptures": {
681
+ "1": {
682
+ "name": "punctuation.definition.arguments.end.python"
683
+ }
684
+ }
723
685
  },
724
686
  {
725
- "begin": "^\\s*(?=@\\s*[A-Za-z_][A-Za-z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*)",
687
+ "name": "meta.function.decorator.python",
726
688
  "contentName": "entity.name.function.decorator.python",
689
+ "begin": "^\\s*(?=@\\s*[A-Za-z_][A-Za-z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*)",
727
690
  "end": "(?=\\s|$\\n?|#)",
728
- "name": "meta.function.decorator.python",
729
691
  "patterns": [
730
692
  {
731
693
  "begin": "(?=(@)\\s*[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*)",
732
- "beginCaptures": {
733
- "1": {
734
- "name": "punctuation.definition.decorator.python"
735
- }
736
- },
737
694
  "end": "(?=\\s|$\\n?|#)",
738
695
  "patterns": [
739
696
  {
740
697
  "include": "#dotted_name"
741
698
  }
742
- ]
699
+ ],
700
+ "beginCaptures": {
701
+ "1": {
702
+ "name": "punctuation.definition.decorator.python"
703
+ }
704
+ }
743
705
  }
744
706
  ]
745
707
  },
746
708
  {
747
- "begin": "(?<=\\)|\\])\\s*(\\()",
748
- "beginCaptures": {
749
- "1": {
750
- "name": "punctuation.definition.arguments.begin.python"
751
- }
752
- },
709
+ "name": "meta.function-call.python",
753
710
  "contentName": "meta.function-call.arguments.python",
711
+ "begin": "(?\u003c=\\)|\\])\\s*(\\()",
754
712
  "end": "(\\))",
755
- "endCaptures": {
756
- "1": {
757
- "name": "punctuation.definition.arguments.end.python"
758
- }
759
- },
760
- "name": "meta.function-call.python",
761
713
  "patterns": [
762
714
  {
763
715
  "include": "#keyword_arguments"
@@ -765,17 +717,22 @@
765
717
  {
766
718
  "include": "$self"
767
719
  }
768
- ]
769
- },
770
- {
771
- "begin": "(?=[A-Za-z_][A-Za-z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*\\s*\\()",
772
- "end": "(\\))",
720
+ ],
721
+ "beginCaptures": {
722
+ "1": {
723
+ "name": "punctuation.definition.arguments.begin.python"
724
+ }
725
+ },
773
726
  "endCaptures": {
774
727
  "1": {
775
728
  "name": "punctuation.definition.arguments.end.python"
776
729
  }
777
- },
730
+ }
731
+ },
732
+ {
778
733
  "name": "meta.function-call.python",
734
+ "begin": "(?=[A-Za-z_][A-Za-z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*\\s*\\()",
735
+ "end": "(\\))",
779
736
  "patterns": [
780
737
  {
781
738
  "begin": "(?=[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*)*\\s*\\()",
@@ -787,13 +744,8 @@
787
744
  ]
788
745
  },
789
746
  {
790
- "begin": "(\\()",
791
- "beginCaptures": {
792
- "1": {
793
- "name": "punctuation.definition.arguments.begin.python"
794
- }
795
- },
796
747
  "contentName": "meta.function-call.arguments.python",
748
+ "begin": "(\\()",
797
749
  "end": "(?=\\))",
798
750
  "patterns": [
799
751
  {
@@ -802,19 +754,24 @@
802
754
  {
803
755
  "include": "$self"
804
756
  }
805
- ]
757
+ ],
758
+ "beginCaptures": {
759
+ "1": {
760
+ "name": "punctuation.definition.arguments.begin.python"
761
+ }
762
+ }
806
763
  }
807
- ]
808
- },
809
- {
810
- "begin": "(?=[A-Za-z_][A-Za-z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*\\s*\\[)",
811
- "end": "(\\])",
764
+ ],
812
765
  "endCaptures": {
813
766
  "1": {
814
767
  "name": "punctuation.definition.arguments.end.python"
815
768
  }
816
- },
769
+ }
770
+ },
771
+ {
817
772
  "name": "meta.item-access.python",
773
+ "begin": "(?=[A-Za-z_][A-Za-z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*\\s*\\[)",
774
+ "end": "(\\])",
818
775
  "patterns": [
819
776
  {
820
777
  "begin": "(?=[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*)*\\s*\\[)",
@@ -826,66 +783,71 @@
826
783
  ]
827
784
  },
828
785
  {
829
- "begin": "(\\[)",
830
- "beginCaptures": {
831
- "1": {
832
- "name": "punctuation.definition.arguments.begin.python"
833
- }
834
- },
835
786
  "contentName": "meta.item-access.arguments.python",
787
+ "begin": "(\\[)",
836
788
  "end": "(?=\\])",
837
789
  "patterns": [
838
790
  {
839
791
  "include": "$self"
840
792
  }
841
- ]
793
+ ],
794
+ "beginCaptures": {
795
+ "1": {
796
+ "name": "punctuation.definition.arguments.begin.python"
797
+ }
798
+ }
842
799
  }
843
- ]
800
+ ],
801
+ "endCaptures": {
802
+ "1": {
803
+ "name": "punctuation.definition.arguments.end.python"
804
+ }
805
+ }
844
806
  },
845
807
  {
846
- "begin": "(?<=\\)|\\])\\s*(\\[)",
808
+ "name": "meta.item-access.python",
809
+ "contentName": "meta.item-access.arguments.python",
810
+ "begin": "(?\u003c=\\)|\\])\\s*(\\[)",
811
+ "end": "(\\])",
812
+ "patterns": [
813
+ {
814
+ "include": "$self"
815
+ }
816
+ ],
847
817
  "beginCaptures": {
848
818
  "1": {
849
819
  "name": "punctuation.definition.arguments.begin.python"
850
820
  }
851
821
  },
852
- "contentName": "meta.item-access.arguments.python",
853
- "end": "(\\])",
854
822
  "endCaptures": {
855
823
  "1": {
856
824
  "name": "punctuation.definition.arguments.end.python"
857
825
  }
858
- },
859
- "name": "meta.item-access.python",
860
- "patterns": [
861
- {
862
- "include": "$self"
863
- }
864
- ]
826
+ }
865
827
  },
866
828
  {
829
+ "match": "\\b(menu)\\b",
867
830
  "captures": {
868
831
  "1": {
869
832
  "name": "keyword.control.statement.renpy"
870
833
  }
871
- },
872
- "match": "\\b(menu)\\b"
834
+ }
873
835
  },
874
836
  {
837
+ "match": "\\b(def|lambda)\\b",
875
838
  "captures": {
876
839
  "1": {
877
840
  "name": "storage.type.function.python"
878
841
  }
879
- },
880
- "match": "\\b(def|lambda)\\b"
842
+ }
881
843
  },
882
844
  {
845
+ "match": "\\b(class)\\b",
883
846
  "captures": {
884
847
  "1": {
885
848
  "name": "storage.type.class.python"
886
849
  }
887
- },
888
- "match": "\\b(class)\\b"
850
+ }
889
851
  },
890
852
  {
891
853
  "include": "#line_continuation"
@@ -894,12 +856,12 @@
894
856
  "include": "#language_variables"
895
857
  },
896
858
  {
897
- "match": "\\b(None|True|False|Ellipsis|NotImplemented)\\b",
898
- "name": "constant.language.python"
859
+ "name": "constant.language.python",
860
+ "match": "\\b(None|True|False|Ellipsis|NotImplemented)\\b"
899
861
  },
900
862
  {
901
- "match": "\\b(no_action|yes_action|no_action)\\b",
902
- "name": "constant.language.python"
863
+ "name": "constant.language.python",
864
+ "match": "\\b(no_action|yes_action|no_action)\\b"
903
865
  },
904
866
  {
905
867
  "include": "#string_quoted_single"
@@ -920,6 +882,7 @@
920
882
  ]
921
883
  },
922
884
  {
885
+ "match": "(\\[)(\\s*(\\]))\\b",
923
886
  "captures": {
924
887
  "1": {
925
888
  "name": "punctuation.definition.list.begin.python"
@@ -930,42 +893,43 @@
930
893
  "3": {
931
894
  "name": "punctuation.definition.list.end.python"
932
895
  }
933
- },
934
- "match": "(\\[)(\\s*(\\]))\\b"
896
+ }
935
897
  },
936
898
  {
899
+ "name": "meta.structure.list.python",
937
900
  "begin": "(\\[)",
938
- "beginCaptures": {
939
- "1": {
940
- "name": "punctuation.definition.list.begin.python"
941
- }
942
- },
943
901
  "end": "(\\])",
944
- "endCaptures": {
945
- "1": {
946
- "name": "punctuation.definition.list.end.python"
947
- }
948
- },
949
- "name": "meta.structure.list.python",
950
902
  "patterns": [
951
903
  {
952
- "begin": "(?<=\\[|\\,)\\s*(?![\\],])",
953
904
  "contentName": "meta.structure.list.item.python",
905
+ "begin": "(?\u003c=\\[|\\,)\\s*(?![\\],])",
954
906
  "end": "\\s*(?:(,)|(?=\\]))",
955
- "endCaptures": {
956
- "1": {
957
- "name": "punctuation.separator.list.python"
958
- }
959
- },
960
907
  "patterns": [
961
908
  {
962
909
  "include": "$self"
963
910
  }
964
- ]
911
+ ],
912
+ "endCaptures": {
913
+ "1": {
914
+ "name": "punctuation.separator.list.python"
915
+ }
916
+ }
965
917
  }
966
- ]
918
+ ],
919
+ "beginCaptures": {
920
+ "1": {
921
+ "name": "punctuation.definition.list.begin.python"
922
+ }
923
+ },
924
+ "endCaptures": {
925
+ "1": {
926
+ "name": "punctuation.definition.list.end.python"
927
+ }
928
+ }
967
929
  },
968
930
  {
931
+ "name": "meta.structure.tuple.python",
932
+ "match": "(\\()(\\s*(\\)))",
969
933
  "captures": {
970
934
  "1": {
971
935
  "name": "punctuation.definition.tuple.begin.python"
@@ -976,11 +940,11 @@
976
940
  "3": {
977
941
  "name": "punctuation.definition.tuple.end.python"
978
942
  }
979
- },
980
- "match": "(\\()(\\s*(\\)))",
981
- "name": "meta.structure.tuple.python"
943
+ }
982
944
  },
983
945
  {
946
+ "name": "meta.structure.dictionary.python",
947
+ "match": "(\\{)(\\s*(\\}))",
984
948
  "captures": {
985
949
  "1": {
986
950
  "name": "punctuation.definition.dictionary.begin.python"
@@ -991,81 +955,79 @@
991
955
  "3": {
992
956
  "name": "punctuation.definition.dictionary.end.python"
993
957
  }
994
- },
995
- "match": "(\\{)(\\s*(\\}))",
996
- "name": "meta.structure.dictionary.python"
958
+ }
997
959
  },
998
960
  {
961
+ "name": "meta.structure.dictionary.python",
999
962
  "begin": "(\\{)",
1000
- "beginCaptures": {
1001
- "1": {
1002
- "name": "punctuation.definition.dictionary.begin.python"
1003
- }
1004
- },
1005
963
  "end": "(\\})",
1006
- "endCaptures": {
1007
- "1": {
1008
- "name": "punctuation.definition.dictionary.end.python"
1009
- }
1010
- },
1011
- "name": "meta.structure.dictionary.python",
1012
964
  "patterns": [
1013
965
  {
1014
- "begin": "(?<=\\{|\\,|^)\\s*(?![\\},])",
1015
966
  "contentName": "meta.structure.dictionary.key.python",
967
+ "begin": "(?\u003c=\\{|\\,|^)\\s*(?![\\},])",
1016
968
  "end": "\\s*(?:(?=\\})|(\\:))",
1017
- "endCaptures": {
1018
- "1": {
1019
- "name": "punctuation.separator.valuepair.dictionary.python"
1020
- }
1021
- },
1022
969
  "patterns": [
1023
970
  {
1024
971
  "include": "$self"
1025
972
  }
1026
- ]
973
+ ],
974
+ "endCaptures": {
975
+ "1": {
976
+ "name": "punctuation.separator.valuepair.dictionary.python"
977
+ }
978
+ }
1027
979
  },
1028
980
  {
1029
- "begin": "(?<=\\:|^)\\s*",
1030
981
  "contentName": "meta.structure.dictionary.value.python",
982
+ "begin": "(?\u003c=\\:|^)\\s*",
1031
983
  "end": "\\s*(?:(?=\\})|(,))",
1032
- "endCaptures": {
1033
- "1": {
1034
- "name": "punctuation.separator.dictionary.python"
1035
- }
1036
- },
1037
984
  "patterns": [
1038
985
  {
1039
986
  "include": "$self"
1040
987
  }
1041
- ]
988
+ ],
989
+ "endCaptures": {
990
+ "1": {
991
+ "name": "punctuation.separator.dictionary.python"
992
+ }
993
+ }
1042
994
  }
1043
- ]
995
+ ],
996
+ "beginCaptures": {
997
+ "1": {
998
+ "name": "punctuation.definition.dictionary.begin.python"
999
+ }
1000
+ },
1001
+ "endCaptures": {
1002
+ "1": {
1003
+ "name": "punctuation.definition.dictionary.end.python"
1004
+ }
1005
+ }
1044
1006
  }
1045
1007
  ],
1046
1008
  "repository": {
1047
1009
  "builtin_exceptions": {
1048
- "match": "(?x)\\b(\n\t\t\t\t(\n\t\t\t\t\tArithmetic|Assertion|Attribute|BlockingIO|BrokenPipe|Buffer|ChildProcess|\n\t\t\t\t\tConnection(Aborted|Refused|Reset)?|EOF|Environment|FileExists|\n\t\t\t\t\tFileNotFound|FloatingPoint|Interrupted|IO|IsADirectoryError|\n\t\t\t\t\tImport|Indentation|Index|Key|Lookup|Memory|Name|NotADirectory|\n\t\t\t\t\tNotImplemented|OS|Overflow|Permission|ProcessLookup|Reference|\n\t\t\t\t\tRuntime|Standard|Syntax|System|Tab|Timeout|Type|UnboundLocal|\n\t\t\t\t\tUnicode(Encode|Decode|Translate)?|Value|VMS|Windows|ZeroDivision\n\t\t\t\t)Error|\n\t\t\t\t((Pending)?Deprecation|Runtime|Syntax|User|Future|Import|Unicode|Bytes)?Warning|\n\t\t\t\t(Base)?Exception|\n\t\t\t\tSystemExit|StopIteration|NotImplemented|KeyboardInterrupt|GeneratorExit\n\t\t\t)\\b",
1049
- "name": "support.type.exception.python"
1010
+ "name": "support.type.exception.python",
1011
+ "match": "(?x)\\b(\n\t\t\t\t(\n\t\t\t\t\tArithmetic|Assertion|Attribute|BlockingIO|BrokenPipe|Buffer|ChildProcess|\n\t\t\t\t\tConnection(Aborted|Refused|Reset)?|EOF|Environment|FileExists|\n\t\t\t\t\tFileNotFound|FloatingPoint|Interrupted|IO|IsADirectoryError|\n\t\t\t\t\tImport|Indentation|Index|Key|Lookup|Memory|Name|NotADirectory|\n\t\t\t\t\tNotImplemented|OS|Overflow|Permission|ProcessLookup|Reference|\n\t\t\t\t\tRuntime|Standard|Syntax|System|Tab|Timeout|Type|UnboundLocal|\n\t\t\t\t\tUnicode(Encode|Decode|Translate)?|Value|VMS|Windows|ZeroDivision\n\t\t\t\t)Error|\n\t\t\t\t((Pending)?Deprecation|Runtime|Syntax|User|Future|Import|Unicode|Bytes)?Warning|\n\t\t\t\t(Base)?Exception|\n\t\t\t\tSystemExit|StopIteration|NotImplemented|KeyboardInterrupt|GeneratorExit\n\t\t\t)\\b"
1050
1012
  },
1051
1013
  "builtin_functions": {
1052
- "match": "(?x)\\b(\n\t\t\t\t__import__|all|abs|any|apply|ascii|bin|callable|chr|classmethod|cmp|coerce|\n\t\t\t\tcompile|delattr|dir|divmod|enumerate|eval|execfile|filter|format|getattr|\n\t\t\t\tglobals|hasattr|hash|help|hex|id|input|intern|isinstance|issubclass|iter|\n\t\t\t\tlen|locals|map|max|min|next|oct|open|ord|pow|print|property|range|\n\t\t\t\traw_input|reduce|reload|repr|reversed|round|setattr|sorted|staticmethod|\n\t\t\t\tsum|super|type|unichr|vars|zip\n\t\t\t)\\b",
1053
- "name": "support.function.builtin.python"
1014
+ "name": "support.function.builtin.python",
1015
+ "match": "(?x)\\b(\n\t\t\t\t__import__|all|abs|any|apply|ascii|bin|callable|chr|classmethod|cmp|coerce|\n\t\t\t\tcompile|delattr|dir|divmod|enumerate|eval|execfile|filter|format|getattr|\n\t\t\t\tglobals|hasattr|hash|help|hex|id|input|intern|isinstance|issubclass|iter|\n\t\t\t\tlen|locals|map|max|min|next|oct|open|ord|pow|print|property|range|\n\t\t\t\traw_input|reduce|reload|repr|reversed|round|setattr|sorted|staticmethod|\n\t\t\t\tsum|super|type|unichr|vars|zip\n\t\t\t)\\b"
1054
1016
  },
1055
1017
  "builtin_types": {
1056
- "match": "(?x)\\b(\n\t\t\t\tbasestring|bool|buffer|bytearray|bytes|complex|dict|float|frozenset|int|\n\t\t\t\tlist|long|memoryview|object|range|set|slice|str|tuple|unicode|xrange\n\t\t\t)\\b",
1057
- "name": "support.type.python"
1018
+ "name": "support.type.python",
1019
+ "match": "(?x)\\b(\n\t\t\t\tbasestring|bool|buffer|bytearray|bytes|complex|dict|float|frozenset|int|\n\t\t\t\tlist|long|memoryview|object|range|set|slice|str|tuple|unicode|xrange\n\t\t\t)\\b"
1058
1020
  },
1059
1021
  "constant_placeholder": {
1060
- "match": "(?i:(%(\\([a-z_]+\\))?#?0?\\-?[ ]?\\+?([0-9]*|\\*)(\\.([0-9]*|\\*))?([hL][a-z]|[a-z%]))|(\\{([\\?\\&\\%\\\\\\/#=\\-\\+!\\[\\].:\\w ]+)?\\})|(\\{\\/([!\\[\\].:\\w ]+)?\\})|(\\[([!\\[\\].:\\w ]+)?\\]))",
1061
- "name": "constant.other.placeholder.tags.renpy"
1022
+ "name": "constant.other.placeholder.tags.renpy",
1023
+ "match": "(?i:(%(\\([a-z_]+\\))?#?0?\\-?[ ]?\\+?([0-9]*|\\*)(\\.([0-9]*|\\*))?([hL][a-z]|[a-z%]))|(\\{([\\?\\\u0026\\%\\\\\\/#=\\-\\+!\\[\\].:\\w ]+)?\\})|(\\{\\/([!\\[\\].:\\w ]+)?\\})|(\\[([!\\[\\].:\\w ]+)?\\]))"
1062
1024
  },
1063
1025
  "docstrings": {
1064
1026
  "patterns": [
1065
1027
  {
1066
- "begin": "^\\s*(?=[uU]?[rR]?\"\"\")",
1067
- "end": "(?<=\"\"\")",
1068
1028
  "name": "comment.block.python",
1029
+ "begin": "^\\s*(?=[uU]?[rR]?\"\"\")",
1030
+ "end": "(?\u003c=\"\"\")",
1069
1031
  "patterns": [
1070
1032
  {
1071
1033
  "include": "#string_quoted_double"
@@ -1073,9 +1035,9 @@
1073
1035
  ]
1074
1036
  },
1075
1037
  {
1076
- "begin": "^\\s*(?=[uU]?[rR]?''')",
1077
- "end": "(?<=''')",
1078
1038
  "name": "comment.block.python",
1039
+ "begin": "^\\s*(?=[uU]?[rR]?''')",
1040
+ "end": "(?\u003c=''')",
1079
1041
  "patterns": [
1080
1042
  {
1081
1043
  "include": "#string_quoted_single"
@@ -1107,7 +1069,7 @@
1107
1069
  ]
1108
1070
  },
1109
1071
  {
1110
- "begin": "(?<!\\.)(?=[A-Za-z_][A-Za-z0-9_]*)",
1072
+ "begin": "(?\u003c!\\.)(?=[A-Za-z_][A-Za-z0-9_]*)",
1111
1073
  "end": "(?![A-Za-z0-9_])",
1112
1074
  "patterns": [
1113
1075
  {
@@ -1162,10 +1124,23 @@
1162
1124
  ]
1163
1125
  },
1164
1126
  "escaped_char": {
1127
+ "match": "(\\\\x[0-9A-F]{2})|(\\\\[0-7]{3})|(\\\\\\n)|(\\\\\\\\)|(\\\\\\\")|(\\\\')|(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)",
1165
1128
  "captures": {
1166
1129
  "1": {
1167
1130
  "name": "constant.character.escape.hex.python"
1168
1131
  },
1132
+ "10": {
1133
+ "name": "constant.character.escape.linefeed.python"
1134
+ },
1135
+ "11": {
1136
+ "name": "constant.character.escape.return.python"
1137
+ },
1138
+ "12": {
1139
+ "name": "constant.character.escape.tab.python"
1140
+ },
1141
+ "13": {
1142
+ "name": "constant.character.escape.vertical-tab.python"
1143
+ },
1169
1144
  "2": {
1170
1145
  "name": "constant.character.escape.octal.python"
1171
1146
  },
@@ -1189,23 +1164,11 @@
1189
1164
  },
1190
1165
  "9": {
1191
1166
  "name": "constant.character.escape.formfeed.python"
1192
- },
1193
- "10": {
1194
- "name": "constant.character.escape.linefeed.python"
1195
- },
1196
- "11": {
1197
- "name": "constant.character.escape.return.python"
1198
- },
1199
- "12": {
1200
- "name": "constant.character.escape.tab.python"
1201
- },
1202
- "13": {
1203
- "name": "constant.character.escape.vertical-tab.python"
1204
1167
  }
1205
- },
1206
- "match": "(\\\\x[0-9A-F]{2})|(\\\\[0-7]{3})|(\\\\\\n)|(\\\\\\\\)|(\\\\\\\")|(\\\\')|(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)"
1168
+ }
1207
1169
  },
1208
1170
  "escaped_unicode_char": {
1171
+ "match": "(\\\\U[0-9A-Fa-f]{8})|(\\\\u[0-9A-Fa-f]{4})|(\\\\N\\{[a-zA-Z ]+\\})",
1209
1172
  "captures": {
1210
1173
  "1": {
1211
1174
  "name": "constant.character.escape.unicode.16-bit-hex.python"
@@ -1216,8 +1179,7 @@
1216
1179
  "3": {
1217
1180
  "name": "constant.character.escape.unicode.name.python"
1218
1181
  }
1219
- },
1220
- "match": "(\\\\U[0-9A-Fa-f]{8})|(\\\\u[0-9A-Fa-f]{4})|(\\\\N\\{[a-zA-Z ]+\\})"
1182
+ }
1221
1183
  },
1222
1184
  "function_name": {
1223
1185
  "patterns": [
@@ -1245,11 +1207,17 @@
1245
1207
  "match": "[A-Za-z_][A-Za-z0-9_]*"
1246
1208
  },
1247
1209
  "illegal_names": {
1248
- "match": "\\b(and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|global|if|import|in|is|lambda|nonlocal|not|or|print|raise|try|while|with|yield)\\b",
1249
- "name": "invalid.illegal.name.python"
1210
+ "name": "invalid.illegal.name.python",
1211
+ "match": "\\b(and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|global|if|import|in|is|lambda|nonlocal|not|or|print|raise|try|while|with|yield)\\b"
1250
1212
  },
1251
1213
  "keyword_arguments": {
1252
1214
  "begin": "\\b([a-zA-Z_][a-zA-Z_0-9]*)\\s*(=)(?!=)",
1215
+ "end": "\\s*(?:(,)|(?=$\\n?|[\\)\\:]))",
1216
+ "patterns": [
1217
+ {
1218
+ "include": "$self"
1219
+ }
1220
+ ],
1253
1221
  "beginCaptures": {
1254
1222
  "1": {
1255
1223
  "name": "variable.parameter.function.python"
@@ -1258,23 +1226,18 @@
1258
1226
  "name": "keyword.operator.assignment.python"
1259
1227
  }
1260
1228
  },
1261
- "end": "\\s*(?:(,)|(?=$\\n?|[\\)\\:]))",
1262
1229
  "endCaptures": {
1263
1230
  "1": {
1264
1231
  "name": "punctuation.separator.parameters.python"
1265
1232
  }
1266
- },
1267
- "patterns": [
1268
- {
1269
- "include": "$self"
1270
- }
1271
- ]
1233
+ }
1272
1234
  },
1273
1235
  "language_variables": {
1274
- "match": "\\b(self|cls)\\b",
1275
- "name": "variable.language.python"
1236
+ "name": "variable.language.python",
1237
+ "match": "\\b(self|cls)\\b"
1276
1238
  },
1277
1239
  "line_continuation": {
1240
+ "match": "(\\\\)(.*)$\\n?",
1278
1241
  "captures": {
1279
1242
  "1": {
1280
1243
  "name": "punctuation.separator.continuation.line.python"
@@ -1282,22 +1245,17 @@
1282
1245
  "2": {
1283
1246
  "name": "invalid.illegal.unexpected-text.python"
1284
1247
  }
1285
- },
1286
- "match": "(\\\\)(.*)$\\n?"
1248
+ }
1287
1249
  },
1288
1250
  "magic_function_names": {
1289
- "comment": "these methods have magic interpretation by python and are generally called indirectly through syntactic constructs",
1290
- "match": "(?x)\\b(__(?:\n\t\t\t\t\t\tabs|add|and|cmp|coerce|complex|contains|del|delattr|\n\t\t\t\t\t\tdelete|delitem|delslice|div|divmod|enter|eq|exit|float|\n\t\t\t\t\t\tfloordiv|ge|get|getattr|getattribute|getitem|getslice|gt|\n\t\t\t\t\t\thash|hex|iadd|iand|idiv|ifloordiv|ilshift|imod|imul|init|\n\t\t\t\t\t\tint|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|le|len|\n\t\t\t\t\t\tlong|lshift|lt|mod|mul|ne|neg|new|nonzero|oct|or|pos|pow|\n\t\t\t\t\t\tradd|rand|rdiv|rdivmod|repr|rfloordiv|rlshift|rmod|rmul|ror|\n\t\t\t\t\t\trpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem|\n\t\t\t\t\t\tsetslice|str|sub|truediv|unicode|xor\n\t\t\t\t\t)__)\\b",
1291
- "name": "support.function.magic.python"
1251
+ "name": "support.function.magic.python",
1252
+ "match": "(?x)\\b(__(?:\n\t\t\t\t\t\tabs|add|and|cmp|coerce|complex|contains|del|delattr|\n\t\t\t\t\t\tdelete|delitem|delslice|div|divmod|enter|eq|exit|float|\n\t\t\t\t\t\tfloordiv|ge|get|getattr|getattribute|getitem|getslice|gt|\n\t\t\t\t\t\thash|hex|iadd|iand|idiv|ifloordiv|ilshift|imod|imul|init|\n\t\t\t\t\t\tint|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|le|len|\n\t\t\t\t\t\tlong|lshift|lt|mod|mul|ne|neg|new|nonzero|oct|or|pos|pow|\n\t\t\t\t\t\tradd|rand|rdiv|rdivmod|repr|rfloordiv|rlshift|rmod|rmul|ror|\n\t\t\t\t\t\trpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem|\n\t\t\t\t\t\tsetslice|str|sub|truediv|unicode|xor\n\t\t\t\t\t)__)\\b"
1292
1253
  },
1293
1254
  "magic_variable_names": {
1294
- "comment": "magic variables which a class/module may have.",
1295
- "match": "\\b__(all|bases|class|debug|dict|doc|file|members|metaclass|methods|name|slots|weakref)__\\b",
1296
- "name": "support.variable.magic.python"
1255
+ "name": "support.variable.magic.python",
1256
+ "match": "\\b__(all|bases|class|debug|dict|doc|file|members|metaclass|methods|name|slots|weakref)__\\b"
1297
1257
  },
1298
1258
  "regular_expressions": {
1299
- "comment": "Changed disabled to 1 to turn off syntax highlighting in “r” strings.",
1300
- "disabled": 0,
1301
1259
  "patterns": [
1302
1260
  {
1303
1261
  "include": "source.regexp.python"
@@ -1307,26 +1265,9 @@
1307
1265
  "string_quoted_double": {
1308
1266
  "patterns": [
1309
1267
  {
1310
- "begin": "([uU]r)(\"\"\")",
1311
- "beginCaptures": {
1312
- "1": {
1313
- "name": "storage.type.string.python"
1314
- },
1315
- "2": {
1316
- "name": "punctuation.definition.string.begin.python"
1317
- }
1318
- },
1319
- "comment": "single quoted unicode-raw string",
1320
- "end": "((?<=\"\"\")(\")\"\"|\"\"\")",
1321
- "endCaptures": {
1322
- "1": {
1323
- "name": "punctuation.definition.string.end.python"
1324
- },
1325
- "2": {
1326
- "name": "meta.empty-string.double.python"
1327
- }
1328
- },
1329
1268
  "name": "string.quoted.double.block.unicode-raw-regex.python",
1269
+ "begin": "([uU]r)(\"\"\")",
1270
+ "end": "((?\u003c=\"\"\")(\")\"\"|\"\"\")",
1330
1271
  "patterns": [
1331
1272
  {
1332
1273
  "include": "#constant_placeholder"
@@ -1340,10 +1281,7 @@
1340
1281
  {
1341
1282
  "include": "#regular_expressions"
1342
1283
  }
1343
- ]
1344
- },
1345
- {
1346
- "begin": "([uU]R)(\"\"\")",
1284
+ ],
1347
1285
  "beginCaptures": {
1348
1286
  "1": {
1349
1287
  "name": "storage.type.string.python"
@@ -1352,8 +1290,6 @@
1352
1290
  "name": "punctuation.definition.string.begin.python"
1353
1291
  }
1354
1292
  },
1355
- "comment": "single quoted unicode-raw string without regular expression highlighting",
1356
- "end": "((?<=\"\"\")(\")\"\"|\"\"\")",
1357
1293
  "endCaptures": {
1358
1294
  "1": {
1359
1295
  "name": "punctuation.definition.string.end.python"
@@ -1361,8 +1297,12 @@
1361
1297
  "2": {
1362
1298
  "name": "meta.empty-string.double.python"
1363
1299
  }
1364
- },
1300
+ }
1301
+ },
1302
+ {
1365
1303
  "name": "string.quoted.double.block.unicode-raw.python",
1304
+ "begin": "([uU]R)(\"\"\")",
1305
+ "end": "((?\u003c=\"\"\")(\")\"\"|\"\"\")",
1366
1306
  "patterns": [
1367
1307
  {
1368
1308
  "include": "#constant_placeholder"
@@ -1373,10 +1313,7 @@
1373
1313
  {
1374
1314
  "include": "#escaped_char"
1375
1315
  }
1376
- ]
1377
- },
1378
- {
1379
- "begin": "(r)(\"\"\")",
1316
+ ],
1380
1317
  "beginCaptures": {
1381
1318
  "1": {
1382
1319
  "name": "storage.type.string.python"
@@ -1385,8 +1322,6 @@
1385
1322
  "name": "punctuation.definition.string.begin.python"
1386
1323
  }
1387
1324
  },
1388
- "comment": "double quoted raw string",
1389
- "end": "((?<=\"\"\")(\")\"\"|\"\"\")",
1390
1325
  "endCaptures": {
1391
1326
  "1": {
1392
1327
  "name": "punctuation.definition.string.end.python"
@@ -1394,8 +1329,12 @@
1394
1329
  "2": {
1395
1330
  "name": "meta.empty-string.double.python"
1396
1331
  }
1397
- },
1332
+ }
1333
+ },
1334
+ {
1398
1335
  "name": "string.quoted.double.block.raw-regex.python",
1336
+ "begin": "(r)(\"\"\")",
1337
+ "end": "((?\u003c=\"\"\")(\")\"\"|\"\"\")",
1399
1338
  "patterns": [
1400
1339
  {
1401
1340
  "include": "#constant_placeholder"
@@ -1406,10 +1345,7 @@
1406
1345
  {
1407
1346
  "include": "#regular_expressions"
1408
1347
  }
1409
- ]
1410
- },
1411
- {
1412
- "begin": "(R)(\"\"\")",
1348
+ ],
1413
1349
  "beginCaptures": {
1414
1350
  "1": {
1415
1351
  "name": "storage.type.string.python"
@@ -1418,8 +1354,6 @@
1418
1354
  "name": "punctuation.definition.string.begin.python"
1419
1355
  }
1420
1356
  },
1421
- "comment": "double quoted raw string",
1422
- "end": "((?<=\"\"\")(\")\"\"|\"\"\")",
1423
1357
  "endCaptures": {
1424
1358
  "1": {
1425
1359
  "name": "punctuation.definition.string.end.python"
@@ -1427,8 +1361,12 @@
1427
1361
  "2": {
1428
1362
  "name": "meta.empty-string.double.python"
1429
1363
  }
1430
- },
1364
+ }
1365
+ },
1366
+ {
1431
1367
  "name": "string.quoted.double.block.raw.python",
1368
+ "begin": "(R)(\"\"\")",
1369
+ "end": "((?\u003c=\"\"\")(\")\"\"|\"\"\")",
1432
1370
  "patterns": [
1433
1371
  {
1434
1372
  "include": "#constant_placeholder"
@@ -1436,10 +1374,7 @@
1436
1374
  {
1437
1375
  "include": "#escaped_char"
1438
1376
  }
1439
- ]
1440
- },
1441
- {
1442
- "begin": "([uU])(\"\"\")",
1377
+ ],
1443
1378
  "beginCaptures": {
1444
1379
  "1": {
1445
1380
  "name": "storage.type.string.python"
@@ -1448,8 +1383,6 @@
1448
1383
  "name": "punctuation.definition.string.begin.python"
1449
1384
  }
1450
1385
  },
1451
- "comment": "double quoted unicode string",
1452
- "end": "((?<=\"\"\")(\")\"\"|\"\"\")",
1453
1386
  "endCaptures": {
1454
1387
  "1": {
1455
1388
  "name": "punctuation.definition.string.end.python"
@@ -1457,8 +1390,12 @@
1457
1390
  "2": {
1458
1391
  "name": "meta.empty-string.double.python"
1459
1392
  }
1460
- },
1393
+ }
1394
+ },
1395
+ {
1461
1396
  "name": "string.quoted.double.block.unicode.python",
1397
+ "begin": "([uU])(\"\"\")",
1398
+ "end": "((?\u003c=\"\"\")(\")\"\"|\"\"\")",
1462
1399
  "patterns": [
1463
1400
  {
1464
1401
  "include": "#constant_placeholder"
@@ -1469,9 +1406,27 @@
1469
1406
  {
1470
1407
  "include": "#escaped_char"
1471
1408
  }
1472
- ]
1409
+ ],
1410
+ "beginCaptures": {
1411
+ "1": {
1412
+ "name": "storage.type.string.python"
1413
+ },
1414
+ "2": {
1415
+ "name": "punctuation.definition.string.begin.python"
1416
+ }
1417
+ },
1418
+ "endCaptures": {
1419
+ "1": {
1420
+ "name": "punctuation.definition.string.end.python"
1421
+ },
1422
+ "2": {
1423
+ "name": "meta.empty-string.double.python"
1424
+ }
1425
+ }
1473
1426
  },
1474
1427
  {
1428
+ "name": "string.quoted.double.single-line.unicode-raw-regex.python",
1429
+ "match": "([uU]r)(\")((?:[^\"\\\\]|\\\\.)*)(\")",
1475
1430
  "captures": {
1476
1431
  "1": {
1477
1432
  "name": "storage.type.string.python"
@@ -1498,13 +1453,23 @@
1498
1453
  "4": {
1499
1454
  "name": "punctuation.definition.string.end.python"
1500
1455
  }
1501
- },
1502
- "comment": "double-quoted raw string",
1503
- "match": "([uU]r)(\")((?:[^\"\\\\]|\\\\.)*)(\")",
1504
- "name": "string.quoted.double.single-line.unicode-raw-regex.python"
1456
+ }
1505
1457
  },
1506
1458
  {
1459
+ "name": "string.quoted.double.single-line.unicode-raw.python",
1507
1460
  "begin": "([uU]R)(\")",
1461
+ "end": "((?\u003c=\")(\")|\")",
1462
+ "patterns": [
1463
+ {
1464
+ "include": "#constant_placeholder"
1465
+ },
1466
+ {
1467
+ "include": "#escaped_unicode_char"
1468
+ },
1469
+ {
1470
+ "include": "#escaped_char"
1471
+ }
1472
+ ],
1508
1473
  "beginCaptures": {
1509
1474
  "1": {
1510
1475
  "name": "storage.type.string.python"
@@ -1513,8 +1478,6 @@
1513
1478
  "name": "punctuation.definition.string.begin.python"
1514
1479
  }
1515
1480
  },
1516
- "comment": "double-quoted raw string",
1517
- "end": "((?<=\")(\")|\")",
1518
1481
  "endCaptures": {
1519
1482
  "1": {
1520
1483
  "name": "punctuation.definition.string.end.python"
@@ -1525,21 +1488,11 @@
1525
1488
  "3": {
1526
1489
  "name": "invalid.illegal.unclosed-string.python"
1527
1490
  }
1528
- },
1529
- "name": "string.quoted.double.single-line.unicode-raw.python",
1530
- "patterns": [
1531
- {
1532
- "include": "#constant_placeholder"
1533
- },
1534
- {
1535
- "include": "#escaped_unicode_char"
1536
- },
1537
- {
1538
- "include": "#escaped_char"
1539
- }
1540
- ]
1491
+ }
1541
1492
  },
1542
1493
  {
1494
+ "name": "string.quoted.double.single-line.raw-regex.python",
1495
+ "match": "(r)(\")((?:[^\"\\\\]|\\\\.)*)(\")",
1543
1496
  "captures": {
1544
1497
  "1": {
1545
1498
  "name": "storage.type.string.python"
@@ -1563,13 +1516,20 @@
1563
1516
  "4": {
1564
1517
  "name": "punctuation.definition.string.end.python"
1565
1518
  }
1566
- },
1567
- "comment": "double-quoted raw string",
1568
- "match": "(r)(\")((?:[^\"\\\\]|\\\\.)*)(\")",
1569
- "name": "string.quoted.double.single-line.raw-regex.python"
1519
+ }
1570
1520
  },
1571
1521
  {
1522
+ "name": "string.quoted.double.single-line.raw.python",
1572
1523
  "begin": "(R)(\")",
1524
+ "end": "((?\u003c=\")(\")|\")|(\\n)",
1525
+ "patterns": [
1526
+ {
1527
+ "include": "#constant_placeholder"
1528
+ },
1529
+ {
1530
+ "include": "#escaped_char"
1531
+ }
1532
+ ],
1573
1533
  "beginCaptures": {
1574
1534
  "1": {
1575
1535
  "name": "storage.type.string.python"
@@ -1578,8 +1538,6 @@
1578
1538
  "name": "punctuation.definition.string.begin.python"
1579
1539
  }
1580
1540
  },
1581
- "comment": "double-quoted raw string",
1582
- "end": "((?<=\")(\")|\")|(\\n)",
1583
1541
  "endCaptures": {
1584
1542
  "1": {
1585
1543
  "name": "punctuation.definition.string.end.python"
@@ -1590,19 +1548,23 @@
1590
1548
  "3": {
1591
1549
  "name": "invalid.illegal.unclosed-string.python"
1592
1550
  }
1593
- },
1594
- "name": "string.quoted.double.single-line.raw.python",
1551
+ }
1552
+ },
1553
+ {
1554
+ "name": "string.quoted.double.single-line.unicode.python",
1555
+ "begin": "([uU])(\")",
1556
+ "end": "((?\u003c=\")(\")|\")",
1595
1557
  "patterns": [
1596
1558
  {
1597
1559
  "include": "#constant_placeholder"
1598
1560
  },
1561
+ {
1562
+ "include": "#escaped_unicode_char"
1563
+ },
1599
1564
  {
1600
1565
  "include": "#escaped_char"
1601
1566
  }
1602
- ]
1603
- },
1604
- {
1605
- "begin": "([uU])(\")",
1567
+ ],
1606
1568
  "beginCaptures": {
1607
1569
  "1": {
1608
1570
  "name": "storage.type.string.python"
@@ -1611,8 +1573,6 @@
1611
1573
  "name": "punctuation.definition.string.begin.python"
1612
1574
  }
1613
1575
  },
1614
- "comment": "double quoted unicode string",
1615
- "end": "((?<=\")(\")|\")",
1616
1576
  "endCaptures": {
1617
1577
  "1": {
1618
1578
  "name": "punctuation.definition.string.end.python"
@@ -1623,29 +1583,28 @@
1623
1583
  "3": {
1624
1584
  "name": "invalid.illegal.unclosed-string.python"
1625
1585
  }
1626
- },
1627
- "name": "string.quoted.double.single-line.unicode.python",
1586
+ }
1587
+ },
1588
+ {
1589
+ "name": "string.quoted.double.block.sql.python",
1590
+ "begin": "(\"\"\")(?=\\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))",
1591
+ "end": "((?\u003c=\"\"\")(\")\"\"|\"\"\")",
1628
1592
  "patterns": [
1629
1593
  {
1630
1594
  "include": "#constant_placeholder"
1631
1595
  },
1632
1596
  {
1633
- "include": "#escaped_unicode_char"
1597
+ "include": "#escaped_char"
1634
1598
  },
1635
1599
  {
1636
- "include": "#escaped_char"
1600
+ "include": "source.sql"
1637
1601
  }
1638
- ]
1639
- },
1640
- {
1641
- "begin": "(\"\"\")(?=\\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))",
1602
+ ],
1642
1603
  "beginCaptures": {
1643
1604
  "1": {
1644
1605
  "name": "punctuation.definition.string.begin.python"
1645
1606
  }
1646
1607
  },
1647
- "comment": "double quoted string",
1648
- "end": "((?<=\"\"\")(\")\"\"|\"\"\")",
1649
1608
  "endCaptures": {
1650
1609
  "1": {
1651
1610
  "name": "punctuation.definition.string.end.python"
@@ -1653,8 +1612,12 @@
1653
1612
  "2": {
1654
1613
  "name": "meta.empty-string.double.python"
1655
1614
  }
1656
- },
1657
- "name": "string.quoted.double.block.sql.python",
1615
+ }
1616
+ },
1617
+ {
1618
+ "name": "string.quoted.double.single-line.sql.python",
1619
+ "begin": "(\")(?=\\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))",
1620
+ "end": "((?\u003c=\")(\")|\")|(\\n)",
1658
1621
  "patterns": [
1659
1622
  {
1660
1623
  "include": "#constant_placeholder"
@@ -1665,17 +1628,12 @@
1665
1628
  {
1666
1629
  "include": "source.sql"
1667
1630
  }
1668
- ]
1669
- },
1670
- {
1671
- "begin": "(\")(?=\\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))",
1631
+ ],
1672
1632
  "beginCaptures": {
1673
1633
  "1": {
1674
1634
  "name": "punctuation.definition.string.begin.python"
1675
1635
  }
1676
1636
  },
1677
- "comment": "double quoted string",
1678
- "end": "((?<=\")(\")|\")|(\\n)",
1679
1637
  "endCaptures": {
1680
1638
  "1": {
1681
1639
  "name": "punctuation.definition.string.end.python"
@@ -1686,29 +1644,25 @@
1686
1644
  "3": {
1687
1645
  "name": "invalid.illegal.unclosed-string.python"
1688
1646
  }
1689
- },
1690
- "name": "string.quoted.double.single-line.sql.python",
1647
+ }
1648
+ },
1649
+ {
1650
+ "name": "string.quoted.double.block.python",
1651
+ "begin": "(\"\"\")",
1652
+ "end": "((?\u003c=\"\"\")(\")\"\"|\"\"\")",
1691
1653
  "patterns": [
1692
1654
  {
1693
1655
  "include": "#constant_placeholder"
1694
1656
  },
1695
1657
  {
1696
1658
  "include": "#escaped_char"
1697
- },
1698
- {
1699
- "include": "source.sql"
1700
1659
  }
1701
- ]
1702
- },
1703
- {
1704
- "begin": "(\"\"\")",
1660
+ ],
1705
1661
  "beginCaptures": {
1706
1662
  "1": {
1707
1663
  "name": "punctuation.definition.string.begin.python"
1708
1664
  }
1709
1665
  },
1710
- "comment": "double quoted string",
1711
- "end": "((?<=\"\"\")(\")\"\"|\"\"\")",
1712
1666
  "endCaptures": {
1713
1667
  "1": {
1714
1668
  "name": "punctuation.definition.string.end.python"
@@ -1716,8 +1670,12 @@
1716
1670
  "2": {
1717
1671
  "name": "meta.empty-string.double.python"
1718
1672
  }
1719
- },
1720
- "name": "string.quoted.double.block.python",
1673
+ }
1674
+ },
1675
+ {
1676
+ "name": "string.quoted.double.single-line.python",
1677
+ "begin": "(\")",
1678
+ "end": "((?\u003c=\")(\")|\")",
1721
1679
  "patterns": [
1722
1680
  {
1723
1681
  "include": "#constant_placeholder"
@@ -1725,17 +1683,12 @@
1725
1683
  {
1726
1684
  "include": "#escaped_char"
1727
1685
  }
1728
- ]
1729
- },
1730
- {
1731
- "begin": "(\")",
1686
+ ],
1732
1687
  "beginCaptures": {
1733
1688
  "1": {
1734
1689
  "name": "punctuation.definition.string.begin.python"
1735
1690
  }
1736
1691
  },
1737
- "comment": "double quoted string",
1738
- "end": "((?<=\")(\")|\")",
1739
1692
  "endCaptures": {
1740
1693
  "1": {
1741
1694
  "name": "punctuation.definition.string.end.python"
@@ -1746,22 +1699,15 @@
1746
1699
  "3": {
1747
1700
  "name": "invalid.illegal.unclosed-string.python"
1748
1701
  }
1749
- },
1750
- "name": "string.quoted.double.single-line.python",
1751
- "patterns": [
1752
- {
1753
- "include": "#constant_placeholder"
1754
- },
1755
- {
1756
- "include": "#escaped_char"
1757
- }
1758
- ]
1702
+ }
1759
1703
  }
1760
1704
  ]
1761
1705
  },
1762
1706
  "string_quoted_single": {
1763
1707
  "patterns": [
1764
1708
  {
1709
+ "name": "string.quoted.single.single-line.python",
1710
+ "match": "(?\u003c!')(')(('))(?!')",
1765
1711
  "captures": {
1766
1712
  "1": {
1767
1713
  "name": "punctuation.definition.string.begin.python"
@@ -1772,31 +1718,12 @@
1772
1718
  "3": {
1773
1719
  "name": "meta.empty-string.single.python"
1774
1720
  }
1775
- },
1776
- "match": "(?<!')(')(('))(?!')",
1777
- "name": "string.quoted.single.single-line.python"
1721
+ }
1778
1722
  },
1779
1723
  {
1780
- "begin": "([uU]r)(''')",
1781
- "beginCaptures": {
1782
- "1": {
1783
- "name": "storage.type.string.python"
1784
- },
1785
- "2": {
1786
- "name": "punctuation.definition.string.begin.python"
1787
- }
1788
- },
1789
- "comment": "single quoted unicode-raw string",
1790
- "end": "((?<=''')(')''|''')",
1791
- "endCaptures": {
1792
- "1": {
1793
- "name": "punctuation.definition.string.end.python"
1794
- },
1795
- "2": {
1796
- "name": "meta.empty-string.single.python"
1797
- }
1798
- },
1799
1724
  "name": "string.quoted.single.block.unicode-raw-regex.python",
1725
+ "begin": "([uU]r)(''')",
1726
+ "end": "((?\u003c=''')(')''|''')",
1800
1727
  "patterns": [
1801
1728
  {
1802
1729
  "include": "#constant_placeholder"
@@ -1810,10 +1737,7 @@
1810
1737
  {
1811
1738
  "include": "#regular_expressions"
1812
1739
  }
1813
- ]
1814
- },
1815
- {
1816
- "begin": "([uU]R)(''')",
1740
+ ],
1817
1741
  "beginCaptures": {
1818
1742
  "1": {
1819
1743
  "name": "storage.type.string.python"
@@ -1822,8 +1746,6 @@
1822
1746
  "name": "punctuation.definition.string.begin.python"
1823
1747
  }
1824
1748
  },
1825
- "comment": "single quoted unicode-raw string",
1826
- "end": "((?<=''')(')''|''')",
1827
1749
  "endCaptures": {
1828
1750
  "1": {
1829
1751
  "name": "punctuation.definition.string.end.python"
@@ -1831,8 +1753,12 @@
1831
1753
  "2": {
1832
1754
  "name": "meta.empty-string.single.python"
1833
1755
  }
1834
- },
1756
+ }
1757
+ },
1758
+ {
1835
1759
  "name": "string.quoted.single.block.unicode-raw.python",
1760
+ "begin": "([uU]R)(''')",
1761
+ "end": "((?\u003c=''')(')''|''')",
1836
1762
  "patterns": [
1837
1763
  {
1838
1764
  "include": "#constant_placeholder"
@@ -1843,10 +1769,7 @@
1843
1769
  {
1844
1770
  "include": "#escaped_char"
1845
1771
  }
1846
- ]
1847
- },
1848
- {
1849
- "begin": "(r)(''')",
1772
+ ],
1850
1773
  "beginCaptures": {
1851
1774
  "1": {
1852
1775
  "name": "storage.type.string.python"
@@ -1855,8 +1778,6 @@
1855
1778
  "name": "punctuation.definition.string.begin.python"
1856
1779
  }
1857
1780
  },
1858
- "comment": "single quoted raw string",
1859
- "end": "((?<=''')(')''|''')",
1860
1781
  "endCaptures": {
1861
1782
  "1": {
1862
1783
  "name": "punctuation.definition.string.end.python"
@@ -1864,8 +1785,12 @@
1864
1785
  "2": {
1865
1786
  "name": "meta.empty-string.single.python"
1866
1787
  }
1867
- },
1788
+ }
1789
+ },
1790
+ {
1868
1791
  "name": "string.quoted.single.block.raw-regex.python",
1792
+ "begin": "(r)(''')",
1793
+ "end": "((?\u003c=''')(')''|''')",
1869
1794
  "patterns": [
1870
1795
  {
1871
1796
  "include": "#constant_placeholder"
@@ -1876,10 +1801,7 @@
1876
1801
  {
1877
1802
  "include": "#regular_expressions"
1878
1803
  }
1879
- ]
1880
- },
1881
- {
1882
- "begin": "(R)(''')",
1804
+ ],
1883
1805
  "beginCaptures": {
1884
1806
  "1": {
1885
1807
  "name": "storage.type.string.python"
@@ -1888,8 +1810,6 @@
1888
1810
  "name": "punctuation.definition.string.begin.python"
1889
1811
  }
1890
1812
  },
1891
- "comment": "single quoted raw string",
1892
- "end": "((?<=''')(')''|''')",
1893
1813
  "endCaptures": {
1894
1814
  "1": {
1895
1815
  "name": "punctuation.definition.string.end.python"
@@ -1897,8 +1817,12 @@
1897
1817
  "2": {
1898
1818
  "name": "meta.empty-string.single.python"
1899
1819
  }
1900
- },
1820
+ }
1821
+ },
1822
+ {
1901
1823
  "name": "string.quoted.single.block.raw.python",
1824
+ "begin": "(R)(''')",
1825
+ "end": "((?\u003c=''')(')''|''')",
1902
1826
  "patterns": [
1903
1827
  {
1904
1828
  "include": "#constant_placeholder"
@@ -1906,10 +1830,7 @@
1906
1830
  {
1907
1831
  "include": "#escaped_char"
1908
1832
  }
1909
- ]
1910
- },
1911
- {
1912
- "begin": "([uU])(''')",
1833
+ ],
1913
1834
  "beginCaptures": {
1914
1835
  "1": {
1915
1836
  "name": "storage.type.string.python"
@@ -1918,8 +1839,6 @@
1918
1839
  "name": "punctuation.definition.string.begin.python"
1919
1840
  }
1920
1841
  },
1921
- "comment": "single quoted unicode string",
1922
- "end": "((?<=''')(')''|''')",
1923
1842
  "endCaptures": {
1924
1843
  "1": {
1925
1844
  "name": "punctuation.definition.string.end.python"
@@ -1927,8 +1846,12 @@
1927
1846
  "2": {
1928
1847
  "name": "meta.empty-string.single.python"
1929
1848
  }
1930
- },
1849
+ }
1850
+ },
1851
+ {
1931
1852
  "name": "string.quoted.single.block.unicode.python",
1853
+ "begin": "([uU])(''')",
1854
+ "end": "((?\u003c=''')(')''|''')",
1932
1855
  "patterns": [
1933
1856
  {
1934
1857
  "include": "#constant_placeholder"
@@ -1939,9 +1862,27 @@
1939
1862
  {
1940
1863
  "include": "#escaped_char"
1941
1864
  }
1942
- ]
1865
+ ],
1866
+ "beginCaptures": {
1867
+ "1": {
1868
+ "name": "storage.type.string.python"
1869
+ },
1870
+ "2": {
1871
+ "name": "punctuation.definition.string.begin.python"
1872
+ }
1873
+ },
1874
+ "endCaptures": {
1875
+ "1": {
1876
+ "name": "punctuation.definition.string.end.python"
1877
+ },
1878
+ "2": {
1879
+ "name": "meta.empty-string.single.python"
1880
+ }
1881
+ }
1943
1882
  },
1944
1883
  {
1884
+ "name": "string.quoted.single.single-line.unicode-raw-regex.python",
1885
+ "match": "([uU]r)(')((?:[^'\\\\]|\\\\.)*)(')",
1945
1886
  "captures": {
1946
1887
  "1": {
1947
1888
  "name": "storage.type.string.python"
@@ -1968,13 +1909,23 @@
1968
1909
  "4": {
1969
1910
  "name": "punctuation.definition.string.end.python"
1970
1911
  }
1971
- },
1972
- "comment": "single quoted raw string",
1973
- "match": "([uU]r)(')((?:[^'\\\\]|\\\\.)*)(')",
1974
- "name": "string.quoted.single.single-line.unicode-raw-regex.python"
1912
+ }
1975
1913
  },
1976
1914
  {
1915
+ "name": "string.quoted.single.single-line.unicode-raw.python",
1977
1916
  "begin": "([uU]R)(')",
1917
+ "end": "(')",
1918
+ "patterns": [
1919
+ {
1920
+ "include": "#constant_placeholder"
1921
+ },
1922
+ {
1923
+ "include": "#escaped_unicode_char"
1924
+ },
1925
+ {
1926
+ "include": "#escaped_char"
1927
+ }
1928
+ ],
1978
1929
  "beginCaptures": {
1979
1930
  "1": {
1980
1931
  "name": "storage.type.string.python"
@@ -1983,8 +1934,6 @@
1983
1934
  "name": "punctuation.definition.string.begin.python"
1984
1935
  }
1985
1936
  },
1986
- "comment": "single quoted raw string",
1987
- "end": "(')",
1988
1937
  "endCaptures": {
1989
1938
  "1": {
1990
1939
  "name": "punctuation.definition.string.end.python"
@@ -1992,21 +1941,11 @@
1992
1941
  "2": {
1993
1942
  "name": "invalid.illegal.unclosed-string.python"
1994
1943
  }
1995
- },
1996
- "name": "string.quoted.single.single-line.unicode-raw.python",
1997
- "patterns": [
1998
- {
1999
- "include": "#constant_placeholder"
2000
- },
2001
- {
2002
- "include": "#escaped_unicode_char"
2003
- },
2004
- {
2005
- "include": "#escaped_char"
2006
- }
2007
- ]
1944
+ }
2008
1945
  },
2009
1946
  {
1947
+ "name": "string.quoted.single.single-line.raw-regex.python",
1948
+ "match": "(r)(')((?:[^'\\\\]|\\\\.)*)(')",
2010
1949
  "captures": {
2011
1950
  "1": {
2012
1951
  "name": "storage.type.string.python"
@@ -2030,13 +1969,20 @@
2030
1969
  "4": {
2031
1970
  "name": "punctuation.definition.string.end.python"
2032
1971
  }
2033
- },
2034
- "comment": "single quoted raw string",
2035
- "match": "(r)(')((?:[^'\\\\]|\\\\.)*)(')",
2036
- "name": "string.quoted.single.single-line.raw-regex.python"
1972
+ }
2037
1973
  },
2038
1974
  {
1975
+ "name": "string.quoted.single.single-line.raw.python",
2039
1976
  "begin": "(R)(')",
1977
+ "end": "(')|(\\n)",
1978
+ "patterns": [
1979
+ {
1980
+ "include": "#constant_placeholder"
1981
+ },
1982
+ {
1983
+ "include": "#escaped_char"
1984
+ }
1985
+ ],
2040
1986
  "beginCaptures": {
2041
1987
  "1": {
2042
1988
  "name": "storage.type.string.python"
@@ -2045,8 +1991,6 @@
2045
1991
  "name": "punctuation.definition.string.begin.python"
2046
1992
  }
2047
1993
  },
2048
- "comment": "single quoted raw string",
2049
- "end": "(')|(\\n)",
2050
1994
  "endCaptures": {
2051
1995
  "1": {
2052
1996
  "name": "punctuation.definition.string.end.python"
@@ -2054,19 +1998,23 @@
2054
1998
  "2": {
2055
1999
  "name": "invalid.illegal.unclosed-string.python"
2056
2000
  }
2057
- },
2058
- "name": "string.quoted.single.single-line.raw.python",
2001
+ }
2002
+ },
2003
+ {
2004
+ "name": "string.quoted.single.single-line.unicode.python",
2005
+ "begin": "([uU])(')",
2006
+ "end": "(')",
2059
2007
  "patterns": [
2060
2008
  {
2061
2009
  "include": "#constant_placeholder"
2062
2010
  },
2011
+ {
2012
+ "include": "#escaped_unicode_char"
2013
+ },
2063
2014
  {
2064
2015
  "include": "#escaped_char"
2065
2016
  }
2066
- ]
2067
- },
2068
- {
2069
- "begin": "([uU])(')",
2017
+ ],
2070
2018
  "beginCaptures": {
2071
2019
  "1": {
2072
2020
  "name": "storage.type.string.python"
@@ -2075,8 +2023,6 @@
2075
2023
  "name": "punctuation.definition.string.begin.python"
2076
2024
  }
2077
2025
  },
2078
- "comment": "single quoted unicode string",
2079
- "end": "(')",
2080
2026
  "endCaptures": {
2081
2027
  "1": {
2082
2028
  "name": "punctuation.definition.string.end.python"
@@ -2084,29 +2030,28 @@
2084
2030
  "2": {
2085
2031
  "name": "invalid.illegal.unclosed-string.python"
2086
2032
  }
2087
- },
2088
- "name": "string.quoted.single.single-line.unicode.python",
2033
+ }
2034
+ },
2035
+ {
2036
+ "name": "string.quoted.single.block.python",
2037
+ "begin": "(''')(?=\\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))",
2038
+ "end": "((?\u003c=''')(')''|''')",
2089
2039
  "patterns": [
2090
2040
  {
2091
2041
  "include": "#constant_placeholder"
2092
2042
  },
2093
2043
  {
2094
- "include": "#escaped_unicode_char"
2044
+ "include": "#escaped_char"
2095
2045
  },
2096
2046
  {
2097
- "include": "#escaped_char"
2047
+ "include": "source.sql"
2098
2048
  }
2099
- ]
2100
- },
2101
- {
2102
- "begin": "(''')(?=\\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))",
2049
+ ],
2103
2050
  "beginCaptures": {
2104
2051
  "1": {
2105
2052
  "name": "punctuation.definition.string.begin.python"
2106
2053
  }
2107
2054
  },
2108
- "comment": "single quoted string",
2109
- "end": "((?<=''')(')''|''')",
2110
2055
  "endCaptures": {
2111
2056
  "1": {
2112
2057
  "name": "punctuation.definition.string.end.python"
@@ -2114,8 +2059,12 @@
2114
2059
  "2": {
2115
2060
  "name": "meta.empty-string.single.python"
2116
2061
  }
2117
- },
2118
- "name": "string.quoted.single.block.python",
2062
+ }
2063
+ },
2064
+ {
2065
+ "name": "string.quoted.single.single-line.python",
2066
+ "begin": "(')(?=\\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))",
2067
+ "end": "(')|(\\n)",
2119
2068
  "patterns": [
2120
2069
  {
2121
2070
  "include": "#constant_placeholder"
@@ -2126,17 +2075,12 @@
2126
2075
  {
2127
2076
  "include": "source.sql"
2128
2077
  }
2129
- ]
2130
- },
2131
- {
2132
- "begin": "(')(?=\\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))",
2078
+ ],
2133
2079
  "beginCaptures": {
2134
2080
  "1": {
2135
2081
  "name": "punctuation.definition.string.begin.python"
2136
2082
  }
2137
2083
  },
2138
- "comment": "single quoted string",
2139
- "end": "(')|(\\n)",
2140
2084
  "endCaptures": {
2141
2085
  "1": {
2142
2086
  "name": "punctuation.definition.string.end.python"
@@ -2144,29 +2088,25 @@
2144
2088
  "2": {
2145
2089
  "name": "invalid.illegal.unclosed-string.python"
2146
2090
  }
2147
- },
2148
- "name": "string.quoted.single.single-line.python",
2091
+ }
2092
+ },
2093
+ {
2094
+ "name": "string.quoted.single.block.python",
2095
+ "begin": "(''')",
2096
+ "end": "((?\u003c=''')(')''|''')",
2149
2097
  "patterns": [
2150
2098
  {
2151
2099
  "include": "#constant_placeholder"
2152
2100
  },
2153
2101
  {
2154
2102
  "include": "#escaped_char"
2155
- },
2156
- {
2157
- "include": "source.sql"
2158
2103
  }
2159
- ]
2160
- },
2161
- {
2162
- "begin": "(''')",
2104
+ ],
2163
2105
  "beginCaptures": {
2164
2106
  "1": {
2165
2107
  "name": "punctuation.definition.string.begin.python"
2166
2108
  }
2167
2109
  },
2168
- "comment": "single quoted string",
2169
- "end": "((?<=''')(')''|''')",
2170
2110
  "endCaptures": {
2171
2111
  "1": {
2172
2112
  "name": "punctuation.definition.string.end.python"
@@ -2174,8 +2114,12 @@
2174
2114
  "2": {
2175
2115
  "name": "meta.empty-string.single.python"
2176
2116
  }
2177
- },
2178
- "name": "string.quoted.single.block.python",
2117
+ }
2118
+ },
2119
+ {
2120
+ "name": "string.quoted.single.single-line.python",
2121
+ "begin": "(')",
2122
+ "end": "(')",
2179
2123
  "patterns": [
2180
2124
  {
2181
2125
  "include": "#constant_placeholder"
@@ -2183,17 +2127,12 @@
2183
2127
  {
2184
2128
  "include": "#escaped_char"
2185
2129
  }
2186
- ]
2187
- },
2188
- {
2189
- "begin": "(')",
2130
+ ],
2190
2131
  "beginCaptures": {
2191
2132
  "1": {
2192
2133
  "name": "punctuation.definition.string.begin.python"
2193
2134
  }
2194
2135
  },
2195
- "comment": "single quoted string",
2196
- "end": "(')",
2197
2136
  "endCaptures": {
2198
2137
  "1": {
2199
2138
  "name": "punctuation.definition.string.end.python"
@@ -2201,16 +2140,7 @@
2201
2140
  "2": {
2202
2141
  "name": "invalid.illegal.unclosed-string.python"
2203
2142
  }
2204
- },
2205
- "name": "string.quoted.single.single-line.python",
2206
- "patterns": [
2207
- {
2208
- "include": "#constant_placeholder"
2209
- },
2210
- {
2211
- "include": "#escaped_char"
2212
- }
2213
- ]
2143
+ }
2214
2144
  }
2215
2145
  ]
2216
2146
  },
@@ -2225,4 +2155,4 @@
2225
2155
  ]
2226
2156
  }
2227
2157
  }
2228
- }
2158
+ }