Skip to content

Commit 269b658

Browse files
committed
Improve end highlighting for type declarations
1 parent b3d1825 commit 269b658

File tree

2 files changed

+26
-10
lines changed

2 files changed

+26
-10
lines changed

src/typescript/Scala.tmLanguage.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const idUpper = `${upperLetter}${letterOrDigit}*(?:(?<=_)${opchar}+)?`
1818
const idLower = `${lowerLetter}${letterOrDigit}*(?:(?<=_)${opchar}+)?`
1919
const plainid = `(?:${idrest}|${opchar}+)`
2020
const backQuotedId = "`[^`]+`"
21-
21+
const endOfLineMaybeWithComment = "(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)"
2222

2323
export const scalaTmLanguage: TmLanguage = {
2424
fileTypes: [
@@ -486,18 +486,30 @@ export const scalaTmLanguage: TmLanguage = {
486486
name: 'keyword.control.flow.scala'
487487
},
488488
{
489-
match: `^\\s*(end)\\s+(?:(if|while|for|match|new)|(${upperLetter}${plainid}?)|(${backQuotedId}|${plainid}))?(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)`,
489+
match: `^\\s*(end)\\s+(if|while|for|match)${endOfLineMaybeWithComment}`,
490+
name: 'keyword.control.flow.end.scala'
491+
},
492+
{
493+
match: `^\\s*(end)\\s+(?:(new)|(${idUpper}))${endOfLineMaybeWithComment}`,
490494
captures: {
491495
'1': {
492-
name: 'keyword.control.flow.end.scala'
496+
name: 'keyword.declaration.end.scala'
493497
},
494498
'2': {
495-
name: 'keyword.control.flow.end.scala'
499+
name: 'keyword.declaration.end.scala'
496500
},
497501
'3': {
498502
name: 'entity.name.type.declaration'
503+
}
504+
}
505+
},
506+
{
507+
match: `^\\s*(end)\\s+(${backQuotedId}|${plainid})?${endOfLineMaybeWithComment}`,
508+
captures: {
509+
'1': {
510+
name: 'keyword.declaration.end.scala'
499511
},
500-
'4': {
512+
'2': {
501513
name: 'entity.name.declaration'
502514
}
503515
}

tests/unit/#107.test.scala

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
// SYNTAX TEST "source.scala"
22

33
new Foo:
4+
// ^^^ keyword.declaration.scala
45
...
56
end new
6-
// ^^^ keyword.control.flow.end.scala
7-
// ^^^ keyword.control.flow.end.scala
7+
// ^^^ keyword.declaration.end.scala
8+
// ^^^ keyword.declaration.end.scala
89

910
end if
1011
// ^^^ keyword.control.flow.end.scala
@@ -25,15 +26,18 @@
2526
class Foo
2627
// ^^^ entity.name.class.declaration
2728
end Foo
28-
// ^^^ keyword.control.flow.end.scala
29+
// ^^^ keyword.declaration.end.scala
2930
// ^^^ entity.name.type.declaration
3031

3132
def foo
3233
// ^^^ entity.name.function.declaration
3334
end bar
34-
// ^^^ keyword.control.flow.end.scala
35+
// ^^^ keyword.declaration.end.scala
3536
// ^^^ entity.name.declaration
3637

3738
end `bar`
38-
// ^^^ keyword.control.flow.end.scala
39+
// ^^^ keyword.declaration.end.scala
3940
// ^^^ entity.name.declaration
41+
42+
end
43+
// ^^^ keyword.declaration.end.scala

0 commit comments

Comments
 (0)