Skip to content
This repository was archived by the owner on Jun 8, 2023. It is now read-only.

Commit 222b177

Browse files
committed
Update syntax (scala/vscode-scala-syntax)
1 parent 28e36d0 commit 222b177

File tree

2 files changed

+152
-41
lines changed

2 files changed

+152
-41
lines changed

scala/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
{
4949
"language": "scala",
5050
"scopeName": "source.scala",
51-
"path": "./syntaxes/scala.tmLanguage"
51+
"path": "./syntaxes/Scala.tmLanguage"
5252
}
5353
],
5454
"snippets": [

scala/syntaxes/scala.tmLanguage

+151-40
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@
104104
<dict>
105105
<key>patterns</key>
106106
<array>
107+
<dict>
108+
<key>include</key>
109+
<string>#script-header</string>
110+
</dict>
107111
<dict>
108112
<key>include</key>
109113
<string>#storage-modifiers</string>
@@ -124,10 +128,6 @@
124128
<key>include</key>
125129
<string>#comments</string>
126130
</dict>
127-
<dict>
128-
<key>include</key>
129-
<string>#block-comments</string>
130-
</dict>
131131
<dict>
132132
<key>include</key>
133133
<string>#strings</string>
@@ -152,6 +152,14 @@
152152
<key>include</key>
153153
<string>#scala-symbol</string>
154154
</dict>
155+
<dict>
156+
<key>include</key>
157+
<string>#scala-quoted</string>
158+
</dict>
159+
<dict>
160+
<key>include</key>
161+
<string>#special-identifier</string>
162+
</dict>
155163
<dict>
156164
<key>include</key>
157165
<string>#char-literal</string>
@@ -202,7 +210,7 @@
202210
</dict>
203211
<dict>
204212
<key>begin</key>
205-
<string>^\s*(/\*\*)</string>
213+
<string>^\s*(/\*\*)(?!/)</string>
206214
<key>beginCaptures</key>
207215
<dict>
208216
<key>1</key>
@@ -306,21 +314,37 @@
306314
<string>comment.block.scala</string>
307315
</dict>
308316
<dict>
309-
<key>captures</key>
317+
<key>begin</key>
318+
<string>(^[ \t]+)?(?=//)</string>
319+
<key>beginCaptures</key>
310320
<dict>
311321
<key>1</key>
312322
<dict>
313323
<key>name</key>
314-
<string>comment.line.double-slash.scala</string>
324+
<string>punctuation.whitespace.comment.leading.scala</string>
315325
</dict>
316-
<key>2</key>
326+
</dict>
327+
<key>end</key>
328+
<string>(?!\G)</string>
329+
<key>patterns</key>
330+
<array>
317331
<dict>
332+
<key>begin</key>
333+
<string>//</string>
334+
<key>beginCaptures</key>
335+
<dict>
336+
<key>0</key>
337+
<dict>
338+
<key>name</key>
339+
<string>punctuation.definition.comment.scala</string>
340+
</dict>
341+
</dict>
342+
<key>end</key>
343+
<string>\n</string>
318344
<key>name</key>
319-
<string>punctuation.definition.comment.scala</string>
345+
<string>comment.line.double-slash.scala</string>
320346
</dict>
321-
</dict>
322-
<key>match</key>
323-
<string>\s*((//).*$)</string>
347+
</array>
324348
</dict>
325349
</array>
326350
</dict>
@@ -336,7 +360,7 @@
336360
</dict>
337361
<dict>
338362
<key>match</key>
339-
<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\b</string>
363+
<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.[0-9]+)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?|[0-9]+)([LlFfDd]|UL|ul)?\b</string>
340364
<key>name</key>
341365
<string>constant.numeric.scala</string>
342366
</dict>
@@ -381,7 +405,7 @@
381405
<key>match</key>
382406
<string>(?x)
383407
\b(def)\s+
384-
(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\s])(?=[(\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~&gt;&lt;^+*%:!#|/@\\]+)</string>
408+
(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\t .,;()\[\]{}'"`\w])(?=[(\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~&gt;&lt;^+*%:!#|/@\\]+)</string>
385409
</dict>
386410
<dict>
387411
<key>captures</key>
@@ -433,33 +457,33 @@
433457
<key>2</key>
434458
<dict>
435459
<key>name</key>
436-
<string>keyword.declaration.volatile.scala</string>
437-
</dict>
438-
<key>3</key>
439-
<dict>
440-
<key>name</key>
441-
<string>entity.name.val.declaration</string>
460+
<string>constant.other.declaration.scala</string>
442461
</dict>
443462
</dict>
444463
<key>match</key>
445-
<string>\b(?:(val)|(var))\s+(?:(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\s])(?=[\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~&gt;&lt;^+*%:!#|/@\\]+)|(?=\())</string>
464+
<string>\b(val)\s+(?:([A-Z][_a-zA-Z0-9]*))\b</string>
446465
</dict>
447466
<dict>
448467
<key>captures</key>
449468
<dict>
450469
<key>1</key>
451470
<dict>
452471
<key>name</key>
453-
<string>keyword.declaration.scala</string>
472+
<string>keyword.declaration.stable.scala</string>
454473
</dict>
455474
<key>2</key>
456475
<dict>
457476
<key>name</key>
458-
<string>entity.name.class.declaration</string>
477+
<string>keyword.declaration.volatile.scala</string>
478+
</dict>
479+
<key>3</key>
480+
<dict>
481+
<key>name</key>
482+
<string>variable.other.declaration.scala</string>
459483
</dict>
460484
</dict>
461485
<key>match</key>
462-
<string>\b(package object)\s+([^\s\{\(\[]+)</string>
486+
<string>\b(?:(val)|(var))\s+(?:(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\t .,;()\[\]{}'"`\w])(?=[\t ])|[_$a-zA-Z][_$a-zA-Z0-9]*|[-?~&gt;&lt;^+*%:!#|/@\\]+)|(?=\())</string>
463487
</dict>
464488
<dict>
465489
<key>captures</key>
@@ -472,13 +496,51 @@
472496
<key>2</key>
473497
<dict>
474498
<key>name</key>
475-
<string>entity.name.package.scala</string>
499+
<string>keyword.declaration.scala</string>
500+
</dict>
501+
<key>3</key>
502+
<dict>
503+
<key>name</key>
504+
<string>entity.name.class.declaration</string>
476505
</dict>
477506
</dict>
478507
<key>match</key>
479-
<string>\b(package)\s+([\w\.]+)</string>
508+
<string>\b(package)\s+(object)\s+([^\s\{\(\[]+)</string>
509+
</dict>
510+
<dict>
511+
<key>begin</key>
512+
<string>\b(package)\s+</string>
513+
<key>beginCaptures</key>
514+
<dict>
515+
<key>1</key>
516+
<dict>
517+
<key>name</key>
518+
<string>keyword.other.import.scala</string>
519+
</dict>
520+
</dict>
521+
<key>end</key>
522+
<string>(?&lt;=[\n;])</string>
480523
<key>name</key>
481524
<string>meta.package.scala</string>
525+
<key>patterns</key>
526+
<array>
527+
<dict>
528+
<key>include</key>
529+
<string>#comments</string>
530+
</dict>
531+
<dict>
532+
<key>match</key>
533+
<string>(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*)</string>
534+
<key>name</key>
535+
<string>entity.name.package.scala</string>
536+
</dict>
537+
<dict>
538+
<key>match</key>
539+
<string>\.</string>
540+
<key>name</key>
541+
<string>punctuation.definition.package</string>
542+
</dict>
543+
</array>
482544
</dict>
483545
</array>
484546
</dict>
@@ -521,15 +583,15 @@
521583
</dict>
522584
<dict>
523585
<key>match</key>
524-
<string>([^\s{;.]+)\s*\.\s*</string>
586+
<string>(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*)</string>
525587
<key>name</key>
526-
<string>variable.package.scala</string>
588+
<string>entity.name.import.scala</string>
527589
</dict>
528590
<dict>
529591
<key>match</key>
530-
<string>([^\s{;.]+)\s*</string>
592+
<string>\.</string>
531593
<key>name</key>
532-
<string>variable.import.scala</string>
594+
<string>punctuation.definition.import</string>
533595
</dict>
534596
<dict>
535597
<key>begin</key>
@@ -562,7 +624,7 @@
562624
<key>1</key>
563625
<dict>
564626
<key>name</key>
565-
<string>variable.import.renamed-from.scala</string>
627+
<string>entity.name.import.renamed-from.scala</string>
566628
</dict>
567629
<key>2</key>
568630
<dict>
@@ -572,21 +634,21 @@
572634
<key>3</key>
573635
<dict>
574636
<key>name</key>
575-
<string>variable.import.renamed-to.scala</string>
637+
<string>entity.name.import.renamed-to.scala</string>
576638
</dict>
577639
</dict>
578640
<key>match</key>
579641
<string>(?x) \s*
580-
([^\s.,}]+) \s*
581-
(=&gt;) \s*
582-
([^\s.,}]+) \s*
583-
</string>
642+
(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*) \s*
643+
(=&gt;) \s*
644+
(`[^`]+`|[_$a-zA-Z][_$a-zA-Z0-9]*) \s*
645+
</string>
584646
</dict>
585647
<dict>
586648
<key>match</key>
587649
<string>([^\s.,}]+)</string>
588650
<key>name</key>
589-
<string>variable.import.scala</string>
651+
<string>entity.name.import.scala</string>
590652
</dict>
591653
</array>
592654
</dict>
@@ -631,7 +693,7 @@
631693
</dict>
632694
</dict>
633695
<key>match</key>
634-
<string>\b(new)\s+([^\s\{\(\[]+)</string>
696+
<string>\b(new)\s+([^\s,\{\}\(\)\[\]]+)</string>
635697
</dict>
636698
<key>keywords</key>
637699
<dict>
@@ -702,6 +764,22 @@
702764
<string>For themes: Brackets look nice when colored.</string>
703765
<key>patterns</key>
704766
<array>
767+
<dict>
768+
<key>comment</key>
769+
<string>The punctuation.section.*.begin is needed for return snippet in source bundle</string>
770+
<key>match</key>
771+
<string>\{</string>
772+
<key>name</key>
773+
<string>punctuation.section.block.begin.scala</string>
774+
</dict>
775+
<dict>
776+
<key>comment</key>
777+
<string>The punctuation.section.*.end is needed for return snippet in source bundle</string>
778+
<key>match</key>
779+
<string>\}</string>
780+
<key>name</key>
781+
<string>punctuation.section.block.end.scala</string>
782+
</dict>
705783
<dict>
706784
<key>match</key>
707785
<string>{|}|\(|\)|\[|\]</string>
@@ -765,9 +843,42 @@
765843
<key>scala-symbol</key>
766844
<dict>
767845
<key>match</key>
768-
<string>'\w+(?=[^'\w])</string>
846+
<string>'\w+(?=[^'\w]|$)</string>
769847
<key>name</key>
770-
<string>entity.name.symbol</string>
848+
<string>constant.other.symbol.scala</string>
849+
</dict>
850+
<key>scala-quoted</key>
851+
<dict>
852+
<key>match</key>
853+
<string>'\{'|'\('|'\['|'\{|'\(|'\[</string>
854+
<key>name</key>
855+
<string>constant.other.quoted.scala</string>
856+
</dict>
857+
<key>script-header</key>
858+
<dict>
859+
<key>captures</key>
860+
<dict>
861+
<key>1</key>
862+
<dict>
863+
<key>name</key>
864+
<string>string.unquoted.shebang.scala</string>
865+
</dict>
866+
</dict>
867+
<key>match</key>
868+
<string>^#!(.*)$</string>
869+
<key>name</key>
870+
<string>comment.block.shebang.scala</string>
871+
</dict>
872+
<key>special-identifier</key>
873+
<dict>
874+
<key>comment</key>
875+
<string>
876+
Match special scala style identifiers that can end with and underscore and
877+
a a not letter such as blank_?. This way the symbol will not be colored
878+
differently.
879+
</string>
880+
<key>match</key>
881+
<string>\b[_$a-zA-Z][_$a-zA-Z0-9]*(?:_[^\t .,;()\[\]{}'"`\w])</string>
771882
</dict>
772883
<key>storage-modifiers</key>
773884
<dict>

0 commit comments

Comments
 (0)