Skip to content

Commit 0c98018

Browse files
authored
Merge pull request #112 from nicolasstucki/fix-#110
Fix #110: Highlight class/object names in imports
2 parents 82a7f6b + 0da2784 commit 0c98018

File tree

5 files changed

+71
-13
lines changed

5 files changed

+71
-13
lines changed

src/typescript/Scala.tmLanguage.ts

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ export const scalaTmLanguage: TmLanguage = {
5050
{
5151
include: '#comments'
5252
},
53+
{
54+
match: idUpper,
55+
name: 'entity.name.class.import.scala'
56+
},
5357
{
5458
match: `(${backQuotedId}|${plainid})`,
5559
name: 'entity.name.import.scala'
@@ -68,29 +72,38 @@ export const scalaTmLanguage: TmLanguage = {
6872
},
6973
patterns: [
7074
{
71-
match: `(?x)(given\\s)?\\s*(${backQuotedId}|${plainid})\\s*(=>)\\s*(${backQuotedId}|${plainid})\\s*`,
75+
match: `(?x)(given\\s)?\\s*(?:(${idUpper})|(${backQuotedId}|${plainid}))\\s*(=>)\\s*(?:(${idUpper})|(${backQuotedId}|${plainid}))\\s*`,
7276
captures: {
7377
'1': {
7478
name: 'keyword.other.given.scala'
7579
},
7680
'2': {
77-
name: 'entity.name.import.renamed-from.scala'
81+
name: 'entity.name.class.import.renamed-from.scala'
7882
},
7983
'3': {
80-
name: 'keyword.other.arrow.scala'
84+
name: 'entity.name.import.renamed-from.scala'
8185
},
8286
'4': {
87+
name: 'keyword.other.arrow.scala'
88+
},
89+
'5': {
90+
name: 'entity.name.class.import.renamed-to.scala'
91+
},
92+
'6': {
8393
name: 'entity.name.import.renamed-to.scala'
8494
}
8595
}
8696
},
8797
{
88-
match: `(given\\s+)?([^\\s.,}]+)`,
98+
match: `(given\\s+)?(?:(${idUpper})|(${backQuotedId}|${plainid}))`,
8999
captures: {
90100
'1': {
91101
name: 'keyword.given.import.scala'
92102
},
93103
'2': {
104+
name: 'entity.name.class.import.scala'
105+
},
106+
'3': {
94107
name: 'entity.name.import.scala'
95108
}
96109
}

tests/snap/scala_spec.test.scala.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -821,7 +821,7 @@
821821
# ^ source.scala
822822
# ^^^^^^ source.scala meta.import.scala keyword.other.import.scala
823823
# ^ source.scala meta.import.scala
824-
# ^ source.scala meta.import.scala entity.name.import.scala
824+
# ^ source.scala meta.import.scala entity.name.class.import.scala
825825
# ^ source.scala meta.import.scala punctuation.definition.import
826826
# ^ source.scala meta.import.scala meta.import.selector.scala meta.bracket.scala
827827
# ^^^ source.scala meta.import.scala meta.import.selector.scala entity.name.import.scala

tests/unit/#110.test.scala

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// SYNTAX TEST "source.scala"
2+
3+
import java.io.BufferedReaded
4+
// ^^^^^^ keyword.other.import.scala
5+
// ^^^^ entity.name.import.scala
6+
// ^^ entity.name.import.scala
7+
// ^^^^^^^^^^^^^^ entity.name.class.import.scala
8+
9+
import foo._
10+
// ^^^^^^ keyword.other.import.scala
11+
// ^^^ entity.name.import.scala
12+
// ^ entity.name.import.scala
13+
14+
import foo.Bar
15+
// ^^^^^^ keyword.other.import.scala
16+
// ^^^ entity.name.import.scala
17+
// ^^^ entity.name.class.import.scala
18+
19+
import foo.Bar._
20+
// ^^^^^^ keyword.other.import.scala
21+
// ^^^ entity.name.import.scala
22+
// ^^^ entity.name.class.import.scala
23+
// ^ entity.name.import.scala
24+
25+
import foo.Foo.Bar._
26+
// ^^^^^^ keyword.other.import.scala
27+
// ^^^ entity.name.import.scala
28+
// ^^^ entity.name.class.import.scala
29+
// ^^^ entity.name.class.import.scala
30+
31+
import foo.{Foo, bar}
32+
// ^^^^^^ keyword.other.import.scala
33+
// ^^^ entity.name.import.scala
34+
// ^^^ entity.name.class.import.scala
35+
// ^^^ entity.name.import.scala
36+
37+
import foo.{Foo => Bar, bar => foo}
38+
// ^^^^^^ keyword.other.import.scala
39+
// ^^^ entity.name.import.scala
40+
// ^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.renamed-from.scala
41+
// ^^ meta.import.scala
42+
// ^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.renamed-to.scala
43+
// ^^^ meta.import.scala meta.import.selector.scala entity.name.import.renamed-from.scala
44+
// ^^ meta.import.scala meta.import.selector.scala keyword.other.arrow.scala
45+
// ^^^ meta.import.scala meta.import.selector.scala entity.name.import.renamed-to.scala

tests/unit/imports.test.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@
5656
import A.{given TC}
5757
// ^^^^^^ meta.import.scala keyword.other.import.scala
5858
// ^ meta.import.scala
59-
// ^ meta.import.scala entity.name.import.scala
59+
// ^ meta.import.scala entity.name.class.import.scala
6060
// ^ meta.import.scala punctuation.definition.import
6161
// ^ meta.import.scala meta.import.selector.scala meta.bracket.scala
6262
// ^^^^^ meta.import.scala keyword.given.import.scala
6363
// ^ meta.import.scala meta.import.selector.scala
64-
// ^^ meta.import.scala entity.name.import.scala
64+
// ^^ meta.import.scala entity.name.class.import.scala
6565
// ^ meta.import.scala meta.import.selector.scala

tests/unit/unicode.identifiers.test.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ import scala.colection.Seq
114114
// ^ meta.import.scala punctuation.definition.import
115115
// ^^^^^^^^^ meta.import.scala entity.name.import.scala
116116
// ^ meta.import.scala punctuation.definition.import
117-
// ^^^ meta.import.scala entity.name.import.scala
117+
// ^^^ meta.import.scala entity.name.class.import.scala
118118
import users._ // import everything from the users package
119119
// <------ meta.import.scala keyword.other.import.scala
120120
// ^ meta.import.scala
@@ -128,7 +128,7 @@ import users.User // import the class User
128128
// ^ meta.import.scala
129129
// ^^^^^ meta.import.scala entity.name.import.scala
130130
// ^ meta.import.scala punctuation.definition.import
131-
// ^^^^ meta.import.scala entity.name.import.scala
131+
// ^^^^ meta.import.scala entity.name.class.import.scala
132132
// ^^ comment.line.double-slash.scala punctuation.definition.comment.scala
133133
// ^^^^^^^^^^^^^^^^^^^^^^ comment.line.double-slash.scala
134134
import users.{User, UserPreferences} // Only imports selected members
@@ -137,9 +137,9 @@ import users.{User, UserPreferences} // Only imports selected members
137137
// ^^^^^ meta.import.scala entity.name.import.scala
138138
// ^ meta.import.scala punctuation.definition.import
139139
// ^ meta.import.scala meta.import.selector.scala meta.bracket.scala
140-
// ^^^^ meta.import.scala meta.import.selector.scala entity.name.import.scala
140+
// ^^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.scala
141141
// ^^ meta.import.scala meta.import.selector.scala
142-
// ^^^^^^^^^^^^^^^ meta.import.scala meta.import.selector.scala entity.name.import.scala
142+
// ^^^^^^^^^^^^^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.scala
143143
// ^ meta.import.scala meta.import.selector.scala meta.bracket.scala
144144

145145

@@ -150,11 +150,11 @@ import users.{UserPreferences => UPrefs} // import and rename for convenience
150150
// ^^^^^ meta.import.scala entity.name.import.scala
151151
// ^ meta.import.scala punctuation.definition.import
152152
// ^ meta.import.scala meta.import.selector.scala meta.bracket.scala
153-
// ^^^^^^^^^^^^^^^ meta.import.scala meta.import.selector.scala entity.name.import.renamed-from.scala
153+
// ^^^^^^^^^^^^^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.renamed-from.scala
154154
// ^ meta.import.scala meta.import.selector.scala
155155
// ^^ meta.import.scala meta.import.selector.scala keyword.other.arrow.scala
156156
// ^ meta.import.scala meta.import.selector.scala
157-
// ^^^^^^ meta.import.scala meta.import.selector.scala entity.name.import.renamed-to.scala
157+
// ^^^^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.renamed-to.scala
158158
// ^ meta.import.scala meta.import.selector.scala meta.bracket.scala
159159

160160

0 commit comments

Comments
 (0)