github-linguist 7.6.1 → 7.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +5 -5
  2. data/bin/github-linguist +17 -4
  3. data/grammars/annotation.liquidhaskell.haskell.json +58 -11
  4. data/grammars/etc.json +212 -3
  5. data/grammars/hidden.manref.json +29 -0
  6. data/grammars/hint.haskell.json +58 -11
  7. data/grammars/hint.message.haskell.json +58 -11
  8. data/grammars/hint.type.haskell.json +58 -11
  9. data/grammars/injections.etc.json +601 -1
  10. data/grammars/markdown.plantuml.codeblock.json +26 -0
  11. data/grammars/source.4dm.json +1100 -0
  12. data/grammars/source.abap.json +7 -7
  13. data/grammars/source.abnf.json +23 -1
  14. data/grammars/source.agda.json +32 -202
  15. data/grammars/source.ahk.json +9 -5
  16. data/grammars/source.angelscript.json +1 -1
  17. data/grammars/source.ballerina.json +54 -18
  18. data/grammars/source.chapel.json +4 -4
  19. data/grammars/source.csound.json +1 -1
  20. data/grammars/source.css.json +2 -2
  21. data/grammars/source.css.scss.json +164 -15
  22. data/grammars/source.curlrc.json +869 -65
  23. data/grammars/source.dart.json +58 -32
  24. data/grammars/source.dircolors.json +137 -0
  25. data/grammars/source.direct-x.json +135 -0
  26. data/grammars/source.ebnf.json +67 -39
  27. data/grammars/source.editorconfig.json +23 -5
  28. data/grammars/source.elixir.json +51 -0
  29. data/grammars/source.elm.json +1 -1
  30. data/grammars/source.emacs.lisp.json +10 -0
  31. data/grammars/source.faust.json +119 -0
  32. data/grammars/source.gcode.json +166 -8
  33. data/grammars/source.gfm.json +1 -1
  34. data/grammars/source.gitconfig.json +1 -1
  35. data/grammars/source.hack.json +200 -98
  36. data/grammars/source.haskell.json +58 -11
  37. data/grammars/source.hlsl.json +9 -5
  38. data/grammars/source.hosts.json +40 -0
  39. data/grammars/source.hsig.json +58 -11
  40. data/grammars/source.hx.json +4 -0
  41. data/grammars/source.igor.json +46 -2
  42. data/grammars/source.ini.npmrc.json +311 -0
  43. data/grammars/source.inno.json +133 -0
  44. data/grammars/source.inputrc.json +500 -0
  45. data/grammars/source.js.json +4 -4
  46. data/grammars/source.julia.json +69 -23
  47. data/grammars/source.kotlin.json +1 -1
  48. data/grammars/source.lean.json +19 -3
  49. data/grammars/source.lean.markdown.json +2598 -0
  50. data/grammars/source.lex.json +4 -4
  51. data/grammars/source.m4.json +141 -99
  52. data/grammars/source.man-conf.json +46 -34
  53. data/grammars/source.matlab.json +437 -184
  54. data/grammars/source.mcfunction-snapshot.json +21388 -561
  55. data/grammars/source.mcfunction.json +55 -5
  56. data/grammars/source.meson.json +1 -1
  57. data/grammars/source.mlir.json +37 -317
  58. data/grammars/source.mrc.json +740 -0
  59. data/grammars/source.nasl.json +155 -0
  60. data/grammars/source.nextflow.json +2 -2
  61. data/grammars/source.odin-ehr.json +806 -0
  62. data/grammars/source.odin.json +402 -0
  63. data/grammars/source.opts.json +12 -2
  64. data/grammars/source.p4.json +21 -5
  65. data/grammars/source.prisma.json +435 -0
  66. data/grammars/source.python.json +2 -0
  67. data/grammars/source.qasm.json +66 -0
  68. data/grammars/source.ql.json +1408 -0
  69. data/grammars/source.reason.json +28 -16
  70. data/grammars/source.rego.json +124 -0
  71. data/grammars/source.sass.json +158 -3
  72. data/grammars/source.scala.json +53 -18
  73. data/grammars/source.ssh-config.json +1 -14
  74. data/grammars/source.swift.json +162 -2
  75. data/grammars/source.sy.json +2088 -183
  76. data/grammars/source.terraform.json +576 -132
  77. data/grammars/source.tnsaudit.json +256 -0
  78. data/grammars/source.ts.json +159 -51
  79. data/grammars/source.tsx.json +160 -52
  80. data/grammars/source.v.json +559 -764
  81. data/grammars/source.vim-snippet.json +645 -0
  82. data/grammars/source.viml.json +6 -6
  83. data/grammars/source.webassembly.json +10 -0
  84. data/grammars/source.wgetrc.json +1640 -0
  85. data/grammars/source.wsd.json +775 -0
  86. data/grammars/source.zig.json +169 -304
  87. data/grammars/text.html.php.blade.json +1 -1
  88. data/grammars/text.html.riot.json +788 -0
  89. data/grammars/text.muse.json +1471 -0
  90. data/grammars/text.tex.latex.haskell.json +58 -11
  91. data/grammars/text.vim-help.json +383 -0
  92. data/grammars/version +1 -1
  93. data/lib/linguist/VERSION +1 -1
  94. data/lib/linguist/blob_helper.rb +4 -2
  95. data/lib/linguist/file_blob.rb +1 -1
  96. data/lib/linguist/generated.rb +60 -13
  97. data/lib/linguist/heuristics.yml +64 -4
  98. data/lib/linguist/languages.json +1 -1
  99. data/lib/linguist/languages.yml +336 -45
  100. data/lib/linguist/lazy_blob.rb +10 -10
  101. data/lib/linguist/linguist.bundle +0 -0
  102. data/lib/linguist/samples.json +43560 -31457
  103. data/lib/linguist/shebang.rb +5 -3
  104. data/lib/linguist/vendor.yml +9 -0
  105. metadata +29 -10
  106. data/grammars/source.LS.json +0 -85
  107. data/grammars/source.MCPOST.json +0 -54
  108. data/grammars/source.MOD.json +0 -55
  109. data/grammars/source.apt.json +0 -18
  110. data/grammars/source.jlex.json +0 -322
  111. data/grammars/source.yaml-ext.json +0 -324
@@ -138,7 +138,6 @@
138
138
  }
139
139
  },
140
140
  "comment": {
141
- "name": "comment",
142
141
  "patterns": [
143
142
  {
144
143
  "include": "#comment-line"
@@ -155,31 +154,44 @@
155
154
  "name": "comment.block",
156
155
  "begin": "/\\*",
157
156
  "end": "\\*/",
158
- "patterns": [
159
- {
160
- "include": "#comment"
157
+ "beginCaptures": {
158
+ "0": {
159
+ "name": "punctuation.definition.comment.begin"
161
160
  }
162
- ]
161
+ },
162
+ "endCaptures": {
163
+ "0": {
164
+ "name": "punctuation.definition.comment.end"
165
+ }
166
+ }
163
167
  },
164
168
  "comment-block-doc": {
165
169
  "name": "comment.block.documentation",
166
170
  "begin": "/\\*\\*(?!/)",
167
171
  "end": "\\*/",
168
- "patterns": [
169
- {
170
- "include": "#comment"
172
+ "beginCaptures": {
173
+ "0": {
174
+ "name": "punctuation.definition.comment.begin"
171
175
  }
172
- ]
176
+ },
177
+ "endCaptures": {
178
+ "0": {
179
+ "name": "punctuation.definition.comment.end"
180
+ }
181
+ }
173
182
  },
174
183
  "comment-line": {
175
- "name": "comment.line",
176
- "begin": "(^[ \\t]+)?((//))",
177
- "end": "(?=^)",
178
- "patterns": [
179
- {
180
- "include": "#comment"
184
+ "name": "comment.line.double-slash",
185
+ "begin": "(^[ \\t]+)?(//)",
186
+ "end": "$",
187
+ "beginCaptures": {
188
+ "1": {
189
+ "name": "punctuation.whitespace.leading"
190
+ },
191
+ "2": {
192
+ "name": "punctuation.definition.comment"
181
193
  }
182
- ]
194
+ }
183
195
  },
184
196
  "condition-lhs": {
185
197
  "begin": "(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])([\\?])(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])",
@@ -0,0 +1,124 @@
1
+ {
2
+ "name": "Rego",
3
+ "scopeName": "source.rego",
4
+ "patterns": [
5
+ {
6
+ "include": "#comment"
7
+ },
8
+ {
9
+ "include": "#keyword"
10
+ },
11
+ {
12
+ "include": "#operator"
13
+ },
14
+ {
15
+ "include": "#head"
16
+ },
17
+ {
18
+ "include": "#term"
19
+ }
20
+ ],
21
+ "repository": {
22
+ "call": {
23
+ "name": "meta.function-call.rego",
24
+ "match": "([a-zA-Z_][a-zA-Z0-9_]*)\\(",
25
+ "captures": {
26
+ "1": {
27
+ "name": "support.function.any-method.rego"
28
+ }
29
+ }
30
+ },
31
+ "comment": {
32
+ "name": "comment.line.number-sign.rego",
33
+ "match": "(#).*$\\n?",
34
+ "captures": {
35
+ "1": {
36
+ "name": "punctuation.definition.comment.rego"
37
+ }
38
+ }
39
+ },
40
+ "constant": {
41
+ "name": "constant.language.rego",
42
+ "match": "\\b(?:true|false|null)\\b"
43
+ },
44
+ "head": {
45
+ "name": "meta.function.rego",
46
+ "begin": "^([[:alpha:]_][[:alnum:]_]*)",
47
+ "end": "(=|{|\\n)",
48
+ "patterns": [
49
+ {
50
+ "include": "#term"
51
+ }
52
+ ],
53
+ "beginCaptures": {
54
+ "1": {
55
+ "name": "entity.name.function.declaration"
56
+ }
57
+ }
58
+ },
59
+ "keyword": {
60
+ "name": "keyword.other.rego",
61
+ "match": "(^|\\s+)(?:(default|not|package|import|as|with|else|some))\\s+"
62
+ },
63
+ "number": {
64
+ "name": "constant.numeric.rego",
65
+ "match": "(?x: # turn on extended mode\n -? # an optional minus\n (?:\n 0 # a zero\n | # ...or...\n [1-9] # a 1-9 character\n \\d* # followed by zero or more digits\n )\n (?:\n (?:\n \\. # a period\n \\d+ # followed by one or more digits\n )?\n (?:\n [eE] # an e character\n [+-]? # followed by an option +/-\n \\d+ # followed by one or more digits\n )? # make exponent optional\n )? # make decimal portion optional\n )"
66
+ },
67
+ "operator": {
68
+ "patterns": [
69
+ {
70
+ "name": "keyword.operator.comparison.rego",
71
+ "match": "\\=|\\!\\=|\u003e|\u003c|\u003c\\=|\u003e\\=|\\+|-|\\*|%|/|\\||\u0026|:\\="
72
+ }
73
+ ]
74
+ },
75
+ "string": {
76
+ "name": "string.quoted.double.rego",
77
+ "begin": "\"",
78
+ "end": "\"",
79
+ "patterns": [
80
+ {
81
+ "name": "constant.character.escape.rego",
82
+ "match": "(?x: # turn on extended mode\n\t \\\\ # a literal backslash\n\t (?: # ...followed by...\n\t [\"\\\\/bfnrt] # one of these characters\n\t | # ...or...\n\t u # a u\n\t [0-9a-fA-F]{4} # and four hex digits\n\t )\n\t )"
83
+ },
84
+ {
85
+ "name": "invalid.illegal.unrecognized-string-escape.rego",
86
+ "match": "\\\\."
87
+ }
88
+ ],
89
+ "beginCaptures": {
90
+ "0": {
91
+ "name": "punctuation.definition.string.begin.rego"
92
+ }
93
+ },
94
+ "endCaptures": {
95
+ "0": {
96
+ "name": "punctuation.definition.string.end.rego"
97
+ }
98
+ }
99
+ },
100
+ "term": {
101
+ "patterns": [
102
+ {
103
+ "include": "#constant"
104
+ },
105
+ {
106
+ "include": "#string"
107
+ },
108
+ {
109
+ "include": "#number"
110
+ },
111
+ {
112
+ "include": "#call"
113
+ },
114
+ {
115
+ "include": "#variable"
116
+ }
117
+ ]
118
+ },
119
+ "variable": {
120
+ "name": "meta.identifier.rego",
121
+ "match": "\\b[[:alpha:]_][[:alnum:]_]*\\b"
122
+ }
123
+ }
124
+ }
@@ -258,7 +258,7 @@
258
258
  },
259
259
  {
260
260
  "name": "meta.function.include.sass",
261
- "begin": "^\\s*(\\+(?!\\s+)|(?:(@)include(?=\\s+)))\\s*([a-zA-Z0-9_-]+)",
261
+ "begin": "^\\s*(\\+(?!\\s+)|(?:(@)include(?=\\s+)))\\s*(?:([\\w-]+)(\\.))?([a-zA-Z0-9_-]+)",
262
262
  "end": "(;)?$",
263
263
  "patterns": [
264
264
  {
@@ -273,6 +273,12 @@
273
273
  "name": "punctuation.definition.entity.sass"
274
274
  },
275
275
  "3": {
276
+ "name": "variable.sass"
277
+ },
278
+ "4": {
279
+ "name": "punctuation.access.module.sass"
280
+ },
281
+ "5": {
276
282
  "name": "variable.other.sass"
277
283
  }
278
284
  },
@@ -354,6 +360,112 @@
354
360
  }
355
361
  }
356
362
  },
363
+ {
364
+ "name": "meta.at-rule.use.sass",
365
+ "begin": "^\\s*((@)use\\b)\\s*",
366
+ "end": "(;)?$",
367
+ "patterns": [
368
+ {
369
+ "name": "keyword.control.operator",
370
+ "match": "\\b(as|with)\\b"
371
+ },
372
+ {
373
+ "name": "variable.sass",
374
+ "match": "\\b[\\w-]+\\b"
375
+ },
376
+ {
377
+ "name": "variable.language.expanded-namespace.sass",
378
+ "match": "\\*"
379
+ },
380
+ {
381
+ "include": "#string-single"
382
+ },
383
+ {
384
+ "include": "#string-double"
385
+ },
386
+ {
387
+ "include": "#comments"
388
+ },
389
+ {
390
+ "begin": "\\(",
391
+ "end": "\\)",
392
+ "patterns": [
393
+ {
394
+ "include": "#property-value"
395
+ }
396
+ ],
397
+ "beginCaptures": {
398
+ "0": {
399
+ "name": "punctuation.definition.module.begin.bracket.round.sass"
400
+ }
401
+ },
402
+ "endCaptures": {
403
+ "0": {
404
+ "name": "punctuation.definition.module.end.bracket.round.sass"
405
+ }
406
+ }
407
+ }
408
+ ],
409
+ "beginCaptures": {
410
+ "1": {
411
+ "name": "keyword.control.at-rule.use.sass"
412
+ },
413
+ "2": {
414
+ "name": "punctuation.definition.keyword.sass"
415
+ }
416
+ },
417
+ "endCaptures": {
418
+ "1": {
419
+ "name": "invalid.illegal.punctuation.sass"
420
+ }
421
+ }
422
+ },
423
+ {
424
+ "name": "meta.at-rule.forward.sass",
425
+ "begin": "\\s*((@)forward\\b)\\s*",
426
+ "end": "\\s*(?=;)",
427
+ "patterns": [
428
+ {
429
+ "name": "keyword.control.operator",
430
+ "match": "\\b(as|hide|show)\\b"
431
+ },
432
+ {
433
+ "match": "\\b([\\w-]+)(\\*)",
434
+ "captures": {
435
+ "1": {
436
+ "name": "entity.other.attribute-name.module.sass"
437
+ },
438
+ "2": {
439
+ "name": "punctuation.definition.wildcard.sass"
440
+ }
441
+ }
442
+ },
443
+ {
444
+ "name": "entity.name.function.sass",
445
+ "match": "\\b[\\w-]+\\b"
446
+ },
447
+ {
448
+ "include": "#variable-usage"
449
+ },
450
+ {
451
+ "include": "#string-single"
452
+ },
453
+ {
454
+ "include": "#string-double"
455
+ },
456
+ {
457
+ "include": "#comments"
458
+ }
459
+ ],
460
+ "captures": {
461
+ "1": {
462
+ "name": "keyword.control.at-rule.forward.sass"
463
+ },
464
+ "2": {
465
+ "name": "punctuation.definition.keyword.sass"
466
+ }
467
+ }
468
+ },
357
469
  {
358
470
  "name": "meta.variable-usage.sass",
359
471
  "begin": "^\\s*(\\+)([a-zA-Z0-9_-]+)",
@@ -826,6 +938,43 @@
826
938
  {
827
939
  "include": "#string-single"
828
940
  },
941
+ {
942
+ "begin": "([\\w-]+)(\\.)([\\w-]+)(\\()",
943
+ "end": "(\\))",
944
+ "patterns": [
945
+ {
946
+ "include": "#string-double"
947
+ },
948
+ {
949
+ "include": "#string-single"
950
+ },
951
+ {
952
+ "include": "#variable-usage"
953
+ },
954
+ {
955
+ "include": "source.css#numeric-values"
956
+ }
957
+ ],
958
+ "beginCaptures": {
959
+ "1": {
960
+ "name": "variable.sass"
961
+ },
962
+ "2": {
963
+ "name": "punctuation.access.module.sass"
964
+ },
965
+ "3": {
966
+ "name": "support.function.misc.sass"
967
+ },
968
+ "4": {
969
+ "name": "punctuation.section.function.sass"
970
+ }
971
+ },
972
+ "endCaptures": {
973
+ "1": {
974
+ "name": "punctuation.section.function.sass"
975
+ }
976
+ }
977
+ },
829
978
  {
830
979
  "begin": "(rgb|url|attr|counter|counters|local|format)\\s*(\\()",
831
980
  "end": "(\\))",
@@ -920,12 +1069,18 @@
920
1069
  },
921
1070
  "variable-usage": {
922
1071
  "name": "meta.variable-usage.sass",
923
- "match": "(!|\\$)([a-zA-Z0-9_-]+)",
1072
+ "match": "(?:([\\w-]+)(\\.)(?=\\$))?(!|\\$)([a-zA-Z0-9_-]+)",
924
1073
  "captures": {
925
1074
  "1": {
926
- "name": "punctuation.definition.entity.css"
1075
+ "name": "variable.sass"
927
1076
  },
928
1077
  "2": {
1078
+ "name": "punctuation.access.module.sass"
1079
+ },
1080
+ "3": {
1081
+ "name": "punctuation.definition.entity.css"
1082
+ },
1083
+ "4": {
929
1084
  "name": "variable.other.sass"
930
1085
  }
931
1086
  }
@@ -101,7 +101,7 @@
101
101
  "char-literal": {
102
102
  "name": "string.quoted.other constant.character.literal.scala",
103
103
  "begin": "'",
104
- "end": "'",
104
+ "end": "'|$",
105
105
  "patterns": [
106
106
  {
107
107
  "name": "constant.character.escape.scala",
@@ -187,6 +187,9 @@
187
187
  {
188
188
  "include": "#backQuotedVariable"
189
189
  },
190
+ {
191
+ "include": "#curly-braces"
192
+ },
190
193
  {
191
194
  "include": "#meta-brackets"
192
195
  },
@@ -230,7 +233,7 @@
230
233
  "patterns": [
231
234
  {
232
235
  "name": "constant.language.scala",
233
- "match": "\\b(false|null|true|Nil|None)\\b"
236
+ "match": "\\b(false|null|true)\\b"
234
237
  },
235
238
  {
236
239
  "name": "constant.numeric.scala",
@@ -238,18 +241,29 @@
238
241
  },
239
242
  {
240
243
  "name": "variable.language.scala",
241
- "match": "\\b(this|super|self)\\b"
242
- },
243
- {
244
- "name": "storage.type.primitive.scala",
245
- "match": "\\b(Unit|Boolean|Byte|Char|Short|Int|Float|Long|Double)\\b"
246
- },
247
- {
248
- "name": "storage.type.scala",
249
- "match": "\\b(String|Symbol)\\b"
244
+ "match": "\\b(this|super)\\b"
250
245
  }
251
246
  ]
252
247
  },
248
+ "curly-braces": {
249
+ "begin": "\\{",
250
+ "end": "\\}",
251
+ "patterns": [
252
+ {
253
+ "include": "#code"
254
+ }
255
+ ],
256
+ "beginCaptures": {
257
+ "0": {
258
+ "name": "punctuation.section.block.begin.scala"
259
+ }
260
+ },
261
+ "endCaptures": {
262
+ "0": {
263
+ "name": "punctuation.section.block.end.scala"
264
+ }
265
+ }
266
+ },
253
267
  "declarations": {
254
268
  "patterns": [
255
269
  {
@@ -300,7 +314,7 @@
300
314
  }
301
315
  },
302
316
  {
303
- "match": "\\b(val)\\s+([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?\u003c=_)[!#%\u0026*+\\-\\/:\u003c\u003e=?@^|~\\p{Sm}\\p{So}]+)?)\\b",
317
+ "match": "\\b(val)\\s+([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?\u003c=_)[!#%\u0026*+\\-\\/:\u003c\u003e=?@^|~\\p{Sm}\\p{So}]+)?(\\s*,\\s*[A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?\u003c=_)[!#%\u0026*+\\-\\/:\u003c\u003e=?@^|~\\p{Sm}\\p{So}]+)?)*)\\b",
304
318
  "captures": {
305
319
  "1": {
306
320
  "name": "keyword.declaration.stable.scala"
@@ -380,6 +394,10 @@
380
394
  {
381
395
  "include": "#comments"
382
396
  },
397
+ {
398
+ "name": "keyword.given.import.scala",
399
+ "match": "(given)(?=\\s)"
400
+ },
383
401
  {
384
402
  "name": "entity.name.import.scala",
385
403
  "match": "(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?\u003c=_)[!#%\u0026*+\\-\\/:\u003c\u003e=?@^|~\\p{Sm}\\p{So}]+)?|[!#%\u0026*+\\-\\/:\u003c\u003e=?@^|~\\p{Sm}\\p{So}]+))"
@@ -407,6 +425,17 @@
407
425
  }
408
426
  }
409
427
  },
428
+ {
429
+ "match": "(given)(\\s+(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?\u003c=_)[!#%\u0026*+\\-\\/:\u003c\u003e=?@^|~\\p{Sm}\\p{So}]+)?|[!#%\u0026*+\\-\\/:\u003c\u003e=?@^|~\\p{Sm}\\p{So}]+))?(?=\\s*[,}])",
430
+ "captures": {
431
+ "1": {
432
+ "name": "keyword.given.import.scala"
433
+ },
434
+ "2": {
435
+ "name": "entity.name.type.import.scala"
436
+ }
437
+ }
438
+ },
410
439
  {
411
440
  "name": "entity.name.import.scala",
412
441
  "match": "([^\\s.,}]+)"
@@ -433,7 +462,7 @@
433
462
  "inheritance": {
434
463
  "patterns": [
435
464
  {
436
- "match": "(extends|with|derives|as)\\s+([^\\s\\{\\(\\[\\]]+)",
465
+ "match": "(extends|with|derives)\\s+([^\\s\\{\\(\\[\\]]+)",
437
466
  "captures": {
438
467
  "1": {
439
468
  "name": "keyword.declaration.scala"
@@ -468,7 +497,11 @@
468
497
  },
469
498
  {
470
499
  "name": "keyword.control.flow.scala",
471
- "match": "\\b(else|if|do|while|for|yield|match|case)\\b"
500
+ "match": "\\b(else|if|then|do|while|for|yield|match|case)\\b"
501
+ },
502
+ {
503
+ "name": "keyword.control.flow.end.scala",
504
+ "match": "^\\s*end(?=\\s+(if|while|for|match|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?\u003c=_)[!#%\u0026*+\\-\\/:\u003c\u003e=?@^|~\\p{Sm}\\p{So}]+)?|[!#%\u0026*+\\-\\/:\u003c\u003e=?@^|~\\p{Sm}\\p{So}]+))\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)"
472
505
  },
473
506
  {
474
507
  "name": "keyword.control.exception.scala",
@@ -545,7 +578,7 @@
545
578
  },
546
579
  "scala-quoted": {
547
580
  "name": "constant.other.quoted.scala",
548
- "match": "'\\{'|'\\('|'\\['|'\\{|'\\(|'\\["
581
+ "match": "('\\{|'\\[)(?!')"
549
582
  },
550
583
  "scala-symbol": {
551
584
  "name": "constant.other.symbol.scala",
@@ -568,7 +601,7 @@
568
601
  },
569
602
  {
570
603
  "name": "storage.modifier.other",
571
- "match": "\\b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|given|erased|enum|inline |opaque |override|@transient|@native)\\b"
604
+ "match": "\\b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|given|enum|inline |opaque |override|@transient|@native)\\b"
572
605
  }
573
606
  ]
574
607
  },
@@ -579,7 +612,8 @@
579
612
  "match": "\\$\\$"
580
613
  },
581
614
  {
582
- "match": "(\\$)([A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*)",
615
+ "name": "meta.template.expression.scala",
616
+ "match": "(\\$)([A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][[A-Z\\p{Lt}\\p{Lu}_a-z\\p{Lo}\\p{Nl}\\p{Ll}0-9]]*)",
583
617
  "captures": {
584
618
  "1": {
585
619
  "name": "punctuation.definition.template-expression.begin.scala"
@@ -587,7 +621,8 @@
587
621
  }
588
622
  },
589
623
  {
590
- "name": "punctuation.definition.template-expression.scala",
624
+ "name": "meta.template.expression.scala",
625
+ "contentName": "meta.embedded.line.scala",
591
626
  "begin": "\\$\\{",
592
627
  "end": "\\}",
593
628
  "patterns": [