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
@@ -0,0 +1,140 @@
1
+ {
2
+ "name": ".gitignore",
3
+ "scopeName": "source.gitignore",
4
+ "patterns": [
5
+ {
6
+ "include": "#main"
7
+ }
8
+ ],
9
+ "repository": {
10
+ "bazaarPrefixes": {
11
+ "patterns": [
12
+ {
13
+ "name": "storage.modifier.bazaar.re-prefix.gitignore",
14
+ "match": "^RE(:)(?=\\S)"
15
+ },
16
+ {
17
+ "name": "keyword.operator.logical.not.negation.elevated.bazaar.gitignore",
18
+ "match": "^!!(?=\\S)"
19
+ }
20
+ ]
21
+ },
22
+ "comment": {
23
+ "name": "comment.line.number-sign.gitignore",
24
+ "begin": "#",
25
+ "end": "$",
26
+ "beginCaptures": {
27
+ "0": {
28
+ "name": "punctuation.definition.comment.gitignore"
29
+ }
30
+ }
31
+ },
32
+ "cvsSyntax": {
33
+ "match": "\\A(syntax)(:)\\s+(glob)$",
34
+ "captures": {
35
+ "1": {
36
+ "name": "variable.parameter.assignment.glob-syntax.cvs.gitignore"
37
+ },
38
+ "2": {
39
+ "name": "keyword.operator.assignment.separator.key-value.cvs.gitignore"
40
+ },
41
+ "3": {
42
+ "name": "support.constant.language.syntax-type.cvs.gitignore"
43
+ }
44
+ }
45
+ },
46
+ "escape": {
47
+ "name": "constant.character.escape.backslash.gitignore",
48
+ "match": "(\\\\).",
49
+ "captures": {
50
+ "1": {
51
+ "name": "punctuation.definition.escape.backslash.gitignore"
52
+ }
53
+ }
54
+ },
55
+ "main": {
56
+ "patterns": [
57
+ {
58
+ "include": "#comment"
59
+ },
60
+ {
61
+ "include": "#cvsSyntax"
62
+ },
63
+ {
64
+ "include": "#pattern"
65
+ },
66
+ {
67
+ "include": "#escape"
68
+ }
69
+ ]
70
+ },
71
+ "pattern": {
72
+ "name": "meta.pattern.gitignore",
73
+ "begin": "(?=[^#\\s])",
74
+ "end": "$|(?=#)",
75
+ "patterns": [
76
+ {
77
+ "include": "#bazaarPrefixes"
78
+ },
79
+ {
80
+ "include": "#patternInnards"
81
+ }
82
+ ]
83
+ },
84
+ "patternInnards": {
85
+ "patterns": [
86
+ {
87
+ "include": "#escape"
88
+ },
89
+ {
90
+ "include": "#range"
91
+ },
92
+ {
93
+ "name": "keyword.operator.logical.not.negation.gitignore",
94
+ "match": "\\G!"
95
+ },
96
+ {
97
+ "name": "keyword.operator.glob.wildcard.globstar.gitignore",
98
+ "match": "\\*\\*"
99
+ },
100
+ {
101
+ "name": "keyword.operator.glob.wildcard.gitignore",
102
+ "match": "[*?]"
103
+ },
104
+ {
105
+ "name": "punctuation.directory.separator.meta.gitignore",
106
+ "match": "/"
107
+ },
108
+ {
109
+ "name": "entity.other.file.name.gitignore",
110
+ "match": "[^\\[\\]\\\\*?#/\\s]+"
111
+ }
112
+ ]
113
+ },
114
+ "range": {
115
+ "name": "meta.character-range.gitignore",
116
+ "contentName": "constant.character.class.gitignore",
117
+ "begin": "\\[",
118
+ "end": "\\]|(?=$)",
119
+ "patterns": [
120
+ {
121
+ "include": "#escape"
122
+ },
123
+ {
124
+ "name": "punctuation.delimiter.range.character-set.gitignore",
125
+ "match": "-"
126
+ }
127
+ ],
128
+ "beginCaptures": {
129
+ "0": {
130
+ "name": "punctuation.definition.square.bracket.begin.gitignore"
131
+ }
132
+ },
133
+ "endCaptures": {
134
+ "0": {
135
+ "name": "punctuation.definition.square.bracket.end.gitignore"
136
+ }
137
+ }
138
+ }
139
+ }
140
+ }
@@ -190,6 +190,12 @@
190
190
  },
191
191
  {
192
192
  "include": "#graphql-enum-value"
193
+ },
194
+ {
195
+ "include": "#graphql-blockstring-value"
196
+ },
197
+ {
198
+ "include": "#graphql-string-value"
193
199
  }
194
200
  ],
195
201
  "beginCaptures": {
@@ -770,6 +776,12 @@
770
776
  },
771
777
  {
772
778
  "include": "#graphql-type-definition"
779
+ },
780
+ {
781
+ "include": "#graphql-blockstring-value"
782
+ },
783
+ {
784
+ "include": "#graphql-string-value"
773
785
  }
774
786
  ],
775
787
  "beginCaptures": {
@@ -940,6 +952,12 @@
940
952
  },
941
953
  {
942
954
  "include": "#graphql-variable-definition"
955
+ },
956
+ {
957
+ "include": "#graphql-blockstring-value"
958
+ },
959
+ {
960
+ "include": "#graphql-string-value"
943
961
  }
944
962
  ],
945
963
  "captures": {
@@ -24,29 +24,29 @@
24
24
  "name": "comment.line.number-sign.haproxy-config",
25
25
  "match": "#.+$"
26
26
  },
27
- {
28
- "name": "constant.numeric.haproxy-config",
29
- "match": "\\b[0-9]+([\\.:][0-9]+)*[a-z]?\\b"
30
- },
31
27
  {
32
28
  "name": "variable.parameter.ip-port.haproxy-config",
33
29
  "match": "(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})?:\\d{1,5}"
34
30
  },
31
+ {
32
+ "name": "constant.numeric.haproxy-config",
33
+ "match": "\\b[0-9]+([\\.:][0-9]+)*[a-z]?\\b"
34
+ },
35
35
  {
36
36
  "name": "keyword.other.no-validate-params.haproxy-config",
37
37
  "match": "^\\s*(acl|appsession|backlog|balance|bind|bind-process|block|clitimeout|compression|contimeout|cookie|default-server|default_backend|description|disabled|dispatch|enabled|errorfile|errorloc|errorloc302|errorloc303|filter|force-persist|fullconn|grace|hash-type|http-request|http-response|http-reuse|http-send-name-header|id|ignore-persist|load-server-state-from-file|log|log-format|log-format-sd|log-tag|max-keep-alive-queue|maxconn|mode|monitor-net|monitor-uri|redirect|redisp|redispatch|reqadd|reqallow|reqdel|reqdeny|reqiallow|reqidel|reqideny|reqipass|reqirep|reqitarpit|reqpass|reqrep|reqtarpit|retries|rspadd|rspdel|rspdeny|rspidel|rspideny|rspirep|rsprep|server|server-state-file-name|server-template|source|srvtimeout|stick-table|transparent|unique-id-format|unique-id-header|use-server|use_backend)\\b"
38
38
  },
39
39
  {
40
40
  "name": "keyword.other.no-validate-params.haproxy-config",
41
- "match": "^\\s*(51degrees-cache-size|51degrees-data-file|51degrees-property-name-list|51degrees-property-separator|ca-base|chroot|cpu-map|crt-base|daemon|debug|description|deviceatlas-json-file|deviceatlas-log-level|deviceatlas-properties-cookie|deviceatlas-separator|external-check|gid|group|hard-stop-after|log|log-send-hostname|log-tag|lua-load|max-spread-checks|maxcompcpuusage|maxcomprate|maxconn|maxconnrate|maxpipes|maxsessrate|maxsslconn|maxsslrate|maxzlibmem|nbproc|nbthread|node|noepoll|nogetaddrinfo|nokqueue|nopoll|noreuseport|nosplice|pidfile|presetenv|quiet|resetenv|server-state-base|server-state-file|setenv|spread-checks|ssl-default-bind-ciphers|ssl-default-bind-options|ssl-default-server-ciphers|ssl-default-server-options|ssl-dh-param-file|ssl-engine|ssl-mode-async|ssl-server-verify|stats|tune.buffers.limit|tune.buffers.reserve|tune.bufsize|tune.chksize|tune.comp.maxlevel|tune.h2.header-table-size|tune.h2.initial-window-size|tune.h2.max-concurrent-streams|tune.http.cookielen|tune.http.logurilen|tune.http.maxhdr|tune.idletimer|tune.lua.forced-yield|tune.lua.maxmem|tune.lua.service-timeout|tune.lua.session-timeout|tune.lua.task-timeout|tune.maxaccept|tune.maxpollevents|tune.maxrewrite|tune.pattern.cache-size|tune.pipesize|tune.rcvbuf.client|tune.rcvbuf.server|tune.recv_enough|tune.sndbuf.client|tune.sndbuf.server|tune.ssl.cachesize|tune.ssl.capture-cipherlist-size|tune.ssl.default-dh-param|tune.ssl.force-private-cache|tune.ssl.lifetime|tune.ssl.maxrecord|tune.ssl.ssl-ctx-cache-size|tune.vars.global-max-size|tune.vars.proc-max-size|tune.vars.reqres-max-size|tune.vars.sess-max-size|tune.vars.txn-max-size|tune.zlib.memlevel|tune.zlib.windowsize|uid|ulimit-n|unix-bind|unsetenv|user|wurfl-cache-size|wurfl-data-file|wurfl-engine-mode|wurfl-information-list|wurfl-information-list-separator|wurfl-useragent-priority)\\b"
41
+ "match": "^\\s*(51degrees-cache-size|51degrees-data-file|51degrees-property-name-list|51degrees-property-separator|ca-base|chroot|cpu-map|crt-base|daemon|debug|description|deviceatlas-json-file|deviceatlas-log-level|deviceatlas-properties-cookie|deviceatlas-separator|external-check|gid|group|hard-stop-after|log|log-send-hostname|log-tag|lua-load|max-spread-checks|maxcompcpuusage|maxcomprate|maxconn|maxconnrate|maxpipes|maxsessrate|maxsslconn|maxsslrate|maxzlibmem|nbproc|nbthread|node|noepoll|nogetaddrinfo|nokqueue|nopoll|noreuseport|nosplice|pidfile|presetenv|quiet|resetenv|server-state-base|server-state-file|setenv|spread-checks|ssl-default-bind-ciphers|ssl-default-bind-ciphersuites|ssl-default-bind-options|ssl-default-server-ciphers|ssl-default-server-ciphersuites|ssl-default-server-options|ssl-dh-param-file|ssl-engine|ssl-mode-async|ssl-server-verify|stats|tune.buffers.limit|tune.buffers.reserve|tune.bufsize|tune.chksize|tune.comp.maxlevel|tune.h2.header-table-size|tune.h2.initial-window-size|tune.h2.max-concurrent-streams|tune.http.cookielen|tune.http.logurilen|tune.http.maxhdr|tune.idletimer|tune.lua.forced-yield|tune.lua.maxmem|tune.lua.service-timeout|tune.lua.session-timeout|tune.lua.task-timeout|tune.maxaccept|tune.maxpollevents|tune.maxrewrite|tune.pattern.cache-size|tune.pipesize|tune.rcvbuf.client|tune.rcvbuf.server|tune.recv_enough|tune.sndbuf.client|tune.sndbuf.server|tune.ssl.cachesize|tune.ssl.capture-cipherlist-size|tune.ssl.default-dh-param|tune.ssl.force-private-cache|tune.ssl.lifetime|tune.ssl.maxrecord|tune.ssl.ssl-ctx-cache-size|tune.vars.global-max-size|tune.vars.proc-max-size|tune.vars.reqres-max-size|tune.vars.sess-max-size|tune.vars.txn-max-size|tune.zlib.memlevel|tune.zlib.windowsize|uid|ulimit-n|unix-bind|unsetenv|user|wurfl-cache-size|wurfl-data-file|wurfl-engine-mode|wurfl-information-list|wurfl-information-list-separator|wurfl-useragent-priority)\\b"
42
42
  },
43
43
  {
44
44
  "name": "keyword.other.no-validate-params.haproxy-config",
45
- "match": "\\s+(mailer|timeout)(?=\\s+)"
45
+ "match": "\\s+(mailer|timeout)(?=\\s+|$)"
46
46
  },
47
47
  {
48
48
  "name": "keyword.other.no-validate-params.haproxy-config",
49
- "match": "\\s+(disabled|enable|peer)(?=\\s+)"
49
+ "match": "\\s+(disabled|enable|peer)(?=\\s+|$)"
50
50
  },
51
51
  {
52
52
  "name": "keyword.other.no-validate-params.haproxy-config",
@@ -54,15 +54,15 @@
54
54
  },
55
55
  {
56
56
  "name": "variable.language.reserved.haproxy-config",
57
- "match": "\\s+(abortonclose|accept-invalid-http-request|accept-invalid-http-response|admin|allbackups|auth|capture|check|checkcache|client|client-fin|clitcpka|clitimeout|command|connect|connection|content|contimeout|contstats|cookie|disable-on-404|dontlog-normal|dontlognull|enable|expect|external-check|fail|forceclose|forwardfor|from|hide-version|http-buffer-request|http-ignore-probes|http-keep-alive|http-no-delay|http-pretend-keepalive|http-request|http-server-close|http-tunnel|http-use-proxy-header|http_proxy|httpchk|httpclose|httplog|independent-streams|inspect-delay|ldap-check|level|log-health-checks|log-separate-errors|logasap|mailers|match|myhostname|mysql-check|nolinger|on|originalto|path|persist|pgsql-check|prefer-last-server|queue|rdp-cookie|realm|redis-check|redispatch|refresh|scope|send|send-binary|send-state|server|server-fin|session|sessions|show-desc|show-legends|show-node|smtpchk|socket-stats|splice-auto|splice-request|splice-response|spop-check|srvtcpka|srvtimeout|ssl-hello-chk|store-request|store-response|tarpit|tcp-check|tcp-smart-accept|tcp-smart-connect|tcpka|tcplog|to|transparent|tunnel|uri)(?=\\s+)"
57
+ "match": "\\s+(abortonclose|accept-invalid-http-request|accept-invalid-http-response|admin|allbackups|auth|capture|check|checkcache|client|client-fin|clitcpka|clitimeout|command|connect|connection|content|contimeout|contstats|cookie|disable-on-404|dontlog-normal|dontlognull|enable|expect|external-check|fail|forceclose|forwardfor|from|hide-version|http-buffer-request|http-ignore-probes|http-keep-alive|http-no-delay|http-pretend-keepalive|http-request|http-server-close|http-tunnel|http-use-proxy-header|http_proxy|httpchk|httpclose|httplog|independent-streams|inspect-delay|ldap-check|level|log-health-checks|log-separate-errors|logasap|mailers|match|myhostname|mysql-check|nolinger|on|originalto|path|persist|pgsql-check|prefer-last-server|queue|rdp-cookie|realm|redis-check|redispatch|refresh|scope|send|send-binary|send-state|server|server-fin|session|sessions|show-desc|show-legends|show-node|smtpchk|socket-stats|splice-auto|splice-request|splice-response|spop-check|srvtcpka|srvtimeout|ssl-hello-chk|store-request|store-response|tarpit|tcp-check|tcp-smart-accept|tcp-smart-connect|tcpka|tcplog|to|transparent|tunnel|uri)(?=\\s+|$)"
58
58
  },
59
59
  {
60
60
  "name": "variable.language.reserved.haproxy-config",
61
- "match": "\\s+(accept-netscaler-cip|accept-proxy|allow-0rtt|alpn|backlog|ca-file|ca-ignore-err|ca-sign-file|ca-sign-pass|ciphers|crl-file|crt|crt-ignore-err|crt-list|curves|defer-accept|ecdhe|expose-fd|force-sslv3|force-tlsv10|force-tlsv11|force-tlsv12|force-tlsv13|generate-certificates|gid|group|id|interface|level|maxconn|mode|mss|name|namespace|nice|no-ca-names|no-sslv3|no-tls-tickets|no-tlsv10|no-tlsv11|no-tlsv12|no-tlsv13|npn|prefer-client-ciphers|process|severity-output|ssl|ssl-max-ver|ssl-min-ver|strict-sni|tcp-ut|tfo|tls-ticket-keys|transparent|uid|user|v4v6|v6only|verify)(?=\\s+)"
61
+ "match": "\\s+(accept-netscaler-cip|accept-proxy|allow-0rtt|alpn|backlog|ca-file|ca-ignore-err|ca-sign-file|ca-sign-pass|ciphers|ciphersuites|crl-file|crt|crt-ignore-err|crt-list|curves|defer-accept|ecdhe|expose-fd|force-sslv3|force-tlsv10|force-tlsv11|force-tlsv12|force-tlsv13|generate-certificates|gid|group|id|interface|level|maxconn|mode|mss|name|namespace|nice|no-ca-names|no-sslv3|no-tls-tickets|no-tlsv10|no-tlsv11|no-tlsv12|no-tlsv13|npn|prefer-client-ciphers|process|severity-output|ssl|ssl-max-ver|ssl-min-ver|strict-sni|tcp-ut|tfo|tls-ticket-keys|transparent|uid|user|v4v6|v6only|verify)(?=\\s+|$)"
62
62
  },
63
63
  {
64
64
  "name": "variable.language.reserved.haproxy-config",
65
- "match": "\\s+(addr|agent-addr|agent-check|agent-inter|agent-port|agent-send|backup|ca-file|check|check-send-proxy|check-sni|check-ssl|ciphers|cookie|crl-file|crt|disabled|downinter|enabled|error-limit|fall|fastinter|force-sslv3|force-tlsv10|force-tlsv11|force-tlsv12|force-tlsv13|id|init-addr|inter|maxconn|maxqueue|minconn|namespace|no-agent-check|no-backup|no-check|no-check-ssl|no-send-proxy|no-send-proxy-v2|no-send-proxy-v2-ssl|no-send-proxy-v2-ssl-cn|no-ssl|no-ssl-reuse|no-sslv3|no-tls-tickets|no-tlsv10|no-tlsv11|no-tlsv12|no-tlsv13|no-verifyhost|non-stick|observe|on-error|on-marked-down|on-marked-up|port|redir|resolve-net|resolve-opts|resolve-prefer|resolvers|rise|send-proxy|send-proxy-v2|send-proxy-v2-ssl|send-proxy-v2-ssl-cn|slowstart|sni|source|ssl|ssl-max-ver|ssl-min-ver|ssl-reuse|stick|tcp-ut|tls-tickets|track|verify|verifyhost|weight)(?=\\s+)"
65
+ "match": "\\s+(addr|agent-addr|agent-check|agent-inter|agent-port|agent-send|backup|ca-file|check|check-send-proxy|check-sni|check-ssl|ciphers|ciphersuites|cookie|crl-file|crt|disabled|downinter|enabled|error-limit|fall|fastinter|force-sslv3|force-tlsv10|force-tlsv11|force-tlsv12|force-tlsv13|id|init-addr|inter|maxconn|maxqueue|minconn|namespace|no-agent-check|no-backup|no-check|no-check-ssl|no-send-proxy|no-send-proxy-v2|no-send-proxy-v2-ssl|no-send-proxy-v2-ssl-cn|no-ssl|no-ssl-reuse|no-sslv3|no-tls-tickets|no-tlsv10|no-tlsv11|no-tlsv12|no-tlsv13|no-verifyhost|non-stick|observe|on-error|on-marked-down|on-marked-up|port|redir|resolve-net|resolve-opts|resolve-prefer|resolvers|rise|send-proxy|send-proxy-v2|send-proxy-v2-ssl|send-proxy-v2-ssl-cn|slowstart|sni|source|ssl|ssl-max-ver|ssl-min-ver|ssl-reuse|stick|tcp-ut|tls-tickets|track|verify|verifyhost|weight)(?=\\s+|$)"
66
66
  },
67
67
  {
68
68
  "name": "variable.language.reserved.haproxy-config",
@@ -256,6 +256,9 @@
256
256
  {
257
257
  "include": "#deriving"
258
258
  },
259
+ {
260
+ "include": "#via"
261
+ },
259
262
  {
260
263
  "include": "#assignment_op"
261
264
  },
@@ -354,7 +357,7 @@
354
357
  {
355
358
  "name": "meta.declaration.instance.deriving.haskell",
356
359
  "contentName": "meta.type-signature.haskell",
357
- "begin": "^([ \\t]*)(deriving\\s+instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
360
+ "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}']))",
358
361
  "end": "^(?!\\1[ \\t]|[ \\t]*$)",
359
362
  "patterns": [
360
363
  {
@@ -362,11 +365,24 @@
362
365
  },
363
366
  {
364
367
  "include": "#type_signature"
368
+ },
369
+ {
370
+ "include": "#deriving_via"
365
371
  }
366
372
  ],
367
373
  "beginCaptures": {
368
374
  "2": {
369
375
  "name": "keyword.other.haskell"
376
+ },
377
+ "3": {
378
+ "patterns": [
379
+ {
380
+ "include": "#deriving_strategies"
381
+ }
382
+ ]
383
+ },
384
+ "4": {
385
+ "name": "keyword.other.haskell"
370
386
  }
371
387
  }
372
388
  }
@@ -376,10 +392,17 @@
376
392
  "patterns": [
377
393
  {
378
394
  "name": "meta.deriving.haskell",
379
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
395
+ "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}']))",
380
396
  "captures": {
381
397
  "1": {
382
398
  "name": "keyword.other.haskell"
399
+ },
400
+ "2": {
401
+ "patterns": [
402
+ {
403
+ "include": "#deriving_strategies"
404
+ }
405
+ ]
383
406
  }
384
407
  }
385
408
  }
@@ -389,7 +412,7 @@
389
412
  "patterns": [
390
413
  {
391
414
  "name": "meta.deriving.haskell",
392
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*\\(",
415
+ "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*\\(",
393
416
  "end": "\\)",
394
417
  "patterns": [
395
418
  {
@@ -404,6 +427,13 @@
404
427
  "beginCaptures": {
405
428
  "1": {
406
429
  "name": "keyword.other.haskell"
430
+ },
431
+ "2": {
432
+ "patterns": [
433
+ {
434
+ "include": "#deriving_strategies"
435
+ }
436
+ ]
407
437
  }
408
438
  }
409
439
  }
@@ -413,18 +443,38 @@
413
443
  "patterns": [
414
444
  {
415
445
  "name": "meta.deriving.haskell",
416
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
446
+ "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}']))",
417
447
  "captures": {
418
448
  "1": {
419
449
  "name": "keyword.other.haskell"
420
450
  },
421
451
  "2": {
452
+ "patterns": [
453
+ {
454
+ "include": "#deriving_strategies"
455
+ }
456
+ ]
457
+ },
458
+ "3": {
422
459
  "name": "entity.other.inherited-class.haskell"
423
460
  }
424
461
  }
425
462
  }
426
463
  ]
427
464
  },
465
+ "deriving_strategies": {
466
+ "patterns": [
467
+ {
468
+ "name": "meta.deriving.strategy.haskell",
469
+ "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}']))",
470
+ "captures": {
471
+ "1": {
472
+ "name": "keyword.other.haskell"
473
+ }
474
+ }
475
+ }
476
+ ]
477
+ },
428
478
  "double_colon_operator": {
429
479
  "patterns": [
430
480
  {
@@ -1477,6 +1527,71 @@
1477
1527
  }
1478
1528
  ]
1479
1529
  },
1530
+ "via": {
1531
+ "patterns": [
1532
+ {
1533
+ "include": "#via_list"
1534
+ },
1535
+ {
1536
+ "include": "#via_simple"
1537
+ },
1538
+ {
1539
+ "include": "#via_keyword"
1540
+ }
1541
+ ]
1542
+ },
1543
+ "via_keyword": {
1544
+ "patterns": [
1545
+ {
1546
+ "name": "meta.via.haskell",
1547
+ "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}']))",
1548
+ "captures": {
1549
+ "1": {
1550
+ "name": "keyword.other.haskell"
1551
+ }
1552
+ }
1553
+ }
1554
+ ]
1555
+ },
1556
+ "via_list": {
1557
+ "patterns": [
1558
+ {
1559
+ "name": "meta.via.haskell",
1560
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*\\(",
1561
+ "end": "\\)",
1562
+ "patterns": [
1563
+ {
1564
+ "include": "#type_signature"
1565
+ }
1566
+ ],
1567
+ "beginCaptures": {
1568
+ "1": {
1569
+ "name": "keyword.other.haskell"
1570
+ }
1571
+ }
1572
+ }
1573
+ ]
1574
+ },
1575
+ "via_simple": {
1576
+ "patterns": [
1577
+ {
1578
+ "name": "meta.via.haskell",
1579
+ "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}']))",
1580
+ "captures": {
1581
+ "1": {
1582
+ "name": "keyword.other.haskell"
1583
+ },
1584
+ "2": {
1585
+ "patterns": [
1586
+ {
1587
+ "include": "#type_signature"
1588
+ }
1589
+ ]
1590
+ }
1591
+ }
1592
+ }
1593
+ ]
1594
+ },
1480
1595
  "where": {
1481
1596
  "patterns": [
1482
1597
  {
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": ".hgignore",
3
+ "scopeName": "source.hgignore",
4
+ "patterns": [
5
+ {
6
+ "include": "#main"
7
+ }
8
+ ],
9
+ "repository": {
10
+ "main": {
11
+ "patterns": [
12
+ {
13
+ "include": "source.regexp"
14
+ },
15
+ {
16
+ "name": "keyword.operator.logical.not.negation.hgignore",
17
+ "match": "^!"
18
+ },
19
+ {
20
+ "match": "[^\\s$^]+",
21
+ "captures": {
22
+ "0": {
23
+ "patterns": [
24
+ {
25
+ "include": "source.gitignore#patternInnards"
26
+ }
27
+ ]
28
+ }
29
+ }
30
+ }
31
+ ]
32
+ }
33
+ }
34
+ }