github-linguist 7.4.0 → 7.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +5 -5
  2. data/grammars/annotation.liquidhaskell.haskell.json +15 -4
  3. data/grammars/hint.haskell.json +15 -4
  4. data/grammars/hint.message.haskell.json +15 -4
  5. data/grammars/hint.type.haskell.json +15 -4
  6. data/grammars/source.abap.json +14 -3
  7. data/grammars/source.apl.json +19 -2
  8. data/grammars/source.ats.json +17 -87
  9. data/grammars/source.ballerina.json +14 -19
  10. data/grammars/source.crystal.json +14 -2
  11. data/grammars/source.csound.json +37 -0
  12. data/grammars/source.css.json +25 -1
  13. data/grammars/source.css.scss.json +1724 -0
  14. data/grammars/source.gf.json +51 -0
  15. data/grammars/source.glsl.json +1 -1
  16. data/grammars/source.hack.json +2523 -0
  17. data/grammars/source.haskell.json +15 -4
  18. data/grammars/source.hc.json +709 -0
  19. data/grammars/source.hsig.json +15 -4
  20. data/grammars/source.hx.json +10 -6
  21. data/grammars/source.jolie.json +1 -1
  22. data/grammars/source.julia.json +114 -6
  23. data/grammars/source.m68k.json +412 -0
  24. data/grammars/source.mcfunction.json +62 -18
  25. data/grammars/source.objectscript.json +309 -0
  26. data/grammars/source.objectscript_class.json +674 -0
  27. data/grammars/source.objectscript_csp.json +19 -0
  28. data/grammars/source.objectscript_macros.json +226 -0
  29. data/grammars/source.powershell.json +21 -57
  30. data/grammars/source.rust.json +1 -1
  31. data/grammars/source.sass.json +836 -142
  32. data/grammars/source.sassdoc.json +346 -0
  33. data/grammars/source.scala.json +110 -10
  34. data/grammars/source.sqf.json +2 -1
  35. data/grammars/source.svelte.json +827 -0
  36. data/grammars/source.ts.json +8 -4
  37. data/grammars/source.tsql.json +507 -0
  38. data/grammars/source.tsx.json +8 -4
  39. data/grammars/source.viml.json +1 -1
  40. data/grammars/source.vtt.json +702 -0
  41. data/grammars/source.wollok.json +100 -0
  42. data/grammars/source.xojo.json +85 -0
  43. data/grammars/source.yara.json +3 -2
  44. data/grammars/source.zeek.json +412 -0
  45. data/grammars/source.zenscript.json +282 -0
  46. data/grammars/source.zig.json +2 -11
  47. data/grammars/text.haml.json +1 -1
  48. data/grammars/text.html.php.blade.json +3 -3
  49. data/grammars/text.html.vue.json +41 -1
  50. data/grammars/text.slim.json +1 -1
  51. data/grammars/text.tex.latex.haskell.json +15 -4
  52. data/grammars/version +1 -1
  53. data/lib/linguist/VERSION +1 -1
  54. data/lib/linguist/blob_helper.rb +5 -10
  55. data/lib/linguist/generated.rb +10 -2
  56. data/lib/linguist/heuristics.yml +14 -3
  57. data/lib/linguist/language.rb +3 -2
  58. data/lib/linguist/languages.json +1 -1
  59. data/lib/linguist/languages.yml +151 -16
  60. data/lib/linguist/samples.json +9844 -1711
  61. data/lib/linguist/samples.rb +8 -5
  62. data/lib/linguist/shebang.rb +6 -0
  63. data/lib/linguist/vendor.yml +3 -0
  64. metadata +25 -10
  65. data/grammars/source.bro.json +0 -403
  66. data/grammars/source.scss.json +0 -1287
@@ -0,0 +1,346 @@
1
+ {
2
+ "name": "SassDoc",
3
+ "scopeName": "source.sassdoc",
4
+ "patterns": [
5
+ {
6
+ "match": "(?x)\n((@)(?:access))\n\\s+\n(private|public)\n\\b",
7
+ "captures": {
8
+ "1": {
9
+ "name": "storage.type.class.sassdoc"
10
+ },
11
+ "2": {
12
+ "name": "punctuation.definition.block.tag.sassdoc"
13
+ },
14
+ "3": {
15
+ "name": "constant.language.access-type.sassdoc"
16
+ }
17
+ }
18
+ },
19
+ {
20
+ "match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s\u003c\u003e*/]\n (?:[^@\u003c\u003e*/]|\\*[^/])*\n)\n(?:\n \\s*\n (\u003c)\n ([^\u003e\\s]+)\n (\u003e)\n)?",
21
+ "captures": {
22
+ "1": {
23
+ "name": "storage.type.class.sassdoc"
24
+ },
25
+ "2": {
26
+ "name": "punctuation.definition.block.tag.sassdoc"
27
+ },
28
+ "3": {
29
+ "name": "entity.name.type.instance.sassdoc"
30
+ },
31
+ "4": {
32
+ "name": "punctuation.definition.bracket.angle.begin.sassdoc"
33
+ },
34
+ "5": {
35
+ "name": "constant.other.email.link.underline.sassdoc"
36
+ },
37
+ "6": {
38
+ "name": "punctuation.definition.bracket.angle.end.sassdoc"
39
+ }
40
+ }
41
+ },
42
+ {
43
+ "name": "meta.example.css.scss.sassdoc",
44
+ "begin": "(?x)\n((@)example)\n\\s+\n(css|scss)",
45
+ "end": "(?=@|///$)",
46
+ "patterns": [
47
+ {
48
+ "match": "^///\\s+"
49
+ },
50
+ {
51
+ "match": "[^\\s@*](?:[^*]|\\*[^/])*",
52
+ "captures": {
53
+ "0": {
54
+ "name": "source.embedded.css.scss",
55
+ "patterns": [
56
+ {
57
+ "include": "source.css.scss"
58
+ }
59
+ ]
60
+ }
61
+ }
62
+ }
63
+ ],
64
+ "beginCaptures": {
65
+ "1": {
66
+ "name": "storage.type.class.sassdoc"
67
+ },
68
+ "2": {
69
+ "name": "punctuation.definition.block.tag.sassdoc"
70
+ },
71
+ "3": {
72
+ "name": "variable.other.sassdoc"
73
+ }
74
+ }
75
+ },
76
+ {
77
+ "name": "meta.example.html.sassdoc",
78
+ "begin": "(?x)\n((@)example)\n\\s+\n(markup)",
79
+ "end": "(?=@|///$)",
80
+ "patterns": [
81
+ {
82
+ "match": "^///\\s+"
83
+ },
84
+ {
85
+ "match": "[^\\s@*](?:[^*]|\\*[^/])*",
86
+ "captures": {
87
+ "0": {
88
+ "name": "source.embedded.html",
89
+ "patterns": [
90
+ {}
91
+ ]
92
+ }
93
+ }
94
+ }
95
+ ],
96
+ "beginCaptures": {
97
+ "1": {
98
+ "name": "storage.type.class.sassdoc"
99
+ },
100
+ "2": {
101
+ "name": "punctuation.definition.block.tag.sassdoc"
102
+ },
103
+ "3": {
104
+ "name": "variable.other.sassdoc"
105
+ }
106
+ }
107
+ },
108
+ {
109
+ "name": "meta.example.js.sassdoc",
110
+ "begin": "(?x)\n((@)example)\n\\s+\n(javascript)",
111
+ "end": "(?=@|///$)",
112
+ "patterns": [
113
+ {
114
+ "match": "^///\\s+"
115
+ },
116
+ {
117
+ "match": "[^\\s@*](?:[^*]|\\*[^/])*",
118
+ "captures": {
119
+ "0": {
120
+ "name": "source.embedded.js",
121
+ "patterns": [
122
+ {
123
+ "include": "source.js"
124
+ }
125
+ ]
126
+ }
127
+ }
128
+ }
129
+ ],
130
+ "beginCaptures": {
131
+ "1": {
132
+ "name": "storage.type.class.sassdoc"
133
+ },
134
+ "2": {
135
+ "name": "punctuation.definition.block.tag.sassdoc"
136
+ },
137
+ "3": {
138
+ "name": "variable.other.sassdoc"
139
+ }
140
+ }
141
+ },
142
+ {
143
+ "match": "(?x)\n((@)link)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n)",
144
+ "captures": {
145
+ "1": {
146
+ "name": "storage.type.class.sassdoc"
147
+ },
148
+ "2": {
149
+ "name": "punctuation.definition.block.tag.sassdoc"
150
+ },
151
+ "3": {
152
+ "name": "variable.other.link.underline.sassdoc"
153
+ },
154
+ "4": {
155
+ "name": "entity.name.type.instance.sassdoc"
156
+ }
157
+ }
158
+ },
159
+ {
160
+ "match": "(?x)\n(\n (@)\n (?:arg|argument|param|parameter|requires?|see|colors?|fonts?|ratios?|sizes?)\n)\n\\s+\n(\n [A-Za-z_$%]\n [\\-\\w$.\\[\\]]*\n)",
161
+ "captures": {
162
+ "1": {
163
+ "name": "storage.type.class.sassdoc"
164
+ },
165
+ "2": {
166
+ "name": "punctuation.definition.block.tag.sassdoc"
167
+ },
168
+ "3": {
169
+ "name": "variable.other.sassdoc"
170
+ }
171
+ }
172
+ },
173
+ {
174
+ "begin": "((@)(?:arg|argument|param|parameter|prop|property|requires?|see|sizes?))\\s+(?={)",
175
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
176
+ "patterns": [
177
+ {
178
+ "include": "#sassdoctype"
179
+ },
180
+ {
181
+ "name": "variable.other.sassdoc",
182
+ "match": "([A-Za-z_$%][\\-\\w$.\\[\\]]*)"
183
+ },
184
+ {
185
+ "name": "variable.other.sassdoc",
186
+ "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 (?\u003e\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else (sorry)\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))",
187
+ "captures": {
188
+ "1": {
189
+ "name": "punctuation.definition.optional-value.begin.bracket.square.sassdoc"
190
+ },
191
+ "2": {
192
+ "name": "keyword.operator.assignment.sassdoc"
193
+ },
194
+ "3": {
195
+ "name": "source.embedded.js",
196
+ "patterns": [
197
+ {
198
+ "include": "source.js"
199
+ }
200
+ ]
201
+ },
202
+ "4": {
203
+ "name": "punctuation.definition.optional-value.end.bracket.square.sassdoc"
204
+ },
205
+ "5": {
206
+ "name": "invalid.illegal.syntax.sassdoc"
207
+ }
208
+ }
209
+ }
210
+ ],
211
+ "beginCaptures": {
212
+ "1": {
213
+ "name": "storage.type.class.sassdoc"
214
+ },
215
+ "2": {
216
+ "name": "punctuation.definition.block.tag.sassdoc"
217
+ }
218
+ }
219
+ },
220
+ {
221
+ "begin": "(?x)\n(\n (@)\n (?:returns?|throws?|exception|outputs?)\n)\n\\s+(?={)",
222
+ "end": "(?=\\s|[^{}\\[\\]A-Za-z_$])",
223
+ "patterns": [
224
+ {
225
+ "include": "#sassdoctype"
226
+ }
227
+ ],
228
+ "beginCaptures": {
229
+ "1": {
230
+ "name": "storage.type.class.sassdoc"
231
+ },
232
+ "2": {
233
+ "name": "punctuation.definition.block.tag.sassdoc"
234
+ }
235
+ }
236
+ },
237
+ {
238
+ "match": "(?x)\n(\n (@)\n (?:type)\n)\n\\s+\n(\n (?:\n [A-Za-z |]+\n )\n)",
239
+ "captures": {
240
+ "1": {
241
+ "name": "storage.type.class.sassdoc"
242
+ },
243
+ "2": {
244
+ "name": "punctuation.definition.block.tag.sassdoc"
245
+ },
246
+ "3": {
247
+ "name": "entity.name.type.instance.sassdoc",
248
+ "patterns": [
249
+ {
250
+ "include": "#sassdoctypedelimiter"
251
+ }
252
+ ]
253
+ }
254
+ }
255
+ },
256
+ {
257
+ "match": "(?x)\n(\n (@)\n (?:alias|group|name|requires?|see|icons?)\n)\n\\s+\n(\n (?:\n [^{}@\\s*] | \\*[^/]\n )+\n)",
258
+ "captures": {
259
+ "1": {
260
+ "name": "storage.type.class.sassdoc"
261
+ },
262
+ "2": {
263
+ "name": "punctuation.definition.block.tag.sassdoc"
264
+ },
265
+ "3": {
266
+ "name": "entity.name.type.instance.sassdoc"
267
+ }
268
+ }
269
+ },
270
+ {
271
+ "name": "storage.type.class.sassdoc",
272
+ "match": "(?x)\n(@)\n(?:access|alias|author|content|deprecated|example|exception|group\n|ignore|name|prop|property|requires?|returns?|see|since|throws?|todo\n|type|outputs?)\n\\b",
273
+ "captures": {
274
+ "1": {
275
+ "name": "punctuation.definition.block.tag.sassdoc"
276
+ }
277
+ }
278
+ }
279
+ ],
280
+ "repository": {
281
+ "brackets": {
282
+ "patterns": [
283
+ {
284
+ "begin": "{",
285
+ "end": "}|(?=$)",
286
+ "patterns": [
287
+ {
288
+ "include": "#brackets"
289
+ }
290
+ ]
291
+ },
292
+ {
293
+ "begin": "\\[",
294
+ "end": "\\]|(?=$)",
295
+ "patterns": [
296
+ {
297
+ "include": "#brackets"
298
+ }
299
+ ]
300
+ }
301
+ ]
302
+ },
303
+ "sassdoctype": {
304
+ "patterns": [
305
+ {
306
+ "name": "invalid.illegal.type.sassdoc",
307
+ "match": "\\G{(?:[^}*]|\\*[^/}])+$"
308
+ },
309
+ {
310
+ "contentName": "entity.name.type.instance.sassdoc",
311
+ "begin": "\\G({)",
312
+ "end": "((}))\\s*|(?=$)",
313
+ "patterns": [
314
+ {
315
+ "include": "#brackets"
316
+ }
317
+ ],
318
+ "beginCaptures": {
319
+ "0": {
320
+ "name": "entity.name.type.instance.sassdoc"
321
+ },
322
+ "1": {
323
+ "name": "punctuation.definition.bracket.curly.begin.sassdoc"
324
+ }
325
+ },
326
+ "endCaptures": {
327
+ "1": {
328
+ "name": "entity.name.type.instance.sassdoc"
329
+ },
330
+ "2": {
331
+ "name": "punctuation.definition.bracket.curly.end.sassdoc"
332
+ }
333
+ }
334
+ }
335
+ ]
336
+ },
337
+ "sassdoctypedelimiter": {
338
+ "match": "(\\|)",
339
+ "captures": {
340
+ "1": {
341
+ "name": "punctuation.definition.delimiter.sassdoc"
342
+ }
343
+ }
344
+ }
345
+ }
346
+ }
@@ -16,7 +16,7 @@
16
16
  "include": "#block-comments"
17
17
  },
18
18
  {
19
- "match": "(?x)\n\t\t\t(?! /\\*)\n\t\t\t(?! \\*/)\n\t\t "
19
+ "match": "(?x)(?! /\\*)(?! \\*/)"
20
20
  }
21
21
  ]
22
22
  },
@@ -248,7 +248,7 @@
248
248
  "declarations": {
249
249
  "patterns": [
250
250
  {
251
- "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]*(?:_[^\\t .,;()\\[\\]{}'\"`\\w])(?=[(\\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~\u003e\u003c^+*%:!#|/@\\\\]+)",
251
+ "match": "(?x)\\b(def)\\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}]])+))",
252
252
  "captures": {
253
253
  "1": {
254
254
  "name": "keyword.declaration.scala"
@@ -284,7 +284,7 @@
284
284
  }
285
285
  },
286
286
  {
287
- "match": "\\b(type)\\s+(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\\s])(?=[\\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~\u003e\u003c^+*%:!#|/@\\\\]+)",
287
+ "match": "\\b(type)\\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}]])+))",
288
288
  "captures": {
289
289
  "1": {
290
290
  "name": "keyword.declaration.scala"
@@ -295,7 +295,7 @@
295
295
  }
296
296
  },
297
297
  {
298
- "match": "\\b(val)\\s+(?:([A-Z][_a-zA-Z0-9]*))\\b",
298
+ "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",
299
299
  "captures": {
300
300
  "1": {
301
301
  "name": "keyword.declaration.stable.scala"
@@ -306,7 +306,7 @@
306
306
  }
307
307
  },
308
308
  {
309
- "match": "\\b(?:(val)|(var))\\s+(?:(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\\t .,;()\\[\\]{}'\"`\\w])(?=[\\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~\u003e\u003c^+*%:!#|/@\\\\]+)|(?=\\())",
309
+ "match": "\\b(?:(val)|(var))\\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}]])+))|(?=\\())",
310
310
  "captures": {
311
311
  "1": {
312
312
  "name": "keyword.declaration.stable.scala"
@@ -343,7 +343,7 @@
343
343
  },
344
344
  {
345
345
  "name": "entity.name.package.scala",
346
- "match": "(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*)"
346
+ "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}]])+))"
347
347
  },
348
348
  {
349
349
  "name": "punctuation.definition.package",
@@ -377,7 +377,7 @@
377
377
  },
378
378
  {
379
379
  "name": "entity.name.import.scala",
380
- "match": "(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*)"
380
+ "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}]])+))"
381
381
  },
382
382
  {
383
383
  "name": "punctuation.definition.import",
@@ -389,7 +389,7 @@
389
389
  "end": "}",
390
390
  "patterns": [
391
391
  {
392
- "match": "(?x) \\s*\n\t\t\t\t (`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*) \\s*\n\t\t\t\t (=\u003e) \\s*\n\t\t\t\t (`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*) \\s*\n\t\t\t ",
392
+ "match": "(?x)\\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*(=\u003e)\\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*",
393
393
  "captures": {
394
394
  "1": {
395
395
  "name": "entity.name.import.renamed-from.scala"
@@ -518,7 +518,7 @@
518
518
  "parameter-list": {
519
519
  "patterns": [
520
520
  {
521
- "match": "(?\u003c=[^\\._$a-zA-Z0-9])(`[^`]+`|[_$a-z][_$a-zA-Z0-9]*(?:_[^\\s])(?=[\\t ])|[_$a-z][_$a-zA-Z0-9]*|[-?~\u003e\u003c^+*%:!#|/@\\\\]+)\\s*(:)\\s+",
521
+ "match": "(?\u003c=[^\\._$a-zA-Z0-9])(`[^`]+`|[_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}]]+)?)\\s*(:)\\s+",
522
522
  "captures": {
523
523
  "1": {
524
524
  "name": "variable.parameter.scala"
@@ -544,7 +544,7 @@
544
544
  },
545
545
  "scala-symbol": {
546
546
  "name": "constant.other.symbol.scala",
547
- "match": "'\\w+(?=[^'\\w]|$)"
547
+ "match": "(?\u003e'(?:[[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}]])+))(?!')"
548
548
  },
549
549
  "script-header": {
550
550
  "name": "comment.block.shebang.scala",
@@ -570,6 +570,42 @@
570
570
  }
571
571
  ]
572
572
  },
573
+ "string-interpolation": {
574
+ "patterns": [
575
+ {
576
+ "name": "constant.character.escape.interpolation.scala",
577
+ "match": "\\$\\$"
578
+ },
579
+ {
580
+ "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])*)",
581
+ "captures": {
582
+ "1": {
583
+ "name": "punctuation.definition.template-expression.begin.scala"
584
+ }
585
+ }
586
+ },
587
+ {
588
+ "name": "punctuation.definition.template-expression.scala",
589
+ "begin": "\\$\\{",
590
+ "end": "\\}",
591
+ "patterns": [
592
+ {
593
+ "include": "#code"
594
+ }
595
+ ],
596
+ "beginCaptures": {
597
+ "0": {
598
+ "name": "punctuation.definition.template-expression.begin.scala"
599
+ }
600
+ },
601
+ "endCaptures": {
602
+ "0": {
603
+ "name": "punctuation.definition.template-expression.end.scala"
604
+ }
605
+ }
606
+ }
607
+ ]
608
+ },
573
609
  "strings": {
574
610
  "patterns": [
575
611
  {
@@ -593,6 +629,36 @@
593
629
  }
594
630
  }
595
631
  },
632
+ {
633
+ "begin": "\\b([[A-Z\\p{Lt}\\p{Lu}][_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}]]+)(\"\"\")",
634
+ "end": "\"\"\"(?!\")",
635
+ "patterns": [
636
+ {
637
+ "include": "#string-interpolation"
638
+ },
639
+ {
640
+ "name": "constant.character.escape.scala",
641
+ "match": "\\\\\\\\|\\\\u[0-9A-Fa-f]{4}"
642
+ },
643
+ {
644
+ "name": "string.quoted.triple.interpolated.scala",
645
+ "match": "."
646
+ }
647
+ ],
648
+ "beginCaptures": {
649
+ "1": {
650
+ "name": "keyword.interpolation.scala"
651
+ },
652
+ "2": {
653
+ "name": "string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala"
654
+ }
655
+ },
656
+ "endCaptures": {
657
+ "0": {
658
+ "name": "string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala"
659
+ }
660
+ }
661
+ },
596
662
  {
597
663
  "name": "string.quoted.double.scala",
598
664
  "begin": "\"",
@@ -617,6 +683,40 @@
617
683
  "name": "punctuation.definition.string.end.scala"
618
684
  }
619
685
  }
686
+ },
687
+ {
688
+ "begin": "\\b([[A-Z\\p{Lt}\\p{Lu}][_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}]]+)(\")",
689
+ "end": "\"",
690
+ "patterns": [
691
+ {
692
+ "include": "#string-interpolation"
693
+ },
694
+ {
695
+ "name": "constant.character.escape.scala",
696
+ "match": "\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})"
697
+ },
698
+ {
699
+ "name": "invalid.illegal.unrecognized-string-escape.scala",
700
+ "match": "\\\\."
701
+ },
702
+ {
703
+ "name": "string.quoted.double.interpolated.scala",
704
+ "match": "."
705
+ }
706
+ ],
707
+ "beginCaptures": {
708
+ "1": {
709
+ "name": "keyword.interpolation.scala"
710
+ },
711
+ "2": {
712
+ "name": "string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala"
713
+ }
714
+ },
715
+ "endCaptures": {
716
+ "0": {
717
+ "name": "string.quoted.double.interpolated.scala punctuation.definition.string.end.scala"
718
+ }
719
+ }
620
720
  }
621
721
  ]
622
722
  },