github-linguist 4.8.18 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/hint.haskell.json +11 -8
  3. data/grammars/hint.message.haskell.json +11 -8
  4. data/grammars/hint.type.haskell.json +11 -8
  5. data/grammars/source.abnf.json +20 -9
  6. data/grammars/source.ahk.json +1 -1
  7. data/grammars/source.bsl.json +1 -1
  8. data/grammars/source.c.json +0 -4
  9. data/grammars/source.c.platform.json +93 -14
  10. data/grammars/source.coffee.json +2 -2
  11. data/grammars/source.cs.json +29 -5
  12. data/grammars/source.csound-score.json +57 -30
  13. data/grammars/source.csound.json +44 -4
  14. data/grammars/source.dm.json +1 -1
  15. data/grammars/source.haskell.json +11 -8
  16. data/grammars/source.js.json +116 -62
  17. data/grammars/source.lean.json +1 -1
  18. data/grammars/source.llvm.json +2 -2
  19. data/grammars/source.mask.json +27 -1
  20. data/grammars/source.objc.platform.json +57 -14
  21. data/grammars/source.perl.json +1 -1
  22. data/grammars/source.perl6fe.json +165 -54
  23. data/grammars/source.pony.json +1 -1
  24. data/grammars/source.python.json +2061 -289
  25. data/grammars/source.rascal.json +3 -4
  26. data/grammars/source.regexp.python.json +34 -4
  27. data/grammars/source.sdbl.json +6 -2
  28. data/grammars/source.swift.json +182 -58
  29. data/grammars/source.viml.json +1 -1
  30. data/grammars/source.yaml.json +2 -0
  31. data/grammars/text.html.handlebars.json +3 -3
  32. data/grammars/text.html.php.json +2 -2
  33. data/grammars/text.html.vue.json +42 -1
  34. data/grammars/text.tex.latex.haskell.json +11 -8
  35. data/lib/linguist.rb +2 -1
  36. data/lib/linguist/language.rb +20 -69
  37. data/lib/linguist/languages.json +1 -1
  38. data/lib/linguist/languages.yml +95 -119
  39. data/lib/linguist/popular.yml +1 -1
  40. data/lib/linguist/samples.json +2330 -2330
  41. data/lib/linguist/strategy/extension.rb +10 -0
  42. data/lib/linguist/strategy/filename.rb +3 -2
  43. data/lib/linguist/version.rb +1 -1
  44. metadata +3 -3
  45. data/grammars/source.js.embedded.html.json +0 -10
@@ -200,7 +200,7 @@
200
200
  "name": "punctuation.definition.destructuring.begin.bracket.curly.coffee"
201
201
  }
202
202
  },
203
- "end": "(})(?=[\\s\\]}]*=)",
203
+ "end": "(})",
204
204
  "endCaptures": {
205
205
  "1": {
206
206
  "name": "punctuation.definition.destructuring.end.bracket.curly.coffee"
@@ -223,7 +223,7 @@
223
223
  "name": "punctuation.definition.destructuring.begin.bracket.square.coffee"
224
224
  }
225
225
  },
226
- "end": "(\\])(?=[\\s\\]}]*=)",
226
+ "end": "(\\])",
227
227
  "endCaptures": {
228
228
  "1": {
229
229
  "name": "punctuation.definition.destructuring.end.bracket.square.coffee"
@@ -104,7 +104,25 @@
104
104
  "builtinTypes": {
105
105
  "patterns": [
106
106
  {
107
- "match": "\\b(bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|class|struct|enum|interface|dynamic)\\b",
107
+ "match": "\\b(bool|byte|sbyte|char|decimal|double|enum|float|int|uint|long|ulong|short|ushort|)\\s*(\\?|\\*|\\[\\s*\\])?\\s",
108
+ "name": "storage.value.type.cs",
109
+ "captures": {
110
+ "2": {
111
+ "name": "punctuation.storage.type.modifier.cs"
112
+ }
113
+ }
114
+ },
115
+ {
116
+ "match": "\\b(dynamic|object|string)\\s*(\\*|\\[\\s*\\])?\\s",
117
+ "name": "storage.reference.type.cs",
118
+ "captures": {
119
+ "2": {
120
+ "name": "punctuation.storage.type.modifier.cs"
121
+ }
122
+ }
123
+ },
124
+ {
125
+ "match": "\\b(void|class|struct|interface)\\s",
108
126
  "name": "storage.type.cs"
109
127
  }
110
128
  ]
@@ -251,7 +269,7 @@
251
269
  "name": "constant.language.cs"
252
270
  },
253
271
  {
254
- "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b",
272
+ "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(?i:f|d|m|u|l|ul|lu)?\\b",
255
273
  "name": "constant.numeric.cs"
256
274
  },
257
275
  {
@@ -330,7 +348,7 @@
330
348
  "name": "storage.type.var.cs"
331
349
  },
332
350
  {
333
- "match": "[@]\\b(var|event|delegate|add|remove|set|get|value|new|is|as|using|checked|unchecked|typeof|sizeof |override|readonly|stackalloc|from|where|select|group|into|orderby|join|let|on|equals|by|ascending|descending |if|else|while|for|foreach|in|do|return|continue|break|switch|case|default|goto|throw|try|catch|finally|lock |yield|await|nameof|when|alias|global)\\b",
351
+ "match": "[@]\\b(var|event|delegate|add|remove|set|get|value|new|is|as|using|checked|unchecked|typeof|sizeof|override|readonly|stackalloc|from|where|select|group|into|orderby|join|let|on|equals|by|ascending|descending|if|else|while|for|foreach|in|do|return|continue|break|switch|case|default|goto|throw|try|catch|finally|lock|yield|await|nameof|when|alias|global)\\b",
334
352
  "name": "meta.class.body.cs"
335
353
  }
336
354
  ]
@@ -400,6 +418,9 @@
400
418
  },
401
419
  {
402
420
  "include": "#comments"
421
+ },
422
+ {
423
+ "include": "#builtinTypes"
403
424
  }
404
425
  ]
405
426
  },
@@ -555,6 +576,9 @@
555
576
  },
556
577
  {
557
578
  "include": "#block"
579
+ },
580
+ {
581
+ "include": "#builtinTypes"
558
582
  }
559
583
  ]
560
584
  },
@@ -563,10 +587,10 @@
563
587
  {
564
588
  "captures": {
565
589
  "1": {
566
- "name": "directive.preprocessor.cs"
590
+ "name": "meta.directive.preprocessor.cs"
567
591
  },
568
592
  "3": {
569
- "name": "entity.name.function.preprocessor.cs"
593
+ "name": "entity.name.preprocessor.cs"
570
594
  }
571
595
  },
572
596
  "match": "^\\s*(#\\s*(if|else|elif|endif|define|undef|warning|error|line|pragma|region|endregion))\\b\\s*(.*?)(?=$|\\/\\/)",
@@ -12,54 +12,81 @@
12
12
  "include": "source.csound#commentsAndMacroCalls"
13
13
  },
14
14
  {
15
- "name": "meta.statement.csound-score",
16
- "begin": "([abefimq-tv-z]|[nN][pP]?)|([{}])",
15
+ "name": "keyword.control.csound-score",
16
+ "match": "[abefimq-tv-z]|[nN][pP]?"
17
+ },
18
+ {
19
+ "include": "source.csound#numbers"
20
+ },
21
+ {
22
+ "name": "string.quoted.csound-score",
23
+ "begin": "\"",
17
24
  "beginCaptures": {
18
- "1": {
19
- "name": "keyword.control.csound-score"
20
- },
21
- "2": {
22
- "name": "punctuation.csound-score"
25
+ "0": {
26
+ "name": "punctuation.definition.string.begin.csound-score"
27
+ }
28
+ },
29
+ "end": "\"",
30
+ "endCaptures": {
31
+ "0": {
32
+ "name": "punctuation.definition.string.end.csound-score"
23
33
  }
24
34
  },
25
- "end": "\\n",
26
35
  "patterns": [
27
36
  {
28
- "include": "source.csound#commentsAndMacroCalls"
29
- },
30
- {
31
- "include": "#partialExpressions"
37
+ "include": "source.csound#macroCalls"
32
38
  }
33
39
  ]
34
- }
35
- ],
36
- "repository": {
37
- "partialExpressions": {
40
+ },
41
+ {
42
+ "name": "meta.braced-loop.csound-score",
43
+ "begin": "{",
44
+ "beginCaptures": {
45
+ "0": {
46
+ "name": "punctuation.csound-score"
47
+ }
48
+ },
49
+ "end": "}",
50
+ "endCaptures": {
51
+ "0": {
52
+ "name": "punctuation.csound-score"
53
+ }
54
+ },
38
55
  "patterns": [
39
56
  {
40
- "include": "source.csound#numbers"
41
- },
42
- {
43
- "name": "string.quoted.csound-score",
44
- "begin": "\"",
57
+ "name": "meta.braced-loop-details.csound-score",
58
+ "begin": "\\d+",
45
59
  "beginCaptures": {
46
60
  "0": {
47
- "name": "punctuation.definition.string.begin.csound-score"
48
- }
49
- },
50
- "end": "\"",
51
- "endCaptures": {
52
- "0": {
53
- "name": "punctuation.definition.string.end.csound-score"
61
+ "name": "constant.numeric.integer.decimal.csound-score"
54
62
  }
55
63
  },
64
+ "end": "(?=})",
56
65
  "patterns": [
57
66
  {
58
- "include": "source.csound#macroCalls"
67
+ "name": "meta.braced-loop-macro-name.csound-score",
68
+ "begin": "[A-Z_a-z]\\w*\\b",
69
+ "beginCaptures": {
70
+ "0": {
71
+ "name": "entity.name.function.preprocessor.csound-score"
72
+ }
73
+ },
74
+ "end": "(?=})",
75
+ "patterns": [
76
+ {
77
+ "include": "$self"
78
+ }
79
+ ]
80
+ },
81
+ {
82
+ "include": "#comments"
59
83
  }
60
84
  ]
85
+ },
86
+ {
87
+ "include": "#comments"
61
88
  }
62
89
  ]
63
90
  }
64
- }
91
+ ]
65
92
  }
@@ -197,7 +197,7 @@
197
197
  "patterns": [
198
198
  {
199
199
  "name": "constant.numeric.float.csound",
200
- "match": "(?:\\d+e[+-]?\\d+)|(?:\\d+\\.\\d*|\\d*\\.\\d+)(?:e[+-]?\\d+)?"
200
+ "match": "(?:\\d+[Ee][+-]?\\d+)|(?:\\d+\\.\\d*|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?"
201
201
  },
202
202
  {
203
203
  "name": "constant.numeric.integer.hexadecimal.csound",
@@ -216,7 +216,7 @@
216
216
  },
217
217
  {
218
218
  "name": "variable.other.readwrite.global.csound",
219
- "match": "\\b(?:0dbfs|k(?:r|smps)|nchnls(?:_i)?|sr)\\b"
219
+ "match": "\\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\\b"
220
220
  },
221
221
  {
222
222
  "include": "#numbers"
@@ -404,7 +404,7 @@
404
404
  "match": "\\bp\\d+\\b"
405
405
  },
406
406
  {
407
- "match": "\\b(ATS(?:add(?:(?:nz)?)|bufread|cross|in(?:fo|terpread)|partialtap|read(?:(?:nz)?)|sinnoi)|FL(?:b(?:ox|ut(?:Bank|ton))|c(?:loseButton|o(?:lor(?:(?:2)?)|unt))|execButton|g(?:etsnap|roup(?:(?:(?:E|_e)nd)?))|h(?:ide|vsBox(?:(?:SetValue)?))|joy|k(?:eyIn|nob)|l(?:abel|oadsnap)|mouse|p(?:a(?:ck(?:(?:(?:E|_e)nd)?)|nel(?:(?:(?:E|_e)nd)?))|rintk(?:(?:2)?))|r(?:oller|un)|s(?:avesnap|croll(?:(?:(?:E|_e)nd)?)|et(?:Align|Box|Color(?:(?:2)?)|Font|Position|S(?:ize|napGroup)|Text(?:(?:Color|(?:Siz|Typ)e)?)|Val(?:(?:(?:(?:_)?)i)?)|snap)|how|lid(?:Bnk(?:(?:2(?:(?:Set(?:(?:k)?))?)|GetHandle|Set(?:(?:k)?))?)|er))|t(?:abs(?:(?:(?:E|_e)nd)?)|ext)|update|v(?:alue|keybd|slidBnk(?:(?:2)?))|xyin)|Mixer(?:Clear|GetLevel|Receive|Se(?:nd|tLevel(?:(?:_i)?)))|OSC(?:init|listen|send)|a(?:bs|ctive|ds(?:r|yn(?:(?:t(?:(?:2)?))?))|ftouch|l(?:pass|wayson)|mp(?:db(?:(?:fs)?)|midi(?:(?:d)?))|r(?:eson(?:(?:k)?)|ray)|tone(?:(?:[kx])?))|b(?:a(?:bo|lance|mboo|rmodel)|bcut(?:[ms])|e(?:(?:tara|xpr)nd)|form(?:dec(?:(?:1)?)|enc(?:(?:1)?))|i(?:nit|quad(?:(?:a)?)|rnd)|qrez|u(?:chla|t(?:b(?:[pr])|hp|lp|t(?:er(?:b(?:[pr])|(?:[hl])p)|on))|zz))|c(?:2r|a(?:basa|uchy(?:(?:i)?))|e(?:il|ll|nt(?:(?:roid)?)|ps(?:(?:inv)?))|h(?:an(?:ctrl|ged(?:(?:2)?)|[io])|e(?:byshevpoly|ckbox)|n(?:_(?:[Sak])|clear|export|get|mix|params|set)|uap)|l(?:ear|filt|ip|ocko(?:ff|n))|mplxprod|o(?:m(?:b(?:(?:inv)?)|p(?:ile(?:csd|orc|str)|ress(?:(?:2)?)))|n(?:nect|trol|v(?:(?:l|olv)e))|py(?:a2ftab|f2array)|s(?:(?:h|inv|seg(?:(?:[br])?))?))|p(?:s(?:2pch|midi(?:(?:b|nn)?)|oct|pch|t(?:mid|un(?:(?:i)?))|xpch)|uprc)|r(?:oss(?:2|fm(?:(?:i|pm(?:(?:i)?))?)|pm(?:(?:i)?))|unch)|t(?:lchn|rl(?:14|21|7|init))|userrnd)|d(?:a(?:m|te(?:(?:s)?))|b(?:(?:(?:(?:fs)?)amp)?)|c(?:block(?:(?:2)?)|onv)|e(?:l(?:ay(?:(?:[1krw])?)|tap(?:(?:xw|[3inx])?))|norm)|i(?:ff|rectory|s(?:k(?:grain|in(?:(?:2)?))|p(?:fft|lay)|tort(?:(?:1)?))|vz)|o(?:ppler|wnsamp)|ripwater|u(?:mpk(?:(?:[234])?)|s(?:errnd|t(?:(?:2)?))))|e(?:nvlpx(?:(?:r)?)|phasor|qfil|v(?:alstr|ent(?:(?:_i)?))|x(?:citer|itnow|p(?:(?:curve|on|rand(?:(?:i)?)|seg(?:(?:ba|[abr])?))?)))|f(?:a(?:reylen(?:(?:i)?)|ust(?:audio|c(?:ompile|tl)|gen))|ft(?:(?:inv)?)|i(?:close|l(?:e(?:bit|len|nchnls|peak|s(?:cal|r)|valid)|larray|ter2)|n(?:(?:[ik])?)|open)|l(?:a(?:nger|shtxt)|oo(?:per(?:(?:2)?)|r)|uid(?:AllOut|C(?:C(?:[ik])|ontrol)|Engine|Load|Note|Out|ProgramSelect|SetInterpMethod))|m(?:b(?:3|ell)|metal|percfl|(?:rhod|voic|wurli)e)|o(?:f(?:2|ilter)|l(?:d|low(?:(?:2)?))|scil(?:(?:i)?)|ut(?:(?:ir|[ik])?)|[fg])|print(?:(?:(?:k)?)s)|r(?:a(?:c(?:(?:talnoise)?)|mebuffer)|eeverb)|t(?:c(?:hnls|onv|ps)|free|gen(?:(?:once|tmp)?)|l(?:en|oad(?:(?:k)?)|ptim)|morf|resize(?:(?:i)?)|s(?:a(?:mplebank|ve(?:(?:k)?))|r)))|g(?:a(?:in(?:(?:slider)?)|uss(?:(?:i|trig)?))|buzz|e(?:n(?:array(?:(?:_i)?)|dy(?:(?:[cx])?))|t(?:c(?:fg|ol)|row|seed))|ogobel|ra(?:in(?:(?:[23])?)|nule)|uiro)|h(?:armon(?:(?:[234])?)|df5(?:read|write)|ilbert|rtf(?:e(?:arly|r)|move(?:(?:2)?)|reverb|stat)|sboscil|vs(?:[123]))|i(?:hold|mage(?:create|free|getpixel|load|s(?:ave|etpixel|ize))|n(?:(?:32|ch|it(?:(?:c(?:14|21|7))?)|let(?:kid|[afkv])|rg|s(?:global|remot)|te(?:g|rp)|value|[hoqstxz])?))|j(?:itter(?:(?:2)?)|spline)|ktableseg|l(?:enarray|fo|i(?:mit|n(?:e(?:(?:n(?:(?:r)?)|to)?)|rand|seg(?:(?:[br])?)))|o(?:cs(?:end|ig)|g(?:(?:10|2|btwo|curve)?)|op(?:seg(?:(?:p)?)|(?:[tx])seg)|renz|scil(?:(?:[3x])?)|w(?:pass2|res(?:(?:x)?)))|p(?:f(?:18|orm|reson)|hasor|interp|oscil(?:(?:sa(?:(?:2)?)|[3a])?)|re(?:ad|son)|s(?:hold(?:(?:p)?)|lot))|ua_(?:exec|opdef))|m(?:a(?:ca|dsr|gs|nd(?:(?:[eo])l)|parray(?:(?:_i)?)|rimba|ssign|x(?:_k|a(?:bs(?:(?:accum)?)|ccum|lloc|rray))|[cx])|clock|delay|e(?:dian(?:(?:k)?)|tro)|i(?:d(?:global|i(?:c(?:14|21|7|h(?:annelaftertouch|n)|ontrolchange|trl)|default|filestatus|in|noteo(?:ff|n(?:cps|key|oct|pch))|o(?:n(?:(?:2)?)|ut)|p(?:gm|itchbend|olyaftertouch|rogramchange)|tempo)|remot)|n(?:(?:a(?:bs(?:(?:accum)?)|ccum|rray)|cer)?)|rror)|o(?:d(?:e|matrix)|nitor|og(?:(?:ladder(?:(?:2)?)|vcf(?:(?:2)?))?)|scil)|p(?:3(?:bitrate|in|len|nchnls|s(?:cal(?:(?:_(?:check|load(?:(?:2)?)|play(?:(?:2)?)))?)|r))|ulse)|rtmsg|u(?:ltitap|te)|vc(?:hpf|lpf(?:[1234]))|xadsr)|n(?:chnls_hw|estedap|l(?:alp|filt(?:(?:2)?))|o(?:ise|t(?:eo(?:ff|n(?:(?:dur(?:(?:2)?))?))|num))|r(?:everb|pn)|s(?:amp|t(?:ance|rnum))|trpol)|o(?:ct(?:ave|cps|midi(?:(?:b|nn)?)|pch)|labuffer|sc(?:bnk|il(?:(?:1i|ikt(?:(?:[ps])?)|[13insx])?))|ut(?:(?:32|ch|i(?:at|c(?:(?:14)?)|p(?:at|[bc]))|k(?:at|c(?:(?:14)?)|p(?:at|[bc]))|let(?:kid|[afkv])|q(?:[1234])|rg|s(?:[12])|value|[choqsxz])?))|p(?:a(?:n(?:(?:2)?)|r(?:eq|t(?:2txt|i(?:als|kkel(?:(?:get|s(?:et|ync))?))))|ssign|ulstretch)|c(?:auchy|h(?:bend|midi(?:(?:b|nn)?)|oct)|o(?:nvolve|unt))|d(?:clip|half(?:(?:y)?))|eak|gm(?:(?:assig|ch)n)|h(?:as(?:er(?:[12])|or(?:(?:bnk)?))|s)|i(?:n(?:dex|k(?:er|ish))|tch(?:(?:a(?:c|mdf))?))|l(?:a(?:net|terev)|(?:ltra|u)ck)|o(?:isson|l(?:2rect|y(?:aft|nomial))|p_f|rt(?:(?:k)?)|scil(?:(?:3)?)|w(?:ershape|oftwo)|[pw])|r(?:e(?:alloc|piano)|int(?:(?:_type|f_i|k(?:s2|[2s])|[fks])?)|oduct)|set|t(?:able(?:(?:iw|[3iw])?)|rack)|u(?:sh(?:(?:_f)?)|ts)|v(?:add|bufread|cross|interp|oc|read|s(?:2(?:array|tab)|a(?:dsyn|nal|rp)|b(?:and(?:[pr])|in|lur|uf(?:fer|read(?:(?:2)?)))|c(?:ale|e(?:nt|ps)|ross)|d(?:emix|is(?:kin|p))|envftw|f(?:ilter|r(?:e(?:ad|eze)|omarray)|t(?:[rw])|write)|g(?:ain|endy)|hift|i(?:fd|n(?:(?:fo|it)?))|lock|m(?:aska|ix|o(?:(?:ot|rp)h))|o(?:sc|ut)|pitch|t(?:(?:ana|enci)l)|voc|warp|ynth))|wd|y(?:assign(?:(?:[it])?)|call(?:(?:1(?:[it])|2(?:[it])|3(?:[it])|4(?:[it])|5(?:[it])|6(?:[it])|7(?:[it])|8(?:[it])|ni|[12345678int])?)|e(?:val(?:(?:[it])?)|xec(?:(?:[it])?))|init|l(?:assign(?:(?:[it])?)|call(?:(?:1(?:[it])|2(?:[it])|3(?:[it])|4(?:[it])|5(?:[it])|6(?:[it])|7(?:[it])|8(?:[it])|ni|[12345678int])?)|e(?:val(?:(?:[it])?)|xec(?:(?:[it])?))|run(?:(?:[it])?))|run(?:(?:[it])?)))|q(?:inf|nan)|r(?:2c|and(?:(?:om(?:(?:[hi])?)|[hi])?)|bjeq|e(?:ad(?:clock|fi|k(?:[234s])|sc(?:ore|ratch)|[fk])|ct2pol|init|lease|mo(?:teport|ve)|pluck|s(?:on(?:(?:xk|[krxyz])?)|yn)|verb(?:(?:2|sc)?)|windscore|zzy)|fft|ifft|ms|nd(?:(?:31)?)|ound|spline|tclock)|s(?:16b14|32b14|a(?:mphold|ndpaper)|c(?:a(?:le(?:(?:array)?)|n(?:hammer|table|[su]))|hed(?:kwhen(?:(?:named)?)|ule|when)|oreline(?:(?:_i)?))|e(?:ed|kere|mitone|nse(?:(?:key)?)|qtime(?:(?:2)?)|rial(?:Begin|End|Flush|Print|Read|Write(?:(?:_i)?))|t(?:c(?:(?:o|tr)l)|ksmps|row|scorepos))|f(?:i(?:list|nstr(?:(?:3m|[3m])?))|lo(?:ad|oper)|p(?:assign|l(?:ay(?:(?:3m|[3m])?)|ist)|reset))|h(?:aker|ift(?:in|out))|i(?:gn(?:alflowgraph|um)|n(?:(?:h|inv|syn)?))|l(?:eighbells|i(?:cearray|der(?:16(?:(?:f|table(?:(?:f)?))?)|32(?:(?:f|table(?:(?:f)?))?)|64(?:(?:f|table(?:(?:f)?))?)|8(?:(?:f|table(?:(?:f)?))?)|Kawai)))|nd(?:lo(?:ad|op)|warp(?:(?:st)?))|o(?:ck(?:recv(?:(?:s)?)|send(?:(?:s)?))|und(?:in|out(?:(?:s)?)))|p(?:a(?:ce|t3d(?:(?:[it])?))|dist|ec(?:addm|di(?:ff|sp)|filt|hist|ptrk|s(?:cal|um)|trum)|litrig|rintf(?:(?:k)?)|send)|qrt|t(?:a(?:ck|tevar)|ix|r(?:c(?:at(?:(?:k)?)|har(?:(?:k)?)|mp(?:(?:k)?)|py(?:(?:k)?))|e(?:cv|son)|fromurl|get|index(?:(?:k)?)|l(?:en(?:(?:k)?)|ower(?:(?:k)?))|rindex(?:(?:k)?)|s(?:et|ub(?:(?:k)?))|to(?:(?:[dl])k|[dl])|upper(?:(?:k)?))|send)|u(?:binstr(?:(?:init)?)|m(?:(?:array)?))|vfilter|y(?:nc(?:grain|loop|phasor)|stem(?:(?:_i)?)))|t(?:a(?:b(?:2pvs|_i|ifd|le(?:(?:3kt|copy|filter(?:(?:i)?)|gpw|i(?:copy|gpw|kt|mix|w)|kt|mix|ng|ra|s(?:eg|huffle(?:(?:i)?))|w(?:a|kt)|x(?:kt|seg)|[3iw])?)|morph(?:(?:ak|[ai])?)|play|rec|sum|w(?:(?:_i)?))|mbourine|n(?:h|inv(?:(?:2)?))|[bn])|b(?:0_init|1(?:(?:(?:[012345])?)_init|[012345])|2_init|3_init|4_init|5_init|6_init|7_init|8_init|9_init|vcf|[0123456789])|emp(?:est|o(?:(?:(?:sc|v)al)?))|i(?:me(?:dseq|inst(?:[ks])|[ks])|val)|lineto|one(?:(?:[kx])?)|r(?:a(?:dsyn|n(?:dom|seg(?:(?:[br])?)))|cross|filter|highest|i(?:g(?:ger|seq)|rand)|lowest|mix|s(?:cale|(?:hif|pli)t))|urno(?:ff(?:(?:2)?)|n))|u(?:n(?:irand|wrap)|psamp|r(?:andom|d))|v(?:a(?:ctrol|dd(?:(?:_i|v(?:(?:_i)?))?)|get|lpass|set)|bap(?:(?:16|4move|8move|gmove|lsinit|(?:(?:z)?)move|[48gz])?)|c(?:ella|o(?:(?:2(?:(?:(?:f|i(?:f|ni))t)?)|mb|py(?:(?:_i)?))?))|d(?:el(?:_k|ay(?:(?:x(?:w(?:[qs])|[qsw])|[3kx])?))|ivv(?:(?:_i)?))|e(?:cdelay|loc|xp(?:(?:_i|seg|v(?:(?:_i)?))?))|i(?:b(?:es|r(?:(?:ato)?))|ncr)|l(?:i(?:mit|nseg)|owres)|m(?:ap|irror|ult(?:(?:_i|v(?:(?:_i)?))?))|o(?:ice|sim)|p(?:haseseg|o(?:rt|w(?:(?:_i|v(?:(?:_i)?))?))|voc)|rand(?:[hi])|subv(?:(?:_i)?)|tab(?:le(?:1k|w(?:[aik])|[aik])|w(?:[aik])|[aik])|wrap)|w(?:aveset|eibull|g(?:b(?:ow(?:(?:edbar)?)|rass)|clar|flute|pluck(?:(?:2)?)|uide(?:[12]))|i(?:i(?:connect|data|range|send)|ndow)|r(?:ap|itescratch)|terrain)|x(?:adsr|in|out|scan(?:map|smap|[su])|tratim|yin)|z(?:a(?:cl|kinit|mod|rg|wm|[rw])|filter2|i(?:wm|[rw])|k(?:cl|mod|wm|[rw]))|[Saikp])\\b(?:(\\:)([A-Za-z]))?",
407
+ "match": "\\b(ATS(?:add(?:(?:nz)?)|bufread|cross|in(?:fo|terpread)|partialtap|read(?:(?:nz)?)|sinnoi)|FL(?:b(?:ox|ut(?:Bank|ton))|c(?:loseButton|o(?:lor(?:(?:2)?)|unt))|execButton|g(?:etsnap|roup(?:(?:(?:E|_e)nd)?))|h(?:ide|vsBox(?:(?:SetValue)?))|joy|k(?:eyIn|nob)|l(?:abel|oadsnap)|mouse|p(?:a(?:ck(?:(?:(?:E|_e)nd)?)|nel(?:(?:(?:E|_e)nd)?))|rintk(?:(?:2)?))|r(?:oller|un)|s(?:avesnap|croll(?:(?:(?:E|_e)nd)?)|et(?:Align|Box|Color(?:(?:2)?)|Font|Position|S(?:ize|napGroup)|Text(?:(?:Color|(?:Siz|Typ)e)?)|Val(?:(?:(?:(?:_)?)i)?)|snap)|how|lid(?:Bnk(?:(?:2(?:(?:Set(?:(?:k)?))?)|GetHandle|Set(?:(?:k)?))?)|er))|t(?:abs(?:(?:(?:E|_e)nd)?)|ext)|update|v(?:alue|keybd|slidBnk(?:(?:2)?))|xyin)|Mixer(?:Clear|GetLevel|Receive|Se(?:nd|tLevel(?:(?:_i)?)))|OSC(?:init(?:(?:M)?)|listen|send)|a(?:bs|ctive|ds(?:r|yn(?:(?:t(?:(?:2)?))?))|ftouch|l(?:pass|wayson)|mp(?:db(?:(?:fs)?)|midi(?:(?:d)?))|reson(?:(?:k)?)|tone(?:(?:[kx])?))|b(?:a(?:bo|lance|mboo|rmodel)|bcut(?:[ms])|e(?:(?:tara|xpr)nd)|form(?:(?:de|en)c1)|i(?:nit|quad(?:(?:a)?)|rnd)|qrez|u(?:chla|t(?:b(?:[pr])|hp|lp|t(?:er(?:b(?:[pr])|(?:[hl])p)|on))|zz))|c(?:2r|a(?:basa|uchy(?:(?:i)?))|e(?:il|ll|nt(?:(?:roid)?)|ps(?:(?:inv)?))|h(?:an(?:ctrl|ged(?:(?:2)?)|[io])|e(?:byshevpoly|ckbox)|n(?:_(?:[Sak])|clear|export|get|mix|params|set)|uap)|l(?:ear|filt|ip|ocko(?:ff|n))|mplxprod|o(?:m(?:b(?:(?:inv)?)|p(?:ile(?:csd|orc|str)|ress(?:(?:2)?)))|n(?:nect|trol|v(?:(?:l|olv)e))|py(?:a2ftab|f2array)|s(?:(?:h|inv|seg(?:(?:[br])?))?))|p(?:s(?:2pch|midi(?:(?:b|nn)?)|oct|pch|t(?:mid|un(?:(?:i)?))|xpch)|uprc)|r(?:oss(?:2|fm(?:(?:i|pm(?:(?:i)?))?)|pm(?:(?:i)?))|unch)|t(?:lchn|rl(?:14|21|7|init))|userrnd)|d(?:a(?:m|te(?:(?:s)?))|b(?:(?:(?:(?:fs)?)amp)?)|c(?:block(?:(?:2)?)|onv|t(?:(?:inv)?))|e(?:l(?:ay(?:(?:[1krw])?)|tap(?:(?:xw|[3inx])?))|norm)|i(?:ff|rectory|s(?:k(?:grain|in(?:(?:2)?))|p(?:fft|lay)|tort(?:(?:1)?))|vz)|o(?:ppler|wnsamp)|ripwater|u(?:mpk(?:(?:[234])?)|s(?:errnd|t(?:(?:2)?))))|e(?:nvlpx(?:(?:r)?)|phasor|qfil|v(?:alstr|ent(?:(?:_i)?))|x(?:citer|itnow|p(?:(?:curve|on|rand(?:(?:i)?)|seg(?:(?:ba|[abr])?))?)))|f(?:a(?:reylen(?:(?:i)?)|ust(?:audio|c(?:ompile|tl)|gen))|ft(?:(?:inv)?)|i(?:close|l(?:e(?:bit|len|nchnls|peak|s(?:cal|r)|valid)|larray|ter2)|n(?:(?:[ik])?)|open)|l(?:a(?:nger|shtxt)|oo(?:per(?:(?:2)?)|r)|uid(?:AllOut|C(?:C(?:[ik])|ontrol)|Engine|Load|Note|Out|ProgramSelect|SetInterpMethod))|m(?:b(?:3|ell)|metal|percfl|(?:rhod|voic|wurli)e)|o(?:f(?:2|ilter)|l(?:d|low(?:(?:2)?))|scil(?:(?:i)?)|ut(?:(?:ir|[ik])?)|[fg])|print(?:(?:(?:k)?)s)|r(?:a(?:c(?:(?:talnoise)?)|mebuffer)|eeverb)|t(?:c(?:hnls|onv|ps)|free|gen(?:(?:once|tmp)?)|l(?:en|oad(?:(?:k)?)|ptim)|morf|resize(?:(?:i)?)|s(?:a(?:mplebank|ve(?:(?:k)?))|r)))|g(?:a(?:in(?:(?:slider)?)|uss(?:(?:i|trig)?))|buzz|e(?:n(?:array(?:(?:_i)?)|dy(?:(?:[cx])?))|t(?:c(?:fg|ol)|ftargs|row|seed))|ogobel|ra(?:in(?:(?:[23])?)|nule)|uiro)|h(?:armon(?:(?:[234])?)|df5(?:read|write)|ilbert|rtf(?:early|move(?:(?:2)?)|reverb|stat)|sboscil|vs(?:[123]))|i(?:hold|mage(?:create|free|getpixel|load|s(?:ave|etpixel|ize))|n(?:(?:32|ch|it(?:(?:c(?:14|21|7))?)|let(?:kid|[afkv])|rg|s(?:global|remot)|te(?:g|rp)|value|[hoqstxz])?))|j(?:itter(?:(?:2)?)|spline)|l(?:enarray|fo|i(?:mit|n(?:e(?:(?:n(?:(?:r)?)|to)?)|rand|seg(?:(?:[br])?)))|o(?:cs(?:end|ig)|g(?:(?:10|2|btwo|curve)?)|op(?:seg(?:(?:p)?)|(?:[tx])seg)|renz|scil(?:(?:[3x])?)|w(?:pass2|res(?:(?:x)?)))|p(?:f(?:18|orm|reson)|hasor|interp|oscil(?:(?:sa(?:(?:2)?)|[3a])?)|re(?:ad|son)|s(?:hold(?:(?:p)?)|lot))|ua_(?:exec|ikopcall|opdef))|m(?:a(?:ca|dsr|gs|nd(?:(?:[eo])l)|parray(?:(?:_i)?)|rimba|ssign|x(?:_k|a(?:bs(?:(?:accum)?)|ccum|lloc|rray))|[cx])|clock|delay|e(?:dian(?:(?:k)?)|tro)|fb|i(?:d(?:global|i(?:c(?:14|21|7|h(?:annelaftertouch|n)|ontrolchange|trl)|default|filestatus|in|noteo(?:ff|n(?:cps|key|oct|pch))|o(?:n(?:(?:2)?)|ut)|p(?:gm|itchbend|olyaftertouch|rogramchange)|tempo)|remot)|n(?:(?:a(?:bs(?:(?:accum)?)|ccum|rray)|cer)?)|rror)|o(?:d(?:e|matrix)|nitor|og(?:(?:ladder(?:(?:2)?)|vcf(?:(?:2)?))?)|scil)|p(?:3(?:bitrate|in|len|nchnls|s(?:cal|r))|ulse)|rtmsg|u(?:ltitap|te)|vc(?:hpf|lpf(?:[1234]))|xadsr)|n(?:chnls_hw|estedap|l(?:alp|filt(?:(?:2)?))|o(?:ise|t(?:eo(?:ff|n(?:(?:dur(?:(?:2)?))?))|num))|r(?:everb|pn)|s(?:amp|t(?:ance|rnum))|trpol|xtpow2)|o(?:ct(?:ave|cps|midi(?:(?:b|nn)?)|pch)|labuffer|sc(?:bnk|il(?:(?:1i|ikt(?:(?:[ps])?)|[13insx])?))|ut(?:(?:32|ch|i(?:at|c(?:(?:14)?)|p(?:at|[bc]))|k(?:at|c(?:(?:14)?)|p(?:at|[bc]))|let(?:kid|[afkv])|q(?:[1234])|rg|s(?:[12])|value|[choqsxz])?))|p(?:a(?:n(?:(?:2)?)|r(?:eq|t(?:2txt|i(?:als|kkel(?:(?:get|s(?:et|ync))?))))|ssign|ulstretch)|c(?:auchy|h(?:bend|midi(?:(?:b|nn)?)|oct)|o(?:nvolve|unt))|d(?:clip|half(?:(?:y)?))|eak|gm(?:(?:assig|ch)n)|h(?:as(?:er(?:[12])|or(?:(?:bnk)?))|s)|i(?:n(?:dex|k(?:er|ish))|tch(?:(?:a(?:c|mdf))?))|l(?:a(?:net|terev)|(?:ltra|u)ck)|o(?:isson|l(?:2rect|y(?:aft|nomial))|rt(?:(?:k)?)|scil(?:(?:3)?)|w(?:(?:ershape|oftwo|s)?))|r(?:e(?:alloc|piano)|int(?:(?:_type|f_i|k(?:s2|[2s])|[fks])?)|oduct)|set|t(?:able(?:(?:iw|[3iw])?)|rack)|uts|v(?:add|bufread|cross|interp|oc|read|s(?:2(?:array|tab)|a(?:dsyn|nal|rp)|b(?:and(?:[pr])|in|lur|uf(?:fer|read(?:(?:2)?)))|c(?:ale|e(?:nt|ps)|ross)|d(?:emix|is(?:kin|p))|envftw|f(?:ilter|r(?:e(?:ad|eze)|omarray)|t(?:[rw])|write)|g(?:ain|endy)|hift|i(?:fd|n(?:(?:fo|it)?))|lock|m(?:aska|ix|o(?:(?:ot|rp)h))|o(?:sc|ut)|pitch|t(?:(?:ana|enci)l)|voc|warp|ynth))|wd|y(?:assign(?:(?:[it])?)|call(?:(?:1(?:[it])|2(?:[it])|3(?:[it])|4(?:[it])|5(?:[it])|6(?:[it])|7(?:[it])|8(?:[it])|ni|[12345678int])?)|e(?:val(?:(?:[it])?)|xec(?:(?:[it])?))|init|l(?:assign(?:(?:[it])?)|call(?:(?:1(?:[it])|2(?:[it])|3(?:[it])|4(?:[it])|5(?:[it])|6(?:[it])|7(?:[it])|8(?:[it])|ni|[12345678int])?)|e(?:val(?:(?:[it])?)|xec(?:(?:[it])?))|run(?:(?:[it])?))|run(?:(?:[it])?)))|q(?:inf|nan)|r(?:2c|and(?:(?:om(?:(?:[hi])?)|[hi])?)|bjeq|e(?:ad(?:clock|fi|k(?:[234s])|sc(?:ore|ratch)|[fk])|ct2pol|init|lease|mo(?:teport|ve)|pluck|s(?:on(?:(?:xk|[krxyz])?)|yn)|verb(?:(?:2|sc)?)|windscore|zzy)|fft|i(?:fft|return)|ms|nd(?:(?:31)?)|ound|spline|tclock)|s(?:16b14|32b14|a(?:mphold|ndpaper)|c(?:a(?:le(?:(?:array)?)|n(?:hammer|table|[su]))|hed(?:kwhen(?:(?:named)?)|ule|when)|oreline(?:(?:_i)?))|e(?:ed|kere|mitone|nse(?:(?:key)?)|qtime(?:(?:2)?)|rial(?:Begin|End|Flush|Print|Read|Write(?:(?:_i)?))|t(?:c(?:(?:o|tr)l)|ksmps|row|scorepos))|f(?:i(?:list|nstr(?:(?:3m|[3m])?))|lo(?:ad|oper)|p(?:assign|l(?:ay(?:(?:3m|[3m])?)|ist)|reset))|h(?:aker|ift(?:in|out))|i(?:gn(?:alflowgraph|um)|n(?:(?:h|inv|syn)?))|l(?:eighbells|i(?:cearray|der(?:16(?:(?:f|table(?:(?:f)?))?)|32(?:(?:f|table(?:(?:f)?))?)|64(?:(?:f|table(?:(?:f)?))?)|8(?:(?:f|table(?:(?:f)?))?)|Kawai)))|nd(?:loop|warp(?:(?:st)?))|o(?:ck(?:recv(?:(?:s)?)|send(?:(?:s)?))|undin)|p(?:a(?:ce|t3d(?:(?:[it])?))|dist|litrig|rintf(?:(?:k)?)|send)|qrt|t(?:atevar|ix|r(?:c(?:at(?:(?:k)?)|har(?:(?:k)?)|mp(?:(?:k)?)|py(?:(?:k)?))|e(?:cv|son)|fromurl|get|index(?:(?:k)?)|l(?:en(?:(?:k)?)|ower(?:(?:k)?))|rindex(?:(?:k)?)|s(?:et|ub(?:(?:k)?))|to(?:(?:[dl])k|[dl])|upper(?:(?:k)?))|send)|u(?:binstr(?:(?:init)?)|m(?:(?:array)?))|vfilter|y(?:nc(?:grain|loop|phasor)|stem(?:(?:_i)?)))|t(?:a(?:b(?:2pvs|_i|ifd|le(?:(?:3kt|copy|filter(?:(?:i)?)|gpw|i(?:copy|gpw|kt|mix|w)|kt|mix|ng|ra|s(?:eg|huffle(?:(?:i)?))|w(?:a|kt)|x(?:kt|seg)|[3iw])?)|morph(?:(?:ak|[ai])?)|play|rec|sum|w(?:(?:_i)?))|mbourine|n(?:h|inv(?:(?:2)?))|[bn])|b(?:0_init|1(?:(?:(?:[012345])?)_init|[012345])|2_init|3_init|4_init|5_init|6_init|7_init|8_init|9_init|vcf|[0123456789])|emp(?:est|o(?:(?:(?:sc|v)al)?))|i(?:me(?:dseq|inst(?:[ks])|[ks])|val)|lineto|one(?:(?:[kx])?)|r(?:a(?:dsyn|n(?:dom|seg(?:(?:[br])?)))|cross|filter|highest|i(?:g(?:ger|seq)|rand)|lowest|mix|s(?:cale|(?:hif|pli)t))|urno(?:ff(?:(?:2)?)|n))|u(?:n(?:irand|wrap)|psamp|r(?:andom|d))|v(?:a(?:ctrol|dd(?:(?:_i|v(?:(?:_i)?))?)|get|lpass|set)|bap(?:(?:gmove|lsinit|(?:(?:z)?)move|[gz])?)|c(?:ella|o(?:(?:2(?:(?:(?:f|i(?:f|ni))t)?)|mb|py(?:(?:_i)?))?))|d(?:el(?:_k|ay(?:(?:x(?:w(?:[qs])|[qsw])|[3kx])?))|ivv(?:(?:_i)?))|e(?:cdelay|loc|xp(?:(?:_i|seg|v(?:(?:_i)?))?))|i(?:b(?:es|r(?:(?:ato)?))|ncr)|l(?:i(?:mit|nseg)|owres)|m(?:ap|irror|ult(?:(?:_i|v(?:(?:_i)?))?))|o(?:ice|sim)|p(?:haseseg|o(?:rt|w(?:(?:_i|v(?:(?:_i)?))?))|voc)|rand(?:[hi])|subv(?:(?:_i)?)|tab(?:le(?:1k|w(?:[aik])|[aik])|w(?:[aik])|[aik])|wrap)|w(?:aveset|eibull|g(?:b(?:ow(?:(?:edbar)?)|rass)|clar|flute|pluck(?:(?:2)?)|uide(?:[12]))|i(?:i(?:connect|data|range|send)|ndow)|r(?:ap|itescratch)|terrain)|x(?:adsr|in|out|scan(?:map|smap|[su])|tratim)|z(?:a(?:cl|kinit|mod|rg|wm|[rw])|filter2|i(?:wm|[rw])|k(?:cl|mod|wm|[rw]))|[Saikp])\\b(?:(\\:)([A-Za-z]))?",
408
408
  "captures": {
409
409
  "1": {
410
410
  "name": "support.function.csound"
@@ -417,6 +417,20 @@
417
417
  }
418
418
  }
419
419
  },
420
+ {
421
+ "match": "\\b(array|bform(?:(?:de|en)c)|copy2(?:(?:[ft])tab)|hrtfer|ktableseg|lentab|m(?:(?:ax|in)tab)|p(?:op(?:(?:_f)?)|ush(?:(?:_f)?))|s(?:calet|ndload|oundout(?:(?:s)?)|pec(?:addm|di(?:ff|sp)|filt|hist|ptrk|s(?:cal|um)|trum)|tack|umtab)|tab(?:gen|map(?:(?:_i)?)|slice)|vbap(?:16|(?:[48])move|[48])|xyin)\\b(?:(\\:)([A-Za-z]))?",
422
+ "captures": {
423
+ "1": {
424
+ "name": "invalid.deprecated.csound"
425
+ },
426
+ "2": {
427
+ "name": "punctuation.type-annotation.csound"
428
+ },
429
+ "3": {
430
+ "name": "type-annotation.storage.type.csound"
431
+ }
432
+ }
433
+ },
420
434
  {
421
435
  "name": "meta.other.csound",
422
436
  "match": "\\b[A-Z_a-z]\\w*\\b"
@@ -427,7 +441,7 @@
427
441
  "patterns": [
428
442
  {
429
443
  "name": "keyword.preprocessor.csound",
430
- "match": "\\#(?:e(?:lse\\b|nd(?:if)?\\b)|i(?:fn?def)|undef|\\#\\#)|@+[ \\t]*\\d*"
444
+ "match": "\\#(?:e(?:lse|nd(?:if)?)\\b|\\#\\#)|@+[ \\t]*\\d*"
431
445
  },
432
446
  {
433
447
  "begin": "\\#include",
@@ -474,6 +488,10 @@
474
488
  "name": "entity.name.function.preprocessor.csound",
475
489
  "match": "[A-Z_a-z]\\w*"
476
490
  },
491
+ {
492
+ "name": "entity.invalid.illegal.preprocessor.csound",
493
+ "match": "\\d+\\w*"
494
+ },
477
495
  {
478
496
  "begin": "\\(",
479
497
  "end": "\\)",
@@ -508,6 +526,28 @@
508
526
  ]
509
527
  }
510
528
  ]
529
+ },
530
+ {
531
+ "begin": "\\#(?:i(?:fn?def)|undef)",
532
+ "beginCaptures": {
533
+ "0": {
534
+ "name": "keyword.preprocessor.csound"
535
+ }
536
+ },
537
+ "end": "\\n",
538
+ "patterns": [
539
+ {
540
+ "include": "#commentsAndMacroCalls"
541
+ },
542
+ {
543
+ "name": "entity.name.function.preprocessor.csound",
544
+ "match": "[A-Z_a-z]\\w*"
545
+ },
546
+ {
547
+ "name": "entity.invalid.illegal.preprocessor.csound",
548
+ "match": "\\d+\\w*"
549
+ }
550
+ ]
511
551
  }
512
552
  ]
513
553
  },
@@ -20,7 +20,7 @@
20
20
  "include": "#comments"
21
21
  },
22
22
  {
23
- "match": "(?x)\n(var)[\\/ ]\n(?:(static|global|tmp|const)\\/)?\n(?:(datum|atom(?:\\/movable)?|obj|mob|turf|area|savefile|list|client|sound|image|database|matrix|regex|exception)\\/)?\n(?:\n\t([a-zA-Z0-9_\\-$]*)\\/\n)*\n\n([A-Za-z0-9]*)\\b",
23
+ "match": "(?x)\n(var)[\\/ ]\n(?:(static|global|tmp|const)\\/)?\n(?:(datum|atom(?:\\/movable)?|obj|mob|turf|area|savefile|list|client|sound|image|database|matrix|regex|exception)\\/)?\n(?:\n\t([a-zA-Z0-9_\\-$]*)\\/\n)*\n\n([A-Za-z0-9_$]*)\\b",
24
24
  "name": "meta.initialization.dm",
25
25
  "captures": {
26
26
  "1": {
@@ -20,8 +20,8 @@
20
20
  "escapeChar": "\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])",
21
21
  "octalChar": "(?:\\\\o[0-7]+)",
22
22
  "hexChar": "(?:\\\\x[0-9A-Fa-f]+)",
23
- "controlChar": "(?:\\^[A-Z@\\[\\]\\\\\\^_])",
24
- "character": "(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\^[A-Z@\\[\\]\\\\\\^_])|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
23
+ "controlChar": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
24
+ "character": "(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
25
25
  "functionTypeDeclaration": "(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
26
26
  "doubleColonOperator": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
27
27
  "ctorTypeDeclaration": "(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
@@ -151,7 +151,7 @@
151
151
  "name": "constant.character.escape.hexadecimal.haskell"
152
152
  },
153
153
  {
154
- "match": "(?:\\^[A-Z@\\[\\]\\\\\\^_])",
154
+ "match": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
155
155
  "name": "constant.character.escape.control.haskell"
156
156
  }
157
157
  ]
@@ -349,6 +349,9 @@
349
349
  {
350
350
  "include": "#empty_list"
351
351
  },
352
+ {
353
+ "include": "#string"
354
+ },
352
355
  {
353
356
  "name": "keyword.other.arrow.haskell",
354
357
  "match": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(->|→)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])"
@@ -530,7 +533,7 @@
530
533
  "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)",
531
534
  "beginCaptures": {
532
535
  "2": {
533
- "name": "storage.type.class.haskell"
536
+ "name": "keyword.other.class.haskell"
534
537
  }
535
538
  },
536
539
  "endCaptures": {
@@ -668,7 +671,7 @@
668
671
  "end": "^(?!\\1[ \\t]|[ \\t]*$)",
669
672
  "beginCaptures": {
670
673
  "2": {
671
- "name": "storage.type.data.haskell"
674
+ "name": "keyword.other.data.haskell"
672
675
  },
673
676
  "3": {
674
677
  "name": "meta.type-signature.haskell",
@@ -765,7 +768,7 @@
765
768
  "contentName": "meta.type-signature.haskell",
766
769
  "beginCaptures": {
767
770
  "2": {
768
- "name": "storage.type.data.haskell"
771
+ "name": "keyword.other.type.haskell"
769
772
  }
770
773
  },
771
774
  "patterns": [
@@ -795,7 +798,7 @@
795
798
  "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving|where|data|type|newtype)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
796
799
  },
797
800
  {
798
- "name": "storage.type.haskell",
801
+ "name": "keyword.other.haskell",
799
802
  "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(data|type|newtype)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
800
803
  },
801
804
  {
@@ -877,7 +880,7 @@
877
880
  "patterns": [
878
881
  {
879
882
  "name": "string.quoted.single.haskell",
880
- "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\^[A-Z@\\[\\]\\\\\\^_])|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))(')",
883
+ "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))(')",
881
884
  "captures": {
882
885
  "1": {
883
886
  "name": "punctuation.definition.string.begin.haskell"
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "scopeName": "source.js",
3
- "name": "JavaScript",
4
3
  "fileTypes": [
5
4
  "js",
6
5
  "_js",
@@ -19,15 +18,16 @@
19
18
  "xsjslib"
20
19
  ],
21
20
  "firstLineMatch": "(?x)\n# Hashbang\n^\\#!.*(?:\\s|\\/|(?<=!)\\b)\n (?:node|iojs|JavaScript)\n(?:$|\\s)\n|\n# Modeline\n(?i:\n # Emacs\n -\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*)\n (?:js|javascript)\n (?=[\\s;]|(?<![-*])-\\*-).*?-\\*-\n |\n # Vim\n (?:(?:\\s|^)vi(?:m[<=>]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s*set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*=\n javascript\n (?=\\s|:|$)\n)",
21
+ "name": "JavaScript",
22
22
  "patterns": [
23
23
  {
24
- "begin": "(?<!\\.)\\b(import)(?!\\s*:)\\b",
24
+ "begin": "(?<!\\.)\\b(import)(?:\\s*$|(?!\\s*[:(])\\b)",
25
25
  "beginCaptures": {
26
26
  "1": {
27
27
  "name": "keyword.control.js"
28
28
  }
29
29
  },
30
- "end": "(?=;|$)",
30
+ "end": "(?=;)",
31
31
  "name": "meta.import.js",
32
32
  "patterns": [
33
33
  {
@@ -45,32 +45,38 @@
45
45
  },
46
46
  "patterns": [
47
47
  {
48
- "match": "(?x)\n(?: \\b(default)\\b | \\b([a-zA-Z_$][\\w$]*)\\b)\n\\s*\n(\\b as \\b)\n\\s*\n(?: (\\b default \\b | \\*) | \\b([a-zA-Z_$][\\w$]*)\\b)",
49
- "captures": {
50
- "1": {
51
- "name": "variable.language.default.js"
52
- },
53
- "2": {
54
- "name": "variable.other.module.js"
55
- },
56
- "3": {
48
+ "match": "\\bdefault\\b",
49
+ "name": "variable.language.default.js"
50
+ },
51
+ {
52
+ "include": "#comments"
53
+ },
54
+ {
55
+ "begin": "\\bas\\b",
56
+ "beginCaptures": {
57
+ "0": {
57
58
  "name": "keyword.control.js"
58
- },
59
- "4": {
59
+ }
60
+ },
61
+ "end": "(?=[;}]|/\\*)|(?:(\\bdefault\\b|\\*)|([a-zA-Z_$][\\w$]*))",
62
+ "endCaptures": {
63
+ "1": {
60
64
  "name": "invalid.illegal.js"
61
65
  },
62
- "5": {
66
+ "2": {
63
67
  "name": "variable.other.module-alias.js"
64
68
  }
65
- }
69
+ },
70
+ "patterns": [
71
+ {
72
+ "include": "#comments"
73
+ }
74
+ ]
66
75
  },
67
76
  {
68
77
  "match": ",",
69
78
  "name": "meta.delimiter.object.comma.js"
70
79
  },
71
- {
72
- "include": "#comments"
73
- },
74
80
  {
75
81
  "match": "\\b([a-zA-Z_$][\\w$]*)\\b",
76
82
  "name": "variable.other.module.js"
@@ -78,35 +84,29 @@
78
84
  ]
79
85
  },
80
86
  {
81
- "match": "(?x)\n(?: \\b(default)\\b | (\\*) | \\b([a-zA-Z_$][\\w$]*)\\b)\n\\s*\n(\\b as \\b)\n\\s*\n(?: (\\b default \\b | \\*) | \\b([a-zA-Z_$][\\w$]*)\\b)",
82
- "captures": {
83
- "1": {
84
- "name": "variable.language.default.js"
85
- },
86
- "2": {
87
- "name": "variable.language.import-all.js"
88
- },
89
- "3": {
90
- "name": "variable.other.module.js"
91
- },
92
- "4": {
93
- "name": "keyword.control.js"
94
- },
95
- "5": {
96
- "name": "invalid.illegal.js"
97
- },
98
- "6": {
99
- "name": "variable.other.module-alias.js"
100
- }
101
- }
87
+ "match": "\\bdefault\\b",
88
+ "name": "variable.language.default.js"
102
89
  },
103
90
  {
104
91
  "match": "\\*",
105
92
  "name": "variable.language.import-all.js"
106
93
  },
107
94
  {
108
- "match": "\\b(default)\\b",
109
- "name": "variable.language.default.js"
95
+ "begin": "\\bas\\b",
96
+ "beginCaptures": {
97
+ "0": {
98
+ "name": "keyword.control.js"
99
+ }
100
+ },
101
+ "end": "(?=[;}]|/\\*)|(?:(\\bdefault\\b|\\*)|([a-zA-Z_$][\\w$]*))",
102
+ "endCaptures": {
103
+ "1": {
104
+ "name": "invalid.illegal.js"
105
+ },
106
+ "2": {
107
+ "name": "variable.other.module-alias.js"
108
+ }
109
+ }
110
110
  },
111
111
  {
112
112
  "include": "#strings"
@@ -119,7 +119,7 @@
119
119
  "name": "keyword.control.js"
120
120
  },
121
121
  {
122
- "match": "\\b([a-zA-Z_$][\\w$]*)\\b(?=.*\\bfrom\\b)",
122
+ "match": "\\b([a-zA-Z_$][\\w$]*)\\b",
123
123
  "name": "variable.other.module.js"
124
124
  },
125
125
  {
@@ -146,7 +146,7 @@
146
146
  }
147
147
  },
148
148
  {
149
- "begin": "(?<!\\.)\\b(export)(?!\\s*:)\\b",
149
+ "begin": "(?<!\\.)\\b(export)(?!\\s*[:(])\\b",
150
150
  "beginCaptures": {
151
151
  "1": {
152
152
  "name": "keyword.control.js"
@@ -465,7 +465,7 @@
465
465
  ]
466
466
  },
467
467
  {
468
- "begin": "(?x)\n(?=\n (?!\n (break|case|catch|continue|do|else|finally|for|function|if|export|\n import|package|return|switch|throw|try|while|with)\n [\\s\\(]\n )\n (\n \\b(get|set) # Property getter/setter: get foo(){}\n (?:\\s+|(?=\\[)) # Followed by whitespace or square bracket\n )?\n ( # Method name\n \\b[a-zA-Z_$][\\w$]* # Fixed name\n |\n \\[ # Computed property key\n .*?[^\\[\\]\\s].*? # Contains at least one non-brace character\n \\]\n )\n \\s*\\(\\s* # Start of arguments list\n (\n \"[^\"]*\" | # Double-quoted string\n '[^']*' | # Single-quoted string\n [^\"()'] # Any non-bracket or non-quote\n )*\n \\)\\s* # End of arguments\n { # Beginning of body\n)",
468
+ "begin": "(?x)\n(?=\n (?!\n (break|case|catch|continue|do|else|finally|for|function|if|\n package|return|switch|throw|try|while|with)\n [\\s\\(]\n )\n (\n \\b(get|set) # Property getter/setter: get foo(){}\n (?:\\s+|(?=\\[)) # Followed by whitespace or square bracket\n )?\n ( # Method name\n \\b[a-zA-Z_$][\\w$]* # Fixed name\n |\n \\[ # Computed property key\n .*?[^\\[\\]\\s].*? # Contains at least one non-brace character\n \\]\n )\n \\s*\\(\\s* # Start of arguments list\n (\n \"[^\"]*\" | # Double-quoted string\n '[^']*' | # Single-quoted string\n [^\"()'] # Any non-bracket or non-quote\n )*\n \\)\\s* # End of arguments\n { # Beginning of body\n)",
469
469
  "end": "(?<=})",
470
470
  "patterns": [
471
471
  {
@@ -796,6 +796,18 @@
796
796
  {
797
797
  "include": "#comments"
798
798
  },
799
+ {
800
+ "match": "(<!--|-->)",
801
+ "captures": {
802
+ "0": {
803
+ "name": "punctuation.definition.comment.html.js"
804
+ },
805
+ "2": {
806
+ "name": "punctuation.definition.comment.html.js"
807
+ }
808
+ },
809
+ "name": "comment.block.html.js"
810
+ },
799
811
  {
800
812
  "match": "(?<!\\.)\\b(class|enum|function|interface)(?!\\s*:)\\b",
801
813
  "name": "storage.type.js"
@@ -1023,7 +1035,7 @@
1023
1035
  "include": "#properties"
1024
1036
  },
1025
1037
  {
1026
- "match": "((?<!\\.|[\\w$])(?![_\\$]+[^A-Z0-9_$])\\$*\\b(?:[A-Z_$][A-Z0-9_$]*)\\b\\$*)(?!\\s*:)",
1038
+ "match": "((?<!\\.|[\\w$])(?![_\\$]+[^A-Z0-9_$])\\$*\\b(?:[A-Z_$][A-Z0-9_$]*)\\b\\$*)",
1027
1039
  "name": "constant.other.js"
1028
1040
  },
1029
1041
  {
@@ -1162,7 +1174,7 @@
1162
1174
  "name": "keyword.operator.comparison.js"
1163
1175
  },
1164
1176
  {
1165
- "match": "&&|!|\\|\\|",
1177
+ "match": "&&|!!|!|\\|\\|",
1166
1178
  "name": "keyword.operator.logical.js"
1167
1179
  },
1168
1180
  {
@@ -1266,6 +1278,48 @@
1266
1278
  }
1267
1279
  ]
1268
1280
  },
1281
+ {
1282
+ "begin": "(?<=innerHTML)\\s*(\\+?=)\\s*(?=`)",
1283
+ "beginCaptures": {
1284
+ "1": {
1285
+ "name": "keyword.operator.assignment.js"
1286
+ }
1287
+ },
1288
+ "end": "(?<=`)",
1289
+ "endCaptures": {
1290
+ "0": {
1291
+ "name": "punctuation.definition.string.end.js"
1292
+ }
1293
+ },
1294
+ "contentName": "string.quoted.template.html.js",
1295
+ "patterns": [
1296
+ {
1297
+ "begin": "`",
1298
+ "beginCaptures": {
1299
+ "0": {
1300
+ "name": "punctuation.definition.string.begin.js"
1301
+ }
1302
+ },
1303
+ "end": "`",
1304
+ "endCaptures": {
1305
+ "0": {
1306
+ "name": "punctuation.definition.string.end.js"
1307
+ }
1308
+ },
1309
+ "patterns": [
1310
+ {
1311
+ "include": "#string_escapes"
1312
+ },
1313
+ {
1314
+ "include": "#interpolated_js"
1315
+ },
1316
+ {
1317
+ "include": "text.html.basic"
1318
+ }
1319
+ ]
1320
+ }
1321
+ ]
1322
+ },
1269
1323
  {
1270
1324
  "begin": "(Relay\\.QL)\\s*(`)",
1271
1325
  "beginCaptures": {
@@ -1690,7 +1744,7 @@
1690
1744
  "name": "storage.type.class.jsdoc"
1691
1745
  },
1692
1746
  {
1693
- "match": "(?x)\n(\n \\[\n [^\\]]+ # Optional [link text] preceding {@link syntax}\n \\]\n\n (?! # Check to avoid highlighting two sets of link text\n {\n @\\w+ # Tagname\n \\s+\n [^\\s|}]+ # Namepath/URL\n [\\s|] # Whitespace or bar delimiting description\n [^}]*\n }\n )\n)?\n\n(?:\n {\n (\n @\n (?: link # Name of tag\n | linkcode\n | linkplain\n | tutorial\n )\n )\n \n \\s+\n\n ([^\\s|}]+) # Namepath or URL\n\n (?: # Optional link text following link target\n [\\s|] # Bar or space separating target and text\n [^}]* # Actual text\n )?\n }\n)",
1747
+ "match": "(?x)\n(\n \\[\n [^\\]]+ # Optional [link text] preceding {@link syntax}\n \\]\n\n (?! # Check to avoid highlighting two sets of link text\n {\n @\\w+ # Tagname\n \\s+\n [^\\s|}]+ # Namepath/URL\n [\\s|] # Whitespace or bar delimiting description\n [^}]*\n }\n )\n)?\n\n(?:\n {\n (\n @\n (?: link # Name of tag\n | linkcode\n | linkplain\n | tutorial\n )\n )\n\n \\s+\n\n ([^\\s|}]+) # Namepath or URL\n\n (?: # Optional link text following link target\n [\\s|] # Bar or space separating target and text\n [^}]* # Actual text\n )?\n }\n)",
1694
1748
  "captures": {
1695
1749
  "0": {
1696
1750
  "name": "entity.name.type.instance.jsdoc"
@@ -1708,7 +1762,7 @@
1708
1762
  "name": "other.meta.jsdoc"
1709
1763
  },
1710
1764
  {
1711
- "match": "(?x)\n(?:(?<=@param)|(?<=@arg)|(?<=@argument)|(?<=@type))\n\\s+\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n )?\n\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string[]|number)} type application, an array of strings or a number\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {string[]|number} type application, an array of strings or a number\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n)})\n\\s+\n(\n \\[ # [foo] optional parameter\n \\s*\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n (?:\n \\s*\n = # [foo=bar] Default parameter value\n \\s*\n [\\w$\\s]*\n )?\n )\n \\s*\n \\] |\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n )?\n)\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
1765
+ "match": "(?x)\n(?:(?<=@param)|(?<=@arg)|(?<=@argument)|(?<=@type))\n\\s+\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?:\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n )?\n\n (?:\n (?:\n function # {function(string, number)} function type\n \\s*\n \\(\n \\s*\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n \\s*,\\s*\n [a-zA-Z_$][\\w$]*\n )*\n )?\n \\s*\n \\)\n (?: # {function(): string} function return type\n \\s*:\\s*\n [a-zA-Z_$][\\w$]*\n )?\n )?\n |\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string[]|number)} type application, an array of strings or a number\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n )\n)})\n\\s+\n(\n \\[ # [foo] optional parameter\n \\s*\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n (?:\n \\s*\n = # [foo=bar] Default parameter value\n \\s*\n (?:\n [\\w$\\s]* | # [foo=bar] Unquoted\n \"[^\"]*\" | # [foo=\"bar\"] Double-quoted\n '[^']*' # [foo='bar'] Single-quoted\n )\n )?\n )\n \\s*\n \\] |\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n )?\n)\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
1712
1766
  "captures": {
1713
1767
  "0": {
1714
1768
  "name": "other.meta.jsdoc"
@@ -1720,12 +1774,17 @@
1720
1774
  "name": "variable.other.jsdoc"
1721
1775
  },
1722
1776
  "3": {
1723
- "name": "other.description.jsdoc"
1777
+ "name": "other.description.jsdoc",
1778
+ "patterns": [
1779
+ {
1780
+ "include": "#docblock"
1781
+ }
1782
+ ]
1724
1783
  }
1725
1784
  }
1726
1785
  },
1727
1786
  {
1728
- "match": "(?x)\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n )?\n\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n)})\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
1787
+ "match": "(?x)\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?:\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n )?\n\n (?:\n (?:\n function # {function(string, number)} function type\n \\s*\n \\(\n \\s*\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n \\s*,\\s*\n [a-zA-Z_$][\\w$]*\n )*\n )?\n \\s*\n \\)\n (?: # {function(): string} function return type\n \\s*:\\s*\n [a-zA-Z_$][\\w$]*\n )?\n )?\n |\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n )\n)})\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
1729
1788
  "captures": {
1730
1789
  "0": {
1731
1790
  "name": "other.meta.jsdoc"
@@ -1734,7 +1793,12 @@
1734
1793
  "name": "entity.name.type.instance.jsdoc"
1735
1794
  },
1736
1795
  "2": {
1737
- "name": "other.description.jsdoc"
1796
+ "name": "other.description.jsdoc",
1797
+ "patterns": [
1798
+ {
1799
+ "include": "#docblock"
1800
+ }
1801
+ ]
1738
1802
  }
1739
1803
  }
1740
1804
  }
@@ -1797,16 +1861,6 @@
1797
1861
  "name": "comment.line.double-slash.js"
1798
1862
  }
1799
1863
  ]
1800
- },
1801
- {
1802
- "begin": "<!--|-->",
1803
- "beginCaptures": {
1804
- "0": {
1805
- "name": "punctuation.definition.comment.html.js"
1806
- }
1807
- },
1808
- "end": "$",
1809
- "name": "comment.line.deprecated.html.js"
1810
1864
  }
1811
1865
  ]
1812
1866
  },