github-linguist 7.1.3 → 7.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +5 -5
  2. data/grammars/annotation.liquidhaskell.haskell.json +119 -4
  3. data/grammars/etc.json +148 -0
  4. data/grammars/hint.haskell.json +119 -4
  5. data/grammars/hint.message.haskell.json +119 -4
  6. data/grammars/hint.type.haskell.json +119 -4
  7. data/grammars/injections.etc.json +21 -0
  8. data/grammars/source.abap.json +2 -2
  9. data/grammars/source.ats.json +87 -17
  10. data/grammars/source.ballerina.json +236 -313
  11. data/grammars/source.batchfile.json +1 -1
  12. data/grammars/source.bdf.json +14 -8
  13. data/grammars/source.changelogs.rpm-spec.json +3 -3
  14. data/grammars/source.chapel.json +1 -1
  15. data/grammars/source.coffee.json +98 -0
  16. data/grammars/source.csound-document.json +26 -124
  17. data/grammars/source.curlrc.json +180 -0
  18. data/grammars/source.dart.json +5 -2
  19. data/grammars/source.elixir.json +20 -25
  20. data/grammars/source.emacs.lisp.json +23 -1
  21. data/grammars/source.gdb.json +1 -1
  22. data/grammars/source.gitattributes.json +111 -0
  23. data/grammars/source.gitconfig.json +450 -0
  24. data/grammars/source.gitignore.json +140 -0
  25. data/grammars/source.graphql.json +18 -0
  26. data/grammars/source.haproxy-config.json +10 -10
  27. data/grammars/source.haskell.json +119 -4
  28. data/grammars/source.hgignore.json +34 -0
  29. data/grammars/source.hsig.json +119 -4
  30. data/grammars/source.hx.json +2 -2
  31. data/grammars/source.jison.json +1 -1
  32. data/grammars/source.ltspice.symbol.json +294 -0
  33. data/grammars/source.m4.json +187 -0
  34. data/grammars/source.man-conf.json +141 -0
  35. data/grammars/source.nanorc.json +330 -0
  36. data/grammars/source.nim.comment.json +82 -0
  37. data/grammars/source.nim.json +1 -57
  38. data/grammars/source.nix.json +2 -2
  39. data/grammars/source.opts.json +98 -0
  40. data/grammars/source.reason.json +13 -0
  41. data/grammars/source.rust.json +35 -0
  42. data/grammars/source.terraform.json +4 -1
  43. data/grammars/source.ts.json +307 -39
  44. data/grammars/source.tsx.json +290 -37
  45. data/grammars/source.zig.json +286 -0
  46. data/grammars/text.html.basic.json +1 -1
  47. data/grammars/text.marko.json +61 -9
  48. data/grammars/text.tex.latex.haskell.json +119 -4
  49. data/grammars/text.zone_file.json +2 -2
  50. data/grammars/version +1 -1
  51. data/lib/linguist/VERSION +1 -1
  52. data/lib/linguist/generated.rb +0 -8
  53. data/lib/linguist/heuristics.yml +30 -3
  54. data/lib/linguist/languages.json +1 -1
  55. data/lib/linguist/languages.yml +143 -3
  56. data/lib/linguist/samples.json +4494 -646
  57. data/lib/linguist/vendor.yml +1 -2
  58. metadata +31 -4
  59. data/grammars/source.solidity.json +0 -189
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: b3ea5a5906330d9b8dd8414eff457e494d9497f7cad7cb484599c7780725cf10
4
- data.tar.gz: e1426243b33111ffe5083f16af40ed4e7d9e53e2206fe51e1cfdec4ee7a08277
2
+ SHA1:
3
+ metadata.gz: e1b5d82326588ce899ff67555ffc5291f7888ae8
4
+ data.tar.gz: 709367930b683b77eaedda5205333f4b0136b658
5
5
  SHA512:
6
- metadata.gz: 9462b8da7b7f5cba224fbb2a25c55a5e99b4651d8125f837330a48786b5814f31a0a19d8e5bdcc46f4a7dc27a00b99c582f984aacbde6550cf1fd6854a42ec02
7
- data.tar.gz: 1a2a83bd4953486a783c3e863ccea35057686a54e5a853027f53d7a89ba5f08f02e6160da475a26076e4314f01c62fc5f47d60c4e538fb9d7ba2dff958af594b
6
+ metadata.gz: 28926e0d20748c753db47c29a52e5e5e483f98a88e7aa49f3a730047bc1c5894045570b86c1b8ab1675f13456e858cf993dbfb6959a411ab7ad799cc5c0101ec
7
+ data.tar.gz: 806e10bcd8fcb66b11a0fa01552856f6b03ab814084ad21949f72f829eb3ef519e01815bb5e62e4aa41e96d7c651071a3b32ab615d5c515224c91bc81d69ad84
@@ -276,6 +276,9 @@
276
276
  {
277
277
  "include": "#deriving"
278
278
  },
279
+ {
280
+ "include": "#via"
281
+ },
279
282
  {
280
283
  "include": "#assignment_op"
281
284
  },
@@ -374,7 +377,7 @@
374
377
  {
375
378
  "name": "meta.declaration.instance.deriving.haskell",
376
379
  "contentName": "meta.type-signature.haskell",
377
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(deriving\\s+instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
380
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s+(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
378
381
  "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
379
382
  "patterns": [
380
383
  {
@@ -382,11 +385,24 @@
382
385
  },
383
386
  {
384
387
  "include": "#type_signature"
388
+ },
389
+ {
390
+ "include": "#deriving_via"
385
391
  }
386
392
  ],
387
393
  "beginCaptures": {
388
394
  "2": {
389
395
  "name": "keyword.other.haskell"
396
+ },
397
+ "3": {
398
+ "patterns": [
399
+ {
400
+ "include": "#deriving_strategies"
401
+ }
402
+ ]
403
+ },
404
+ "4": {
405
+ "name": "keyword.other.haskell"
390
406
  }
391
407
  }
392
408
  }
@@ -396,10 +412,17 @@
396
412
  "patterns": [
397
413
  {
398
414
  "name": "meta.deriving.haskell",
399
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
415
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
400
416
  "captures": {
401
417
  "1": {
402
418
  "name": "keyword.other.haskell"
419
+ },
420
+ "2": {
421
+ "patterns": [
422
+ {
423
+ "include": "#deriving_strategies"
424
+ }
425
+ ]
403
426
  }
404
427
  }
405
428
  }
@@ -409,7 +432,7 @@
409
432
  "patterns": [
410
433
  {
411
434
  "name": "meta.deriving.haskell",
412
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*\\(",
435
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*\\(",
413
436
  "end": "\\)",
414
437
  "patterns": [
415
438
  {
@@ -424,6 +447,13 @@
424
447
  "beginCaptures": {
425
448
  "1": {
426
449
  "name": "keyword.other.haskell"
450
+ },
451
+ "2": {
452
+ "patterns": [
453
+ {
454
+ "include": "#deriving_strategies"
455
+ }
456
+ ]
427
457
  }
428
458
  }
429
459
  }
@@ -433,18 +463,38 @@
433
463
  "patterns": [
434
464
  {
435
465
  "name": "meta.deriving.haskell",
436
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
466
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
437
467
  "captures": {
438
468
  "1": {
439
469
  "name": "keyword.other.haskell"
440
470
  },
441
471
  "2": {
472
+ "patterns": [
473
+ {
474
+ "include": "#deriving_strategies"
475
+ }
476
+ ]
477
+ },
478
+ "3": {
442
479
  "name": "entity.other.inherited-class.haskell"
443
480
  }
444
481
  }
445
482
  }
446
483
  ]
447
484
  },
485
+ "deriving_strategies": {
486
+ "patterns": [
487
+ {
488
+ "name": "meta.deriving.strategy.haskell",
489
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(stock|newtype|anyclass)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
490
+ "captures": {
491
+ "1": {
492
+ "name": "keyword.other.haskell"
493
+ }
494
+ }
495
+ }
496
+ ]
497
+ },
448
498
  "double_colon_operator": {
449
499
  "patterns": [
450
500
  {
@@ -1552,6 +1602,71 @@
1552
1602
  }
1553
1603
  ]
1554
1604
  },
1605
+ "via": {
1606
+ "patterns": [
1607
+ {
1608
+ "include": "#via_list"
1609
+ },
1610
+ {
1611
+ "include": "#via_simple"
1612
+ },
1613
+ {
1614
+ "include": "#via_keyword"
1615
+ }
1616
+ ]
1617
+ },
1618
+ "via_keyword": {
1619
+ "patterns": [
1620
+ {
1621
+ "name": "meta.via.haskell",
1622
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1623
+ "captures": {
1624
+ "1": {
1625
+ "name": "keyword.other.haskell"
1626
+ }
1627
+ }
1628
+ }
1629
+ ]
1630
+ },
1631
+ "via_list": {
1632
+ "patterns": [
1633
+ {
1634
+ "name": "meta.via.haskell",
1635
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*\\(",
1636
+ "end": "\\)",
1637
+ "patterns": [
1638
+ {
1639
+ "include": "#type_signature"
1640
+ }
1641
+ ],
1642
+ "beginCaptures": {
1643
+ "1": {
1644
+ "name": "keyword.other.haskell"
1645
+ }
1646
+ }
1647
+ }
1648
+ ]
1649
+ },
1650
+ "via_simple": {
1651
+ "patterns": [
1652
+ {
1653
+ "name": "meta.via.haskell",
1654
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1655
+ "captures": {
1656
+ "1": {
1657
+ "name": "keyword.other.haskell"
1658
+ },
1659
+ "2": {
1660
+ "patterns": [
1661
+ {
1662
+ "include": "#type_signature"
1663
+ }
1664
+ ]
1665
+ }
1666
+ }
1667
+ }
1668
+ ]
1669
+ },
1555
1670
  "where": {
1556
1671
  "patterns": [
1557
1672
  {
data/grammars/etc.json ADDED
@@ -0,0 +1,148 @@
1
+ {
2
+ "scopeName": "etc",
3
+ "patterns": [
4
+ {
5
+ "include": "#comment"
6
+ },
7
+ {
8
+ "include": "#esc"
9
+ },
10
+ {
11
+ "include": "#float"
12
+ },
13
+ {
14
+ "include": "#int"
15
+ },
16
+ {
17
+ "include": "#str"
18
+ },
19
+ {
20
+ "include": "#colon"
21
+ },
22
+ {
23
+ "include": "#eql"
24
+ },
25
+ {
26
+ "include": "#bareword"
27
+ }
28
+ ],
29
+ "repository": {
30
+ "bareword": {
31
+ "name": "string.unquoted.bareword",
32
+ "match": "[^\"\\s][\\S]*"
33
+ },
34
+ "colon": {
35
+ "name": "keyword.operator.assignment.key-value.colon",
36
+ "match": ":"
37
+ },
38
+ "comment": {
39
+ "name": "comment.line.number-sign",
40
+ "begin": "#",
41
+ "end": "$",
42
+ "beginCaptures": {
43
+ "0": {
44
+ "name": "punctuation.definition.comment"
45
+ }
46
+ }
47
+ },
48
+ "eql": {
49
+ "name": "keyword.operator.assignment.key-value.equals-sign",
50
+ "match": "="
51
+ },
52
+ "esc": {
53
+ "name": "constant.character.escape.backslash",
54
+ "match": "(\\\\).",
55
+ "captures": {
56
+ "1": {
57
+ "name": "punctuation.definition.escape.backslash"
58
+ }
59
+ }
60
+ },
61
+ "float": {
62
+ "patterns": [
63
+ {
64
+ "include": "#floatExp"
65
+ },
66
+ {
67
+ "include": "#floatNoExp"
68
+ }
69
+ ]
70
+ },
71
+ "floatExp": {
72
+ "name": "constant.numeric.float.real.decimal.dec.exponential.scientific",
73
+ "match": "[-+]?(?:[0-9]*\\.[0-9]+|[0-9]+\\.)(?:[eE][-+]?[0-9]+)++"
74
+ },
75
+ "floatNoExp": {
76
+ "name": "constant.numeric.float.real.decimal.dec",
77
+ "match": "[-+]?(?:[0-9]*\\.[0-9]+|[0-9]+\\.)++"
78
+ },
79
+ "int": {
80
+ "patterns": [
81
+ {
82
+ "include": "#intExp"
83
+ },
84
+ {
85
+ "include": "#intNoExp"
86
+ }
87
+ ]
88
+ },
89
+ "intExp": {
90
+ "name": "constant.numeric.integer.int.decimal.dec.exponential.scientific",
91
+ "match": "[-+]?[0-9]+[eE][-+]?[0-9]+"
92
+ },
93
+ "intNoExp": {
94
+ "name": "constant.numeric.integer.int.decimal.dec",
95
+ "match": "[-+]?[0-9]+"
96
+ },
97
+ "str": {
98
+ "patterns": [
99
+ {
100
+ "include": "#strDouble"
101
+ },
102
+ {
103
+ "include": "#strSingle"
104
+ }
105
+ ]
106
+ },
107
+ "strDouble": {
108
+ "name": "string.quoted.double",
109
+ "begin": "\"",
110
+ "end": "\"|(?=$)",
111
+ "patterns": [
112
+ {
113
+ "include": "#esc"
114
+ }
115
+ ],
116
+ "beginCaptures": {
117
+ "0": {
118
+ "name": "punctuation.definition.string.begin"
119
+ }
120
+ },
121
+ "endCaptures": {
122
+ "0": {
123
+ "name": "punctuation.definition.string.end"
124
+ }
125
+ }
126
+ },
127
+ "strSingle": {
128
+ "name": "string.quoted.single",
129
+ "begin": "'",
130
+ "end": "'|(?=$)",
131
+ "patterns": [
132
+ {
133
+ "include": "#esc"
134
+ }
135
+ ],
136
+ "beginCaptures": {
137
+ "0": {
138
+ "name": "punctuation.definition.string.begin"
139
+ }
140
+ },
141
+ "endCaptures": {
142
+ "0": {
143
+ "name": "punctuation.definition.string.end"
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }
@@ -258,6 +258,9 @@
258
258
  {
259
259
  "include": "#deriving"
260
260
  },
261
+ {
262
+ "include": "#via"
263
+ },
261
264
  {
262
265
  "include": "#assignment_op"
263
266
  },
@@ -356,7 +359,7 @@
356
359
  {
357
360
  "name": "meta.declaration.instance.deriving.haskell",
358
361
  "contentName": "meta.type-signature.haskell",
359
- "begin": "^([ \\t]*)(deriving\\s+instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
362
+ "begin": "^([ \\t]*)(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s+(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
360
363
  "end": "^(?!\\1[ \\t]|[ \\t]*$)",
361
364
  "patterns": [
362
365
  {
@@ -364,11 +367,24 @@
364
367
  },
365
368
  {
366
369
  "include": "#type_signature"
370
+ },
371
+ {
372
+ "include": "#deriving_via"
367
373
  }
368
374
  ],
369
375
  "beginCaptures": {
370
376
  "2": {
371
377
  "name": "keyword.other.haskell"
378
+ },
379
+ "3": {
380
+ "patterns": [
381
+ {
382
+ "include": "#deriving_strategies"
383
+ }
384
+ ]
385
+ },
386
+ "4": {
387
+ "name": "keyword.other.haskell"
372
388
  }
373
389
  }
374
390
  }
@@ -378,10 +394,17 @@
378
394
  "patterns": [
379
395
  {
380
396
  "name": "meta.deriving.haskell",
381
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
397
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
382
398
  "captures": {
383
399
  "1": {
384
400
  "name": "keyword.other.haskell"
401
+ },
402
+ "2": {
403
+ "patterns": [
404
+ {
405
+ "include": "#deriving_strategies"
406
+ }
407
+ ]
385
408
  }
386
409
  }
387
410
  }
@@ -391,7 +414,7 @@
391
414
  "patterns": [
392
415
  {
393
416
  "name": "meta.deriving.haskell",
394
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*\\(",
417
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*\\(",
395
418
  "end": "\\)",
396
419
  "patterns": [
397
420
  {
@@ -406,6 +429,13 @@
406
429
  "beginCaptures": {
407
430
  "1": {
408
431
  "name": "keyword.other.haskell"
432
+ },
433
+ "2": {
434
+ "patterns": [
435
+ {
436
+ "include": "#deriving_strategies"
437
+ }
438
+ ]
409
439
  }
410
440
  }
411
441
  }
@@ -415,18 +445,38 @@
415
445
  "patterns": [
416
446
  {
417
447
  "name": "meta.deriving.haskell",
418
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
448
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
419
449
  "captures": {
420
450
  "1": {
421
451
  "name": "keyword.other.haskell"
422
452
  },
423
453
  "2": {
454
+ "patterns": [
455
+ {
456
+ "include": "#deriving_strategies"
457
+ }
458
+ ]
459
+ },
460
+ "3": {
424
461
  "name": "entity.other.inherited-class.haskell"
425
462
  }
426
463
  }
427
464
  }
428
465
  ]
429
466
  },
467
+ "deriving_strategies": {
468
+ "patterns": [
469
+ {
470
+ "name": "meta.deriving.strategy.haskell",
471
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(stock|newtype|anyclass)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
472
+ "captures": {
473
+ "1": {
474
+ "name": "keyword.other.haskell"
475
+ }
476
+ }
477
+ }
478
+ ]
479
+ },
430
480
  "double_colon_operator": {
431
481
  "patterns": [
432
482
  {
@@ -1479,6 +1529,71 @@
1479
1529
  }
1480
1530
  ]
1481
1531
  },
1532
+ "via": {
1533
+ "patterns": [
1534
+ {
1535
+ "include": "#via_list"
1536
+ },
1537
+ {
1538
+ "include": "#via_simple"
1539
+ },
1540
+ {
1541
+ "include": "#via_keyword"
1542
+ }
1543
+ ]
1544
+ },
1545
+ "via_keyword": {
1546
+ "patterns": [
1547
+ {
1548
+ "name": "meta.via.haskell",
1549
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1550
+ "captures": {
1551
+ "1": {
1552
+ "name": "keyword.other.haskell"
1553
+ }
1554
+ }
1555
+ }
1556
+ ]
1557
+ },
1558
+ "via_list": {
1559
+ "patterns": [
1560
+ {
1561
+ "name": "meta.via.haskell",
1562
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*\\(",
1563
+ "end": "\\)",
1564
+ "patterns": [
1565
+ {
1566
+ "include": "#type_signature"
1567
+ }
1568
+ ],
1569
+ "beginCaptures": {
1570
+ "1": {
1571
+ "name": "keyword.other.haskell"
1572
+ }
1573
+ }
1574
+ }
1575
+ ]
1576
+ },
1577
+ "via_simple": {
1578
+ "patterns": [
1579
+ {
1580
+ "name": "meta.via.haskell",
1581
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1582
+ "captures": {
1583
+ "1": {
1584
+ "name": "keyword.other.haskell"
1585
+ },
1586
+ "2": {
1587
+ "patterns": [
1588
+ {
1589
+ "include": "#type_signature"
1590
+ }
1591
+ ]
1592
+ }
1593
+ }
1594
+ }
1595
+ ]
1596
+ },
1482
1597
  "where": {
1483
1598
  "patterns": [
1484
1599
  {