github-linguist 5.2.0 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/annotation.liquidhaskell.haskell.json +1445 -0
  3. data/grammars/hint.haskell.json +134 -17
  4. data/grammars/hint.message.haskell.json +134 -17
  5. data/grammars/hint.type.haskell.json +134 -17
  6. data/grammars/source.abl.json +48 -48
  7. data/grammars/source.afm.json +8 -1
  8. data/grammars/source.angelscript.json +195 -0
  9. data/grammars/source.ats.json +128 -58
  10. data/grammars/source.awk.json +138 -138
  11. data/grammars/source.ballerina.json +434 -0
  12. data/grammars/source.chapel.json +1 -1
  13. data/grammars/source.clips.json +20 -20
  14. data/grammars/source.cobol.json +4 -3
  15. data/grammars/source.coffee.json +556 -109
  16. data/grammars/source.cs.json +10 -5
  17. data/grammars/source.csound-document.json +1 -1
  18. data/grammars/source.csound-score.json +9 -9
  19. data/grammars/source.csound.json +23 -28
  20. data/grammars/source.css.json +6 -5
  21. data/grammars/source.data-weave.json +1584 -0
  22. data/grammars/source.elixir.json +3 -61
  23. data/grammars/source.elm.json +88 -88
  24. data/grammars/source.emacs.lisp.json +12 -1
  25. data/grammars/source.haskell.json +134 -17
  26. data/grammars/source.hsig.json +1376 -0
  27. data/grammars/source.httpspec.json +128 -128
  28. data/grammars/source.jison.json +6 -14
  29. data/grammars/source.jisonlex.json +1 -9
  30. data/grammars/source.js.json +1 -0
  31. data/grammars/source.js.regexp.json +0 -4
  32. data/grammars/source.js.regexp.replacement.json +0 -4
  33. data/grammars/source.jsdoc.json +3 -3
  34. data/grammars/source.lsl.json +146 -53
  35. data/grammars/source.mercury.json +166 -166
  36. data/grammars/source.ne.json +108 -0
  37. data/grammars/source.nim_filter.json +51 -51
  38. data/grammars/source.nut.json +266 -0
  39. data/grammars/source.opal.json +112 -112
  40. data/grammars/source.opalsysdefs.json +16 -16
  41. data/grammars/source.pan.json +1 -1
  42. data/grammars/source.papyrus.skyrim.json +720 -720
  43. data/grammars/source.pawn.json +2 -2
  44. data/grammars/source.prolog.eclipse.json +42 -42
  45. data/grammars/source.prolog.json +41 -41
  46. data/grammars/source.purescript.json +41 -25
  47. data/grammars/source.python.json +47 -34
  48. data/grammars/source.racket.json +54 -54
  49. data/grammars/source.reason.json +37 -3
  50. data/grammars/source.regexp.python.json +31 -0
  51. data/grammars/source.ruby.gemfile.json +27 -0
  52. data/grammars/source.ruby.json +1057 -356
  53. data/grammars/source.rust.json +1 -1
  54. data/grammars/source.sbt.json +13 -3
  55. data/grammars/source.scala.json +74 -55
  56. data/grammars/source.shaderlab.json +1 -1
  57. data/grammars/source.shell.json +26 -21
  58. data/grammars/source.shen.json +91 -91
  59. data/grammars/source.sqf.json +1 -1
  60. data/grammars/source.supercollider.json +1 -1
  61. data/grammars/source.swift.json +4 -0
  62. data/grammars/source.terra.json +36 -37
  63. data/grammars/source.terraform.json +98 -98
  64. data/grammars/source.ts.json +2231 -1677
  65. data/grammars/source.tsx.json +142 -3520
  66. data/grammars/source.vbnet.json +201 -263
  67. data/grammars/source.viml.json +2 -2
  68. data/grammars/source.wdl.json +200 -0
  69. data/grammars/source.yaml.json +34 -16
  70. data/grammars/text.find-refs.json +3 -3
  71. data/grammars/text.haml.json +1 -1
  72. data/grammars/text.html.abl.json +6 -6
  73. data/grammars/text.html.erb.json +8 -11
  74. data/grammars/text.html.php.blade.json +256 -220
  75. data/grammars/text.html.vue.json +1 -1
  76. data/grammars/text.slim.json +31 -17
  77. data/grammars/text.tex.latex.haskell.json +150 -33
  78. data/lib/linguist/heuristics.rb +8 -0
  79. data/lib/linguist/languages.json +1 -1
  80. data/lib/linguist/languages.yml +82 -26
  81. data/lib/linguist/samples.json +134512 -132868
  82. data/lib/linguist/vendor.yml +3 -0
  83. data/lib/linguist/version.rb +1 -1
  84. metadata +13 -4
@@ -167,7 +167,7 @@
167
167
  "comment": "Type parameters",
168
168
  "name": "meta.type_params.rust",
169
169
  "begin": "<(?![=<])",
170
- "end": ">",
170
+ "end": "(?<![-])>",
171
171
  "patterns": [
172
172
  {
173
173
  "include": "#block_comment"
@@ -10,23 +10,33 @@
10
10
  {
11
11
  "captures": {
12
12
  "1": {
13
- "name": "entity.name.setting.sbt"
13
+ "name": "constant.other.setting.sbt"
14
14
  }
15
15
  },
16
16
  "match": "(\\w*)\\s+(?=.*=)"
17
17
  },
18
18
  {
19
19
  "match": "\\b(at)\\b",
20
- "name": "keyword.sbt"
20
+ "name": "keyword.control.directive.sbt"
21
21
  },
22
22
  {
23
23
  "begin": "\"",
24
+ "beginCaptures": {
25
+ "1": {
26
+ "name": "punctuation.definition.string.begin.sbt"
27
+ }
28
+ },
24
29
  "end": "\"",
30
+ "endCaptures": {
31
+ "1": {
32
+ "name": "punctuation.definition.string.end.sbt"
33
+ }
34
+ },
25
35
  "name": "string.quoted.double.sbt",
26
36
  "patterns": [
27
37
  {
28
38
  "match": "\\\\.",
29
- "name": "constant.character.escape.untitled"
39
+ "name": "constant.character.escape.sbt"
30
40
  }
31
41
  ]
32
42
  }
@@ -15,14 +15,21 @@
15
15
  "repository": {
16
16
  "block-comments": {
17
17
  "begin": "/\\*",
18
+ "beginCaptures": {
19
+ "1": {
20
+ "name": "punctuation.definition.comment.begin.scala"
21
+ }
22
+ },
18
23
  "end": "\\*/",
24
+ "endCaptures": {
25
+ "1": {
26
+ "name": "punctuation.definition.comment.end.scala"
27
+ }
28
+ },
19
29
  "name": "comment.block.scala",
20
30
  "patterns": [
21
31
  {
22
32
  "include": "#block-comments"
23
- },
24
- {
25
- "match": "(?x)\n\t\t\t(?! /\\*)\n\t\t\t(?! \\*/)\n\t\t "
26
33
  }
27
34
  ]
28
35
  },
@@ -76,9 +83,6 @@
76
83
  {
77
84
  "include": "#comments"
78
85
  },
79
- {
80
- "include": "#block-comments"
81
- },
82
86
  {
83
87
  "include": "#strings"
84
88
  },
@@ -101,7 +105,7 @@
101
105
  "include": "#char-literal"
102
106
  },
103
107
  {
104
- "include": "#empty-parentheses"
108
+ "include": "#empty-blocks"
105
109
  },
106
110
  {
107
111
  "include": "#parameter-list"
@@ -163,7 +167,7 @@
163
167
  "name": "keyword.other.documentation.scaladoc.scala"
164
168
  },
165
169
  "2": {
166
- "name": "entity.name.class"
170
+ "name": "entity.name.type.class.scala"
167
171
  }
168
172
  },
169
173
  "match": "(@(?:tparam|throws))\\s+(\\S+)"
@@ -178,7 +182,7 @@
178
182
  "name": "punctuation.definition.documentation.link.scala"
179
183
  },
180
184
  "2": {
181
- "name": "entity.other.documentation.link.scala"
185
+ "name": "entity.name.type.class.documentation.link.scala"
182
186
  },
183
187
  "3": {
184
188
  "name": "punctuation.definition.documentation.link.scala"
@@ -189,14 +193,7 @@
189
193
  ]
190
194
  },
191
195
  {
192
- "begin": "/\\*",
193
- "captures": {
194
- "0": {
195
- "name": "punctuation.definition.comment.scala"
196
- }
197
- },
198
- "end": "\\*/",
199
- "name": "comment.block.scala"
196
+ "include": "#block-comments"
200
197
  },
201
198
  {
202
199
  "captures": {
@@ -207,7 +204,7 @@
207
204
  "name": "punctuation.definition.comment.scala"
208
205
  }
209
206
  },
210
- "match": "\\s*((//).*$)"
207
+ "match": "\\s*((//).*$\\n?)"
211
208
  }
212
209
  ]
213
210
  },
@@ -240,10 +237,10 @@
240
237
  {
241
238
  "captures": {
242
239
  "1": {
243
- "name": "keyword.declaration.scala"
240
+ "name": "keyword.control.def.scala"
244
241
  },
245
242
  "2": {
246
- "name": "entity.name.function.declaration"
243
+ "name": "entity.name.function.declaration.scala"
247
244
  }
248
245
  },
249
246
  "match": "(?x)\n\t\t\t\t\t\t\\b(def)\\s+\n\t\t\t\t\t\t(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\\s])(?=[(\\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~><^+*%:!#|/@\\\\]+)"
@@ -251,24 +248,24 @@
251
248
  {
252
249
  "captures": {
253
250
  "1": {
254
- "name": "keyword.declaration.scala"
251
+ "name": "storage.modifier.case.scala"
255
252
  },
256
253
  "2": {
257
- "name": "keyword.declaration.scala"
254
+ "name": "storage.type.$1.scala"
258
255
  },
259
256
  "3": {
260
- "name": "entity.name.class.declaration"
257
+ "name": "entity.name.type.class.declaration.scala"
261
258
  }
262
259
  },
263
- "match": "(case)?\\b(class|trait|object)\\s+([^\\s\\{\\(\\[]+)"
260
+ "match": "(?:(case) +)?\\b(class|trait|object)\\s+([^\\s\\{\\(\\[]+)"
264
261
  },
265
262
  {
266
263
  "captures": {
267
264
  "1": {
268
- "name": "keyword.declaration.scala"
265
+ "name": "keyword.control.type.scala"
269
266
  },
270
267
  "2": {
271
- "name": "entity.name.type.declaration"
268
+ "name": "entity.name.type.type.declaration.scala"
272
269
  }
273
270
  },
274
271
  "match": "\\b(type)\\s+(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\\s])(?=[\\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~><^+*%:!#|/@\\\\]+)"
@@ -276,13 +273,13 @@
276
273
  {
277
274
  "captures": {
278
275
  "1": {
279
- "name": "keyword.declaration.stable.scala"
276
+ "name": "storage.type.stable.scala"
280
277
  },
281
278
  "2": {
282
- "name": "keyword.declaration.volatile.scala"
279
+ "name": "storage.type.volatile.scala"
283
280
  },
284
281
  "3": {
285
- "name": "entity.name.val.declaration"
282
+ "name": "entity.name.type.val.declaration.scala"
286
283
  }
287
284
  },
288
285
  "match": "\\b(?:(val)|(var))\\s+(?:(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\\s])(?=[\\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~><^+*%:!#|/@\\\\]+)|(?=\\())"
@@ -290,21 +287,24 @@
290
287
  {
291
288
  "captures": {
292
289
  "1": {
293
- "name": "keyword.declaration.scala"
290
+ "name": "storage.type.package.scala"
294
291
  },
295
292
  "2": {
296
- "name": "entity.name.class.declaration"
293
+ "name": "storage.type.package.object.scala"
294
+ },
295
+ "3": {
296
+ "name": "entity.name.type.class.declaration.scala"
297
297
  }
298
298
  },
299
- "match": "\\b(package object)\\s+([^\\s\\{\\(\\[]+)"
299
+ "match": "\\b(package) (object)\\s+([^\\s\\{\\(\\[]+)"
300
300
  },
301
301
  {
302
302
  "captures": {
303
303
  "1": {
304
- "name": "keyword.other.scoping.scala"
304
+ "name": "storage.type.package.scala"
305
305
  },
306
306
  "2": {
307
- "name": "entity.name.package.scala"
307
+ "name": "entity.name.type.package.scala"
308
308
  }
309
309
  },
310
310
  "match": "\\b(package)\\s+([\\w\\.]+)",
@@ -312,20 +312,39 @@
312
312
  }
313
313
  ]
314
314
  },
315
- "empty-parentheses": {
316
- "captures": {
317
- "1": {
318
- "name": "meta.bracket.scala"
315
+ "empty-blocks": {
316
+ "patterns": [
317
+ {
318
+ "captures": {
319
+ "1": {
320
+ "name": "punctuation.definition.parentheses.begin.scala"
321
+ },
322
+ "2": {
323
+ "name": "punctuation.definition.parentheses.end.scala"
324
+ }
325
+ },
326
+ "match": "(\\()(\\))",
327
+ "name": "meta.parentheses.scala"
328
+ },
329
+ {
330
+ "captures": {
331
+ "1": {
332
+ "name": "punctuation.definition.parentheses.begin.scala"
333
+ },
334
+ "2": {
335
+ "name": "punctuation.definition.parentheses.end.scala"
336
+ }
337
+ },
338
+ "match": "(\\{)(\\})",
339
+ "name": "meta.braces.scala"
319
340
  }
320
- },
321
- "match": "(\\(\\))",
322
- "name": "meta.parentheses.scala"
341
+ ]
323
342
  },
324
343
  "imports": {
325
344
  "begin": "\\b(import)\\s+",
326
345
  "beginCaptures": {
327
346
  "1": {
328
- "name": "keyword.other.import.scala"
347
+ "name": "keyword.control.import.scala"
329
348
  }
330
349
  },
331
350
  "end": "(?<=[\\n;])",
@@ -336,11 +355,11 @@
336
355
  },
337
356
  {
338
357
  "match": "([^\\s{;.]+)\\s*\\.\\s*",
339
- "name": "variable.package.scala"
358
+ "name": "variable.other.package.scala"
340
359
  },
341
360
  {
342
361
  "match": "([^\\s{;.]+)\\s*",
343
- "name": "variable.import.scala"
362
+ "name": "variable.other.import.scala"
344
363
  },
345
364
  {
346
365
  "begin": "{",
@@ -360,20 +379,20 @@
360
379
  {
361
380
  "captures": {
362
381
  "1": {
363
- "name": "variable.import.renamed-from.scala"
382
+ "name": "variable.other.import.renamed-from.scala"
364
383
  },
365
384
  "2": {
366
- "name": "keyword.other.arrow.scala"
385
+ "name": "keyword.operator.scala"
367
386
  },
368
387
  "3": {
369
- "name": "variable.import.renamed-to.scala"
388
+ "name": "variable.other.import.renamed-to.scala"
370
389
  }
371
390
  },
372
391
  "match": "(?x) \\s*\n\t\t\t\t([^\\s.,}]+) \\s*\n\t\t\t\t(=>) \\s*\n\t\t\t\t([^\\s.,}]+) \\s*\n\t\t\t "
373
392
  },
374
393
  {
375
394
  "match": "([^\\s.,}]+)",
376
- "name": "variable.import.scala"
395
+ "name": "variable.other.import.scala"
377
396
  }
378
397
  ]
379
398
  }
@@ -384,7 +403,7 @@
384
403
  {
385
404
  "captures": {
386
405
  "1": {
387
- "name": "keyword.declaration.scala"
406
+ "name": "storage.modifier.extends.scala"
388
407
  },
389
408
  "2": {
390
409
  "name": "entity.other.inherited-class.scala"
@@ -397,10 +416,10 @@
397
416
  "initialization": {
398
417
  "captures": {
399
418
  "1": {
400
- "name": "keyword.declaration.scala"
419
+ "name": "keyword.control.directive.scala"
401
420
  },
402
421
  "2": {
403
- "name": "entity.name.class"
422
+ "name": "entity.name.type.class.scala"
404
423
  }
405
424
  },
406
425
  "match": "\\b(new)\\s+([^\\s\\{\\(\\[]+)"
@@ -483,24 +502,24 @@
483
502
  "qualifiedClassName": {
484
503
  "captures": {
485
504
  "1": {
486
- "name": "entity.name.class"
505
+ "name": "entity.name.type.class.scala"
487
506
  }
488
507
  },
489
508
  "match": "(\\b([A-Z][\\w]*))"
490
509
  },
491
510
  "scala-symbol": {
492
511
  "match": "'\\w+(?=[^'\\w])",
493
- "name": "entity.name.symbol"
512
+ "name": "entity.name.type.symbol.scala"
494
513
  },
495
514
  "storage-modifiers": {
496
515
  "patterns": [
497
516
  {
498
517
  "match": "\\b(private\\[\\S+\\]|protected\\[\\S+\\]|private|protected)\\b",
499
- "name": "storage.modifier.access"
518
+ "name": "storage.modifier.access.scala"
500
519
  },
501
520
  {
502
521
  "match": "\\b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|override|@transient|@native)\\b",
503
- "name": "storage.modifier.other"
522
+ "name": "storage.modifier.other.scala"
504
523
  }
505
524
  ]
506
525
  },
@@ -145,7 +145,7 @@
145
145
  },
146
146
  {
147
147
  "name": "support.variable.transformations.shaderlab",
148
- "match": "\\b(UNITY_MATRIX_MVP|UNITY_MATRIX_MV|UNITY_MATRIX_V|UNITY_MATRIX_P|UNITY_MATRIX_VP|UNITY_MATRIX_T_MV|UNITY_MATRIX_IT_MV|_Object2World|_World2Object)\\b"
148
+ "match": "\\b(UNITY_MATRIX_MVP|UNITY_MATRIX_MV|UNITY_MATRIX_M|UNITY_MATRIX_V|UNITY_MATRIX_P|UNITY_MATRIX_VP|UNITY_MATRIX_T_MV|UNITY_MATRIX_I_V|UNITY_MATRIX_IT_MV|_Object2World|_World2Object|unity_ObjectToWorld|unity_WorldToObject)\\b"
149
149
  },
150
150
  {
151
151
  "name": "support.variable.camera.shaderlab",
@@ -44,10 +44,10 @@
44
44
  "include": "#loop"
45
45
  },
46
46
  {
47
- "include": "#function-definition"
47
+ "include": "#string"
48
48
  },
49
49
  {
50
- "include": "#string"
50
+ "include": "#function-definition"
51
51
  },
52
52
  {
53
53
  "include": "#variable"
@@ -308,7 +308,7 @@
308
308
  "heredoc": {
309
309
  "patterns": [
310
310
  {
311
- "begin": "(<<)-(\"|'|)(RUBY)\\2",
311
+ "begin": "(<<)-(\"|'|)\\s*(RUBY)(?=\\s|;|&|<|\"|')\\2",
312
312
  "beginCaptures": {
313
313
  "1": {
314
314
  "name": "keyword.operator.heredoc.shell"
@@ -332,7 +332,7 @@
332
332
  ]
333
333
  },
334
334
  {
335
- "begin": "(<<)(\"|'|)(RUBY)\\2",
335
+ "begin": "(<<)(\"|'|)\\s*(RUBY)(?=\\s|;|&|<|\"|')\\2",
336
336
  "beginCaptures": {
337
337
  "1": {
338
338
  "name": "keyword.operator.heredoc.shell"
@@ -356,7 +356,7 @@
356
356
  ]
357
357
  },
358
358
  {
359
- "begin": "(<<)-(\"|'|)(PYTHON)\\2",
359
+ "begin": "(<<)-(\"|'|)\\s*(PYTHON)(?=\\s|;|&|<|\"|')\\2",
360
360
  "beginCaptures": {
361
361
  "1": {
362
362
  "name": "keyword.operator.heredoc.shell"
@@ -380,7 +380,7 @@
380
380
  ]
381
381
  },
382
382
  {
383
- "begin": "(<<)(\"|'|)(PYTHON)\\2",
383
+ "begin": "(<<)(\"|'|)\\s*(PYTHON)(?=\\s|;|&|<|\"|')\\2",
384
384
  "beginCaptures": {
385
385
  "1": {
386
386
  "name": "keyword.operator.heredoc.shell"
@@ -404,7 +404,7 @@
404
404
  ]
405
405
  },
406
406
  {
407
- "begin": "(<<)-(\"|'|)(APPLESCRIPT)\\2",
407
+ "begin": "(<<)-(\"|'|)\\s*(APPLESCRIPT)(?=\\s|;|&|<|\"|')\\2",
408
408
  "beginCaptures": {
409
409
  "1": {
410
410
  "name": "keyword.operator.heredoc.shell"
@@ -428,7 +428,7 @@
428
428
  ]
429
429
  },
430
430
  {
431
- "begin": "(<<)(\"|'|)(APPLESCRIPT)\\2",
431
+ "begin": "(<<)(\"|'|)\\s*(APPLESCRIPT)(?=\\s|;|&|<|\"|')\\2",
432
432
  "beginCaptures": {
433
433
  "1": {
434
434
  "name": "keyword.operator.heredoc.shell"
@@ -452,7 +452,7 @@
452
452
  ]
453
453
  },
454
454
  {
455
- "begin": "(<<)-(\"|'|)(HTML)\\2",
455
+ "begin": "(<<)-(\"|'|)\\s*(HTML)(?=\\s|;|&|<|\"|')\\2",
456
456
  "beginCaptures": {
457
457
  "1": {
458
458
  "name": "keyword.operator.heredoc.shell"
@@ -476,7 +476,7 @@
476
476
  ]
477
477
  },
478
478
  {
479
- "begin": "(<<)(\"|'|)(HTML)\\2",
479
+ "begin": "(<<)(\"|'|)\\s*(HTML)(?=\\s|;|&|<|\"|')\\2",
480
480
  "beginCaptures": {
481
481
  "1": {
482
482
  "name": "keyword.operator.heredoc.shell"
@@ -500,7 +500,7 @@
500
500
  ]
501
501
  },
502
502
  {
503
- "begin": "(<<)-(\"|'|)(MARKDOWN)\\2",
503
+ "begin": "(<<)-(\"|'|)\\s*(MARKDOWN)(?=\\s|;|&|<|\"|')\\2",
504
504
  "beginCaptures": {
505
505
  "1": {
506
506
  "name": "keyword.operator.heredoc.shell"
@@ -524,7 +524,7 @@
524
524
  ]
525
525
  },
526
526
  {
527
- "begin": "(<<)(\"|'|)(MARKDOWN)\\2",
527
+ "begin": "(<<)(\"|'|)\\s*(MARKDOWN)(?=\\s|;|&|<|\"|')\\2",
528
528
  "beginCaptures": {
529
529
  "1": {
530
530
  "name": "keyword.operator.heredoc.shell"
@@ -548,7 +548,7 @@
548
548
  ]
549
549
  },
550
550
  {
551
- "begin": "(<<)-(\"|'|)(TEXTILE)\\2",
551
+ "begin": "(<<)-(\"|'|)\\s*(TEXTILE)(?=\\s|;|&|<|\"|')\\2",
552
552
  "beginCaptures": {
553
553
  "1": {
554
554
  "name": "keyword.operator.heredoc.shell"
@@ -572,7 +572,7 @@
572
572
  ]
573
573
  },
574
574
  {
575
- "begin": "(<<)(\"|'|)(TEXTILE)\\2",
575
+ "begin": "(<<)(\"|'|)\\s*(TEXTILE)(?=\\s|;|&|<|\"|')\\2",
576
576
  "beginCaptures": {
577
577
  "1": {
578
578
  "name": "keyword.operator.heredoc.shell"
@@ -596,7 +596,7 @@
596
596
  ]
597
597
  },
598
598
  {
599
- "begin": "(<<)-(\"|'|)(SHELL)\\2",
599
+ "begin": "(<<)-(\"|'|)\\s*(SHELL)(?=\\s|;|&|<|\"|')\\2",
600
600
  "beginCaptures": {
601
601
  "1": {
602
602
  "name": "keyword.operator.heredoc.shell"
@@ -620,7 +620,7 @@
620
620
  ]
621
621
  },
622
622
  {
623
- "begin": "(<<)(\"|'|)(SHELL)\\2",
623
+ "begin": "(<<)(\"|'|)\\s*(SHELL)(?=\\s|;|&|<|\"|')\\2",
624
624
  "beginCaptures": {
625
625
  "1": {
626
626
  "name": "keyword.operator.heredoc.shell"
@@ -644,7 +644,7 @@
644
644
  ]
645
645
  },
646
646
  {
647
- "begin": "(<<)-(\"|'|)\\\\?(\\w+)\\2",
647
+ "begin": "(<<)-(\"|'|)\\s*\\\\?([^;&<\\s]+)\\2",
648
648
  "beginCaptures": {
649
649
  "1": {
650
650
  "name": "keyword.operator.heredoc.shell"
@@ -662,7 +662,7 @@
662
662
  "name": "string.unquoted.heredoc.no-indent.shell"
663
663
  },
664
664
  {
665
- "begin": "(<<)(\"|'|)\\\\?(\\w+)\\2",
665
+ "begin": "(<<)(\"|'|)\\s*\\\\?([^;&<\\s]+)\\2",
666
666
  "beginCaptures": {
667
667
  "1": {
668
668
  "name": "keyword.operator.heredoc.shell"
@@ -739,10 +739,15 @@
739
739
  "name": "keyword.operator.herestring.shell"
740
740
  },
741
741
  "2": {
742
- "name": "string.unquoted.herestring.shell"
742
+ "name": "string.unquoted.herestring.shell",
743
+ "patterns": [
744
+ {
745
+ "include": "$self"
746
+ }
747
+ ]
743
748
  }
744
749
  },
745
- "match": "(<<<)(([^\\s\\\\]|\\\\.)+)",
750
+ "match": "(<<<)\\s*(([^\\s\\\\]|\\\\.)+)",
746
751
  "name": "meta.herestring.shell"
747
752
  }
748
753
  ]
@@ -1125,7 +1130,7 @@
1125
1130
  ]
1126
1131
  },
1127
1132
  {
1128
- "match": "&>|\\d*>&\\d*|\\d*(>>|>|<)|\\d*<&|\\d*<>",
1133
+ "match": "(?<![<>])(&>|\\d*>&\\d*|\\d*(>>|>|<)|\\d*<&|\\d*<>)(?![<>])",
1129
1134
  "name": "keyword.operator.redirect.shell"
1130
1135
  }
1131
1136
  ]