PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.13.0
Code Block Pro – Beautiful Syntax Highlighting v1.13.0
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
code-block-pro / build / shiki / languages / scala.tmLanguage.json

scala.tmLanguage.json in Code Block Pro – Beautiful Syntax Highlighting 1.13.0, at build/shiki/languages/scala.tmLanguage.json

1,272 lines 39.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "fileTypes": ["scala"],
3 "firstLineMatch": "^#!/.*\\b\\w*scala\\b",
4 "foldingStartMarker": "/\\*\\*|\\{\\s*$",
5 "foldingStopMarker": "\\*\\*/|^\\s*\\}",
6 "keyEquivalent": "^~S",
7 "repository": {
8 "empty-parentheses": {
9 "match": "(\\(\\))",
10 "captures": {
11 "1": {
12 "name": "meta.bracket.scala"
13 }
14 },
15 "name": "meta.parentheses.scala"
16 },
17 "imports": {
18 "end": "(?<=[\\n;])",
19 "begin": "\\b(import)\\s+",
20 "beginCaptures": {
21 "1": {
22 "name": "keyword.other.import.scala"
23 }
24 },
25 "patterns": [
26 {
27 "include": "#comments"
28 },
29 {
30 "match": "\\b(given)\\b",
31 "name": "keyword.other.import.given.scala"
32 },
33 {
34 "match": "[A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?",
35 "name": "entity.name.class.import.scala"
36 },
37 {
38 "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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))",
39 "name": "entity.name.import.scala"
40 },
41 {
42 "match": "\\.",
43 "name": "punctuation.definition.import"
44 },
45 {
46 "end": "}",
47 "begin": "{",
48 "beginCaptures": {
49 "0": {
50 "name": "meta.bracket.scala"
51 }
52 },
53 "patterns": [
54 {
55 "match": "(?x)(given\\s)?\\s*(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))\\s*",
56 "captures": {
57 "1": {
58 "name": "keyword.other.import.given.scala"
59 },
60 "2": {
61 "name": "entity.name.class.import.renamed-from.scala"
62 },
63 "3": {
64 "name": "entity.name.import.renamed-from.scala"
65 },
66 "4": {
67 "name": "keyword.other.arrow.scala"
68 },
69 "5": {
70 "name": "entity.name.class.import.renamed-to.scala"
71 },
72 "6": {
73 "name": "entity.name.import.renamed-to.scala"
74 }
75 }
76 },
77 {
78 "match": "\\b(given)\\b",
79 "name": "keyword.other.import.given.scala"
80 },
81 {
82 "match": "(given\\s+)?(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))",
83 "captures": {
84 "1": {
85 "name": "keyword.other.import.given.scala"
86 },
87 "2": {
88 "name": "entity.name.class.import.scala"
89 },
90 "3": {
91 "name": "entity.name.import.scala"
92 }
93 }
94 }
95 ],
96 "endCaptures": {
97 "0": {
98 "name": "meta.bracket.scala"
99 }
100 },
101 "name": "meta.import.selector.scala"
102 }
103 ],
104 "name": "meta.import.scala"
105 },
106 "exports": {
107 "end": "(?<=[\\n;])",
108 "begin": "\\b(export)\\s+(given\\s+)?",
109 "beginCaptures": {
110 "1": {
111 "name": "keyword.other.export.scala"
112 },
113 "2": {
114 "name": "keyword.other.export.given.scala"
115 }
116 },
117 "patterns": [
118 {
119 "include": "#comments"
120 },
121 {
122 "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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))",
123 "name": "entity.name.export.scala"
124 },
125 {
126 "match": "\\.",
127 "name": "punctuation.definition.export"
128 },
129 {
130 "end": "}",
131 "begin": "{",
132 "beginCaptures": {
133 "0": {
134 "name": "meta.bracket.scala"
135 }
136 },
137 "patterns": [
138 {
139 "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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))\\s*(=>)\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))\\s*",
140 "captures": {
141 "1": {
142 "name": "entity.name.export.renamed-from.scala"
143 },
144 "2": {
145 "name": "keyword.other.arrow.scala"
146 },
147 "3": {
148 "name": "entity.name.export.renamed-to.scala"
149 }
150 }
151 },
152 {
153 "match": "([^\\s.,}]+)",
154 "name": "entity.name.export.scala"
155 }
156 ],
157 "endCaptures": {
158 "0": {
159 "name": "meta.bracket.scala"
160 }
161 },
162 "name": "meta.export.selector.scala"
163 }
164 ],
165 "name": "meta.export.scala"
166 },
167 "constants": {
168 "patterns": [
169 {
170 "match": "\\b(false|null|true)\\b",
171 "name": "constant.language.scala"
172 },
173 {
174 "match": "\\b(0[xX][0-9a-fA-F_]*)\\b",
175 "name": "constant.numeric.scala"
176 },
177 {
178 "match": "\\b(([0-9][0-9_]*(\\.[0-9][0-9_]*)?)([eE](\\+|-)?[0-9][0-9_]*)?|[0-9][0-9_]*)[LlFfDd]?\\b",
179 "name": "constant.numeric.scala"
180 },
181 {
182 "match": "(\\.[0-9][0-9_]*)([eE](\\+|-)?[0-9][0-9_]*)?[LlFfDd]?\\b",
183 "name": "constant.numeric.scala"
184 },
185 {
186 "match": "\\b(this|super)\\b",
187 "name": "variable.language.scala"
188 }
189 ]
190 },
191 "script-header": {
192 "match": "^#!(.*)$",
193 "captures": {
194 "1": {
195 "name": "string.unquoted.shebang.scala"
196 }
197 },
198 "name": "comment.block.shebang.scala"
199 },
200 "code": {
201 "patterns": [
202 {
203 "include": "#using-directive"
204 },
205 {
206 "include": "#script-header"
207 },
208 {
209 "include": "#storage-modifiers"
210 },
211 {
212 "include": "#declarations"
213 },
214 {
215 "include": "#inheritance"
216 },
217 {
218 "include": "#extension"
219 },
220 {
221 "include": "#imports"
222 },
223 {
224 "include": "#exports"
225 },
226 {
227 "include": "#comments"
228 },
229 {
230 "include": "#strings"
231 },
232 {
233 "include": "#initialization"
234 },
235 {
236 "include": "#xml-literal"
237 },
238 {
239 "include": "#keywords"
240 },
241 {
242 "include": "#using"
243 },
244 {
245 "include": "#constants"
246 },
247 {
248 "include": "#scala-symbol"
249 },
250 {
251 "include": "#singleton-type"
252 },
253 {
254 "include": "#inline"
255 },
256 {
257 "include": "#scala-quoted"
258 },
259 {
260 "include": "#char-literal"
261 },
262 {
263 "include": "#empty-parentheses"
264 },
265 {
266 "include": "#parameter-list"
267 },
268 {
269 "include": "#qualifiedClassName"
270 },
271 {
272 "include": "#backQuotedVariable"
273 },
274 {
275 "include": "#curly-braces"
276 },
277 {
278 "include": "#meta-brackets"
279 },
280 {
281 "include": "#meta-bounds"
282 },
283 {
284 "include": "#meta-colons"
285 }
286 ]
287 },
288 "strings": {
289 "patterns": [
290 {
291 "end": "\"\"\"(?!\")",
292 "begin": "\"\"\"",
293 "beginCaptures": {
294 "0": {
295 "name": "punctuation.definition.string.begin.scala"
296 }
297 },
298 "patterns": [
299 {
300 "match": "\\\\\\\\|\\\\u[0-9A-Fa-f]{4}",
301 "name": "constant.character.escape.scala"
302 }
303 ],
304 "endCaptures": {
305 "0": {
306 "name": "punctuation.definition.string.end.scala"
307 }
308 },
309 "name": "string.quoted.triple.scala"
310 },
311 {
312 "begin": "\\b(raw)(\"\"\")",
313 "end": "(\"\"\")(?!\")|\\$\n|(\\$[^\\$\"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])",
314 "beginCaptures": {
315 "1": {
316 "name": "keyword.interpolation.scala"
317 },
318 "2": {
319 "name": "string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala"
320 }
321 },
322 "patterns": [
323 {
324 "match": "\\$[\\$\"]",
325 "name": "constant.character.escape.scala"
326 },
327 {
328 "include": "#string-interpolation"
329 },
330 {
331 "match": ".",
332 "name": "string.quoted.triple.interpolated.scala"
333 }
334 ],
335 "endCaptures": {
336 "1": {
337 "name": "string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala"
338 },
339 "2": {
340 "name": "invalid.illegal.unrecognized-string-escape.scala"
341 }
342 }
343 },
344 {
345 "begin": "\\b((?:[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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?))(\"\"\")",
346 "end": "(\"\"\")(?!\")|\\$\n|(\\$[^\\$\"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])",
347 "beginCaptures": {
348 "1": {
349 "name": "keyword.interpolation.scala"
350 },
351 "2": {
352 "name": "string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala"
353 }
354 },
355 "patterns": [
356 {
357 "include": "#string-interpolation"
358 },
359 {
360 "match": "\\\\\\\\|\\\\u[0-9A-Fa-f]{4}",
361 "name": "constant.character.escape.scala"
362 },
363 {
364 "match": ".",
365 "name": "string.quoted.triple.interpolated.scala"
366 }
367 ],
368 "endCaptures": {
369 "1": {
370 "name": "string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala"
371 },
372 "2": {
373 "name": "invalid.illegal.unrecognized-string-escape.scala"
374 }
375 }
376 },
377 {
378 "end": "\"",
379 "begin": "\"",
380 "beginCaptures": {
381 "0": {
382 "name": "punctuation.definition.string.begin.scala"
383 }
384 },
385 "patterns": [
386 {
387 "match": "\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})",
388 "name": "constant.character.escape.scala"
389 },
390 {
391 "match": "\\\\.",
392 "name": "invalid.illegal.unrecognized-string-escape.scala"
393 }
394 ],
395 "endCaptures": {
396 "0": {
397 "name": "punctuation.definition.string.end.scala"
398 }
399 },
400 "name": "string.quoted.double.scala"
401 },
402 {
403 "begin": "\\b(raw)(\")",
404 "end": "(\")|\\$\n|(\\$[^\\$\"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])",
405 "beginCaptures": {
406 "1": {
407 "name": "keyword.interpolation.scala"
408 },
409 "2": {
410 "name": "string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala"
411 }
412 },
413 "patterns": [
414 {
415 "match": "\\$[\\$\"]",
416 "name": "constant.character.escape.scala"
417 },
418 {
419 "include": "#string-interpolation"
420 },
421 {
422 "match": ".",
423 "name": "string.quoted.double.interpolated.scala"
424 }
425 ],
426 "endCaptures": {
427 "1": {
428 "name": "string.quoted.double.interpolated.scala punctuation.definition.string.end.scala"
429 },
430 "2": {
431 "name": "invalid.illegal.unrecognized-string-escape.scala"
432 }
433 }
434 },
435 {
436 "begin": "\\b((?:[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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?))(\")",
437 "end": "(\")|\\$\n|(\\$[^\\$\"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])",
438 "beginCaptures": {
439 "1": {
440 "name": "keyword.interpolation.scala"
441 },
442 "2": {
443 "name": "string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala"
444 }
445 },
446 "patterns": [
447 {
448 "match": "\\$[\\$\"]",
449 "name": "constant.character.escape.scala"
450 },
451 {
452 "include": "#string-interpolation"
453 },
454 {
455 "match": "\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})",
456 "name": "constant.character.escape.scala"
457 },
458 {
459 "match": "\\\\.",
460 "name": "invalid.illegal.unrecognized-string-escape.scala"
461 },
462 {
463 "match": ".",
464 "name": "string.quoted.double.interpolated.scala"
465 }
466 ],
467 "endCaptures": {
468 "1": {
469 "name": "string.quoted.double.interpolated.scala punctuation.definition.string.end.scala"
470 },
471 "2": {
472 "name": "invalid.illegal.unrecognized-string-escape.scala"
473 }
474 }
475 }
476 ]
477 },
478 "using": {
479 "patterns": [
480 {
481 "match": "(?<=\\()\\s*(using)\\s",
482 "captures": {
483 "1": {
484 "name": "keyword.declaration.scala"
485 }
486 }
487 }
488 ]
489 },
490 "string-interpolation": {
491 "patterns": [
492 {
493 "name": "constant.character.escape.interpolation.scala",
494 "match": "\\$\\$"
495 },
496 {
497 "name": "meta.template.expression.scala",
498 "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]*)",
499 "captures": {
500 "1": {
501 "name": "punctuation.definition.template-expression.begin.scala"
502 }
503 }
504 },
505 {
506 "name": "meta.template.expression.scala",
507 "begin": "\\$\\{",
508 "beginCaptures": {
509 "0": {
510 "name": "punctuation.definition.template-expression.begin.scala"
511 }
512 },
513 "end": "\\}",
514 "endCaptures": {
515 "0": {
516 "name": "punctuation.definition.template-expression.end.scala"
517 }
518 },
519 "patterns": [
520 {
521 "include": "#code"
522 }
523 ],
524 "contentName": "meta.embedded.line.scala"
525 }
526 ]
527 },
528 "xml-entity": {
529 "match": "(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)",
530 "captures": {
531 "1": {
532 "name": "punctuation.definition.constant.xml"
533 },
534 "3": {
535 "name": "punctuation.definition.constant.xml"
536 }
537 },
538 "name": "constant.character.entity.xml"
539 },
540 "xml-singlequotedString": {
541 "end": "'",
542 "begin": "'",
543 "beginCaptures": {
544 "0": {
545 "name": "punctuation.definition.string.begin.xml"
546 }
547 },
548 "patterns": [
549 {
550 "include": "#xml-entity"
551 }
552 ],
553 "endCaptures": {
554 "0": {
555 "name": "punctuation.definition.string.end.xml"
556 }
557 },
558 "name": "string.quoted.single.xml"
559 },
560 "meta-colons": {
561 "patterns": [
562 {
563 "match": "(?<!:):(?!:)",
564 "name": "meta.colon.scala"
565 }
566 ],
567 "comment": "For themes: Matching type colons"
568 },
569 "keywords": {
570 "patterns": [
571 {
572 "match": "\\b(return|throw)\\b",
573 "name": "keyword.control.flow.jump.scala"
574 },
575 {
576 "match": "\\b(classOf|isInstanceOf|asInstanceOf)\\b",
577 "name": "support.function.type-of.scala"
578 },
579 {
580 "match": "\\b(else|if|then|do|while|for|yield|match|case)\\b",
581 "name": "keyword.control.flow.scala"
582 },
583 {
584 "match": "^\\s*(end)\\s+(if|while|for|match)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
585 "name": "keyword.control.flow.end.scala"
586 },
587 {
588 "match": "^\\s*(end)\\s+(val)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
589 "name": "keyword.declaration.stable.end.scala"
590 },
591 {
592 "match": "^\\s*(end)\\s+(var)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
593 "name": "keyword.declaration.volatile.end.scala"
594 },
595 {
596 "match": "^\\s*(end)\\s+(?:(new|extension)|([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?))(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
597 "captures": {
598 "1": {
599 "name": "keyword.declaration.end.scala"
600 },
601 "2": {
602 "name": "keyword.declaration.end.scala"
603 },
604 "3": {
605 "name": "entity.name.type.declaration"
606 }
607 }
608 },
609 {
610 "match": "\\b(catch|finally|try)\\b",
611 "name": "keyword.control.exception.scala"
612 },
613 {
614 "match": "^\\s*(end)\\s+(try)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
615 "name": "keyword.control.exception.end.scala"
616 },
617 {
618 "match": "^\\s*(end)\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))?(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
619 "captures": {
620 "1": {
621 "name": "keyword.declaration.end.scala"
622 },
623 "2": {
624 "name": "entity.name.declaration"
625 }
626 }
627 },
628 {
629 "match": "(==?|!=|<=|>=|<>|<|>)",
630 "name": "keyword.operator.comparison.scala"
631 },
632 {
633 "match": "(\\-|\\+|\\*|/(?![/*])|%|~)",
634 "name": "keyword.operator.arithmetic.scala"
635 },
636 {
637 "match": "(?<![!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]|_)(!|&&|\\|\\|)(?![!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}])",
638 "name": "keyword.operator.logical.scala"
639 },
640 {
641 "match": "(<-|←|->|→|=>|⇒|\\?|\\:+|@|\\|)+",
642 "name": "keyword.operator.scala"
643 }
644 ]
645 },
646 "singleton-type": {
647 "match": "\\.(type)(?![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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[0-9])",
648 "captures": {
649 "1": {
650 "name": "keyword.type.scala"
651 }
652 }
653 },
654 "inline": {
655 "patterns": [
656 {
657 "match": "\\b(inline)(?=\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`)\\s*:)",
658 "name": "storage.modifier.other"
659 },
660 {
661 "match": "\\b(inline)\\b(?=(?:.(?!\\b(?:val|def|given)\\b))*\\b(if|match)\\b)",
662 "name": "keyword.control.flow.scala"
663 }
664 ]
665 },
666 "scala-quoted": {
667 "patterns": [
668 {
669 "match": "['$]\\{(?!')",
670 "name": "punctuation.section.block.begin.scala"
671 },
672 {
673 "match": "'\\[(?!')",
674 "name": "meta.bracket.scala"
675 }
676 ]
677 },
678 "xml-doublequotedString": {
679 "end": "\"",
680 "begin": "\"",
681 "beginCaptures": {
682 "0": {
683 "name": "punctuation.definition.string.begin.xml"
684 }
685 },
686 "patterns": [
687 {
688 "include": "#xml-entity"
689 }
690 ],
691 "endCaptures": {
692 "0": {
693 "name": "punctuation.definition.string.end.xml"
694 }
695 },
696 "name": "string.quoted.double.xml"
697 },
698 "declarations": {
699 "patterns": [
700 {
701 "match": "\\b(def)\\b\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?",
702 "captures": {
703 "1": {
704 "name": "keyword.declaration.scala"
705 },
706 "2": {
707 "name": "entity.name.function.declaration"
708 }
709 }
710 },
711 {
712 "match": "\\b(trait)\\b\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?",
713 "captures": {
714 "1": {
715 "name": "keyword.declaration.scala"
716 },
717 "2": {
718 "name": "entity.name.class.declaration"
719 }
720 }
721 },
722 {
723 "match": "\\b(?:(case)\\s+)?(class|object|enum)\\b\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?",
724 "captures": {
725 "1": {
726 "name": "keyword.declaration.scala"
727 },
728 "2": {
729 "name": "keyword.declaration.scala"
730 },
731 "3": {
732 "name": "entity.name.class.declaration"
733 }
734 }
735 },
736 {
737 "match": "(?<!\\.)\\b(type)\\b\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?",
738 "captures": {
739 "1": {
740 "name": "keyword.declaration.scala"
741 },
742 "2": {
743 "name": "entity.name.type.declaration"
744 }
745 }
746 },
747 {
748 "match": "\\b(?:(val)|(var))\\b\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`)?\\()",
749 "captures": {
750 "1": {
751 "name": "keyword.declaration.stable.scala"
752 },
753 "2": {
754 "name": "keyword.declaration.volatile.scala"
755 }
756 }
757 },
758 {
759 "match": "\\b(?:(val)|(var))\\b\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`)(?=\\s*,)",
760 "captures": {
761 "1": {
762 "name": "keyword.declaration.stable.scala"
763 },
764 "2": {
765 "name": "keyword.declaration.volatile.scala"
766 }
767 }
768 },
769 {
770 "match": "\\b(?:(val)|(var))\\b\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?",
771 "captures": {
772 "1": {
773 "name": "keyword.declaration.stable.scala"
774 },
775 "2": {
776 "name": "keyword.declaration.volatile.scala"
777 },
778 "3": {
779 "name": "variable.other.declaration.scala"
780 }
781 }
782 },
783 {
784 "match": "\\b(package)\\s+(object)\\b\\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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?",
785 "captures": {
786 "1": {
787 "name": "keyword.other.scoping.scala"
788 },
789 "2": {
790 "name": "keyword.declaration.scala"
791 },
792 "3": {
793 "name": "entity.name.class.declaration"
794 }
795 }
796 },
797 {
798 "end": "(?<=[\\n;])",
799 "begin": "\\b(package)\\s+",
800 "beginCaptures": {
801 "1": {
802 "name": "keyword.other.import.scala"
803 }
804 },
805 "patterns": [
806 {
807 "include": "#comments"
808 },
809 {
810 "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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))",
811 "name": "entity.name.package.scala"
812 },
813 {
814 "match": "\\.",
815 "name": "punctuation.definition.package"
816 }
817 ],
818 "name": "meta.package.scala"
819 },
820 {
821 "match": "\\b(given)\\b\\s*([_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|`[^`]+`)?",
822 "captures": {
823 "1": {
824 "name": "keyword.declaration.scala"
825 },
826 "2": {
827 "name": "entity.name.given.declaration"
828 }
829 }
830 }
831 ]
832 },
833 "char-literal": {
834 "end": "'|$",
835 "begin": "'",
836 "beginCaptures": {
837 "0": {
838 "name": "punctuation.definition.character.begin.scala"
839 }
840 },
841 "patterns": [
842 {
843 "match": "\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})",
844 "name": "constant.character.escape.scala"
845 },
846 {
847 "match": "\\\\.",
848 "name": "invalid.illegal.unrecognized-character-escape.scala"
849 },
850 {
851 "match": "[^']{2,}",
852 "name": "invalid.illegal.character-literal-too-long"
853 },
854 {
855 "match": "(?<!')[^']",
856 "name": "invalid.illegal.character-literal-too-long"
857 }
858 ],
859 "endCaptures": {
860 "0": {
861 "name": "punctuation.definition.character.end.scala"
862 }
863 },
864 "name": "string.quoted.other constant.character.literal.scala"
865 },
866 "initialization": {
867 "match": "\\b(new)\\b",
868 "captures": {
869 "1": {
870 "name": "keyword.declaration.scala"
871 }
872 }
873 },
874 "scala-symbol": {
875 "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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))(?!')",
876 "name": "constant.other.symbol.scala"
877 },
878 "curly-braces": {
879 "begin": "\\{",
880 "end": "\\}",
881 "beginCaptures": {
882 "0": {
883 "name": "punctuation.section.block.begin.scala"
884 }
885 },
886 "endCaptures": {
887 "0": {
888 "name": "punctuation.section.block.end.scala"
889 }
890 },
891 "patterns": [
892 {
893 "include": "#code"
894 }
895 ]
896 },
897 "meta-brackets": {
898 "patterns": [
899 {
900 "match": "\\{",
901 "comment": "The punctuation.section.*.begin is needed for return snippet in source bundle",
902 "name": "punctuation.section.block.begin.scala"
903 },
904 {
905 "match": "\\}",
906 "comment": "The punctuation.section.*.end is needed for return snippet in source bundle",
907 "name": "punctuation.section.block.end.scala"
908 },
909 {
910 "match": "{|}|\\(|\\)|\\[|\\]",
911 "name": "meta.bracket.scala"
912 }
913 ],
914 "comment": "For themes: Brackets look nice when colored."
915 },
916 "qualifiedClassName": {
917 "match": "(\\b([A-Z][\\w]*)(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)",
918 "captures": {
919 "1": {
920 "name": "entity.name.class"
921 }
922 }
923 },
924 "backQuotedVariable": {
925 "match": "`[^`]+`"
926 },
927 "storage-modifiers": {
928 "patterns": [
929 {
930 "match": "\\b(private\\[\\S+\\]|protected\\[\\S+\\]|private|protected)\\b",
931 "name": "storage.modifier.access"
932 },
933 {
934 "match": "\\b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|override|@transient|@native)\\b",
935 "name": "storage.modifier.other"
936 },
937 {
938 "match": "(?<=^|\\s)\\b(transparent|opaque|infix|open|inline)\\b(?=[a-z\\s]*\\b(def|val|var|given|type|class|trait|object|enum)\\b)",
939 "name": "storage.modifier.other"
940 }
941 ]
942 },
943 "meta-bounds": {
944 "match": "<%|=:=|<:<|<%<|>:|<:",
945 "comment": "For themes: Matching view bounds",
946 "name": "meta.bounds.scala"
947 },
948 "using-directive": {
949 "end": "\\n",
950 "begin": "^\\s*(//>)\\s*(using)[^\\S\\n]+",
951 "beginCaptures": {
952 "1": {
953 "name": "punctuation.definition.comment.scala"
954 },
955 "2": {
956 "name": "keyword.other.import.scala"
957 }
958 },
959 "patterns": [
960 {
961 "match": "[A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|`[^`]+`|(?:[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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)",
962 "name": "entity.name.import.scala"
963 },
964 {
965 "match": "\\.",
966 "name": "punctuation.definition.import"
967 },
968 {
969 "include": "#strings"
970 },
971 {
972 "include": "#constants"
973 }
974 ],
975 "name": "comment.line.shebang.scala"
976 },
977 "comments": {
978 "patterns": [
979 {
980 "include": "#block-comments"
981 },
982 {
983 "end": "(?!\\G)",
984 "begin": "(^[ \\t]+)?(?=//)",
985 "beginCaptures": {
986 "1": {
987 "name": "punctuation.whitespace.comment.leading.scala"
988 }
989 },
990 "patterns": [
991 {
992 "end": "\\n",
993 "begin": "//",
994 "beginCaptures": {
995 "0": {
996 "name": "punctuation.definition.comment.scala"
997 }
998 },
999 "name": "comment.line.double-slash.scala"
1000 }
1001 ]
1002 }
1003 ]
1004 },
1005 "block-comments": {
1006 "patterns": [
1007 {
1008 "match": "/\\*\\*/",
1009 "captures": {
1010 "0": {
1011 "name": "punctuation.definition.comment.scala"
1012 }
1013 },
1014 "name": "comment.block.empty.scala"
1015 },
1016 {
1017 "end": "\\*/",
1018 "begin": "^\\s*(/\\*\\*)(?!/)",
1019 "beginCaptures": {
1020 "1": {
1021 "name": "punctuation.definition.comment.scala"
1022 }
1023 },
1024 "patterns": [
1025 {
1026 "match": "(@param)\\s+(\\S+)",
1027 "captures": {
1028 "1": {
1029 "name": "keyword.other.documentation.scaladoc.scala"
1030 },
1031 "2": {
1032 "name": "variable.parameter.scala"
1033 }
1034 }
1035 },
1036 {
1037 "match": "(@(?:tparam|throws))\\s+(\\S+)",
1038 "captures": {
1039 "1": {
1040 "name": "keyword.other.documentation.scaladoc.scala"
1041 },
1042 "2": {
1043 "name": "entity.name.class"
1044 }
1045 }
1046 },
1047 {
1048 "match": "@(return|see|note|example|constructor|usecase|author|version|since|todo|deprecated|migration|define|inheritdoc)\\b",
1049 "name": "keyword.other.documentation.scaladoc.scala"
1050 },
1051 {
1052 "match": "(\\[\\[)([^\\]]+)(\\]\\])",
1053 "captures": {
1054 "1": {
1055 "name": "punctuation.definition.documentation.link.scala"
1056 },
1057 "2": {
1058 "name": "string.other.link.title.markdown"
1059 },
1060 "3": {
1061 "name": "punctuation.definition.documentation.link.scala"
1062 }
1063 }
1064 },
1065 {
1066 "include": "#block-comments"
1067 }
1068 ],
1069 "endCaptures": {
1070 "0": {
1071 "name": "punctuation.definition.comment.scala"
1072 }
1073 },
1074 "name": "comment.block.documentation.scala"
1075 },
1076 {
1077 "end": "\\*/",
1078 "begin": "/\\*",
1079 "captures": {
1080 "0": {
1081 "name": "punctuation.definition.comment.scala"
1082 }
1083 },
1084 "patterns": [
1085 {
1086 "include": "#block-comments"
1087 }
1088 ],
1089 "name": "comment.block.scala"
1090 }
1091 ]
1092 },
1093 "xml-embedded-content": {
1094 "patterns": [
1095 {
1096 "end": "}",
1097 "begin": "{",
1098 "patterns": [
1099 {
1100 "include": "#code"
1101 }
1102 ],
1103 "captures": {
1104 "0": {
1105 "name": "meta.bracket.scala"
1106 }
1107 },
1108 "name": "meta.source.embedded.scala"
1109 },
1110 {
1111 "match": " (?:([-_a-zA-Z0-9]+)((:)))?([_a-zA-Z-]+)=",
1112 "captures": {
1113 "1": {
1114 "name": "entity.other.attribute-name.namespace.xml"
1115 },
1116 "2": {
1117 "name": "entity.other.attribute-name.xml"
1118 },
1119 "3": {
1120 "name": "punctuation.separator.namespace.xml"
1121 },
1122 "4": {
1123 "name": "entity.other.attribute-name.localname.xml"
1124 }
1125 }
1126 },
1127 {
1128 "include": "#xml-doublequotedString"
1129 },
1130 {
1131 "include": "#xml-singlequotedString"
1132 }
1133 ]
1134 },
1135 "inheritance": {
1136 "patterns": [
1137 {
1138 "match": "\\b(extends|with|derives)\\b\\s*([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|`[^`]+`|(?=\\([^\\)]+=>)|(?=(?:[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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))|(?=\"))?",
1139 "captures": {
1140 "1": {
1141 "name": "keyword.declaration.scala"
1142 },
1143 "2": {
1144 "name": "entity.name.class"
1145 }
1146 }
1147 }
1148 ]
1149 },
1150 "extension": {
1151 "patterns": [
1152 {
1153 "match": "^\\s*(extension)\\s+(?=[\\[\\(])",
1154 "captures": {
1155 "1": {
1156 "name": "keyword.declaration.scala"
1157 }
1158 }
1159 }
1160 ]
1161 },
1162 "parameter-list": {
1163 "patterns": [
1164 {
1165 "match": "(?<=[^\\._$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]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)\\s*(:)\\s+",
1166 "captures": {
1167 "1": {
1168 "name": "variable.parameter.scala"
1169 },
1170 "2": {
1171 "name": "meta.colon.scala"
1172 }
1173 }
1174 }
1175 ]
1176 },
1177 "xml-literal": {
1178 "patterns": [
1179 {
1180 "end": "(>(<))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]*[_a-zA-Z0-9])(>)",
1181 "begin": "(<)((?:([_a-zA-Z0-9][_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*))(?=(\\s[^>]*)?></\\2>)",
1182 "beginCaptures": {
1183 "1": {
1184 "name": "punctuation.definition.tag.xml"
1185 },
1186 "3": {
1187 "name": "entity.name.tag.namespace.xml"
1188 },
1189 "4": {
1190 "name": "entity.name.tag.xml"
1191 },
1192 "5": {
1193 "name": "punctuation.separator.namespace.xml"
1194 },
1195 "6": {
1196 "name": "entity.name.tag.localname.xml"
1197 }
1198 },
1199 "patterns": [
1200 {
1201 "include": "#xml-embedded-content"
1202 }
1203 ],
1204 "comment": "We do not allow a tag name to start with a - since this would likely conflict with the <- operator. This is not very common for tag names anyway. Also code such as -- if (val <val2 || val> val3) will falsly be recognized as an xml tag. The solution is to put a space on either side of the comparison operator",
1205 "endCaptures": {
1206 "1": {
1207 "name": "punctuation.definition.tag.xml"
1208 },
1209 "2": {
1210 "name": "meta.scope.between-tag-pair.xml"
1211 },
1212 "3": {
1213 "name": "entity.name.tag.namespace.xml"
1214 },
1215 "4": {
1216 "name": "entity.name.tag.xml"
1217 },
1218 "5": {
1219 "name": "punctuation.separator.namespace.xml"
1220 },
1221 "6": {
1222 "name": "entity.name.tag.localname.xml"
1223 },
1224 "7": {
1225 "name": "punctuation.definition.tag.xml"
1226 }
1227 },
1228 "name": "meta.tag.no-content.xml"
1229 },
1230 {
1231 "end": "(/?>)",
1232 "begin": "(</?)(?:([_a-zA-Z0-9][-_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*)(?=[^>]*?>)",
1233 "patterns": [
1234 {
1235 "include": "#xml-embedded-content"
1236 }
1237 ],
1238 "captures": {
1239 "1": {
1240 "name": "punctuation.definition.tag.xml"
1241 },
1242 "2": {
1243 "name": "entity.name.tag.namespace.xml"
1244 },
1245 "3": {
1246 "name": "entity.name.tag.xml"
1247 },
1248 "4": {
1249 "name": "punctuation.separator.namespace.xml"
1250 },
1251 "5": {
1252 "name": "entity.name.tag.localname.xml"
1253 }
1254 },
1255 "name": "meta.tag.xml"
1256 },
1257 {
1258 "include": "#xml-entity"
1259 }
1260 ]
1261 }
1262 },
1263 "uuid": "158C0929-299A-40C8-8D89-316BE0C446E8",
1264 "patterns": [
1265 {
1266 "include": "#code"
1267 }
1268 ],
1269 "name": "scala",
1270 "scopeName": "source.scala"
1271 }
1272