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