github-linguist 7.6.1 → 7.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +5 -5
  2. data/bin/github-linguist +17 -4
  3. data/grammars/annotation.liquidhaskell.haskell.json +58 -11
  4. data/grammars/etc.json +212 -3
  5. data/grammars/hidden.manref.json +29 -0
  6. data/grammars/hint.haskell.json +58 -11
  7. data/grammars/hint.message.haskell.json +58 -11
  8. data/grammars/hint.type.haskell.json +58 -11
  9. data/grammars/injections.etc.json +601 -1
  10. data/grammars/markdown.plantuml.codeblock.json +26 -0
  11. data/grammars/source.4dm.json +1100 -0
  12. data/grammars/source.abap.json +7 -7
  13. data/grammars/source.abnf.json +23 -1
  14. data/grammars/source.agda.json +32 -202
  15. data/grammars/source.ahk.json +9 -5
  16. data/grammars/source.angelscript.json +1 -1
  17. data/grammars/source.ballerina.json +54 -18
  18. data/grammars/source.chapel.json +4 -4
  19. data/grammars/source.csound.json +1 -1
  20. data/grammars/source.css.json +2 -2
  21. data/grammars/source.css.scss.json +164 -15
  22. data/grammars/source.curlrc.json +869 -65
  23. data/grammars/source.dart.json +58 -32
  24. data/grammars/source.dircolors.json +137 -0
  25. data/grammars/source.direct-x.json +135 -0
  26. data/grammars/source.ebnf.json +67 -39
  27. data/grammars/source.editorconfig.json +23 -5
  28. data/grammars/source.elixir.json +51 -0
  29. data/grammars/source.elm.json +1 -1
  30. data/grammars/source.emacs.lisp.json +10 -0
  31. data/grammars/source.faust.json +119 -0
  32. data/grammars/source.gcode.json +166 -8
  33. data/grammars/source.gfm.json +1 -1
  34. data/grammars/source.gitconfig.json +1 -1
  35. data/grammars/source.hack.json +200 -98
  36. data/grammars/source.haskell.json +58 -11
  37. data/grammars/source.hlsl.json +9 -5
  38. data/grammars/source.hosts.json +40 -0
  39. data/grammars/source.hsig.json +58 -11
  40. data/grammars/source.hx.json +4 -0
  41. data/grammars/source.igor.json +46 -2
  42. data/grammars/source.ini.npmrc.json +311 -0
  43. data/grammars/source.inno.json +133 -0
  44. data/grammars/source.inputrc.json +500 -0
  45. data/grammars/source.js.json +4 -4
  46. data/grammars/source.julia.json +69 -23
  47. data/grammars/source.kotlin.json +1 -1
  48. data/grammars/source.lean.json +19 -3
  49. data/grammars/source.lean.markdown.json +2598 -0
  50. data/grammars/source.lex.json +4 -4
  51. data/grammars/source.m4.json +141 -99
  52. data/grammars/source.man-conf.json +46 -34
  53. data/grammars/source.matlab.json +437 -184
  54. data/grammars/source.mcfunction-snapshot.json +21388 -561
  55. data/grammars/source.mcfunction.json +55 -5
  56. data/grammars/source.meson.json +1 -1
  57. data/grammars/source.mlir.json +37 -317
  58. data/grammars/source.mrc.json +740 -0
  59. data/grammars/source.nasl.json +155 -0
  60. data/grammars/source.nextflow.json +2 -2
  61. data/grammars/source.odin-ehr.json +806 -0
  62. data/grammars/source.odin.json +402 -0
  63. data/grammars/source.opts.json +12 -2
  64. data/grammars/source.p4.json +21 -5
  65. data/grammars/source.prisma.json +435 -0
  66. data/grammars/source.python.json +2 -0
  67. data/grammars/source.qasm.json +66 -0
  68. data/grammars/source.ql.json +1408 -0
  69. data/grammars/source.reason.json +28 -16
  70. data/grammars/source.rego.json +124 -0
  71. data/grammars/source.sass.json +158 -3
  72. data/grammars/source.scala.json +53 -18
  73. data/grammars/source.ssh-config.json +1 -14
  74. data/grammars/source.swift.json +162 -2
  75. data/grammars/source.sy.json +2088 -183
  76. data/grammars/source.terraform.json +576 -132
  77. data/grammars/source.tnsaudit.json +256 -0
  78. data/grammars/source.ts.json +159 -51
  79. data/grammars/source.tsx.json +160 -52
  80. data/grammars/source.v.json +559 -764
  81. data/grammars/source.vim-snippet.json +645 -0
  82. data/grammars/source.viml.json +6 -6
  83. data/grammars/source.webassembly.json +10 -0
  84. data/grammars/source.wgetrc.json +1640 -0
  85. data/grammars/source.wsd.json +775 -0
  86. data/grammars/source.zig.json +169 -304
  87. data/grammars/text.html.php.blade.json +1 -1
  88. data/grammars/text.html.riot.json +788 -0
  89. data/grammars/text.muse.json +1471 -0
  90. data/grammars/text.tex.latex.haskell.json +58 -11
  91. data/grammars/text.vim-help.json +383 -0
  92. data/grammars/version +1 -1
  93. data/lib/linguist/VERSION +1 -1
  94. data/lib/linguist/blob_helper.rb +4 -2
  95. data/lib/linguist/file_blob.rb +1 -1
  96. data/lib/linguist/generated.rb +60 -13
  97. data/lib/linguist/heuristics.yml +64 -4
  98. data/lib/linguist/languages.json +1 -1
  99. data/lib/linguist/languages.yml +336 -45
  100. data/lib/linguist/lazy_blob.rb +10 -10
  101. data/lib/linguist/linguist.bundle +0 -0
  102. data/lib/linguist/samples.json +43560 -31457
  103. data/lib/linguist/shebang.rb +5 -3
  104. data/lib/linguist/vendor.yml +9 -0
  105. metadata +29 -10
  106. data/grammars/source.LS.json +0 -85
  107. data/grammars/source.MCPOST.json +0 -54
  108. data/grammars/source.MOD.json +0 -55
  109. data/grammars/source.apt.json +0 -18
  110. data/grammars/source.jlex.json +0 -322
  111. data/grammars/source.yaml-ext.json +0 -324
@@ -0,0 +1,740 @@
1
+ {
2
+ "scopeName": "source.mrc",
3
+ "patterns": [
4
+ {
5
+ "include": "#comments"
6
+ },
7
+ {
8
+ "include": "#group"
9
+ },
10
+ {
11
+ "include": "#alias"
12
+ },
13
+ {
14
+ "include": "#menu"
15
+ },
16
+ {
17
+ "include": "#events"
18
+ },
19
+ {
20
+ "include": "#dialog"
21
+ }
22
+ ],
23
+ "repository": {
24
+ "alias": {
25
+ "patterns": [
26
+ {
27
+ "name": "meta.alias.code.mrc",
28
+ "begin": "(?i)^(alias)\\x20+(?:(-l)\\x20+)?(?!-l)([^\\s]+)\\s*",
29
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
30
+ "patterns": [
31
+ {
32
+ "include": "#code_content"
33
+ }
34
+ ],
35
+ "beginCaptures": {
36
+ "1": {
37
+ "name": "storage.type.alias.mrc"
38
+ },
39
+ "2": {
40
+ "name": "storage.modifier.alias.mrc"
41
+ },
42
+ "3": {
43
+ "name": "entity.name.function.mrc"
44
+ }
45
+ }
46
+ }
47
+ ]
48
+ },
49
+ "calc_content": {
50
+ "patterns": [
51
+ {
52
+ "name": "keyword.operator.arithmetic.mrc",
53
+ "match": "[+\\-*/%^]"
54
+ },
55
+ {
56
+ "name": "meta.arithmetic.mrc",
57
+ "begin": "(\u003c=\\()",
58
+ "end": "(?\u003c=\\))",
59
+ "patterns": [
60
+ {
61
+ "include": "#calc_content"
62
+ }
63
+ ]
64
+ }
65
+ ]
66
+ },
67
+ "code_block": {
68
+ "patterns": [
69
+ {
70
+ "name": "meta.code.block.mrc",
71
+ "begin": "{",
72
+ "end": "}",
73
+ "patterns": [
74
+ {
75
+ "include": "#code_content"
76
+ }
77
+ ]
78
+ }
79
+ ]
80
+ },
81
+ "code_content": {
82
+ "patterns": [
83
+ {
84
+ "include": "#comments"
85
+ },
86
+ {
87
+ "include": "#variables"
88
+ },
89
+ {
90
+ "include": "#identifiers"
91
+ },
92
+ {
93
+ "include": "#conditionals"
94
+ },
95
+ {
96
+ "include": "#commands"
97
+ },
98
+ {
99
+ "include": "#code_block"
100
+ }
101
+ ]
102
+ },
103
+ "commands": {
104
+ "patterns": [
105
+ {
106
+ "begin": "(?i)(?:\\x20+\\|\\x20+|(?\u003c=else\\x20)|^\\x20*|\\)|\\G)\\x20*(\\/+)?([!|.]{1,2})?((?:win)?help|server|disconnect|join|hop|part|part(?:all)?|quit|list|links|quote|raw|(?:a|q)?me|(?:a|q|o|v|priv)?msg|action|(?:o|v)?notice|describe|query|sound|ctcp|dcc|wall(?:chops|voices)|uwho|sock(?:accept|close|list|listen|mark|open|pause|read|rename|udp|write)|b(?:read|replace|copy|set|trunc|unset|write)|com(?:close|list|open|reg)|dialog|did(?:tok)?|draw(?:copy|dot|fill|line|pic|rect|replace|rot|save|scroll|size|text)|f(?:open|list|seek|write|close)|(?:a|c|d|i|r|s)line|clear(?:all|ial)?|window|g(?:hide|(?:un)?load|move|opts|play|point|qreq|show|size|stop|talk)|h(?:add|dec|del|free|inc|load|make|save)|break|continue|goto|halt(?:def)?|return(?:ex)?|dec|inc|set|var|unset(?:all)|dec|inc|set|var|unset(?:all)?|(?:a|g|i|r)user|(?:d|r)level|ulist|flush|ial(?:clear|mark|fill)?|copy|flushini|(?:mk|rm)dir|rem(?:ini|ove)|rename|write(?:ini)?|aop|avoice|ban|channel|ignore|leave|mode|parseline|pop|protect|pvoice|say|updatenl|abook|ajinvite|alias|(?:a|c|m|t)nick|auto(?:join)?|background|beep|bindip|clipboard|colou?r|creq|ctcp(?:reply|s)|dccserver|dde(?:server)?|debug|disable|dll|dns|dqwindow|ebeeps|exit|echo|editbox|emailaddr|enable|events|filter|findtext|finger|firewall|flash|flood|fnord|font|fsend|fserve|fullname|fupdate|groups|hotlink|identd|linesep|load(?:buf)?|localinfo|log(?:view)?|mdi|menubar|noop|notify|pdcc|perform|play(?:ctrl)?|proxy|queryrn|registration|reload|remote|renwin|reset(?:error|idle)|run|save(?:buf|ini)?|scid|scon|setlayer|showmirc|signal|speak|splay|sreq|strip|switchbar|time(?:stamp|rs|r([^\\s]+)?)|tips?|titlebar|tokenize|toolbar|tray|treebar|unload|url|vc(?:add|md|rem)|vol|xyzzy|away|close(?:msg)?|username|aclear|advertise|allnick|autoconnect|aquit|back|banlist|betaup|bin2txt|bw|channels|charset|config|cycleall|de(?:halfop|s?op|voice)|dock(?:panels)?|download|echo(?:monitor|x)|edit|encoding|fakeraw|fget|fullscreen|gcmem|globalkeys|p?google|halfop|highlight|icon|inick|inlineimage|kblayout|lag|linemarker|lock|logs|msgbox|mute|nextunread|nick(?:column|list)|nmsg|np|oline|options|paths|pause|plugins|priv|quick(?:connect|save)|raw(?:log|x)|re(?:alname|connect|freshsong|join|solve|start)|scripts|scrolltext|search|sendkeys|serverlist|set(?:config|option)|show(?:adiirc|menu)|slap|sleep|sop|statusbar|tab|themes|topicbox|usernick|txt2bin|un(?:ban|ignore|notify)|update|vars|viewlog|voice|w(?:down|jump|next|pause|play))(?=\\b)",
107
+ "end": "(?=\\z|\\x20+\\|\\x20+[^\\x20]|\\x20}|$)",
108
+ "patterns": [
109
+ {
110
+ "include": "#switches"
111
+ },
112
+ {
113
+ "include": "#parameters"
114
+ }
115
+ ],
116
+ "beginCaptures": {
117
+ "1": {
118
+ "name": "keyword.other.command.symbol.mrc"
119
+ },
120
+ "2": {
121
+ "name": "keyword.other.command.symbol.mrc"
122
+ },
123
+ "3": {
124
+ "name": "keyword.control.command.mrc"
125
+ },
126
+ "4": {
127
+ "name": "support.variable.name.mrc"
128
+ }
129
+ }
130
+ },
131
+ {
132
+ "name": "meta.cmd.mrc",
133
+ "begin": "(?i)(?:\\x20+\\|\\x20+|(?\u003c=else\\x20)|^\\x20*|\\)|\\G)\\x20*(?!\\|\\|\\x20)(\\/+)?([!|.]{1,2})?(?:(?![{};%\u0026$]|if|else(?:if)?|while)([^\\s]+))",
134
+ "end": "(?=\\z|\\x20\\|\\x20[^\\x20]|\\x20}|$)",
135
+ "patterns": [
136
+ {
137
+ "include": "#switches"
138
+ },
139
+ {
140
+ "include": "#parameters"
141
+ }
142
+ ],
143
+ "beginCaptures": {
144
+ "1": {
145
+ "name": "keyword.other.command.symbol.mrc"
146
+ },
147
+ "2": {
148
+ "name": "keyword.other.command.symbol.mrc"
149
+ },
150
+ "3": {
151
+ "name": "support.function.name.mrc"
152
+ }
153
+ }
154
+ }
155
+ ]
156
+ },
157
+ "comment_block": {
158
+ "patterns": [
159
+ {
160
+ "name": "comment.block.mrc",
161
+ "begin": "^(?:\\x20*)\\/\\*",
162
+ "end": "^(?:\\x20*)\\*\\/$"
163
+ }
164
+ ]
165
+ },
166
+ "comment_documentation": {
167
+ "patterns": [
168
+ {
169
+ "name": "comment.block.documentation.mrc",
170
+ "begin": "^(?:\\x20*)(\\/\\*\\*)$",
171
+ "end": "^(?:\\x20*)\\*\\/$",
172
+ "patterns": [
173
+ {
174
+ "include": "#documentation_block"
175
+ }
176
+ ]
177
+ }
178
+ ]
179
+ },
180
+ "comment_line": {
181
+ "patterns": [
182
+ {
183
+ "name": "comment.line.semicolon.mrc",
184
+ "begin": "(?\u003c=\\G|\\x20\\|\\x20|^)(?:\\x20*);",
185
+ "end": "(?=\\z|\\x20+\\|\\x20+[^\\s]|\\x20}|$)"
186
+ }
187
+ ]
188
+ },
189
+ "comments": {
190
+ "patterns": [
191
+ {
192
+ "include": "#comment_documentation"
193
+ },
194
+ {
195
+ "include": "#comment_block"
196
+ },
197
+ {
198
+ "include": "#comment_line"
199
+ }
200
+ ]
201
+ },
202
+ "conditionals": {
203
+ "patterns": [
204
+ {
205
+ "name": "meta.conditional.mrc",
206
+ "begin": "(?i)(?:(?\u003c=\\x20\\|\\x20|^|\\G)\\x20*(if|elseif|while)|(?:(?\u003c=\\))\\x20+(\u0026\u0026|\\|\\|)))\\x20+(?=\\()",
207
+ "end": "(?=\\)(?:\\x20|$))",
208
+ "patterns": [
209
+ {
210
+ "include": "#conditionals_content"
211
+ },
212
+ {
213
+ "include": "#parameters"
214
+ }
215
+ ],
216
+ "beginCaptures": {
217
+ "1": {
218
+ "name": "keyword.control.conditional.mrc"
219
+ },
220
+ "2": {
221
+ "name": "keyword.control.conditional.mrc"
222
+ }
223
+ }
224
+ },
225
+ {
226
+ "name": "keyword.control.conditional.mrc",
227
+ "match": "(?i)(?\u003c=\\x20\\|\\x20|^)\\x20*(else)\\b"
228
+ }
229
+ ]
230
+ },
231
+ "conditionals_content": {
232
+ "patterns": [
233
+ {
234
+ "name": "keyword.operator.mrc",
235
+ "match": "(?i)((?\u003c=\\x20)!?(?:==?=?|(?:\u003c|\u003e)=?|\\/\\/|\\\\|\u0026|is(?:in(?:cs)?|wm(?:cs)?|(?:al)?num|letter|alpha|(?:low|upp)er|on|(?:a|h)?op|a?voice|reg|chan|ban|quiet|ignore|protected|notify|admin|owner|quiet|url))(?=\\x20|\\))|(?\u003c=\\()!(?=\\$|%|\u0026))"
236
+ },
237
+ {
238
+ "include": "#constants"
239
+ }
240
+ ]
241
+ },
242
+ "constants": {
243
+ "patterns": [
244
+ {
245
+ "name": "constant.numeric.mrc",
246
+ "match": "(?\u003c=\\x20|^|\\(|,)-?\\d+(\\.\\d+)?(?=\\x20|$|\\)|,)"
247
+ }
248
+ ]
249
+ },
250
+ "dialog": {
251
+ "patterns": [
252
+ {
253
+ "name": "meta.dialog.code.mrc",
254
+ "begin": "(?i)^(dialog)\\x20+(?:(-l)\\x20+)?(?!-l)([^\\s]+)\\s*(?={)",
255
+ "end": "(?\u003c=}$)",
256
+ "patterns": [
257
+ {
258
+ "include": "#dialog_content"
259
+ }
260
+ ],
261
+ "beginCaptures": {
262
+ "1": {
263
+ "name": "storage.type.dialog.mrc"
264
+ },
265
+ "2": {
266
+ "name": "storage.modifier.dialog.mrc"
267
+ },
268
+ "3": {
269
+ "name": "entity.name.section.mrc"
270
+ }
271
+ }
272
+ }
273
+ ]
274
+ },
275
+ "dialog_content": {
276
+ "patterns": [
277
+ {
278
+ "include": "#comments"
279
+ },
280
+ {
281
+ "contentName": "string.quoted.double.control.mrc",
282
+ "begin": "(?i)^\\x20*(title|icon|size|option|text|edit|button|check|radio|box|scroll|list|combo|icon|link|tab|menu|item)\\x20+",
283
+ "end": "(?\u003c=$)",
284
+ "patterns": [
285
+ {
286
+ "include": "#parameters"
287
+ }
288
+ ],
289
+ "beginCaptures": {
290
+ "1": {
291
+ "name": "keyword.control.dialog.control.mrc"
292
+ }
293
+ }
294
+ }
295
+ ]
296
+ },
297
+ "documentation_block": {
298
+ "patterns": [
299
+ {
300
+ "match": "(?i)\\x20*\\*\\x20+(@(?:author|command|const(?:ant)?|copyright|deprecated|event|example|experimental|global|identifier|ignore|license|nobadges|param(?:eter)?|arg(?:ument)?|prop|returns?|see|switch|todo|version))\\b",
301
+ "captures": {
302
+ "1": {
303
+ "name": "storage.type.class.mrc"
304
+ }
305
+ }
306
+ }
307
+ ]
308
+ },
309
+ "events": {
310
+ "patterns": [
311
+ {
312
+ "name": "meta.event.code.mrc",
313
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:(?:action|notice|(?:client)?text):[^:]+:[^:]+:)\\s*",
314
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
315
+ "patterns": [
316
+ {
317
+ "include": "#code_content"
318
+ }
319
+ ],
320
+ "beginCaptures": {
321
+ "1": {
322
+ "name": "entity.name.type.event.mrc"
323
+ }
324
+ }
325
+ },
326
+ {
327
+ "name": "meta.event.code.mrc",
328
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:(?:active|input|tabcomp|mscroll):(?:\\*|#[^:]*|\\?|=|!|@[^:]*):)\\s*",
329
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
330
+ "patterns": [
331
+ {
332
+ "include": "#code_content"
333
+ }
334
+ ],
335
+ "beginCaptures": {
336
+ "1": {
337
+ "name": "entity.name.type.event.mrc"
338
+ }
339
+ }
340
+ },
341
+ {
342
+ "name": "meta.event.code.mrc",
343
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:(?:agent|appactive|connect(?:fail)?|disconnect|dns|exit|(?:un)?load|(?:midi|mp3|play|song|wave)end|nick|nosound|u?notify|ping|pong|quit|start|usermode|options|resume|song|suspend):)\\s*",
344
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
345
+ "patterns": [
346
+ {
347
+ "include": "#code_content"
348
+ }
349
+ ],
350
+ "beginCaptures": {
351
+ "1": {
352
+ "name": "entity.name.type.event.mrc"
353
+ }
354
+ }
355
+ },
356
+ {
357
+ "name": "meta.event.code.mrc",
358
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:(?:(?:un)?ban|(?:de)?help|(?:de|server)?op|(?:de)?owner|(?:de)?voice|invite|join|kick|(?:server|raw)?mode|part|topic|(?:de)?admin):(?:\\*|#[^:]*):)\\s*",
359
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
360
+ "patterns": [
361
+ {
362
+ "include": "#code_content"
363
+ }
364
+ ],
365
+ "beginCaptures": {
366
+ "1": {
367
+ "name": "entity.name.type.event.mrc"
368
+ }
369
+ }
370
+ },
371
+ {
372
+ "name": "meta.event.code.mrc",
373
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:(?:chat|ctcpreply|error|file(?:rcvd|sent)|(?:get|send)fail|logon|serv|signal|snotice|sock(?:close|listen|open|read|write)|udp(?:read|write)|vcmd|wallops|download|(?:un)?zip):[^:]+:)\\s*",
374
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
375
+ "patterns": [
376
+ {
377
+ "include": "#code_content"
378
+ }
379
+ ],
380
+ "beginCaptures": {
381
+ "1": {
382
+ "name": "entity.name.type.event.mrc"
383
+ }
384
+ }
385
+ },
386
+ {
387
+ "name": "meta.event.code.mrc",
388
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:(?:close|open):(?:\\*|\\?|=|!|@[^:]*):)\\s*",
389
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
390
+ "patterns": [
391
+ {
392
+ "include": "#code_content"
393
+ }
394
+ ],
395
+ "beginCaptures": {
396
+ "1": {
397
+ "name": "entity.name.type.event.mrc"
398
+ }
399
+ }
400
+ },
401
+ {
402
+ "name": "meta.event.code.mrc",
403
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:dccserver:(?:chat|send|fserve):)\\s*",
404
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
405
+ "patterns": [
406
+ {
407
+ "include": "#code_content"
408
+ }
409
+ ],
410
+ "beginCaptures": {
411
+ "1": {
412
+ "name": "entity.name.type.event.mrc"
413
+ }
414
+ }
415
+ },
416
+ {
417
+ "name": "meta.event.code.mrc",
418
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:dialog:[^:]+:(?:init|close|edit|sclick|dclick|menu|scroll|mouse|rclick|drop|\\*):[\\d\\-,\\*]+:)\\s*",
419
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
420
+ "patterns": [
421
+ {
422
+ "include": "#code_content"
423
+ }
424
+ ],
425
+ "beginCaptures": {
426
+ "1": {
427
+ "name": "entity.name.type.event.mrc"
428
+ }
429
+ }
430
+ },
431
+ {
432
+ "name": "meta.event.code.mrc",
433
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:hotlink:[^:]+:(?:\\*|#[^:]*|\\?|=|!|@[^:]*):)\\s*",
434
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
435
+ "patterns": [
436
+ {
437
+ "include": "#code_content"
438
+ }
439
+ ],
440
+ "beginCaptures": {
441
+ "1": {
442
+ "name": "entity.name.type.event.mrc"
443
+ }
444
+ }
445
+ },
446
+ {
447
+ "name": "meta.event.code.mrc",
448
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:key(?:down|up):(?:\\*|@[^:]*):(?:\\*|\\d+(?:,\\d+)*):)\\s*",
449
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
450
+ "patterns": [
451
+ {
452
+ "include": "#code_content"
453
+ }
454
+ ],
455
+ "beginCaptures": {
456
+ "1": {
457
+ "name": "entity.name.type.event.mrc"
458
+ }
459
+ }
460
+ },
461
+ {
462
+ "name": "meta.event.code.mrc",
463
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:parseline:(?:\\*|in|out):[^:]+:)\\s*",
464
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
465
+ "patterns": [
466
+ {
467
+ "include": "#code_content"
468
+ }
469
+ ],
470
+ "beginCaptures": {
471
+ "1": {
472
+ "name": "entity.name.type.event.mrc"
473
+ }
474
+ }
475
+ },
476
+ {
477
+ "name": "meta.event.code.mrc",
478
+ "begin": "^(?i)(raw\\x20+[^:\\s]+:[^:]+:)\\s*",
479
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
480
+ "patterns": [
481
+ {
482
+ "include": "#code_content"
483
+ }
484
+ ],
485
+ "beginCaptures": {
486
+ "1": {
487
+ "name": "entity.name.type.event.mrc"
488
+ }
489
+ }
490
+ },
491
+ {
492
+ "name": "meta.event.code.mrc",
493
+ "begin": "^(?i)(ctcp\\x20+[^:\\s]+:[^:]+:(?:\\*|#.*|\\?):)\\s*",
494
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
495
+ "patterns": [
496
+ {
497
+ "include": "#code_content"
498
+ }
499
+ ],
500
+ "beginCaptures": {
501
+ "1": {
502
+ "name": "entity.name.type.event.mrc"
503
+ }
504
+ }
505
+ }
506
+ ]
507
+ },
508
+ "group": {
509
+ "patterns": [
510
+ {
511
+ "name": "keyword.other.groupname.mrc",
512
+ "match": "(?i)^#[^\\s]+ (on|off|end)(?:\\b)"
513
+ }
514
+ ]
515
+ },
516
+ "identifiers": {
517
+ "patterns": [
518
+ {
519
+ "include": "#identifiers_params"
520
+ },
521
+ {
522
+ "include": "#identifiers_no_params"
523
+ }
524
+ ]
525
+ },
526
+ "identifiers_no_params": {
527
+ "patterns": [
528
+ {
529
+ "name": "keyword.other.identifier.mrc",
530
+ "match": "(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)\\$\\$?~?(0|\\!|\u0026(?=$)|\\*|\\+\\+?|[1-9]+(-?([0-9]+)|[^\\s|\\)|,]+)?|active((c|w)id)?|a?date|adiirc(dir([^\\s,)]+)?|exe|ini)|address|admnick|agent(name|stat|ver)|album|anick|aop|app(active|bits|state)|artist|asctime|audio|auto|avoice|away(msg|time)?|banmask|batteryp?|beta|bit(rate|s)|bname|bnick|boldify|builddate|bw(downb?|name|recb?|sentb?|speed|upb?)|cal(ias|ler)|cancel|cb|cd|chan(modes|types)?|cid|clevel|cmd(box|line)|com(char|err|ment|pact)|cpu(cache|count|ident|load|mhz|name|vendor)|cr(eq|lf)?|ctimer?|ctrlenter|day(light)?|dbu(h|w)|dccignore|dccport|ddename|debug|devent|did|disk(free|total)|dlevel|dname|dock(panels)?|dotnet|download(err)?|dqwindow|ebeeps|email(addr)?|error|event(id|parms)?|exiting|false|fe(of|rr)|filename|filtered|find(dirn|filen)|flinen|frequency|fromeditbox|full(address|date|name|screen|title)|genre|getdir|gfx(ram)?|globalidle|gmt|halted|highlight|hnick|host|hotline(pos)?|ia(ddress|l)|ident|idle|ifmatch2?|ignore|in(midi(.(pos|length|fname|pause))?|mode|mp3|paste|song(.(pos|length|fname|pause))?|wave(.(pos|length|fname|pause))?|who)|ip|is(admin|id|wine)|kblayout|key(char|rpt|val)|knick|lactive(cid|wid)?|lag|layer|leftwin(cid|wid)?|length|lf|locked|log(dir|stamp(fmt)?)|lquitmsg|ltimer|maddress|matchkey|max(lenl|lenm|lens)|me|mem(freep?|total)|menu(bar|context|type)?|mididir|mircdir([^\\s,)]+)?|mircexe|mircini|mnick|modefirst|modelast|modespl|motherboard|mouse(.(x|y||mx|my|dx|dy|cx|cy|win|lb|key))?|mp3dir|msg(stamp|tags|x)|muted|mversion|naddress|nick(column|mode)?|network|newnick|no(tify)?|null|numeric|ok|online(server|total)?|op?nick|os(bits|build|edition|idle|installdate|major|minor|name|servicepack|version)?|parms|parse(line|type|utf)|passivedcc|pcre|percent(l|p)|pi|play(count|er(handle)?)|pnick|port(able)?|position|prefix(ctcp|emote|sys|user)?|progress|prop|protect|quickconnect|quitmessage|raddress|randomcolors|rating|raw(bytes|msgx?)|readn|realname|regerrstr|remote|result|screen(b|hz?|w)?|script(dir([^\\s,)]+)?|line|s)?|server(ip|target)?|sfstate|show|signal|site|size|snicks|snotify|sock(err|br|name)|song(path)?|sreq|ssl(cert((remote)?sha(1|256)|valid)|(lib)?dll|ready|version)?|starting|status(bar)?|stripped|switchbar|target|tempfn|ticks|time(out|stamp(fmt)?|zone)|tips|title(bar)?|toolbar|topic|totaltracks|track|treebar|true|ulevel|up(days|dating|hours|mins)|url|user(mode|name)|v1|v2|vcmd(stat|ver)|version|volume(b|p)?|vnick|wavedir|wid|wildsite|window|year|yes|ziperr)(?=\\s|\\)|,)"
531
+ },
532
+ {
533
+ "match": "(?\u003c=\\s|\\(|\\,|\\.|^)(\\$\\$?~?(?:\\?(?:[^\\s=]+)?|s?dir|hfile))(?:(=)(\"(?:[^\"])*\"))?(?=\\s|\\)|,)",
534
+ "captures": {
535
+ "1": {
536
+ "name": "keyword.other.identifier.mrc"
537
+ },
538
+ "2": {
539
+ "name": "keyword.operator.mrc"
540
+ },
541
+ "3": {
542
+ "name": "string.quoted.double.mrc"
543
+ }
544
+ }
545
+ },
546
+ {
547
+ "name": "keyword.other.identifier.mrc",
548
+ "match": "(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\=\\$\\$?~?nick)(?=\\b)"
549
+ },
550
+ {
551
+ "name": "support.function.name.mrc",
552
+ "match": "(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\$\\$?~?[^\\s(),]+)(?=\\b)"
553
+ }
554
+ ]
555
+ },
556
+ "identifiers_params": {
557
+ "patterns": [
558
+ {
559
+ "begin": "(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\$\\$?~?(\\+|abook|a?cos|abs|date|add(ress|tok(cs)?)|adilang|admnick|agent|alias|and|ansi2mirc|aop|asc(time)?|a?sin|a?tan|avoice|banlist|base|bfind|bindip|bit(off|on)|boldify|bvar|bytes|calias|cb|ceil|chan(nel)?|chat|chr|click|cnick|colou?r|com(call|chan|press|val)?|cosh?|count(cs)?|cpuload|crc|ctime|date|dccignore|dde|decode|decompress|decrypt|deltok|dialog|did(reg|tok|wm)?|disk(menu)?|dll(call)?|dns|dockpanels|download|duration|editbox(history)?|emoticons|encode|encodingmenu|encrypt|envvar|eval(next)?|eventtarget|exec|exists|fgetc|file|find(dir|file|tok(cs)?)|fline|floor|font|fopen|fread|fserve?|get(dir|dot|tok)?|gfx(ram)?|gmt|group|hash|height|hexcolor|hfind|hget|highlight|hmac|hmatch|hnick|hotlink|hotp|hregex|hypot|ial(chan)?|ibl|iel|ignore|iil|inellipse|ini(ck|topic)?|inpoly|input|in(round)?rect|insert|instok|int(ersect)?|invitemenu|iptype|iql|ircv3caps|is(alias|bit|dde|dir|file|lower|tok(cs)?|upper|utf)|keylocked|left|len|level|line(height|s)?|link|lock|lo(f|g(10)?)|long(fn|ip)|loop|lower|maddress|mask|matchtok(cs)?|md5|menuicon|mid|mk(log|nick)?fn|mode|mp3|msfile|msgtags|nadmnick|(nh)?nick|no(file|p?nick|t(ags|ify)?|path|qt)?|numtok|nvnick|ocolor|onpoly|op?nick|ord?|pic|play|plugins|portfree|pos(cs)?|powmod|prefix(emote|user)|puttok|qt|query|r(ands?|ead(ini)?|eg(ex|ml(ex)?|sub(ex)?)|em(ove(cs)?|tok(cs)?)|eplace(cs|x(cs)?)?|eptok(cs)?|gb|ight|ound|nick)?|samepath|scid|scon|screen(b|hz?|shot|w)?|script|sdir|send|server(vars)?|sfile|sha(1|2|256|384|512)|shortfn|sinh|slapsmenu|sline|snick|sock|sorttok(cs)?|sound|speak|spellcheck|sqrt|statusbar|str(ip)?|style|submenu|sysdir|tanh|timer|tip|token|toolbar|topicbox|totp|trust|ulist|unsafe|upper|uptime|url(get)?|utf(de|en)code|var|vc(md)?|vol|width|wildtok(cs)?|window|wmiquery|wrap|xor|zip))\\(",
560
+ "end": "(?i)\\)(?:\\.([^\\s|\\)|,]+))?",
561
+ "patterns": [
562
+ {
563
+ "include": "#parameters"
564
+ }
565
+ ],
566
+ "beginCaptures": {
567
+ "1": {
568
+ "name": "keyword.other.identifier.mrc"
569
+ }
570
+ },
571
+ "endCaptures": {
572
+ "1": {
573
+ "name": "keyword.other.identifier.property.mrc"
574
+ }
575
+ }
576
+ },
577
+ {
578
+ "begin": "(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\$\\$?~?calc)\\(",
579
+ "end": "(?i)\\)(?:\\.([^\\s|\\)|,]+))?",
580
+ "patterns": [
581
+ {
582
+ "include": "#parameters"
583
+ },
584
+ {
585
+ "include": "#calc_content"
586
+ }
587
+ ],
588
+ "beginCaptures": {
589
+ "1": {
590
+ "name": "keyword.other.identifier.mrc"
591
+ }
592
+ },
593
+ "endCaptures": {
594
+ "1": {
595
+ "name": "keyword.other.identifier.property.mrc"
596
+ }
597
+ }
598
+ },
599
+ {
600
+ "begin": "(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\$\\$?~?iif)\\(",
601
+ "end": "(?i)\\)(?:\\.([^\\s|\\)|,]+))?",
602
+ "patterns": [
603
+ {
604
+ "include": "#conditionals_content"
605
+ },
606
+ {
607
+ "include": "#parameters"
608
+ }
609
+ ],
610
+ "beginCaptures": {
611
+ "1": {
612
+ "name": "keyword.other.identifier.mrc"
613
+ }
614
+ },
615
+ "endCaptures": {
616
+ "1": {
617
+ "name": "keyword.other.identifier.property.mrc"
618
+ }
619
+ }
620
+ },
621
+ {
622
+ "begin": "(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\$\\$?~?[^\\s(),]+)\\(",
623
+ "end": "(?i)\\)(?:\\.([^\\s|\\)|,]+))?",
624
+ "patterns": [
625
+ {
626
+ "include": "#parameters"
627
+ }
628
+ ],
629
+ "beginCaptures": {
630
+ "1": {
631
+ "name": "support.function.name.mrc"
632
+ }
633
+ },
634
+ "endCaptures": {
635
+ "1": {
636
+ "name": "keyword.other.identifier.property.mrc"
637
+ }
638
+ }
639
+ }
640
+ ]
641
+ },
642
+ "menu": {
643
+ "patterns": [
644
+ {
645
+ "name": "meta.menu.code.mrc",
646
+ "begin": "(?i)^(menu)\\x20+((?:status|channel|query|nicklist|menubar|(?:channel)?link|@[^\\x20,]+|\\*)(?:,(?:status|channel|query|nicklist|menubar|(?:channel)?link|@[^\\x20,]+))*|\\*)\\x20+{",
647
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|}$",
648
+ "patterns": [
649
+ {
650
+ "include": "#menu_content"
651
+ }
652
+ ],
653
+ "beginCaptures": {
654
+ "1": {
655
+ "name": "storage.type.menu.mrc"
656
+ },
657
+ "2": {
658
+ "name": "storage.modifier.function.mrc"
659
+ }
660
+ }
661
+ }
662
+ ]
663
+ },
664
+ "menu_content": {
665
+ "patterns": [
666
+ {
667
+ "include": "#comments"
668
+ },
669
+ {
670
+ "include": "#parameters"
671
+ },
672
+ {
673
+ "begin": "(?:^\\x20*|\\G)\\x20*(?:\\.+)?((?:mouse|(?:s|d(?:r|m)?|u|r|lb|m)click)|leave|drop)(?:\\x20*:\\x20*)?",
674
+ "end": "(?=\\z|\\x20}|$)",
675
+ "patterns": [
676
+ {
677
+ "include": "#code_content"
678
+ }
679
+ ],
680
+ "beginCaptures": {
681
+ "1": {
682
+ "name": "keyword.other.menu.item.mrc"
683
+ }
684
+ }
685
+ },
686
+ {
687
+ "begin": "^\\x20*",
688
+ "end": "(?=\\z|\\x20}|$)",
689
+ "patterns": [
690
+ {
691
+ "include": "#parameters"
692
+ },
693
+ {
694
+ "begin": "(?\u003c=:|{)",
695
+ "end": "(?=\\z|\\x20}|$)",
696
+ "patterns": [
697
+ {
698
+ "include": "#code_content"
699
+ }
700
+ ]
701
+ }
702
+ ]
703
+ }
704
+ ]
705
+ },
706
+ "parameters": {
707
+ "patterns": [
708
+ {
709
+ "include": "#variables"
710
+ },
711
+ {
712
+ "include": "#identifiers"
713
+ },
714
+ {
715
+ "include": "#constants"
716
+ }
717
+ ]
718
+ },
719
+ "switches": {
720
+ "patterns": [
721
+ {
722
+ "name": "keyword.other.switch.mrc",
723
+ "match": "(?\u003c=\\x20)[-+][[:alnum:]]+(?=\\s)"
724
+ }
725
+ ]
726
+ },
727
+ "variables": {
728
+ "patterns": [
729
+ {
730
+ "name": "variable.other.normal.mrc",
731
+ "match": "(?\u003c![^(,\\x20!])(%)[^\\x20),]+"
732
+ },
733
+ {
734
+ "name": "variable.other.binary.mrc",
735
+ "match": "(?\u003c![^(,\\x20!])(\u0026)[^\\x20),]+"
736
+ }
737
+ ]
738
+ }
739
+ }
740
+ }