github-linguist 5.3.3 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (460) hide show
  1. checksums.yaml +4 -4
  2. data/bin/git-linguist +5 -2
  3. data/ext/linguist/linguist.c +18 -7
  4. data/grammars/annotation.liquidhaskell.haskell.json +969 -862
  5. data/grammars/config.xcompose.json +22 -25
  6. data/grammars/file.lasso.json +296 -309
  7. data/grammars/hint.haskell.json +867 -766
  8. data/grammars/hint.message.haskell.json +867 -766
  9. data/grammars/hint.type.haskell.json +867 -766
  10. data/grammars/objdump.x86asm.json +20 -24
  11. data/grammars/source.Kotlin.json +220 -225
  12. data/grammars/source.LS.json +36 -55
  13. data/grammars/source.MCPOST.json +24 -38
  14. data/grammars/source.MOD.json +26 -41
  15. data/grammars/source.SASLog.json +9 -16
  16. data/grammars/source.abap.json +48 -56
  17. data/grammars/source.abl.json +8 -14
  18. data/grammars/source.abnf.json +88 -98
  19. data/grammars/source.actionscript.3.json +398 -429
  20. data/grammars/source.acucobol.json +5 -8
  21. data/grammars/source.ada.json +46 -53
  22. data/grammars/source.afm.json +548 -554
  23. data/grammars/source.agc.json +34 -37
  24. data/grammars/source.agda.json +79 -91
  25. data/grammars/source.ahk.json +62 -66
  26. data/grammars/source.alloy.json +16 -20
  27. data/grammars/source.ampl.json +41 -47
  28. data/grammars/source.angelscript.json +71 -80
  29. data/grammars/source.antlr.json +131 -136
  30. data/grammars/source.apache-config.json +93 -99
  31. data/grammars/source.apache-config.mod_perl.json +19 -24
  32. data/grammars/source.apl.json +1038 -1029
  33. data/grammars/source.applescript.json +501 -523
  34. data/grammars/source.apt.json +9 -16
  35. data/grammars/source.asn.json +27 -31
  36. data/grammars/source.asp.json +61 -67
  37. data/grammars/source.aspectj.json +385 -391
  38. data/grammars/source.assembly.json +49 -55
  39. data/grammars/source.ats.json +45 -121
  40. data/grammars/source.autoit.json +64 -69
  41. data/grammars/source.awk.json +172 -176
  42. data/grammars/source.ballerina.json +48 -395
  43. data/grammars/source.batchfile.json +269 -269
  44. data/grammars/source.befunge.json +17 -21
  45. data/grammars/source.bf.json +5 -11
  46. data/grammars/source.bison.json +10 -14
  47. data/grammars/source.blitzmax.json +300 -305
  48. data/grammars/source.boo.json +189 -193
  49. data/grammars/source.brightauthorproject.json +8 -13
  50. data/grammars/source.brightscript.json +37 -47
  51. data/grammars/source.bro.json +134 -140
  52. data/grammars/source.bsl.json +152 -193
  53. data/grammars/source.bsv.json +96 -102
  54. data/grammars/source.c++.json +176 -193
  55. data/grammars/source.c++.qt.json +13 -21
  56. data/grammars/source.c.ec.json +15 -21
  57. data/grammars/source.c.json +237 -251
  58. data/grammars/source.c.platform.json +153 -159
  59. data/grammars/source.c2hs.json +3 -6
  60. data/grammars/source.cabal.json +17 -20
  61. data/grammars/source.cache.cmake.json +18 -23
  62. data/grammars/source.cake.json +4 -7
  63. data/grammars/source.camlp4.ocaml.json +24 -27
  64. data/grammars/source.capnp.json +33 -38
  65. data/grammars/source.ceylon.json +44 -50
  66. data/grammars/source.cfscript.cfc.json +78 -86
  67. data/grammars/source.cfscript.json +513 -520
  68. data/grammars/source.changelogs.rpm-spec.json +8 -16
  69. data/grammars/source.chapel.json +109 -87
  70. data/grammars/source.cirru.json +25 -30
  71. data/grammars/source.clarion.json +41 -54
  72. data/grammars/source.clean.json +90 -95
  73. data/grammars/source.click.json +25 -28
  74. data/grammars/source.clips.json +10 -23
  75. data/grammars/source.clojure.json +151 -168
  76. data/grammars/source.cm.json +14 -19
  77. data/grammars/source.cmake.json +53 -61
  78. data/grammars/source.cobol.json +165 -180
  79. data/grammars/source.coffee.json +454 -462
  80. data/grammars/source.cool.json +36 -43
  81. data/grammars/source.coq.json +17 -21
  82. data/grammars/source.crystal.json +889 -983
  83. data/grammars/source.cs.json +739 -740
  84. data/grammars/source.csound-document.json +69 -73
  85. data/grammars/source.csound-score.json +52 -55
  86. data/grammars/source.csound.json +167 -171
  87. data/grammars/source.css.json +683 -688
  88. data/grammars/source.css.less.json +211 -511
  89. data/grammars/source.css.mss.json +94 -101
  90. data/grammars/source.css.postcss.sugarss.json +260 -0
  91. data/grammars/source.csx.json +4 -7
  92. data/grammars/source.cuda-c++.json +47 -81
  93. data/grammars/source.cwl.json +103 -0
  94. data/grammars/source.cython.json +536 -582
  95. data/grammars/source.d.json +243 -252
  96. data/grammars/source.dart.json +161 -166
  97. data/grammars/source.data-weave.json +901 -905
  98. data/grammars/source.desktop.json +29 -33
  99. data/grammars/source.diff.json +43 -52
  100. data/grammars/source.disasm.json +15 -16
  101. data/grammars/source.ditroff.desc.json +73 -84
  102. data/grammars/source.ditroff.json +60 -61
  103. data/grammars/source.dm.json +202 -213
  104. data/grammars/source.dmf.json +44 -47
  105. data/grammars/source.dockerfile.json +29 -34
  106. data/grammars/source.dot.json +46 -55
  107. data/grammars/source.dylan.json +63 -68
  108. data/grammars/source.ebnf.json +55 -62
  109. data/grammars/source.eiffel.json +57 -62
  110. data/grammars/source.elixir.json +321 -366
  111. data/grammars/source.emacs.lisp.json +458 -249
  112. data/grammars/source.erazor.json +49 -57
  113. data/grammars/source.erlang.json +508 -515
  114. data/grammars/source.essl.json +17 -30
  115. data/grammars/source.factor.json +85 -91
  116. data/grammars/source.fan.json +92 -96
  117. data/grammars/source.fancy.json +93 -118
  118. data/grammars/source.fish.json +74 -98
  119. data/grammars/source.fontforge.json +142 -146
  120. data/grammars/source.forth.json +42 -57
  121. data/grammars/source.fortran.json +193 -231
  122. data/grammars/source.fortran.modern.json +77 -103
  123. data/grammars/source.fsharp.fsi.json +1 -6
  124. data/grammars/source.fsharp.fsl.json +1 -6
  125. data/grammars/source.fsharp.fsx.json +1 -6
  126. data/grammars/source.fsharp.json +148 -153
  127. data/grammars/source.gap.json +60 -70
  128. data/grammars/source.gcode.json +9 -16
  129. data/grammars/source.gdb.json +63 -79
  130. data/grammars/source.gdb.session.json +27 -28
  131. data/grammars/source.gdbregs.json +7 -8
  132. data/grammars/source.gdscript.json +92 -96
  133. data/grammars/source.gerber.json +38 -56
  134. data/grammars/source.gfm.json +447 -462
  135. data/grammars/source.glsl.json +58 -83
  136. data/grammars/source.gn.json +188 -193
  137. data/grammars/source.gnuplot.json +104 -120
  138. data/grammars/source.go.json +169 -181
  139. data/grammars/source.golo.json +82 -87
  140. data/grammars/source.gosu.2.json +58 -68
  141. data/grammars/source.grace.json +266 -270
  142. data/grammars/source.graphql.json +586 -596
  143. data/grammars/source.groovy.gradle.json +18 -22
  144. data/grammars/source.groovy.json +422 -433
  145. data/grammars/source.harbour.json +129 -173
  146. data/grammars/source.haskell.json +871 -772
  147. data/grammars/source.haxe.2.json +402 -413
  148. data/grammars/source.hlsl.json +6 -16
  149. data/grammars/source.hsc2hs.json +1 -4
  150. data/grammars/source.hsig.json +871 -770
  151. data/grammars/source.hss.1.json +122 -144
  152. data/grammars/source.httpspec.json +119 -123
  153. data/grammars/source.hxml.json +8 -15
  154. data/grammars/source.ideal.json +125 -125
  155. data/grammars/source.idl-dlm.json +25 -32
  156. data/grammars/source.idl.json +59 -80
  157. data/grammars/source.idris.json +171 -185
  158. data/grammars/source.inform7.json +117 -121
  159. data/grammars/source.ini.json +37 -43
  160. data/grammars/source.io.json +65 -73
  161. data/grammars/source.ioke.json +72 -78
  162. data/grammars/source.isabelle.root.json +26 -30
  163. data/grammars/source.isabelle.theory.json +46 -50
  164. data/grammars/source.j.json +18 -21
  165. data/grammars/source.jasmin.json +45 -50
  166. data/grammars/source.java-properties.json +31 -41
  167. data/grammars/source.java.json +333 -342
  168. data/grammars/source.jcl.json +15 -18
  169. data/grammars/source.jflex.json +166 -172
  170. data/grammars/source.jison.json +331 -334
  171. data/grammars/source.jisonlex-injection.json +1 -2
  172. data/grammars/source.jisonlex.json +148 -151
  173. data/grammars/source.jolie.json +37 -43
  174. data/grammars/source.jq.json +80 -87
  175. data/grammars/source.js.json +798 -818
  176. data/grammars/source.js.jsx.json +2115 -2225
  177. data/grammars/source.js.objj.json +167 -172
  178. data/grammars/source.js.regexp.json +50 -50
  179. data/grammars/source.js.regexp.replacement.json +7 -7
  180. data/grammars/source.jsdoc.json +94 -94
  181. data/grammars/source.json.json +61 -71
  182. data/grammars/source.julia.console.json +5 -6
  183. data/grammars/source.julia.json +237 -234
  184. data/grammars/source.lean.json +55 -67
  185. data/grammars/source.lid.json +6 -10
  186. data/grammars/source.lilypond.json +181 -195
  187. data/grammars/source.lisp.json +40 -50
  188. data/grammars/source.litcoffee.json +169 -183
  189. data/grammars/source.livescript.json +207 -220
  190. data/grammars/source.llvm.json +28 -38
  191. data/grammars/source.logos.json +7 -14
  192. data/grammars/source.logtalk.json +136 -141
  193. data/grammars/source.loomscript.json +77 -83
  194. data/grammars/source.lsl.json +90 -106
  195. data/grammars/source.lua.json +100 -109
  196. data/grammars/source.makefile.json +181 -188
  197. data/grammars/source.makegen.json +3 -7
  198. data/grammars/source.mask.json +260 -265
  199. data/grammars/source.mata.json +38 -46
  200. data/grammars/source.mathematica.json +155 -167
  201. data/grammars/source.matlab.json +407 -684
  202. data/grammars/source.maxscript.json +293 -281
  203. data/grammars/source.mercury.json +179 -184
  204. data/grammars/source.meson.json +52 -58
  205. data/grammars/source.meta-info.json +64 -74
  206. data/grammars/source.ml.json +107 -113
  207. data/grammars/source.modelica.json +51 -59
  208. data/grammars/source.modula2.json +33 -42
  209. data/grammars/source.monkey.json +234 -241
  210. data/grammars/source.moonscript.json +51 -56
  211. data/grammars/source.mql5.json +74 -101
  212. data/grammars/source.mupad.json +30 -72
  213. data/grammars/source.ncl.json +1 -14
  214. data/grammars/source.ne.json +39 -42
  215. data/grammars/source.nemerle.json +58 -63
  216. data/grammars/source.nesc.json +9 -15
  217. data/grammars/source.netlinx.erb.json +13 -25
  218. data/grammars/source.netlinx.json +231 -292
  219. data/grammars/source.nextflow-groovy.json +1360 -0
  220. data/grammars/source.nextflow.json +74 -0
  221. data/grammars/source.nginx.json +274 -287
  222. data/grammars/source.nim.json +442 -483
  223. data/grammars/source.nim_filter.json +6 -26
  224. data/grammars/source.nimcfg.json +38 -51
  225. data/grammars/source.ninja.json +64 -70
  226. data/grammars/source.nit.json +60 -64
  227. data/grammars/source.nix.json +269 -273
  228. data/grammars/source.nmml.json +31 -37
  229. data/grammars/source.nsis.json +66 -72
  230. data/grammars/source.nu.json +129 -139
  231. data/grammars/source.nut.json +129 -133
  232. data/grammars/source.objc++.json +3 -10
  233. data/grammars/source.objc.json +303 -314
  234. data/grammars/source.objc.platform.json +145 -151
  235. data/grammars/source.ocaml.json +506 -514
  236. data/grammars/source.ocamllex.json +108 -115
  237. data/grammars/source.ocamlyacc.json +116 -123
  238. data/grammars/source.ooc.json +148 -155
  239. data/grammars/source.opa.json +39 -49
  240. data/grammars/source.opal.json +84 -89
  241. data/grammars/source.opalsysdefs.json +9 -13
  242. data/grammars/source.opencobol.json +22 -25
  243. data/grammars/source.opentype.json +148 -152
  244. data/grammars/source.ox.json +36 -44
  245. data/grammars/source.oz.json +31 -38
  246. data/grammars/source.p4.json +49 -59
  247. data/grammars/source.pan.json +273 -278
  248. data/grammars/source.papyrus.skyrim.json +705 -781
  249. data/grammars/source.parrot.pir.json +59 -65
  250. data/grammars/source.pascal.json +54 -61
  251. data/grammars/source.pawn.json +835 -849
  252. data/grammars/source.pcb.board.json +153 -158
  253. data/grammars/source.pcb.schematic.json +134 -138
  254. data/grammars/source.pcb.sexp.json +64 -74
  255. data/grammars/source.pep8.json +28 -32
  256. data/grammars/source.perl.6.json +83 -92
  257. data/grammars/source.perl.json +711 -737
  258. data/grammars/source.perl6fe.json +1204 -1218
  259. data/grammars/source.php.zephir.json +80 -89
  260. data/grammars/source.pic.json +137 -142
  261. data/grammars/source.pig_latin.json +76 -80
  262. data/grammars/source.pike.json +23 -36
  263. data/grammars/source.po.json +74 -84
  264. data/grammars/source.pogoscript.json +23 -29
  265. data/grammars/source.pony.json +98 -108
  266. data/grammars/source.postcss.json +370 -0
  267. data/grammars/source.postscript.json +88 -97
  268. data/grammars/source.pov-ray sdl.json +36 -42
  269. data/grammars/source.powershell.json +175 -197
  270. data/grammars/source.processing.json +236 -249
  271. data/grammars/source.prolog.eclipse.json +33 -38
  272. data/grammars/source.prolog.json +66 -72
  273. data/grammars/source.protobuf.json +88 -94
  274. data/grammars/source.puppet.json +144 -151
  275. data/grammars/source.purescript.json +268 -289
  276. data/grammars/source.pyjade.json +256 -281
  277. data/grammars/source.python.django.json +13 -18
  278. data/grammars/source.python.json +3319 -3367
  279. data/grammars/source.python.salt.json +3 -7
  280. data/grammars/source.qmake.json +83 -90
  281. data/grammars/source.qml.json +57 -78
  282. data/grammars/source.quoting.perl6fe.json +666 -669
  283. data/grammars/source.r.json +75 -84
  284. data/grammars/source.racket.json +17 -38
  285. data/grammars/source.rascal.json +77 -80
  286. data/grammars/source.reason.hover.type.json +1 -1
  287. data/grammars/source.reason.json +1025 -1080
  288. data/grammars/source.rebol.json +167 -177
  289. data/grammars/source.red.json +169 -177
  290. data/grammars/source.regexp.babel.json +74 -77
  291. data/grammars/source.regexp.extended.json +4 -5
  292. data/grammars/source.regexp.json +260 -264
  293. data/grammars/source.regexp.perl6fe.json +108 -111
  294. data/grammars/source.regexp.python.json +210 -215
  295. data/grammars/source.regexp.spin.json +63 -72
  296. data/grammars/source.renpy.json +617 -687
  297. data/grammars/source.rexx.json +25 -32
  298. data/grammars/source.ring.json +84 -114
  299. data/grammars/source.rpm-spec.json +392 -401
  300. data/grammars/source.ruby.gemfile.json +9 -12
  301. data/grammars/source.ruby.json +862 -952
  302. data/grammars/source.ruby.rspec.cucumber.steps.json +90 -103
  303. data/grammars/source.rust.json +223 -281
  304. data/grammars/source.sas.json +88 -105
  305. data/grammars/source.sass.json +100 -108
  306. data/grammars/source.sbt.json +16 -23
  307. data/grammars/source.scad.json +60 -67
  308. data/grammars/source.scala.json +215 -228
  309. data/grammars/source.scaml.json +120 -135
  310. data/grammars/source.scheme.json +119 -136
  311. data/grammars/source.scilab.json +40 -47
  312. data/grammars/source.scss.json +369 -403
  313. data/grammars/source.sdbl.json +14 -25
  314. data/grammars/source.shaderlab.json +24 -27
  315. data/grammars/source.shell.json +409 -440
  316. data/grammars/source.shen.json +75 -94
  317. data/grammars/source.smali.json +232 -293
  318. data/grammars/source.smalltalk.json +60 -75
  319. data/grammars/source.smt.json +67 -82
  320. data/grammars/source.solidity.json +35 -54
  321. data/grammars/source.sp.json +40 -45
  322. data/grammars/source.sparql.json +3 -8
  323. data/grammars/source.spin.json +277 -297
  324. data/grammars/source.sqf.json +34 -44
  325. data/grammars/source.sql.json +142 -156
  326. data/grammars/source.stan.json +201 -160
  327. data/grammars/source.stata.json +57 -68
  328. data/grammars/source.strings.json +26 -30
  329. data/grammars/source.stylus.json +558 -565
  330. data/grammars/source.supercollider.json +33 -40
  331. data/grammars/source.swift.json +999 -1077
  332. data/grammars/source.systemverilog.json +351 -365
  333. data/grammars/source.tcl.json +77 -94
  334. data/grammars/source.tea.json +61 -67
  335. data/grammars/source.terra.json +25 -32
  336. data/grammars/source.terraform.json +68 -88
  337. data/grammars/source.thrift.json +300 -306
  338. data/grammars/source.tl.json +112 -117
  339. data/grammars/source.tla.json +65 -69
  340. data/grammars/source.toc.json +21 -25
  341. data/grammars/source.toml.json +117 -122
  342. data/grammars/source.ts.json +2838 -2774
  343. data/grammars/source.tsx.json +180 -184
  344. data/grammars/source.turing.json +970 -974
  345. data/grammars/source.turtle.json +124 -140
  346. data/grammars/source.txl.json +23 -37
  347. data/grammars/source.ucfconstraints.json +16 -21
  348. data/grammars/source.ur.json +15 -27
  349. data/grammars/source.vala.json +221 -235
  350. data/grammars/source.varnish.vcl.json +117 -129
  351. data/grammars/source.vbnet.json +69 -106
  352. data/grammars/source.verilog.json +101 -107
  353. data/grammars/source.vhdl.json +437 -445
  354. data/grammars/source.viml.json +540 -550
  355. data/grammars/source.wavefront.mtl.json +274 -277
  356. data/grammars/source.wavefront.obj.json +781 -784
  357. data/grammars/source.wdl.json +66 -46
  358. data/grammars/source.webassembly.json +97 -102
  359. data/grammars/source.webidl.json +311 -326
  360. data/grammars/source.x10.json +28 -32
  361. data/grammars/source.x86asm.json +21 -26
  362. data/grammars/source.xc.json +164 -172
  363. data/grammars/source.xq.json +81 -92
  364. data/grammars/source.xtend.json +199 -208
  365. data/grammars/source.yaml-ext.json +118 -124
  366. data/grammars/source.yaml.json +155 -174
  367. data/grammars/source.yaml.salt.json +113 -116
  368. data/grammars/source.yang.json +10 -13
  369. data/grammars/source.yara.json +98 -0
  370. data/grammars/text.bibtex.json +95 -100
  371. data/grammars/text.cfml.basic.json +403 -404
  372. data/grammars/text.elixir.json +18 -23
  373. data/grammars/text.error-list.json +15 -16
  374. data/grammars/text.find-refs.json +487 -488
  375. data/grammars/text.gherkin.feature.json +45 -53
  376. data/grammars/text.haml.json +176 -189
  377. data/grammars/text.hamlc.json +82 -88
  378. data/grammars/text.html.abl.json +16 -21
  379. data/grammars/text.html.asciidoc.json +139 -153
  380. data/grammars/text.html.asdoc.json +145 -155
  381. data/grammars/text.html.asp.json +23 -28
  382. data/grammars/text.html.basic.json +323 -338
  383. data/grammars/text.html.cfm.json +316 -325
  384. data/grammars/text.html.creole.json +177 -189
  385. data/grammars/text.html.django.json +27 -33
  386. data/grammars/text.html.ecr.json +21 -25
  387. data/grammars/text.html.elixir.json +3 -9
  388. data/grammars/text.html.erb.json +81 -85
  389. data/grammars/text.html.erlang.yaws.json +24 -29
  390. data/grammars/text.html.factor.json +5 -11
  391. data/grammars/text.html.ftl.json +16 -25
  392. data/grammars/text.html.handlebars.json +579 -598
  393. data/grammars/text.html.javadoc.json +426 -0
  394. data/grammars/text.html.js.json +11 -17
  395. data/grammars/text.html.jsp.json +377 -384
  396. data/grammars/text.html.liquid.json +8 -18
  397. data/grammars/text.html.mako.json +257 -275
  398. data/grammars/text.html.markdown.source.gfm.apib.json +419 -427
  399. data/grammars/text.html.markdown.source.gfm.mson.json +405 -414
  400. data/grammars/text.html.mediawiki.json +318 -344
  401. data/grammars/text.html.php.blade.json +2134 -2140
  402. data/grammars/text.html.php.json +980 -1013
  403. data/grammars/text.html.slash.json +101 -107
  404. data/grammars/text.html.smarty.json +75 -83
  405. data/grammars/text.html.soy.json +250 -253
  406. data/grammars/text.html.ssp.json +18 -24
  407. data/grammars/text.html.tcl.json +17 -24
  408. data/grammars/text.html.twig.json +712 -718
  409. data/grammars/text.idl-idldoc.json +5 -9
  410. data/grammars/text.jade.json +213 -235
  411. data/grammars/text.junit-test-report.json +25 -28
  412. data/grammars/text.log.latex.json +44 -46
  413. data/grammars/text.marko.json +370 -401
  414. data/grammars/text.python.console.json +3 -7
  415. data/grammars/text.python.traceback.json +2 -5
  416. data/grammars/text.rdoc.json +15 -19
  417. data/grammars/text.restructuredtext.clean.json +8 -11
  418. data/grammars/text.restructuredtext.json +886 -873
  419. data/grammars/text.robot.json +26 -36
  420. data/grammars/text.roff.json +2852 -2915
  421. data/grammars/text.runoff.json +56 -69
  422. data/grammars/text.sfd.json +151 -155
  423. data/grammars/text.shell-session.json +5 -8
  424. data/grammars/text.slim.json +184 -210
  425. data/grammars/text.srt.json +54 -57
  426. data/grammars/text.tex.json +98 -105
  427. data/grammars/text.tex.latex.beamer.json +14 -20
  428. data/grammars/text.tex.latex.haskell.json +883 -782
  429. data/grammars/text.tex.latex.json +281 -291
  430. data/grammars/text.tex.latex.memoir.json +39 -46
  431. data/grammars/text.tex.latex.rd.json +32 -38
  432. data/grammars/text.xml.ant.json +62 -69
  433. data/grammars/text.xml.flex-config.json +1009 -1013
  434. data/grammars/text.xml.genshi.json +10 -16
  435. data/grammars/text.xml.json +117 -130
  436. data/grammars/text.xml.pom.json +235 -240
  437. data/grammars/text.xml.xsl.json +31 -37
  438. data/grammars/text.zone_file.json +24 -29
  439. data/lib/linguist/blob.rb +10 -1
  440. data/lib/linguist/blob_helper.rb +4 -1
  441. data/lib/linguist/file_blob.rb +5 -0
  442. data/lib/linguist/generated.rb +16 -0
  443. data/lib/linguist/heuristics.rb +23 -11
  444. data/lib/linguist/language.rb +3 -6
  445. data/lib/linguist/languages.json +1 -1
  446. data/lib/linguist/languages.yml +74 -12
  447. data/lib/linguist/lazy_blob.rb +15 -1
  448. data/lib/linguist/linguist.bundle +0 -0
  449. data/lib/linguist/samples.json +1666 -3381
  450. data/lib/linguist/shebang.rb +2 -0
  451. data/lib/linguist/strategy/modeline.rb +2 -0
  452. data/lib/linguist/vendor.yml +5 -6
  453. data/lib/linguist/version.rb +1 -1
  454. metadata +12 -11
  455. data/grammars/source.elm.json +0 -381
  456. data/grammars/source.nant-build.json +0 -86
  457. data/grammars/source.octave.json +0 -451
  458. data/grammars/text.html.mediawiki.elm-build-output.json +0 -111
  459. data/grammars/text.html.mediawiki.elm-documentation.json +0 -22
  460. data/grammars/text.html.vue.json +0 -936
@@ -1,41 +1,5 @@
1
1
  {
2
- "fileTypes": [
3
-
4
- ],
5
2
  "scopeName": "hint.haskell",
6
- "macros": {
7
- "identStartCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}]",
8
- "identContCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}']",
9
- "identCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']",
10
- "functionNameOne": "[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
11
- "classNameOne": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
12
- "functionName": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
13
- "className": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*",
14
- "operatorChar": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))",
15
- "operator": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+",
16
- "operatorFun": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))",
17
- "basicChar": "[\\ -\\[\\]-~]",
18
- "escapeChar": "\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])",
19
- "octalChar": "(?:\\\\o[0-7]+)",
20
- "hexChar": "(?:\\\\x[0-9A-Fa-f]+)",
21
- "controlChar": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
22
- "character": "(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
23
- "functionList": "((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)",
24
- "functionTypeDeclaration": "(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
25
- "doubleColonOperator": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
26
- "ctorTypeDeclaration": "(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
27
- "ctorArgs": "(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)",
28
- "ctor": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)))*)?))",
29
- "typeDeclOne": "(?:(?!(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))",
30
- "typeDecl": "(?>(?:(?:(?!(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)))(?:\\s+(?:(?!(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)))*)",
31
- "indentChar": "[ \\t]",
32
- "indentBlockStart": "^([ \\t]*)",
33
- "indentBlockEnd": "^(?!\\1[ \\t]|[ \\t]*$)",
34
- "maybeBirdTrack": "^",
35
- "lb": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))",
36
- "rb": "(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
37
- "b": "(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))|(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))"
38
- },
39
3
  "patterns": [
40
4
  {
41
5
  "include": "#function_type_declaration"
@@ -45,13 +9,37 @@
45
9
  }
46
10
  ],
47
11
  "repository": {
12
+ "assignment_op": {
13
+ "patterns": [
14
+ {
15
+ "match": "=",
16
+ "captures": {
17
+ "0": {
18
+ "name": "keyword.operator.assignment.haskell"
19
+ }
20
+ }
21
+ }
22
+ ]
23
+ },
24
+ "attribute_name": {
25
+ "patterns": [
26
+ {
27
+ "name": "entity.other.attribute-name.haskell",
28
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
29
+ }
30
+ ]
31
+ },
48
32
  "block_comment": {
49
33
  "patterns": [
50
34
  {
51
35
  "name": "comment.block.haddock.haskell",
52
36
  "begin": "\\{-\\s*[|^]",
53
37
  "end": "-\\}",
54
- "applyEndPatternLast": 1,
38
+ "patterns": [
39
+ {
40
+ "include": "#block_comment"
41
+ }
42
+ ],
55
43
  "beginCaptures": {
56
44
  "0": {
57
45
  "name": "punctuation.definition.comment.haddock.haskell"
@@ -62,17 +50,17 @@
62
50
  "name": "punctuation.definition.comment.haddock.haskell"
63
51
  }
64
52
  },
65
- "patterns": [
66
- {
67
- "include": "#block_comment"
68
- }
69
- ]
53
+ "applyEndPatternLast": true
70
54
  },
71
55
  {
72
56
  "name": "comment.block.haskell",
73
57
  "begin": "\\{-",
74
58
  "end": "-\\}",
75
- "applyEndPatternLast": 1,
59
+ "patterns": [
60
+ {
61
+ "include": "#block_comment"
62
+ }
63
+ ],
76
64
  "beginCaptures": {
77
65
  "0": {
78
66
  "name": "punctuation.definition.comment.block.start.haskell"
@@ -83,14 +71,77 @@
83
71
  "name": "punctuation.definition.comment.block.end.haskell"
84
72
  }
85
73
  },
74
+ "applyEndPatternLast": true
75
+ }
76
+ ]
77
+ },
78
+ "c_preprocessor": {
79
+ "patterns": [
80
+ {
81
+ "name": "meta.preprocessor.c.haskell",
82
+ "begin": "^(?=#)",
83
+ "end": "(?\u003c!\\\\)(?=$)",
86
84
  "patterns": [
87
85
  {
88
- "include": "#block_comment"
86
+ "name": "keyword.control.c.haskell",
87
+ "match": "^#\\S+"
89
88
  }
90
89
  ]
91
90
  }
92
91
  ]
93
92
  },
93
+ "characters": {
94
+ "patterns": [
95
+ {
96
+ "name": "constant.character.escape.haskell",
97
+ "match": "\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])"
98
+ },
99
+ {
100
+ "name": "constant.character.escape.octal.haskell",
101
+ "match": "(?:\\\\o[0-7]+)"
102
+ },
103
+ {
104
+ "name": "constant.character.escape.hexadecimal.haskell",
105
+ "match": "(?:\\\\x[0-9A-Fa-f]+)"
106
+ },
107
+ {
108
+ "name": "constant.character.escape.control.haskell",
109
+ "match": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])"
110
+ }
111
+ ]
112
+ },
113
+ "class_decl": {
114
+ "patterns": [
115
+ {
116
+ "name": "meta.declaration.class.haskell",
117
+ "begin": "^([ \\t]*)(class)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
118
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)",
119
+ "patterns": [
120
+ {
121
+ "include": "#type_signature"
122
+ }
123
+ ],
124
+ "beginCaptures": {
125
+ "2": {
126
+ "name": "keyword.other.class.haskell"
127
+ }
128
+ },
129
+ "endCaptures": {
130
+ "1": {
131
+ "name": "keyword.other.haskell"
132
+ }
133
+ }
134
+ }
135
+ ]
136
+ },
137
+ "comma": {
138
+ "patterns": [
139
+ {
140
+ "name": "punctuation.separator.comma.haskell",
141
+ "match": ","
142
+ }
143
+ ]
144
+ },
94
145
  "comments": {
95
146
  "patterns": [
96
147
  {
@@ -113,7 +164,7 @@
113
164
  ]
114
165
  },
115
166
  {
116
- "begin": "(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))",
167
+ "begin": "(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
117
168
  "end": "(?!\\G)",
118
169
  "patterns": [
119
170
  {
@@ -133,169 +184,246 @@
133
184
  }
134
185
  ]
135
186
  },
136
- "characters": {
187
+ "common_toplevel": {
137
188
  "patterns": [
138
189
  {
139
- "match": "\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])",
140
- "name": "constant.character.escape.haskell"
190
+ "include": "#class_decl"
191
+ },
192
+ {
193
+ "include": "#instance_decl"
194
+ },
195
+ {
196
+ "include": "#deriving_instance_decl"
197
+ },
198
+ {
199
+ "include": "#foreign_import"
200
+ },
201
+ {
202
+ "include": "#regular_import"
141
203
  },
142
204
  {
143
- "match": "(?:\\\\o[0-7]+)",
144
- "name": "constant.character.escape.octal.haskell"
205
+ "include": "#data_decl"
145
206
  },
146
207
  {
147
- "match": "(?:\\\\x[0-9A-Fa-f]+)",
148
- "name": "constant.character.escape.hexadecimal.haskell"
208
+ "include": "#type_alias"
149
209
  },
150
210
  {
151
- "match": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
152
- "name": "constant.character.escape.control.haskell"
211
+ "include": "#c_preprocessor"
153
212
  }
154
213
  ]
155
214
  },
156
- "infix_op": {
215
+ "ctor_type_declaration": {
157
216
  "patterns": [
158
217
  {
159
- "name": "entity.name.function.infix.haskell",
160
- "match": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))"
218
+ "name": "meta.ctor.type-declaration.haskell",
219
+ "contentName": "meta.type-signature.haskell",
220
+ "begin": "^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))))",
221
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
222
+ "patterns": [
223
+ {
224
+ "include": "#type_signature"
225
+ }
226
+ ],
227
+ "beginCaptures": {
228
+ "2": {
229
+ "patterns": [
230
+ {
231
+ "include": "#type_ctor"
232
+ },
233
+ {
234
+ "include": "#infix_op"
235
+ }
236
+ ]
237
+ },
238
+ "3": {
239
+ "name": "keyword.other.double-colon.haskell"
240
+ }
241
+ }
161
242
  }
162
243
  ]
163
244
  },
164
- "module_exports": {
245
+ "data_decl": {
165
246
  "patterns": [
166
247
  {
167
- "name": "meta.declaration.exports.haskell",
168
- "begin": "\\(",
169
- "end": "\\)",
170
- "applyEndPatternLast": 1,
248
+ "name": "meta.declaration.type.data.haskell",
249
+ "begin": "^([ \\t]*)(data|newtype)\\s+((?:(?!=|where).)*)",
250
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
171
251
  "patterns": [
172
252
  {
173
253
  "include": "#comments"
174
254
  },
175
255
  {
176
- "include": "#function_name"
256
+ "include": "#where"
177
257
  },
178
258
  {
179
- "include": "#type_name"
259
+ "include": "#deriving"
180
260
  },
181
261
  {
182
- "include": "#comma"
262
+ "include": "#assignment_op"
183
263
  },
184
264
  {
185
- "name": "meta.other.constructor-list.haskell",
186
- "begin": "(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))\\s*\\(",
187
- "end": "\\)",
188
- "patterns": [
189
- {
190
- "include": "#type_ctor"
265
+ "match": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|-\u003e|=\u003e)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|-\u003e|=\u003e)+\\s*)+)))*)?))",
266
+ "captures": {
267
+ "1": {
268
+ "patterns": [
269
+ {
270
+ "include": "#type_ctor"
271
+ }
272
+ ]
191
273
  },
274
+ "2": {
275
+ "name": "meta.type-signature.haskell",
276
+ "patterns": [
277
+ {
278
+ "include": "#type_signature"
279
+ }
280
+ ]
281
+ }
282
+ }
283
+ },
284
+ {
285
+ "match": "\\|",
286
+ "captures": {
287
+ "0": {
288
+ "name": "punctuation.separator.pipe.haskell"
289
+ }
290
+ }
291
+ },
292
+ {
293
+ "name": "meta.declaration.type.data.record.block.haskell",
294
+ "begin": "\\{",
295
+ "end": "\\}",
296
+ "patterns": [
192
297
  {
193
- "include": "#attribute_name"
298
+ "include": "#comments"
194
299
  },
195
300
  {
196
301
  "include": "#comma"
197
302
  },
198
303
  {
199
- "match": "\\.\\.",
200
- "name": "keyword.operator.wildcard.haskell"
304
+ "include": "#record_field_declaration"
201
305
  }
202
- ]
306
+ ],
307
+ "beginCaptures": {
308
+ "0": {
309
+ "name": "keyword.operator.record.begin.haskell"
310
+ }
311
+ },
312
+ "endCaptures": {
313
+ "0": {
314
+ "name": "keyword.operator.record.end.haskell"
315
+ }
316
+ }
203
317
  },
204
318
  {
205
- "include": "#infix_op"
319
+ "include": "#ctor_type_declaration"
206
320
  }
207
- ]
321
+ ],
322
+ "beginCaptures": {
323
+ "2": {
324
+ "name": "keyword.other.data.haskell"
325
+ },
326
+ "3": {
327
+ "name": "meta.type-signature.haskell",
328
+ "patterns": [
329
+ {
330
+ "include": "#family_and_instance"
331
+ },
332
+ {
333
+ "include": "#type_signature"
334
+ }
335
+ ]
336
+ }
337
+ }
208
338
  }
209
339
  ]
210
340
  },
211
- "module_name": {
341
+ "deriving": {
212
342
  "patterns": [
213
343
  {
214
- "name": "support.other.module.haskell",
215
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
344
+ "include": "#deriving_list"
345
+ },
346
+ {
347
+ "include": "#deriving_simple"
348
+ },
349
+ {
350
+ "include": "#deriving_keyword"
216
351
  }
217
352
  ]
218
353
  },
219
- "module_name_prefix": {
354
+ "deriving_instance_decl": {
220
355
  "patterns": [
221
356
  {
222
- "name": "support.other.module.haskell",
223
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\."
357
+ "name": "meta.declaration.instance.deriving.haskell",
358
+ "contentName": "meta.type-signature.haskell",
359
+ "begin": "^([ \\t]*)(deriving\\s+instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
360
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
361
+ "patterns": [
362
+ {
363
+ "include": "#pragma"
364
+ },
365
+ {
366
+ "include": "#type_signature"
367
+ }
368
+ ],
369
+ "beginCaptures": {
370
+ "2": {
371
+ "name": "keyword.other.haskell"
372
+ }
373
+ }
224
374
  }
225
375
  ]
226
376
  },
227
- "pragma": {
377
+ "deriving_keyword": {
228
378
  "patterns": [
229
379
  {
230
- "name": "meta.preprocessor.haskell",
231
- "begin": "\\{-#",
232
- "end": "#-\\}",
233
- "patterns": [
234
- {
235
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))((?i:NOTINLINE CONSTRUCTORLIKE|NOINLINE CONSTRUCTORLIKE|INLINE CONSTRUCTORLIKE|SPECIALISE NOTINLINE|SPECIALIZE NOTINLINE|SPECIALISE NOINLINE|SPECIALIZE NOINLINE|NOTINLINE CONLIKE|SPECIALISE INLINE|SPECIALIZE INLINE|NOINLINE CONLIKE|VECTORISE SCALAR|VECTORIZE SCALAR|OPTIONS_HADDOCK|INLINE CONLIKE|OPTIONS_DERIVE|OPTIONS_CATCH|OPTIONS_NHC98|OPTIONS_HUGS|OVERLAPPABLE|NOVECTORISE|NOVECTORIZE|OPTIONS_GHC|OPTIONS_JHC|OPTIONS_YHC|OVERLAPPING|DEPRECATED|INCOHERENT|INLINEABLE|SPECIALISE|SPECIALIZE|GENERATED|INLINABLE|NOTINLINE|VECTORISE|VECTORIZE|CONTRACT|LANGUAGE|NOINLINE|NOUNPACK|OVERLAPS|INCLUDE|MINIMAL|OPTIONS|WARNING|CFILES|INLINE|SOURCE|UNPACK|CTYPE|RULES|CORE|LINE|ANN|SCC))(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
236
- "name": "keyword.other.preprocessor.haskell"
380
+ "name": "meta.deriving.haskell",
381
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
382
+ "captures": {
383
+ "1": {
384
+ "name": "keyword.other.haskell"
237
385
  }
238
- ]
386
+ }
239
387
  }
240
388
  ]
241
389
  },
242
- "function_type_declaration": {
390
+ "deriving_list": {
243
391
  "patterns": [
244
392
  {
245
- "name": "meta.function.type-declaration.haskell",
246
- "begin": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
247
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
248
- "contentName": "meta.type-signature.haskell",
249
- "beginCaptures": {
250
- "2": {
251
- "patterns": [
252
- {
253
- "include": "#function_name"
254
- },
255
- {
256
- "include": "#infix_op"
257
- }
258
- ]
259
- },
260
- "3": {
261
- "name": "keyword.other.double-colon.haskell"
262
- }
263
- },
393
+ "name": "meta.deriving.haskell",
394
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*\\(",
395
+ "end": "\\)",
264
396
  "patterns": [
265
397
  {
266
- "include": "#type_signature"
398
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
399
+ "captures": {
400
+ "1": {
401
+ "name": "entity.other.inherited-class.haskell"
402
+ }
403
+ }
267
404
  }
268
- ]
405
+ ],
406
+ "beginCaptures": {
407
+ "1": {
408
+ "name": "keyword.other.haskell"
409
+ }
410
+ }
269
411
  }
270
412
  ]
271
413
  },
272
- "lazy_function_type_signature": {
414
+ "deriving_simple": {
273
415
  "patterns": [
274
416
  {
275
- "name": "meta.function.type-declaration.haskell",
276
- "begin": "^([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$",
277
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
278
- "contentName": "meta.type-signature.haskell",
279
- "beginCaptures": {
280
- "2": {
281
- "patterns": [
282
- {
283
- "include": "#function_name"
284
- },
285
- {
286
- "include": "#infix_op"
287
- }
288
- ]
289
- }
290
- },
291
- "patterns": [
292
- {
293
- "include": "#double_colon_operator"
417
+ "name": "meta.deriving.haskell",
418
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
419
+ "captures": {
420
+ "1": {
421
+ "name": "keyword.other.haskell"
294
422
  },
295
- {
296
- "include": "#type_signature"
423
+ "2": {
424
+ "name": "entity.other.inherited-class.haskell"
297
425
  }
298
- ]
426
+ }
299
427
  }
300
428
  ]
301
429
  },
@@ -303,81 +431,117 @@
303
431
  "patterns": [
304
432
  {
305
433
  "name": "keyword.other.double-colon.haskell",
306
- "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
434
+ "match": "(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))"
307
435
  }
308
436
  ]
309
437
  },
310
- "ctor_type_declaration": {
438
+ "empty_list": {
311
439
  "patterns": [
312
440
  {
313
- "name": "meta.ctor.type-declaration.haskell",
314
- "begin": "^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
441
+ "name": "constant.language.empty-list.haskell",
442
+ "match": "\\[\\]"
443
+ }
444
+ ]
445
+ },
446
+ "family_and_instance": {
447
+ "patterns": [
448
+ {
449
+ "name": "keyword.other.haskell",
450
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(family|instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
451
+ }
452
+ ]
453
+ },
454
+ "foreign_import": {
455
+ "patterns": [
456
+ {
457
+ "name": "meta.foreign.haskell",
458
+ "begin": "^([ \\t]*)(foreign)\\s+(import|export)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
315
459
  "end": "^(?!\\1[ \\t]|[ \\t]*$)",
316
- "contentName": "meta.type-signature.haskell",
460
+ "patterns": [
461
+ {
462
+ "match": "(?:un)?safe",
463
+ "captures": {
464
+ "0": {
465
+ "name": "keyword.other.haskell"
466
+ }
467
+ }
468
+ },
469
+ {
470
+ "include": "#function_type_declaration"
471
+ },
472
+ {
473
+ "include": "#haskell_expr"
474
+ },
475
+ {
476
+ "include": "#comments"
477
+ }
478
+ ],
317
479
  "beginCaptures": {
318
480
  "2": {
319
- "patterns": [
320
- {
321
- "include": "#type_ctor"
322
- },
323
- {
324
- "include": "#infix_op"
325
- }
326
- ]
481
+ "name": "keyword.other.haskell"
327
482
  },
328
483
  "3": {
329
- "name": "keyword.other.double-colon.haskell"
330
- }
331
- },
332
- "patterns": [
333
- {
334
- "include": "#type_signature"
484
+ "name": "keyword.other.haskell"
335
485
  }
336
- ]
486
+ }
337
487
  }
338
488
  ]
339
489
  },
340
- "record_field_declaration": {
490
+ "function_name": {
341
491
  "patterns": [
342
492
  {
343
- "name": "meta.record-field.type-declaration.haskell",
344
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
345
- "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))|})",
493
+ "name": "entity.name.function.haskell",
494
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
495
+ }
496
+ ]
497
+ },
498
+ "function_type_declaration": {
499
+ "patterns": [
500
+ {
501
+ "name": "meta.function.type-declaration.haskell",
346
502
  "contentName": "meta.type-signature.haskell",
503
+ "begin": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))))",
504
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)|(?=(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
505
+ "patterns": [
506
+ {
507
+ "include": "#type_signature"
508
+ }
509
+ ],
347
510
  "beginCaptures": {
348
- "1": {
511
+ "2": {
349
512
  "patterns": [
350
513
  {
351
- "include": "#attribute_name"
514
+ "include": "#function_name"
352
515
  },
353
516
  {
354
517
  "include": "#infix_op"
355
518
  }
356
519
  ]
357
520
  },
358
- "2": {
521
+ "3": {
359
522
  "name": "keyword.other.double-colon.haskell"
360
523
  }
361
- },
362
- "patterns": [
363
- {
364
- "include": "#type_signature"
365
- }
366
- ]
524
+ }
367
525
  }
368
526
  ]
369
527
  },
370
- "type_signature": {
528
+ "function_type_declaration_with_scoped_type": {
371
529
  "patterns": [
372
530
  {
373
- "include": "#pragma"
531
+ "include": "#scoped_type_override"
374
532
  },
375
533
  {
376
- "include": "#comments"
534
+ "include": "#function_type_declaration"
377
535
  },
378
536
  {
379
- "name": "keyword.other.forall.haskell",
380
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
537
+ "include": "#multiline_type_declaration"
538
+ }
539
+ ]
540
+ },
541
+ "haskell_expr": {
542
+ "patterns": [
543
+ {
544
+ "include": "#infix_function"
381
545
  },
382
546
  {
383
547
  "include": "#unit"
@@ -385,106 +549,154 @@
385
549
  {
386
550
  "include": "#empty_list"
387
551
  },
552
+ {
553
+ "include": "#quasi_quotes"
554
+ },
555
+ {
556
+ "include": "#keywords"
557
+ },
558
+ {
559
+ "include": "#pragma"
560
+ },
388
561
  {
389
562
  "include": "#string"
390
563
  },
391
564
  {
392
- "name": "keyword.other.arrow.haskell",
393
- "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(->|→)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
565
+ "include": "#newline_escape"
394
566
  },
395
567
  {
396
- "name": "keyword.other.big-arrow.haskell",
397
- "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(=>|⇒)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
568
+ "include": "#quoted_character"
569
+ },
570
+ {
571
+ "include": "#comments"
572
+ },
573
+ {
574
+ "include": "#infix_op"
575
+ },
576
+ {
577
+ "include": "#comma"
578
+ },
579
+ {
580
+ "include": "#lit_num"
581
+ },
582
+ {
583
+ "include": "#scoped_type"
398
584
  },
399
585
  {
400
586
  "include": "#operator"
401
587
  },
402
588
  {
403
- "name": "variable.other.generic-type.haskell",
404
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
589
+ "include": "#identifier"
405
590
  },
406
591
  {
407
- "include": "#type_name"
592
+ "include": "#type_ctor"
408
593
  }
409
594
  ]
410
595
  },
411
- "unit": {
596
+ "haskell_source": {
412
597
  "patterns": [
413
598
  {
414
- "name": "constant.language.unit.haskell",
415
- "match": "\\(\\)"
416
- }
417
- ]
418
- },
419
- "empty_list": {
420
- "patterns": [
599
+ "include": "#shebang"
600
+ },
421
601
  {
422
- "name": "constant.language.empty-list.haskell",
423
- "match": "\\[\\]"
602
+ "include": "#module_decl"
603
+ },
604
+ {
605
+ "include": "#haskell_toplevel"
424
606
  }
425
607
  ]
426
608
  },
427
- "deriving": {
609
+ "haskell_toplevel": {
428
610
  "patterns": [
429
611
  {
430
- "include": "#deriving_list"
612
+ "include": "#liquidhaskell_annotation"
431
613
  },
432
614
  {
433
- "include": "#deriving_simple"
615
+ "include": "#common_toplevel"
434
616
  },
435
617
  {
436
- "include": "#deriving_keyword"
437
- }
438
- ]
439
- },
440
- "deriving_keyword": {
441
- "patterns": [
618
+ "include": "#function_type_declaration_with_scoped_type"
619
+ },
442
620
  {
443
- "name": "meta.deriving.haskell",
444
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
445
- "captures": {
446
- "1": {
447
- "name": "keyword.other.haskell"
448
- }
449
- }
621
+ "include": "#haskell_expr"
450
622
  }
451
623
  ]
452
624
  },
453
- "deriving_list": {
625
+ "hsig_decl": {
454
626
  "patterns": [
455
627
  {
456
- "name": "meta.deriving.haskell",
457
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*\\(",
458
- "end": "\\)",
628
+ "name": "meta.declaration.module.haskell",
629
+ "begin": "^([ \\t]*)(signature)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
630
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)",
631
+ "patterns": [
632
+ {
633
+ "include": "#comments"
634
+ },
635
+ {
636
+ "include": "#module_name"
637
+ },
638
+ {
639
+ "include": "#module_exports"
640
+ },
641
+ {
642
+ "include": "#invalid"
643
+ }
644
+ ],
459
645
  "beginCaptures": {
460
- "1": {
646
+ "2": {
461
647
  "name": "keyword.other.haskell"
462
648
  }
463
649
  },
464
- "patterns": [
465
- {
466
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
467
- "captures": {
468
- "1": {
469
- "name": "entity.other.inherited-class.haskell"
470
- }
471
- }
650
+ "endCaptures": {
651
+ "1": {
652
+ "name": "keyword.other.haskell"
472
653
  }
473
- ]
654
+ }
474
655
  }
475
656
  ]
476
657
  },
477
- "deriving_simple": {
658
+ "hsig_source": {
478
659
  "patterns": [
479
660
  {
480
- "name": "meta.deriving.haskell",
481
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
661
+ "include": "#hsig_decl"
662
+ },
663
+ {
664
+ "include": "#hsig_toplevel"
665
+ }
666
+ ]
667
+ },
668
+ "hsig_toplevel": {
669
+ "patterns": [
670
+ {
671
+ "include": "#common_toplevel"
672
+ },
673
+ {
674
+ "include": "#function_type_declaration"
675
+ },
676
+ {
677
+ "include": "#lazy_function_type_signature"
678
+ },
679
+ {
680
+ "include": "#comments"
681
+ }
682
+ ]
683
+ },
684
+ "identifier": {
685
+ "patterns": [
686
+ {
687
+ "name": "identifier.haskell",
688
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
482
689
  "captures": {
483
- "1": {
484
- "name": "keyword.other.haskell"
485
- },
486
- "2": {
487
- "name": "entity.other.inherited-class.haskell"
690
+ "0": {
691
+ "patterns": [
692
+ {
693
+ "include": "#module_name_prefix"
694
+ },
695
+ {
696
+ "name": "support.function.prelude.$1.haskell",
697
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(abs|acos|acosh|all|and|any|appendFile|asTypeOf|asin|asinh|atan|atan2|atanh|break|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|errorWithoutStackTrace|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldMap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|mappend|max|maxBound|maximum|maybe|mconcat|mempty|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|pure|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequenceA|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|traverse|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
698
+ }
699
+ ]
488
700
  }
489
701
  }
490
702
  }
@@ -506,72 +718,42 @@
506
718
  }
507
719
  ]
508
720
  },
509
- "quasi_quotes": {
721
+ "infix_op": {
510
722
  "patterns": [
511
723
  {
512
- "begin": "(\\[)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(\\|)",
513
- "end": "(\\|)(\\])",
514
- "beginCaptures": {
515
- "1": {
516
- "name": "punctuation.definition.quasiquotes.begin.haskell"
517
- },
518
- "2": {
519
- "name": "entity.name.tag.haskell",
724
+ "name": "entity.name.function.operator.haskell",
725
+ "match": "(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))",
726
+ "captures": {
727
+ "0": {
520
728
  "patterns": [
521
729
  {
522
730
  "include": "#module_name_prefix"
731
+ },
732
+ {
733
+ "name": "support.operator.prelude.haskell",
734
+ "match": "^\\((\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)\\)$"
523
735
  }
524
736
  ]
525
737
  }
526
- },
527
- "endCaptures": {
528
- "2": {
529
- "name": "punctuation.definition.quasiquotes.end.haskell"
530
- }
531
- },
532
- "contentName": "string.quoted.quasiquotes.haskell"
738
+ }
533
739
  }
534
740
  ]
535
741
  },
536
- "module_decl": {
742
+ "instance_decl": {
537
743
  "patterns": [
538
744
  {
539
- "name": "meta.declaration.module.haskell",
540
- "begin": "^([ \\t]*)(module)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
541
- "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)",
542
- "beginCaptures": {
543
- "2": {
544
- "name": "keyword.other.haskell"
545
- }
546
- },
547
- "endCaptures": {
548
- "1": {
549
- "name": "keyword.other.haskell"
550
- }
551
- },
745
+ "name": "meta.declaration.instance.haskell",
746
+ "contentName": "meta.type-signature.haskell",
747
+ "begin": "^([ \\t]*)(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
748
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)",
552
749
  "patterns": [
553
750
  {
554
- "include": "#comments"
555
- },
556
- {
557
- "include": "#module_name"
558
- },
559
- {
560
- "include": "#module_exports"
751
+ "include": "#pragma"
561
752
  },
562
753
  {
563
- "include": "#invalid"
754
+ "include": "#type_signature"
564
755
  }
565
- ]
566
- }
567
- ]
568
- },
569
- "hsig_decl": {
570
- "patterns": [
571
- {
572
- "name": "meta.declaration.module.haskell",
573
- "begin": "^([ \\t]*)(signature)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
574
- "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)",
756
+ ],
575
757
  "beginCaptures": {
576
758
  "2": {
577
759
  "name": "keyword.other.haskell"
@@ -581,378 +763,319 @@
581
763
  "1": {
582
764
  "name": "keyword.other.haskell"
583
765
  }
584
- },
585
- "patterns": [
586
- {
587
- "include": "#comments"
588
- },
589
- {
590
- "include": "#module_name"
591
- },
592
- {
593
- "include": "#module_exports"
594
- },
595
- {
596
- "include": "#invalid"
597
- }
598
- ]
766
+ }
599
767
  }
600
768
  ]
601
769
  },
602
- "class_decl": {
770
+ "invalid": {
603
771
  "patterns": [
604
772
  {
605
- "name": "meta.declaration.class.haskell",
606
- "begin": "^([ \\t]*)(class)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
607
- "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)",
608
- "beginCaptures": {
609
- "2": {
610
- "name": "keyword.other.class.haskell"
611
- }
612
- },
613
- "endCaptures": {
614
- "1": {
615
- "name": "keyword.other.haskell"
616
- }
617
- },
618
- "patterns": [
619
- {
620
- "include": "#type_signature"
621
- }
622
- ]
773
+ "name": "invalid.illegal.character-not-allowed-here.haskell",
774
+ "match": "\\S+"
623
775
  }
624
776
  ]
625
777
  },
626
- "instance_decl": {
778
+ "keywords": {
627
779
  "patterns": [
628
780
  {
629
- "name": "meta.declaration.instance.haskell",
630
- "begin": "^([ \\t]*)(instance)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
631
- "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)",
781
+ "name": "keyword.other.$1.haskell",
782
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving|where|data|type|newtype)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
783
+ },
784
+ {
785
+ "name": "keyword.operator.$1.haskell",
786
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(infix[lr]?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
787
+ },
788
+ {
789
+ "name": "keyword.control.$1.haskell",
790
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(do|if|then|else|case|of|let|in|default|mdo|rec|proc)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
791
+ }
792
+ ]
793
+ },
794
+ "lazy_function_type_signature": {
795
+ "patterns": [
796
+ {
797
+ "name": "meta.function.type-declaration.haskell",
632
798
  "contentName": "meta.type-signature.haskell",
633
- "beginCaptures": {
634
- "2": {
635
- "name": "keyword.other.haskell"
636
- }
637
- },
638
- "endCaptures": {
639
- "1": {
640
- "name": "keyword.other.haskell"
641
- }
642
- },
799
+ "begin": "^([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$",
800
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
643
801
  "patterns": [
644
802
  {
645
- "include": "#pragma"
803
+ "include": "#double_colon_operator"
646
804
  },
647
805
  {
648
806
  "include": "#type_signature"
649
807
  }
650
- ]
808
+ ],
809
+ "beginCaptures": {
810
+ "2": {
811
+ "patterns": [
812
+ {
813
+ "include": "#function_name"
814
+ },
815
+ {
816
+ "include": "#infix_op"
817
+ }
818
+ ]
819
+ }
820
+ }
651
821
  }
652
822
  ]
653
823
  },
654
- "deriving_instance_decl": {
824
+ "liquidhaskell_annotation": {
655
825
  "patterns": [
656
826
  {
657
- "name": "meta.declaration.instance.deriving.haskell",
658
- "begin": "^([ \\t]*)(deriving\\s+instance)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
659
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
660
- "contentName": "meta.type-signature.haskell",
661
- "beginCaptures": {
662
- "2": {
663
- "name": "keyword.other.haskell"
664
- }
665
- },
827
+ "name": "block.liquidhaskell.haskell",
828
+ "contentName": "block.liquidhaskell.annotation.haskell",
829
+ "begin": "\\{-@(?!#)",
830
+ "end": "@-\\}",
666
831
  "patterns": [
667
832
  {
668
- "include": "#pragma"
669
- },
670
- {
671
- "include": "#type_signature"
833
+ "include": "annotation.liquidhaskell.haskell"
672
834
  }
673
835
  ]
674
836
  }
675
837
  ]
676
838
  },
677
- "foreign_import": {
839
+ "lit_num": {
678
840
  "patterns": [
679
841
  {
680
- "name": "meta.foreign.haskell",
681
- "begin": "^([ \\t]*)(foreign)\\s+(import|export)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
682
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
683
- "beginCaptures": {
684
- "2": {
685
- "name": "keyword.other.haskell"
686
- },
687
- "3": {
688
- "name": "keyword.other.haskell"
689
- }
690
- },
842
+ "name": "constant.numeric.hexfloat.haskell",
843
+ "match": "0[xX][0-9a-fA-F_]*(?:\\.[0-9a-fA-F_]+(?:[pP][+-]?[0-9_]+)?|[pP][+-]?[0-9_]+)"
844
+ },
845
+ {
846
+ "name": "constant.numeric.hexadecimal.haskell",
847
+ "match": "0[xX][_0-9a-fA-F]+"
848
+ },
849
+ {
850
+ "name": "constant.numeric.octal.haskell",
851
+ "match": "0[oO][_0-7]+"
852
+ },
853
+ {
854
+ "name": "constant.numeric.binary.haskell",
855
+ "match": "0[bB][_01]+"
856
+ },
857
+ {
858
+ "name": "constant.numeric.float.haskell",
859
+ "match": "[0-9][0-9_]*(?:\\.[0-9_]+(?:[eE][+-]?[0-9_]+)?|[eE][+-]?[0-9_]+)"
860
+ },
861
+ {
862
+ "name": "constant.numeric.decimal.haskell",
863
+ "match": "[0-9][_0-9]*"
864
+ }
865
+ ]
866
+ },
867
+ "module_decl": {
868
+ "patterns": [
869
+ {
870
+ "name": "meta.declaration.module.haskell",
871
+ "begin": "^([ \\t]*)(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
872
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)",
691
873
  "patterns": [
692
874
  {
693
- "match": "(?:un)?safe",
694
- "captures": {
695
- "0": {
696
- "name": "keyword.other.haskell"
697
- }
698
- }
875
+ "include": "#comments"
699
876
  },
700
877
  {
701
- "include": "#function_type_declaration"
878
+ "include": "#module_name"
702
879
  },
703
880
  {
704
- "include": "#haskell_expr"
881
+ "include": "#module_exports"
705
882
  },
706
883
  {
707
- "include": "#comments"
884
+ "include": "#invalid"
708
885
  }
709
- ]
710
- }
711
- ]
712
- },
713
- "regular_import": {
714
- "patterns": [
715
- {
716
- "name": "meta.import.haskell",
717
- "begin": "^([ \\t]*)(import)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
718
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
886
+ ],
719
887
  "beginCaptures": {
720
888
  "2": {
721
889
  "name": "keyword.other.haskell"
722
890
  }
723
891
  },
724
- "patterns": [
725
- {
726
- "include": "#module_name"
727
- },
728
- {
729
- "include": "#module_exports"
730
- },
731
- {
732
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(qualified|as|hiding)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
733
- "captures": {
734
- "1": {
735
- "name": "keyword.other.haskell"
736
- }
737
- }
738
- },
739
- {
740
- "include": "#comments"
892
+ "endCaptures": {
893
+ "1": {
894
+ "name": "keyword.other.haskell"
741
895
  }
742
- ]
896
+ }
743
897
  }
744
898
  ]
745
899
  },
746
- "data_decl": {
900
+ "module_exports": {
747
901
  "patterns": [
748
902
  {
749
- "name": "meta.declaration.type.data.haskell",
750
- "begin": "^([ \\t]*)(data|newtype)\\s+((?:(?!=|where).)*)",
751
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
752
- "beginCaptures": {
753
- "2": {
754
- "name": "keyword.other.data.haskell"
755
- },
756
- "3": {
757
- "name": "meta.type-signature.haskell",
758
- "patterns": [
759
- {
760
- "include": "#family_and_instance"
761
- },
762
- {
763
- "include": "#type_signature"
764
- }
765
- ]
766
- }
767
- },
903
+ "name": "meta.declaration.exports.haskell",
904
+ "begin": "\\(",
905
+ "end": "\\)",
768
906
  "patterns": [
769
907
  {
770
908
  "include": "#comments"
771
909
  },
772
910
  {
773
- "include": "#where"
911
+ "include": "#c_preprocessor"
774
912
  },
775
913
  {
776
- "include": "#deriving"
914
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
915
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
916
+ "patterns": [
917
+ {
918
+ "include": "#invalid"
919
+ }
920
+ ],
921
+ "beginCaptures": {
922
+ "1": {
923
+ "name": "keyword.other.haskell"
924
+ }
925
+ },
926
+ "endCaptures": {
927
+ "1": {
928
+ "name": "support.other.module.haskell"
929
+ }
930
+ }
777
931
  },
778
932
  {
779
- "include": "#assignment_op"
933
+ "include": "#function_name"
780
934
  },
781
935
  {
782
- "match": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)))*)?))",
783
- "captures": {
784
- "1": {
785
- "patterns": [
786
- {
787
- "include": "#type_ctor"
788
- }
789
- ]
790
- },
791
- "2": {
792
- "name": "meta.type-signature.haskell",
793
- "patterns": [
794
- {
795
- "include": "#type_signature"
796
- }
797
- ]
798
- }
799
- }
936
+ "include": "#type_name"
800
937
  },
801
938
  {
802
- "match": "\\|",
803
- "captures": {
804
- "0": {
805
- "name": "punctuation.separator.pipe.haskell"
806
- }
807
- }
939
+ "include": "#comma"
808
940
  },
809
941
  {
810
- "name": "meta.declaration.type.data.record.block.haskell",
811
- "begin": "\\{",
812
- "beginCaptures": {
813
- "0": {
814
- "name": "keyword.operator.record.begin.haskell"
815
- }
816
- },
817
- "end": "\\}",
818
- "endCaptures": {
819
- "0": {
820
- "name": "keyword.operator.record.end.haskell"
821
- }
822
- },
942
+ "name": "meta.other.constructor-list.haskell",
943
+ "begin": "(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))\\s*\\(",
944
+ "end": "\\)",
823
945
  "patterns": [
824
946
  {
825
947
  "include": "#comments"
826
948
  },
949
+ {
950
+ "include": "#c_preprocessor"
951
+ },
952
+ {
953
+ "include": "#type_ctor"
954
+ },
955
+ {
956
+ "include": "#attribute_name"
957
+ },
827
958
  {
828
959
  "include": "#comma"
829
960
  },
830
961
  {
831
- "include": "#record_field_declaration"
962
+ "name": "keyword.operator.wildcard.haskell",
963
+ "match": "\\.\\."
832
964
  }
833
965
  ]
834
966
  },
835
967
  {
836
- "include": "#ctor_type_declaration"
968
+ "include": "#infix_op"
837
969
  }
838
- ]
970
+ ],
971
+ "applyEndPatternLast": true
839
972
  }
840
973
  ]
841
974
  },
842
- "type_alias": {
975
+ "module_name": {
843
976
  "patterns": [
844
977
  {
845
- "name": "meta.declaration.type.type.haskell",
846
- "begin": "^([ \\t]*)(type)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
847
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
978
+ "name": "support.other.module.haskell",
979
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
980
+ }
981
+ ]
982
+ },
983
+ "module_name_prefix": {
984
+ "patterns": [
985
+ {
986
+ "name": "support.other.module.haskell",
987
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\."
988
+ }
989
+ ]
990
+ },
991
+ "multiline_type_declaration": {
992
+ "patterns": [
993
+ {
994
+ "name": "meta.multiline.type-declaration.haskell",
848
995
  "contentName": "meta.type-signature.haskell",
849
- "beginCaptures": {
850
- "2": {
851
- "name": "keyword.other.type.haskell"
852
- }
853
- },
996
+ "begin": "^([ \\t]*)((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
997
+ "end": "^(?!\\1|[ \\t]*$)|(?=(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
854
998
  "patterns": [
855
- {
856
- "include": "#comments"
857
- },
858
- {
859
- "include": "#family_and_instance"
860
- },
861
- {
862
- "include": "#where"
863
- },
864
- {
865
- "include": "#assignment_op"
866
- },
867
999
  {
868
1000
  "include": "#type_signature"
869
1001
  }
870
- ]
1002
+ ],
1003
+ "beginCaptures": {
1004
+ "2": {
1005
+ "name": "keyword.other.double-colon.haskell"
1006
+ }
1007
+ }
871
1008
  }
872
1009
  ]
873
1010
  },
874
- "keywords": {
1011
+ "newline_escape": {
875
1012
  "patterns": [
876
1013
  {
877
- "name": "keyword.other.haskell",
878
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving|where|data|type|newtype)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
879
- },
880
- {
881
- "name": "keyword.other.haskell",
882
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(data|type|newtype)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
883
- },
1014
+ "name": "markup.other.escape.newline.haskell",
1015
+ "match": "\\\\$"
1016
+ }
1017
+ ]
1018
+ },
1019
+ "operator": {
1020
+ "patterns": [
884
1021
  {
885
1022
  "name": "keyword.operator.haskell",
886
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))infix[lr]?(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
887
- },
888
- {
889
- "name": "keyword.control.haskell",
890
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(do|if|then|else|case|of|let|in|default|mdo|rec|proc)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1023
+ "match": "(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+",
1024
+ "captures": {
1025
+ "0": {
1026
+ "patterns": [
1027
+ {
1028
+ "include": "#module_name_prefix"
1029
+ },
1030
+ {
1031
+ "name": "support.operator.prelude.haskell",
1032
+ "match": "^(\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)$"
1033
+ }
1034
+ ]
1035
+ }
1036
+ }
891
1037
  }
892
1038
  ]
893
1039
  },
894
- "c_preprocessor": {
1040
+ "pragma": {
895
1041
  "patterns": [
896
1042
  {
897
- "name": "meta.preprocessor.c.haskell",
898
- "begin": "^(?=#)",
899
- "end": "(?<!\\\\)(?=$)",
1043
+ "name": "meta.preprocessor.haskell",
1044
+ "begin": "\\{-#",
1045
+ "end": "#-\\}",
900
1046
  "patterns": [
901
1047
  {
902
- "include": "source.c"
1048
+ "name": "keyword.other.preprocessor.haskell",
1049
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))((?i:NOTINLINE CONSTRUCTORLIKE|NOINLINE CONSTRUCTORLIKE|INLINE CONSTRUCTORLIKE|SPECIALISE NOTINLINE|SPECIALIZE NOTINLINE|SPECIALISE NOINLINE|SPECIALIZE NOINLINE|NOTINLINE CONLIKE|SPECIALISE INLINE|SPECIALIZE INLINE|NOINLINE CONLIKE|VECTORISE SCALAR|VECTORIZE SCALAR|OPTIONS_HADDOCK|INLINE CONLIKE|OPTIONS_DERIVE|OPTIONS_CATCH|OPTIONS_NHC98|OPTIONS_HUGS|OVERLAPPABLE|NOVECTORISE|NOVECTORIZE|OPTIONS_GHC|OPTIONS_JHC|OPTIONS_YHC|OVERLAPPING|DEPRECATED|INCOHERENT|INLINEABLE|SPECIALISE|SPECIALIZE|GENERATED|INLINABLE|NOTINLINE|VECTORISE|VECTORIZE|CONTRACT|LANGUAGE|NOINLINE|NOUNPACK|OVERLAPS|INCLUDE|MINIMAL|OPTIONS|WARNING|CFILES|INLINE|SOURCE|UNPACK|CTYPE|RULES|CORE|LINE|ANN|SCC))(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
903
1050
  }
904
1051
  ]
905
1052
  }
906
1053
  ]
907
1054
  },
908
- "string": {
1055
+ "quasi_quotes": {
909
1056
  "patterns": [
910
1057
  {
911
- "name": "string.quoted.double.haskell",
912
- "begin": "\"",
913
- "end": "\"",
1058
+ "contentName": "string.quoted.quasiquotes.haskell",
1059
+ "begin": "(\\[)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(\\|)",
1060
+ "end": "(\\|)(\\])",
914
1061
  "beginCaptures": {
915
- "0": {
916
- "name": "punctuation.definition.string.begin.haskell"
917
- }
918
- },
919
- "endCaptures": {
920
- "0": {
921
- "name": "punctuation.definition.string.end.haskell"
922
- }
923
- },
924
- "patterns": [
925
- {
926
- "include": "#characters"
1062
+ "1": {
1063
+ "name": "punctuation.definition.quasiquotes.begin.haskell"
927
1064
  },
928
- {
929
- "begin": "\\\\\\s",
930
- "end": "\\\\",
931
- "beginCaptures": {
932
- "0": {
933
- "name": "markup.other.escape.newline.begin.haskell"
934
- }
935
- },
936
- "endCaptures": {
937
- "0": {
938
- "name": "markup.other.escape.newline.end.haskell"
939
- }
940
- },
1065
+ "2": {
1066
+ "name": "entity.name.tag.haskell",
941
1067
  "patterns": [
942
1068
  {
943
- "include": "#invalid"
1069
+ "include": "#module_name_prefix"
944
1070
  }
945
1071
  ]
946
1072
  }
947
- ]
948
- }
949
- ]
950
- },
951
- "newline_escape": {
952
- "patterns": [
953
- {
954
- "name": "markup.other.escape.newline.haskell",
955
- "match": "\\\\$"
1073
+ },
1074
+ "endCaptures": {
1075
+ "2": {
1076
+ "name": "punctuation.definition.quasiquotes.end.haskell"
1077
+ }
1078
+ }
956
1079
  }
957
1080
  ]
958
1081
  },
@@ -960,7 +1083,7 @@
960
1083
  "patterns": [
961
1084
  {
962
1085
  "name": "string.quoted.single.haskell",
963
- "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))(')",
1086
+ "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(')",
964
1087
  "captures": {
965
1088
  "1": {
966
1089
  "name": "punctuation.definition.string.begin.haskell"
@@ -979,23 +1102,86 @@
979
1102
  }
980
1103
  ]
981
1104
  },
982
- "scoped_type": {
1105
+ "record_field_declaration": {
983
1106
  "patterns": [
984
1107
  {
985
- "match": "\\(((?<paren>(?:[^\\(\\)]|\\(\\g<paren>\\))*)(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?<paren2>(?:[^\\(\\)]|\\(\\g<paren2>\\))*))\\)",
986
- "captures": {
1108
+ "name": "meta.record-field.type-declaration.haskell",
1109
+ "contentName": "meta.type-signature.haskell",
1110
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))))",
1111
+ "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))))|})",
1112
+ "patterns": [
1113
+ {
1114
+ "include": "#type_signature"
1115
+ }
1116
+ ],
1117
+ "beginCaptures": {
987
1118
  "1": {
988
1119
  "patterns": [
989
1120
  {
990
- "include": "#haskell_expr"
1121
+ "include": "#attribute_name"
1122
+ },
1123
+ {
1124
+ "include": "#infix_op"
991
1125
  }
992
1126
  ]
1127
+ },
1128
+ "2": {
1129
+ "name": "keyword.other.double-colon.haskell"
993
1130
  }
994
1131
  }
995
- },
1132
+ }
1133
+ ]
1134
+ },
1135
+ "regular_import": {
1136
+ "patterns": [
996
1137
  {
997
- "match": "((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))(.*?)(?=(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(<-|=)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))|$)",
998
- "captures": {
1138
+ "name": "meta.import.haskell",
1139
+ "begin": "^([ \\t]*)(import)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1140
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
1141
+ "patterns": [
1142
+ {
1143
+ "include": "#module_name"
1144
+ },
1145
+ {
1146
+ "include": "#module_exports"
1147
+ },
1148
+ {
1149
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(qualified|as|hiding)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1150
+ "captures": {
1151
+ "1": {
1152
+ "name": "keyword.other.haskell"
1153
+ }
1154
+ }
1155
+ },
1156
+ {
1157
+ "include": "#comments"
1158
+ }
1159
+ ],
1160
+ "beginCaptures": {
1161
+ "2": {
1162
+ "name": "keyword.other.haskell"
1163
+ }
1164
+ }
1165
+ }
1166
+ ]
1167
+ },
1168
+ "scoped_type": {
1169
+ "patterns": [
1170
+ {
1171
+ "match": "\\(((?\u003cparen\u003e(?:[^\\(\\)]|\\(\\g\u003cparen\u003e\\))*)(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?\u003cparen2\u003e(?:[^\\(\\)]|\\(\\g\u003cparen2\u003e\\))*))\\)",
1172
+ "captures": {
1173
+ "1": {
1174
+ "patterns": [
1175
+ {
1176
+ "include": "#haskell_expr"
1177
+ }
1178
+ ]
1179
+ }
1180
+ }
1181
+ },
1182
+ {
1183
+ "match": "((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(.*?)(?=(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))|$)",
1184
+ "captures": {
999
1185
  "1": {
1000
1186
  "name": "keyword.other.double-colon.haskell"
1001
1187
  },
@@ -1014,7 +1200,7 @@
1014
1200
  "scoped_type_override": {
1015
1201
  "patterns": [
1016
1202
  {
1017
- "match": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))(.*)(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(<-|=)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
1203
+ "match": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))))(.*)(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))",
1018
1204
  "captures": {
1019
1205
  "2": {
1020
1206
  "patterns": [
@@ -1048,47 +1234,94 @@
1048
1234
  }
1049
1235
  ]
1050
1236
  },
1051
- "comma": {
1237
+ "shebang": {
1052
1238
  "patterns": [
1053
1239
  {
1054
- "name": "punctuation.separator.comma.haskell",
1055
- "match": ","
1240
+ "name": "comment.line.shebang.haskell",
1241
+ "match": "^\\#\\!.*\\brunhaskell\\b.*$"
1056
1242
  }
1057
1243
  ]
1058
1244
  },
1059
- "lit_num": {
1245
+ "string": {
1060
1246
  "patterns": [
1061
1247
  {
1062
- "name": "constant.numeric.hexadecimal.haskell",
1063
- "match": "0[xX][0-9a-fA-F]+"
1064
- },
1065
- {
1066
- "name": "constant.numeric.octal.haskell",
1067
- "match": "0[oO][0-7]+"
1068
- },
1069
- {
1070
- "name": "constant.numeric.float.haskell",
1071
- "match": "[0-9]+(\\.[0-9]+[eE][+-]?|\\.|[eE][+-]?)[0-9]+"
1072
- },
1073
- {
1074
- "name": "constant.numeric.decimal.haskell",
1075
- "match": "[0-9]+"
1248
+ "name": "string.quoted.double.haskell",
1249
+ "begin": "\"",
1250
+ "end": "\"",
1251
+ "patterns": [
1252
+ {
1253
+ "include": "#characters"
1254
+ },
1255
+ {
1256
+ "begin": "\\\\\\s",
1257
+ "end": "\\\\",
1258
+ "patterns": [
1259
+ {
1260
+ "include": "#invalid"
1261
+ }
1262
+ ],
1263
+ "beginCaptures": {
1264
+ "0": {
1265
+ "name": "markup.other.escape.newline.begin.haskell"
1266
+ }
1267
+ },
1268
+ "endCaptures": {
1269
+ "0": {
1270
+ "name": "markup.other.escape.newline.end.haskell"
1271
+ }
1272
+ }
1273
+ }
1274
+ ],
1275
+ "beginCaptures": {
1276
+ "0": {
1277
+ "name": "punctuation.definition.string.begin.haskell"
1278
+ }
1279
+ },
1280
+ "endCaptures": {
1281
+ "0": {
1282
+ "name": "punctuation.definition.string.end.haskell"
1283
+ }
1284
+ }
1076
1285
  }
1077
1286
  ]
1078
1287
  },
1079
- "operator": {
1288
+ "type_alias": {
1080
1289
  "patterns": [
1081
1290
  {
1082
- "name": "keyword.operator.haskell",
1083
- "match": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+"
1291
+ "name": "meta.declaration.type.type.haskell",
1292
+ "contentName": "meta.type-signature.haskell",
1293
+ "begin": "^([ \\t]*)(type)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1294
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
1295
+ "patterns": [
1296
+ {
1297
+ "include": "#comments"
1298
+ },
1299
+ {
1300
+ "include": "#family_and_instance"
1301
+ },
1302
+ {
1303
+ "include": "#where"
1304
+ },
1305
+ {
1306
+ "include": "#assignment_op"
1307
+ },
1308
+ {
1309
+ "include": "#type_signature"
1310
+ }
1311
+ ],
1312
+ "beginCaptures": {
1313
+ "2": {
1314
+ "name": "keyword.other.type.haskell"
1315
+ }
1316
+ }
1084
1317
  }
1085
1318
  ]
1086
1319
  },
1087
- "identifier": {
1320
+ "type_ctor": {
1088
1321
  "patterns": [
1089
1322
  {
1090
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1091
- "name": "identifier.haskell",
1323
+ "name": "entity.name.tag.haskell",
1324
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1092
1325
  "captures": {
1093
1326
  "0": {
1094
1327
  "patterns": [
@@ -1096,8 +1329,8 @@
1096
1329
  "include": "#module_name_prefix"
1097
1330
  },
1098
1331
  {
1099
- "name": "support.function.prelude.$1.haskell",
1100
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(abs|acos|acosh|all|and|any|appendFile|asTypeOf|asin|asinh|atan|atan2|atanh|break|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldMap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|mappend|max|maxBound|maximum|maybe|mconcat|mempty|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|pure|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequenceA|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|traverse|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1332
+ "name": "support.tag.prelude.$1.haskell",
1333
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(EQ|GT|LT|Left|Right|True|False)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1101
1334
  }
1102
1335
  ]
1103
1336
  }
@@ -1109,7 +1342,7 @@
1109
1342
  "patterns": [
1110
1343
  {
1111
1344
  "name": "entity.name.type.haskell",
1112
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1345
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1113
1346
  "captures": {
1114
1347
  "0": {
1115
1348
  "patterns": [
@@ -1118,11 +1351,11 @@
1118
1351
  },
1119
1352
  {
1120
1353
  "name": "entity.other.inherited-class.prelude.$1.haskell",
1121
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Applicative|Bounded|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Show|Traversable)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1354
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Applicative|Bounded|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Show|Traversable)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1122
1355
  },
1123
1356
  {
1124
1357
  "name": "support.class.prelude.$1.haskell",
1125
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Either|FilePath|IO|IOError|Integer|Maybe|Ordering|Rational|ReadS|ShowS|String|Bool|Char|Double|Float|Int|Word)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1358
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Either|FilePath|IO|IOError|Integer|Ordering|Rational|ReadS|ShowS|String|Bool|Char|Double|Float|Int|Just|Maybe|Nothing|Word)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1126
1359
  }
1127
1360
  ]
1128
1361
  }
@@ -1130,249 +1363,117 @@
1130
1363
  }
1131
1364
  ]
1132
1365
  },
1133
- "type_ctor": {
1366
+ "type_signature": {
1134
1367
  "patterns": [
1135
1368
  {
1136
- "name": "entity.name.tag.haskell",
1137
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1369
+ "include": "#pragma"
1370
+ },
1371
+ {
1372
+ "include": "#comments"
1373
+ },
1374
+ {
1375
+ "name": "keyword.other.forall.haskell",
1376
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1377
+ },
1378
+ {
1379
+ "name": "constant.language.unit.promoted.haskell",
1380
+ "match": "'(\\(\\))",
1138
1381
  "captures": {
1139
- "0": {
1382
+ "1": {
1140
1383
  "patterns": [
1141
1384
  {
1142
- "include": "#module_name_prefix"
1143
- },
1144
- {
1145
- "name": "support.tag.prelude.$1.haskell",
1146
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(EQ|GT|Just|LT|Left|Nothing|Right|True|False)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1385
+ "include": "#unit"
1147
1386
  }
1148
1387
  ]
1149
1388
  }
1150
1389
  }
1151
- }
1152
- ]
1153
- },
1154
- "where": {
1155
- "patterns": [
1156
- {
1157
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1158
- "name": "keyword.other.haskell"
1159
- }
1160
- ]
1161
- },
1162
- "family_and_instance": {
1163
- "patterns": [
1164
- {
1165
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(family|instance)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1166
- "name": "keyword.other.haskell"
1167
- }
1168
- ]
1169
- },
1170
- "invalid": {
1171
- "patterns": [
1172
- {
1173
- "match": "\\S+",
1174
- "name": "invalid.illegal.character-not-allowed-here.haskell"
1175
- }
1176
- ]
1177
- },
1178
- "function_name": {
1179
- "patterns": [
1390
+ },
1180
1391
  {
1181
- "name": "entity.name.function.haskell",
1182
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1183
- }
1184
- ]
1185
- },
1186
- "assignment_op": {
1187
- "patterns": [
1392
+ "include": "#unit"
1393
+ },
1188
1394
  {
1189
- "match": "=",
1395
+ "name": "constant.language.empty-list.promoted.haskell",
1396
+ "match": "'(\\[\\])",
1190
1397
  "captures": {
1191
- "0": {
1192
- "name": "keyword.operator.assignment.haskell"
1398
+ "1": {
1399
+ "patterns": [
1400
+ {
1401
+ "include": "#empty_list"
1402
+ }
1403
+ ]
1193
1404
  }
1194
1405
  }
1195
- }
1196
- ]
1197
- },
1198
- "attribute_name": {
1199
- "patterns": [
1200
- {
1201
- "name": "entity.other.attribute-name.haskell",
1202
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1203
- }
1204
- ]
1205
- },
1206
- "liquidhaskell_annotation": {
1207
- "patterns": [
1208
- {
1209
- "name": "block.liquidhaskell.haskell",
1210
- "contentName": "block.liquidhaskell.annotation.haskell",
1211
- "begin": "\\{-@(?!#)",
1212
- "end": "@-\\}",
1213
- "patterns": [
1214
- {
1215
- "include": "annotation.liquidhaskell.haskell"
1216
- }
1217
- ]
1218
- }
1219
- ]
1220
- },
1221
- "shebang": {
1222
- "patterns": [
1223
- {
1224
- "name": "comment.line.shebang.haskell",
1225
- "match": "^\\#\\!.*\\brunhaskell\\b.*$"
1226
- }
1227
- ]
1228
- },
1229
- "haskell_expr": {
1230
- "patterns": [
1231
- {
1232
- "include": "#infix_function"
1233
- },
1234
- {
1235
- "include": "#unit"
1236
1406
  },
1237
1407
  {
1238
1408
  "include": "#empty_list"
1239
1409
  },
1240
- {
1241
- "include": "#quasi_quotes"
1242
- },
1243
- {
1244
- "include": "#keywords"
1245
- },
1246
- {
1247
- "include": "#pragma"
1248
- },
1249
1410
  {
1250
1411
  "include": "#string"
1251
1412
  },
1252
1413
  {
1253
- "include": "#newline_escape"
1254
- },
1255
- {
1256
- "include": "#quoted_character"
1257
- },
1258
- {
1259
- "include": "#comments"
1260
- },
1261
- {
1262
- "include": "#infix_op"
1263
- },
1264
- {
1265
- "include": "#comma"
1414
+ "name": "keyword.other.arrow.haskell",
1415
+ "match": "(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(-\u003e|→)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))"
1266
1416
  },
1267
1417
  {
1268
- "include": "#lit_num"
1418
+ "name": "keyword.other.big-arrow.haskell",
1419
+ "match": "(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))"
1269
1420
  },
1270
1421
  {
1271
- "include": "#scoped_type"
1422
+ "name": "keyword.operator.promoted.haskell",
1423
+ "match": "'((?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+)",
1424
+ "captures": {
1425
+ "1": {
1426
+ "patterns": [
1427
+ {
1428
+ "include": "#operator"
1429
+ }
1430
+ ]
1431
+ }
1432
+ }
1272
1433
  },
1273
1434
  {
1274
1435
  "include": "#operator"
1275
1436
  },
1276
1437
  {
1277
- "include": "#identifier"
1278
- },
1279
- {
1280
- "include": "#type_ctor"
1281
- }
1282
- ]
1283
- },
1284
- "common_toplevel": {
1285
- "patterns": [
1286
- {
1287
- "include": "#class_decl"
1288
- },
1289
- {
1290
- "include": "#instance_decl"
1291
- },
1292
- {
1293
- "include": "#deriving_instance_decl"
1294
- },
1295
- {
1296
- "include": "#foreign_import"
1297
- },
1298
- {
1299
- "include": "#regular_import"
1300
- },
1301
- {
1302
- "include": "#data_decl"
1303
- },
1304
- {
1305
- "include": "#type_alias"
1306
- },
1307
- {
1308
- "include": "#c_preprocessor"
1309
- }
1310
- ]
1311
- },
1312
- "function_type_declaration_with_scoped_type": {
1313
- "patterns": [
1314
- {
1315
- "include": "#scoped_type_override"
1316
- },
1317
- {
1318
- "include": "#function_type_declaration"
1319
- }
1320
- ]
1321
- },
1322
- "haskell_toplevel": {
1323
- "patterns": [
1324
- {
1325
- "include": "#liquidhaskell_annotation"
1326
- },
1327
- {
1328
- "include": "#common_toplevel"
1329
- },
1330
- {
1331
- "include": "#function_type_declaration_with_scoped_type"
1332
- },
1333
- {
1334
- "include": "#haskell_expr"
1335
- }
1336
- ]
1337
- },
1338
- "hsig_toplevel": {
1339
- "patterns": [
1340
- {
1341
- "include": "#common_toplevel"
1438
+ "name": "variable.other.generic-type.haskell",
1439
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1342
1440
  },
1343
1441
  {
1344
- "include": "#function_type_declaration"
1442
+ "name": "entity.name.type.promoted.haskell",
1443
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}'])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))'([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1444
+ "captures": {
1445
+ "1": {
1446
+ "patterns": [
1447
+ {
1448
+ "include": "#type_name"
1449
+ }
1450
+ ]
1451
+ }
1452
+ }
1345
1453
  },
1346
1454
  {
1347
- "include": "#lazy_function_type_signature"
1455
+ "include": "#type_name"
1348
1456
  },
1349
1457
  {
1350
- "include": "#comments"
1458
+ "include": "#lit_num"
1351
1459
  }
1352
1460
  ]
1353
1461
  },
1354
- "haskell_source": {
1462
+ "unit": {
1355
1463
  "patterns": [
1356
1464
  {
1357
- "include": "#shebang"
1358
- },
1359
- {
1360
- "include": "#module_decl"
1361
- },
1362
- {
1363
- "include": "#haskell_toplevel"
1465
+ "name": "constant.language.unit.haskell",
1466
+ "match": "\\(\\)"
1364
1467
  }
1365
1468
  ]
1366
1469
  },
1367
- "hsig_source": {
1470
+ "where": {
1368
1471
  "patterns": [
1369
1472
  {
1370
- "include": "#hsig_decl"
1371
- },
1372
- {
1373
- "include": "#hsig_toplevel"
1473
+ "name": "keyword.other.haskell",
1474
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1374
1475
  }
1375
1476
  ]
1376
1477
  }
1377
1478
  }
1378
- }
1479
+ }