github-linguist 5.3.3 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (460) hide show
  1. checksums.yaml +4 -4
  2. data/bin/git-linguist +5 -2
  3. data/ext/linguist/linguist.c +18 -7
  4. data/grammars/annotation.liquidhaskell.haskell.json +969 -862
  5. data/grammars/config.xcompose.json +22 -25
  6. data/grammars/file.lasso.json +296 -309
  7. data/grammars/hint.haskell.json +867 -766
  8. data/grammars/hint.message.haskell.json +867 -766
  9. data/grammars/hint.type.haskell.json +867 -766
  10. data/grammars/objdump.x86asm.json +20 -24
  11. data/grammars/source.Kotlin.json +220 -225
  12. data/grammars/source.LS.json +36 -55
  13. data/grammars/source.MCPOST.json +24 -38
  14. data/grammars/source.MOD.json +26 -41
  15. data/grammars/source.SASLog.json +9 -16
  16. data/grammars/source.abap.json +48 -56
  17. data/grammars/source.abl.json +8 -14
  18. data/grammars/source.abnf.json +88 -98
  19. data/grammars/source.actionscript.3.json +398 -429
  20. data/grammars/source.acucobol.json +5 -8
  21. data/grammars/source.ada.json +46 -53
  22. data/grammars/source.afm.json +548 -554
  23. data/grammars/source.agc.json +34 -37
  24. data/grammars/source.agda.json +79 -91
  25. data/grammars/source.ahk.json +62 -66
  26. data/grammars/source.alloy.json +16 -20
  27. data/grammars/source.ampl.json +41 -47
  28. data/grammars/source.angelscript.json +71 -80
  29. data/grammars/source.antlr.json +131 -136
  30. data/grammars/source.apache-config.json +93 -99
  31. data/grammars/source.apache-config.mod_perl.json +19 -24
  32. data/grammars/source.apl.json +1038 -1029
  33. data/grammars/source.applescript.json +501 -523
  34. data/grammars/source.apt.json +9 -16
  35. data/grammars/source.asn.json +27 -31
  36. data/grammars/source.asp.json +61 -67
  37. data/grammars/source.aspectj.json +385 -391
  38. data/grammars/source.assembly.json +49 -55
  39. data/grammars/source.ats.json +45 -121
  40. data/grammars/source.autoit.json +64 -69
  41. data/grammars/source.awk.json +172 -176
  42. data/grammars/source.ballerina.json +48 -395
  43. data/grammars/source.batchfile.json +269 -269
  44. data/grammars/source.befunge.json +17 -21
  45. data/grammars/source.bf.json +5 -11
  46. data/grammars/source.bison.json +10 -14
  47. data/grammars/source.blitzmax.json +300 -305
  48. data/grammars/source.boo.json +189 -193
  49. data/grammars/source.brightauthorproject.json +8 -13
  50. data/grammars/source.brightscript.json +37 -47
  51. data/grammars/source.bro.json +134 -140
  52. data/grammars/source.bsl.json +152 -193
  53. data/grammars/source.bsv.json +96 -102
  54. data/grammars/source.c++.json +176 -193
  55. data/grammars/source.c++.qt.json +13 -21
  56. data/grammars/source.c.ec.json +15 -21
  57. data/grammars/source.c.json +237 -251
  58. data/grammars/source.c.platform.json +153 -159
  59. data/grammars/source.c2hs.json +3 -6
  60. data/grammars/source.cabal.json +17 -20
  61. data/grammars/source.cache.cmake.json +18 -23
  62. data/grammars/source.cake.json +4 -7
  63. data/grammars/source.camlp4.ocaml.json +24 -27
  64. data/grammars/source.capnp.json +33 -38
  65. data/grammars/source.ceylon.json +44 -50
  66. data/grammars/source.cfscript.cfc.json +78 -86
  67. data/grammars/source.cfscript.json +513 -520
  68. data/grammars/source.changelogs.rpm-spec.json +8 -16
  69. data/grammars/source.chapel.json +109 -87
  70. data/grammars/source.cirru.json +25 -30
  71. data/grammars/source.clarion.json +41 -54
  72. data/grammars/source.clean.json +90 -95
  73. data/grammars/source.click.json +25 -28
  74. data/grammars/source.clips.json +10 -23
  75. data/grammars/source.clojure.json +151 -168
  76. data/grammars/source.cm.json +14 -19
  77. data/grammars/source.cmake.json +53 -61
  78. data/grammars/source.cobol.json +165 -180
  79. data/grammars/source.coffee.json +454 -462
  80. data/grammars/source.cool.json +36 -43
  81. data/grammars/source.coq.json +17 -21
  82. data/grammars/source.crystal.json +889 -983
  83. data/grammars/source.cs.json +739 -740
  84. data/grammars/source.csound-document.json +69 -73
  85. data/grammars/source.csound-score.json +52 -55
  86. data/grammars/source.csound.json +167 -171
  87. data/grammars/source.css.json +683 -688
  88. data/grammars/source.css.less.json +211 -511
  89. data/grammars/source.css.mss.json +94 -101
  90. data/grammars/source.css.postcss.sugarss.json +260 -0
  91. data/grammars/source.csx.json +4 -7
  92. data/grammars/source.cuda-c++.json +47 -81
  93. data/grammars/source.cwl.json +103 -0
  94. data/grammars/source.cython.json +536 -582
  95. data/grammars/source.d.json +243 -252
  96. data/grammars/source.dart.json +161 -166
  97. data/grammars/source.data-weave.json +901 -905
  98. data/grammars/source.desktop.json +29 -33
  99. data/grammars/source.diff.json +43 -52
  100. data/grammars/source.disasm.json +15 -16
  101. data/grammars/source.ditroff.desc.json +73 -84
  102. data/grammars/source.ditroff.json +60 -61
  103. data/grammars/source.dm.json +202 -213
  104. data/grammars/source.dmf.json +44 -47
  105. data/grammars/source.dockerfile.json +29 -34
  106. data/grammars/source.dot.json +46 -55
  107. data/grammars/source.dylan.json +63 -68
  108. data/grammars/source.ebnf.json +55 -62
  109. data/grammars/source.eiffel.json +57 -62
  110. data/grammars/source.elixir.json +321 -366
  111. data/grammars/source.emacs.lisp.json +458 -249
  112. data/grammars/source.erazor.json +49 -57
  113. data/grammars/source.erlang.json +508 -515
  114. data/grammars/source.essl.json +17 -30
  115. data/grammars/source.factor.json +85 -91
  116. data/grammars/source.fan.json +92 -96
  117. data/grammars/source.fancy.json +93 -118
  118. data/grammars/source.fish.json +74 -98
  119. data/grammars/source.fontforge.json +142 -146
  120. data/grammars/source.forth.json +42 -57
  121. data/grammars/source.fortran.json +193 -231
  122. data/grammars/source.fortran.modern.json +77 -103
  123. data/grammars/source.fsharp.fsi.json +1 -6
  124. data/grammars/source.fsharp.fsl.json +1 -6
  125. data/grammars/source.fsharp.fsx.json +1 -6
  126. data/grammars/source.fsharp.json +148 -153
  127. data/grammars/source.gap.json +60 -70
  128. data/grammars/source.gcode.json +9 -16
  129. data/grammars/source.gdb.json +63 -79
  130. data/grammars/source.gdb.session.json +27 -28
  131. data/grammars/source.gdbregs.json +7 -8
  132. data/grammars/source.gdscript.json +92 -96
  133. data/grammars/source.gerber.json +38 -56
  134. data/grammars/source.gfm.json +447 -462
  135. data/grammars/source.glsl.json +58 -83
  136. data/grammars/source.gn.json +188 -193
  137. data/grammars/source.gnuplot.json +104 -120
  138. data/grammars/source.go.json +169 -181
  139. data/grammars/source.golo.json +82 -87
  140. data/grammars/source.gosu.2.json +58 -68
  141. data/grammars/source.grace.json +266 -270
  142. data/grammars/source.graphql.json +586 -596
  143. data/grammars/source.groovy.gradle.json +18 -22
  144. data/grammars/source.groovy.json +422 -433
  145. data/grammars/source.harbour.json +129 -173
  146. data/grammars/source.haskell.json +871 -772
  147. data/grammars/source.haxe.2.json +402 -413
  148. data/grammars/source.hlsl.json +6 -16
  149. data/grammars/source.hsc2hs.json +1 -4
  150. data/grammars/source.hsig.json +871 -770
  151. data/grammars/source.hss.1.json +122 -144
  152. data/grammars/source.httpspec.json +119 -123
  153. data/grammars/source.hxml.json +8 -15
  154. data/grammars/source.ideal.json +125 -125
  155. data/grammars/source.idl-dlm.json +25 -32
  156. data/grammars/source.idl.json +59 -80
  157. data/grammars/source.idris.json +171 -185
  158. data/grammars/source.inform7.json +117 -121
  159. data/grammars/source.ini.json +37 -43
  160. data/grammars/source.io.json +65 -73
  161. data/grammars/source.ioke.json +72 -78
  162. data/grammars/source.isabelle.root.json +26 -30
  163. data/grammars/source.isabelle.theory.json +46 -50
  164. data/grammars/source.j.json +18 -21
  165. data/grammars/source.jasmin.json +45 -50
  166. data/grammars/source.java-properties.json +31 -41
  167. data/grammars/source.java.json +333 -342
  168. data/grammars/source.jcl.json +15 -18
  169. data/grammars/source.jflex.json +166 -172
  170. data/grammars/source.jison.json +331 -334
  171. data/grammars/source.jisonlex-injection.json +1 -2
  172. data/grammars/source.jisonlex.json +148 -151
  173. data/grammars/source.jolie.json +37 -43
  174. data/grammars/source.jq.json +80 -87
  175. data/grammars/source.js.json +798 -818
  176. data/grammars/source.js.jsx.json +2115 -2225
  177. data/grammars/source.js.objj.json +167 -172
  178. data/grammars/source.js.regexp.json +50 -50
  179. data/grammars/source.js.regexp.replacement.json +7 -7
  180. data/grammars/source.jsdoc.json +94 -94
  181. data/grammars/source.json.json +61 -71
  182. data/grammars/source.julia.console.json +5 -6
  183. data/grammars/source.julia.json +237 -234
  184. data/grammars/source.lean.json +55 -67
  185. data/grammars/source.lid.json +6 -10
  186. data/grammars/source.lilypond.json +181 -195
  187. data/grammars/source.lisp.json +40 -50
  188. data/grammars/source.litcoffee.json +169 -183
  189. data/grammars/source.livescript.json +207 -220
  190. data/grammars/source.llvm.json +28 -38
  191. data/grammars/source.logos.json +7 -14
  192. data/grammars/source.logtalk.json +136 -141
  193. data/grammars/source.loomscript.json +77 -83
  194. data/grammars/source.lsl.json +90 -106
  195. data/grammars/source.lua.json +100 -109
  196. data/grammars/source.makefile.json +181 -188
  197. data/grammars/source.makegen.json +3 -7
  198. data/grammars/source.mask.json +260 -265
  199. data/grammars/source.mata.json +38 -46
  200. data/grammars/source.mathematica.json +155 -167
  201. data/grammars/source.matlab.json +407 -684
  202. data/grammars/source.maxscript.json +293 -281
  203. data/grammars/source.mercury.json +179 -184
  204. data/grammars/source.meson.json +52 -58
  205. data/grammars/source.meta-info.json +64 -74
  206. data/grammars/source.ml.json +107 -113
  207. data/grammars/source.modelica.json +51 -59
  208. data/grammars/source.modula2.json +33 -42
  209. data/grammars/source.monkey.json +234 -241
  210. data/grammars/source.moonscript.json +51 -56
  211. data/grammars/source.mql5.json +74 -101
  212. data/grammars/source.mupad.json +30 -72
  213. data/grammars/source.ncl.json +1 -14
  214. data/grammars/source.ne.json +39 -42
  215. data/grammars/source.nemerle.json +58 -63
  216. data/grammars/source.nesc.json +9 -15
  217. data/grammars/source.netlinx.erb.json +13 -25
  218. data/grammars/source.netlinx.json +231 -292
  219. data/grammars/source.nextflow-groovy.json +1360 -0
  220. data/grammars/source.nextflow.json +74 -0
  221. data/grammars/source.nginx.json +274 -287
  222. data/grammars/source.nim.json +442 -483
  223. data/grammars/source.nim_filter.json +6 -26
  224. data/grammars/source.nimcfg.json +38 -51
  225. data/grammars/source.ninja.json +64 -70
  226. data/grammars/source.nit.json +60 -64
  227. data/grammars/source.nix.json +269 -273
  228. data/grammars/source.nmml.json +31 -37
  229. data/grammars/source.nsis.json +66 -72
  230. data/grammars/source.nu.json +129 -139
  231. data/grammars/source.nut.json +129 -133
  232. data/grammars/source.objc++.json +3 -10
  233. data/grammars/source.objc.json +303 -314
  234. data/grammars/source.objc.platform.json +145 -151
  235. data/grammars/source.ocaml.json +506 -514
  236. data/grammars/source.ocamllex.json +108 -115
  237. data/grammars/source.ocamlyacc.json +116 -123
  238. data/grammars/source.ooc.json +148 -155
  239. data/grammars/source.opa.json +39 -49
  240. data/grammars/source.opal.json +84 -89
  241. data/grammars/source.opalsysdefs.json +9 -13
  242. data/grammars/source.opencobol.json +22 -25
  243. data/grammars/source.opentype.json +148 -152
  244. data/grammars/source.ox.json +36 -44
  245. data/grammars/source.oz.json +31 -38
  246. data/grammars/source.p4.json +49 -59
  247. data/grammars/source.pan.json +273 -278
  248. data/grammars/source.papyrus.skyrim.json +705 -781
  249. data/grammars/source.parrot.pir.json +59 -65
  250. data/grammars/source.pascal.json +54 -61
  251. data/grammars/source.pawn.json +835 -849
  252. data/grammars/source.pcb.board.json +153 -158
  253. data/grammars/source.pcb.schematic.json +134 -138
  254. data/grammars/source.pcb.sexp.json +64 -74
  255. data/grammars/source.pep8.json +28 -32
  256. data/grammars/source.perl.6.json +83 -92
  257. data/grammars/source.perl.json +711 -737
  258. data/grammars/source.perl6fe.json +1204 -1218
  259. data/grammars/source.php.zephir.json +80 -89
  260. data/grammars/source.pic.json +137 -142
  261. data/grammars/source.pig_latin.json +76 -80
  262. data/grammars/source.pike.json +23 -36
  263. data/grammars/source.po.json +74 -84
  264. data/grammars/source.pogoscript.json +23 -29
  265. data/grammars/source.pony.json +98 -108
  266. data/grammars/source.postcss.json +370 -0
  267. data/grammars/source.postscript.json +88 -97
  268. data/grammars/source.pov-ray sdl.json +36 -42
  269. data/grammars/source.powershell.json +175 -197
  270. data/grammars/source.processing.json +236 -249
  271. data/grammars/source.prolog.eclipse.json +33 -38
  272. data/grammars/source.prolog.json +66 -72
  273. data/grammars/source.protobuf.json +88 -94
  274. data/grammars/source.puppet.json +144 -151
  275. data/grammars/source.purescript.json +268 -289
  276. data/grammars/source.pyjade.json +256 -281
  277. data/grammars/source.python.django.json +13 -18
  278. data/grammars/source.python.json +3319 -3367
  279. data/grammars/source.python.salt.json +3 -7
  280. data/grammars/source.qmake.json +83 -90
  281. data/grammars/source.qml.json +57 -78
  282. data/grammars/source.quoting.perl6fe.json +666 -669
  283. data/grammars/source.r.json +75 -84
  284. data/grammars/source.racket.json +17 -38
  285. data/grammars/source.rascal.json +77 -80
  286. data/grammars/source.reason.hover.type.json +1 -1
  287. data/grammars/source.reason.json +1025 -1080
  288. data/grammars/source.rebol.json +167 -177
  289. data/grammars/source.red.json +169 -177
  290. data/grammars/source.regexp.babel.json +74 -77
  291. data/grammars/source.regexp.extended.json +4 -5
  292. data/grammars/source.regexp.json +260 -264
  293. data/grammars/source.regexp.perl6fe.json +108 -111
  294. data/grammars/source.regexp.python.json +210 -215
  295. data/grammars/source.regexp.spin.json +63 -72
  296. data/grammars/source.renpy.json +617 -687
  297. data/grammars/source.rexx.json +25 -32
  298. data/grammars/source.ring.json +84 -114
  299. data/grammars/source.rpm-spec.json +392 -401
  300. data/grammars/source.ruby.gemfile.json +9 -12
  301. data/grammars/source.ruby.json +862 -952
  302. data/grammars/source.ruby.rspec.cucumber.steps.json +90 -103
  303. data/grammars/source.rust.json +223 -281
  304. data/grammars/source.sas.json +88 -105
  305. data/grammars/source.sass.json +100 -108
  306. data/grammars/source.sbt.json +16 -23
  307. data/grammars/source.scad.json +60 -67
  308. data/grammars/source.scala.json +215 -228
  309. data/grammars/source.scaml.json +120 -135
  310. data/grammars/source.scheme.json +119 -136
  311. data/grammars/source.scilab.json +40 -47
  312. data/grammars/source.scss.json +369 -403
  313. data/grammars/source.sdbl.json +14 -25
  314. data/grammars/source.shaderlab.json +24 -27
  315. data/grammars/source.shell.json +409 -440
  316. data/grammars/source.shen.json +75 -94
  317. data/grammars/source.smali.json +232 -293
  318. data/grammars/source.smalltalk.json +60 -75
  319. data/grammars/source.smt.json +67 -82
  320. data/grammars/source.solidity.json +35 -54
  321. data/grammars/source.sp.json +40 -45
  322. data/grammars/source.sparql.json +3 -8
  323. data/grammars/source.spin.json +277 -297
  324. data/grammars/source.sqf.json +34 -44
  325. data/grammars/source.sql.json +142 -156
  326. data/grammars/source.stan.json +201 -160
  327. data/grammars/source.stata.json +57 -68
  328. data/grammars/source.strings.json +26 -30
  329. data/grammars/source.stylus.json +558 -565
  330. data/grammars/source.supercollider.json +33 -40
  331. data/grammars/source.swift.json +999 -1077
  332. data/grammars/source.systemverilog.json +351 -365
  333. data/grammars/source.tcl.json +77 -94
  334. data/grammars/source.tea.json +61 -67
  335. data/grammars/source.terra.json +25 -32
  336. data/grammars/source.terraform.json +68 -88
  337. data/grammars/source.thrift.json +300 -306
  338. data/grammars/source.tl.json +112 -117
  339. data/grammars/source.tla.json +65 -69
  340. data/grammars/source.toc.json +21 -25
  341. data/grammars/source.toml.json +117 -122
  342. data/grammars/source.ts.json +2838 -2774
  343. data/grammars/source.tsx.json +180 -184
  344. data/grammars/source.turing.json +970 -974
  345. data/grammars/source.turtle.json +124 -140
  346. data/grammars/source.txl.json +23 -37
  347. data/grammars/source.ucfconstraints.json +16 -21
  348. data/grammars/source.ur.json +15 -27
  349. data/grammars/source.vala.json +221 -235
  350. data/grammars/source.varnish.vcl.json +117 -129
  351. data/grammars/source.vbnet.json +69 -106
  352. data/grammars/source.verilog.json +101 -107
  353. data/grammars/source.vhdl.json +437 -445
  354. data/grammars/source.viml.json +540 -550
  355. data/grammars/source.wavefront.mtl.json +274 -277
  356. data/grammars/source.wavefront.obj.json +781 -784
  357. data/grammars/source.wdl.json +66 -46
  358. data/grammars/source.webassembly.json +97 -102
  359. data/grammars/source.webidl.json +311 -326
  360. data/grammars/source.x10.json +28 -32
  361. data/grammars/source.x86asm.json +21 -26
  362. data/grammars/source.xc.json +164 -172
  363. data/grammars/source.xq.json +81 -92
  364. data/grammars/source.xtend.json +199 -208
  365. data/grammars/source.yaml-ext.json +118 -124
  366. data/grammars/source.yaml.json +155 -174
  367. data/grammars/source.yaml.salt.json +113 -116
  368. data/grammars/source.yang.json +10 -13
  369. data/grammars/source.yara.json +98 -0
  370. data/grammars/text.bibtex.json +95 -100
  371. data/grammars/text.cfml.basic.json +403 -404
  372. data/grammars/text.elixir.json +18 -23
  373. data/grammars/text.error-list.json +15 -16
  374. data/grammars/text.find-refs.json +487 -488
  375. data/grammars/text.gherkin.feature.json +45 -53
  376. data/grammars/text.haml.json +176 -189
  377. data/grammars/text.hamlc.json +82 -88
  378. data/grammars/text.html.abl.json +16 -21
  379. data/grammars/text.html.asciidoc.json +139 -153
  380. data/grammars/text.html.asdoc.json +145 -155
  381. data/grammars/text.html.asp.json +23 -28
  382. data/grammars/text.html.basic.json +323 -338
  383. data/grammars/text.html.cfm.json +316 -325
  384. data/grammars/text.html.creole.json +177 -189
  385. data/grammars/text.html.django.json +27 -33
  386. data/grammars/text.html.ecr.json +21 -25
  387. data/grammars/text.html.elixir.json +3 -9
  388. data/grammars/text.html.erb.json +81 -85
  389. data/grammars/text.html.erlang.yaws.json +24 -29
  390. data/grammars/text.html.factor.json +5 -11
  391. data/grammars/text.html.ftl.json +16 -25
  392. data/grammars/text.html.handlebars.json +579 -598
  393. data/grammars/text.html.javadoc.json +426 -0
  394. data/grammars/text.html.js.json +11 -17
  395. data/grammars/text.html.jsp.json +377 -384
  396. data/grammars/text.html.liquid.json +8 -18
  397. data/grammars/text.html.mako.json +257 -275
  398. data/grammars/text.html.markdown.source.gfm.apib.json +419 -427
  399. data/grammars/text.html.markdown.source.gfm.mson.json +405 -414
  400. data/grammars/text.html.mediawiki.json +318 -344
  401. data/grammars/text.html.php.blade.json +2134 -2140
  402. data/grammars/text.html.php.json +980 -1013
  403. data/grammars/text.html.slash.json +101 -107
  404. data/grammars/text.html.smarty.json +75 -83
  405. data/grammars/text.html.soy.json +250 -253
  406. data/grammars/text.html.ssp.json +18 -24
  407. data/grammars/text.html.tcl.json +17 -24
  408. data/grammars/text.html.twig.json +712 -718
  409. data/grammars/text.idl-idldoc.json +5 -9
  410. data/grammars/text.jade.json +213 -235
  411. data/grammars/text.junit-test-report.json +25 -28
  412. data/grammars/text.log.latex.json +44 -46
  413. data/grammars/text.marko.json +370 -401
  414. data/grammars/text.python.console.json +3 -7
  415. data/grammars/text.python.traceback.json +2 -5
  416. data/grammars/text.rdoc.json +15 -19
  417. data/grammars/text.restructuredtext.clean.json +8 -11
  418. data/grammars/text.restructuredtext.json +886 -873
  419. data/grammars/text.robot.json +26 -36
  420. data/grammars/text.roff.json +2852 -2915
  421. data/grammars/text.runoff.json +56 -69
  422. data/grammars/text.sfd.json +151 -155
  423. data/grammars/text.shell-session.json +5 -8
  424. data/grammars/text.slim.json +184 -210
  425. data/grammars/text.srt.json +54 -57
  426. data/grammars/text.tex.json +98 -105
  427. data/grammars/text.tex.latex.beamer.json +14 -20
  428. data/grammars/text.tex.latex.haskell.json +883 -782
  429. data/grammars/text.tex.latex.json +281 -291
  430. data/grammars/text.tex.latex.memoir.json +39 -46
  431. data/grammars/text.tex.latex.rd.json +32 -38
  432. data/grammars/text.xml.ant.json +62 -69
  433. data/grammars/text.xml.flex-config.json +1009 -1013
  434. data/grammars/text.xml.genshi.json +10 -16
  435. data/grammars/text.xml.json +117 -130
  436. data/grammars/text.xml.pom.json +235 -240
  437. data/grammars/text.xml.xsl.json +31 -37
  438. data/grammars/text.zone_file.json +24 -29
  439. data/lib/linguist/blob.rb +10 -1
  440. data/lib/linguist/blob_helper.rb +4 -1
  441. data/lib/linguist/file_blob.rb +5 -0
  442. data/lib/linguist/generated.rb +16 -0
  443. data/lib/linguist/heuristics.rb +23 -11
  444. data/lib/linguist/language.rb +3 -6
  445. data/lib/linguist/languages.json +1 -1
  446. data/lib/linguist/languages.yml +74 -12
  447. data/lib/linguist/lazy_blob.rb +15 -1
  448. data/lib/linguist/linguist.bundle +0 -0
  449. data/lib/linguist/samples.json +1666 -3381
  450. data/lib/linguist/shebang.rb +2 -0
  451. data/lib/linguist/strategy/modeline.rb +2 -0
  452. data/lib/linguist/vendor.yml +5 -6
  453. data/lib/linguist/version.rb +1 -1
  454. metadata +12 -11
  455. data/grammars/source.elm.json +0 -381
  456. data/grammars/source.nant-build.json +0 -86
  457. data/grammars/source.octave.json +0 -451
  458. data/grammars/text.html.mediawiki.elm-build-output.json +0 -111
  459. data/grammars/text.html.mediawiki.elm-documentation.json +0 -22
  460. data/grammars/text.html.vue.json +0 -936
@@ -11,4 +11,4 @@
11
11
  "include": "source.reason#type-expression"
12
12
  }
13
13
  ]
14
- }
14
+ }
@@ -1,10 +1,6 @@
1
1
  {
2
2
  "name": "Reason",
3
3
  "scopeName": "source.reason",
4
- "fileTypes": [
5
- "re",
6
- "rei"
7
- ],
8
4
  "patterns": [
9
5
  {
10
6
  "include": "#structure-expression-block-item"
@@ -21,16 +17,16 @@
21
17
  {
22
18
  "begin": "\\[(@{1,3})",
23
19
  "end": "(?=[^_\\.'[:word:]])",
24
- "beginCaptures": {
25
- "1": {
26
- "name": "keyword.control.less"
27
- }
28
- },
29
20
  "patterns": [
30
21
  {
31
22
  "include": "#attribute-identifier"
32
23
  }
33
- ]
24
+ ],
25
+ "beginCaptures": {
26
+ "1": {
27
+ "name": "keyword.control.less"
28
+ }
29
+ }
34
30
  },
35
31
  {
36
32
  "include": "#attribute-payload"
@@ -51,8 +47,8 @@
51
47
  }
52
48
  },
53
49
  {
54
- "match": "\\b([[:alpha:]][[:word:]]*)\\b",
55
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
50
+ "name": "entity.other.attribute-name.css constant.language constant.numeric",
51
+ "match": "\\b([[:alpha:]][[:word:]]*)\\b"
56
52
  }
57
53
  ]
58
54
  },
@@ -61,11 +57,6 @@
61
57
  {
62
58
  "begin": "(:)",
63
59
  "end": "(?=\\])",
64
- "beginCaptures": {
65
- "1": {
66
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
67
- }
68
- },
69
60
  "patterns": [
70
61
  {
71
62
  "include": "#structure-expression"
@@ -76,16 +67,16 @@
76
67
  {
77
68
  "include": "#type-expression"
78
69
  }
79
- ]
70
+ ],
71
+ "beginCaptures": {
72
+ "1": {
73
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
74
+ }
75
+ }
80
76
  },
81
77
  {
82
78
  "begin": "([\\?])",
83
79
  "end": "(?=\\])",
84
- "beginCaptures": {
85
- "1": {
86
- "name": "keyword.control.less"
87
- }
88
- },
89
80
  "patterns": [
90
81
  {
91
82
  "include": "#pattern-guard"
@@ -93,7 +84,12 @@
93
84
  {
94
85
  "include": "#pattern"
95
86
  }
96
- ]
87
+ ],
88
+ "beginCaptures": {
89
+ "1": {
90
+ "name": "keyword.control.less"
91
+ }
92
+ }
97
93
  },
98
94
  {
99
95
  "include": "#structure-expression-block-item"
@@ -106,6 +102,11 @@
106
102
  "class-item-inherit": {
107
103
  "begin": "\\b(inherit)\\b",
108
104
  "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
105
+ "patterns": [
106
+ {
107
+ "include": "#value-expression"
108
+ }
109
+ ],
109
110
  "beginCaptures": {
110
111
  "1": {
111
112
  "name": "keyword.other"
@@ -115,16 +116,16 @@
115
116
  "1": {
116
117
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
117
118
  }
118
- },
119
- "patterns": [
120
- {
121
- "include": "#value-expression"
122
- }
123
- ]
119
+ }
124
120
  },
125
121
  "class-item-method": {
126
122
  "begin": "\\b(method)\\b",
127
123
  "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|type|val|with)\\b)",
124
+ "patterns": [
125
+ {
126
+ "include": "#module-item-let-value-bind-name-params-type-body"
127
+ }
128
+ ],
128
129
  "beginCaptures": {
129
130
  "1": {
130
131
  "name": "storage.type"
@@ -134,12 +135,7 @@
134
135
  "1": {
135
136
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
136
137
  }
137
- },
138
- "patterns": [
139
- {
140
- "include": "#module-item-let-value-bind-name-params-type-body"
141
- }
142
- ]
138
+ }
143
139
  },
144
140
  "comment": {
145
141
  "name": "comment",
@@ -153,9 +149,9 @@
153
149
  ]
154
150
  },
155
151
  "comment-block": {
152
+ "name": "comment.block",
156
153
  "begin": "/\\*",
157
154
  "end": "\\*/",
158
- "name": "comment.block",
159
155
  "patterns": [
160
156
  {
161
157
  "include": "#comment"
@@ -163,9 +159,9 @@
163
159
  ]
164
160
  },
165
161
  "comment-block-doc": {
162
+ "name": "comment.block.documentation",
166
163
  "begin": "/\\*\\*(?!/)",
167
164
  "end": "\\*/",
168
- "name": "comment.block.documentation",
169
165
  "patterns": [
170
166
  {
171
167
  "include": "#comment"
@@ -173,22 +169,22 @@
173
169
  ]
174
170
  },
175
171
  "condition-lhs": {
176
- "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$\\\\])([\\?])(?![#\\-:!?.@*/&%^+<=>|~$\\\\])",
172
+ "begin": "(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])([\\?])(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])",
177
173
  "end": "(?=[\\)])",
178
- "beginCaptures": {
179
- "1": {
180
- "name": "keyword.control message.error variable.interpolation"
181
- }
182
- },
183
174
  "patterns": [
184
175
  {
185
- "match": "(?:\\b|[[:space:]]+)([?])(?:\\b|[[:space:]]+)",
186
- "name": "keyword.control message.error variable.interpolation"
176
+ "name": "keyword.control message.error variable.interpolation",
177
+ "match": "(?:\\b|[[:space:]]+)([?])(?:\\b|[[:space:]]+)"
187
178
  },
188
179
  {
189
180
  "include": "#value-expression"
190
181
  }
191
- ]
182
+ ],
183
+ "beginCaptures": {
184
+ "1": {
185
+ "name": "keyword.control message.error variable.interpolation"
186
+ }
187
+ }
192
188
  },
193
189
  "extension-node": {
194
190
  "begin": "(?=\\[(%{1,3})[[:space:]]*[[:alpha:]])",
@@ -197,16 +193,16 @@
197
193
  {
198
194
  "begin": "\\[(%{1,3})",
199
195
  "end": "(?=[^_\\.'[:word:]])",
200
- "beginCaptures": {
201
- "1": {
202
- "name": "keyword.control.less"
203
- }
204
- },
205
196
  "patterns": [
206
197
  {
207
198
  "include": "#attribute-identifier"
208
199
  }
209
- ]
200
+ ],
201
+ "beginCaptures": {
202
+ "1": {
203
+ "name": "keyword.control.less"
204
+ }
205
+ }
210
206
  },
211
207
  {
212
208
  "include": "#attribute-payload"
@@ -227,8 +223,12 @@
227
223
  "patterns": [
228
224
  {
229
225
  "begin": "\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*(=)",
230
- "end": "(?<![=])(?=[/>[:lower:]])",
231
- "comment": "meta.separator",
226
+ "end": "(?\u003c![=])(?=[/\u003e[:lower:]])",
227
+ "patterns": [
228
+ {
229
+ "include": "#value-expression-atomic-with-paths"
230
+ }
231
+ ],
232
232
  "beginCaptures": {
233
233
  "1": {
234
234
  "name": "markup.inserted constant.language support.property-value entity.name.filename"
@@ -236,19 +236,12 @@
236
236
  "2": {
237
237
  "name": "keyword.control.less"
238
238
  }
239
- },
240
- "patterns": [
241
- {
242
- "include": "#value-expression-atomic-with-paths"
243
- }
244
- ]
239
+ }
245
240
  },
246
241
  {
247
242
  "match": "(\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*+)",
248
243
  "captures": {
249
- "1": {
250
- "comment": "meta.separator"
251
- },
244
+ "1": {},
252
245
  "2": {
253
246
  "name": "markup.inserted constant.language support.property-value entity.name.filename"
254
247
  }
@@ -257,58 +250,37 @@
257
250
  ]
258
251
  },
259
252
  "jsx-body": {
260
- "begin": "((>))",
261
- "end": "(?=</)",
262
- "beginCaptures": {
263
- "1": {
264
- "comment": "meta.separator"
265
- },
266
- "2": {
267
- "name": "punctuation.definition.tag.end.js"
268
- }
269
- },
253
+ "begin": "((\u003e))",
254
+ "end": "(?=\u003c/)",
270
255
  "patterns": [
271
256
  {
272
- "comment": "FIXME: seems necessary in order to properly tokenize `[[:word:]]</` boundary",
273
257
  "match": "[[:lower:]][[:word:]]*"
274
258
  },
275
259
  {
276
260
  "include": "#value-expression"
277
261
  }
278
- ]
279
- },
280
- "jsx-head": {
281
- "begin": "((<))(?=[_[:alpha:]])",
282
- "end": "((/>))|(?=</)",
283
- "applyEndPatternLast": true,
262
+ ],
284
263
  "beginCaptures": {
285
- "1": {
286
- "comment": "meta.separator"
287
- },
288
- "2": {
289
- "name": "punctuation.definition.tag.begin.js"
290
- }
291
- },
292
- "endCaptures": {
293
- "1": {
294
- "comment": "meta.separator"
295
- },
264
+ "1": {},
296
265
  "2": {
297
266
  "name": "punctuation.definition.tag.end.js"
298
267
  }
299
- },
268
+ }
269
+ },
270
+ "jsx-head": {
271
+ "begin": "((\u003c))(?=[_[:alpha:]])",
272
+ "end": "((/\u003e))|(?=\u003c/)",
300
273
  "patterns": [
301
274
  {
302
275
  "begin": "\\G",
303
- "end": "(?=[[:space:]/>])[[:space:]]*+",
304
- "comment": "meta.separator",
276
+ "end": "(?=[[:space:]/\u003e])[[:space:]]*+",
305
277
  "patterns": [
306
278
  {
307
279
  "include": "#module-path-simple"
308
280
  },
309
281
  {
310
- "match": "\\b[[:lower:]][[:word:]]*\\b",
311
- "name": "entity.name.tag.inline.any.html"
282
+ "name": "entity.name.tag.inline.any.html",
283
+ "match": "\\b[[:lower:]][[:word:]]*\\b"
312
284
  }
313
285
  ]
314
286
  },
@@ -318,194 +290,69 @@
318
290
  {
319
291
  "include": "#jsx-body"
320
292
  }
321
- ]
322
- },
323
- "jsx-tail": {
324
- "begin": "\\G(/>)|(</)",
325
- "end": "(>)",
326
- "applyEndPatternLast": true,
327
- "comment": "meta.separator",
293
+ ],
328
294
  "beginCaptures": {
329
- "1": {
330
- "name": "punctuation.definition.tag.end.js"
331
- },
295
+ "1": {},
332
296
  "2": {
333
297
  "name": "punctuation.definition.tag.begin.js"
334
298
  }
335
299
  },
336
300
  "endCaptures": {
337
- "1": {
301
+ "1": {},
302
+ "2": {
338
303
  "name": "punctuation.definition.tag.end.js"
339
304
  }
340
305
  },
341
- "patterns": [
342
- {
343
- "include": "#module-path-simple"
344
- },
345
- {
346
- "match": "\\b[[:lower:]][[:word:]]*\\b",
347
- "name": "entity.name.tag.inline.any.html"
348
- }
349
- ]
306
+ "applyEndPatternLast": true
350
307
  },
351
- "module-name-extended": {
352
- "patterns": [
353
- {
354
- "include": "#module-name-simple"
355
- },
356
- {
357
- "begin": "([\\(])",
358
- "end": "([\\)])",
359
- "captures": {
360
- "1": {
361
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
362
- }
363
- },
364
- "patterns": [
365
- {
366
- "include": "#module-path-extended"
367
- }
368
- ]
369
- }
370
- ]
371
- },
372
- "module-name-simple": {
373
- "match": "\\b[[:upper:]][[:word:]]*\\b",
374
- "name": "support.class entity.name.class"
375
- },
376
- "module-path-extended": {
308
+ "jsx-tail": {
309
+ "begin": "\\G(/\u003e)|(\u003c/)",
310
+ "end": "(\u003e)",
377
311
  "patterns": [
378
312
  {
379
- "include": "#module-name-extended"
380
- },
381
- {
382
- "include": "#comment"
313
+ "include": "#module-path-simple"
383
314
  },
384
315
  {
385
- "comment": "NOTE: end early to avoid too much reparsing",
386
- "begin": "([\\.])",
387
- "end": "(?<=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
388
- "beginCaptures": {
389
- "1": {
390
- "name": "keyword.control.less"
391
- }
392
- },
393
- "patterns": [
394
- {
395
- "begin": "(?<=[\\.])",
396
- "end": "(?<=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
397
- "patterns": [
398
- {
399
- "include": "#comment"
400
- },
401
- {
402
- "include": "#module-name-extended"
403
- }
404
- ]
405
- }
406
- ]
316
+ "name": "entity.name.tag.inline.any.html",
317
+ "match": "\\b[[:lower:]][[:word:]]*\\b"
407
318
  }
408
- ]
409
- },
410
- "module-path-extended-prefix": {
411
- "begin": "(?=\\b[[:upper:]])",
412
- "end": "([\\.])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
413
- "endCaptures": {
319
+ ],
320
+ "beginCaptures": {
414
321
  "1": {
415
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
416
- }
417
- },
418
- "patterns": [
419
- {
420
- "include": "#module-path-extended"
421
- }
422
- ]
423
- },
424
- "module-path-simple": {
425
- "patterns": [
426
- {
427
- "include": "#module-name-simple"
428
- },
429
- {
430
- "include": "#comment"
322
+ "name": "punctuation.definition.tag.end.js"
431
323
  },
432
- {
433
- "comment": "NOTE: end early to avoid too much reparsing",
434
- "begin": "([\\.])",
435
- "end": "(?<=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
436
- "beginCaptures": {
437
- "1": {
438
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
439
- }
440
- },
441
- "patterns": [
442
- {
443
- "begin": "(?<=[\\.])",
444
- "end": "(?<=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
445
- "patterns": [
446
- {
447
- "include": "#comment"
448
- },
449
- {
450
- "include": "#module-name-simple"
451
- }
452
- ]
453
- }
454
- ]
324
+ "2": {
325
+ "name": "punctuation.definition.tag.begin.js"
455
326
  }
456
- ]
457
- },
458
- "module-path-simple-prefix": {
459
- "begin": "(?=\\b[[:upper:]])",
460
- "end": "([\\.])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
327
+ },
461
328
  "endCaptures": {
462
329
  "1": {
463
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
330
+ "name": "punctuation.definition.tag.end.js"
464
331
  }
465
332
  },
466
- "patterns": [
467
- {
468
- "include": "#module-path-simple"
469
- }
470
- ]
333
+ "applyEndPatternLast": true
471
334
  },
472
335
  "module-item-class-type": {
473
- "comment": "FIXME: proper parsing",
474
336
  "begin": "\\b(class)\\b",
475
337
  "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|module|nonrec|open|private|rec|type|val|with)\\b)",
476
- "beginCaptures": {
477
- "1": {
478
- "name": "keyword.other"
479
- }
480
- },
481
- "endCaptures": {
482
- "1": {
483
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
484
- }
485
- },
486
338
  "patterns": [
487
339
  {
488
340
  "begin": "(?:\\G|^)[[:space:]]*\\b(type)\\b",
489
341
  "end": "(?==)",
490
- "beginCaptures": {
491
- "1": {
492
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
493
- }
494
- },
495
342
  "patterns": [
496
343
  {
497
344
  "include": "#module-item-type-bind-name-tyvars"
498
345
  }
499
- ]
346
+ ],
347
+ "beginCaptures": {
348
+ "1": {
349
+ "name": "entity.other.attribute-name.css constant.language constant.numeric"
350
+ }
351
+ }
500
352
  },
501
353
  {
502
354
  "begin": "(=)",
503
355
  "end": "(?=;)",
504
- "beginCaptures": {
505
- "1": {
506
- "name": "keyword.control.less"
507
- }
508
- },
509
356
  "patterns": [
510
357
  {
511
358
  "include": "#attribute"
@@ -519,13 +366,14 @@
519
366
  {
520
367
  "include": "#class-item-method"
521
368
  }
522
- ]
369
+ ],
370
+ "beginCaptures": {
371
+ "1": {
372
+ "name": "keyword.control.less"
373
+ }
374
+ }
523
375
  }
524
- ]
525
- },
526
- "module-item-exception": {
527
- "begin": "\\b(exception)\\b",
528
- "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
376
+ ],
529
377
  "beginCaptures": {
530
378
  "1": {
531
379
  "name": "keyword.other"
@@ -535,26 +383,30 @@
535
383
  "1": {
536
384
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
537
385
  }
538
- },
386
+ }
387
+ },
388
+ "module-item-exception": {
389
+ "begin": "\\b(exception)\\b",
390
+ "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
539
391
  "patterns": [
540
392
  {
541
393
  "include": "#module-item-type-bind-body-item"
542
394
  }
543
- ]
544
- },
545
- "module-item-external": {
546
- "begin": "\\b(external)\\b",
547
- "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
395
+ ],
548
396
  "beginCaptures": {
549
397
  "1": {
550
- "name": "storage.type"
398
+ "name": "keyword.other"
551
399
  }
552
400
  },
553
401
  "endCaptures": {
554
402
  "1": {
555
403
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
556
404
  }
557
- },
405
+ }
406
+ },
407
+ "module-item-external": {
408
+ "begin": "\\b(external)\\b",
409
+ "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
558
410
  "patterns": [
559
411
  {
560
412
  "include": "#module-item-let-value-bind-name-or-pattern"
@@ -565,19 +417,14 @@
565
417
  {
566
418
  "begin": "(=)",
567
419
  "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
568
- "beginCaptures": {
569
- "1": {
570
- "name": "keyword.control.less"
571
- }
572
- },
573
420
  "patterns": [
574
421
  {
575
422
  "include": "#attribute"
576
423
  },
577
424
  {
425
+ "name": "string.double string.regexp",
578
426
  "begin": "\"",
579
427
  "end": "\"",
580
- "name": "string.double string.regexp",
581
428
  "patterns": [
582
429
  {
583
430
  "include": "#value-literal-string-escape"
@@ -598,42 +445,47 @@
598
445
  }
599
446
  ]
600
447
  }
601
- ]
448
+ ],
449
+ "beginCaptures": {
450
+ "1": {
451
+ "name": "keyword.control.less"
452
+ }
453
+ }
602
454
  }
603
- ]
604
- },
605
- "module-item-include": {
606
- "begin": "\\b(include)\\b",
607
- "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val)\\b)",
455
+ ],
608
456
  "beginCaptures": {
609
457
  "1": {
610
- "name": "keyword.control.include"
458
+ "name": "storage.type"
611
459
  }
612
460
  },
613
461
  "endCaptures": {
614
462
  "1": {
615
463
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
616
464
  }
617
- },
465
+ }
466
+ },
467
+ "module-item-include": {
468
+ "begin": "\\b(include)\\b",
469
+ "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val)\\b)",
618
470
  "patterns": [
619
471
  {
620
472
  "include": "#signature-expression"
621
473
  }
622
- ]
623
- },
624
- "module-item-let": {
625
- "begin": "\\b(let)\\b",
626
- "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
474
+ ],
627
475
  "beginCaptures": {
628
476
  "1": {
629
- "name": "storage.type"
477
+ "name": "keyword.control.include"
630
478
  }
631
479
  },
632
480
  "endCaptures": {
633
481
  "1": {
634
482
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
635
483
  }
636
- },
484
+ }
485
+ },
486
+ "module-item-let": {
487
+ "begin": "\\b(let)\\b",
488
+ "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
637
489
  "patterns": [
638
490
  {
639
491
  "include": "#module-item-let-module"
@@ -641,16 +493,21 @@
641
493
  {
642
494
  "include": "#module-item-let-value"
643
495
  }
644
- ]
645
- },
646
- "module-item-let-module": {
647
- "begin": "(?:\\G|^)[[:space:]]*\\b(module)\\b",
648
- "end": "(?=[;}]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|type|val|with)\\b)",
496
+ ],
649
497
  "beginCaptures": {
650
498
  "1": {
651
- "name": "variable.other.class.js variable.interpolation keyword.control storage.type message.error"
499
+ "name": "storage.type"
652
500
  }
653
501
  },
502
+ "endCaptures": {
503
+ "1": {
504
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
505
+ }
506
+ }
507
+ },
508
+ "module-item-let-module": {
509
+ "begin": "(?:\\G|^)[[:space:]]*\\b(module)\\b",
510
+ "end": "(?=[;}]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|type|val|with)\\b)",
654
511
  "patterns": [
655
512
  {
656
513
  "include": "#comment"
@@ -664,44 +521,44 @@
664
521
  {
665
522
  "include": "#module-item-let-module-bind-name-params-type-body"
666
523
  }
667
- ]
524
+ ],
525
+ "beginCaptures": {
526
+ "1": {
527
+ "name": "variable.other.class.js variable.interpolation keyword.control storage.type message.error"
528
+ }
529
+ }
668
530
  },
669
531
  "module-item-let-module-and": {
670
532
  "begin": "\\b(and)\\b",
671
533
  "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
672
- "beginCaptures": {
673
- "1": {
674
- "name": "storage.type"
675
- }
676
- },
677
534
  "patterns": [
678
535
  {
679
536
  "include": "#module-item-let-module-bind-name-params-type-body"
680
537
  }
681
- ]
682
- },
683
- "module-item-let-module-bind-body": {
684
- "begin": "(=>?)",
685
- "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
538
+ ],
686
539
  "beginCaptures": {
687
540
  "1": {
688
- "name": "keyword.control.less"
541
+ "name": "storage.type"
689
542
  }
690
- },
543
+ }
544
+ },
545
+ "module-item-let-module-bind-body": {
546
+ "begin": "(=\u003e?)",
547
+ "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
691
548
  "patterns": [
692
549
  {
693
550
  "include": "#structure-expression"
694
551
  }
695
- ]
552
+ ],
553
+ "beginCaptures": {
554
+ "1": {
555
+ "name": "keyword.control.less"
556
+ }
557
+ }
696
558
  },
697
559
  "module-item-let-module-bind-name-params": {
698
560
  "begin": "\\b([[:upper:]][[:word:]]*)\\b",
699
561
  "end": "(?=[;:}=]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
700
- "beginCaptures": {
701
- "1": {
702
- "name": "support.class entity.name.class"
703
- }
704
- },
705
562
  "patterns": [
706
563
  {
707
564
  "include": "#comment"
@@ -709,7 +566,12 @@
709
566
  {
710
567
  "include": "#module-item-let-module-param"
711
568
  }
712
- ]
569
+ ],
570
+ "beginCaptures": {
571
+ "1": {
572
+ "name": "support.class entity.name.class"
573
+ }
574
+ }
713
575
  },
714
576
  "module-item-let-module-bind-name-params-type-body": {
715
577
  "begin": "(?:\\G|^)",
@@ -732,16 +594,16 @@
732
594
  "module-item-let-module-bind-type": {
733
595
  "begin": "(:)",
734
596
  "end": "(?=[;}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val)\\b)",
735
- "beginCaptures": {
736
- "1": {
737
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
738
- }
739
- },
740
597
  "patterns": [
741
598
  {
742
599
  "include": "#signature-expression"
743
600
  }
744
- ]
601
+ ],
602
+ "beginCaptures": {
603
+ "1": {
604
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
605
+ }
606
+ }
745
607
  },
746
608
  "module-item-let-module-param": {
747
609
  "begin": "(?=\\()",
@@ -758,36 +620,36 @@
758
620
  "include": "#module-name-simple"
759
621
  }
760
622
  ]
761
- },
762
- {
763
- "begin": "(:)",
764
- "end": "(?=\\))",
765
- "beginCaptures": {
766
- "1": {
767
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
768
- }
769
- },
623
+ },
624
+ {
625
+ "begin": "(:)",
626
+ "end": "(?=\\))",
770
627
  "patterns": [
771
628
  {
772
629
  "include": "#signature-expression"
773
630
  }
774
- ]
631
+ ],
632
+ "beginCaptures": {
633
+ "1": {
634
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
635
+ }
636
+ }
775
637
  }
776
638
  ]
777
639
  },
778
640
  "module-item-let-module-rec": {
779
641
  "begin": "(?:\\G|^)[[:space:]]*\\b(rec)\\b",
780
642
  "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
781
- "beginCaptures": {
782
- "1": {
783
- "name": "keyword.control storage.modifier.rec"
784
- }
785
- },
786
643
  "patterns": [
787
644
  {
788
645
  "include": "#module-item-let-module-bind-name-params-type-body"
789
646
  }
790
- ]
647
+ ],
648
+ "beginCaptures": {
649
+ "1": {
650
+ "name": "keyword.control storage.modifier.rec"
651
+ }
652
+ }
791
653
  },
792
654
  "module-item-let-value": {
793
655
  "patterns": [
@@ -805,34 +667,34 @@
805
667
  "module-item-let-value-and": {
806
668
  "begin": "\\b(and)\\b",
807
669
  "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
808
- "beginCaptures": {
809
- "1": {
810
- "name": "storage.type"
811
- }
812
- },
813
670
  "patterns": [
814
671
  {
815
672
  "include": "#module-item-let-value-bind-name-params-type-body"
816
673
  }
817
- ]
818
- },
819
- "module-item-let-value-bind-body": {
820
- "begin": "(=>?)",
821
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
674
+ ],
822
675
  "beginCaptures": {
823
676
  "1": {
824
- "name": "keyword.control.less"
677
+ "name": "storage.type"
825
678
  }
826
- },
679
+ }
680
+ },
681
+ "module-item-let-value-bind-body": {
682
+ "begin": "(=\u003e?)",
683
+ "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
827
684
  "patterns": [
828
685
  {
829
686
  "include": "#value-expression"
830
687
  }
831
- ]
688
+ ],
689
+ "beginCaptures": {
690
+ "1": {
691
+ "name": "keyword.control.less"
692
+ }
693
+ }
832
694
  },
833
695
  "module-item-let-value-bind-name-or-pattern": {
834
- "begin": "(?<=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)[[:space:]]*",
835
- "end": "(?<=[^[:space:]])|(?=[[:space:]]|[;:}=]|\\b(and|as|class|constraint|exception|external|for|include|inherit|let|method|module|nonrec|open|private|rec|switch|try|type|val|while|with)\\b)",
696
+ "begin": "(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)[[:space:]]*",
697
+ "end": "(?\u003c=[^[:space:]])|(?=[[:space:]]|[;:}=]|\\b(and|as|class|constraint|exception|external|for|include|inherit|let|method|module|nonrec|open|private|rec|switch|try|type|val|while|with)\\b)",
836
698
  "patterns": [
837
699
  {
838
700
  "include": "#comment"
@@ -857,25 +719,24 @@
857
719
  ]
858
720
  },
859
721
  "module-item-let-value-bind-name-params-type-body": {
860
- "begin": "(?<=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)",
722
+ "begin": "(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)",
861
723
  "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
862
724
  "patterns": [
863
725
  {
864
- "comment": "FIXME; hack for punned arguments",
865
726
  "begin": "(::)",
866
- "end": "(?<=[[:space:]])",
867
- "beginCaptures": {
868
- "1": {
869
- "name": "keyword.control"
870
- }
871
- },
727
+ "end": "(?\u003c=[[:space:]])",
872
728
  "patterns": [
873
729
  {
874
730
  "include": "#pattern"
875
731
  },
876
732
  {
877
733
  "begin": "(=)",
878
- "end": "(\\?)|(?<=[^[:space:]=][[:space:]])(?=[[:space:]]*+[^\\.])",
734
+ "end": "(\\?)|(?\u003c=[^[:space:]=][[:space:]])(?=[[:space:]]*+[^\\.])",
735
+ "patterns": [
736
+ {
737
+ "include": "#value-expression-atomic-with-paths"
738
+ }
739
+ ],
879
740
  "beginCaptures": {
880
741
  "1": {
881
742
  "name": "markup.inserted keyword.control.less message.error"
@@ -885,14 +746,14 @@
885
746
  "1": {
886
747
  "name": "storage.type"
887
748
  }
888
- },
889
- "patterns": [
890
- {
891
- "include": "#value-expression-atomic-with-paths"
892
- }
893
- ]
749
+ }
894
750
  }
895
- ]
751
+ ],
752
+ "beginCaptures": {
753
+ "1": {
754
+ "name": "keyword.control"
755
+ }
756
+ }
896
757
  },
897
758
  {
898
759
  "include": "#module-item-let-value-bind-name-or-pattern"
@@ -919,18 +780,18 @@
919
780
  "include": "#module-item-let-value-param"
920
781
  },
921
782
  {
922
- "begin": "(?<![:])(:)[[:space:]]*(?![[:space:]]*[:\\)])",
783
+ "begin": "(?\u003c![:])(:)[[:space:]]*(?![[:space:]]*[:\\)])",
923
784
  "end": "(?=[;}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)",
924
- "beginCaptures": {
925
- "1": {
926
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
927
- }
928
- },
929
785
  "patterns": [
930
786
  {
931
787
  "include": "#type-expression-atomic"
932
788
  }
933
- ]
789
+ ],
790
+ "beginCaptures": {
791
+ "1": {
792
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
793
+ }
794
+ }
934
795
  }
935
796
  ]
936
797
  },
@@ -953,7 +814,7 @@
953
814
  ]
954
815
  },
955
816
  "module-item-let-value-bind-pattern": {
956
- "begin": "(?<=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)",
817
+ "begin": "(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)",
957
818
  "end": "(?=[;:}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
958
819
  "patterns": [
959
820
  {
@@ -968,18 +829,17 @@
968
829
  ]
969
830
  },
970
831
  "module-item-let-value-bind-type": {
971
- "comment": "FIXME: lookahead",
972
- "begin": "(?<![:])(:)(?![[:space:]]*[:\\)])",
973
- "end": "(?==[^>]|[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)",
974
- "beginCaptures": {
975
- "1": {
976
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
977
- }
978
- },
832
+ "begin": "(?\u003c![:])(:)(?![[:space:]]*[:\\)])",
833
+ "end": "(?==[^\u003e]|[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)",
979
834
  "patterns": [
980
835
  {
981
836
  "begin": "\\b(type)\\b",
982
837
  "end": "([\\.])",
838
+ "patterns": [
839
+ {
840
+ "include": "#pattern-variable"
841
+ }
842
+ ],
983
843
  "beginCaptures": {
984
844
  "1": {
985
845
  "name": "entity.other.attribute-name.css constant.language constant.numeric"
@@ -989,17 +849,17 @@
989
849
  "1": {
990
850
  "name": "entity.name.function"
991
851
  }
992
- },
993
- "patterns": [
994
- {
995
- "include": "#pattern-variable"
996
- }
997
- ]
852
+ }
998
853
  },
999
854
  {
1000
855
  "include": "#type-expression"
1001
856
  }
1002
- ]
857
+ ],
858
+ "beginCaptures": {
859
+ "1": {
860
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
861
+ }
862
+ }
1003
863
  },
1004
864
  "module-item-let-value-param": {
1005
865
  "patterns": [
@@ -1021,22 +881,19 @@
1021
881
  "patterns": [
1022
882
  {
1023
883
  "begin": "(\\b[[:lower:]][[:word:]]*\\b)?[[:space:]]*(::)",
1024
- "end": "(?<=[[:space:]])",
1025
- "beginCaptures": {
1026
- "1": {
1027
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
1028
- },
1029
- "2": {
1030
- "name": "keyword.control"
1031
- }
1032
- },
884
+ "end": "(?\u003c=[[:space:]])",
1033
885
  "patterns": [
1034
886
  {
1035
887
  "include": "#pattern"
1036
888
  },
1037
889
  {
1038
890
  "begin": "(=)",
1039
- "end": "(\\?)|(?<=[^[:space:]=][[:space:]])(?=[[:space:]]*+[^\\.])",
891
+ "end": "(\\?)|(?\u003c=[^[:space:]=][[:space:]])(?=[[:space:]]*+[^\\.])",
892
+ "patterns": [
893
+ {
894
+ "include": "#value-expression-atomic-with-paths"
895
+ }
896
+ ],
1040
897
  "beginCaptures": {
1041
898
  "1": {
1042
899
  "name": "markup.inserted keyword.control.less message.error"
@@ -1046,88 +903,78 @@
1046
903
  "1": {
1047
904
  "name": "storage.type"
1048
905
  }
1049
- },
1050
- "patterns": [
1051
- {
1052
- "include": "#value-expression-atomic-with-paths"
1053
- }
1054
- ]
906
+ }
1055
907
  }
1056
- ]
908
+ ],
909
+ "beginCaptures": {
910
+ "1": {
911
+ "name": "markup.inserted constant.language support.property-value entity.name.filename"
912
+ },
913
+ "2": {
914
+ "name": "keyword.control"
915
+ }
916
+ }
1057
917
  }
1058
918
  ]
1059
919
  },
1060
920
  "module-item-let-value-param-module": {
1061
- "comment": "FIXME: merge with pattern-parens",
1062
921
  "begin": "\\([[:space:]]*(?=\\b(module)\\b)",
1063
922
  "end": "\\)",
1064
923
  "patterns": [
1065
924
  {
1066
925
  "begin": "\\b(module)\\b",
1067
926
  "end": "(?=\\))",
927
+ "patterns": [
928
+ {
929
+ "name": "support.class entity.name.class",
930
+ "match": "\\b[[:upper:]][[:word:]]*\\b"
931
+ }
932
+ ],
1068
933
  "beginCaptures": {
1069
934
  "1": {
1070
935
  "name": "keyword.other message.error"
1071
936
  }
1072
- },
1073
- "patterns": [
1074
- {
1075
- "match": "\\b[[:upper:]][[:word:]]*\\b",
1076
- "name": "support.class entity.name.class"
1077
- }
1078
- ]
937
+ }
1079
938
  }
1080
939
  ]
1081
940
  },
1082
941
  "module-item-let-value-param-type": {
1083
- "comment": "FIXME: merge with pattern-parens",
1084
942
  "begin": "\\((?=\\b(type)\\b)",
1085
943
  "end": "\\)",
1086
944
  "patterns": [
1087
945
  {
1088
946
  "begin": "\\b(type)\\b",
1089
947
  "end": "(?=\\))",
1090
- "beginCaptures": {
1091
- "1": {
1092
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1093
- }
1094
- },
1095
948
  "patterns": [
1096
949
  {
1097
950
  "include": "#pattern-variable"
1098
951
  }
1099
- ]
952
+ ],
953
+ "beginCaptures": {
954
+ "1": {
955
+ "name": "entity.other.attribute-name.css constant.language constant.numeric"
956
+ }
957
+ }
1100
958
  }
1101
959
  ]
1102
960
  },
1103
961
  "module-item-let-value-rec": {
1104
962
  "begin": "(?:\\G|^)[[:space:]]*\\b(rec)\\b",
1105
963
  "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1106
- "beginCaptures": {
1107
- "1": {
1108
- "name": "keyword.control storage.modifier message.error"
1109
- }
1110
- },
1111
964
  "patterns": [
1112
965
  {
1113
966
  "include": "#module-item-let-value-bind-name-params-type-body"
1114
967
  }
1115
- ]
968
+ ],
969
+ "beginCaptures": {
970
+ "1": {
971
+ "name": "keyword.control storage.modifier message.error"
972
+ }
973
+ }
1116
974
  },
1117
975
  "module-item-module": {
1118
- "comment": "NOTE: this is to support the let-module case without the let prefix",
1119
976
  "begin": "\\b(module)\\b[[:space:]]*(?!\\b(type)\\b|$)",
1120
977
  "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1121
- "beginCaptures": {
1122
- "1": {
1123
- "name": "storage.type message.error"
1124
- }
1125
- },
1126
- "endCaptures": {
1127
- "1": {
1128
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1129
- }
1130
- },
1131
978
  "patterns": [
1132
979
  {
1133
980
  "include": "#module-item-let-module-and"
@@ -1138,30 +985,25 @@
1138
985
  {
1139
986
  "include": "#module-item-let-module-bind-name-params-type-body"
1140
987
  }
1141
- ]
1142
- },
1143
- "module-item-module-type": {
1144
- "begin": "\\b(module)\\b[[:space:]]*(?=\\b(type)\\b|$)",
1145
- "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)",
988
+ ],
1146
989
  "beginCaptures": {
1147
990
  "1": {
1148
- "name": "keyword.control message.error"
991
+ "name": "storage.type message.error"
1149
992
  }
1150
993
  },
1151
994
  "endCaptures": {
1152
995
  "1": {
1153
996
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1154
997
  }
1155
- },
998
+ }
999
+ },
1000
+ "module-item-module-type": {
1001
+ "begin": "\\b(module)\\b[[:space:]]*(?=\\b(type)\\b|$)",
1002
+ "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)",
1156
1003
  "patterns": [
1157
1004
  {
1158
1005
  "begin": "(?:\\G|^)[[:space:]]*\\b(type)\\b",
1159
1006
  "end": "(?==)",
1160
- "beginCaptures": {
1161
- "1": {
1162
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1163
- }
1164
- },
1165
1007
  "patterns": [
1166
1008
  {
1167
1009
  "include": "#comment"
@@ -1174,16 +1016,16 @@
1174
1016
  }
1175
1017
  }
1176
1018
  }
1177
- ]
1019
+ ],
1020
+ "beginCaptures": {
1021
+ "1": {
1022
+ "name": "entity.other.attribute-name.css constant.language constant.numeric"
1023
+ }
1024
+ }
1178
1025
  },
1179
1026
  {
1180
1027
  "begin": "(=)",
1181
1028
  "end": "(?=;)",
1182
- "beginCaptures": {
1183
- "1": {
1184
- "name": "keyword.control.less"
1185
- }
1186
- },
1187
1029
  "patterns": [
1188
1030
  {
1189
1031
  "include": "#comment"
@@ -1191,23 +1033,28 @@
1191
1033
  {
1192
1034
  "include": "#signature-expression"
1193
1035
  }
1194
- ]
1036
+ ],
1037
+ "beginCaptures": {
1038
+ "1": {
1039
+ "name": "keyword.control.less"
1040
+ }
1041
+ }
1195
1042
  }
1196
- ]
1197
- },
1198
- "module-item-open": {
1199
- "begin": "\\b(open)\\b",
1200
- "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1043
+ ],
1201
1044
  "beginCaptures": {
1202
1045
  "1": {
1203
- "name": "keyword.control.open"
1046
+ "name": "keyword.control message.error"
1204
1047
  }
1205
1048
  },
1206
1049
  "endCaptures": {
1207
1050
  "1": {
1208
1051
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1209
1052
  }
1210
- },
1053
+ }
1054
+ },
1055
+ "module-item-open": {
1056
+ "begin": "\\b(open)\\b",
1057
+ "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1211
1058
  "patterns": [
1212
1059
  {
1213
1060
  "include": "#comment"
@@ -1215,22 +1062,21 @@
1215
1062
  {
1216
1063
  "include": "#module-path-simple"
1217
1064
  }
1218
- ]
1219
- },
1220
- "module-item-type": {
1221
- "comment": "FIXME: the semi-colon is optional so we can re-use this for hover, which does not print the trailing ;",
1222
- "begin": "\\b(type)\\b",
1223
- "end": "(;)|(?=[\\)}]|\\b(class|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
1065
+ ],
1224
1066
  "beginCaptures": {
1225
1067
  "1": {
1226
- "name": "keyword.other"
1068
+ "name": "keyword.control.open"
1227
1069
  }
1228
1070
  },
1229
1071
  "endCaptures": {
1230
1072
  "1": {
1231
1073
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1232
1074
  }
1233
- },
1075
+ }
1076
+ },
1077
+ "module-item-type": {
1078
+ "begin": "\\b(type)\\b",
1079
+ "end": "(;)|(?=[\\)}]|\\b(class|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
1234
1080
  "patterns": [
1235
1081
  {
1236
1082
  "include": "#module-item-type-and"
@@ -1241,12 +1087,26 @@
1241
1087
  {
1242
1088
  "include": "#module-item-type-bind"
1243
1089
  }
1244
- ]
1090
+ ],
1091
+ "beginCaptures": {
1092
+ "1": {
1093
+ "name": "keyword.other"
1094
+ }
1095
+ },
1096
+ "endCaptures": {
1097
+ "1": {
1098
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1099
+ }
1100
+ }
1245
1101
  },
1246
1102
  "module-item-type-and": {
1247
- "comment": "FIXME: the optional `type` is for module constraints",
1248
1103
  "begin": "\\b(and)\\b([[:space:]]*type)?",
1249
1104
  "end": "(?=[;\\)}]|\\b(class|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
1105
+ "patterns": [
1106
+ {
1107
+ "include": "#module-item-type-bind-name-tyvars-body"
1108
+ }
1109
+ ],
1250
1110
  "beginCaptures": {
1251
1111
  "1": {
1252
1112
  "name": "keyword.other"
@@ -1254,15 +1114,9 @@
1254
1114
  "2": {
1255
1115
  "name": "entity.other.attribute-name.css constant.language constant.numeric"
1256
1116
  }
1257
- },
1258
- "patterns": [
1259
- {
1260
- "include": "#module-item-type-bind-name-tyvars-body"
1261
- }
1262
- ]
1117
+ }
1263
1118
  },
1264
1119
  "module-item-type-bind": {
1265
- "comment": "FIXME: only allow module paths before type variables",
1266
1120
  "patterns": [
1267
1121
  {
1268
1122
  "include": "#module-item-type-bind-nonrec"
@@ -1273,24 +1127,23 @@
1273
1127
  ]
1274
1128
  },
1275
1129
  "module-item-type-bind-body": {
1276
- "comment": "FIXME: parsing",
1277
1130
  "begin": "(\\+?=)",
1278
1131
  "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|rec|type|val|with)\\b)",
1279
- "beginCaptures": {
1280
- "1": {
1281
- "name": "keyword.control.less"
1282
- }
1283
- },
1284
1132
  "patterns": [
1285
1133
  {
1286
1134
  "include": "#module-item-type-bind-body-item"
1287
1135
  }
1288
- ]
1136
+ ],
1137
+ "beginCaptures": {
1138
+ "1": {
1139
+ "name": "keyword.control.less"
1140
+ }
1141
+ }
1289
1142
  },
1290
1143
  "module-item-type-bind-body-item": {
1291
1144
  "patterns": [
1292
1145
  {
1293
- "match": "(=)(?!>)|\\b(private)\\b",
1146
+ "match": "(=)(?!\u003e)|\\b(private)\\b",
1294
1147
  "captures": {
1295
1148
  "1": {
1296
1149
  "name": "keyword.control.less"
@@ -1301,7 +1154,6 @@
1301
1154
  }
1302
1155
  },
1303
1156
  {
1304
- "comment": "FIXME: specialized version of variant rule that also scans for (",
1305
1157
  "match": "\\b([[:upper:]][[:word:]]*)\\b(?![[:space:]]*[\\.\\(])",
1306
1158
  "captures": {
1307
1159
  "1": {
@@ -1319,13 +1171,8 @@
1319
1171
  }
1320
1172
  },
1321
1173
  {
1322
- "begin": "(\\|)(?![#\\-:!?.@*/&%^+<=>|~$\\\\])[[:space:]]*",
1323
- "end": "(?=[;\\)}]|\\|(?![#\\-:!?.@*/&%^+<=>|~$\\\\])|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1324
- "beginCaptures": {
1325
- "1": {
1326
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1327
- }
1328
- },
1174
+ "begin": "(\\|)(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])[[:space:]]*",
1175
+ "end": "(?=[;\\)}]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1329
1176
  "patterns": [
1330
1177
  {
1331
1178
  "include": "#value-expression-constructor"
@@ -1344,11 +1191,15 @@
1344
1191
  {
1345
1192
  "include": "#type-expression"
1346
1193
  }
1347
- ]
1194
+ ],
1195
+ "beginCaptures": {
1196
+ "1": {
1197
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1198
+ }
1199
+ }
1348
1200
  },
1349
1201
  {
1350
- "comment": "FIXME: remove this once the pretty printer no longer outputs 'of'",
1351
- "match": "(:)|(\\|(?![#\\-:!?.@*/&%^+<=>|~$\\\\]))|\\b(of)\\b",
1202
+ "match": "(:)|(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|\\b(of)\\b",
1352
1203
  "captures": {
1353
1204
  "1": {
1354
1205
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
@@ -1367,13 +1218,8 @@
1367
1218
  ]
1368
1219
  },
1369
1220
  "module-item-type-bind-name-tyvars": {
1370
- "begin": "(?<=\\G|^|\\.)[[:space:]]*\\b([[:lower:]][[:word:]]*)\\b",
1221
+ "begin": "(?\u003c=\\G|^|\\.)[[:space:]]*\\b([[:lower:]][[:word:]]*)\\b",
1371
1222
  "end": "(?=\\+?=|[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1372
- "beginCaptures": {
1373
- "1": {
1374
- "name": "entity.name.function"
1375
- }
1376
- },
1377
1223
  "patterns": [
1378
1224
  {
1379
1225
  "include": "#comment"
@@ -1382,11 +1228,10 @@
1382
1228
  "include": "#attribute"
1383
1229
  },
1384
1230
  {
1385
- "match": "_",
1386
- "name": "comment"
1231
+ "name": "comment",
1232
+ "match": "_"
1387
1233
  },
1388
1234
  {
1389
- "comment": "FIXME: add separate type-variable rule",
1390
1235
  "match": "([+\\-])?(?:(_)|(')([[:lower:]][[:word:]]*)\\b)(?!\\.[[:upper:]])",
1391
1236
  "captures": {
1392
1237
  "1": {
@@ -1403,7 +1248,12 @@
1403
1248
  }
1404
1249
  }
1405
1250
  }
1406
- ]
1251
+ ],
1252
+ "beginCaptures": {
1253
+ "1": {
1254
+ "name": "entity.name.function"
1255
+ }
1256
+ }
1407
1257
  },
1408
1258
  "module-item-type-bind-name-tyvars-body": {
1409
1259
  "begin": "(?=(\\G|^)[[:space:]]*\\b[[:alpha:]])",
@@ -1423,29 +1273,22 @@
1423
1273
  "module-item-type-bind-nonrec": {
1424
1274
  "begin": "(?:\\G|^)[[:space:]]*\\b(nonrec)\\b",
1425
1275
  "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1426
- "beginCaptures": {
1427
- "1": {
1428
- "name": "keyword.control storage.modifier message.error"
1429
- }
1430
- },
1431
1276
  "patterns": [
1432
1277
  {
1433
1278
  "include": "#module-item-type-bind-name-tyvars-body"
1434
1279
  }
1435
- ]
1280
+ ],
1281
+ "beginCaptures": {
1282
+ "1": {
1283
+ "name": "keyword.control storage.modifier message.error"
1284
+ }
1285
+ }
1436
1286
  },
1437
1287
  "module-item-type-constraint": {
1438
- "comment": "FIXME: proper parsing",
1439
1288
  "begin": "\\b(constraint)\\b",
1440
1289
  "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1441
- "beginCaptures": {
1442
- "1": {
1443
- "name": "variable.other.class.js variable.interpolation storage.modifier message.error"
1444
- }
1445
- },
1446
1290
  "patterns": [
1447
1291
  {
1448
- "comment": "FIXME: add separate type-variable rule",
1449
1292
  "match": "([+\\-])?(')([_[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])",
1450
1293
  "captures": {
1451
1294
  "1": {
@@ -1460,28 +1303,152 @@
1460
1303
  }
1461
1304
  },
1462
1305
  {
1463
- "match": "=",
1464
- "name": "keyword.control.less"
1306
+ "name": "keyword.control.less",
1307
+ "match": "="
1465
1308
  },
1466
1309
  {
1467
1310
  "include": "#type-expression"
1468
1311
  }
1312
+ ],
1313
+ "beginCaptures": {
1314
+ "1": {
1315
+ "name": "variable.other.class.js variable.interpolation storage.modifier message.error"
1316
+ }
1317
+ }
1318
+ },
1319
+ "module-name-extended": {
1320
+ "patterns": [
1321
+ {
1322
+ "include": "#module-name-simple"
1323
+ },
1324
+ {
1325
+ "begin": "([\\(])",
1326
+ "end": "([\\)])",
1327
+ "patterns": [
1328
+ {
1329
+ "include": "#module-path-extended"
1330
+ }
1331
+ ],
1332
+ "captures": {
1333
+ "1": {
1334
+ "name": "entity.other.attribute-name.css constant.language constant.numeric"
1335
+ }
1336
+ }
1337
+ }
1469
1338
  ]
1470
1339
  },
1471
- "object-item": {
1472
- "begin": "\\G|(;)",
1473
- "end": "(?=[;}]|\\b(class|constraint|exception|external|include|let|module|nonrec|open|private|type|val|with)\\b)",
1474
- "beginCaptures": {
1340
+ "module-name-simple": {
1341
+ "name": "support.class entity.name.class",
1342
+ "match": "\\b[[:upper:]][[:word:]]*\\b"
1343
+ },
1344
+ "module-path-extended": {
1345
+ "patterns": [
1346
+ {
1347
+ "include": "#module-name-extended"
1348
+ },
1349
+ {
1350
+ "include": "#comment"
1351
+ },
1352
+ {
1353
+ "begin": "([\\.])",
1354
+ "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
1355
+ "patterns": [
1356
+ {
1357
+ "begin": "(?\u003c=[\\.])",
1358
+ "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
1359
+ "patterns": [
1360
+ {
1361
+ "include": "#comment"
1362
+ },
1363
+ {
1364
+ "include": "#module-name-extended"
1365
+ }
1366
+ ]
1367
+ }
1368
+ ],
1369
+ "beginCaptures": {
1370
+ "1": {
1371
+ "name": "keyword.control.less"
1372
+ }
1373
+ }
1374
+ }
1375
+ ]
1376
+ },
1377
+ "module-path-extended-prefix": {
1378
+ "begin": "(?=\\b[[:upper:]])",
1379
+ "end": "([\\.])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1380
+ "patterns": [
1381
+ {
1382
+ "include": "#module-path-extended"
1383
+ }
1384
+ ],
1385
+ "endCaptures": {
1475
1386
  "1": {
1476
1387
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1477
1388
  }
1478
- },
1389
+ }
1390
+ },
1391
+ "module-path-simple": {
1479
1392
  "patterns": [
1480
1393
  {
1481
- "include": "#class-item-method"
1394
+ "include": "#module-name-simple"
1395
+ },
1396
+ {
1397
+ "include": "#comment"
1398
+ },
1399
+ {
1400
+ "begin": "([\\.])",
1401
+ "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
1402
+ "patterns": [
1403
+ {
1404
+ "begin": "(?\u003c=[\\.])",
1405
+ "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
1406
+ "patterns": [
1407
+ {
1408
+ "include": "#comment"
1409
+ },
1410
+ {
1411
+ "include": "#module-name-simple"
1412
+ }
1413
+ ]
1414
+ }
1415
+ ],
1416
+ "beginCaptures": {
1417
+ "1": {
1418
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1419
+ }
1420
+ }
1482
1421
  }
1483
1422
  ]
1484
1423
  },
1424
+ "module-path-simple-prefix": {
1425
+ "begin": "(?=\\b[[:upper:]])",
1426
+ "end": "([\\.])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1427
+ "patterns": [
1428
+ {
1429
+ "include": "#module-path-simple"
1430
+ }
1431
+ ],
1432
+ "endCaptures": {
1433
+ "1": {
1434
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1435
+ }
1436
+ }
1437
+ },
1438
+ "object-item": {
1439
+ "begin": "\\G|(;)",
1440
+ "end": "(?=[;}]|\\b(class|constraint|exception|external|include|let|module|nonrec|open|private|type|val|with)\\b)",
1441
+ "patterns": [
1442
+ {
1443
+ "include": "#class-item-method"
1444
+ }
1445
+ ],
1446
+ "beginCaptures": {
1447
+ "1": {
1448
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1449
+ }
1450
+ }
1451
+ },
1485
1452
  "operator": {
1486
1453
  "patterns": [
1487
1454
  {
@@ -1495,8 +1462,8 @@
1495
1462
  "operator-infix": {
1496
1463
  "patterns": [
1497
1464
  {
1498
- "match": ";",
1499
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1465
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error",
1466
+ "match": ";"
1500
1467
  },
1501
1468
  {
1502
1469
  "include": "#operator-infix-assign"
@@ -1507,25 +1474,21 @@
1507
1474
  {
1508
1475
  "include": "#operator-infix-custom"
1509
1476
  },
1510
- {
1511
- "comment": "#operator-infix-custom-hash"
1512
- }
1477
+ {}
1513
1478
  ]
1514
1479
  },
1515
1480
  "operator-infix-assign": {
1516
- "match": "(?<![#\\-:!?.@*/&%^+<=>|~$\\\\])(=)(?![#\\-:!?.@*/&%^+<=>|~$\\\\])",
1517
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control.less message.error"
1481
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control.less message.error",
1482
+ "match": "(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])(=)(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])"
1518
1483
  },
1519
1484
  "operator-infix-builtin": {
1520
- "match": ":=",
1521
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control.less message.error"
1485
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control.less message.error",
1486
+ "match": ":="
1522
1487
  },
1523
1488
  "operator-infix-custom": {
1524
- "match": "(?:(?<![#\\-:!?.@*/&%^+<=>|~$\\\\])((<>))(?![#\\-:!?.@*/&%^+<=>|~$\\\\]))|([#\\-@*/&%^+<=>$\\\\][#\\-:!?.@*/&%^+<=>|~$\\\\]*|[|][#\\-:!?.@*/&%^+<=>|~$\\\\]+)",
1489
+ "match": "(?:(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])((\u003c\u003e))(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|([#\\-@*/\u0026%^+\u003c=\u003e$\\\\][#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]*|[|][#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]+)",
1525
1490
  "captures": {
1526
- "1": {
1527
- "comment": "meta.separator"
1528
- },
1491
+ "1": {},
1529
1492
  "2": {
1530
1493
  "name": "punctuation.definition.tag.begin.js"
1531
1494
  },
@@ -1535,8 +1498,8 @@
1535
1498
  }
1536
1499
  },
1537
1500
  "operator-infix-custom-hash": {
1538
- "match": "#[\\-:!?.@*/&%^+<=>|~$]+",
1539
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1501
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error",
1502
+ "match": "#[\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]+"
1540
1503
  },
1541
1504
  "operator-prefix": {
1542
1505
  "patterns": [
@@ -1549,12 +1512,12 @@
1549
1512
  ]
1550
1513
  },
1551
1514
  "operator-prefix-bang": {
1552
- "match": "![\\-:!?.@*/&%^+<=>|~$]*",
1553
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1515
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error",
1516
+ "match": "![\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]*"
1554
1517
  },
1555
1518
  "operator-prefix-label-token": {
1556
- "match": "[?~][\\-:!?.@*/&%^+<=>|~$]+",
1557
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1519
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error",
1520
+ "match": "[?~][\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]+"
1558
1521
  },
1559
1522
  "pattern": {
1560
1523
  "patterns": [
@@ -1568,7 +1531,7 @@
1568
1531
  "include": "#pattern-atomic"
1569
1532
  },
1570
1533
  {
1571
- "match": "[[:space:]]*+(?:(\\|(?![#\\-:!?.@*/&%^+<=>|~$\\\\]))|\\b(as)\\b|(\\.\\.\\.?))[[:space:]]*+",
1534
+ "match": "[[:space:]]*+(?:(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|\\b(as)\\b|(\\.\\.\\.?))[[:space:]]*+",
1572
1535
  "captures": {
1573
1536
  "1": {
1574
1537
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
@@ -1586,8 +1549,8 @@
1586
1549
  "pattern-atomic": {
1587
1550
  "patterns": [
1588
1551
  {
1589
- "match": "\\b(exception)\\b",
1590
- "name": "keyword.other"
1552
+ "name": "keyword.other",
1553
+ "match": "\\b(exception)\\b"
1591
1554
  },
1592
1555
  {
1593
1556
  "include": "#value-expression-literal"
@@ -1611,63 +1574,141 @@
1611
1574
  },
1612
1575
  "pattern-guard": {
1613
1576
  "begin": "\\b(when)\\b",
1614
- "end": "(?==>)",
1577
+ "end": "(?==\u003e)",
1578
+ "patterns": [
1579
+ {
1580
+ "include": "#value-expression"
1581
+ }
1582
+ ],
1615
1583
  "beginCaptures": {
1616
1584
  "1": {
1617
1585
  "name": "keyword.other"
1618
1586
  }
1587
+ }
1588
+ },
1589
+ "pattern-list-or-array": {
1590
+ "begin": "(\\[\\|?)(?![@%])",
1591
+ "end": "(\\|?\\])",
1592
+ "patterns": [
1593
+ {
1594
+ "include": "#value-expression-literal-list-or-array-separator"
1595
+ },
1596
+ {
1597
+ "include": "#pattern"
1598
+ }
1599
+ ],
1600
+ "beginCaptures": {
1601
+ "1": {
1602
+ "name": "entity.other.attribute-name.css constant.language constant.numeric"
1603
+ }
1619
1604
  },
1605
+ "endCaptures": {
1606
+ "1": {
1607
+ "name": "entity.other.attribute-name.css constant.language constant.numeric"
1608
+ }
1609
+ }
1610
+ },
1611
+ "pattern-parens": {
1612
+ "begin": "(?=\\()",
1613
+ "end": "\\)|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1620
1614
  "patterns": [
1621
1615
  {
1622
- "include": "#value-expression"
1616
+ "include": "#pattern-parens-lhs"
1617
+ },
1618
+ {
1619
+ "include": "#type-annotation-rhs"
1623
1620
  }
1624
1621
  ]
1625
1622
  },
1626
- "pattern-list-or-array": {
1627
- "begin": "(\\[\\|?)(?![@%])",
1628
- "end": "(\\|?\\])",
1623
+ "pattern-parens-lhs": {
1624
+ "begin": "\\(|(,)",
1625
+ "end": "(?=(?:[,:\\)]))|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1626
+ "patterns": [
1627
+ {
1628
+ "include": "#pattern"
1629
+ }
1630
+ ],
1629
1631
  "beginCaptures": {
1630
1632
  "1": {
1631
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1633
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1634
+ }
1635
+ }
1636
+ },
1637
+ "pattern-record": {
1638
+ "begin": "{",
1639
+ "end": "}",
1640
+ "patterns": [
1641
+ {
1642
+ "include": "#comment"
1643
+ },
1644
+ {
1645
+ "include": "#pattern-record-item"
1646
+ }
1647
+ ]
1648
+ },
1649
+ "pattern-record-field": {
1650
+ "begin": "\\b([_][[:word:]]*)\\b|\\b([[:lower:]][[:word:]]*)\\b",
1651
+ "end": "(,)|(?=})",
1652
+ "patterns": [
1653
+ {
1654
+ "include": "#comment"
1655
+ },
1656
+ {
1657
+ "begin": "\\G(:)",
1658
+ "end": "(?=[,}])",
1659
+ "patterns": [
1660
+ {
1661
+ "include": "#pattern"
1662
+ }
1663
+ ],
1664
+ "beginCaptures": {
1665
+ "1": {
1666
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1667
+ }
1668
+ }
1669
+ }
1670
+ ],
1671
+ "beginCaptures": {
1672
+ "1": {
1673
+ "name": "comment"
1674
+ },
1675
+ "2": {
1676
+ "name": "markup.inserted constant.language support.property-value entity.name.filename"
1632
1677
  }
1633
1678
  },
1634
1679
  "endCaptures": {
1635
1680
  "1": {
1636
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1681
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1637
1682
  }
1638
- },
1683
+ }
1684
+ },
1685
+ "pattern-record-item": {
1639
1686
  "patterns": [
1640
1687
  {
1641
- "include": "#value-expression-literal-list-or-array-separator"
1688
+ "include": "#module-path-simple-prefix"
1642
1689
  },
1643
1690
  {
1644
- "include": "#pattern"
1691
+ "include": "#pattern-record-field"
1645
1692
  }
1646
1693
  ]
1647
1694
  },
1648
- "pattern-parens": {
1649
- "begin": "(?=\\()",
1650
- "end": "\\)|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1695
+ "pattern-variable": {
1651
1696
  "patterns": [
1652
1697
  {
1653
- "include": "#pattern-parens-lhs"
1698
+ "match": "\\b(_(?:[[:lower:]][[:word:]]*)?)\\b(?!\\.[[:upper:]])",
1699
+ "captures": {
1700
+ "1": {
1701
+ "name": "comment"
1702
+ }
1703
+ }
1654
1704
  },
1655
1705
  {
1656
- "include": "#type-annotation-rhs"
1657
- }
1658
- ]
1659
- },
1660
- "pattern-parens-lhs": {
1661
- "begin": "\\(|(,)",
1662
- "end": "(?=(?:[,:\\)]))|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1663
- "beginCaptures": {
1664
- "1": {
1665
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1666
- }
1667
- },
1668
- "patterns": [
1669
- {
1670
- "include": "#pattern"
1706
+ "match": "\\b([[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])",
1707
+ "captures": {
1708
+ "1": {
1709
+ "name": "variable.language string.other.link"
1710
+ }
1711
+ }
1671
1712
  }
1672
1713
  ]
1673
1714
  },
@@ -1686,22 +1727,6 @@
1686
1727
  "record-path-suffix": {
1687
1728
  "begin": "(\\.)",
1688
1729
  "end": "(\\))|\\b([[:upper:]][[:word:]]*)\\b|\\b([[:lower:]][[:word:]]*)\\b|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|with)\\b)",
1689
- "beginCaptures": {
1690
- "1": {
1691
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1692
- }
1693
- },
1694
- "endCaptures": {
1695
- "1": {
1696
- "name": "keyword.control"
1697
- },
1698
- "2": {
1699
- "name": "support.class entity.name.class"
1700
- },
1701
- "3": {
1702
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
1703
- }
1704
- },
1705
1730
  "patterns": [
1706
1731
  {
1707
1732
  "include": "#comment"
@@ -1709,11 +1734,6 @@
1709
1734
  {
1710
1735
  "begin": "([\\(])",
1711
1736
  "end": "(?=[\\)])",
1712
- "beginCaptures": {
1713
- "1": {
1714
- "name": "keyword.control"
1715
- }
1716
- },
1717
1737
  "patterns": [
1718
1738
  {
1719
1739
  "include": "#comment"
@@ -1730,8 +1750,8 @@
1730
1750
  }
1731
1751
  },
1732
1752
  {
1733
- "match": "([\\.])",
1734
- "name": "keyword.control.less"
1753
+ "name": "keyword.control.less",
1754
+ "match": "([\\.])"
1735
1755
  },
1736
1756
  {
1737
1757
  "match": "\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*",
@@ -1744,98 +1764,40 @@
1744
1764
  {
1745
1765
  "include": "#value-expression"
1746
1766
  }
1747
- ]
1748
- }
1749
- ]
1750
- },
1751
- "pattern-record": {
1752
- "begin": "{",
1753
- "end": "}",
1754
- "patterns": [
1755
- {
1756
- "include": "#comment"
1757
- },
1758
- {
1759
- "include": "#pattern-record-item"
1767
+ ],
1768
+ "beginCaptures": {
1769
+ "1": {
1770
+ "name": "keyword.control"
1771
+ }
1772
+ }
1760
1773
  }
1761
- ]
1762
- },
1763
- "pattern-record-field": {
1764
- "begin": "\\b([_][[:word:]]*)\\b|\\b([[:lower:]][[:word:]]*)\\b",
1765
- "end": "(,)|(?=})",
1774
+ ],
1766
1775
  "beginCaptures": {
1767
1776
  "1": {
1768
- "name": "comment"
1769
- },
1770
- "2": {
1771
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
1777
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1772
1778
  }
1773
1779
  },
1774
1780
  "endCaptures": {
1775
1781
  "1": {
1776
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1777
- }
1778
- },
1779
- "patterns": [
1780
- {
1781
- "include": "#comment"
1782
- },
1783
- {
1784
- "begin": "\\G(:)",
1785
- "end": "(?=[,}])",
1786
- "beginCaptures": {
1787
- "1": {
1788
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1789
- }
1790
- },
1791
- "patterns": [
1792
- {
1793
- "include": "#pattern"
1794
- }
1795
- ]
1796
- }
1797
- ]
1798
- },
1799
- "pattern-record-item": {
1800
- "patterns": [
1801
- {
1802
- "include": "#module-path-simple-prefix"
1782
+ "name": "keyword.control"
1803
1783
  },
1804
- {
1805
- "include": "#pattern-record-field"
1806
- }
1807
- ]
1808
- },
1809
- "pattern-variable": {
1810
- "patterns": [
1811
- {
1812
- "match": "\\b(_(?:[[:lower:]][[:word:]]*)?)\\b(?!\\.[[:upper:]])",
1813
- "captures": {
1814
- "1": {
1815
- "name": "comment"
1816
- }
1817
- }
1784
+ "2": {
1785
+ "name": "support.class entity.name.class"
1818
1786
  },
1819
- {
1820
- "match": "\\b([[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])",
1821
- "captures": {
1822
- "1": {
1823
- "name": "variable.language string.other.link"
1824
- }
1825
- }
1787
+ "3": {
1788
+ "name": "markup.inserted constant.language support.property-value entity.name.filename"
1826
1789
  }
1827
- ]
1790
+ }
1828
1791
  },
1829
1792
  "signature-expression": {
1830
1793
  "patterns": [
1831
1794
  {
1832
- "comment": "FIXME: scan for :upper: to disambiguate type/signature in hover",
1833
1795
  "begin": "(?=\\([[:space:]]*[[:upper:]][[:word:]]*[[:space:]]*:)",
1834
1796
  "end": "(?=[;])",
1835
1797
  "patterns": [
1836
1798
  {
1837
1799
  "begin": "(?=\\()",
1838
- "end": "(?=[;]|=>)",
1800
+ "end": "(?=[;]|=\u003e)",
1839
1801
  "patterns": [
1840
1802
  {
1841
1803
  "include": "#module-item-let-module-param"
@@ -1843,24 +1805,36 @@
1843
1805
  ]
1844
1806
  },
1845
1807
  {
1846
- "begin": "(=>)",
1808
+ "begin": "(=\u003e)",
1847
1809
  "end": "(?=[;\\(])",
1848
- "beginCaptures": {
1849
- "1": {
1850
- "name": "markup.inserted keyword.control.less"
1851
- }
1852
- },
1853
1810
  "patterns": [
1854
1811
  {
1855
1812
  "include": "#structure-expression"
1856
1813
  }
1857
- ]
1814
+ ],
1815
+ "beginCaptures": {
1816
+ "1": {
1817
+ "name": "markup.inserted keyword.control.less"
1818
+ }
1819
+ }
1858
1820
  }
1859
1821
  ]
1860
1822
  },
1861
1823
  {
1862
1824
  "begin": "\\b(module)\\b[[:space:]]*\\b(type)\\b([[:space:]]*\\b(of)\\b)?",
1863
1825
  "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1826
+ "patterns": [
1827
+ {
1828
+ "include": "#comment"
1829
+ },
1830
+ {
1831
+ "include": "#module-path-simple"
1832
+ },
1833
+ {
1834
+ "name": "support.class entity.name.class",
1835
+ "match": "\\b([[:upper:]][[:word:]]*)\\b"
1836
+ }
1837
+ ],
1864
1838
  "beginCaptures": {
1865
1839
  "1": {
1866
1840
  "name": "markup.inserted keyword.other variable.other.readwrite.instance"
@@ -1871,19 +1845,7 @@
1871
1845
  "3": {
1872
1846
  "name": "markup.inserted keyword.other variable.other.readwrite.instance"
1873
1847
  }
1874
- },
1875
- "patterns": [
1876
- {
1877
- "include": "#comment"
1878
- },
1879
- {
1880
- "include": "#module-path-simple"
1881
- },
1882
- {
1883
- "match": "\\b([[:upper:]][[:word:]]*)\\b",
1884
- "name": "support.class entity.name.class"
1885
- }
1886
- ]
1848
+ }
1887
1849
  },
1888
1850
  {
1889
1851
  "include": "#signature-expression-constraints"
@@ -1900,24 +1862,13 @@
1900
1862
  {
1901
1863
  "begin": "\\b(and|with)\\b",
1902
1864
  "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val|with)\\b)",
1903
- "beginCaptures": {
1904
- "1": {
1905
- "name": "variable.other.class.js variable.interpolation storage.modifier message.error"
1906
- }
1907
- },
1908
1865
  "patterns": [
1909
1866
  {
1910
1867
  "include": "#comment"
1911
1868
  },
1912
1869
  {
1913
- "comment": "FIXME: special version of #module-item-type with non-consuming `;`. Atom seems to need this to work.",
1914
1870
  "begin": "\\b(type)\\b",
1915
1871
  "end": "(?=[;\\)}]|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val|with)\\b)",
1916
- "beginCaptures": {
1917
- "1": {
1918
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1919
- }
1920
- },
1921
1872
  "patterns": [
1922
1873
  {
1923
1874
  "include": "#module-item-type-and"
@@ -1928,7 +1879,12 @@
1928
1879
  {
1929
1880
  "include": "#module-item-type-bind"
1930
1881
  }
1931
- ]
1882
+ ],
1883
+ "beginCaptures": {
1884
+ "1": {
1885
+ "name": "entity.other.attribute-name.css constant.language constant.numeric"
1886
+ }
1887
+ }
1932
1888
  },
1933
1889
  {
1934
1890
  "begin": "(?=\\b(module)\\b)",
@@ -1937,11 +1893,6 @@
1937
1893
  {
1938
1894
  "begin": "\\b(module)\\b",
1939
1895
  "end": "(?=:?=|[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
1940
- "beginCaptures": {
1941
- "1": {
1942
- "name": "markup.inserted keyword.control storage.type variable.other.readwrite.instance"
1943
- }
1944
- },
1945
1896
  "patterns": [
1946
1897
  {
1947
1898
  "include": "#comment"
@@ -1950,14 +1901,24 @@
1950
1901
  "include": "#module-path-simple"
1951
1902
  },
1952
1903
  {
1953
- "match": "[[:upper:]][[:word:]]*",
1954
- "name": "support.class entity.name.class"
1904
+ "name": "support.class entity.name.class",
1905
+ "match": "[[:upper:]][[:word:]]*"
1906
+ }
1907
+ ],
1908
+ "beginCaptures": {
1909
+ "1": {
1910
+ "name": "markup.inserted keyword.control storage.type variable.other.readwrite.instance"
1955
1911
  }
1956
- ]
1912
+ }
1957
1913
  },
1958
1914
  {
1959
1915
  "begin": "(:=)|(=)",
1960
1916
  "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
1917
+ "patterns": [
1918
+ {
1919
+ "include": "#structure-expression"
1920
+ }
1921
+ ],
1961
1922
  "beginCaptures": {
1962
1923
  "1": {
1963
1924
  "name": "markup.inserted keyword.control.less message.error"
@@ -1965,16 +1926,16 @@
1965
1926
  "2": {
1966
1927
  "name": "markup.inserted keyword.control.less"
1967
1928
  }
1968
- },
1969
- "patterns": [
1970
- {
1971
- "include": "#structure-expression"
1972
- }
1973
- ]
1929
+ }
1974
1930
  }
1975
1931
  ]
1976
1932
  }
1977
- ]
1933
+ ],
1934
+ "beginCaptures": {
1935
+ "1": {
1936
+ "name": "variable.other.class.js variable.interpolation storage.modifier message.error"
1937
+ }
1938
+ }
1978
1939
  }
1979
1940
  ]
1980
1941
  },
@@ -1984,34 +1945,32 @@
1984
1945
  "include": "#comment"
1985
1946
  },
1986
1947
  {
1987
- "comment": "FIXME: scan for :upper: or `val` to disambiguate types from signatures for hover",
1988
- "begin": "\\((?=[[:space:]]*(\\b(val)\\b|[^'\\[<[:lower:]]))",
1948
+ "begin": "\\((?=[[:space:]]*(\\b(val)\\b|[^'\\[\u003c[:lower:]]))",
1989
1949
  "end": "\\)|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|with)\\b)",
1990
1950
  "patterns": [
1991
1951
  {
1992
1952
  "include": "#comment"
1993
1953
  },
1994
1954
  {
1995
- "comment": "FIXME: might need to refactor this or include more expressions",
1996
1955
  "include": "#structure-expression-block"
1997
1956
  },
1998
1957
  {
1999
1958
  "begin": "\\b(val)\\b",
2000
1959
  "end": "(?=\\))|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2001
- "beginCaptures": {
2002
- "1": {
2003
- "name": "keyword.other"
2004
- }
2005
- },
2006
1960
  "patterns": [
2007
1961
  {
2008
1962
  "include": "#comment"
2009
1963
  },
2010
1964
  {
2011
- "match": "\\b([[:lower:]][[:word:]]*)\\b",
2012
- "name": "support.class entity.name.class"
1965
+ "name": "support.class entity.name.class",
1966
+ "match": "\\b([[:lower:]][[:word:]]*)\\b"
2013
1967
  }
2014
- ]
1968
+ ],
1969
+ "beginCaptures": {
1970
+ "1": {
1971
+ "name": "keyword.other"
1972
+ }
1973
+ }
2015
1974
  },
2016
1975
  {
2017
1976
  "include": "#module-path-simple"
@@ -2019,16 +1978,16 @@
2019
1978
  {
2020
1979
  "begin": "(:)",
2021
1980
  "end": "(?=[\\)])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val)\\b)",
2022
- "beginCaptures": {
2023
- "1": {
2024
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2025
- }
2026
- },
2027
1981
  "patterns": [
2028
1982
  {
2029
1983
  "include": "#signature-expression"
2030
1984
  }
2031
- ]
1985
+ ],
1986
+ "beginCaptures": {
1987
+ "1": {
1988
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1989
+ }
1990
+ }
2032
1991
  }
2033
1992
  ]
2034
1993
  },
@@ -2084,27 +2043,27 @@
2084
2043
  {
2085
2044
  "include": "#module-item-type"
2086
2045
  }
2087
- ]
2088
- },
2089
- "type-annotation-rhs": {
2090
- "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$\\\\])([:])(?![#\\-:!?.@*/&%^+<=>|~$\\\\])",
2091
- "end": "(?=\\))|(?=[,;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2092
- "beginCaptures": {
2093
- "1": {
2094
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2095
- }
2096
- },
2046
+ ]
2047
+ },
2048
+ "type-annotation-rhs": {
2049
+ "begin": "(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])([:])(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])",
2050
+ "end": "(?=\\))|(?=[,;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2097
2051
  "patterns": [
2098
2052
  {
2099
2053
  "include": "#type-expression"
2100
2054
  }
2101
- ]
2055
+ ],
2056
+ "beginCaptures": {
2057
+ "1": {
2058
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2059
+ }
2060
+ }
2102
2061
  },
2103
2062
  "type-expression": {
2104
2063
  "patterns": [
2105
2064
  {
2106
- "match": "([\\.])",
2107
- "name": "entity.name.function"
2065
+ "name": "entity.name.function",
2066
+ "match": "([\\.])"
2108
2067
  },
2109
2068
  {
2110
2069
  "include": "#type-expression-atomic"
@@ -2114,6 +2073,10 @@
2114
2073
  }
2115
2074
  ]
2116
2075
  },
2076
+ "type-expression-arrow": {
2077
+ "name": "markup.inserted keyword.control.less",
2078
+ "match": "=\u003e"
2079
+ },
2117
2080
  "type-expression-atomic": {
2118
2081
  "patterns": [
2119
2082
  {
@@ -2129,8 +2092,8 @@
2129
2092
  "include": "#type-expression-label"
2130
2093
  },
2131
2094
  {
2132
- "match": "\\b(as)\\b",
2133
- "name": "variable.other.class.js variable.interpolation storage.modifier message.error"
2095
+ "name": "variable.other.class.js variable.interpolation storage.modifier message.error",
2096
+ "match": "\\b(as)\\b"
2134
2097
  },
2135
2098
  {
2136
2099
  "include": "#type-expression-constructor"
@@ -2152,10 +2115,6 @@
2152
2115
  }
2153
2116
  ]
2154
2117
  },
2155
- "type-expression-arrow": {
2156
- "match": "=>",
2157
- "name": "markup.inserted keyword.control.less"
2158
- },
2159
2118
  "type-expression-constructor": {
2160
2119
  "match": "(_)(?![[:alnum:]])|\\b([_[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])",
2161
2120
  "captures": {
@@ -2169,15 +2128,7 @@
2169
2128
  },
2170
2129
  "type-expression-label": {
2171
2130
  "begin": "\\b([_[:lower:]][[:word:]]*)\\b(::)",
2172
- "end": "(?<==>)",
2173
- "beginCaptures": {
2174
- "1": {
2175
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
2176
- },
2177
- "2": {
2178
- "name": "keyword.control"
2179
- }
2180
- },
2131
+ "end": "(?\u003c==\u003e)",
2181
2132
  "patterns": [
2182
2133
  {
2183
2134
  "include": "#type-expression"
@@ -2190,21 +2141,23 @@
2190
2141
  }
2191
2142
  }
2192
2143
  }
2193
- ]
2194
- },
2195
- "type-expression-object": {
2196
- "comment": "FIXME: separate sub-rules",
2197
- "begin": "(<)",
2198
- "end": "(>)",
2199
- "captures": {
2144
+ ],
2145
+ "beginCaptures": {
2200
2146
  "1": {
2201
- "name": "entity.name.function"
2147
+ "name": "markup.inserted constant.language support.property-value entity.name.filename"
2148
+ },
2149
+ "2": {
2150
+ "name": "keyword.control"
2202
2151
  }
2203
- },
2152
+ }
2153
+ },
2154
+ "type-expression-object": {
2155
+ "begin": "(\u003c)",
2156
+ "end": "(\u003e)",
2204
2157
  "patterns": [
2205
2158
  {
2206
2159
  "begin": "(\\.\\.)",
2207
- "end": "(?=>)",
2160
+ "end": "(?=\u003e)",
2208
2161
  "beginCaptures": {
2209
2162
  "1": {
2210
2163
  "name": "entity.other.attribute-name.css constant.language constant.numeric"
@@ -2212,17 +2165,10 @@
2212
2165
  }
2213
2166
  },
2214
2167
  {
2215
- "comment": "FIXME: method item",
2216
2168
  "begin": "(?=[_[:lower:]])",
2217
- "end": "(,)|(?=>)",
2218
- "endCaptures": {
2219
- "1": {
2220
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2221
- }
2222
- },
2169
+ "end": "(,)|(?=\u003e)",
2223
2170
  "patterns": [
2224
2171
  {
2225
- "comment": "FIXME: method name",
2226
2172
  "begin": "(?=[_[:lower:]])",
2227
2173
  "end": "(?=:)",
2228
2174
  "patterns": [
@@ -2237,37 +2183,40 @@
2237
2183
  ]
2238
2184
  },
2239
2185
  {
2240
- "comment": "FIXME: method type",
2241
2186
  "begin": "(:)",
2242
- "end": "(?=[,>])",
2243
- "beginCaptures": {
2244
- "1": {
2245
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2246
- }
2247
- },
2187
+ "end": "(?=[,\u003e])",
2248
2188
  "patterns": [
2249
2189
  {
2250
2190
  "include": "#type-expression"
2251
2191
  }
2252
- ]
2192
+ ],
2193
+ "beginCaptures": {
2194
+ "1": {
2195
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2196
+ }
2197
+ }
2253
2198
  }
2254
- ]
2199
+ ],
2200
+ "endCaptures": {
2201
+ "1": {
2202
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2203
+ }
2204
+ }
2255
2205
  }
2256
- ]
2206
+ ],
2207
+ "captures": {
2208
+ "1": {
2209
+ "name": "entity.name.function"
2210
+ }
2211
+ }
2257
2212
  },
2258
2213
  "type-expression-parens": {
2259
- "comment": "FIXME: proper tuple types",
2260
2214
  "begin": "\\(",
2261
2215
  "end": "\\)",
2262
2216
  "patterns": [
2263
2217
  {
2264
2218
  "begin": "\\b(module)\\b",
2265
2219
  "end": "(?=[\\)])",
2266
- "beginCaptures": {
2267
- "1": {
2268
- "name": "keyword.other message.error"
2269
- }
2270
- },
2271
2220
  "patterns": [
2272
2221
  {
2273
2222
  "include": "#module-path-extended"
@@ -2275,11 +2224,16 @@
2275
2224
  {
2276
2225
  "include": "#signature-expression-constraints"
2277
2226
  }
2278
- ]
2227
+ ],
2228
+ "beginCaptures": {
2229
+ "1": {
2230
+ "name": "keyword.other message.error"
2231
+ }
2232
+ }
2279
2233
  },
2280
2234
  {
2281
- "match": ",",
2282
- "name": "keyword.control.less"
2235
+ "name": "keyword.control.less",
2236
+ "match": ","
2283
2237
  },
2284
2238
  {
2285
2239
  "include": "#type-expression"
@@ -2287,32 +2241,18 @@
2287
2241
  ]
2288
2242
  },
2289
2243
  "type-expression-polymorphic-variant": {
2290
- "comment": "FIXME: proper parsing",
2291
- "begin": "(\\[)([<>])?",
2244
+ "begin": "(\\[)([\u003c\u003e])?",
2292
2245
  "end": "(\\])",
2293
- "captures": {
2294
- "1": {
2295
- "name": "entity.name.function"
2296
- },
2297
- "2": {
2298
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2299
- }
2300
- },
2301
2246
  "patterns": [
2302
2247
  {
2303
- "begin": "(\\|)?(?![#\\-:!?.@*/&%^+<=>|~$\\\\])[[:space:]]*",
2304
- "end": "(?=[;)}\\]]|\\|(?![#\\-:!?.@*/&%^+<=>|~$\\\\])|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2305
- "beginCaptures": {
2306
- "1": {
2307
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2308
- }
2309
- },
2248
+ "begin": "(\\|)?(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])[[:space:]]*",
2249
+ "end": "(?=[;)}\\]]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2310
2250
  "patterns": [
2311
2251
  {
2312
2252
  "include": "#value-expression-constructor"
2313
2253
  },
2314
2254
  {
2315
- "match": "([:])|\\b(of)\\b|([&])",
2255
+ "match": "([:])|\\b(of)\\b|([\u0026])",
2316
2256
  "captures": {
2317
2257
  "1": {
2318
2258
  "name": "keyword.control.less"
@@ -2331,9 +2271,22 @@
2331
2271
  {
2332
2272
  "include": "#type-expression"
2333
2273
  }
2334
- ]
2274
+ ],
2275
+ "beginCaptures": {
2276
+ "1": {
2277
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2278
+ }
2279
+ }
2335
2280
  }
2336
- ]
2281
+ ],
2282
+ "captures": {
2283
+ "1": {
2284
+ "name": "entity.name.function"
2285
+ },
2286
+ "2": {
2287
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2288
+ }
2289
+ }
2337
2290
  },
2338
2291
  "type-expression-record": {
2339
2292
  "begin": "{",
@@ -2344,19 +2297,30 @@
2344
2297
  }
2345
2298
  ]
2346
2299
  },
2300
+ "type-expression-record-field": {
2301
+ "patterns": [
2302
+ {
2303
+ "begin": "\\b(mutable)\\b",
2304
+ "end": "(?\u003c=[,])|(?=})",
2305
+ "patterns": [
2306
+ {
2307
+ "include": "#type-expression-record-field-sans-modifier"
2308
+ }
2309
+ ],
2310
+ "beginCaptures": {
2311
+ "1": {
2312
+ "name": "variable.other.class.js variable.interpolation storage.modifier message.error"
2313
+ }
2314
+ }
2315
+ },
2316
+ {
2317
+ "include": "#type-expression-record-field-sans-modifier"
2318
+ }
2319
+ ]
2320
+ },
2347
2321
  "type-expression-record-field-sans-modifier": {
2348
2322
  "begin": "\\b([_[:lower:]][[:word:]]*)\\b",
2349
2323
  "end": "(,)|(?=[,}])",
2350
- "beginCaptures": {
2351
- "1": {
2352
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
2353
- }
2354
- },
2355
- "endCaptures": {
2356
- "1": {
2357
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2358
- }
2359
- },
2360
2324
  "patterns": [
2361
2325
  {
2362
2326
  "include": "#comment"
@@ -2364,39 +2328,28 @@
2364
2328
  {
2365
2329
  "begin": "(:)",
2366
2330
  "end": "(?=[,}])",
2367
- "beginCaptures": {
2368
- "1": {
2369
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2370
- }
2371
- },
2372
2331
  "patterns": [
2373
2332
  {
2374
2333
  "include": "#type-expression"
2375
2334
  }
2376
- ]
2377
- }
2378
- ]
2379
- },
2380
- "type-expression-record-field": {
2381
- "patterns": [
2382
- {
2383
- "begin": "\\b(mutable)\\b",
2384
- "end": "(?<=[,])|(?=})",
2335
+ ],
2385
2336
  "beginCaptures": {
2386
2337
  "1": {
2387
- "name": "variable.other.class.js variable.interpolation storage.modifier message.error"
2388
- }
2389
- },
2390
- "patterns": [
2391
- {
2392
- "include": "#type-expression-record-field-sans-modifier"
2338
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2393
2339
  }
2394
- ]
2395
- },
2396
- {
2397
- "include": "#type-expression-record-field-sans-modifier"
2340
+ }
2398
2341
  }
2399
- ]
2342
+ ],
2343
+ "beginCaptures": {
2344
+ "1": {
2345
+ "name": "markup.inserted constant.language support.property-value entity.name.filename"
2346
+ }
2347
+ },
2348
+ "endCaptures": {
2349
+ "1": {
2350
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2351
+ }
2352
+ }
2400
2353
  },
2401
2354
  "type-expression-record-item": {
2402
2355
  "patterns": [
@@ -2452,8 +2405,8 @@
2452
2405
  "include": "#module-path-simple-prefix"
2453
2406
  },
2454
2407
  {
2455
- "match": "[:?]",
2456
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2408
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error",
2409
+ "match": "[:?]"
2457
2410
  },
2458
2411
  {
2459
2412
  "include": "#record-path"
@@ -2591,7 +2544,7 @@
2591
2544
  },
2592
2545
  "value-expression-for": {
2593
2546
  "begin": "(?=\\b(for)\\b)",
2594
- "end": "(?<=})|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2547
+ "end": "(?\u003c=})|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2595
2548
  "patterns": [
2596
2549
  {
2597
2550
  "include": "#value-expression-for-head"
@@ -2608,11 +2561,6 @@
2608
2561
  {
2609
2562
  "begin": "\\b(for)\\b",
2610
2563
  "end": "(?=\\b(in)\\b)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2611
- "beginCaptures": {
2612
- "1": {
2613
- "name": "keyword.control.loop"
2614
- }
2615
- },
2616
2564
  "patterns": [
2617
2565
  {
2618
2566
  "include": "#comment"
@@ -2620,16 +2568,16 @@
2620
2568
  {
2621
2569
  "include": "#pattern-variable"
2622
2570
  }
2623
- ]
2624
- },
2625
- {
2626
- "begin": "\\b(in)\\b",
2627
- "end": "(?=\\b(to)\\b)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2571
+ ],
2628
2572
  "beginCaptures": {
2629
2573
  "1": {
2630
2574
  "name": "keyword.control.loop"
2631
2575
  }
2632
- },
2576
+ }
2577
+ },
2578
+ {
2579
+ "begin": "\\b(in)\\b",
2580
+ "end": "(?=\\b(to)\\b)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2633
2581
  "patterns": [
2634
2582
  {
2635
2583
  "include": "#comment"
@@ -2637,16 +2585,16 @@
2637
2585
  {
2638
2586
  "include": "#value-expression-atomic-with-paths"
2639
2587
  }
2640
- ]
2641
- },
2642
- {
2643
- "begin": "\\b(to)\\b",
2644
- "end": "(?={)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2588
+ ],
2645
2589
  "beginCaptures": {
2646
2590
  "1": {
2647
2591
  "name": "keyword.control.loop"
2648
2592
  }
2649
- },
2593
+ }
2594
+ },
2595
+ {
2596
+ "begin": "\\b(to)\\b",
2597
+ "end": "(?={)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2650
2598
  "patterns": [
2651
2599
  {
2652
2600
  "include": "#comment"
@@ -2654,7 +2602,12 @@
2654
2602
  {
2655
2603
  "include": "#value-expression-atomic-with-paths"
2656
2604
  }
2657
- ]
2605
+ ],
2606
+ "beginCaptures": {
2607
+ "1": {
2608
+ "name": "keyword.control.loop"
2609
+ }
2610
+ }
2658
2611
  },
2659
2612
  {
2660
2613
  "include": "#value-expression-block"
@@ -2664,11 +2617,6 @@
2664
2617
  "value-expression-fun": {
2665
2618
  "begin": "\\b(fun)\\b",
2666
2619
  "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2667
- "beginCaptures": {
2668
- "1": {
2669
- "name": "keyword.control"
2670
- }
2671
- },
2672
2620
  "patterns": [
2673
2621
  {
2674
2622
  "include": "#value-expression-fun-pattern-match-rule-lhs"
@@ -2676,12 +2624,21 @@
2676
2624
  {
2677
2625
  "include": "#value-expression-fun-pattern-match-rule-rhs"
2678
2626
  }
2679
- ]
2627
+ ],
2628
+ "beginCaptures": {
2629
+ "1": {
2630
+ "name": "keyword.control"
2631
+ }
2632
+ }
2680
2633
  },
2681
2634
  "value-expression-fun-pattern-match-rule-lhs": {
2682
- "begin": "(?=\\|(?![#\\-:!?.@*/&%^+<=>|~$\\\\]))|(?<=fun)",
2683
- "end": "(\\|(?![#\\-:!?.@*/&%^+<=>|~$\\\\]))|(?==>)|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2684
- "applyEndPatternLast": true,
2635
+ "begin": "(?=\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|(?\u003c=fun)",
2636
+ "end": "(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|(?==\u003e)|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2637
+ "patterns": [
2638
+ {
2639
+ "include": "#module-item-let-value-param"
2640
+ }
2641
+ ],
2685
2642
  "beginCaptures": {
2686
2643
  "1": {
2687
2644
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
@@ -2692,35 +2649,25 @@
2692
2649
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2693
2650
  }
2694
2651
  },
2652
+ "applyEndPatternLast": true
2653
+ },
2654
+ "value-expression-fun-pattern-match-rule-rhs": {
2655
+ "begin": "(=\u003e)",
2656
+ "end": "(?=[;\\)}]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and)\\b)",
2695
2657
  "patterns": [
2696
2658
  {
2697
- "include": "#module-item-let-value-param"
2659
+ "include": "#value-expression"
2698
2660
  }
2699
- ]
2700
- },
2701
- "value-expression-fun-pattern-match-rule-rhs": {
2702
- "begin": "(=>)",
2703
- "end": "(?=[;\\)}]|\\|(?![#\\-:!?.@*/&%^+<=>|~$\\\\])|\\b(and)\\b)",
2661
+ ],
2704
2662
  "beginCaptures": {
2705
2663
  "1": {
2706
2664
  "name": "keyword.control.less"
2707
2665
  }
2708
- },
2709
- "patterns": [
2710
- {
2711
- "include": "#value-expression"
2712
- }
2713
- ]
2666
+ }
2714
2667
  },
2715
2668
  "value-expression-if-then-else": {
2716
2669
  "begin": "\\b(if)\\b",
2717
2670
  "end": "(?=[;\\)\\]}])",
2718
- "applyEndPatternLast": true,
2719
- "beginCaptures": {
2720
- "1": {
2721
- "name": "keyword.control.conditional"
2722
- }
2723
- },
2724
2671
  "patterns": [
2725
2672
  {
2726
2673
  "include": "#comment"
@@ -2728,34 +2675,36 @@
2728
2675
  {
2729
2676
  "begin": "\\b(else)\\b",
2730
2677
  "end": "(?=[;\\)\\]}])",
2731
- "beginCaptures": {
2732
- "1": {
2733
- "name": "keyword.control.conditional"
2734
- }
2735
- },
2736
2678
  "patterns": [
2737
2679
  {
2738
2680
  "include": "#value-expression"
2739
2681
  }
2740
- ]
2682
+ ],
2683
+ "beginCaptures": {
2684
+ "1": {
2685
+ "name": "keyword.control.conditional"
2686
+ }
2687
+ }
2741
2688
  },
2742
2689
  {
2743
2690
  "include": "#value-expression-atomic-with-paths"
2744
2691
  }
2745
- ]
2746
- },
2747
- "value-expression-lazy": {
2748
- "comment": "FIXME",
2749
- "match": "\\b(lazy)\\b",
2750
- "captures": {
2692
+ ],
2693
+ "beginCaptures": {
2751
2694
  "1": {
2752
- "name": "keyword.other"
2695
+ "name": "keyword.control.conditional"
2753
2696
  }
2754
- }
2697
+ },
2698
+ "applyEndPatternLast": true
2755
2699
  },
2756
2700
  "value-expression-label": {
2757
2701
  "begin": "\\b([_[:lower:]][[:word:]]*)\\b[[:space:]]*(::)(\\?)?",
2758
2702
  "end": "(?![[:space:]])",
2703
+ "patterns": [
2704
+ {
2705
+ "include": "#value-expression"
2706
+ }
2707
+ ],
2759
2708
  "beginCaptures": {
2760
2709
  "1": {
2761
2710
  "name": "markup.inserted constant.language support.property-value entity.name.filename"
@@ -2766,12 +2715,15 @@
2766
2715
  "3": {
2767
2716
  "name": "storage.type"
2768
2717
  }
2769
- },
2770
- "patterns": [
2771
- {
2772
- "include": "#value-expression"
2718
+ }
2719
+ },
2720
+ "value-expression-lazy": {
2721
+ "match": "\\b(lazy)\\b",
2722
+ "captures": {
2723
+ "1": {
2724
+ "name": "keyword.other"
2773
2725
  }
2774
- ]
2726
+ }
2775
2727
  },
2776
2728
  "value-expression-literal": {
2777
2729
  "patterns": [
@@ -2802,26 +2754,16 @@
2802
2754
  ]
2803
2755
  },
2804
2756
  "value-expression-literal-boolean": {
2805
- "match": "\\b(false|true)\\b",
2806
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
2757
+ "name": "entity.other.attribute-name.css constant.language constant.numeric",
2758
+ "match": "\\b(false|true)\\b"
2807
2759
  },
2808
2760
  "value-expression-literal-character": {
2809
- "match": "(')([[:space:]]|[[:graph:]]|\\\\[\\\\\"'ntbr]|\\\\[[:digit:]][[:digit:]][[:digit:]]|\\\\x[[:xdigit:]][[:xdigit:]]|\\\\o[0-3][0-7][0-7])(')",
2810
- "name": "constant.character"
2761
+ "name": "constant.character",
2762
+ "match": "(')([[:space:]]|[[:graph:]]|\\\\[\\\\\"'ntbr]|\\\\[[:digit:]][[:digit:]][[:digit:]]|\\\\x[[:xdigit:]][[:xdigit:]]|\\\\o[0-3][0-7][0-7])(')"
2811
2763
  },
2812
2764
  "value-expression-literal-list-or-array": {
2813
2765
  "begin": "(\\[\\|?)(?![@%])",
2814
2766
  "end": "(\\|?\\])",
2815
- "beginCaptures": {
2816
- "1": {
2817
- "name": "constant.language.list"
2818
- }
2819
- },
2820
- "endCaptures": {
2821
- "1": {
2822
- "name": "constant.language.list"
2823
- }
2824
- },
2825
2767
  "patterns": [
2826
2768
  {
2827
2769
  "include": "#value-expression-literal-list-or-array-separator"
@@ -2832,7 +2774,17 @@
2832
2774
  {
2833
2775
  "include": "#value-expression-literal-list-or-array"
2834
2776
  }
2835
- ]
2777
+ ],
2778
+ "beginCaptures": {
2779
+ "1": {
2780
+ "name": "constant.language.list"
2781
+ }
2782
+ },
2783
+ "endCaptures": {
2784
+ "1": {
2785
+ "name": "constant.language.list"
2786
+ }
2787
+ }
2836
2788
  },
2837
2789
  "value-expression-literal-list-or-array-separator": {
2838
2790
  "match": "(,)|(\\.\\.\\.)",
@@ -2935,24 +2887,17 @@
2935
2887
  "value-expression-literal-string": {
2936
2888
  "patterns": [
2937
2889
  {
2938
- "begin": "(?<![[:alpha:]])js_expr(?!=[[:word:]])",
2939
- "end": "(?<=\")|(\\|)([_[:lower:]]*)?(})|(?=[^[:space:]\"{])",
2940
- "endCaptures": {
2941
- "1": {
2942
- "name": "keyword.control.flow message.error"
2943
- },
2944
- "2": {
2945
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
2946
- },
2947
- "3": {
2948
- "name": "keyword.control.flow message.error"
2949
- }
2950
- },
2890
+ "begin": "(?\u003c![[:alpha:]])js_expr(?!=[[:word:]])",
2891
+ "end": "(?\u003c=\")|(\\|)([_[:lower:]]*)?(})|(?=[^[:space:]\"{])",
2951
2892
  "patterns": [
2952
2893
  {
2953
2894
  "begin": "({)([_[:lower:]]*)?(\\|)",
2954
2895
  "end": "(?=\\|\\2})",
2955
- "comment": "meta.separator",
2896
+ "patterns": [
2897
+ {
2898
+ "include": "source.js"
2899
+ }
2900
+ ],
2956
2901
  "beginCaptures": {
2957
2902
  "1": {
2958
2903
  "name": "keyword.control.flow message.error"
@@ -2963,29 +2908,34 @@
2963
2908
  "3": {
2964
2909
  "name": "keyword.control.flow message.error"
2965
2910
  }
2966
- },
2967
- "patterns": [
2968
- {
2969
- "include": "source.js"
2970
- }
2971
- ]
2911
+ }
2972
2912
  },
2973
2913
  {
2974
2914
  "begin": "\"",
2975
2915
  "end": "\"",
2976
- "comment": "meta.separator",
2977
2916
  "patterns": [
2978
2917
  {
2979
2918
  "include": "source.js"
2980
2919
  }
2981
2920
  ]
2982
2921
  }
2983
- ]
2922
+ ],
2923
+ "endCaptures": {
2924
+ "1": {
2925
+ "name": "keyword.control.flow message.error"
2926
+ },
2927
+ "2": {
2928
+ "name": "entity.other.attribute-name.css constant.language constant.numeric"
2929
+ },
2930
+ "3": {
2931
+ "name": "keyword.control.flow message.error"
2932
+ }
2933
+ }
2984
2934
  },
2985
2935
  {
2936
+ "name": "string.double string.regexp",
2986
2937
  "begin": "({)([_[:lower:]]*)?(\\|)",
2987
2938
  "end": "(\\|)(\\2)(})",
2988
- "name": "string.double string.regexp",
2989
2939
  "beginCaptures": {
2990
2940
  "1": {
2991
2941
  "name": "keyword.control.flow message.error"
@@ -3010,9 +2960,9 @@
3010
2960
  }
3011
2961
  },
3012
2962
  {
2963
+ "name": "string.double string.regexp",
3013
2964
  "begin": "\"",
3014
2965
  "end": "\"",
3015
- "name": "string.double string.regexp",
3016
2966
  "patterns": [
3017
2967
  {
3018
2968
  "include": "#value-expression-literal-string-escape"
@@ -3024,9 +2974,8 @@
3024
2974
  "value-expression-literal-string-escape": {
3025
2975
  "patterns": [
3026
2976
  {
3027
- "comment": "FIXME: make escapes into separate rule",
3028
- "match": "\\\\[\\\\\"'ntbr ]|\\\\[[:digit:]][[:digit:]][[:digit:]]|\\\\x[[:xdigit:]][[:xdigit:]]|\\\\o[0-3][0-7][0-7]",
3029
- "name": "constant.character"
2977
+ "name": "constant.character",
2978
+ "match": "\\\\[\\\\\"'ntbr ]|\\\\[[:digit:]][[:digit:]][[:digit:]]|\\\\x[[:xdigit:]][[:xdigit:]]|\\\\o[0-3][0-7][0-7]"
3030
2979
  },
3031
2980
  {
3032
2981
  "match": "(@)([ \\[\\],.]|\\\\n)",
@@ -3040,7 +2989,6 @@
3040
2989
  }
3041
2990
  },
3042
2991
  {
3043
- "comment": "FIXME: don't highlight in external strings",
3044
2992
  "match": "(%)([ads])?",
3045
2993
  "captures": {
3046
2994
  "1": {
@@ -3054,11 +3002,10 @@
3054
3002
  ]
3055
3003
  },
3056
3004
  "value-expression-literal-unit": {
3057
- "match": "\\(\\)",
3058
- "name": "constant.language.unit"
3005
+ "name": "constant.language.unit",
3006
+ "match": "\\(\\)"
3059
3007
  },
3060
3008
  "value-expression-object-look": {
3061
- "comment": "FIXME: is there a better way than listing all the keywords?",
3062
3009
  "begin": "(?:\\G|^)[[:space:]]*(?=method)",
3063
3010
  "end": "(?=})",
3064
3011
  "patterns": [
@@ -3070,8 +3017,6 @@
3070
3017
  "value-expression-parens": {
3071
3018
  "begin": "(?=\\()",
3072
3019
  "end": "(\\))|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
3073
- "endCaptures": {
3074
- },
3075
3020
  "patterns": [
3076
3021
  {
3077
3022
  "include": "#condition-lhs"
@@ -3087,46 +3032,36 @@
3087
3032
  "value-expression-parens-lhs": {
3088
3033
  "begin": "(\\()|(,)",
3089
3034
  "end": "(?=[?,:\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3090
- "beginCaptures": {
3091
- "2": {
3092
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3093
- }
3094
- },
3095
3035
  "patterns": [
3096
3036
  {
3097
3037
  "begin": "\\b(module)\\b",
3098
3038
  "end": "(?=\\))",
3099
- "beginCaptures": {
3100
- "1": {
3101
- "name": "keyword.other message.error"
3102
- }
3103
- },
3104
3039
  "patterns": [
3105
3040
  {
3106
3041
  "include": "#module-path-simple"
3107
3042
  }
3108
- ]
3043
+ ],
3044
+ "beginCaptures": {
3045
+ "1": {
3046
+ "name": "keyword.other message.error"
3047
+ }
3048
+ }
3109
3049
  },
3110
3050
  {
3111
3051
  "include": "#value-expression"
3112
3052
  }
3113
- ]
3053
+ ],
3054
+ "beginCaptures": {
3055
+ "2": {
3056
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3057
+ }
3058
+ }
3114
3059
  },
3115
3060
  "value-expression-record-field": {
3116
3061
  "patterns": [
3117
3062
  {
3118
3063
  "begin": "(\\.\\.\\.)",
3119
3064
  "end": "(,)|(?=})",
3120
- "beginCaptures": {
3121
- "1": {
3122
- "name": "keyword.control"
3123
- }
3124
- },
3125
- "endCaptures": {
3126
- "1": {
3127
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3128
- }
3129
- },
3130
3065
  "patterns": [
3131
3066
  {
3132
3067
  "include": "#comment"
@@ -3139,40 +3074,40 @@
3139
3074
  "end": "(?=[:,])",
3140
3075
  "patterns": [
3141
3076
  {
3142
- "match": "\\b[[:lower:]][[:word:]]*\\b",
3143
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
3077
+ "name": "markup.inserted constant.language support.property-value entity.name.filename",
3078
+ "match": "\\b[[:lower:]][[:word:]]*\\b"
3144
3079
  }
3145
3080
  ]
3146
3081
  },
3147
3082
  {
3148
3083
  "begin": "(:)",
3149
3084
  "end": "(?=[,}])",
3150
- "beginCaptures": {
3151
- "1": {
3152
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3153
- }
3154
- },
3155
3085
  "patterns": [
3156
3086
  {
3157
3087
  "include": "#value-expression"
3158
3088
  }
3159
- ]
3089
+ ],
3090
+ "beginCaptures": {
3091
+ "1": {
3092
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3093
+ }
3094
+ }
3160
3095
  }
3161
- ]
3162
- },
3163
- {
3164
- "begin": "\\b[[:upper:]][[:word:]]*\\b",
3165
- "end": "(,)|(?=})",
3096
+ ],
3166
3097
  "beginCaptures": {
3167
3098
  "1": {
3168
- "name": "support.class entity.name.class"
3099
+ "name": "keyword.control"
3169
3100
  }
3170
3101
  },
3171
3102
  "endCaptures": {
3172
3103
  "1": {
3173
3104
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3174
3105
  }
3175
- },
3106
+ }
3107
+ },
3108
+ {
3109
+ "begin": "\\b[[:upper:]][[:word:]]*\\b",
3110
+ "end": "(,)|(?=})",
3176
3111
  "patterns": [
3177
3112
  {
3178
3113
  "include": "#module-path-simple-prefix"
@@ -3180,48 +3115,58 @@
3180
3115
  {
3181
3116
  "begin": "(:)",
3182
3117
  "end": "(?=[,}])",
3183
- "beginCaptures": {
3184
- "1": {
3185
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3186
- }
3187
- },
3188
3118
  "patterns": [
3189
3119
  {
3190
3120
  "include": "#value-expression"
3191
3121
  }
3192
- ]
3122
+ ],
3123
+ "beginCaptures": {
3124
+ "1": {
3125
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3126
+ }
3127
+ }
3193
3128
  }
3194
- ]
3195
- },
3196
- {
3197
- "begin": "\\b([[:lower:]][[:word:]]*)\\b",
3198
- "end": "(,)|(?=})",
3129
+ ],
3199
3130
  "beginCaptures": {
3200
3131
  "1": {
3201
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
3132
+ "name": "support.class entity.name.class"
3202
3133
  }
3203
3134
  },
3204
3135
  "endCaptures": {
3205
3136
  "1": {
3206
3137
  "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3207
3138
  }
3208
- },
3139
+ }
3140
+ },
3141
+ {
3142
+ "begin": "\\b([[:lower:]][[:word:]]*)\\b",
3143
+ "end": "(,)|(?=})",
3209
3144
  "patterns": [
3210
3145
  {
3211
3146
  "begin": "(:)",
3212
3147
  "end": "(?=[,}])",
3213
- "beginCaptures": {
3214
- "1": {
3215
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3216
- }
3217
- },
3218
3148
  "patterns": [
3219
3149
  {
3220
3150
  "include": "#value-expression"
3221
3151
  }
3222
- ]
3152
+ ],
3153
+ "beginCaptures": {
3154
+ "1": {
3155
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3156
+ }
3157
+ }
3223
3158
  }
3224
- ]
3159
+ ],
3160
+ "beginCaptures": {
3161
+ "1": {
3162
+ "name": "markup.inserted constant.language support.property-value entity.name.filename"
3163
+ }
3164
+ },
3165
+ "endCaptures": {
3166
+ "1": {
3167
+ "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3168
+ }
3169
+ }
3225
3170
  }
3226
3171
  ]
3227
3172
  },
@@ -3238,14 +3183,18 @@
3238
3183
  }
3239
3184
  ]
3240
3185
  },
3186
+ "value-expression-record-look": {
3187
+ "begin": "(?=\\.\\.\\.|([[:upper:]][[:word:]]*\\.)*([[:lower:]][[:word:]]*)[[:space:]]*[,:}])",
3188
+ "end": "(?=})",
3189
+ "patterns": [
3190
+ {
3191
+ "include": "#value-expression-record-item"
3192
+ }
3193
+ ]
3194
+ },
3241
3195
  "value-expression-switch": {
3242
3196
  "begin": "\\b(switch)\\b",
3243
- "end": "(?<=})",
3244
- "beginCaptures": {
3245
- "1": {
3246
- "name": "keyword.control.switch"
3247
- }
3248
- },
3197
+ "end": "(?\u003c=})",
3249
3198
  "patterns": [
3250
3199
  {
3251
3200
  "include": "#value-expression-switch-head"
@@ -3253,7 +3202,12 @@
3253
3202
  {
3254
3203
  "include": "#value-expression-switch-body"
3255
3204
  }
3256
- ]
3205
+ ],
3206
+ "beginCaptures": {
3207
+ "1": {
3208
+ "name": "keyword.control.switch"
3209
+ }
3210
+ }
3257
3211
  },
3258
3212
  "value-expression-switch-body": {
3259
3213
  "begin": "{",
@@ -3268,8 +3222,8 @@
3268
3222
  ]
3269
3223
  },
3270
3224
  "value-expression-switch-head": {
3271
- "begin": "(?<=switch)",
3272
- "end": "(?<!switch)(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3225
+ "begin": "(?\u003c=switch)",
3226
+ "end": "(?\u003c!switch)(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3273
3227
  "patterns": [
3274
3228
  {
3275
3229
  "include": "#comment"
@@ -3299,8 +3253,8 @@
3299
3253
  ]
3300
3254
  },
3301
3255
  "value-expression-switch-pattern-match-rule-lhs": {
3302
- "begin": "(?=\\|(?![#\\-:!?.@*/&%^+<=>|~$\\\\]))",
3303
- "end": "(?==>|[;\\)}])",
3256
+ "begin": "(?=\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))",
3257
+ "end": "(?==\u003e|[;\\)}])",
3304
3258
  "patterns": [
3305
3259
  {
3306
3260
  "include": "#pattern-guard"
@@ -3311,27 +3265,22 @@
3311
3265
  ]
3312
3266
  },
3313
3267
  "value-expression-switch-pattern-match-rule-rhs": {
3314
- "begin": "(=>)",
3315
- "end": "(?=}|\\|(?![#\\-:!?.@*/&%^+<=>|~$\\\\]))",
3316
- "beginCaptures": {
3317
- "1": {
3318
- "name": "keyword.control.less"
3319
- }
3320
- },
3268
+ "begin": "(=\u003e)",
3269
+ "end": "(?=}|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))",
3321
3270
  "patterns": [
3322
3271
  {
3323
3272
  "include": "#value-expression-block-item"
3324
3273
  }
3325
- ]
3326
- },
3327
- "value-expression-try": {
3328
- "begin": "\\b(try)\\b",
3329
- "end": "(?<=})|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3274
+ ],
3330
3275
  "beginCaptures": {
3331
3276
  "1": {
3332
- "name": "keyword.control.trycatch"
3277
+ "name": "keyword.control.less"
3333
3278
  }
3334
- },
3279
+ }
3280
+ },
3281
+ "value-expression-try": {
3282
+ "begin": "\\b(try)\\b",
3283
+ "end": "(?\u003c=})|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3335
3284
  "patterns": [
3336
3285
  {
3337
3286
  "include": "#value-expression-try-head"
@@ -3339,16 +3288,16 @@
3339
3288
  {
3340
3289
  "include": "#value-expression-switch-body"
3341
3290
  }
3342
- ]
3343
- },
3344
- "value-expression-try-head": {
3345
- "begin": "(?<=try)",
3346
- "end": "(?<!try)(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3291
+ ],
3347
3292
  "beginCaptures": {
3348
3293
  "1": {
3349
- "name": "keyword.control"
3294
+ "name": "keyword.control.trycatch"
3350
3295
  }
3351
- },
3296
+ }
3297
+ },
3298
+ "value-expression-try-head": {
3299
+ "begin": "(?\u003c=try)",
3300
+ "end": "(?\u003c!try)(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3352
3301
  "patterns": [
3353
3302
  {
3354
3303
  "include": "#comment"
@@ -3365,16 +3314,16 @@
3365
3314
  {
3366
3315
  "include": "#value-expression-atomic-with-paths"
3367
3316
  }
3368
- ]
3369
- },
3370
- "value-expression-while": {
3371
- "begin": "\\b(while)\\b",
3372
- "end": "(?<=})|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3317
+ ],
3373
3318
  "beginCaptures": {
3374
3319
  "1": {
3375
- "name": "keyword.control.loop"
3320
+ "name": "keyword.control"
3376
3321
  }
3377
- },
3322
+ }
3323
+ },
3324
+ "value-expression-while": {
3325
+ "begin": "\\b(while)\\b",
3326
+ "end": "(?\u003c=})|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3378
3327
  "patterns": [
3379
3328
  {
3380
3329
  "include": "#value-expression-while-head"
@@ -3382,10 +3331,15 @@
3382
3331
  {
3383
3332
  "include": "#value-expression-block"
3384
3333
  }
3385
- ]
3334
+ ],
3335
+ "beginCaptures": {
3336
+ "1": {
3337
+ "name": "keyword.control.loop"
3338
+ }
3339
+ }
3386
3340
  },
3387
3341
  "value-expression-while-head": {
3388
- "begin": "(?<=while)[[:space:]]*+",
3342
+ "begin": "(?\u003c=while)[[:space:]]*+",
3389
3343
  "end": "(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3390
3344
  "patterns": [
3391
3345
  {
@@ -3395,15 +3349,6 @@
3395
3349
  "include": "#value-expression-atomic-with-paths"
3396
3350
  }
3397
3351
  ]
3398
- },
3399
- "value-expression-record-look": {
3400
- "begin": "(?=\\.\\.\\.|([[:upper:]][[:word:]]*\\.)*([[:lower:]][[:word:]]*)[[:space:]]*[,:}])",
3401
- "end": "(?=})",
3402
- "patterns": [
3403
- {
3404
- "include": "#value-expression-record-item"
3405
- }
3406
- ]
3407
3352
  }
3408
3353
  }
3409
- }
3354
+ }