Skip to content

Commit 31ac9b0

Browse files
committed
feat: support using directive for scala-cli
related to: VirtusLab/scala-cli#1059
1 parent fbd1508 commit 31ac9b0

File tree

5 files changed

+77
-7
lines changed

5 files changed

+77
-7
lines changed

src/typescript/Scala.tmLanguage.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,9 @@ export const scalaTmLanguage: TmLanguage = {
226226
},
227227
code: {
228228
patterns: [
229+
{
230+
include: '#using-directive'
231+
},
229232
{
230233
include: '#script-header'
231234
},
@@ -960,6 +963,35 @@ export const scalaTmLanguage: TmLanguage = {
960963
comment: 'For themes: Matching view bounds',
961964
name: 'meta.bounds.scala'
962965
},
966+
'using-directive': {
967+
end: '\\n',
968+
begin: '^\\s*(//>)\\s*(using)[^\\S\\n]+',
969+
beginCaptures: {
970+
'1': {
971+
name: 'punctuation.definition.comment.scala'
972+
},
973+
'2': {
974+
name: 'keyword.other.import.scala'
975+
}
976+
},
977+
patterns: [
978+
{
979+
match: `${idUpper}|${backQuotedId}|${plainid}`,
980+
name: 'entity.name.import.scala'
981+
},
982+
{
983+
match: '\\.',
984+
name: 'punctuation.definition.import'
985+
},
986+
{
987+
include: '#strings'
988+
},
989+
{
990+
include: '#constants'
991+
},
992+
],
993+
name: 'comment.line.shebang.scala'
994+
},
963995
comments: {
964996
patterns: [
965997
{

syntaxes/Scala.tmLanguage.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

tests/snap/comments.test.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
/// SYNTAX TEST "source.scala"
22
#!/usr/bin/env scala
33

4-
// single line comments
4+
//> using packaging.version "1.0.0"
5+
//> using scala 2.13
6+
// > using this.is comment
7+
// //> using comment "out"
8+
9+
//> using
10+
object X
511

612
/* /**/ /** */ /* comments within comments */ */
713

@@ -138,4 +144,4 @@ object Markup {
138144
* 1. Third item
139145
*/
140146
def lists = ()
141-
}
147+
}

tests/snap/comments.test.scala.snap

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,40 @@
55
#^^ source.scala comment.block.shebang.scala
66
# ^^^^^^^^^^^^^^^^^^ source.scala comment.block.shebang.scala string.unquoted.shebang.scala
77
>
8-
>// single line comments
8+
>//> using packaging.version "1.0.0"
9+
#^^^ source.scala comment.line.shebang.scala punctuation.definition.comment.scala
10+
# ^ source.scala comment.line.shebang.scala
11+
# ^^^^^ source.scala comment.line.shebang.scala keyword.other.import.scala
12+
# ^ source.scala comment.line.shebang.scala
13+
# ^^^^^^^^^ source.scala comment.line.shebang.scala entity.name.import.scala
14+
# ^ source.scala comment.line.shebang.scala punctuation.definition.import
15+
# ^^^^^^^ source.scala comment.line.shebang.scala entity.name.import.scala
16+
# ^ source.scala comment.line.shebang.scala
17+
# ^ source.scala comment.line.shebang.scala string.quoted.double.scala punctuation.definition.string.begin.scala
18+
# ^^^^^ source.scala comment.line.shebang.scala string.quoted.double.scala
19+
# ^ source.scala comment.line.shebang.scala string.quoted.double.scala punctuation.definition.string.end.scala
20+
>//> using scala 2.13
21+
#^^^ source.scala comment.line.shebang.scala punctuation.definition.comment.scala
22+
# ^ source.scala comment.line.shebang.scala
23+
# ^^^^^ source.scala comment.line.shebang.scala keyword.other.import.scala
24+
# ^ source.scala comment.line.shebang.scala
25+
# ^^^^^ source.scala comment.line.shebang.scala entity.name.import.scala
26+
# ^ source.scala comment.line.shebang.scala
27+
# ^^^^ source.scala comment.line.shebang.scala constant.numeric.scala
28+
>// > using this.is comment
929
#^^ source.scala comment.line.double-slash.scala punctuation.definition.comment.scala
10-
# ^^^^^^^^^^^^^^^^^^^^^ source.scala comment.line.double-slash.scala
30+
# ^^^^^^^^^^^^^^^^^^^^^^^^ source.scala comment.line.double-slash.scala
31+
>// //> using comment "out"
32+
#^^ source.scala comment.line.double-slash.scala punctuation.definition.comment.scala
33+
# ^^^^^^^^^^^^^^^^^^^^^^^^ source.scala comment.line.double-slash.scala
34+
>
35+
>//> using
36+
#^^ source.scala comment.line.double-slash.scala punctuation.definition.comment.scala
37+
# ^^^^^^^ source.scala comment.line.double-slash.scala
38+
>object X
39+
#^^^^^^ source.scala keyword.declaration.scala
40+
# ^ source.scala
41+
# ^ source.scala entity.name.class.declaration
1142
>
1243
>/* /**/ /** */ /* comments within comments */ */
1344
#^^ source.scala comment.block.scala punctuation.definition.comment.scala
@@ -521,4 +552,5 @@
521552
# ^ source.scala
522553
# ^^ source.scala meta.parentheses.scala meta.bracket.scala
523554
>}
524-
#^ source.scala punctuation.section.block.end.scala
555+
#^ source.scala punctuation.section.block.end.scala
556+
>

tests/snap/end.test.scala.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,4 +250,4 @@
250250
#^^^ source.scala keyword.declaration.end.scala
251251
# ^ source.scala
252252
# ^^ source.scala entity.name.declaration
253-
>
253+
>

0 commit comments

Comments
 (0)