github-linguist 4.8.8 → 4.8.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/hint.haskell.json +1123 -0
  3. data/grammars/hint.message.haskell.json +1147 -0
  4. data/grammars/hint.type.haskell.json +1120 -0
  5. data/grammars/source.asn.json +59 -0
  6. data/grammars/source.blitzmax.json +0 -2
  7. data/grammars/source.bsl.json +372 -0
  8. data/grammars/source.c++.json +67 -0
  9. data/grammars/source.c2hs.json +27 -0
  10. data/grammars/source.cabal.json +66 -0
  11. data/grammars/source.coffee.json +6 -5
  12. data/grammars/source.crystal.json +0 -11
  13. data/grammars/source.csound-score.json +3 -3
  14. data/grammars/source.csound.json +51 -15
  15. data/grammars/source.css.json +1 -1
  16. data/grammars/source.css.less.json +9 -5
  17. data/grammars/source.cython.json +42 -193
  18. data/grammars/source.d.json +7 -7
  19. data/grammars/source.elixir.json +2 -2
  20. data/grammars/source.forth.json +0 -2
  21. data/grammars/source.graphql.json +8 -2
  22. data/grammars/source.haskell.json +1089 -323
  23. data/grammars/source.hsc2hs.json +12 -0
  24. data/grammars/source.ideal.json +356 -0
  25. data/grammars/source.java.json +3 -0
  26. data/grammars/source.js.json +262 -131
  27. data/grammars/source.js.jsx.json +848 -256
  28. data/grammars/source.lsl.json +51 -103
  29. data/grammars/source.objc.json +1 -1
  30. data/grammars/source.parrot.pir.json +49 -15
  31. data/grammars/source.pic.json +868 -0
  32. data/grammars/source.purescript.json +114 -90
  33. data/grammars/source.python.json +11 -9
  34. data/grammars/source.regexp.babel.json +1 -1
  35. data/grammars/source.renpy.json +7 -7
  36. data/grammars/source.rexx.json +59 -0
  37. data/grammars/source.sas.json +8 -75
  38. data/grammars/source.sdbl.json +97 -0
  39. data/grammars/source.shell.json +1 -0
  40. data/grammars/source.smali.json +2 -2
  41. data/grammars/source.sqf.json +11 -11
  42. data/grammars/source.stan.json +60 -25
  43. data/grammars/source.tla.json +18 -6
  44. data/grammars/source.toc.json +5 -1
  45. data/grammars/source.ts.json +134 -31
  46. data/grammars/source.tsx.json +134 -31
  47. data/grammars/source.vhdl.json +150 -117
  48. data/grammars/source.viml.json +4 -4
  49. data/grammars/source.xquery.json +23 -5
  50. data/grammars/source.yaml.json +35 -19
  51. data/grammars/text.html.handlebars.json +2 -2
  52. data/grammars/text.html.php.blade.json +1 -1
  53. data/grammars/text.html.twig.json +1 -4
  54. data/grammars/text.html.vue.json +41 -1
  55. data/grammars/text.restructuredtext.json +56 -1
  56. data/grammars/text.roff.json +5089 -0
  57. data/grammars/text.runoff.json +321 -0
  58. data/grammars/text.slim.json +126 -105
  59. data/grammars/text.tex.latex.haskell.json +1335 -21
  60. data/lib/linguist/heuristics.rb +8 -0
  61. data/lib/linguist/languages.json +1 -1
  62. data/lib/linguist/languages.yml +58 -3
  63. data/lib/linguist/samples.json +5257 -76
  64. data/lib/linguist/version.rb +1 -1
  65. metadata +16 -4
  66. data/grammars/source.man.json +0 -53
  67. data/grammars/text.groff.json +0 -113
@@ -0,0 +1,1120 @@
1
+ {
2
+ "fileTypes": [
3
+
4
+ ],
5
+ "scopeName": "hint.type.haskell",
6
+ "macros": {
7
+ "identStartCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}]",
8
+ "identCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']",
9
+ "functionNameOne": "[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
10
+ "classNameOne": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
11
+ "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}']*",
12
+ "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}']*)*",
13
+ "operatorChar": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]",
14
+ "operator": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+",
15
+ "operatorFun": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))",
16
+ "basicChar": "[\\ -\\[\\]-~]",
17
+ "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\\\\\\\"'\\&])",
18
+ "octalChar": "(?:\\\\o[0-7]+)",
19
+ "hexChar": "(?:\\\\x[0-9A-Fa-f]+)",
20
+ "controlChar": "(?:\\^[A-Z@\\[\\]\\\\\\^_])",
21
+ "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@\\[\\]\\\\\\^_]))",
22
+ "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*(::|∷)))",
23
+ "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*(::|∷)))",
24
+ "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*)+)",
25
+ "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*)+)))*)?))",
26
+ "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}']*))",
27
+ "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}']*)))*)",
28
+ "indentChar": "[ \\t]",
29
+ "indentBlockStart": "^([ \\t]*)",
30
+ "indentBlockEnd": "^(?!\\1[ \\t]|[ \\t]*$)",
31
+ "maybeBirdTrack": "^",
32
+ "lb": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))",
33
+ "rb": "(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
34
+ "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}'])))"
35
+ },
36
+ "patterns": [
37
+ {
38
+ "include": "#type_signature"
39
+ }
40
+ ],
41
+ "repository": {
42
+ "block_comment": {
43
+ "patterns": [
44
+ {
45
+ "name": "comment.block.haddock.haskell",
46
+ "begin": "\\{-\\s*[|^]",
47
+ "end": "-\\}",
48
+ "applyEndPatternLast": 1,
49
+ "beginCaptures": {
50
+ "0": {
51
+ "name": "punctuation.definition.comment.haddock.haskell"
52
+ }
53
+ },
54
+ "endCaptures": {
55
+ "0": {
56
+ "name": "punctuation.definition.comment.haddock.haskell"
57
+ }
58
+ },
59
+ "patterns": [
60
+ {
61
+ "include": "#block_comment"
62
+ }
63
+ ]
64
+ },
65
+ {
66
+ "name": "comment.block.haskell",
67
+ "begin": "\\{-",
68
+ "end": "-\\}",
69
+ "applyEndPatternLast": 1,
70
+ "beginCaptures": {
71
+ "0": {
72
+ "name": "punctuation.definition.comment.block.start.haskell"
73
+ }
74
+ },
75
+ "endCaptures": {
76
+ "0": {
77
+ "name": "punctuation.definition.comment.block.end.haskell"
78
+ }
79
+ },
80
+ "patterns": [
81
+ {
82
+ "include": "#block_comment"
83
+ }
84
+ ]
85
+ }
86
+ ]
87
+ },
88
+ "comments": {
89
+ "patterns": [
90
+ {
91
+ "begin": "(^[ \\t]+)?(?=--+\\s+[|^])",
92
+ "end": "(?!\\G)",
93
+ "beginCaptures": {
94
+ "1": {
95
+ "name": "punctuation.whitespace.comment.leading.haskell"
96
+ }
97
+ },
98
+ "patterns": [
99
+ {
100
+ "name": "comment.line.double-dash.haddock.haskell",
101
+ "begin": "(--+)\\s+([|^])",
102
+ "end": "\\n",
103
+ "beginCaptures": {
104
+ "1": {
105
+ "name": "punctuation.definition.comment.haskell"
106
+ },
107
+ "2": {
108
+ "name": "punctuation.definition.comment.haddock.haskell"
109
+ }
110
+ }
111
+ }
112
+ ]
113
+ },
114
+ {
115
+ "begin": "(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",
116
+ "end": "(?!\\G)",
117
+ "beginCaptures": {
118
+ "1": {
119
+ "name": "punctuation.whitespace.comment.leading.haskell"
120
+ }
121
+ },
122
+ "patterns": [
123
+ {
124
+ "name": "comment.line.double-dash.haskell",
125
+ "begin": "--",
126
+ "end": "\\n",
127
+ "beginCaptures": {
128
+ "0": {
129
+ "name": "punctuation.definition.comment.haskell"
130
+ }
131
+ }
132
+ }
133
+ ]
134
+ },
135
+ {
136
+ "include": "#block_comment"
137
+ }
138
+ ]
139
+ },
140
+ "characters": {
141
+ "patterns": [
142
+ {
143
+ "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\\\\\\\"'\\&])",
144
+ "name": "constant.character.escape.haskell"
145
+ },
146
+ {
147
+ "match": "(?:\\\\o[0-7]+)",
148
+ "name": "constant.character.escape.octal.haskell"
149
+ },
150
+ {
151
+ "match": "(?:\\\\x[0-9A-Fa-f]+)",
152
+ "name": "constant.character.escape.hexadecimal.haskell"
153
+ },
154
+ {
155
+ "match": "(?:\\^[A-Z@\\[\\]\\\\\\^_])",
156
+ "name": "constant.character.escape.control.haskell"
157
+ }
158
+ ]
159
+ },
160
+ "infix_op": {
161
+ "patterns": [
162
+ {
163
+ "name": "entity.name.function.infix.haskell",
164
+ "match": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))"
165
+ }
166
+ ]
167
+ },
168
+ "module_exports": {
169
+ "patterns": [
170
+ {
171
+ "name": "meta.declaration.exports.haskell",
172
+ "begin": "\\(",
173
+ "end": "\\)",
174
+ "patterns": [
175
+ {
176
+ "include": "#comments"
177
+ },
178
+ {
179
+ "include": "#function_name"
180
+ },
181
+ {
182
+ "include": "#type_name"
183
+ },
184
+ {
185
+ "include": "#comma"
186
+ },
187
+ {
188
+ "name": "meta.other.constructor-list.haskell",
189
+ "begin": "(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))\\s*\\(",
190
+ "end": "\\)",
191
+ "patterns": [
192
+ {
193
+ "include": "#type_ctor"
194
+ },
195
+ {
196
+ "include": "#attribute_name"
197
+ },
198
+ {
199
+ "include": "#comma"
200
+ },
201
+ {
202
+ "match": "\\.\\.",
203
+ "name": "keyword.operator.wildcard.haskell"
204
+ }
205
+ ]
206
+ },
207
+ {
208
+ "include": "#infix_op"
209
+ }
210
+ ]
211
+ }
212
+ ]
213
+ },
214
+ "module_name": {
215
+ "patterns": [
216
+ {
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}']*)*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
219
+ }
220
+ ]
221
+ },
222
+ "module_name_prefix": {
223
+ "patterns": [
224
+ {
225
+ "name": "support.other.module.haskell",
226
+ "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}']*)*\\."
227
+ }
228
+ ]
229
+ },
230
+ "pragma": {
231
+ "patterns": [
232
+ {
233
+ "name": "meta.preprocessor.haskell",
234
+ "begin": "\\{-#",
235
+ "end": "#-\\}",
236
+ "patterns": [
237
+ {
238
+ "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}']))",
239
+ "name": "keyword.other.preprocessor.haskell"
240
+ }
241
+ ]
242
+ }
243
+ ]
244
+ },
245
+ "function_type_declaration": {
246
+ "patterns": [
247
+ {
248
+ "name": "meta.function.type-declaration.haskell",
249
+ "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*(::|∷)))",
250
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
251
+ "contentName": "meta.type-signature.haskell",
252
+ "beginCaptures": {
253
+ "2": {
254
+ "patterns": [
255
+ {
256
+ "include": "#function_name"
257
+ },
258
+ {
259
+ "include": "#infix_op"
260
+ }
261
+ ]
262
+ },
263
+ "3": {
264
+ "name": "keyword.other.double-colon.haskell"
265
+ }
266
+ },
267
+ "patterns": [
268
+ {
269
+ "include": "#type_signature"
270
+ }
271
+ ]
272
+ }
273
+ ]
274
+ },
275
+ "ctor_type_declaration": {
276
+ "patterns": [
277
+ {
278
+ "name": "meta.ctor.type-declaration.haskell",
279
+ "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*(::|∷)))",
280
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
281
+ "contentName": "meta.type-signature.haskell",
282
+ "beginCaptures": {
283
+ "2": {
284
+ "patterns": [
285
+ {
286
+ "include": "#type_ctor"
287
+ },
288
+ {
289
+ "include": "#infix_op"
290
+ }
291
+ ]
292
+ },
293
+ "3": {
294
+ "name": "keyword.other.double-colon.haskell"
295
+ }
296
+ },
297
+ "patterns": [
298
+ {
299
+ "include": "#type_signature"
300
+ }
301
+ ]
302
+ }
303
+ ]
304
+ },
305
+ "record_field_declaration": {
306
+ "patterns": [
307
+ {
308
+ "name": "meta.record-field.type-declaration.haskell",
309
+ "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*(::|∷)))",
310
+ "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*(::|∷)))|})",
311
+ "contentName": "meta.type-signature.haskell",
312
+ "beginCaptures": {
313
+ "1": {
314
+ "patterns": [
315
+ {
316
+ "include": "#attribute_name"
317
+ },
318
+ {
319
+ "include": "#infix_op"
320
+ }
321
+ ]
322
+ },
323
+ "2": {
324
+ "name": "keyword.other.double-colon.haskell"
325
+ }
326
+ },
327
+ "patterns": [
328
+ {
329
+ "include": "#type_signature"
330
+ }
331
+ ]
332
+ }
333
+ ]
334
+ },
335
+ "type_signature": {
336
+ "patterns": [
337
+ {
338
+ "include": "#pragma"
339
+ },
340
+ {
341
+ "include": "#comments"
342
+ },
343
+ {
344
+ "name": "keyword.other.forall.haskell",
345
+ "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}']))"
346
+ },
347
+ {
348
+ "include": "#unit"
349
+ },
350
+ {
351
+ "include": "#empty_list"
352
+ },
353
+ {
354
+ "name": "keyword.other.arrow.haskell",
355
+ "match": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(->|→)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])"
356
+ },
357
+ {
358
+ "name": "keyword.other.big-arrow.haskell",
359
+ "match": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(=>|⇒)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])"
360
+ },
361
+ {
362
+ "include": "#operator"
363
+ },
364
+ {
365
+ "name": "variable.other.generic-type.haskell",
366
+ "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}']))"
367
+ },
368
+ {
369
+ "include": "#type_name"
370
+ }
371
+ ]
372
+ },
373
+ "unit": {
374
+ "patterns": [
375
+ {
376
+ "name": "constant.language.unit.haskell",
377
+ "match": "\\(\\)"
378
+ }
379
+ ]
380
+ },
381
+ "empty_list": {
382
+ "patterns": [
383
+ {
384
+ "name": "constant.language.empty-list.haskell",
385
+ "match": "\\[\\]"
386
+ }
387
+ ]
388
+ },
389
+ "deriving": {
390
+ "patterns": [
391
+ {
392
+ "include": "#deriving_list"
393
+ },
394
+ {
395
+ "include": "#deriving_simple"
396
+ },
397
+ {
398
+ "include": "#deriving_keyword"
399
+ }
400
+ ]
401
+ },
402
+ "deriving_keyword": {
403
+ "patterns": [
404
+ {
405
+ "name": "meta.deriving.haskell",
406
+ "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}']))",
407
+ "captures": {
408
+ "1": {
409
+ "name": "keyword.other.haskell"
410
+ }
411
+ }
412
+ }
413
+ ]
414
+ },
415
+ "deriving_list": {
416
+ "patterns": [
417
+ {
418
+ "name": "meta.deriving.haskell",
419
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(deriving)\\s*\\(",
420
+ "end": "\\)",
421
+ "beginCaptures": {
422
+ "1": {
423
+ "name": "keyword.other.haskell"
424
+ }
425
+ },
426
+ "patterns": [
427
+ {
428
+ "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}']))",
429
+ "captures": {
430
+ "1": {
431
+ "name": "entity.other.inherited-class.haskell"
432
+ }
433
+ }
434
+ }
435
+ ]
436
+ }
437
+ ]
438
+ },
439
+ "deriving_simple": {
440
+ "patterns": [
441
+ {
442
+ "name": "meta.deriving.haskell",
443
+ "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}']))",
444
+ "captures": {
445
+ "1": {
446
+ "name": "keyword.other.haskell"
447
+ },
448
+ "2": {
449
+ "name": "entity.other.inherited-class.haskell"
450
+ }
451
+ }
452
+ }
453
+ ]
454
+ },
455
+ "infix_function": {
456
+ "patterns": [
457
+ {
458
+ "name": "keyword.operator.function.infix.haskell",
459
+ "match": "(`)(?:[\\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}']*(`)",
460
+ "captures": {
461
+ "1": {
462
+ "name": "punctuation.definition.entity.haskell"
463
+ },
464
+ "2": {
465
+ "name": "punctuation.definition.entity.haskell"
466
+ }
467
+ }
468
+ }
469
+ ]
470
+ },
471
+ "quasi_quotes": {
472
+ "patterns": [
473
+ {
474
+ "begin": "(\\[)([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(\\|)",
475
+ "end": "(\\|)(\\])",
476
+ "beginCaptures": {
477
+ "1": {
478
+ "name": "punctuation.definition.quasiquotes.begin.haskell"
479
+ },
480
+ "2": {
481
+ "name": "entity.name.tag.haskell"
482
+ }
483
+ },
484
+ "endCaptures": {
485
+ "2": {
486
+ "name": "punctuation.definition.quasiquotes.end.haskell"
487
+ }
488
+ },
489
+ "contentName": "string.quoted.quasiquotes.haskell"
490
+ }
491
+ ]
492
+ },
493
+ "module_decl": {
494
+ "patterns": [
495
+ {
496
+ "name": "meta.declaration.module.haskell",
497
+ "begin": "^([ \\t]*)(module)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
498
+ "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}']))",
499
+ "beginCaptures": {
500
+ "2": {
501
+ "name": "keyword.other.haskell"
502
+ }
503
+ },
504
+ "endCaptures": {
505
+ "1": {
506
+ "name": "keyword.other.haskell"
507
+ }
508
+ },
509
+ "patterns": [
510
+ {
511
+ "include": "#comments"
512
+ },
513
+ {
514
+ "include": "#module_name"
515
+ },
516
+ {
517
+ "include": "#module_exports"
518
+ },
519
+ {
520
+ "include": "#invalid"
521
+ }
522
+ ]
523
+ }
524
+ ]
525
+ },
526
+ "class_decl": {
527
+ "patterns": [
528
+ {
529
+ "name": "meta.declaration.class.haskell",
530
+ "begin": "^([ \\t]*)(class)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
531
+ "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}']))|$",
532
+ "beginCaptures": {
533
+ "2": {
534
+ "name": "storage.type.class.haskell"
535
+ }
536
+ },
537
+ "endCaptures": {
538
+ "1": {
539
+ "name": "keyword.other.haskell"
540
+ }
541
+ },
542
+ "patterns": [
543
+ {
544
+ "include": "#type_signature"
545
+ }
546
+ ]
547
+ }
548
+ ]
549
+ },
550
+ "instance_decl": {
551
+ "patterns": [
552
+ {
553
+ "name": "meta.declaration.instance.haskell",
554
+ "begin": "^([ \\t]*)(instance)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
555
+ "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}']))|$",
556
+ "contentName": "meta.type-signature.haskell",
557
+ "beginCaptures": {
558
+ "2": {
559
+ "name": "keyword.other.haskell"
560
+ }
561
+ },
562
+ "endCaptures": {
563
+ "1": {
564
+ "name": "keyword.other.haskell"
565
+ }
566
+ },
567
+ "patterns": [
568
+ {
569
+ "include": "#pragma"
570
+ },
571
+ {
572
+ "include": "#type_signature"
573
+ }
574
+ ]
575
+ }
576
+ ]
577
+ },
578
+ "foreign_import": {
579
+ "patterns": [
580
+ {
581
+ "name": "meta.foreign.haskell",
582
+ "begin": "^([ \\t]*)(foreign)\\s+(import|export)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
583
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
584
+ "beginCaptures": {
585
+ "2": {
586
+ "name": "keyword.other.haskell"
587
+ },
588
+ "3": {
589
+ "name": "keyword.other.haskell"
590
+ }
591
+ },
592
+ "patterns": [
593
+ {
594
+ "match": "(?:un)?safe",
595
+ "captures": {
596
+ "0": {
597
+ "name": "keyword.other.haskell"
598
+ }
599
+ }
600
+ },
601
+ {
602
+ "include": "$self"
603
+ }
604
+ ]
605
+ }
606
+ ]
607
+ },
608
+ "regular_import": {
609
+ "patterns": [
610
+ {
611
+ "name": "meta.import.haskell",
612
+ "begin": "^([ \\t]*)(import)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
613
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
614
+ "beginCaptures": {
615
+ "2": {
616
+ "name": "keyword.other.haskell"
617
+ }
618
+ },
619
+ "patterns": [
620
+ {
621
+ "include": "#module_name"
622
+ },
623
+ {
624
+ "include": "#module_exports"
625
+ },
626
+ {
627
+ "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}']))",
628
+ "captures": {
629
+ "1": {
630
+ "name": "keyword.other.haskell"
631
+ }
632
+ }
633
+ }
634
+ ]
635
+ }
636
+ ]
637
+ },
638
+ "data_decl": {
639
+ "patterns": [
640
+ {
641
+ "name": "meta.declaration.type.data.haskell",
642
+ "begin": "^([ \\t]*)(data|newtype)\\s+((?:(?!=|where).)*)",
643
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
644
+ "beginCaptures": {
645
+ "2": {
646
+ "name": "storage.type.data.haskell"
647
+ },
648
+ "3": {
649
+ "name": "meta.type-signature.haskell",
650
+ "patterns": [
651
+ {
652
+ "include": "#family_and_instance"
653
+ },
654
+ {
655
+ "include": "#type_signature"
656
+ }
657
+ ]
658
+ }
659
+ },
660
+ "patterns": [
661
+ {
662
+ "include": "#comments"
663
+ },
664
+ {
665
+ "include": "#where"
666
+ },
667
+ {
668
+ "include": "#deriving"
669
+ },
670
+ {
671
+ "include": "#assignment_op"
672
+ },
673
+ {
674
+ "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*)+)))*)?))",
675
+ "captures": {
676
+ "1": {
677
+ "patterns": [
678
+ {
679
+ "include": "#type_ctor"
680
+ }
681
+ ]
682
+ },
683
+ "2": {
684
+ "name": "meta.type-signature.haskell",
685
+ "patterns": [
686
+ {
687
+ "include": "#type_signature"
688
+ }
689
+ ]
690
+ }
691
+ }
692
+ },
693
+ {
694
+ "match": "\\|",
695
+ "captures": {
696
+ "0": {
697
+ "name": "punctuation.separator.pipe.haskell"
698
+ }
699
+ }
700
+ },
701
+ {
702
+ "name": "meta.declaration.type.data.record.block.haskell",
703
+ "begin": "\\{",
704
+ "beginCaptures": {
705
+ "0": {
706
+ "name": "keyword.operator.record.begin.haskell"
707
+ }
708
+ },
709
+ "end": "\\}",
710
+ "endCaptures": {
711
+ "0": {
712
+ "name": "keyword.operator.record.end.haskell"
713
+ }
714
+ },
715
+ "patterns": [
716
+ {
717
+ "include": "#comments"
718
+ },
719
+ {
720
+ "include": "#comma"
721
+ },
722
+ {
723
+ "include": "#record_field_declaration"
724
+ }
725
+ ]
726
+ },
727
+ {
728
+ "include": "#ctor_type_declaration"
729
+ }
730
+ ]
731
+ }
732
+ ]
733
+ },
734
+ "type_alias": {
735
+ "patterns": [
736
+ {
737
+ "name": "meta.declaration.type.type.haskell",
738
+ "begin": "^([ \\t]*)(type)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
739
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
740
+ "contentName": "meta.type-signature.haskell",
741
+ "beginCaptures": {
742
+ "2": {
743
+ "name": "storage.type.data.haskell"
744
+ }
745
+ },
746
+ "patterns": [
747
+ {
748
+ "include": "#comments"
749
+ },
750
+ {
751
+ "include": "#family_and_instance"
752
+ },
753
+ {
754
+ "include": "#where"
755
+ },
756
+ {
757
+ "include": "#assignment_op"
758
+ },
759
+ {
760
+ "include": "#type_signature"
761
+ }
762
+ ]
763
+ }
764
+ ]
765
+ },
766
+ "keywords": {
767
+ "patterns": [
768
+ {
769
+ "name": "keyword.other.haskell",
770
+ "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}']))"
771
+ },
772
+ {
773
+ "name": "storage.type.haskell",
774
+ "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}']))"
775
+ },
776
+ {
777
+ "name": "keyword.operator.haskell",
778
+ "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}']))"
779
+ },
780
+ {
781
+ "name": "keyword.control.haskell",
782
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(do|if|then|else|case|of|let|in|default)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
783
+ }
784
+ ]
785
+ },
786
+ "c_preprocessor": {
787
+ "patterns": [
788
+ {
789
+ "name": "meta.preprocessor.c.haskell",
790
+ "begin": "^(?=#)",
791
+ "end": "(?<!\\\\)(?=\\n)",
792
+ "patterns": [
793
+ {
794
+ "include": "source.c"
795
+ }
796
+ ]
797
+ }
798
+ ]
799
+ },
800
+ "string": {
801
+ "patterns": [
802
+ {
803
+ "name": "string.quoted.double.haskell",
804
+ "begin": "\"",
805
+ "end": "\"",
806
+ "beginCaptures": {
807
+ "0": {
808
+ "name": "punctuation.definition.string.begin.haskell"
809
+ }
810
+ },
811
+ "endCaptures": {
812
+ "0": {
813
+ "name": "punctuation.definition.string.end.haskell"
814
+ }
815
+ },
816
+ "patterns": [
817
+ {
818
+ "include": "#characters"
819
+ },
820
+ {
821
+ "begin": "\\\\\\s",
822
+ "end": "\\\\",
823
+ "beginCaptures": {
824
+ "0": {
825
+ "name": "markup.other.escape.newline.begin.haskell"
826
+ }
827
+ },
828
+ "endCaptures": {
829
+ "0": {
830
+ "name": "markup.other.escape.newline.end.haskell"
831
+ }
832
+ },
833
+ "patterns": [
834
+ {
835
+ "include": "#invalid"
836
+ }
837
+ ]
838
+ }
839
+ ]
840
+ }
841
+ ]
842
+ },
843
+ "newline_escape": {
844
+ "patterns": [
845
+ {
846
+ "name": "markup.other.escape.newline.haskell",
847
+ "match": "\\\\$"
848
+ }
849
+ ]
850
+ },
851
+ "quoted_character": {
852
+ "patterns": [
853
+ {
854
+ "name": "string.quoted.single.haskell",
855
+ "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@\\[\\]\\\\\\^_])))(')",
856
+ "captures": {
857
+ "1": {
858
+ "name": "punctuation.definition.string.begin.haskell"
859
+ },
860
+ "2": {
861
+ "patterns": [
862
+ {
863
+ "include": "#characters"
864
+ }
865
+ ]
866
+ },
867
+ "3": {
868
+ "name": "punctuation.definition.string.end.haskell"
869
+ }
870
+ }
871
+ }
872
+ ]
873
+ },
874
+ "scoped_type": {
875
+ "patterns": [
876
+ {
877
+ "match": "\\((?<paren>(?:[^()]|\\(\\g<paren>\\))*)(::|∷)(?<paren2>(?:[^()]|\\(\\g<paren2>\\))*)\\)",
878
+ "captures": {
879
+ "1": {
880
+ "patterns": [
881
+ {
882
+ "include": "source.haskell"
883
+ }
884
+ ]
885
+ },
886
+ "2": {
887
+ "name": "keyword.other.double-colon.haskell"
888
+ },
889
+ "3": {
890
+ "name": "meta.type-signature.haskell",
891
+ "patterns": [
892
+ {
893
+ "include": "#type_signature"
894
+ }
895
+ ]
896
+ }
897
+ }
898
+ },
899
+ {
900
+ "match": "(::|∷)(.*?)(?:(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(<-|=)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])|$)",
901
+ "captures": {
902
+ "1": {
903
+ "name": "keyword.other.double-colon.haskell"
904
+ },
905
+ "2": {
906
+ "name": "meta.type-signature.haskell",
907
+ "patterns": [
908
+ {
909
+ "include": "#type_signature"
910
+ }
911
+ ]
912
+ },
913
+ "3": {
914
+ "patterns": [
915
+ {
916
+ "include": "#assignment_op"
917
+ },
918
+ {
919
+ "include": "#operator"
920
+ }
921
+ ]
922
+ }
923
+ }
924
+ }
925
+ ]
926
+ },
927
+ "scoped_type_override": {
928
+ "patterns": [
929
+ {
930
+ "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}&&[^(),;\\[\\]`{}_\"']])",
931
+ "captures": {
932
+ "2": {
933
+ "patterns": [
934
+ {
935
+ "include": "#identifier"
936
+ }
937
+ ]
938
+ },
939
+ "3": {
940
+ "name": "keyword.other.double-colon.haskell"
941
+ },
942
+ "4": {
943
+ "name": "meta.type-signature.haskell",
944
+ "patterns": [
945
+ {
946
+ "include": "#type_signature"
947
+ }
948
+ ]
949
+ },
950
+ "5": {
951
+ "patterns": [
952
+ {
953
+ "include": "#assignment_op"
954
+ },
955
+ {
956
+ "include": "#operator"
957
+ }
958
+ ]
959
+ }
960
+ }
961
+ }
962
+ ]
963
+ },
964
+ "comma": {
965
+ "patterns": [
966
+ {
967
+ "name": "punctuation.separator.comma.haskell",
968
+ "match": ","
969
+ }
970
+ ]
971
+ },
972
+ "lit_num": {
973
+ "patterns": [
974
+ {
975
+ "name": "constant.numeric.hexadecimal.haskell",
976
+ "match": "0[xX][0-9a-fA-F]+"
977
+ },
978
+ {
979
+ "name": "constant.numeric.octal.haskell",
980
+ "match": "0[oO][0-7]+"
981
+ },
982
+ {
983
+ "name": "constant.numeric.float.haskell",
984
+ "match": "[0-9]+(\\.[0-9]+[eE][+-]?|\\.|[eE][+-]?)[0-9]+"
985
+ },
986
+ {
987
+ "name": "constant.numeric.decimal.haskell",
988
+ "match": "[0-9]+"
989
+ }
990
+ ]
991
+ },
992
+ "operator": {
993
+ "patterns": [
994
+ {
995
+ "name": "keyword.operator.haskell",
996
+ "match": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+"
997
+ }
998
+ ]
999
+ },
1000
+ "identifier": {
1001
+ "patterns": [
1002
+ {
1003
+ "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}']))",
1004
+ "name": "identifier.haskell",
1005
+ "captures": {
1006
+ "0": {
1007
+ "patterns": [
1008
+ {
1009
+ "include": "#module_name_prefix"
1010
+ },
1011
+ {
1012
+ "name": "support.function.prelude.haskell",
1013
+ "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}']))"
1014
+ }
1015
+ ]
1016
+ }
1017
+ }
1018
+ }
1019
+ ]
1020
+ },
1021
+ "type_name": {
1022
+ "patterns": [
1023
+ {
1024
+ "name": "entity.name.type.haskell",
1025
+ "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}']))",
1026
+ "captures": {
1027
+ "0": {
1028
+ "patterns": [
1029
+ {
1030
+ "include": "#module_name_prefix"
1031
+ },
1032
+ {
1033
+ "name": "entity.other.inherited-class.prelude.haskell",
1034
+ "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}']))"
1035
+ },
1036
+ {
1037
+ "name": "support.class.prelude.haskell",
1038
+ "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}']))"
1039
+ }
1040
+ ]
1041
+ }
1042
+ }
1043
+ }
1044
+ ]
1045
+ },
1046
+ "type_ctor": {
1047
+ "patterns": [
1048
+ {
1049
+ "name": "entity.name.tag.haskell",
1050
+ "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}']))",
1051
+ "captures": {
1052
+ "0": {
1053
+ "patterns": [
1054
+ {
1055
+ "include": "#module_name_prefix"
1056
+ },
1057
+ {
1058
+ "name": "support.tag.prelude.haskell",
1059
+ "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}']))"
1060
+ }
1061
+ ]
1062
+ }
1063
+ }
1064
+ }
1065
+ ]
1066
+ },
1067
+ "where": {
1068
+ "patterns": [
1069
+ {
1070
+ "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}']))",
1071
+ "name": "keyword.other.haskell"
1072
+ }
1073
+ ]
1074
+ },
1075
+ "family_and_instance": {
1076
+ "patterns": [
1077
+ {
1078
+ "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}']))",
1079
+ "name": "keyword.other.haskell"
1080
+ }
1081
+ ]
1082
+ },
1083
+ "invalid": {
1084
+ "patterns": [
1085
+ {
1086
+ "match": "\\S+",
1087
+ "name": "invalid.illegal.character-not-allowed-here.haskell"
1088
+ }
1089
+ ]
1090
+ },
1091
+ "function_name": {
1092
+ "patterns": [
1093
+ {
1094
+ "name": "entity.name.function.haskell",
1095
+ "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}']))"
1096
+ }
1097
+ ]
1098
+ },
1099
+ "assignment_op": {
1100
+ "patterns": [
1101
+ {
1102
+ "match": "=",
1103
+ "captures": {
1104
+ "0": {
1105
+ "name": "keyword.operator.assignment.haskell"
1106
+ }
1107
+ }
1108
+ }
1109
+ ]
1110
+ },
1111
+ "attribute_name": {
1112
+ "patterns": [
1113
+ {
1114
+ "name": "entity.other.attribute-name.haskell",
1115
+ "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}']))"
1116
+ }
1117
+ ]
1118
+ }
1119
+ }
1120
+ }