github-linguist 5.2.0 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/annotation.liquidhaskell.haskell.json +1445 -0
  3. data/grammars/hint.haskell.json +134 -17
  4. data/grammars/hint.message.haskell.json +134 -17
  5. data/grammars/hint.type.haskell.json +134 -17
  6. data/grammars/source.abl.json +48 -48
  7. data/grammars/source.afm.json +8 -1
  8. data/grammars/source.angelscript.json +195 -0
  9. data/grammars/source.ats.json +128 -58
  10. data/grammars/source.awk.json +138 -138
  11. data/grammars/source.ballerina.json +434 -0
  12. data/grammars/source.chapel.json +1 -1
  13. data/grammars/source.clips.json +20 -20
  14. data/grammars/source.cobol.json +4 -3
  15. data/grammars/source.coffee.json +556 -109
  16. data/grammars/source.cs.json +10 -5
  17. data/grammars/source.csound-document.json +1 -1
  18. data/grammars/source.csound-score.json +9 -9
  19. data/grammars/source.csound.json +23 -28
  20. data/grammars/source.css.json +6 -5
  21. data/grammars/source.data-weave.json +1584 -0
  22. data/grammars/source.elixir.json +3 -61
  23. data/grammars/source.elm.json +88 -88
  24. data/grammars/source.emacs.lisp.json +12 -1
  25. data/grammars/source.haskell.json +134 -17
  26. data/grammars/source.hsig.json +1376 -0
  27. data/grammars/source.httpspec.json +128 -128
  28. data/grammars/source.jison.json +6 -14
  29. data/grammars/source.jisonlex.json +1 -9
  30. data/grammars/source.js.json +1 -0
  31. data/grammars/source.js.regexp.json +0 -4
  32. data/grammars/source.js.regexp.replacement.json +0 -4
  33. data/grammars/source.jsdoc.json +3 -3
  34. data/grammars/source.lsl.json +146 -53
  35. data/grammars/source.mercury.json +166 -166
  36. data/grammars/source.ne.json +108 -0
  37. data/grammars/source.nim_filter.json +51 -51
  38. data/grammars/source.nut.json +266 -0
  39. data/grammars/source.opal.json +112 -112
  40. data/grammars/source.opalsysdefs.json +16 -16
  41. data/grammars/source.pan.json +1 -1
  42. data/grammars/source.papyrus.skyrim.json +720 -720
  43. data/grammars/source.pawn.json +2 -2
  44. data/grammars/source.prolog.eclipse.json +42 -42
  45. data/grammars/source.prolog.json +41 -41
  46. data/grammars/source.purescript.json +41 -25
  47. data/grammars/source.python.json +47 -34
  48. data/grammars/source.racket.json +54 -54
  49. data/grammars/source.reason.json +37 -3
  50. data/grammars/source.regexp.python.json +31 -0
  51. data/grammars/source.ruby.gemfile.json +27 -0
  52. data/grammars/source.ruby.json +1057 -356
  53. data/grammars/source.rust.json +1 -1
  54. data/grammars/source.sbt.json +13 -3
  55. data/grammars/source.scala.json +74 -55
  56. data/grammars/source.shaderlab.json +1 -1
  57. data/grammars/source.shell.json +26 -21
  58. data/grammars/source.shen.json +91 -91
  59. data/grammars/source.sqf.json +1 -1
  60. data/grammars/source.supercollider.json +1 -1
  61. data/grammars/source.swift.json +4 -0
  62. data/grammars/source.terra.json +36 -37
  63. data/grammars/source.terraform.json +98 -98
  64. data/grammars/source.ts.json +2231 -1677
  65. data/grammars/source.tsx.json +142 -3520
  66. data/grammars/source.vbnet.json +201 -263
  67. data/grammars/source.viml.json +2 -2
  68. data/grammars/source.wdl.json +200 -0
  69. data/grammars/source.yaml.json +34 -16
  70. data/grammars/text.find-refs.json +3 -3
  71. data/grammars/text.haml.json +1 -1
  72. data/grammars/text.html.abl.json +6 -6
  73. data/grammars/text.html.erb.json +8 -11
  74. data/grammars/text.html.php.blade.json +256 -220
  75. data/grammars/text.html.vue.json +1 -1
  76. data/grammars/text.slim.json +31 -17
  77. data/grammars/text.tex.latex.haskell.json +150 -33
  78. data/lib/linguist/heuristics.rb +8 -0
  79. data/lib/linguist/languages.json +1 -1
  80. data/lib/linguist/languages.yml +82 -26
  81. data/lib/linguist/samples.json +134512 -132868
  82. data/lib/linguist/vendor.yml +3 -0
  83. data/lib/linguist/version.rb +1 -1
  84. metadata +13 -4
@@ -524,7 +524,7 @@
524
524
  ]
525
525
  },
526
526
  {
527
- "begin": "(<)((?i:script))\\b(?![^>]*/>)(?![^>]*(?i:type.?=.?text/((?!javascript|babel).*)))",
527
+ "begin": "(<)((?i:script))\\b(?![^>]*/>)(?![^>]*(?i:type.?=.?text/((?!javascript|babel|ecmascript).*)))",
528
528
  "beginCaptures": {
529
529
  "1": {
530
530
  "name": "punctuation.definition.tag.begin.html"
@@ -84,7 +84,7 @@
84
84
  "name": "text.markdown.filter.slim",
85
85
  "patterns": [
86
86
  {
87
- "include": "source.md"
87
+ "include": "text.html.markdown"
88
88
  }
89
89
  ]
90
90
  },
@@ -175,22 +175,13 @@
175
175
  {
176
176
  "begin": "^(\\s*)(/)\\s*.*$",
177
177
  "beginCaptures": {
178
- "1": {
179
- "name": "punctuation.section.comment.slim"
178
+ "2": {
179
+ "name": "comment.line.slash.slim"
180
180
  }
181
181
  },
182
- "end": "^(?!\\1 )",
182
+ "end": "^(?!(\\1\\s)|\\s*$)",
183
183
  "name": "comment.block.slim"
184
184
  },
185
- {
186
- "captures": {
187
- "1": {
188
- "name": "punctuation.section.comment.slim"
189
- }
190
- },
191
- "match": "^\\s*(/)\\s*\\S.*$\\n?",
192
- "name": "comment.line.slash.slim"
193
- },
194
185
  {
195
186
  "begin": "^\\s*(?=-)",
196
187
  "end": "$",
@@ -216,7 +207,20 @@
216
207
  "include": "#embedded-ruby"
217
208
  },
218
209
  {
219
- "begin": "^\\s*(\\.|#|[a-zA-Z0-9]+)([\\w-]+)?",
210
+ "begin": "^(\\s*)(\\||')\\s*",
211
+ "comment": "Verbatim text (can include HTML tags and copied lines)",
212
+ "end": "^(?!(\\1\\s)|\\s*$)",
213
+ "patterns": [
214
+ {
215
+ "include": "text.html.basic"
216
+ },
217
+ {
218
+ "include": "#embedded-ruby"
219
+ }
220
+ ]
221
+ },
222
+ {
223
+ "begin": "^\\s*(\\.|#|[-a-zA-Z0-9]+)([\\w-]+)?",
220
224
  "captures": {
221
225
  "1": {
222
226
  "name": "entity.name.tag.slim"
@@ -226,7 +230,7 @@
226
230
  }
227
231
  },
228
232
  "comment": "1 - dot OR hash OR any combination of word, number; 2 - OPTIONAL any combination of word, number, dash or underscore (following a . or",
229
- "end": "$|(?!\\.|#|=|:|-|~|/|\\}|\\]|\\*|\\s?[\\*\\{])",
233
+ "end": "$|(?!\\.|#|:|-|~|/|\\}|\\]|\\*|\\s?[\\*\\{])",
230
234
  "name": "meta.tag",
231
235
  "patterns": [
232
236
  {
@@ -420,8 +424,14 @@
420
424
  },
421
425
  "rubyline": {
422
426
  "begin": "(==|=)(<>|><|<'|'<|<|>)?|-",
427
+ "comment": "Hack to thwart Sublime's Ruby highlighter. It thinks do without a variable continues the next line (this can be muted with a / at the end of the line). For things like yields, do is unnecessary without an argument, so this hack will suffice",
423
428
  "contentName": "source.ruby.embedded.slim",
424
- "end": "(?<!\\\\|,|,\\n|\\\\\\n)$",
429
+ "end": "(do\\s*\\n$)|(?<!\\\\|,|,\\n|\\\\\\n)$",
430
+ "endCaptures": {
431
+ "1": {
432
+ "name": "keyword.control.start-block.ruby"
433
+ }
434
+ },
425
435
  "name": "meta.line.ruby.slim",
426
436
  "patterns": [
427
437
  {
@@ -486,16 +496,20 @@
486
496
  ]
487
497
  },
488
498
  "tag-attribute": {
489
- "begin": "([\\w.#_-]+)=(?!\\s)(true|false|nil)?(\\s*\\(|\\{)?",
499
+ "begin": "([\\w.#_-]+)(=)(?!\\s)(true|false|nil)?(\\s*\\(|\\{)?",
490
500
  "captures": {
491
501
  "1": {
492
502
  "name": "entity.other.attribute-name.event.slim"
493
503
  },
494
504
  "2": {
505
+ "name": "punctuation.separator.key-value.html"
506
+ },
507
+ "3": {
495
508
  "name": "constant.language.slim"
496
509
  }
497
510
  },
498
511
  "end": "\\}|\\)|$",
512
+ "name": "meta.attribute-with-value.slim",
499
513
  "patterns": [
500
514
  {
501
515
  "include": "#tag-stuff"
@@ -12,18 +12,19 @@
12
12
  "classNameOne": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
13
13
  "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}']*",
14
14
  "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}']*)*",
15
- "operatorChar": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]",
16
- "operator": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]+",
17
- "operatorFun": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]+\\))",
15
+ "operatorChar": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|]))",
16
+ "operator": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|]))+",
17
+ "operatorFun": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|]))+\\))",
18
18
  "basicChar": "[\\ -\\[\\]-~]",
19
19
  "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\\\\\\\"'\\&])",
20
20
  "octalChar": "(?:\\\\o[0-7]+)",
21
21
  "hexChar": "(?:\\\\x[0-9A-Fa-f]+)",
22
22
  "controlChar": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
23
- "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}&&[^(),;\\[\\]`{}_\"'\\|]])",
24
- "functionTypeDeclaration": "(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]))))",
25
- "doubleColonOperator": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])",
26
- "ctorTypeDeclaration": "(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]))))",
23
+ "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}](?<![(),;\\[\\]`{}_\"'\\|])))",
24
+ "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}](?<![(),;\\[\\]`{}_\"'\\|]))+\\))))*)",
25
+ "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}](?<![(),;\\[\\]`{}_\"'\\|]))))))",
26
+ "doubleColonOperator": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))",
27
+ "ctorTypeDeclaration": "(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|]))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|]))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|]))))))",
27
28
  "ctorArgs": "(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)",
28
29
  "ctor": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)))*)?))",
29
30
  "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}']*))",
@@ -38,7 +39,7 @@
38
39
  },
39
40
  "patterns": [
40
41
  {
41
- "begin": "^((\\\\)begin)({)(code|spec)(})(\\s*\\n)?",
42
+ "begin": "^((\\\\)begin)({)(code|spec)(})(\\s*$)?",
42
43
  "beginCaptures": {
43
44
  "1": {
44
45
  "name": "support.function.be.latex.haskell"
@@ -163,7 +164,7 @@
163
164
  {
164
165
  "name": "comment.line.double-dash.haddock.haskell",
165
166
  "begin": "(--+)\\s+([|^])",
166
- "end": "\\n",
167
+ "end": "$",
167
168
  "beginCaptures": {
168
169
  "1": {
169
170
  "name": "punctuation.definition.comment.haskell"
@@ -176,13 +177,13 @@
176
177
  ]
177
178
  },
178
179
  {
179
- "begin": "(^(?:>|<) [ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]))",
180
+ "begin": "(^(?:>|<) [ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|]))))",
180
181
  "end": "(?!\\G)",
181
182
  "patterns": [
182
183
  {
183
184
  "name": "comment.line.double-dash.haskell",
184
185
  "begin": "--",
185
- "end": "\\n",
186
+ "end": "$",
186
187
  "beginCaptures": {
187
188
  "0": {
188
189
  "name": "punctuation.definition.comment.haskell"
@@ -220,7 +221,7 @@
220
221
  "patterns": [
221
222
  {
222
223
  "name": "entity.name.function.infix.haskell",
223
- "match": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]+\\))"
224
+ "match": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|]))+\\))"
224
225
  }
225
226
  ]
226
227
  },
@@ -295,7 +296,7 @@
295
296
  "end": "#-\\}",
296
297
  "patterns": [
297
298
  {
298
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(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}']))",
299
+ "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}']))",
299
300
  "name": "keyword.other.preprocessor.haskell"
300
301
  }
301
302
  ]
@@ -306,7 +307,7 @@
306
307
  "patterns": [
307
308
  {
308
309
  "name": "meta.function.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{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}&&[^(),;\\[\\]`{}_\"'\\|]]))))",
310
+ "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}](?<![(),;\\[\\]`{}_\"'\\|]))))))",
310
311
  "end": "^(?!(?:>|<) \\1[ \\t]|(?:>|<) [ \\t]*$)|^(?!(?:>|<) )",
311
312
  "contentName": "meta.type-signature.haskell",
312
313
  "beginCaptures": {
@@ -332,11 +333,49 @@
332
333
  }
333
334
  ]
334
335
  },
336
+ "lazy_function_type_signature": {
337
+ "patterns": [
338
+ {
339
+ "name": "meta.function.type-declaration.haskell",
340
+ "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*$",
341
+ "end": "^(?!(?:>|<) \\1[ \\t]|(?:>|<) [ \\t]*$)|^(?!(?:>|<) )",
342
+ "contentName": "meta.type-signature.haskell",
343
+ "beginCaptures": {
344
+ "2": {
345
+ "patterns": [
346
+ {
347
+ "include": "#function_name"
348
+ },
349
+ {
350
+ "include": "#infix_op"
351
+ }
352
+ ]
353
+ }
354
+ },
355
+ "patterns": [
356
+ {
357
+ "include": "#double_colon_operator"
358
+ },
359
+ {
360
+ "include": "#type_signature"
361
+ }
362
+ ]
363
+ }
364
+ ]
365
+ },
366
+ "double_colon_operator": {
367
+ "patterns": [
368
+ {
369
+ "name": "keyword.other.double-colon.haskell",
370
+ "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))"
371
+ }
372
+ ]
373
+ },
335
374
  "ctor_type_declaration": {
336
375
  "patterns": [
337
376
  {
338
377
  "name": "meta.ctor.type-declaration.haskell",
339
- "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}&&[^(),;\\[\\]`{}_\"'\\|]]))))",
378
+ "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}](?<![(),;\\[\\]`{}_\"'\\|]))))))",
340
379
  "end": "^(?!(?:>|<) \\1[ \\t]|(?:>|<) [ \\t]*$)|^(?!(?:>|<) )",
341
380
  "contentName": "meta.type-signature.haskell",
342
381
  "beginCaptures": {
@@ -366,8 +405,8 @@
366
405
  "patterns": [
367
406
  {
368
407
  "name": "meta.record-field.type-declaration.haskell",
369
- "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}&&[^(),;\\[\\]`{}_\"'\\|]]))))",
370
- "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}&&[^(),;\\[\\]`{}_\"'\\|]]))))|})",
408
+ "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}](?<![(),;\\[\\]`{}_\"'\\|]))))))",
409
+ "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}](?<![(),;\\[\\]`{}_\"'\\|]))))))|})",
371
410
  "contentName": "meta.type-signature.haskell",
372
411
  "beginCaptures": {
373
412
  "1": {
@@ -415,11 +454,11 @@
415
454
  },
416
455
  {
417
456
  "name": "keyword.other.arrow.haskell",
418
- "match": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])(->|→)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])"
457
+ "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))(->|→)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))"
419
458
  },
420
459
  {
421
460
  "name": "keyword.other.big-arrow.haskell",
422
- "match": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])(=>|⇒)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])"
461
+ "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))(=>|⇒)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))"
423
462
  },
424
463
  {
425
464
  "include": "#operator"
@@ -534,14 +573,19 @@
534
573
  "quasi_quotes": {
535
574
  "patterns": [
536
575
  {
537
- "begin": "(\\[)([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(\\|)",
576
+ "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}']*)(\\|)",
538
577
  "end": "(\\|)(\\])",
539
578
  "beginCaptures": {
540
579
  "1": {
541
580
  "name": "punctuation.definition.quasiquotes.begin.haskell"
542
581
  },
543
582
  "2": {
544
- "name": "entity.name.tag.haskell"
583
+ "name": "entity.name.tag.haskell",
584
+ "patterns": [
585
+ {
586
+ "include": "#module_name_prefix"
587
+ }
588
+ ]
545
589
  }
546
590
  },
547
591
  "endCaptures": {
@@ -586,6 +630,39 @@
586
630
  }
587
631
  ]
588
632
  },
633
+ "hsig_decl": {
634
+ "patterns": [
635
+ {
636
+ "name": "meta.declaration.module.haskell",
637
+ "begin": "^(?:>|<) ([ \\t]*)(signature)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
638
+ "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]*$)|^(?!(?:>|<) )",
639
+ "beginCaptures": {
640
+ "2": {
641
+ "name": "keyword.other.haskell"
642
+ }
643
+ },
644
+ "endCaptures": {
645
+ "1": {
646
+ "name": "keyword.other.haskell"
647
+ }
648
+ },
649
+ "patterns": [
650
+ {
651
+ "include": "#comments"
652
+ },
653
+ {
654
+ "include": "#module_name"
655
+ },
656
+ {
657
+ "include": "#module_exports"
658
+ },
659
+ {
660
+ "include": "#invalid"
661
+ }
662
+ ]
663
+ }
664
+ ]
665
+ },
589
666
  "class_decl": {
590
667
  "patterns": [
591
668
  {
@@ -883,7 +960,7 @@
883
960
  {
884
961
  "name": "meta.preprocessor.c.haskell",
885
962
  "begin": "^(?:>|<) (?=#)",
886
- "end": "(?<!\\\\)(?=\\n)",
963
+ "end": "(?<!\\\\)(?=$)",
887
964
  "patterns": [
888
965
  {
889
966
  "include": "source.c"
@@ -947,7 +1024,7 @@
947
1024
  "patterns": [
948
1025
  {
949
1026
  "name": "string.quoted.single.haskell",
950
- "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}&&[^(),;\\[\\]`{}_\"'\\|]]))(')",
1027
+ "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}](?<![(),;\\[\\]`{}_\"'\\|]))))(')",
951
1028
  "captures": {
952
1029
  "1": {
953
1030
  "name": "punctuation.definition.string.begin.haskell"
@@ -969,7 +1046,7 @@
969
1046
  "scoped_type": {
970
1047
  "patterns": [
971
1048
  {
972
- "match": "\\(((?<paren>(?:[^\\(\\)]|\\(\\g<paren>\\))*)(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])(?<paren2>(?:[^\\(\\)]|\\(\\g<paren2>\\))*))\\)",
1049
+ "match": "\\(((?<paren>(?:[^\\(\\)]|\\(\\g<paren>\\))*)(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))(?<paren2>(?:[^\\(\\)]|\\(\\g<paren2>\\))*))\\)",
973
1050
  "captures": {
974
1051
  "1": {
975
1052
  "patterns": [
@@ -981,7 +1058,7 @@
981
1058
  }
982
1059
  },
983
1060
  {
984
- "match": "((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]))(.*?)(?=(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])(<-|=)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]])|$)",
1061
+ "match": "((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|]))))(.*?)(?=(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))(<-|=)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|])))|$)",
985
1062
  "captures": {
986
1063
  "1": {
987
1064
  "name": "keyword.other.double-colon.haskell"
@@ -1001,7 +1078,7 @@
1001
1078
  "scoped_type_override": {
1002
1079
  "patterns": [
1003
1080
  {
1004
- "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}&&[^(),;\\[\\]`{}_\"'\\|]])",
1081
+ "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}](?<![(),;\\[\\]`{}_\"'\\|])))",
1005
1082
  "captures": {
1006
1083
  "2": {
1007
1084
  "patterns": [
@@ -1067,7 +1144,7 @@
1067
1144
  "patterns": [
1068
1145
  {
1069
1146
  "name": "keyword.operator.haskell",
1070
- "match": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'\\|]]+"
1147
+ "match": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'\\|]))+"
1071
1148
  }
1072
1149
  ]
1073
1150
  },
@@ -1199,7 +1276,7 @@
1199
1276
  "end": "@-\\}",
1200
1277
  "patterns": [
1201
1278
  {
1202
- "include": "#haskell_expr"
1279
+ "include": "annotation.liquidhaskell.haskell"
1203
1280
  }
1204
1281
  ]
1205
1282
  }
@@ -1268,11 +1345,8 @@
1268
1345
  }
1269
1346
  ]
1270
1347
  },
1271
- "haskell_toplevel": {
1348
+ "common_toplevel": {
1272
1349
  "patterns": [
1273
- {
1274
- "include": "#liquidhaskell_annotation"
1275
- },
1276
1350
  {
1277
1351
  "include": "#class_decl"
1278
1352
  },
@@ -1296,18 +1370,51 @@
1296
1370
  },
1297
1371
  {
1298
1372
  "include": "#c_preprocessor"
1299
- },
1373
+ }
1374
+ ]
1375
+ },
1376
+ "function_type_declaration_with_scoped_type": {
1377
+ "patterns": [
1300
1378
  {
1301
1379
  "include": "#scoped_type_override"
1302
1380
  },
1303
1381
  {
1304
1382
  "include": "#function_type_declaration"
1383
+ }
1384
+ ]
1385
+ },
1386
+ "haskell_toplevel": {
1387
+ "patterns": [
1388
+ {
1389
+ "include": "#liquidhaskell_annotation"
1390
+ },
1391
+ {
1392
+ "include": "#common_toplevel"
1393
+ },
1394
+ {
1395
+ "include": "#function_type_declaration_with_scoped_type"
1305
1396
  },
1306
1397
  {
1307
1398
  "include": "#haskell_expr"
1308
1399
  }
1309
1400
  ]
1310
1401
  },
1402
+ "hsig_toplevel": {
1403
+ "patterns": [
1404
+ {
1405
+ "include": "#common_toplevel"
1406
+ },
1407
+ {
1408
+ "include": "#function_type_declaration"
1409
+ },
1410
+ {
1411
+ "include": "#lazy_function_type_signature"
1412
+ },
1413
+ {
1414
+ "include": "#comments"
1415
+ }
1416
+ ]
1417
+ },
1311
1418
  "haskell_source": {
1312
1419
  "patterns": [
1313
1420
  {
@@ -1320,6 +1427,16 @@
1320
1427
  "include": "#haskell_toplevel"
1321
1428
  }
1322
1429
  ]
1430
+ },
1431
+ "hsig_source": {
1432
+ "patterns": [
1433
+ {
1434
+ "include": "#hsig_decl"
1435
+ },
1436
+ {
1437
+ "include": "#hsig_toplevel"
1438
+ }
1439
+ ]
1323
1440
  }
1324
1441
  }
1325
1442
  }