github-linguist 7.6.0 → 7.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) 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 +472 -4
  5. data/grammars/hidden.manref.json +29 -0
  6. data/grammars/hidden.regexp.injection-shell.json +28 -0
  7. data/grammars/hint.haskell.json +58 -11
  8. data/grammars/hint.message.haskell.json +58 -11
  9. data/grammars/hint.type.haskell.json +58 -11
  10. data/grammars/injections.etc.json +601 -1
  11. data/grammars/markdown.plantuml.codeblock.json +26 -0
  12. data/grammars/source.4dm.json +1156 -0
  13. data/grammars/source.abap.json +7 -7
  14. data/grammars/source.abl.json +685 -83
  15. data/grammars/source.abnf.json +23 -1
  16. data/grammars/source.agda.json +33 -203
  17. data/grammars/source.ahk.json +9 -5
  18. data/grammars/source.angelscript.json +1 -1
  19. data/grammars/source.ballerina.json +55 -19
  20. data/grammars/source.c++.json +4 -4
  21. data/grammars/source.c.platform.json +584 -33
  22. data/grammars/source.chapel.json +7 -4
  23. data/grammars/source.csound.json +1 -1
  24. data/grammars/source.css.json +3 -3
  25. data/grammars/source.css.scss.json +164 -15
  26. data/grammars/source.curlrc.json +869 -65
  27. data/grammars/source.d.json +2 -2
  28. data/grammars/source.dart.json +58 -32
  29. data/grammars/source.dircolors.json +137 -0
  30. data/grammars/source.direct-x.json +135 -0
  31. data/grammars/source.ebnf.json +67 -39
  32. data/grammars/source.editorconfig.json +23 -5
  33. data/grammars/source.elixir.json +51 -0
  34. data/grammars/source.elm.json +1 -1
  35. data/grammars/source.emacs.lisp.json +10 -0
  36. data/grammars/source.faust.json +119 -0
  37. data/grammars/source.futhark.json +146 -0
  38. data/grammars/source.gcode.json +166 -8
  39. data/grammars/source.gedcom.json +196 -0
  40. data/grammars/source.generic-db.json +41 -0
  41. data/grammars/source.gfm.blade.json +15 -0
  42. data/grammars/source.gfm.json +1697 -1439
  43. data/grammars/source.gitconfig.json +1 -1
  44. data/grammars/source.hack.json +200 -98
  45. data/grammars/source.haskell.json +58 -11
  46. data/grammars/source.hlsl.json +9 -5
  47. data/grammars/source.hosts.json +40 -0
  48. data/grammars/source.hsig.json +58 -11
  49. data/grammars/source.httpspec.json +1 -1
  50. data/grammars/source.hx.json +9 -5
  51. data/grammars/source.hxml.json +2 -2
  52. data/grammars/source.idris.json +1 -1
  53. data/grammars/source.igor.json +46 -2
  54. data/grammars/source.ini.npmrc.json +311 -0
  55. data/grammars/source.inno.json +133 -0
  56. data/grammars/source.inputrc.json +500 -0
  57. data/grammars/source.isabelle.root.json +1 -1
  58. data/grammars/source.jison.json +3 -0
  59. data/grammars/source.jisonlex.json +3 -0
  60. data/grammars/source.js.json +4 -4
  61. data/grammars/source.julia.json +70 -24
  62. data/grammars/source.kotlin.json +17 -51
  63. data/grammars/source.lcov.json +398 -0
  64. data/grammars/source.lean.json +20 -4
  65. data/grammars/source.lean.markdown.json +2598 -0
  66. data/grammars/source.lex.json +4 -4
  67. data/grammars/source.m2.json +125 -0
  68. data/grammars/source.m4.json +141 -99
  69. data/grammars/source.man-conf.json +47 -35
  70. data/grammars/source.matlab.json +437 -184
  71. data/grammars/source.mcfunction-snapshot.json +21388 -561
  72. data/grammars/source.mcfunction.json +55 -5
  73. data/grammars/source.meson.json +1 -1
  74. data/grammars/source.mlir.json +37 -317
  75. data/grammars/source.modula-3.json +10 -0
  76. data/grammars/source.msl.json +755 -0
  77. data/grammars/source.nasl.json +155 -0
  78. data/grammars/source.neon.json +381 -0
  79. data/grammars/source.nextflow.json +2 -2
  80. data/grammars/source.objc.platform.json +493 -35
  81. data/grammars/source.odin-ehr.json +806 -0
  82. data/grammars/source.odin.json +402 -0
  83. data/grammars/source.openbsd-pkg.contents.json +128 -0
  84. data/grammars/source.opts.json +12 -2
  85. data/grammars/source.perl6fe.json +1 -1
  86. data/grammars/source.postscript.json +358 -103
  87. data/grammars/source.prisma.json +435 -0
  88. data/grammars/source.purescript.json +29 -2
  89. data/grammars/source.python.json +52 -0
  90. data/grammars/source.q.json +150 -63
  91. data/grammars/source.qasm.json +66 -0
  92. data/grammars/source.ql.json +1408 -0
  93. data/grammars/source.r.json +4 -4
  94. data/grammars/source.reason.json +28 -16
  95. data/grammars/source.rego.json +124 -0
  96. data/grammars/source.sass.json +158 -3
  97. data/grammars/source.scala.json +53 -18
  98. data/grammars/source.sieve.json +383 -0
  99. data/grammars/source.solidity.json +1 -1
  100. data/grammars/source.ssh-config.json +1 -14
  101. data/grammars/source.swift.json +162 -2
  102. data/grammars/source.sy.json +2088 -183
  103. data/grammars/source.tags.json +266 -0
  104. data/grammars/source.terraform.json +576 -132
  105. data/grammars/source.tnsaudit.json +256 -0
  106. data/grammars/source.ts.json +246 -70
  107. data/grammars/source.tsx.json +247 -71
  108. data/grammars/source.v.json +587 -761
  109. data/grammars/source.vim-snippet.json +645 -0
  110. data/grammars/source.viml.json +6 -6
  111. data/grammars/source.webassembly.json +10 -0
  112. data/grammars/source.webidl.json +8 -0
  113. data/grammars/source.wgetrc.json +1640 -0
  114. data/grammars/source.wsd.json +781 -0
  115. data/grammars/source.x86.json +7 -3
  116. data/grammars/source.zig.json +231 -360
  117. data/grammars/text.dfy.dafny.json +188 -0
  118. data/grammars/text.html.php.blade.json +535 -528
  119. data/grammars/text.html.riot.json +788 -0
  120. data/grammars/text.muse.json +1471 -0
  121. data/grammars/text.openbsd-pkg.desc.json +78 -0
  122. data/grammars/text.roff.json +49 -1
  123. data/grammars/text.sfd.json +21 -0
  124. data/grammars/text.tex.latex.haskell.json +58 -11
  125. data/grammars/text.vim-help.json +383 -0
  126. data/grammars/text.xml.svg.json +8 -2
  127. data/grammars/version +1 -1
  128. data/lib/linguist/VERSION +1 -1
  129. data/lib/linguist/blob_helper.rb +4 -2
  130. data/lib/linguist/file_blob.rb +1 -1
  131. data/lib/linguist/generated.rb +96 -28
  132. data/lib/linguist/heuristics.yml +64 -4
  133. data/lib/linguist/languages.json +1 -1
  134. data/lib/linguist/languages.yml +408 -49
  135. data/lib/linguist/lazy_blob.rb +10 -10
  136. data/lib/linguist/linguist.bundle +0 -0
  137. data/lib/linguist/samples.json +48129 -31562
  138. data/lib/linguist/shebang.rb +5 -3
  139. data/lib/linguist/vendor.yml +71 -60
  140. metadata +48 -17
  141. data/grammars/source.LS.json +0 -85
  142. data/grammars/source.MCPOST.json +0 -54
  143. data/grammars/source.MOD.json +0 -55
  144. data/grammars/source.apt.json +0 -18
  145. data/grammars/source.jlex.json +0 -322
  146. data/grammars/source.yaml-ext.json +0 -324
  147. data/grammars/text.html.abl.json +0 -70
@@ -42,6 +42,16 @@
42
42
  }
43
43
  ]
44
44
  },
45
+ {
46
+ "name": "keyword.control.assert.cm3_specific.modula-3",
47
+ "begin": "\u003c\\*\\s*ASSERT\\b",
48
+ "end": "\\*\u003e",
49
+ "patterns": [
50
+ {
51
+ "include": "#pragma"
52
+ }
53
+ ]
54
+ },
45
55
  {
46
56
  "include": "#comment"
47
57
  },
@@ -0,0 +1,755 @@
1
+ {
2
+ "scopeName": "source.msl",
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.msl",
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.msl"
38
+ },
39
+ "2": {
40
+ "name": "storage.modifier.alias.msl"
41
+ },
42
+ "3": {
43
+ "name": "entity.name.function.msl"
44
+ }
45
+ }
46
+ }
47
+ ]
48
+ },
49
+ "calc_content": {
50
+ "patterns": [
51
+ {
52
+ "name": "keyword.operator.arithmetic.msl",
53
+ "match": "[+\\-*/%^]"
54
+ },
55
+ {
56
+ "name": "meta.arithmetic.msl",
57
+ "begin": "\\(",
58
+ "end": "\\)",
59
+ "patterns": [
60
+ {
61
+ "include": "#parameters"
62
+ },
63
+ {
64
+ "include": "#calc_content"
65
+ }
66
+ ]
67
+ }
68
+ ]
69
+ },
70
+ "code_block": {
71
+ "patterns": [
72
+ {
73
+ "name": "meta.code.block.msl",
74
+ "begin": "{",
75
+ "end": "}",
76
+ "patterns": [
77
+ {
78
+ "include": "#code_content"
79
+ }
80
+ ]
81
+ }
82
+ ]
83
+ },
84
+ "code_content": {
85
+ "patterns": [
86
+ {
87
+ "include": "#comments"
88
+ },
89
+ {
90
+ "include": "#variables"
91
+ },
92
+ {
93
+ "include": "#identifiers"
94
+ },
95
+ {
96
+ "include": "#conditionals"
97
+ },
98
+ {
99
+ "include": "#commands"
100
+ },
101
+ {
102
+ "include": "#code_block"
103
+ }
104
+ ]
105
+ },
106
+ "commands": {
107
+ "patterns": [
108
+ {
109
+ "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)",
110
+ "end": "(?=\\z|\\x20+\\|\\x20+[^\\x20]|\\x20}|$)",
111
+ "patterns": [
112
+ {
113
+ "include": "#switches"
114
+ },
115
+ {
116
+ "include": "#parameters"
117
+ }
118
+ ],
119
+ "beginCaptures": {
120
+ "1": {
121
+ "name": "keyword.other.command.symbol.msl"
122
+ },
123
+ "2": {
124
+ "name": "keyword.other.command.symbol.msl"
125
+ },
126
+ "3": {
127
+ "name": "keyword.control.command.msl"
128
+ },
129
+ "4": {
130
+ "name": "support.variable.name.msl"
131
+ }
132
+ }
133
+ },
134
+ {
135
+ "name": "meta.cmd.msl",
136
+ "begin": "(?i)(?:\\x20+\\|\\x20+|(?\u003c=else\\x20)|^\\x20*|\\)|\\G)\\x20*(?!\\|\\|\\x20)(\\/+)?([!|.]{1,2})?(?:(?![{};%\u0026$:]|if|else(?:if)?|while)([^\\s]+))",
137
+ "end": "(?=\\z|\\x20\\|\\x20[^\\x20]|\\x20}|$)",
138
+ "patterns": [
139
+ {
140
+ "include": "#switches"
141
+ },
142
+ {
143
+ "include": "#parameters"
144
+ }
145
+ ],
146
+ "beginCaptures": {
147
+ "1": {
148
+ "name": "keyword.other.command.symbol.msl"
149
+ },
150
+ "2": {
151
+ "name": "keyword.other.command.symbol.msl"
152
+ },
153
+ "3": {
154
+ "name": "support.function.name.msl"
155
+ }
156
+ }
157
+ }
158
+ ]
159
+ },
160
+ "comment_block": {
161
+ "patterns": [
162
+ {
163
+ "name": "comment.block.msl",
164
+ "begin": "^(?:\\x20*)\\/\\*",
165
+ "end": "^(?:\\x20*)\\*\\/$"
166
+ }
167
+ ]
168
+ },
169
+ "comment_documentation": {
170
+ "patterns": [
171
+ {
172
+ "name": "comment.block.documentation.msl",
173
+ "begin": "^(?:\\x20*)(\\/\\*\\*)$",
174
+ "end": "^(?:\\x20*)\\*\\/$",
175
+ "patterns": [
176
+ {
177
+ "include": "#documentation_block"
178
+ }
179
+ ]
180
+ }
181
+ ]
182
+ },
183
+ "comment_line": {
184
+ "patterns": [
185
+ {
186
+ "name": "comment.line.semicolon.msl",
187
+ "begin": "(?\u003c=^|\\x20\\|\\x20|\\G)(?:\\x20*);",
188
+ "end": "(?=\\z|\\x20+\\|\\x20+[^\\s]|\\x20}|$)"
189
+ }
190
+ ]
191
+ },
192
+ "comments": {
193
+ "patterns": [
194
+ {
195
+ "include": "#comment_documentation"
196
+ },
197
+ {
198
+ "include": "#comment_block"
199
+ },
200
+ {
201
+ "include": "#comment_line"
202
+ }
203
+ ]
204
+ },
205
+ "conditionals": {
206
+ "patterns": [
207
+ {
208
+ "name": "meta.conditional.msl",
209
+ "begin": "(?i)(?:(?\u003c=\\x20\\|\\x20|^|\\G)\\x20*(if|elseif|while)|(?:(?\u003c=\\))\\x20+(\u0026\u0026|\\|\\|)))\\x20+(?=\\()",
210
+ "end": "(?=\\)(?:\\x20|$))",
211
+ "patterns": [
212
+ {
213
+ "include": "#conditionals_content"
214
+ },
215
+ {
216
+ "include": "#parameters"
217
+ }
218
+ ],
219
+ "beginCaptures": {
220
+ "1": {
221
+ "name": "keyword.control.conditional.msl"
222
+ },
223
+ "2": {
224
+ "name": "keyword.control.conditional.msl"
225
+ }
226
+ }
227
+ },
228
+ {
229
+ "name": "keyword.control.conditional.msl",
230
+ "match": "(?i)(?\u003c=\\x20\\|\\x20|^)\\x20*(else)\\b"
231
+ }
232
+ ]
233
+ },
234
+ "conditionals_content": {
235
+ "patterns": [
236
+ {
237
+ "name": "keyword.operator.msl",
238
+ "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))"
239
+ },
240
+ {
241
+ "include": "#constants"
242
+ }
243
+ ]
244
+ },
245
+ "constants": {
246
+ "patterns": [
247
+ {
248
+ "name": "constant.numeric.msl",
249
+ "match": "(?\u003c=\\x20|^|\\(|,)-?\\d+(\\.\\d+)?(?=\\x20|$|\\)|,)"
250
+ }
251
+ ]
252
+ },
253
+ "dialog": {
254
+ "patterns": [
255
+ {
256
+ "name": "meta.dialog.code.msl",
257
+ "begin": "(?i)^(dialog)\\x20+(?:(-l)\\x20+)?(?!-l)([^\\s]+)\\s*(?={)",
258
+ "end": "(?\u003c=}$)",
259
+ "patterns": [
260
+ {
261
+ "include": "#dialog_content"
262
+ }
263
+ ],
264
+ "beginCaptures": {
265
+ "1": {
266
+ "name": "storage.type.dialog.msl"
267
+ },
268
+ "2": {
269
+ "name": "storage.modifier.dialog.msl"
270
+ },
271
+ "3": {
272
+ "name": "entity.name.section.msl"
273
+ }
274
+ }
275
+ }
276
+ ]
277
+ },
278
+ "dialog_content": {
279
+ "patterns": [
280
+ {
281
+ "include": "#comments"
282
+ },
283
+ {
284
+ "contentName": "string.quoted.double.control.msl",
285
+ "begin": "(?i)^\\x20*(title|icon|size|option|text|edit|button|check|radio|box|scroll|list|combo|icon|link|tab|menu|item)\\x20+",
286
+ "end": "(?\u003c=$)",
287
+ "patterns": [
288
+ {
289
+ "include": "#parameters"
290
+ }
291
+ ],
292
+ "beginCaptures": {
293
+ "1": {
294
+ "name": "keyword.control.dialog.control.msl"
295
+ }
296
+ }
297
+ }
298
+ ]
299
+ },
300
+ "documentation_block": {
301
+ "patterns": [
302
+ {
303
+ "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",
304
+ "captures": {
305
+ "1": {
306
+ "name": "storage.type.class.msl"
307
+ }
308
+ }
309
+ }
310
+ ]
311
+ },
312
+ "events": {
313
+ "patterns": [
314
+ {
315
+ "name": "meta.event.code.msl",
316
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:(?:action|notice|(?:client)?text):[^:]+:[^:]+:)\\s*",
317
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
318
+ "patterns": [
319
+ {
320
+ "include": "#code_content"
321
+ }
322
+ ],
323
+ "beginCaptures": {
324
+ "1": {
325
+ "name": "entity.name.type.event.msl"
326
+ }
327
+ }
328
+ },
329
+ {
330
+ "name": "meta.event.code.msl",
331
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:(?:active|input|tabcomp|mscroll):(?:\\*|#[^:]*|\\?|=|!|@[^:]*):)\\s*",
332
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
333
+ "patterns": [
334
+ {
335
+ "include": "#code_content"
336
+ }
337
+ ],
338
+ "beginCaptures": {
339
+ "1": {
340
+ "name": "entity.name.type.event.msl"
341
+ }
342
+ }
343
+ },
344
+ {
345
+ "name": "meta.event.code.msl",
346
+ "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*",
347
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
348
+ "patterns": [
349
+ {
350
+ "include": "#code_content"
351
+ }
352
+ ],
353
+ "beginCaptures": {
354
+ "1": {
355
+ "name": "entity.name.type.event.msl"
356
+ }
357
+ }
358
+ },
359
+ {
360
+ "name": "meta.event.code.msl",
361
+ "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*",
362
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
363
+ "patterns": [
364
+ {
365
+ "include": "#code_content"
366
+ }
367
+ ],
368
+ "beginCaptures": {
369
+ "1": {
370
+ "name": "entity.name.type.event.msl"
371
+ }
372
+ }
373
+ },
374
+ {
375
+ "name": "meta.event.code.msl",
376
+ "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*",
377
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
378
+ "patterns": [
379
+ {
380
+ "include": "#code_content"
381
+ }
382
+ ],
383
+ "beginCaptures": {
384
+ "1": {
385
+ "name": "entity.name.type.event.msl"
386
+ }
387
+ }
388
+ },
389
+ {
390
+ "name": "meta.event.code.msl",
391
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:(?:close|open):(?:\\*|\\?|=|!|@[^:]*):)\\s*",
392
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
393
+ "patterns": [
394
+ {
395
+ "include": "#code_content"
396
+ }
397
+ ],
398
+ "beginCaptures": {
399
+ "1": {
400
+ "name": "entity.name.type.event.msl"
401
+ }
402
+ }
403
+ },
404
+ {
405
+ "name": "meta.event.code.msl",
406
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:dccserver:(?:chat|send|fserve):)\\s*",
407
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
408
+ "patterns": [
409
+ {
410
+ "include": "#code_content"
411
+ }
412
+ ],
413
+ "beginCaptures": {
414
+ "1": {
415
+ "name": "entity.name.type.event.msl"
416
+ }
417
+ }
418
+ },
419
+ {
420
+ "name": "meta.event.code.msl",
421
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:dialog:[^:]+:(?:init|close|edit|sclick|dclick|menu|scroll|mouse|rclick|drop|\\*):[\\d\\-,\\*]+:)\\s*",
422
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
423
+ "patterns": [
424
+ {
425
+ "include": "#code_content"
426
+ }
427
+ ],
428
+ "beginCaptures": {
429
+ "1": {
430
+ "name": "entity.name.type.event.msl"
431
+ }
432
+ }
433
+ },
434
+ {
435
+ "name": "meta.event.code.msl",
436
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:hotlink:[^:]+:(?:\\*|#[^:]*|\\?|=|!|@[^:]*):)\\s*",
437
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
438
+ "patterns": [
439
+ {
440
+ "include": "#code_content"
441
+ }
442
+ ],
443
+ "beginCaptures": {
444
+ "1": {
445
+ "name": "entity.name.type.event.msl"
446
+ }
447
+ }
448
+ },
449
+ {
450
+ "name": "meta.event.code.msl",
451
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:(?:key(?:down|up)|char):(?:\\*|@[^:]*):(?:\\*|\\d+(?:,\\d+)*):)\\s*",
452
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
453
+ "patterns": [
454
+ {
455
+ "include": "#code_content"
456
+ }
457
+ ],
458
+ "beginCaptures": {
459
+ "1": {
460
+ "name": "entity.name.type.event.msl"
461
+ }
462
+ }
463
+ },
464
+ {
465
+ "name": "meta.event.code.msl",
466
+ "begin": "^(?i)(on\\x20+(?:me:)?[^:\\s]+:parseline:(?:\\*|in|out):[^:]+:)\\s*",
467
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
468
+ "patterns": [
469
+ {
470
+ "include": "#code_content"
471
+ }
472
+ ],
473
+ "beginCaptures": {
474
+ "1": {
475
+ "name": "entity.name.type.event.msl"
476
+ }
477
+ }
478
+ },
479
+ {
480
+ "name": "meta.event.code.msl",
481
+ "begin": "^(?i)(raw\\x20+[^:\\s]+:[^:]+:)\\s*",
482
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
483
+ "patterns": [
484
+ {
485
+ "include": "#code_content"
486
+ }
487
+ ],
488
+ "beginCaptures": {
489
+ "1": {
490
+ "name": "entity.name.type.event.msl"
491
+ }
492
+ }
493
+ },
494
+ {
495
+ "name": "meta.event.code.msl",
496
+ "begin": "^(?i)(ctcp\\x20+[^:\\s]+:[^:]+:(?:\\*|#.*|\\?):)\\s*",
497
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|(?\u003c=}$)",
498
+ "patterns": [
499
+ {
500
+ "include": "#code_content"
501
+ }
502
+ ],
503
+ "beginCaptures": {
504
+ "1": {
505
+ "name": "entity.name.type.event.msl"
506
+ }
507
+ }
508
+ }
509
+ ]
510
+ },
511
+ "group": {
512
+ "patterns": [
513
+ {
514
+ "name": "keyword.other.groupname.msl",
515
+ "match": "(?i)^#[^\\s]+ (on|off|end)(?:\\b)"
516
+ }
517
+ ]
518
+ },
519
+ "identifiers": {
520
+ "patterns": [
521
+ {
522
+ "include": "#identifiers_params"
523
+ },
524
+ {
525
+ "include": "#identifiers_no_params"
526
+ }
527
+ ]
528
+ },
529
+ "identifiers_no_params": {
530
+ "patterns": [
531
+ {
532
+ "name": "keyword.other.identifier.msl",
533
+ "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|\\)|,)"
534
+ },
535
+ {
536
+ "match": "(?\u003c=\\s|\\(|\\,|\\.|^)(\\$\\$?~?(?:\\?(?:[^\\s=]+)?|s?dir|hfile))(?:(=)(\"(?:[^\"])*\"))?(?=\\s|\\)|,)",
537
+ "captures": {
538
+ "1": {
539
+ "name": "keyword.other.identifier.msl"
540
+ },
541
+ "2": {
542
+ "name": "keyword.operator.msl"
543
+ },
544
+ "3": {
545
+ "name": "string.quoted.double.msl"
546
+ }
547
+ }
548
+ },
549
+ {
550
+ "name": "keyword.other.identifier.msl",
551
+ "match": "(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\=\\$\\$?~?nick)(?=\\b)"
552
+ },
553
+ {
554
+ "name": "support.function.name.msl",
555
+ "match": "(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\$\\$?(?!\\x21)[^\\s(),]+)(?=\\b)"
556
+ }
557
+ ]
558
+ },
559
+ "identifiers_params": {
560
+ "patterns": [
561
+ {
562
+ "begin": "(?i)(?\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)?|egml(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))\\(",
563
+ "end": "(?i)\\)(?:\\.([^\\s|\\)|,]+))?",
564
+ "patterns": [
565
+ {
566
+ "include": "#parameters"
567
+ }
568
+ ],
569
+ "beginCaptures": {
570
+ "1": {
571
+ "name": "keyword.other.identifier.msl"
572
+ }
573
+ },
574
+ "endCaptures": {
575
+ "1": {
576
+ "name": "keyword.other.identifier.property.msl"
577
+ }
578
+ }
579
+ },
580
+ {
581
+ "begin": "(?i)(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\$\\$?~?calc)\\(",
582
+ "end": "\\)",
583
+ "patterns": [
584
+ {
585
+ "include": "#parameters"
586
+ },
587
+ {
588
+ "include": "#calc_content"
589
+ }
590
+ ],
591
+ "beginCaptures": {
592
+ "1": {
593
+ "name": "keyword.other.identifier.msl"
594
+ }
595
+ }
596
+ },
597
+ {
598
+ "begin": "(?i)(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\$\\$?~?iif)\\(",
599
+ "end": "\\)",
600
+ "patterns": [
601
+ {
602
+ "include": "#conditionals_content"
603
+ },
604
+ {
605
+ "include": "#parameters"
606
+ }
607
+ ],
608
+ "beginCaptures": {
609
+ "1": {
610
+ "name": "keyword.other.identifier.msl"
611
+ }
612
+ }
613
+ },
614
+ {
615
+ "begin": "(?i)(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\$\\$?~?reg(?:ex|sub(?:ex)?))\\(",
616
+ "end": "\\)",
617
+ "patterns": [
618
+ {
619
+ "match": "(\\/(?:(?!\\/[gimsxAEDUuXSF]+?\\)).)*\\/([gimsxAEDUuXSF]+)?)",
620
+ "captures": {
621
+ "1": {
622
+ "name": "string.regexp.msl"
623
+ }
624
+ }
625
+ },
626
+ {
627
+ "include": "#parameters"
628
+ }
629
+ ],
630
+ "beginCaptures": {
631
+ "1": {
632
+ "name": "keyword.other.identifier.msl"
633
+ }
634
+ }
635
+ },
636
+ {
637
+ "begin": "(?\u003c=\\s|\\(!|\\(|\\,|\\.|^)(\\$\\$?~?[^\\s(),]+)\\(",
638
+ "end": "(?i)\\)(?:\\.([^\\s|\\)|,]+))?",
639
+ "patterns": [
640
+ {
641
+ "include": "#parameters"
642
+ }
643
+ ],
644
+ "beginCaptures": {
645
+ "1": {
646
+ "name": "support.function.name.msl"
647
+ }
648
+ },
649
+ "endCaptures": {
650
+ "1": {
651
+ "name": "keyword.other.identifier.property.msl"
652
+ }
653
+ }
654
+ }
655
+ ]
656
+ },
657
+ "menu": {
658
+ "patterns": [
659
+ {
660
+ "name": "meta.menu.code.msl",
661
+ "begin": "(?i)^(menu)\\x20+((?:status|channel|query|nicklist|menubar|(?:channel)?link|@[^\\x20,]+|\\*)(?:,(?:status|channel|query|nicklist|menubar|(?:channel)?link|@[^\\x20,]+))*|\\*)\\x20+{",
662
+ "end": "(?i)(?=\\z|(?:^(?:on|raw|ctcp|dialog|\\#[^\\s]+|alias|menu)\\b))|}$",
663
+ "patterns": [
664
+ {
665
+ "include": "#menu_content"
666
+ }
667
+ ],
668
+ "beginCaptures": {
669
+ "1": {
670
+ "name": "storage.type.menu.msl"
671
+ },
672
+ "2": {
673
+ "name": "storage.modifier.function.msl"
674
+ }
675
+ }
676
+ }
677
+ ]
678
+ },
679
+ "menu_content": {
680
+ "patterns": [
681
+ {
682
+ "include": "#comments"
683
+ },
684
+ {
685
+ "include": "#parameters"
686
+ },
687
+ {
688
+ "begin": "(?:^\\s*|\\G)\\x20*((?:mouse|(?:s|d(?:r|m)?|u|r|lb|m)click)|leave|drop)(?:\\x20*:\\x20*)?",
689
+ "end": "(?=\\z|\\x20}|$)",
690
+ "patterns": [
691
+ {
692
+ "include": "#code_content"
693
+ }
694
+ ],
695
+ "beginCaptures": {
696
+ "1": {
697
+ "name": "keyword.other.menu.item.msl"
698
+ }
699
+ }
700
+ },
701
+ {
702
+ "begin": "^\\x20*(?!$)",
703
+ "end": "(?=\\z|\\x20}|$)",
704
+ "patterns": [
705
+ {
706
+ "include": "#parameters"
707
+ },
708
+ {
709
+ "begin": "(?\u003c=:|{)",
710
+ "end": "(?=\\z|\\x20}|$)",
711
+ "patterns": [
712
+ {
713
+ "include": "#code_content"
714
+ }
715
+ ]
716
+ }
717
+ ]
718
+ }
719
+ ]
720
+ },
721
+ "parameters": {
722
+ "patterns": [
723
+ {
724
+ "include": "#variables"
725
+ },
726
+ {
727
+ "include": "#identifiers"
728
+ },
729
+ {
730
+ "include": "#constants"
731
+ }
732
+ ]
733
+ },
734
+ "switches": {
735
+ "patterns": [
736
+ {
737
+ "name": "keyword.other.switch.msl",
738
+ "match": "(?\u003c=\\x20)[-+][[:alnum:]]+(?=\\s)"
739
+ }
740
+ ]
741
+ },
742
+ "variables": {
743
+ "patterns": [
744
+ {
745
+ "name": "variable.other.normal.msl",
746
+ "match": "(?\u003c![^(,\\x20!])(%)[^\\x20),]+"
747
+ },
748
+ {
749
+ "name": "variable.other.binary.msl",
750
+ "match": "(?\u003c![^(,\\x20!])(\u0026)[^\\x20),]+"
751
+ }
752
+ ]
753
+ }
754
+ }
755
+ }