github-linguist 7.6.0 → 7.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) 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 +472 -4
  5. data/grammars/hidden.manref.json +29 -0
  6. data/grammars/hidden.regexp.injection-shell.json +28 -0
  7. data/grammars/hint.haskell.json +58 -11
  8. data/grammars/hint.message.haskell.json +58 -11
  9. data/grammars/hint.type.haskell.json +58 -11
  10. data/grammars/injections.etc.json +601 -1
  11. data/grammars/markdown.plantuml.codeblock.json +26 -0
  12. data/grammars/source.4dm.json +1156 -0
  13. data/grammars/source.abap.json +7 -7
  14. data/grammars/source.abl.json +685 -83
  15. data/grammars/source.abnf.json +23 -1
  16. data/grammars/source.agda.json +33 -203
  17. data/grammars/source.ahk.json +9 -5
  18. data/grammars/source.angelscript.json +1 -1
  19. data/grammars/source.ballerina.json +55 -19
  20. data/grammars/source.c++.json +4 -4
  21. data/grammars/source.c.platform.json +584 -33
  22. data/grammars/source.chapel.json +7 -4
  23. data/grammars/source.csound.json +1 -1
  24. data/grammars/source.css.json +3 -3
  25. data/grammars/source.css.scss.json +164 -15
  26. data/grammars/source.curlrc.json +869 -65
  27. data/grammars/source.d.json +2 -2
  28. data/grammars/source.dart.json +58 -32
  29. data/grammars/source.dircolors.json +137 -0
  30. data/grammars/source.direct-x.json +135 -0
  31. data/grammars/source.ebnf.json +67 -39
  32. data/grammars/source.editorconfig.json +23 -5
  33. data/grammars/source.elixir.json +51 -0
  34. data/grammars/source.elm.json +1 -1
  35. data/grammars/source.emacs.lisp.json +10 -0
  36. data/grammars/source.faust.json +119 -0
  37. data/grammars/source.futhark.json +146 -0
  38. data/grammars/source.gcode.json +166 -8
  39. data/grammars/source.gedcom.json +196 -0
  40. data/grammars/source.generic-db.json +41 -0
  41. data/grammars/source.gfm.blade.json +15 -0
  42. data/grammars/source.gfm.json +1697 -1439
  43. data/grammars/source.gitconfig.json +1 -1
  44. data/grammars/source.hack.json +200 -98
  45. data/grammars/source.haskell.json +58 -11
  46. data/grammars/source.hlsl.json +9 -5
  47. data/grammars/source.hosts.json +40 -0
  48. data/grammars/source.hsig.json +58 -11
  49. data/grammars/source.httpspec.json +1 -1
  50. data/grammars/source.hx.json +9 -5
  51. data/grammars/source.hxml.json +2 -2
  52. data/grammars/source.idris.json +1 -1
  53. data/grammars/source.igor.json +46 -2
  54. data/grammars/source.ini.npmrc.json +311 -0
  55. data/grammars/source.inno.json +133 -0
  56. data/grammars/source.inputrc.json +500 -0
  57. data/grammars/source.isabelle.root.json +1 -1
  58. data/grammars/source.jison.json +3 -0
  59. data/grammars/source.jisonlex.json +3 -0
  60. data/grammars/source.js.json +4 -4
  61. data/grammars/source.julia.json +70 -24
  62. data/grammars/source.kotlin.json +17 -51
  63. data/grammars/source.lcov.json +398 -0
  64. data/grammars/source.lean.json +20 -4
  65. data/grammars/source.lean.markdown.json +2598 -0
  66. data/grammars/source.lex.json +4 -4
  67. data/grammars/source.m2.json +125 -0
  68. data/grammars/source.m4.json +141 -99
  69. data/grammars/source.man-conf.json +47 -35
  70. data/grammars/source.matlab.json +437 -184
  71. data/grammars/source.mcfunction-snapshot.json +21388 -561
  72. data/grammars/source.mcfunction.json +55 -5
  73. data/grammars/source.meson.json +1 -1
  74. data/grammars/source.mlir.json +37 -317
  75. data/grammars/source.modula-3.json +10 -0
  76. data/grammars/source.msl.json +755 -0
  77. data/grammars/source.nasl.json +155 -0
  78. data/grammars/source.neon.json +381 -0
  79. data/grammars/source.nextflow.json +2 -2
  80. data/grammars/source.objc.platform.json +493 -35
  81. data/grammars/source.odin-ehr.json +806 -0
  82. data/grammars/source.odin.json +402 -0
  83. data/grammars/source.openbsd-pkg.contents.json +128 -0
  84. data/grammars/source.opts.json +12 -2
  85. data/grammars/source.perl6fe.json +1 -1
  86. data/grammars/source.postscript.json +358 -103
  87. data/grammars/source.prisma.json +435 -0
  88. data/grammars/source.purescript.json +29 -2
  89. data/grammars/source.python.json +52 -0
  90. data/grammars/source.q.json +150 -63
  91. data/grammars/source.qasm.json +66 -0
  92. data/grammars/source.ql.json +1408 -0
  93. data/grammars/source.r.json +4 -4
  94. data/grammars/source.reason.json +28 -16
  95. data/grammars/source.rego.json +124 -0
  96. data/grammars/source.sass.json +158 -3
  97. data/grammars/source.scala.json +53 -18
  98. data/grammars/source.sieve.json +383 -0
  99. data/grammars/source.solidity.json +1 -1
  100. data/grammars/source.ssh-config.json +1 -14
  101. data/grammars/source.swift.json +162 -2
  102. data/grammars/source.sy.json +2088 -183
  103. data/grammars/source.tags.json +266 -0
  104. data/grammars/source.terraform.json +576 -132
  105. data/grammars/source.tnsaudit.json +256 -0
  106. data/grammars/source.ts.json +246 -70
  107. data/grammars/source.tsx.json +247 -71
  108. data/grammars/source.v.json +587 -761
  109. data/grammars/source.vim-snippet.json +645 -0
  110. data/grammars/source.viml.json +6 -6
  111. data/grammars/source.webassembly.json +10 -0
  112. data/grammars/source.webidl.json +8 -0
  113. data/grammars/source.wgetrc.json +1640 -0
  114. data/grammars/source.wsd.json +781 -0
  115. data/grammars/source.x86.json +7 -3
  116. data/grammars/source.zig.json +231 -360
  117. data/grammars/text.dfy.dafny.json +188 -0
  118. data/grammars/text.html.php.blade.json +535 -528
  119. data/grammars/text.html.riot.json +788 -0
  120. data/grammars/text.muse.json +1471 -0
  121. data/grammars/text.openbsd-pkg.desc.json +78 -0
  122. data/grammars/text.roff.json +49 -1
  123. data/grammars/text.sfd.json +21 -0
  124. data/grammars/text.tex.latex.haskell.json +58 -11
  125. data/grammars/text.vim-help.json +383 -0
  126. data/grammars/text.xml.svg.json +8 -2
  127. data/grammars/version +1 -1
  128. data/lib/linguist/VERSION +1 -1
  129. data/lib/linguist/blob_helper.rb +4 -2
  130. data/lib/linguist/file_blob.rb +1 -1
  131. data/lib/linguist/generated.rb +96 -28
  132. data/lib/linguist/heuristics.yml +64 -4
  133. data/lib/linguist/languages.json +1 -1
  134. data/lib/linguist/languages.yml +408 -49
  135. data/lib/linguist/lazy_blob.rb +10 -10
  136. data/lib/linguist/linguist.bundle +0 -0
  137. data/lib/linguist/samples.json +48129 -31562
  138. data/lib/linguist/shebang.rb +5 -3
  139. data/lib/linguist/vendor.yml +71 -60
  140. metadata +48 -17
  141. data/grammars/source.LS.json +0 -85
  142. data/grammars/source.MCPOST.json +0 -54
  143. data/grammars/source.MOD.json +0 -55
  144. data/grammars/source.apt.json +0 -18
  145. data/grammars/source.jlex.json +0 -322
  146. data/grammars/source.yaml-ext.json +0 -324
  147. data/grammars/text.html.abl.json +0 -70
@@ -119,7 +119,7 @@
119
119
  },
120
120
  {
121
121
  "name": "meta.function.r",
122
- "match": "([[:alpha:].][[:alnum:]._]*)\\s*(\u003c-)\\s*(function)",
122
+ "match": "((?:`[^`\\\\]*(?:\\\\.[^`\\\\]*)*`)|(?:[[:alpha:].][[:alnum:]._]*))\\s*(\u003c?\u003c-|=(?!=))\\s*(function)",
123
123
  "captures": {
124
124
  "1": {
125
125
  "name": "entity.name.function.r"
@@ -145,10 +145,10 @@
145
145
  }
146
146
  },
147
147
  {
148
- "match": "([[:alpha:].][[:alnum:]._]*)\\s*\\("
148
+ "match": "((?:`[^`\\\\]*(?:\\\\.[^`\\\\]*)*`)|(?:[[:alpha:].][[:alnum:]._]*))\\s*\\("
149
149
  },
150
150
  {
151
- "match": "([[:alpha:].][[:alnum:]._]*)\\s*(=)(?=[^=])",
151
+ "match": "([[:alpha:].][[:alnum:]._]*)\\s*(=(?!=))",
152
152
  "captures": {
153
153
  "1": {
154
154
  "name": "variable.parameter.r"
@@ -168,7 +168,7 @@
168
168
  },
169
169
  {
170
170
  "name": "variable.other.r",
171
- "match": "\\b([[:alnum:]._]+)\\b"
171
+ "match": "((?:`[^`\\\\]*(?:\\\\.[^`\\\\]*)*`)|(?:[[:alpha:].][[:alnum:]._]*))"
172
172
  },
173
173
  {
174
174
  "name": "meta.block.r",
@@ -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": [