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,52 +1,43 @@
1
1
  {
2
- "fileTypes": [
3
- "hs",
4
- "cpphs"
5
- ],
6
- "firstLineMatch": "^\\#\\!.*\\brunhaskell\\b",
7
2
  "name": "Haskell",
8
3
  "scopeName": "source.haskell",
9
- "macros": {
10
- "identStartCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}]",
11
- "identContCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}']",
12
- "identCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']",
13
- "functionNameOne": "[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
14
- "classNameOne": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
15
- "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}']*",
16
- "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}']*)*",
17
- "operatorChar": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))",
18
- "operator": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+",
19
- "operatorFun": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))",
20
- "basicChar": "[\\ -\\[\\]-~]",
21
- "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\\\\\\\"'\\&])",
22
- "octalChar": "(?:\\\\o[0-7]+)",
23
- "hexChar": "(?:\\\\x[0-9A-Fa-f]+)",
24
- "controlChar": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
25
- "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}](?<![(),;\\[\\]`{}_\"'])))",
26
- "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}](?<![(),;\\[\\]`{}_\"']))+\\))))*)",
27
- "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}](?<![(),;\\[\\]`{}_\"']))))))",
28
- "doubleColonOperator": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
29
- "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}](?<![(),;\\[\\]`{}_\"']))))))",
30
- "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*)+)",
31
- "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*)+)))*)?))",
32
- "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}']*))",
33
- "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}']*)))*)",
34
- "indentChar": "[ \\t]",
35
- "indentBlockStart": "^([ \\t]*)",
36
- "indentBlockEnd": "^(?!\\1[ \\t]|[ \\t]*$)",
37
- "maybeBirdTrack": "^",
38
- "lb": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))",
39
- "rb": "(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
40
- "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}'])))"
41
- },
4
+ "patterns": [
5
+ {
6
+ "include": "#haskell_source"
7
+ }
8
+ ],
42
9
  "repository": {
10
+ "assignment_op": {
11
+ "patterns": [
12
+ {
13
+ "match": "=",
14
+ "captures": {
15
+ "0": {
16
+ "name": "keyword.operator.assignment.haskell"
17
+ }
18
+ }
19
+ }
20
+ ]
21
+ },
22
+ "attribute_name": {
23
+ "patterns": [
24
+ {
25
+ "name": "entity.other.attribute-name.haskell",
26
+ "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}']))"
27
+ }
28
+ ]
29
+ },
43
30
  "block_comment": {
44
31
  "patterns": [
45
32
  {
46
33
  "name": "comment.block.haddock.haskell",
47
34
  "begin": "\\{-\\s*[|^]",
48
35
  "end": "-\\}",
49
- "applyEndPatternLast": 1,
36
+ "patterns": [
37
+ {
38
+ "include": "#block_comment"
39
+ }
40
+ ],
50
41
  "beginCaptures": {
51
42
  "0": {
52
43
  "name": "punctuation.definition.comment.haddock.haskell"
@@ -57,17 +48,17 @@
57
48
  "name": "punctuation.definition.comment.haddock.haskell"
58
49
  }
59
50
  },
60
- "patterns": [
61
- {
62
- "include": "#block_comment"
63
- }
64
- ]
51
+ "applyEndPatternLast": true
65
52
  },
66
53
  {
67
54
  "name": "comment.block.haskell",
68
55
  "begin": "\\{-",
69
56
  "end": "-\\}",
70
- "applyEndPatternLast": 1,
57
+ "patterns": [
58
+ {
59
+ "include": "#block_comment"
60
+ }
61
+ ],
71
62
  "beginCaptures": {
72
63
  "0": {
73
64
  "name": "punctuation.definition.comment.block.start.haskell"
@@ -78,14 +69,77 @@
78
69
  "name": "punctuation.definition.comment.block.end.haskell"
79
70
  }
80
71
  },
72
+ "applyEndPatternLast": true
73
+ }
74
+ ]
75
+ },
76
+ "c_preprocessor": {
77
+ "patterns": [
78
+ {
79
+ "name": "meta.preprocessor.c.haskell",
80
+ "begin": "^(?=#)",
81
+ "end": "(?\u003c!\\\\)(?=$)",
81
82
  "patterns": [
82
83
  {
83
- "include": "#block_comment"
84
+ "name": "keyword.control.c.haskell",
85
+ "match": "^#\\S+"
84
86
  }
85
87
  ]
86
88
  }
87
89
  ]
88
90
  },
91
+ "characters": {
92
+ "patterns": [
93
+ {
94
+ "name": "constant.character.escape.haskell",
95
+ "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])"
96
+ },
97
+ {
98
+ "name": "constant.character.escape.octal.haskell",
99
+ "match": "(?:\\\\o[0-7]+)"
100
+ },
101
+ {
102
+ "name": "constant.character.escape.hexadecimal.haskell",
103
+ "match": "(?:\\\\x[0-9A-Fa-f]+)"
104
+ },
105
+ {
106
+ "name": "constant.character.escape.control.haskell",
107
+ "match": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])"
108
+ }
109
+ ]
110
+ },
111
+ "class_decl": {
112
+ "patterns": [
113
+ {
114
+ "name": "meta.declaration.class.haskell",
115
+ "begin": "^([ \\t]*)(class)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
116
+ "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]*$)",
117
+ "patterns": [
118
+ {
119
+ "include": "#type_signature"
120
+ }
121
+ ],
122
+ "beginCaptures": {
123
+ "2": {
124
+ "name": "keyword.other.class.haskell"
125
+ }
126
+ },
127
+ "endCaptures": {
128
+ "1": {
129
+ "name": "keyword.other.haskell"
130
+ }
131
+ }
132
+ }
133
+ ]
134
+ },
135
+ "comma": {
136
+ "patterns": [
137
+ {
138
+ "name": "punctuation.separator.comma.haskell",
139
+ "match": ","
140
+ }
141
+ ]
142
+ },
89
143
  "comments": {
90
144
  "patterns": [
91
145
  {
@@ -108,7 +162,7 @@
108
162
  ]
109
163
  },
110
164
  {
111
- "begin": "(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))",
165
+ "begin": "(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
112
166
  "end": "(?!\\G)",
113
167
  "patterns": [
114
168
  {
@@ -128,169 +182,246 @@
128
182
  }
129
183
  ]
130
184
  },
131
- "characters": {
185
+ "common_toplevel": {
132
186
  "patterns": [
133
187
  {
134
- "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\\\\\\\"'\\&])",
135
- "name": "constant.character.escape.haskell"
188
+ "include": "#class_decl"
189
+ },
190
+ {
191
+ "include": "#instance_decl"
192
+ },
193
+ {
194
+ "include": "#deriving_instance_decl"
195
+ },
196
+ {
197
+ "include": "#foreign_import"
136
198
  },
137
199
  {
138
- "match": "(?:\\\\o[0-7]+)",
139
- "name": "constant.character.escape.octal.haskell"
200
+ "include": "#regular_import"
201
+ },
202
+ {
203
+ "include": "#data_decl"
140
204
  },
141
205
  {
142
- "match": "(?:\\\\x[0-9A-Fa-f]+)",
143
- "name": "constant.character.escape.hexadecimal.haskell"
206
+ "include": "#type_alias"
144
207
  },
145
208
  {
146
- "match": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
147
- "name": "constant.character.escape.control.haskell"
209
+ "include": "#c_preprocessor"
148
210
  }
149
211
  ]
150
212
  },
151
- "infix_op": {
213
+ "ctor_type_declaration": {
152
214
  "patterns": [
153
215
  {
154
- "name": "entity.name.function.infix.haskell",
155
- "match": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))"
216
+ "name": "meta.ctor.type-declaration.haskell",
217
+ "contentName": "meta.type-signature.haskell",
218
+ "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![(),;\\[\\]`{}_\"']))))))",
219
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
220
+ "patterns": [
221
+ {
222
+ "include": "#type_signature"
223
+ }
224
+ ],
225
+ "beginCaptures": {
226
+ "2": {
227
+ "patterns": [
228
+ {
229
+ "include": "#type_ctor"
230
+ },
231
+ {
232
+ "include": "#infix_op"
233
+ }
234
+ ]
235
+ },
236
+ "3": {
237
+ "name": "keyword.other.double-colon.haskell"
238
+ }
239
+ }
156
240
  }
157
241
  ]
158
242
  },
159
- "module_exports": {
243
+ "data_decl": {
160
244
  "patterns": [
161
245
  {
162
- "name": "meta.declaration.exports.haskell",
163
- "begin": "\\(",
164
- "end": "\\)",
165
- "applyEndPatternLast": 1,
246
+ "name": "meta.declaration.type.data.haskell",
247
+ "begin": "^([ \\t]*)(data|newtype)\\s+((?:(?!=|where).)*)",
248
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
166
249
  "patterns": [
167
250
  {
168
251
  "include": "#comments"
169
252
  },
170
253
  {
171
- "include": "#function_name"
254
+ "include": "#where"
172
255
  },
173
256
  {
174
- "include": "#type_name"
257
+ "include": "#deriving"
175
258
  },
176
259
  {
177
- "include": "#comma"
260
+ "include": "#assignment_op"
178
261
  },
179
262
  {
180
- "name": "meta.other.constructor-list.haskell",
181
- "begin": "(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))\\s*\\(",
182
- "end": "\\)",
183
- "patterns": [
184
- {
185
- "include": "#type_ctor"
263
+ "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*)+)))*)?))",
264
+ "captures": {
265
+ "1": {
266
+ "patterns": [
267
+ {
268
+ "include": "#type_ctor"
269
+ }
270
+ ]
186
271
  },
272
+ "2": {
273
+ "name": "meta.type-signature.haskell",
274
+ "patterns": [
275
+ {
276
+ "include": "#type_signature"
277
+ }
278
+ ]
279
+ }
280
+ }
281
+ },
282
+ {
283
+ "match": "\\|",
284
+ "captures": {
285
+ "0": {
286
+ "name": "punctuation.separator.pipe.haskell"
287
+ }
288
+ }
289
+ },
290
+ {
291
+ "name": "meta.declaration.type.data.record.block.haskell",
292
+ "begin": "\\{",
293
+ "end": "\\}",
294
+ "patterns": [
187
295
  {
188
- "include": "#attribute_name"
296
+ "include": "#comments"
189
297
  },
190
298
  {
191
299
  "include": "#comma"
192
300
  },
193
301
  {
194
- "match": "\\.\\.",
195
- "name": "keyword.operator.wildcard.haskell"
302
+ "include": "#record_field_declaration"
196
303
  }
197
- ]
304
+ ],
305
+ "beginCaptures": {
306
+ "0": {
307
+ "name": "keyword.operator.record.begin.haskell"
308
+ }
309
+ },
310
+ "endCaptures": {
311
+ "0": {
312
+ "name": "keyword.operator.record.end.haskell"
313
+ }
314
+ }
198
315
  },
199
316
  {
200
- "include": "#infix_op"
317
+ "include": "#ctor_type_declaration"
201
318
  }
202
- ]
319
+ ],
320
+ "beginCaptures": {
321
+ "2": {
322
+ "name": "keyword.other.data.haskell"
323
+ },
324
+ "3": {
325
+ "name": "meta.type-signature.haskell",
326
+ "patterns": [
327
+ {
328
+ "include": "#family_and_instance"
329
+ },
330
+ {
331
+ "include": "#type_signature"
332
+ }
333
+ ]
334
+ }
335
+ }
203
336
  }
204
337
  ]
205
338
  },
206
- "module_name": {
339
+ "deriving": {
207
340
  "patterns": [
208
341
  {
209
- "name": "support.other.module.haskell",
210
- "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}']))"
342
+ "include": "#deriving_list"
343
+ },
344
+ {
345
+ "include": "#deriving_simple"
346
+ },
347
+ {
348
+ "include": "#deriving_keyword"
211
349
  }
212
350
  ]
213
351
  },
214
- "module_name_prefix": {
352
+ "deriving_instance_decl": {
215
353
  "patterns": [
216
354
  {
217
- "name": "support.other.module.haskell",
218
- "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}']*)*\\."
355
+ "name": "meta.declaration.instance.deriving.haskell",
356
+ "contentName": "meta.type-signature.haskell",
357
+ "begin": "^([ \\t]*)(deriving\\s+instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
358
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
359
+ "patterns": [
360
+ {
361
+ "include": "#pragma"
362
+ },
363
+ {
364
+ "include": "#type_signature"
365
+ }
366
+ ],
367
+ "beginCaptures": {
368
+ "2": {
369
+ "name": "keyword.other.haskell"
370
+ }
371
+ }
219
372
  }
220
373
  ]
221
374
  },
222
- "pragma": {
375
+ "deriving_keyword": {
223
376
  "patterns": [
224
377
  {
225
- "name": "meta.preprocessor.haskell",
226
- "begin": "\\{-#",
227
- "end": "#-\\}",
228
- "patterns": [
229
- {
230
- "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}']))",
231
- "name": "keyword.other.preprocessor.haskell"
378
+ "name": "meta.deriving.haskell",
379
+ "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}']))",
380
+ "captures": {
381
+ "1": {
382
+ "name": "keyword.other.haskell"
232
383
  }
233
- ]
384
+ }
234
385
  }
235
386
  ]
236
387
  },
237
- "function_type_declaration": {
388
+ "deriving_list": {
238
389
  "patterns": [
239
390
  {
240
- "name": "meta.function.type-declaration.haskell",
241
- "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}](?<![(),;\\[\\]`{}_\"']))))))",
242
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
243
- "contentName": "meta.type-signature.haskell",
244
- "beginCaptures": {
245
- "2": {
246
- "patterns": [
247
- {
248
- "include": "#function_name"
249
- },
250
- {
251
- "include": "#infix_op"
252
- }
253
- ]
254
- },
255
- "3": {
256
- "name": "keyword.other.double-colon.haskell"
257
- }
258
- },
391
+ "name": "meta.deriving.haskell",
392
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*\\(",
393
+ "end": "\\)",
259
394
  "patterns": [
260
395
  {
261
- "include": "#type_signature"
396
+ "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}']))",
397
+ "captures": {
398
+ "1": {
399
+ "name": "entity.other.inherited-class.haskell"
400
+ }
401
+ }
262
402
  }
263
- ]
403
+ ],
404
+ "beginCaptures": {
405
+ "1": {
406
+ "name": "keyword.other.haskell"
407
+ }
408
+ }
264
409
  }
265
410
  ]
266
411
  },
267
- "lazy_function_type_signature": {
412
+ "deriving_simple": {
268
413
  "patterns": [
269
414
  {
270
- "name": "meta.function.type-declaration.haskell",
271
- "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*$",
272
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
273
- "contentName": "meta.type-signature.haskell",
274
- "beginCaptures": {
275
- "2": {
276
- "patterns": [
277
- {
278
- "include": "#function_name"
279
- },
280
- {
281
- "include": "#infix_op"
282
- }
283
- ]
284
- }
285
- },
286
- "patterns": [
287
- {
288
- "include": "#double_colon_operator"
415
+ "name": "meta.deriving.haskell",
416
+ "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}']))",
417
+ "captures": {
418
+ "1": {
419
+ "name": "keyword.other.haskell"
289
420
  },
290
- {
291
- "include": "#type_signature"
421
+ "2": {
422
+ "name": "entity.other.inherited-class.haskell"
292
423
  }
293
- ]
424
+ }
294
425
  }
295
426
  ]
296
427
  },
@@ -298,81 +429,117 @@
298
429
  "patterns": [
299
430
  {
300
431
  "name": "keyword.other.double-colon.haskell",
301
- "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
432
+ "match": "(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))"
302
433
  }
303
434
  ]
304
435
  },
305
- "ctor_type_declaration": {
436
+ "empty_list": {
306
437
  "patterns": [
307
438
  {
308
- "name": "meta.ctor.type-declaration.haskell",
309
- "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}](?<![(),;\\[\\]`{}_\"']))))))",
439
+ "name": "constant.language.empty-list.haskell",
440
+ "match": "\\[\\]"
441
+ }
442
+ ]
443
+ },
444
+ "family_and_instance": {
445
+ "patterns": [
446
+ {
447
+ "name": "keyword.other.haskell",
448
+ "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}']))"
449
+ }
450
+ ]
451
+ },
452
+ "foreign_import": {
453
+ "patterns": [
454
+ {
455
+ "name": "meta.foreign.haskell",
456
+ "begin": "^([ \\t]*)(foreign)\\s+(import|export)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
310
457
  "end": "^(?!\\1[ \\t]|[ \\t]*$)",
311
- "contentName": "meta.type-signature.haskell",
458
+ "patterns": [
459
+ {
460
+ "match": "(?:un)?safe",
461
+ "captures": {
462
+ "0": {
463
+ "name": "keyword.other.haskell"
464
+ }
465
+ }
466
+ },
467
+ {
468
+ "include": "#function_type_declaration"
469
+ },
470
+ {
471
+ "include": "#haskell_expr"
472
+ },
473
+ {
474
+ "include": "#comments"
475
+ }
476
+ ],
312
477
  "beginCaptures": {
313
478
  "2": {
314
- "patterns": [
315
- {
316
- "include": "#type_ctor"
317
- },
318
- {
319
- "include": "#infix_op"
320
- }
321
- ]
479
+ "name": "keyword.other.haskell"
322
480
  },
323
481
  "3": {
324
- "name": "keyword.other.double-colon.haskell"
325
- }
326
- },
327
- "patterns": [
328
- {
329
- "include": "#type_signature"
482
+ "name": "keyword.other.haskell"
330
483
  }
331
- ]
484
+ }
332
485
  }
333
486
  ]
334
487
  },
335
- "record_field_declaration": {
488
+ "function_name": {
336
489
  "patterns": [
337
490
  {
338
- "name": "meta.record-field.type-declaration.haskell",
339
- "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}](?<![(),;\\[\\]`{}_\"']))))))",
340
- "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}](?<![(),;\\[\\]`{}_\"']))))))|})",
491
+ "name": "entity.name.function.haskell",
492
+ "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}']))"
493
+ }
494
+ ]
495
+ },
496
+ "function_type_declaration": {
497
+ "patterns": [
498
+ {
499
+ "name": "meta.function.type-declaration.haskell",
341
500
  "contentName": "meta.type-signature.haskell",
501
+ "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![(),;\\[\\]`{}_\"']))))))",
502
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)|(?=(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
503
+ "patterns": [
504
+ {
505
+ "include": "#type_signature"
506
+ }
507
+ ],
342
508
  "beginCaptures": {
343
- "1": {
509
+ "2": {
344
510
  "patterns": [
345
511
  {
346
- "include": "#attribute_name"
512
+ "include": "#function_name"
347
513
  },
348
514
  {
349
515
  "include": "#infix_op"
350
516
  }
351
517
  ]
352
518
  },
353
- "2": {
519
+ "3": {
354
520
  "name": "keyword.other.double-colon.haskell"
355
521
  }
356
- },
357
- "patterns": [
358
- {
359
- "include": "#type_signature"
360
- }
361
- ]
522
+ }
362
523
  }
363
524
  ]
364
525
  },
365
- "type_signature": {
526
+ "function_type_declaration_with_scoped_type": {
366
527
  "patterns": [
367
528
  {
368
- "include": "#pragma"
529
+ "include": "#scoped_type_override"
369
530
  },
370
531
  {
371
- "include": "#comments"
532
+ "include": "#function_type_declaration"
372
533
  },
373
534
  {
374
- "name": "keyword.other.forall.haskell",
375
- "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}']))"
535
+ "include": "#multiline_type_declaration"
536
+ }
537
+ ]
538
+ },
539
+ "haskell_expr": {
540
+ "patterns": [
541
+ {
542
+ "include": "#infix_function"
376
543
  },
377
544
  {
378
545
  "include": "#unit"
@@ -380,64 +547,105 @@
380
547
  {
381
548
  "include": "#empty_list"
382
549
  },
550
+ {
551
+ "include": "#quasi_quotes"
552
+ },
553
+ {
554
+ "include": "#keywords"
555
+ },
556
+ {
557
+ "include": "#pragma"
558
+ },
383
559
  {
384
560
  "include": "#string"
385
561
  },
386
562
  {
387
- "name": "keyword.other.arrow.haskell",
388
- "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(->|→)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
563
+ "include": "#newline_escape"
389
564
  },
390
565
  {
391
- "name": "keyword.other.big-arrow.haskell",
392
- "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(=>|⇒)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
566
+ "include": "#quoted_character"
567
+ },
568
+ {
569
+ "include": "#comments"
570
+ },
571
+ {
572
+ "include": "#infix_op"
573
+ },
574
+ {
575
+ "include": "#comma"
576
+ },
577
+ {
578
+ "include": "#lit_num"
579
+ },
580
+ {
581
+ "include": "#scoped_type"
393
582
  },
394
583
  {
395
584
  "include": "#operator"
396
585
  },
397
586
  {
398
- "name": "variable.other.generic-type.haskell",
399
- "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}']))"
587
+ "include": "#identifier"
400
588
  },
401
589
  {
402
- "include": "#type_name"
590
+ "include": "#type_ctor"
403
591
  }
404
592
  ]
405
593
  },
406
- "unit": {
594
+ "haskell_source": {
407
595
  "patterns": [
408
596
  {
409
- "name": "constant.language.unit.haskell",
410
- "match": "\\(\\)"
411
- }
412
- ]
413
- },
414
- "empty_list": {
415
- "patterns": [
597
+ "include": "#shebang"
598
+ },
416
599
  {
417
- "name": "constant.language.empty-list.haskell",
418
- "match": "\\[\\]"
600
+ "include": "#module_decl"
601
+ },
602
+ {
603
+ "include": "#haskell_toplevel"
419
604
  }
420
605
  ]
421
606
  },
422
- "deriving": {
607
+ "haskell_toplevel": {
423
608
  "patterns": [
424
609
  {
425
- "include": "#deriving_list"
610
+ "include": "#liquidhaskell_annotation"
426
611
  },
427
612
  {
428
- "include": "#deriving_simple"
613
+ "include": "#common_toplevel"
429
614
  },
430
615
  {
431
- "include": "#deriving_keyword"
616
+ "include": "#function_type_declaration_with_scoped_type"
617
+ },
618
+ {
619
+ "include": "#haskell_expr"
432
620
  }
433
621
  ]
434
622
  },
435
- "deriving_keyword": {
623
+ "hsig_decl": {
436
624
  "patterns": [
437
625
  {
438
- "name": "meta.deriving.haskell",
439
- "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}']))",
440
- "captures": {
626
+ "name": "meta.declaration.module.haskell",
627
+ "begin": "^([ \\t]*)(signature)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
628
+ "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]*$)",
629
+ "patterns": [
630
+ {
631
+ "include": "#comments"
632
+ },
633
+ {
634
+ "include": "#module_name"
635
+ },
636
+ {
637
+ "include": "#module_exports"
638
+ },
639
+ {
640
+ "include": "#invalid"
641
+ }
642
+ ],
643
+ "beginCaptures": {
644
+ "2": {
645
+ "name": "keyword.other.haskell"
646
+ }
647
+ },
648
+ "endCaptures": {
441
649
  "1": {
442
650
  "name": "keyword.other.haskell"
443
651
  }
@@ -445,41 +653,48 @@
445
653
  }
446
654
  ]
447
655
  },
448
- "deriving_list": {
656
+ "hsig_source": {
449
657
  "patterns": [
450
658
  {
451
- "name": "meta.deriving.haskell",
452
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*\\(",
453
- "end": "\\)",
454
- "beginCaptures": {
455
- "1": {
456
- "name": "keyword.other.haskell"
457
- }
458
- },
459
- "patterns": [
460
- {
461
- "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}']))",
462
- "captures": {
463
- "1": {
464
- "name": "entity.other.inherited-class.haskell"
465
- }
466
- }
467
- }
468
- ]
659
+ "include": "#hsig_decl"
660
+ },
661
+ {
662
+ "include": "#hsig_toplevel"
469
663
  }
470
664
  ]
471
665
  },
472
- "deriving_simple": {
666
+ "hsig_toplevel": {
473
667
  "patterns": [
474
668
  {
475
- "name": "meta.deriving.haskell",
476
- "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}']))",
669
+ "include": "#common_toplevel"
670
+ },
671
+ {
672
+ "include": "#function_type_declaration"
673
+ },
674
+ {
675
+ "include": "#lazy_function_type_signature"
676
+ },
677
+ {
678
+ "include": "#comments"
679
+ }
680
+ ]
681
+ },
682
+ "identifier": {
683
+ "patterns": [
684
+ {
685
+ "name": "identifier.haskell",
686
+ "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}']))",
477
687
  "captures": {
478
- "1": {
479
- "name": "keyword.other.haskell"
480
- },
481
- "2": {
482
- "name": "entity.other.inherited-class.haskell"
688
+ "0": {
689
+ "patterns": [
690
+ {
691
+ "include": "#module_name_prefix"
692
+ },
693
+ {
694
+ "name": "support.function.prelude.$1.haskell",
695
+ "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}']))"
696
+ }
697
+ ]
483
698
  }
484
699
  }
485
700
  }
@@ -501,72 +716,42 @@
501
716
  }
502
717
  ]
503
718
  },
504
- "quasi_quotes": {
719
+ "infix_op": {
505
720
  "patterns": [
506
721
  {
507
- "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}']*)(\\|)",
508
- "end": "(\\|)(\\])",
509
- "beginCaptures": {
510
- "1": {
511
- "name": "punctuation.definition.quasiquotes.begin.haskell"
512
- },
513
- "2": {
514
- "name": "entity.name.tag.haskell",
722
+ "name": "entity.name.function.operator.haskell",
723
+ "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![(),;\\[\\]`{}_\"']))+\\))",
724
+ "captures": {
725
+ "0": {
515
726
  "patterns": [
516
727
  {
517
728
  "include": "#module_name_prefix"
729
+ },
730
+ {
731
+ "name": "support.operator.prelude.haskell",
732
+ "match": "^\\((\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)\\)$"
518
733
  }
519
734
  ]
520
735
  }
521
- },
522
- "endCaptures": {
523
- "2": {
524
- "name": "punctuation.definition.quasiquotes.end.haskell"
525
- }
526
- },
527
- "contentName": "string.quoted.quasiquotes.haskell"
736
+ }
528
737
  }
529
738
  ]
530
739
  },
531
- "module_decl": {
740
+ "instance_decl": {
532
741
  "patterns": [
533
742
  {
534
- "name": "meta.declaration.module.haskell",
535
- "begin": "^([ \\t]*)(module)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
536
- "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]*$)",
537
- "beginCaptures": {
538
- "2": {
539
- "name": "keyword.other.haskell"
540
- }
541
- },
542
- "endCaptures": {
543
- "1": {
544
- "name": "keyword.other.haskell"
545
- }
546
- },
743
+ "name": "meta.declaration.instance.haskell",
744
+ "contentName": "meta.type-signature.haskell",
745
+ "begin": "^([ \\t]*)(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
746
+ "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]*$)",
547
747
  "patterns": [
548
748
  {
549
- "include": "#comments"
550
- },
551
- {
552
- "include": "#module_name"
553
- },
554
- {
555
- "include": "#module_exports"
749
+ "include": "#pragma"
556
750
  },
557
751
  {
558
- "include": "#invalid"
752
+ "include": "#type_signature"
559
753
  }
560
- ]
561
- }
562
- ]
563
- },
564
- "hsig_decl": {
565
- "patterns": [
566
- {
567
- "name": "meta.declaration.module.haskell",
568
- "begin": "^([ \\t]*)(signature)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
569
- "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]*$)",
754
+ ],
570
755
  "beginCaptures": {
571
756
  "2": {
572
757
  "name": "keyword.other.haskell"
@@ -576,378 +761,319 @@
576
761
  "1": {
577
762
  "name": "keyword.other.haskell"
578
763
  }
579
- },
580
- "patterns": [
581
- {
582
- "include": "#comments"
583
- },
584
- {
585
- "include": "#module_name"
586
- },
587
- {
588
- "include": "#module_exports"
589
- },
590
- {
591
- "include": "#invalid"
592
- }
593
- ]
764
+ }
594
765
  }
595
766
  ]
596
767
  },
597
- "class_decl": {
768
+ "invalid": {
598
769
  "patterns": [
599
770
  {
600
- "name": "meta.declaration.class.haskell",
601
- "begin": "^([ \\t]*)(class)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
602
- "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]*$)",
603
- "beginCaptures": {
604
- "2": {
605
- "name": "keyword.other.class.haskell"
606
- }
607
- },
608
- "endCaptures": {
609
- "1": {
610
- "name": "keyword.other.haskell"
611
- }
612
- },
613
- "patterns": [
614
- {
615
- "include": "#type_signature"
616
- }
617
- ]
771
+ "name": "invalid.illegal.character-not-allowed-here.haskell",
772
+ "match": "\\S+"
618
773
  }
619
774
  ]
620
775
  },
621
- "instance_decl": {
776
+ "keywords": {
622
777
  "patterns": [
623
778
  {
624
- "name": "meta.declaration.instance.haskell",
625
- "begin": "^([ \\t]*)(instance)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
626
- "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]*$)",
779
+ "name": "keyword.other.$1.haskell",
780
+ "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}']))"
781
+ },
782
+ {
783
+ "name": "keyword.operator.$1.haskell",
784
+ "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}']))"
785
+ },
786
+ {
787
+ "name": "keyword.control.$1.haskell",
788
+ "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}']))"
789
+ }
790
+ ]
791
+ },
792
+ "lazy_function_type_signature": {
793
+ "patterns": [
794
+ {
795
+ "name": "meta.function.type-declaration.haskell",
627
796
  "contentName": "meta.type-signature.haskell",
628
- "beginCaptures": {
629
- "2": {
630
- "name": "keyword.other.haskell"
631
- }
632
- },
633
- "endCaptures": {
634
- "1": {
635
- "name": "keyword.other.haskell"
636
- }
637
- },
797
+ "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*$",
798
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
638
799
  "patterns": [
639
800
  {
640
- "include": "#pragma"
801
+ "include": "#double_colon_operator"
641
802
  },
642
803
  {
643
804
  "include": "#type_signature"
644
805
  }
645
- ]
806
+ ],
807
+ "beginCaptures": {
808
+ "2": {
809
+ "patterns": [
810
+ {
811
+ "include": "#function_name"
812
+ },
813
+ {
814
+ "include": "#infix_op"
815
+ }
816
+ ]
817
+ }
818
+ }
646
819
  }
647
820
  ]
648
821
  },
649
- "deriving_instance_decl": {
822
+ "liquidhaskell_annotation": {
650
823
  "patterns": [
651
824
  {
652
- "name": "meta.declaration.instance.deriving.haskell",
653
- "begin": "^([ \\t]*)(deriving\\s+instance)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
654
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
655
- "contentName": "meta.type-signature.haskell",
656
- "beginCaptures": {
657
- "2": {
658
- "name": "keyword.other.haskell"
659
- }
660
- },
825
+ "name": "block.liquidhaskell.haskell",
826
+ "contentName": "block.liquidhaskell.annotation.haskell",
827
+ "begin": "\\{-@(?!#)",
828
+ "end": "@-\\}",
661
829
  "patterns": [
662
830
  {
663
- "include": "#pragma"
664
- },
665
- {
666
- "include": "#type_signature"
831
+ "include": "annotation.liquidhaskell.haskell"
667
832
  }
668
833
  ]
669
834
  }
670
835
  ]
671
836
  },
672
- "foreign_import": {
837
+ "lit_num": {
673
838
  "patterns": [
674
839
  {
675
- "name": "meta.foreign.haskell",
676
- "begin": "^([ \\t]*)(foreign)\\s+(import|export)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
677
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
678
- "beginCaptures": {
679
- "2": {
680
- "name": "keyword.other.haskell"
681
- },
682
- "3": {
683
- "name": "keyword.other.haskell"
684
- }
685
- },
840
+ "name": "constant.numeric.hexfloat.haskell",
841
+ "match": "0[xX][0-9a-fA-F_]*(?:\\.[0-9a-fA-F_]+(?:[pP][+-]?[0-9_]+)?|[pP][+-]?[0-9_]+)"
842
+ },
843
+ {
844
+ "name": "constant.numeric.hexadecimal.haskell",
845
+ "match": "0[xX][_0-9a-fA-F]+"
846
+ },
847
+ {
848
+ "name": "constant.numeric.octal.haskell",
849
+ "match": "0[oO][_0-7]+"
850
+ },
851
+ {
852
+ "name": "constant.numeric.binary.haskell",
853
+ "match": "0[bB][_01]+"
854
+ },
855
+ {
856
+ "name": "constant.numeric.float.haskell",
857
+ "match": "[0-9][0-9_]*(?:\\.[0-9_]+(?:[eE][+-]?[0-9_]+)?|[eE][+-]?[0-9_]+)"
858
+ },
859
+ {
860
+ "name": "constant.numeric.decimal.haskell",
861
+ "match": "[0-9][_0-9]*"
862
+ }
863
+ ]
864
+ },
865
+ "module_decl": {
866
+ "patterns": [
867
+ {
868
+ "name": "meta.declaration.module.haskell",
869
+ "begin": "^([ \\t]*)(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
870
+ "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]*$)",
686
871
  "patterns": [
687
872
  {
688
- "match": "(?:un)?safe",
689
- "captures": {
690
- "0": {
691
- "name": "keyword.other.haskell"
692
- }
693
- }
873
+ "include": "#comments"
694
874
  },
695
875
  {
696
- "include": "#function_type_declaration"
876
+ "include": "#module_name"
697
877
  },
698
878
  {
699
- "include": "#haskell_expr"
879
+ "include": "#module_exports"
700
880
  },
701
881
  {
702
- "include": "#comments"
882
+ "include": "#invalid"
703
883
  }
704
- ]
705
- }
706
- ]
707
- },
708
- "regular_import": {
709
- "patterns": [
710
- {
711
- "name": "meta.import.haskell",
712
- "begin": "^([ \\t]*)(import)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
713
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
884
+ ],
714
885
  "beginCaptures": {
715
886
  "2": {
716
887
  "name": "keyword.other.haskell"
717
888
  }
718
889
  },
719
- "patterns": [
720
- {
721
- "include": "#module_name"
722
- },
723
- {
724
- "include": "#module_exports"
725
- },
726
- {
727
- "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}']))",
728
- "captures": {
729
- "1": {
730
- "name": "keyword.other.haskell"
731
- }
732
- }
733
- },
734
- {
735
- "include": "#comments"
890
+ "endCaptures": {
891
+ "1": {
892
+ "name": "keyword.other.haskell"
736
893
  }
737
- ]
894
+ }
738
895
  }
739
896
  ]
740
897
  },
741
- "data_decl": {
898
+ "module_exports": {
742
899
  "patterns": [
743
900
  {
744
- "name": "meta.declaration.type.data.haskell",
745
- "begin": "^([ \\t]*)(data|newtype)\\s+((?:(?!=|where).)*)",
746
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
747
- "beginCaptures": {
748
- "2": {
749
- "name": "keyword.other.data.haskell"
750
- },
751
- "3": {
752
- "name": "meta.type-signature.haskell",
753
- "patterns": [
754
- {
755
- "include": "#family_and_instance"
756
- },
757
- {
758
- "include": "#type_signature"
759
- }
760
- ]
761
- }
762
- },
901
+ "name": "meta.declaration.exports.haskell",
902
+ "begin": "\\(",
903
+ "end": "\\)",
763
904
  "patterns": [
764
905
  {
765
906
  "include": "#comments"
766
907
  },
767
908
  {
768
- "include": "#where"
909
+ "include": "#c_preprocessor"
769
910
  },
770
911
  {
771
- "include": "#deriving"
912
+ "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}']))",
913
+ "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}']))",
914
+ "patterns": [
915
+ {
916
+ "include": "#invalid"
917
+ }
918
+ ],
919
+ "beginCaptures": {
920
+ "1": {
921
+ "name": "keyword.other.haskell"
922
+ }
923
+ },
924
+ "endCaptures": {
925
+ "1": {
926
+ "name": "support.other.module.haskell"
927
+ }
928
+ }
772
929
  },
773
930
  {
774
- "include": "#assignment_op"
931
+ "include": "#function_name"
775
932
  },
776
933
  {
777
- "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*)+)))*)?))",
778
- "captures": {
779
- "1": {
780
- "patterns": [
781
- {
782
- "include": "#type_ctor"
783
- }
784
- ]
785
- },
786
- "2": {
787
- "name": "meta.type-signature.haskell",
788
- "patterns": [
789
- {
790
- "include": "#type_signature"
791
- }
792
- ]
793
- }
794
- }
934
+ "include": "#type_name"
795
935
  },
796
936
  {
797
- "match": "\\|",
798
- "captures": {
799
- "0": {
800
- "name": "punctuation.separator.pipe.haskell"
801
- }
802
- }
937
+ "include": "#comma"
803
938
  },
804
939
  {
805
- "name": "meta.declaration.type.data.record.block.haskell",
806
- "begin": "\\{",
807
- "beginCaptures": {
808
- "0": {
809
- "name": "keyword.operator.record.begin.haskell"
810
- }
811
- },
812
- "end": "\\}",
813
- "endCaptures": {
814
- "0": {
815
- "name": "keyword.operator.record.end.haskell"
816
- }
817
- },
940
+ "name": "meta.other.constructor-list.haskell",
941
+ "begin": "(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))\\s*\\(",
942
+ "end": "\\)",
818
943
  "patterns": [
819
944
  {
820
945
  "include": "#comments"
821
946
  },
947
+ {
948
+ "include": "#c_preprocessor"
949
+ },
950
+ {
951
+ "include": "#type_ctor"
952
+ },
953
+ {
954
+ "include": "#attribute_name"
955
+ },
822
956
  {
823
957
  "include": "#comma"
824
958
  },
825
959
  {
826
- "include": "#record_field_declaration"
960
+ "name": "keyword.operator.wildcard.haskell",
961
+ "match": "\\.\\."
827
962
  }
828
963
  ]
829
964
  },
830
965
  {
831
- "include": "#ctor_type_declaration"
966
+ "include": "#infix_op"
832
967
  }
833
- ]
968
+ ],
969
+ "applyEndPatternLast": true
834
970
  }
835
971
  ]
836
972
  },
837
- "type_alias": {
973
+ "module_name": {
838
974
  "patterns": [
839
975
  {
840
- "name": "meta.declaration.type.type.haskell",
841
- "begin": "^([ \\t]*)(type)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
842
- "end": "^(?!\\1[ \\t]|[ \\t]*$)",
976
+ "name": "support.other.module.haskell",
977
+ "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}']))"
978
+ }
979
+ ]
980
+ },
981
+ "module_name_prefix": {
982
+ "patterns": [
983
+ {
984
+ "name": "support.other.module.haskell",
985
+ "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}']*)*\\."
986
+ }
987
+ ]
988
+ },
989
+ "multiline_type_declaration": {
990
+ "patterns": [
991
+ {
992
+ "name": "meta.multiline.type-declaration.haskell",
843
993
  "contentName": "meta.type-signature.haskell",
844
- "beginCaptures": {
845
- "2": {
846
- "name": "keyword.other.type.haskell"
847
- }
848
- },
994
+ "begin": "^([ \\t]*)((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
995
+ "end": "^(?!\\1|[ \\t]*$)|(?=(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
849
996
  "patterns": [
850
- {
851
- "include": "#comments"
852
- },
853
- {
854
- "include": "#family_and_instance"
855
- },
856
- {
857
- "include": "#where"
858
- },
859
- {
860
- "include": "#assignment_op"
861
- },
862
997
  {
863
998
  "include": "#type_signature"
864
999
  }
865
- ]
1000
+ ],
1001
+ "beginCaptures": {
1002
+ "2": {
1003
+ "name": "keyword.other.double-colon.haskell"
1004
+ }
1005
+ }
866
1006
  }
867
1007
  ]
868
1008
  },
869
- "keywords": {
1009
+ "newline_escape": {
870
1010
  "patterns": [
871
1011
  {
872
- "name": "keyword.other.haskell",
873
- "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}']))"
874
- },
875
- {
876
- "name": "keyword.other.haskell",
877
- "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}']))"
878
- },
1012
+ "name": "markup.other.escape.newline.haskell",
1013
+ "match": "\\\\$"
1014
+ }
1015
+ ]
1016
+ },
1017
+ "operator": {
1018
+ "patterns": [
879
1019
  {
880
1020
  "name": "keyword.operator.haskell",
881
- "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}']))"
882
- },
883
- {
884
- "name": "keyword.control.haskell",
885
- "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}']))"
1021
+ "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![(),;\\[\\]`{}_\"']))+",
1022
+ "captures": {
1023
+ "0": {
1024
+ "patterns": [
1025
+ {
1026
+ "include": "#module_name_prefix"
1027
+ },
1028
+ {
1029
+ "name": "support.operator.prelude.haskell",
1030
+ "match": "^(\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)$"
1031
+ }
1032
+ ]
1033
+ }
1034
+ }
886
1035
  }
887
1036
  ]
888
1037
  },
889
- "c_preprocessor": {
1038
+ "pragma": {
890
1039
  "patterns": [
891
1040
  {
892
- "name": "meta.preprocessor.c.haskell",
893
- "begin": "^(?=#)",
894
- "end": "(?<!\\\\)(?=$)",
1041
+ "name": "meta.preprocessor.haskell",
1042
+ "begin": "\\{-#",
1043
+ "end": "#-\\}",
895
1044
  "patterns": [
896
1045
  {
897
- "include": "source.c"
1046
+ "name": "keyword.other.preprocessor.haskell",
1047
+ "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}']))"
898
1048
  }
899
1049
  ]
900
1050
  }
901
1051
  ]
902
1052
  },
903
- "string": {
1053
+ "quasi_quotes": {
904
1054
  "patterns": [
905
1055
  {
906
- "name": "string.quoted.double.haskell",
907
- "begin": "\"",
908
- "end": "\"",
1056
+ "contentName": "string.quoted.quasiquotes.haskell",
1057
+ "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}']*)(\\|)",
1058
+ "end": "(\\|)(\\])",
909
1059
  "beginCaptures": {
910
- "0": {
911
- "name": "punctuation.definition.string.begin.haskell"
912
- }
913
- },
914
- "endCaptures": {
915
- "0": {
916
- "name": "punctuation.definition.string.end.haskell"
917
- }
918
- },
919
- "patterns": [
920
- {
921
- "include": "#characters"
1060
+ "1": {
1061
+ "name": "punctuation.definition.quasiquotes.begin.haskell"
922
1062
  },
923
- {
924
- "begin": "\\\\\\s",
925
- "end": "\\\\",
926
- "beginCaptures": {
927
- "0": {
928
- "name": "markup.other.escape.newline.begin.haskell"
929
- }
930
- },
931
- "endCaptures": {
932
- "0": {
933
- "name": "markup.other.escape.newline.end.haskell"
934
- }
935
- },
1063
+ "2": {
1064
+ "name": "entity.name.tag.haskell",
936
1065
  "patterns": [
937
1066
  {
938
- "include": "#invalid"
1067
+ "include": "#module_name_prefix"
939
1068
  }
940
1069
  ]
941
1070
  }
942
- ]
943
- }
944
- ]
945
- },
946
- "newline_escape": {
947
- "patterns": [
948
- {
949
- "name": "markup.other.escape.newline.haskell",
950
- "match": "\\\\$"
1071
+ },
1072
+ "endCaptures": {
1073
+ "2": {
1074
+ "name": "punctuation.definition.quasiquotes.end.haskell"
1075
+ }
1076
+ }
951
1077
  }
952
1078
  ]
953
1079
  },
@@ -955,7 +1081,7 @@
955
1081
  "patterns": [
956
1082
  {
957
1083
  "name": "string.quoted.single.haskell",
958
- "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}](?<![(),;\\[\\]`{}_\"']))))(')",
1084
+ "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![(),;\\[\\]`{}_\"']))))(')",
959
1085
  "captures": {
960
1086
  "1": {
961
1087
  "name": "punctuation.definition.string.begin.haskell"
@@ -974,24 +1100,87 @@
974
1100
  }
975
1101
  ]
976
1102
  },
977
- "scoped_type": {
1103
+ "record_field_declaration": {
978
1104
  "patterns": [
979
1105
  {
980
- "match": "\\(((?<paren>(?:[^\\(\\)]|\\(\\g<paren>\\))*)(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?<paren2>(?:[^\\(\\)]|\\(\\g<paren2>\\))*))\\)",
981
- "captures": {
1106
+ "name": "meta.record-field.type-declaration.haskell",
1107
+ "contentName": "meta.type-signature.haskell",
1108
+ "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![(),;\\[\\]`{}_\"']))))))",
1109
+ "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![(),;\\[\\]`{}_\"']))))))|})",
1110
+ "patterns": [
1111
+ {
1112
+ "include": "#type_signature"
1113
+ }
1114
+ ],
1115
+ "beginCaptures": {
982
1116
  "1": {
983
1117
  "patterns": [
984
1118
  {
985
- "include": "#haskell_expr"
1119
+ "include": "#attribute_name"
1120
+ },
1121
+ {
1122
+ "include": "#infix_op"
986
1123
  }
987
1124
  ]
1125
+ },
1126
+ "2": {
1127
+ "name": "keyword.other.double-colon.haskell"
988
1128
  }
989
1129
  }
990
- },
1130
+ }
1131
+ ]
1132
+ },
1133
+ "regular_import": {
1134
+ "patterns": [
991
1135
  {
992
- "match": "((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))(.*?)(?=(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(<-|=)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))|$)",
993
- "captures": {
994
- "1": {
1136
+ "name": "meta.import.haskell",
1137
+ "begin": "^([ \\t]*)(import)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1138
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
1139
+ "patterns": [
1140
+ {
1141
+ "include": "#module_name"
1142
+ },
1143
+ {
1144
+ "include": "#module_exports"
1145
+ },
1146
+ {
1147
+ "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}']))",
1148
+ "captures": {
1149
+ "1": {
1150
+ "name": "keyword.other.haskell"
1151
+ }
1152
+ }
1153
+ },
1154
+ {
1155
+ "include": "#comments"
1156
+ }
1157
+ ],
1158
+ "beginCaptures": {
1159
+ "2": {
1160
+ "name": "keyword.other.haskell"
1161
+ }
1162
+ }
1163
+ }
1164
+ ]
1165
+ },
1166
+ "scoped_type": {
1167
+ "patterns": [
1168
+ {
1169
+ "match": "\\(((?\u003cparen\u003e(?:[^\\(\\)]|\\(\\g\u003cparen\u003e\\))*)(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?\u003cparen2\u003e(?:[^\\(\\)]|\\(\\g\u003cparen2\u003e\\))*))\\)",
1170
+ "captures": {
1171
+ "1": {
1172
+ "patterns": [
1173
+ {
1174
+ "include": "#haskell_expr"
1175
+ }
1176
+ ]
1177
+ }
1178
+ }
1179
+ },
1180
+ {
1181
+ "match": "((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(.*?)(?=(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))|$)",
1182
+ "captures": {
1183
+ "1": {
995
1184
  "name": "keyword.other.double-colon.haskell"
996
1185
  },
997
1186
  "2": {
@@ -1009,7 +1198,7 @@
1009
1198
  "scoped_type_override": {
1010
1199
  "patterns": [
1011
1200
  {
1012
- "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}](?<![(),;\\[\\]`{}_\"'])))",
1201
+ "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![(),;\\[\\]`{}_\"'])))",
1013
1202
  "captures": {
1014
1203
  "2": {
1015
1204
  "patterns": [
@@ -1043,47 +1232,94 @@
1043
1232
  }
1044
1233
  ]
1045
1234
  },
1046
- "comma": {
1235
+ "shebang": {
1047
1236
  "patterns": [
1048
1237
  {
1049
- "name": "punctuation.separator.comma.haskell",
1050
- "match": ","
1238
+ "name": "comment.line.shebang.haskell",
1239
+ "match": "^\\#\\!.*\\brunhaskell\\b.*$"
1051
1240
  }
1052
1241
  ]
1053
1242
  },
1054
- "lit_num": {
1243
+ "string": {
1055
1244
  "patterns": [
1056
1245
  {
1057
- "name": "constant.numeric.hexadecimal.haskell",
1058
- "match": "0[xX][0-9a-fA-F]+"
1059
- },
1060
- {
1061
- "name": "constant.numeric.octal.haskell",
1062
- "match": "0[oO][0-7]+"
1063
- },
1064
- {
1065
- "name": "constant.numeric.float.haskell",
1066
- "match": "[0-9]+(\\.[0-9]+[eE][+-]?|\\.|[eE][+-]?)[0-9]+"
1067
- },
1068
- {
1069
- "name": "constant.numeric.decimal.haskell",
1070
- "match": "[0-9]+"
1246
+ "name": "string.quoted.double.haskell",
1247
+ "begin": "\"",
1248
+ "end": "\"",
1249
+ "patterns": [
1250
+ {
1251
+ "include": "#characters"
1252
+ },
1253
+ {
1254
+ "begin": "\\\\\\s",
1255
+ "end": "\\\\",
1256
+ "patterns": [
1257
+ {
1258
+ "include": "#invalid"
1259
+ }
1260
+ ],
1261
+ "beginCaptures": {
1262
+ "0": {
1263
+ "name": "markup.other.escape.newline.begin.haskell"
1264
+ }
1265
+ },
1266
+ "endCaptures": {
1267
+ "0": {
1268
+ "name": "markup.other.escape.newline.end.haskell"
1269
+ }
1270
+ }
1271
+ }
1272
+ ],
1273
+ "beginCaptures": {
1274
+ "0": {
1275
+ "name": "punctuation.definition.string.begin.haskell"
1276
+ }
1277
+ },
1278
+ "endCaptures": {
1279
+ "0": {
1280
+ "name": "punctuation.definition.string.end.haskell"
1281
+ }
1282
+ }
1071
1283
  }
1072
1284
  ]
1073
1285
  },
1074
- "operator": {
1286
+ "type_alias": {
1075
1287
  "patterns": [
1076
1288
  {
1077
- "name": "keyword.operator.haskell",
1078
- "match": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+"
1289
+ "name": "meta.declaration.type.type.haskell",
1290
+ "contentName": "meta.type-signature.haskell",
1291
+ "begin": "^([ \\t]*)(type)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1292
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
1293
+ "patterns": [
1294
+ {
1295
+ "include": "#comments"
1296
+ },
1297
+ {
1298
+ "include": "#family_and_instance"
1299
+ },
1300
+ {
1301
+ "include": "#where"
1302
+ },
1303
+ {
1304
+ "include": "#assignment_op"
1305
+ },
1306
+ {
1307
+ "include": "#type_signature"
1308
+ }
1309
+ ],
1310
+ "beginCaptures": {
1311
+ "2": {
1312
+ "name": "keyword.other.type.haskell"
1313
+ }
1314
+ }
1079
1315
  }
1080
1316
  ]
1081
1317
  },
1082
- "identifier": {
1318
+ "type_ctor": {
1083
1319
  "patterns": [
1084
1320
  {
1085
- "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}']))",
1086
- "name": "identifier.haskell",
1321
+ "name": "entity.name.tag.haskell",
1322
+ "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}']))",
1087
1323
  "captures": {
1088
1324
  "0": {
1089
1325
  "patterns": [
@@ -1091,8 +1327,8 @@
1091
1327
  "include": "#module_name_prefix"
1092
1328
  },
1093
1329
  {
1094
- "name": "support.function.prelude.$1.haskell",
1095
- "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}']))"
1330
+ "name": "support.tag.prelude.$1.haskell",
1331
+ "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}']))"
1096
1332
  }
1097
1333
  ]
1098
1334
  }
@@ -1104,7 +1340,7 @@
1104
1340
  "patterns": [
1105
1341
  {
1106
1342
  "name": "entity.name.type.haskell",
1107
- "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}']))",
1343
+ "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}']))",
1108
1344
  "captures": {
1109
1345
  "0": {
1110
1346
  "patterns": [
@@ -1113,11 +1349,11 @@
1113
1349
  },
1114
1350
  {
1115
1351
  "name": "entity.other.inherited-class.prelude.$1.haskell",
1116
- "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}']))"
1352
+ "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}']))"
1117
1353
  },
1118
1354
  {
1119
1355
  "name": "support.class.prelude.$1.haskell",
1120
- "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}']))"
1356
+ "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}']))"
1121
1357
  }
1122
1358
  ]
1123
1359
  }
@@ -1125,254 +1361,117 @@
1125
1361
  }
1126
1362
  ]
1127
1363
  },
1128
- "type_ctor": {
1364
+ "type_signature": {
1129
1365
  "patterns": [
1130
1366
  {
1131
- "name": "entity.name.tag.haskell",
1132
- "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}']))",
1367
+ "include": "#pragma"
1368
+ },
1369
+ {
1370
+ "include": "#comments"
1371
+ },
1372
+ {
1373
+ "name": "keyword.other.forall.haskell",
1374
+ "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}']))"
1375
+ },
1376
+ {
1377
+ "name": "constant.language.unit.promoted.haskell",
1378
+ "match": "'(\\(\\))",
1133
1379
  "captures": {
1134
- "0": {
1380
+ "1": {
1135
1381
  "patterns": [
1136
1382
  {
1137
- "include": "#module_name_prefix"
1138
- },
1139
- {
1140
- "name": "support.tag.prelude.$1.haskell",
1141
- "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}']))"
1383
+ "include": "#unit"
1142
1384
  }
1143
1385
  ]
1144
1386
  }
1145
1387
  }
1146
- }
1147
- ]
1148
- },
1149
- "where": {
1150
- "patterns": [
1151
- {
1152
- "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}']))",
1153
- "name": "keyword.other.haskell"
1154
- }
1155
- ]
1156
- },
1157
- "family_and_instance": {
1158
- "patterns": [
1159
- {
1160
- "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}']))",
1161
- "name": "keyword.other.haskell"
1162
- }
1163
- ]
1164
- },
1165
- "invalid": {
1166
- "patterns": [
1167
- {
1168
- "match": "\\S+",
1169
- "name": "invalid.illegal.character-not-allowed-here.haskell"
1170
- }
1171
- ]
1172
- },
1173
- "function_name": {
1174
- "patterns": [
1388
+ },
1175
1389
  {
1176
- "name": "entity.name.function.haskell",
1177
- "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}']))"
1178
- }
1179
- ]
1180
- },
1181
- "assignment_op": {
1182
- "patterns": [
1390
+ "include": "#unit"
1391
+ },
1183
1392
  {
1184
- "match": "=",
1393
+ "name": "constant.language.empty-list.promoted.haskell",
1394
+ "match": "'(\\[\\])",
1185
1395
  "captures": {
1186
- "0": {
1187
- "name": "keyword.operator.assignment.haskell"
1396
+ "1": {
1397
+ "patterns": [
1398
+ {
1399
+ "include": "#empty_list"
1400
+ }
1401
+ ]
1188
1402
  }
1189
1403
  }
1190
- }
1191
- ]
1192
- },
1193
- "attribute_name": {
1194
- "patterns": [
1195
- {
1196
- "name": "entity.other.attribute-name.haskell",
1197
- "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}']))"
1198
- }
1199
- ]
1200
- },
1201
- "liquidhaskell_annotation": {
1202
- "patterns": [
1203
- {
1204
- "name": "block.liquidhaskell.haskell",
1205
- "contentName": "block.liquidhaskell.annotation.haskell",
1206
- "begin": "\\{-@(?!#)",
1207
- "end": "@-\\}",
1208
- "patterns": [
1209
- {
1210
- "include": "annotation.liquidhaskell.haskell"
1211
- }
1212
- ]
1213
- }
1214
- ]
1215
- },
1216
- "shebang": {
1217
- "patterns": [
1218
- {
1219
- "name": "comment.line.shebang.haskell",
1220
- "match": "^\\#\\!.*\\brunhaskell\\b.*$"
1221
- }
1222
- ]
1223
- },
1224
- "haskell_expr": {
1225
- "patterns": [
1226
- {
1227
- "include": "#infix_function"
1228
- },
1229
- {
1230
- "include": "#unit"
1231
1404
  },
1232
1405
  {
1233
1406
  "include": "#empty_list"
1234
1407
  },
1235
- {
1236
- "include": "#quasi_quotes"
1237
- },
1238
- {
1239
- "include": "#keywords"
1240
- },
1241
- {
1242
- "include": "#pragma"
1243
- },
1244
1408
  {
1245
1409
  "include": "#string"
1246
1410
  },
1247
1411
  {
1248
- "include": "#newline_escape"
1249
- },
1250
- {
1251
- "include": "#quoted_character"
1252
- },
1253
- {
1254
- "include": "#comments"
1255
- },
1256
- {
1257
- "include": "#infix_op"
1258
- },
1259
- {
1260
- "include": "#comma"
1412
+ "name": "keyword.other.arrow.haskell",
1413
+ "match": "(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(-\u003e|→)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))"
1261
1414
  },
1262
1415
  {
1263
- "include": "#lit_num"
1416
+ "name": "keyword.other.big-arrow.haskell",
1417
+ "match": "(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))"
1264
1418
  },
1265
1419
  {
1266
- "include": "#scoped_type"
1420
+ "name": "keyword.operator.promoted.haskell",
1421
+ "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![(),;\\[\\]`{}_\"']))+)",
1422
+ "captures": {
1423
+ "1": {
1424
+ "patterns": [
1425
+ {
1426
+ "include": "#operator"
1427
+ }
1428
+ ]
1429
+ }
1430
+ }
1267
1431
  },
1268
1432
  {
1269
1433
  "include": "#operator"
1270
1434
  },
1271
1435
  {
1272
- "include": "#identifier"
1273
- },
1274
- {
1275
- "include": "#type_ctor"
1276
- }
1277
- ]
1278
- },
1279
- "common_toplevel": {
1280
- "patterns": [
1281
- {
1282
- "include": "#class_decl"
1283
- },
1284
- {
1285
- "include": "#instance_decl"
1286
- },
1287
- {
1288
- "include": "#deriving_instance_decl"
1289
- },
1290
- {
1291
- "include": "#foreign_import"
1292
- },
1293
- {
1294
- "include": "#regular_import"
1295
- },
1296
- {
1297
- "include": "#data_decl"
1298
- },
1299
- {
1300
- "include": "#type_alias"
1301
- },
1302
- {
1303
- "include": "#c_preprocessor"
1304
- }
1305
- ]
1306
- },
1307
- "function_type_declaration_with_scoped_type": {
1308
- "patterns": [
1309
- {
1310
- "include": "#scoped_type_override"
1311
- },
1312
- {
1313
- "include": "#function_type_declaration"
1314
- }
1315
- ]
1316
- },
1317
- "haskell_toplevel": {
1318
- "patterns": [
1319
- {
1320
- "include": "#liquidhaskell_annotation"
1321
- },
1322
- {
1323
- "include": "#common_toplevel"
1324
- },
1325
- {
1326
- "include": "#function_type_declaration_with_scoped_type"
1327
- },
1328
- {
1329
- "include": "#haskell_expr"
1330
- }
1331
- ]
1332
- },
1333
- "hsig_toplevel": {
1334
- "patterns": [
1335
- {
1336
- "include": "#common_toplevel"
1436
+ "name": "variable.other.generic-type.haskell",
1437
+ "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}']))"
1337
1438
  },
1338
1439
  {
1339
- "include": "#function_type_declaration"
1440
+ "name": "entity.name.type.promoted.haskell",
1441
+ "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}']))",
1442
+ "captures": {
1443
+ "1": {
1444
+ "patterns": [
1445
+ {
1446
+ "include": "#type_name"
1447
+ }
1448
+ ]
1449
+ }
1450
+ }
1340
1451
  },
1341
1452
  {
1342
- "include": "#lazy_function_type_signature"
1453
+ "include": "#type_name"
1343
1454
  },
1344
1455
  {
1345
- "include": "#comments"
1456
+ "include": "#lit_num"
1346
1457
  }
1347
1458
  ]
1348
1459
  },
1349
- "haskell_source": {
1460
+ "unit": {
1350
1461
  "patterns": [
1351
1462
  {
1352
- "include": "#shebang"
1353
- },
1354
- {
1355
- "include": "#module_decl"
1356
- },
1357
- {
1358
- "include": "#haskell_toplevel"
1463
+ "name": "constant.language.unit.haskell",
1464
+ "match": "\\(\\)"
1359
1465
  }
1360
1466
  ]
1361
1467
  },
1362
- "hsig_source": {
1468
+ "where": {
1363
1469
  "patterns": [
1364
1470
  {
1365
- "include": "#hsig_decl"
1366
- },
1367
- {
1368
- "include": "#hsig_toplevel"
1471
+ "name": "keyword.other.haskell",
1472
+ "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}']))"
1369
1473
  }
1370
1474
  ]
1371
1475
  }
1372
- },
1373
- "patterns": [
1374
- {
1375
- "include": "#haskell_source"
1376
- }
1377
- ]
1378
- }
1476
+ }
1477
+ }