github-linguist 5.0.11 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/source.antlr.json +2 -2
  3. data/grammars/source.batchfile.json +31 -39
  4. data/grammars/source.c++.json +2 -2
  5. data/grammars/source.c.json +1 -1
  6. data/grammars/source.capnp.json +2 -2
  7. data/grammars/source.chapel.json +2 -2
  8. data/grammars/source.clojure.json +3 -1
  9. data/grammars/source.coffee.json +6 -6
  10. data/grammars/source.crystal.json +1 -1
  11. data/grammars/source.csound-document.json +20 -5
  12. data/grammars/source.csound-score.json +1 -1
  13. data/grammars/source.csound.json +7 -20
  14. data/grammars/source.css.less.json +2 -2
  15. data/grammars/source.cython.json +2 -2
  16. data/grammars/source.dart.json +16 -20
  17. data/grammars/source.ditroff.json +3 -3
  18. data/grammars/source.elixir.json +3 -3
  19. data/grammars/source.erlang.json +1 -1
  20. data/grammars/source.fan.json +345 -0
  21. data/grammars/source.fancy.json +1 -1
  22. data/grammars/source.gdb.json +1 -1
  23. data/grammars/source.gdb.session.json +1 -1
  24. data/grammars/source.gdscript.json +1 -1
  25. data/grammars/source.gfm.json +16 -0
  26. data/grammars/source.grace.json +1 -1
  27. data/grammars/source.harbour.json +1 -1
  28. data/grammars/source.idl.json +1 -1
  29. data/grammars/source.java.json +2 -2
  30. data/grammars/source.jison.json +45 -7
  31. data/grammars/source.jisonlex.json +13 -3
  32. data/grammars/source.js.json +7 -7
  33. data/grammars/source.js.regexp.json +2 -2
  34. data/grammars/source.jsdoc.json +24 -49
  35. data/grammars/source.livescript.json +4 -4
  36. data/grammars/source.logtalk.json +1 -1
  37. data/grammars/source.lsl.json +1 -1
  38. data/grammars/source.lua.json +5 -7
  39. data/grammars/source.mask.json +2 -2
  40. data/grammars/source.nim.json +2 -2
  41. data/grammars/source.nim_filter.json +2 -2
  42. data/grammars/source.nimcfg.json +2 -2
  43. data/grammars/source.nix.json +2 -2
  44. data/grammars/source.nu.json +2 -2
  45. data/grammars/source.pan.json +711 -0
  46. data/grammars/source.pawn.json +1 -1
  47. data/grammars/source.perl6fe.json +384 -7
  48. data/grammars/source.php.zephir.json +2 -2
  49. data/grammars/source.reason.json +2 -2
  50. data/grammars/source.ring.json +277 -0
  51. data/grammars/source.rust.json +8 -3
  52. data/grammars/source.scad.json +2 -2
  53. data/grammars/source.shell.json +1 -1
  54. data/grammars/source.smalltalk.json +83 -16
  55. data/grammars/source.spin.json +2 -2
  56. data/grammars/source.sqf.json +1 -1
  57. data/grammars/source.supercollider.json +2 -2
  58. data/grammars/source.swift.json +41 -2
  59. data/grammars/source.tl.json +264 -0
  60. data/grammars/source.toml.json +3 -3
  61. data/grammars/source.vhdl.json +1 -1
  62. data/grammars/source.webassembly.json +344 -0
  63. data/grammars/source.yaml.json +2 -2
  64. data/grammars/text.haml.json +3 -3
  65. data/grammars/text.html.handlebars.json +17 -8
  66. data/grammars/text.html.markdown.source.gfm.mson.json +1 -1
  67. data/grammars/text.html.php.blade.json +987 -440
  68. data/grammars/text.html.php.json +6 -6
  69. data/grammars/text.html.soy.json +3 -3
  70. data/grammars/text.html.vue.json +10 -10
  71. data/grammars/text.marko.json +3 -3
  72. data/grammars/text.roff.json +6 -3
  73. data/lib/linguist/heuristics.rb +4 -4
  74. data/lib/linguist/languages.json +1 -1
  75. data/lib/linguist/languages.yml +54 -4
  76. data/lib/linguist/samples.json +3030 -470
  77. data/lib/linguist/vendor.yml +3 -0
  78. data/lib/linguist/version.rb +1 -1
  79. metadata +7 -2
@@ -255,7 +255,7 @@
255
255
  "name": "comment.line.number-sign.fancy"
256
256
  },
257
257
  {
258
- "match": "\\b(0[xX]\\h(?>_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0[bB][01]+)\\b",
258
+ "match": "\\b(0[xX][0-9A-Fa-f](?>_?[0-9A-Fa-f])*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0[bB][01]+)\\b",
259
259
  "name": "constant.numeric.fancy"
260
260
  }
261
261
  ],
@@ -161,7 +161,7 @@
161
161
  "stringEscapedChar": {
162
162
  "patterns": [
163
163
  {
164
- "match": "\\\\(?:\\\\|[abefnprtv'\"?]|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8})",
164
+ "match": "\\\\(?:\\\\|[abefnprtv'\"?]|[0-3]\\d{0,2}|[4-7]\\d?|x[a-fA-F0-9]{0,2}|u[a-fA-F0-9]{0,4}|U[a-fA-F0-9]{0,8})",
165
165
  "name": "constant.character.escape.gdb"
166
166
  },
167
167
  {
@@ -4,7 +4,7 @@
4
4
  "string_escaped_char": {
5
5
  "patterns": [
6
6
  {
7
- "match": "\\\\(\\\\|[abefnprtv'\"?]|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8})",
7
+ "match": "\\\\(\\\\|[abefnprtv'\"?]|[0-3]\\d{0,2}|[4-7]\\d?|x[a-fA-F0-9]{0,2}|u[a-fA-F0-9]{0,4}|U[a-fA-F0-9]{0,8})",
8
8
  "name": "constant.character.escape.c"
9
9
  },
10
10
  {
@@ -49,7 +49,7 @@
49
49
  "name": "string.quoted.double.node-path.gdscript"
50
50
  },
51
51
  {
52
- "match": "\\b(?i:0x\\h*)\\b",
52
+ "match": "\\b(?i:0x[0-9A-Fa-f]*)\\b",
53
53
  "name": "constant.numeric.integer.hexadecimal.gdscript"
54
54
  },
55
55
  {
@@ -1241,6 +1241,22 @@
1241
1241
  }
1242
1242
  ]
1243
1243
  },
1244
+ {
1245
+ "begin": "^\\s*(`{3,}|~{3,})\\s*([-\\w]+)\\s*$",
1246
+ "beginCaptures": {
1247
+ "0": {
1248
+ "name": "support.gfm"
1249
+ }
1250
+ },
1251
+ "end": "^\\s*\\1((?<=`)`+|(?<=~)~+)?\\s*$",
1252
+ "endCaptures": {
1253
+ "0": {
1254
+ "name": "support.gfm"
1255
+ }
1256
+ },
1257
+ "name": "markup.code.other.gfm",
1258
+ "contentName": "source.embedded.${2:/downcase}"
1259
+ },
1244
1260
  {
1245
1261
  "begin": "^\\s*(`{3,}|~{3,}).*$",
1246
1262
  "beginCaptures": {
@@ -441,7 +441,7 @@
441
441
  },
442
442
  "patterns": [
443
443
  {
444
- "match": "\\\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)",
444
+ "match": "\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)",
445
445
  "name": "constant.character.escape.grace"
446
446
  },
447
447
  {
@@ -62,7 +62,7 @@
62
62
  },
63
63
  "escaped_character": {
64
64
  "name": "constant.character.escape.harbour",
65
- "match": "\\\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)"
65
+ "match": "\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)"
66
66
  },
67
67
  "sigils": {
68
68
  "comment": "Sigil",
@@ -173,7 +173,7 @@
173
173
  "escaped_quote": {
174
174
  "patterns": [
175
175
  {
176
- "match": "\\\\(\\\\|[abefnprtv'\"?]|[0-3]\\d{,2}|[4-7]\\d?|x[a-zA-Z0-9]+)",
176
+ "match": "\\\\(\\\\|[abefnprtv'\"?]|[0-3]\\d{0,2}|[4-7]\\d?|x[a-zA-Z0-9]+)",
177
177
  "name": "constant.character.escape.idl"
178
178
  },
179
179
  {
@@ -508,7 +508,7 @@
508
508
  "name": "variable.language.java"
509
509
  },
510
510
  {
511
- "match": "\\b0[xX]\\h([\\h_]*\\h)?[lL]?(?!\\w|\\.)",
511
+ "match": "\\b0[xX][0-9A-Fa-f]([0-9A-Fa-f_]*[0-9A-Fa-f])?[lL]?(?!\\w|\\.)",
512
512
  "name": "constant.numeric.hex.java"
513
513
  },
514
514
  {
@@ -524,7 +524,7 @@
524
524
  "name": "constant.numeric.integer.java"
525
525
  },
526
526
  {
527
- "match": "(?x)\n\t\t\t\t\t\t(?<!\\w)\t\t\t\t\t\t\t\t\t\t# Ensure word boundry\n\t\t\t\t\t\t(?>\n\t\t\t\t\t\t\t0[xX]\t\t\t\t\t\t\t\t\t# Start literal\n\t\t\t\t\t\t\t(\\h([\\h_]*\\h)?)?\t\t\t\t\t\t# Optional Number\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(?<=\\h)\\.\t\t\t\t\t\t\t# A number must exist on\n\t\t\t\t\t\t | \\.(?=\\h)\t\t\t\t\t\t\t# one side of the decimal\n\t\t\t\t\t\t | (?<=\\h)\t\t\t\t\t\t\t\t# Decimal not required\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t(\\h([\\h_]*\\h)?)?\t\t\t\t\t\t# Optional Number\n\t\t\t\t\t\t\t[pP]\t\t\t\t\t\t\t\t\t# Exponent Indicator\n\t\t\t\t\t\t\t[+-]?(0|[1-9]([0-9_]*[0-9])?)\t\t\t# Signed Integer\n\t\t\t\t\t\t\t[fFdD]?\t\t\t\t\t\t\t\t\t# Float Type Suffix\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(?!\\w)\t\t\t\t\t\t\t\t\t\t# Ensure word boundry\n\t\t\t\t\t",
527
+ "match": "(?x)\n\t\t\t\t\t\t(?<!\\w)\t\t\t\t\t\t\t\t\t\t# Ensure word boundry\n\t\t\t\t\t\t(?>\n\t\t\t\t\t\t\t0[xX]\t\t\t\t\t\t\t\t\t# Start literal\n\t\t\t\t\t\t\t([0-9A-Fa-f]([0-9A-Fa-f_]*[0-9A-Fa-f])?)?\t\t\t\t\t\t# Optional Number\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(?<=[0-9A-Fa-f])\\.\t\t\t\t\t\t\t# A number must exist on\n\t\t\t\t\t\t | \\.(?=[0-9A-Fa-f])\t\t\t\t\t\t\t# one side of the decimal\n\t\t\t\t\t\t | (?<=[0-9A-Fa-f])\t\t\t\t\t\t\t\t# Decimal not required\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t([0-9A-Fa-f]([0-9A-Fa-f_]*[0-9A-Fa-f])?)?\t\t\t\t\t\t# Optional Number\n\t\t\t\t\t\t\t[pP]\t\t\t\t\t\t\t\t\t# Exponent Indicator\n\t\t\t\t\t\t\t[+-]?(0|[1-9]([0-9_]*[0-9])?)\t\t\t# Signed Integer\n\t\t\t\t\t\t\t[fFdD]?\t\t\t\t\t\t\t\t\t# Float Type Suffix\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(?!\\w)\t\t\t\t\t\t\t\t\t\t# Ensure word boundry\n\t\t\t\t\t",
528
528
  "name": "constant.numeric.hex-float.java"
529
529
  },
530
530
  {
@@ -24,6 +24,7 @@
24
24
  {
25
25
  "name": "meta.section.epilogue.jison",
26
26
  "begin": "\\G",
27
+ "contentName": "source.js.embedded.jison",
27
28
  "patterns": [
28
29
  {
29
30
  "include": "#epilogue_section"
@@ -97,6 +98,7 @@
97
98
  "name": "meta.section.user-code.jisonlex",
98
99
  "begin": "\\G",
99
100
  "end": "(?=/lex)",
101
+ "contentName": "source.js.embedded.jisonlex",
100
102
  "patterns": [
101
103
  {
102
104
  "include": "source.jisonlex#user_code_section"
@@ -178,6 +180,28 @@
178
180
  }
179
181
  ]
180
182
  },
183
+ {
184
+ "name": "meta.parser-type.jison",
185
+ "begin": "%(parser-type)\\b",
186
+ "end": "$",
187
+ "beginCaptures": {
188
+ "0": {
189
+ "name": "keyword.other.declaration.$1.jison"
190
+ }
191
+ },
192
+ "patterns": [
193
+ {
194
+ "include": "#comments"
195
+ },
196
+ {
197
+ "include": "#quoted_strings"
198
+ },
199
+ {
200
+ "name": "string.unquoted.jison",
201
+ "match": "\\b[[:alpha:]_](?:[\\w-]*\\w)?\\b"
202
+ }
203
+ ]
204
+ },
181
205
  {
182
206
  "name": "meta.token.jison",
183
207
  "begin": "%(token)\\b",
@@ -214,7 +238,7 @@
214
238
  },
215
239
  {
216
240
  "name": "keyword.other.declaration.$1.jison",
217
- "match": "%(debug|import|parser-type)\\b"
241
+ "match": "%(debug|import)\\b"
218
242
  },
219
243
  {
220
244
  "name": "invalid.illegal.jison",
@@ -320,7 +344,7 @@
320
344
  },
321
345
  {
322
346
  "name": "keyword.other.$0.jison",
323
- "match": "\\berror\\b"
347
+ "match": "\\b(?:EOF|error)\\b"
324
348
  },
325
349
  {
326
350
  "name": "keyword.other.empty.jison",
@@ -361,6 +385,7 @@
361
385
  "name": "punctuation.definition.action.end.jison"
362
386
  }
363
387
  },
388
+ "contentName": "source.js.embedded.jison",
364
389
  "patterns": [
365
390
  {
366
391
  "include": "source.js"
@@ -398,6 +423,7 @@
398
423
  "name": "punctuation.definition.action.end.jison"
399
424
  }
400
425
  },
426
+ "contentName": "source.js.embedded.jison",
401
427
  "patterns": [
402
428
  {
403
429
  "include": "source.js"
@@ -409,7 +435,7 @@
409
435
  },
410
436
  {
411
437
  "name": "meta.action.jison",
412
- "begin": "(?:->|→)",
438
+ "begin": "->|→",
413
439
  "end": "((//).*)?(?=$)",
414
440
  "beginCaptures": {
415
441
  "0": {
@@ -424,6 +450,7 @@
424
450
  "name": "punctuation.definition.comment.js"
425
451
  }
426
452
  },
453
+ "contentName": "source.js.embedded.jison",
427
454
  "patterns": [
428
455
  {
429
456
  "include": "source.js"
@@ -519,7 +546,7 @@
519
546
  "numbers": {
520
547
  "patterns": [
521
548
  {
522
- "match": "(0[Xx])(\\h+)",
549
+ "match": "(0[Xx])([0-9A-Fa-f]+)",
523
550
  "captures": {
524
551
  "1": {
525
552
  "name": "storage.type.number.jison"
@@ -540,7 +567,7 @@
540
567
  {
541
568
  "name": "meta.options.jison",
542
569
  "begin": "%options\\b",
543
- "end": "$",
570
+ "end": "^(?=\\S|\\s*$)",
544
571
  "beginCaptures": {
545
572
  "0": {
546
573
  "name": "keyword.other.options.jison"
@@ -564,7 +591,17 @@
564
591
  },
565
592
  "patterns": [
566
593
  {
567
- "include": "quoted_strings"
594
+ "include": "#comments"
595
+ },
596
+ {
597
+ "name": "constant.language.boolean.$1.jison",
598
+ "match": "\\b(true|false)\\b"
599
+ },
600
+ {
601
+ "include": "#numbers"
602
+ },
603
+ {
604
+ "include": "#quoted_strings"
568
605
  },
569
606
  {
570
607
  "name": "string.unquoted.jison",
@@ -573,7 +610,7 @@
573
610
  ]
574
611
  },
575
612
  {
576
- "include": "quoted_strings"
613
+ "include": "#quoted_strings"
577
614
  }
578
615
  ]
579
616
  }
@@ -619,6 +656,7 @@
619
656
  "name": "punctuation.definition.user-code-block.end.jison"
620
657
  }
621
658
  },
659
+ "contentName": "source.js.embedded.jison",
622
660
  "patterns": [
623
661
  {
624
662
  "include": "source.js"
@@ -24,6 +24,7 @@
24
24
  {
25
25
  "name": "meta.section.user-code.jisonlex",
26
26
  "begin": "\\G",
27
+ "contentName": "source.js.embedded.jison",
27
28
  "patterns": [
28
29
  {
29
30
  "include": "#user_code_section"
@@ -70,7 +71,7 @@
70
71
  "end": "$",
71
72
  "beginCaptures": {
72
73
  "0": {
73
- "name": "entity.name.variable.jisonlex"
74
+ "name": "entity.name.other.definition.jisonlex"
74
75
  }
75
76
  },
76
77
  "patterns": [
@@ -198,6 +199,7 @@
198
199
  "name": "punctuation.definition.comment.js"
199
200
  }
200
201
  },
202
+ "contentName": "source.js.embedded.jison",
201
203
  "patterns": [
202
204
  {
203
205
  "include": "source.jison#include_declarations"
@@ -222,8 +224,16 @@
222
224
  "name_uses": {
223
225
  "patterns": [
224
226
  {
225
- "name": "variable.other.jisonlex",
226
- "match": "\\{[[:alpha:]_](?:[\\w-]*\\w)?\\}"
227
+ "name": "constant.other.name-use.jisonlex",
228
+ "match": "(\\{)[[:alpha:]_](?:[\\w-]*\\w)?(\\})",
229
+ "captures": {
230
+ "1": {
231
+ "name": "punctuation.definition.name-use.begin.jisonlex"
232
+ },
233
+ "2": {
234
+ "name": "punctuation.definition.name-use.end.jisonlex"
235
+ }
236
+ }
227
237
  }
228
238
  ]
229
239
  },
@@ -1431,7 +1431,7 @@
1431
1431
  }
1432
1432
  },
1433
1433
  {
1434
- "match": "\\\\(x\\h{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",
1434
+ "match": "\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",
1435
1435
  "name": "constant.character.escape.js"
1436
1436
  }
1437
1437
  ]
@@ -1772,10 +1772,10 @@
1772
1772
  {
1773
1773
  "captures": {
1774
1774
  "1": {
1775
- "name": "punctuation.section.begin.comment.js"
1775
+ "name": "punctuation.definition.comment.begin.js"
1776
1776
  },
1777
1777
  "2": {
1778
- "name": "punctuation.section.end.comment.js"
1778
+ "name": "punctuation.definition.comment.end.js"
1779
1779
  }
1780
1780
  },
1781
1781
  "match": "(/\\*)(\\*/)",
@@ -1785,13 +1785,13 @@
1785
1785
  "begin": "/\\*\\*",
1786
1786
  "beginCaptures": {
1787
1787
  "0": {
1788
- "name": "punctuation.section.begin.comment.js"
1788
+ "name": "punctuation.definition.comment.begin.js"
1789
1789
  }
1790
1790
  },
1791
1791
  "end": "\\*/",
1792
1792
  "endCaptures": {
1793
1793
  "0": {
1794
- "name": "punctuation.section.end.comment.js"
1794
+ "name": "punctuation.definition.comment.end.js"
1795
1795
  }
1796
1796
  },
1797
1797
  "name": "comment.block.documentation.js",
@@ -1805,13 +1805,13 @@
1805
1805
  "begin": "/\\*",
1806
1806
  "beginCaptures": {
1807
1807
  "0": {
1808
- "name": "punctuation.section.begin.comment.js"
1808
+ "name": "punctuation.definition.comment.begin.js"
1809
1809
  }
1810
1810
  },
1811
1811
  "end": "\\*/",
1812
1812
  "endCaptures": {
1813
1813
  "0": {
1814
- "name": "punctuation.section.end.comment.js"
1814
+ "name": "punctuation.definition.comment.end.js"
1815
1815
  }
1816
1816
  },
1817
1817
  "name": "comment.block.js"
@@ -17,7 +17,7 @@
17
17
  "name": "constant.character.character-class.regexp"
18
18
  },
19
19
  {
20
- "match": "\\\\([0-7]{3}|x\\h\\h|u\\h\\h\\h\\h)",
20
+ "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})",
21
21
  "name": "constant.character.numeric.regexp"
22
22
  },
23
23
  {
@@ -133,7 +133,7 @@
133
133
  "name": "constant.character.escape.backslash.regexp"
134
134
  }
135
135
  },
136
- "match": "(?:.|(\\\\(?:[0-7]{3}|x\\h\\h|u\\h\\h\\h\\h))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x\\h\\h|u\\h\\h\\h\\h))|(\\\\c[A-Z])|(\\\\.))",
136
+ "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
137
137
  "name": "constant.other.character-class.range.regexp"
138
138
  },
139
139
  {
@@ -14,7 +14,7 @@
14
14
  "name": "constant.language.access-type.jsdoc"
15
15
  }
16
16
  },
17
- "match": "(?x)\n((@)access)\n\\s+\n(private|protected|public)\n\\b"
17
+ "match": "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b"
18
18
  },
19
19
  {
20
20
  "match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s<>*/]\n (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n \\s*\n (<)\n ([^>\\s]+)\n (>)\n)?",
@@ -146,7 +146,7 @@
146
146
  "name": "entity.name.type.instance.jsdoc"
147
147
  }
148
148
  },
149
- "match": "(?x)\n((@)see)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n |\n # JSDoc namepath\n (\n (?!https?://)\n (?:[^@\\s*/]|\\*[^/])+\n )\n)"
149
+ "match": "(?x)\n((@)see)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n |\n # JSDoc namepath\n (\n (?!\n # Avoid matching bare URIs (also acceptable as links)\n https?://\n |\n # Avoid matching {@inline tags}; we match those below\n (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n {@(?:link|linkcode|linkplain|tutorial)\\b\n )\n # Matched namepath\n (?:[^@\\s*/]|\\*[^/])+\n )\n)"
150
150
  },
151
151
  {
152
152
  "captures": {
@@ -224,35 +224,32 @@
224
224
  },
225
225
  {
226
226
  "name": "variable.other.jsdoc",
227
- "begin": "\\[",
228
- "end": "\\]|(?=\\*/)",
229
- "patterns": [
230
- {
231
- "match": "(=)((?:[^\\]*]|\\*[^/])*)",
232
- "captures": {
233
- "1": {
234
- "name": "keyword.operator.assignment.jsdoc"
227
+ "match": "(?x)\n(\\[)\\s*\n[\\w$]+\n(?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [\\w$]+\n)*\n(?:\n \\s*\n (=) # [foo=bar] Default parameter value\n \\s*\n (\n # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\n (?:\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|[^*])*? # Everything else\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))",
228
+ "captures": {
229
+ "1": {
230
+ "name": "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
231
+ },
232
+ "2": {
233
+ "name": "keyword.operator.assignment.jsdoc"
234
+ },
235
+ "3": {
236
+ "name": "source.embedded.js",
237
+ "patterns": [
238
+ {
239
+ "include": "#inline-tags"
235
240
  },
236
- "2": {
237
- "name": "source.embedded.js",
238
- "patterns": [
239
- {
240
- "include": "#inline-tags"
241
- },
242
- {
243
- "include": "source.js"
244
- }
245
- ]
241
+ {
242
+ "include": "source.js"
246
243
  }
247
- }
244
+ ]
248
245
  },
249
- {
250
- "include": "#brackets"
246
+ "4": {
247
+ "name": "punctuation.definition.optional-value.end.bracket.square.jsdoc"
251
248
  },
252
- {
253
- "include": "#quotes"
249
+ "5": {
250
+ "name": "invalid.illegal.syntax.jsdoc"
254
251
  }
255
- ]
252
+ }
256
253
  }
257
254
  ]
258
255
  },
@@ -334,7 +331,7 @@
334
331
  "name": "punctuation.definition.block.tag.jsdoc"
335
332
  }
336
333
  },
337
- "match": "(?x) (@)\n(?:abstract|access|alias|arg|argument|async|attribute|augments|author|beta|borrows|bubbles\n|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright\n|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception\n|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func\n|function|global|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|kind\n|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace\n|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|preserve|private|prop\n|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule\n|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation\n|version|virtual|writeOnce)\n\\b",
334
+ "match": "(?x) (@)\n(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles\n|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright\n|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception\n|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func\n|function|global|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface\n|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module\n|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|preserve\n|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static\n|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted\n|uses|var|variation|version|virtual|writeOnce)\n\\b",
338
335
  "name": "storage.type.class.jsdoc"
339
336
  },
340
337
  {
@@ -425,28 +422,6 @@
425
422
  }
426
423
  ]
427
424
  },
428
- "quotes": {
429
- "patterns": [
430
- {
431
- "begin": "'",
432
- "end": "'|(?=\\*/)",
433
- "patterns": [
434
- {
435
- "include": "#quotes"
436
- }
437
- ]
438
- },
439
- {
440
- "begin": "\"",
441
- "end": "\"|(?=\\*/)",
442
- "patterns": [
443
- {
444
- "include": "#quotes"
445
- }
446
- ]
447
- }
448
- ]
449
- },
450
425
  "type": {
451
426
  "patterns": [
452
427
  {