1
1
"use strict" ;
2
2
import { TmLanguage } from "./TMLanguageModel" ;
3
3
4
+ const letter = "[_a-zA-Z\\$\\p{Lo}\\p{Lt}\\p{Nl}\\p{Ll}\\p{Lu}]"
5
+ const digit = "[0-9]"
6
+ const letterOrDigit = `${ letter } |${ digit } `
7
+ const variableName = `${ letter } (?:${ letterOrDigit } )*`
8
+
4
9
export const scalaTmLanguage : TmLanguage = {
5
10
fileTypes : [
6
11
'scala'
@@ -217,6 +222,36 @@ export const scalaTmLanguage: TmLanguage = {
217
222
} ,
218
223
name : 'string.quoted.triple.scala'
219
224
} ,
225
+ {
226
+ begin : '\\b(s|f|raw)(""")' ,
227
+ end : '"""(?!")' ,
228
+ beginCaptures : {
229
+ '1' : {
230
+ name : 'keyword.interpolation.scala'
231
+ } ,
232
+ '2' : {
233
+ name : 'punctuation.definition.string.begin.scala'
234
+ }
235
+ } ,
236
+ patterns : [
237
+ {
238
+ "include" : "#string-interpolation"
239
+ } ,
240
+ {
241
+ match : '\\\\\\\\|\\\\u[0-9A-Fa-f]{4}' ,
242
+ name : 'constant.character.escape.scala'
243
+ } ,
244
+ {
245
+ match : '.' ,
246
+ name : 'string.quoted.triple.interpolated.scala'
247
+ }
248
+ ] ,
249
+ endCaptures : {
250
+ '0' : {
251
+ name : 'punctuation.definition.string.end.scala'
252
+ }
253
+ }
254
+ } ,
220
255
{
221
256
end : '"' ,
222
257
begin : '"' ,
@@ -241,6 +276,72 @@ export const scalaTmLanguage: TmLanguage = {
241
276
}
242
277
} ,
243
278
name : 'string.quoted.double.scala'
279
+ } ,
280
+ {
281
+ begin : '\\b(s|f|raw)(")' ,
282
+ end : '"' ,
283
+ beginCaptures : {
284
+ '1' : {
285
+ name : 'keyword.interpolation.scala'
286
+ } ,
287
+ '2' : {
288
+ name : 'punctuation.definition.string.begin.scala'
289
+ }
290
+ } ,
291
+ patterns : [
292
+ {
293
+ include : "#string-interpolation"
294
+ } ,
295
+ {
296
+ match : `\\\\(?:[btnfr\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})` ,
297
+ name : 'constant.character.escape.scala'
298
+ } ,
299
+ {
300
+ match : '\\\\.' ,
301
+ name : 'invalid.illegal.unrecognized-string-escape.scala'
302
+ } ,
303
+ {
304
+ match : '.' ,
305
+ name : 'string.quoted.double.interpolated.scala'
306
+ }
307
+ ] ,
308
+ endCaptures : {
309
+ '0' : {
310
+ name : 'punctuation.definition.string.end.scala'
311
+ }
312
+ }
313
+ }
314
+ ]
315
+ } ,
316
+ 'string-interpolation' : {
317
+ patterns : [
318
+ {
319
+ name : "constant.character.escape.interpolation.scala" ,
320
+ match : "\\$\\$"
321
+ } ,
322
+ {
323
+ name : "constant.other.placeholder.scala" ,
324
+ match : `(\\$)(${ variableName } )` ,
325
+ captures : {
326
+ "1" : {
327
+ name : "punctuation.definition.template-expression.begin.scala"
328
+ } ,
329
+ "2" : {
330
+ name : "variable.other.scala"
331
+ }
332
+ }
333
+ } ,
334
+ {
335
+ name : "punctuation.definition.template-expression.scala" ,
336
+ begin : "\\$\\{" ,
337
+ beginCaptures : { "0" : { name : "punctuation.definition.template-expression.begin.scala" } } ,
338
+ end : "\\}" ,
339
+ endCaptures : { "0" : { name : "punctuation.definition.template-expression.end.scala" } } ,
340
+ patterns : [
341
+ {
342
+ include : "#code"
343
+ }
344
+ ]
244
345
}
245
346
]
246
347
} ,
0 commit comments