github-linguist 5.0.6 → 5.0.7

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/source.bsl.json +196 -162
  3. data/grammars/source.ceylon.json +43 -21
  4. data/grammars/source.coffee.json +46 -21
  5. data/grammars/source.cs.json +2 -2
  6. data/grammars/source.csound-score.json +41 -18
  7. data/grammars/source.csound.json +63 -7
  8. data/grammars/source.css.json +2 -2
  9. data/grammars/source.css.less.json +22 -91
  10. data/grammars/source.ditroff.json +114 -116
  11. data/grammars/source.gfm.clean.json +28 -0
  12. data/grammars/source.gfm.json +1 -0
  13. data/grammars/source.jison.json +678 -0
  14. data/grammars/source.jisonlex-injection.json +11 -0
  15. data/grammars/source.jisonlex.json +432 -0
  16. data/grammars/source.js.json +12 -67
  17. data/grammars/source.jsdoc.json +485 -0
  18. data/grammars/source.p4.json +15 -0
  19. data/grammars/source.perl6fe.json +37 -1
  20. data/grammars/source.puppet.json +1 -1
  21. data/grammars/source.python.json +6 -3
  22. data/grammars/source.quoting.perl6fe.json +101 -0
  23. data/grammars/source.rpm-spec.json +7 -3
  24. data/grammars/source.scad.json +152 -0
  25. data/grammars/source.shaderlab.json +42 -15
  26. data/grammars/source.terraform.json +18 -0
  27. data/grammars/source.yaml.json +57 -32
  28. data/grammars/text.html.php.blade.json +1 -1
  29. data/grammars/text.marko.json +1522 -0
  30. data/grammars/text.roff.json +9 -6
  31. data/lib/linguist.rb +2 -2
  32. data/lib/linguist/documentation.yml +4 -3
  33. data/lib/linguist/heuristics.rb +2 -0
  34. data/lib/linguist/languages.json +1 -1
  35. data/lib/linguist/languages.yml +33 -1
  36. data/lib/linguist/samples.json +423 -48
  37. data/lib/linguist/version.rb +1 -1
  38. metadata +13 -7
  39. data/grammars/module.ceylon.json +0 -54
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "Jison Lex Injection",
3
+ "scopeName": "source.jisonlex-injection",
4
+ "injectionSelector": "L:meta.rule.action.jisonlex -comment",
5
+ "patterns": [
6
+ {
7
+ "name": "variable.language.jisonlex",
8
+ "match": "\\byy(?:l(?:eng|ineno|loc)|text)\\b"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,432 @@
1
+ {
2
+ "name": "Jison Lex",
3
+ "scopeName": "source.jisonlex",
4
+ "fileTypes": [
5
+ "jisonlex"
6
+ ],
7
+ "patterns": [
8
+ {
9
+ "begin": "%%",
10
+ "beginCaptures": {
11
+ "0": {
12
+ "name": "meta.separator.section.jisonlex"
13
+ }
14
+ },
15
+ "patterns": [
16
+ {
17
+ "begin": "^%%",
18
+ "beginCaptures": {
19
+ "0": {
20
+ "name": "meta.separator.section.jisonlex"
21
+ }
22
+ },
23
+ "patterns": [
24
+ {
25
+ "name": "meta.section.user-code.jisonlex",
26
+ "begin": "\\G",
27
+ "patterns": [
28
+ {
29
+ "include": "#user_code_section"
30
+ }
31
+ ]
32
+ }
33
+ ]
34
+ },
35
+ {
36
+ "name": "meta.section.rules.jisonlex",
37
+ "begin": "(?!%%)",
38
+ "end": "(?=^%%)",
39
+ "patterns": [
40
+ {
41
+ "include": "#rules_section"
42
+ }
43
+ ]
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "name": "meta.section.definitions.jisonlex",
49
+ "begin": "(?!%%)",
50
+ "end": "(?=%%)",
51
+ "patterns": [
52
+ {
53
+ "include": "#definitions_section"
54
+ }
55
+ ]
56
+ }
57
+ ],
58
+ "repository": {
59
+ "definitions_section": {
60
+ "patterns": [
61
+ {
62
+ "include": "source.jison#comments"
63
+ },
64
+ {
65
+ "include": "source.jison#include_declarations"
66
+ },
67
+ {
68
+ "name": "meta.definition.jisonlex",
69
+ "begin": "\\b[\\p{Alpha}_](?:[\\w-]*\\w)?\\b",
70
+ "end": "$",
71
+ "beginCaptures": {
72
+ "0": {
73
+ "name": "entity.name.variable.jisonlex"
74
+ }
75
+ },
76
+ "patterns": [
77
+ {
78
+ "include": "source.jison#comments"
79
+ },
80
+ {
81
+ "name": "string.regexp.jisonlex",
82
+ "begin": "(?=\\S)",
83
+ "end": "(?=\\s)",
84
+ "patterns": [
85
+ {
86
+ "include": "#regexp"
87
+ }
88
+ ]
89
+ }
90
+ ]
91
+ },
92
+ {
93
+ "name": "meta.start-condition.jisonlex",
94
+ "begin": "%[sx]\\b",
95
+ "end": "$",
96
+ "beginCaptures": {
97
+ "0": {
98
+ "name": "keyword.other.start-condition.jisonlex"
99
+ }
100
+ },
101
+ "patterns": [
102
+ {
103
+ "include": "source.jison#comments"
104
+ },
105
+ {
106
+ "name": "entity.name.function.jisonlex",
107
+ "match": "\\b[\\p{Alpha}_](?:[\\w-]*\\w)?\\b"
108
+ },
109
+ {
110
+ "name": "invalid.illegal.jisonlex",
111
+ "match": "\\S"
112
+ }
113
+ ]
114
+ },
115
+ {
116
+ "include": "source.jison#options_declarations"
117
+ },
118
+ {
119
+ "name": "invalid.unimplemented.jisonlex",
120
+ "match": "%(?:array|pointer)"
121
+ },
122
+ {
123
+ "include": "source.jison#user_code_blocks"
124
+ }
125
+ ]
126
+ },
127
+ "rules_section": {
128
+ "patterns": [
129
+ {
130
+ "include": "source.jison#comments"
131
+ },
132
+ {
133
+ "name": "meta.start-conditions.jisonlex",
134
+ "begin": "(?:^|(?<=%\\}))<(?!<EOF>>)",
135
+ "end": ">",
136
+ "beginCaptures": {
137
+ "0": {
138
+ "name": "punctuation.definition.start-conditions.begin.jisonlex"
139
+ }
140
+ },
141
+ "endCaptures": {
142
+ "0": {
143
+ "name": "punctuation.definition.start-conditions.end.jisonlex"
144
+ }
145
+ },
146
+ "patterns": [
147
+ {
148
+ "name": "keyword.other.jisonlex",
149
+ "match": "\\bINITIAL\\b"
150
+ },
151
+ {
152
+ "name": "entity.name.function.jisonlex",
153
+ "match": "\\b[\\p{Alpha}_](?:[\\w-]*\\w)?\\b"
154
+ },
155
+ {
156
+ "name": "punctuation.separator.start-condition.jisonlex",
157
+ "match": ","
158
+ },
159
+ {
160
+ "name": "keyword.other.any-start-condition.jisonlex",
161
+ "match": "(?<=<)\\*(?=>)"
162
+ },
163
+ {
164
+ "name": "invalid.illegal.jisonlex",
165
+ "match": "."
166
+ }
167
+ ]
168
+ },
169
+ {
170
+ "name": "meta.rule.action.jisonlex",
171
+ "begin": "(?=%\\{)",
172
+ "end": "(?<=%\\})",
173
+ "patterns": [
174
+ {
175
+ "include": "source.jison#user_code_blocks"
176
+ }
177
+ ]
178
+ },
179
+ {
180
+ "name": "string.regexp.jisonlex",
181
+ "begin": "(?:^|(?<=>|%\\}))(?=\\S)",
182
+ "end": "(?=\\s|%\\{)",
183
+ "patterns": [
184
+ {
185
+ "include": "#regexp"
186
+ }
187
+ ]
188
+ },
189
+ {
190
+ "name": "meta.rule.action.jisonlex",
191
+ "begin": "(?=\\S)",
192
+ "end": "((//).*)?(?=$)",
193
+ "endCaptures": {
194
+ "1": {
195
+ "name": "comment.line.double-slash.js"
196
+ },
197
+ "2": {
198
+ "name": "punctuation.definition.comment.js"
199
+ }
200
+ },
201
+ "patterns": [
202
+ {
203
+ "include": "source.jison#include_declarations"
204
+ },
205
+ {
206
+ "include": "source.js"
207
+ }
208
+ ]
209
+ }
210
+ ]
211
+ },
212
+ "user_code_section": {
213
+ "patterns": [
214
+ {
215
+ "include": "source.jison#user_code_include_declarations"
216
+ },
217
+ {
218
+ "include": "source.js"
219
+ }
220
+ ]
221
+ },
222
+ "name_uses": {
223
+ "patterns": [
224
+ {
225
+ "name": "variable.other.jisonlex",
226
+ "match": "\\{[\\p{Alpha}_](?:[\\w-]*\\w)?\\}"
227
+ }
228
+ ]
229
+ },
230
+ "regexp": {
231
+ "patterns": [
232
+ {
233
+ "include": "source.jison#comments"
234
+ },
235
+ {
236
+ "name": "keyword.other.character-class.any.regexp.jisonlex",
237
+ "match": "\\."
238
+ },
239
+ {
240
+ "name": "keyword.other.anchor.word-boundary.regexp.jisonlex",
241
+ "match": "\\\\b"
242
+ },
243
+ {
244
+ "name": "keyword.other.anchor.non-word-boundary.regexp.jisonlex",
245
+ "match": "\\\\B"
246
+ },
247
+ {
248
+ "name": "keyword.other.anchor.start-of-input.regexp.jisonlex",
249
+ "match": "\\^"
250
+ },
251
+ {
252
+ "name": "keyword.other.anchor.end-of-input.regexp.jisonlex",
253
+ "match": "\\$"
254
+ },
255
+ {
256
+ "name": "keyword.other.back-reference.regexp.jisonlex",
257
+ "match": "\\\\[1-9]\\d*"
258
+ },
259
+ {
260
+ "name": "keyword.operator.quantifier.regexp.jisonlex",
261
+ "match": "(?:[+*?]|\\{(?:\\d+(?:,(?:\\d+)?)?|,\\d+)\\})\\??"
262
+ },
263
+ {
264
+ "name": "keyword.operator.alternation.regexp.jisonlex",
265
+ "match": "\\|"
266
+ },
267
+ {
268
+ "name": "meta.non-capturing.group.regexp.jisonlex",
269
+ "begin": "\\(\\?:",
270
+ "end": "\\)",
271
+ "beginCaptures": {
272
+ "0": {
273
+ "name": "punctuation.definition.group.begin.regexp.jisonlex"
274
+ }
275
+ },
276
+ "endCaptures": {
277
+ "0": {
278
+ "name": "punctuation.definition.group.end.regexp.jisonlex"
279
+ }
280
+ },
281
+ "patterns": [
282
+ {
283
+ "include": "#regexp"
284
+ }
285
+ ]
286
+ },
287
+ {
288
+ "name": "meta.lookahead.assertion.regexp.jisonlex",
289
+ "begin": "\\(\\?=",
290
+ "end": "\\)",
291
+ "beginCaptures": {
292
+ "0": {
293
+ "name": "punctuation.definition.group.begin.regexp.jisonlex"
294
+ }
295
+ },
296
+ "endCaptures": {
297
+ "0": {
298
+ "name": "punctuation.definition.group.end.regexp.jisonlex"
299
+ }
300
+ },
301
+ "patterns": [
302
+ {
303
+ "include": "#regexp"
304
+ }
305
+ ]
306
+ },
307
+ {
308
+ "name": "meta.negative.lookahead.assertion.regexp.jisonlex",
309
+ "begin": "\\(\\?!",
310
+ "end": "\\)",
311
+ "beginCaptures": {
312
+ "0": {
313
+ "name": "punctuation.definition.group.begin.regexp.jisonlex"
314
+ }
315
+ },
316
+ "endCaptures": {
317
+ "0": {
318
+ "name": "punctuation.definition.group.end.regexp.jisonlex"
319
+ }
320
+ },
321
+ "patterns": [
322
+ {
323
+ "include": "#regexp"
324
+ }
325
+ ]
326
+ },
327
+ {
328
+ "name": "meta.group.regexp.jisonlex",
329
+ "begin": "\\(",
330
+ "end": "\\)",
331
+ "beginCaptures": {
332
+ "0": {
333
+ "name": "punctuation.definition.group.begin.regexp.jisonlex"
334
+ }
335
+ },
336
+ "endCaptures": {
337
+ "0": {
338
+ "name": "punctuation.definition.group.end.regexp.jisonlex"
339
+ }
340
+ },
341
+ "patterns": [
342
+ {
343
+ "include": "#regexp"
344
+ }
345
+ ]
346
+ },
347
+ {
348
+ "name": "constant.other.character-class.set.regexp.jisonlex",
349
+ "begin": "(\\[)(\\^)?",
350
+ "end": "\\]",
351
+ "beginCaptures": {
352
+ "1": {
353
+ "name": "punctuation.definition.character-class.begin.regexp.jisonlex"
354
+ },
355
+ "2": {
356
+ "name": "keyword.operator.negation.regexp.jisonlex"
357
+ }
358
+ },
359
+ "endCaptures": {
360
+ "0": {
361
+ "name": "punctuation.definition.character-class.end.regexp.jisonlex"
362
+ }
363
+ },
364
+ "patterns": [
365
+ {
366
+ "include": "#name_uses"
367
+ },
368
+ {
369
+ "include": "#regexp_character_class"
370
+ }
371
+ ]
372
+ },
373
+ {
374
+ "include": "#regexp_character_class"
375
+ },
376
+ {
377
+ "include": "#name_uses"
378
+ },
379
+ {
380
+ "include": "source.jison#quoted_strings"
381
+ },
382
+ {
383
+ "name": "keyword.other.eof.regexp.jisonlex",
384
+ "match": "<<EOF>>"
385
+ },
386
+ {
387
+ "name": "keyword.operator.negative.lookahead.regexp.jisonlex",
388
+ "match": "/!"
389
+ },
390
+ {
391
+ "name": "keyword.operator.lookahead.regexp.jisonlex",
392
+ "match": "/"
393
+ }
394
+ ]
395
+ },
396
+ "regexp_character_class": {
397
+ "patterns": [
398
+ {
399
+ "name": "constant.character.escape.character-class.word.regexp.jisonlex",
400
+ "match": "\\\\w"
401
+ },
402
+ {
403
+ "name": "constant.character.escape.character-class.non-word.regexp.jisonlex",
404
+ "match": "\\\\W"
405
+ },
406
+ {
407
+ "name": "constant.character.escape.character-class.space.regexp.jisonlex",
408
+ "match": "\\\\s"
409
+ },
410
+ {
411
+ "name": "constant.character.escape.character-class.non-space.regexp.jisonlex",
412
+ "match": "\\\\S"
413
+ },
414
+ {
415
+ "name": "constant.character.escape.character-class.digit.regexp.jisonlex",
416
+ "match": "\\\\d"
417
+ },
418
+ {
419
+ "name": "constant.character.escape.character-class.non-digit.regexp.jisonlex",
420
+ "match": "\\\\D"
421
+ },
422
+ {
423
+ "name": "constant.character.escape.character-class.control.regexp.jisonlex",
424
+ "match": "\\\\c[A-Z]"
425
+ },
426
+ {
427
+ "include": "source.js#string_escapes"
428
+ }
429
+ ]
430
+ }
431
+ }
432
+ }
@@ -466,7 +466,7 @@
466
466
  ]
467
467
  },
468
468
  {
469
- "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
+ "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 [^\\[\\]]++ # 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)",
470
470
  "end": "(?<=})",
471
471
  "patterns": [
472
472
  {
@@ -1767,92 +1767,37 @@
1767
1767
  }
1768
1768
  ]
1769
1769
  },
1770
- "docblock": {
1770
+ "comments": {
1771
1771
  "patterns": [
1772
1772
  {
1773
- "match": "(?x) (?<!\\w)@\n(abstract|access|alias|arg|argument|async|attribute|augments|author|beta|borrows|bubbes|callback|chainable|class\n|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc\n|description|dict|emits|enum|event|example|exports?|extends|extension|extension_for|extensionfor|external|file\n|fileoverview|final|fires|for|function|global|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance\n|interface|kind|lends|license|listens|main|member|memberof|method|mixex|mixins?|modifies|module|name|namespace\n|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|preserve|private|prop|property\n|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress\n|template|this|throws|todo|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce)\\b",
1774
- "name": "storage.type.class.jsdoc"
1775
- },
1776
- {
1777
- "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)",
1778
1773
  "captures": {
1779
- "0": {
1780
- "name": "entity.name.type.instance.jsdoc"
1781
- },
1782
1774
  "1": {
1783
- "name": "constant.other.description.jsdoc"
1775
+ "name": "punctuation.section.begin.comment.js"
1784
1776
  },
1785
1777
  "2": {
1786
- "name": "storage.type.class.jsdoc"
1787
- },
1788
- "3": {
1789
- "name": "variable.other.description.jsdoc"
1778
+ "name": "punctuation.section.end.comment.js"
1790
1779
  }
1791
1780
  },
1792
- "name": "other.meta.jsdoc"
1793
- },
1794
- {
1795
- "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 [*?]? # {...*} Variable number of mixed types\n )?\n\n (?:\n (?:\n function # {function(string, number)} function type\n \\s*\n (?:\n (?:\n \\(\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(...string)} variable number of parameters\n \\s*\\)\n )\n |\n (?:\n \\(\\s*\n (?:\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n (?:\n (?:\n (?:\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n )*\n (?:\n \\s*,\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(string, ...string)} variable number of parameters\n )?\n )\n |\n (?:\n =? # {function(string=)} optional parameter\n (?:\n (?<!=) # {function(string, string, number)} loop non-optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =?\n )*\n (?:\n (?<==) # {function(string, string=, number=)} loop optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =\n )*\n )\n )\n )?\n \\s*\\)\n )\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 {[^{}]*} | # [foo={a:1}] Object literal\n \\[ [^\\[\\]]* \\] # [foo=[1,2]] Array literal\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",
1796
- "captures": {
1797
- "0": {
1798
- "name": "other.meta.jsdoc"
1799
- },
1800
- "1": {
1801
- "name": "entity.name.type.instance.jsdoc"
1802
- },
1803
- "2": {
1804
- "name": "variable.other.jsdoc"
1805
- },
1806
- "3": {
1807
- "name": "other.description.jsdoc",
1808
- "patterns": [
1809
- {
1810
- "include": "#docblock"
1811
- }
1812
- ]
1813
- }
1814
- }
1781
+ "match": "(/\\*)(\\*/)",
1782
+ "name": "comment.block.empty.js"
1815
1783
  },
1816
1784
  {
1817
- "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 [*?]? # {...*} Variable number of mixed types\n )?\n\n (?:\n (?:\n function # {function(string, number)} function type\n \\s*\n (?:\n (?:\n \\(\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(...string)} variable number of parameters\n \\s*\\)\n )\n |\n (?:\n \\(\\s*\n (?:\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n (?:\n (?:\n (?:\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n )*\n (?:\n \\s*,\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(string, ...string)} variable number of parameters\n )?\n )\n |\n (?:\n =? # {function(string=)} optional parameter\n (?:\n (?<!=) # {function(string, string, number)} loop non-optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =?\n )*\n (?:\n (?<==) # {function(string, string=, number=)} loop optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =\n )*\n )\n )\n )?\n \\s*\\)\n )\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(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
1818
- "captures": {
1819
- "0": {
1820
- "name": "other.meta.jsdoc"
1821
- },
1822
- "1": {
1823
- "name": "entity.name.type.instance.jsdoc"
1824
- },
1825
- "2": {
1826
- "name": "other.description.jsdoc",
1827
- "patterns": [
1828
- {
1829
- "include": "#docblock"
1830
- }
1831
- ]
1832
- }
1833
- }
1834
- }
1835
- ]
1836
- },
1837
- "comments": {
1838
- "patterns": [
1839
- {
1840
- "begin": "/\\*\\*(?!/)",
1785
+ "begin": "/\\*\\*",
1841
1786
  "beginCaptures": {
1842
1787
  "0": {
1843
- "name": "punctuation.definition.comment.js"
1788
+ "name": "punctuation.section.begin.comment.js"
1844
1789
  }
1845
1790
  },
1846
1791
  "end": "\\*/",
1847
1792
  "endCaptures": {
1848
1793
  "0": {
1849
- "name": "punctuation.definition.comment.js"
1794
+ "name": "punctuation.section.end.comment.js"
1850
1795
  }
1851
1796
  },
1852
1797
  "name": "comment.block.documentation.js",
1853
1798
  "patterns": [
1854
1799
  {
1855
- "include": "#docblock"
1800
+ "include": "source.jsdoc"
1856
1801
  }
1857
1802
  ]
1858
1803
  },
@@ -1860,13 +1805,13 @@
1860
1805
  "begin": "/\\*",
1861
1806
  "beginCaptures": {
1862
1807
  "0": {
1863
- "name": "punctuation.definition.comment.js"
1808
+ "name": "punctuation.section.begin.comment.js"
1864
1809
  }
1865
1810
  },
1866
1811
  "end": "\\*/",
1867
1812
  "endCaptures": {
1868
1813
  "0": {
1869
- "name": "punctuation.definition.comment.js"
1814
+ "name": "punctuation.section.end.comment.js"
1870
1815
  }
1871
1816
  },
1872
1817
  "name": "comment.block.js"