github-linguist 4.8.18 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
  },