Skip to content

Identify quotes/splices start as the start of a normal block #176

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions src/typescript/Scala.tmLanguage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -590,8 +590,16 @@ export const scalaTmLanguage: TmLanguage = {
]
},
'scala-quoted': {
match: "('\\{|'\\[)(?!')",
name: 'constant.other.quoted.scala'
patterns: [
{ // Start of `'{ .. }` or `${ .. }`
match: "['$]\\{(?!')",
name: 'punctuation.section.block.begin.scala'
},
{ // Start of `'[ .. ]`
match: "'\\[(?!')",
name: 'meta.bracket.scala'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason that '{ and '[ are assigned such different tokens? Also, I don't understand why ' and { have different colors on my machine, even though the tests show that they should be the same token. Does this also happen on your machine, or is mine somehow misconfigured?

image

Copy link
Contributor Author

@nicolasstucki nicolasstucki Dec 16, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to identify those tokens separately or it would try the Char tokens. I chose the block as highlighting to make sure the start and end are highlighted the same way.

With this change, I am aiming to fix the inconsistency seen in GitHub.
Screenshot 2020-12-16 at 21 31 51

In my setup, I actually saw the old and new version in white. It is really strange that you see it differently. Are you sure you have the correct version installed locally? I remember that when trying to install a local plugin with a lower version vscode just ignored it and kept the old one.

I will experiment with different colors for vscode to see if I have something similar.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did fight a little with my vscode setup to make sure I had the right version installed, but I think I eventually did.

If you want to try my colors, I'm using the "Material Theme" by Mattia Astorino, with the Material Theme High Contrast theme.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do get consistently the expected highlighting with different configs and on two different machines. It is probably an issue with your setup.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, in that case I'll approve and merge. Thank you for looking into it.

}
]
},
'xml-doublequotedString': {
end: '"',
Expand Down
20 changes: 18 additions & 2 deletions tests/unit/quoted.test.scala
Original file line number Diff line number Diff line change
@@ -1,11 +1,27 @@
// SYNTAX TEST "source.scala"

'{ 2 }
// ^^ constant.other.quoted.scala
// ^^ punctuation.section.block.begin.scala
// ^ constant.numeric.scala
// ^ punctuation.section.block.end.scala

'[ String ]
// ^^ constant.other.quoted.scala
// ^^ meta.bracket.scala
// ^^^^^^ entity.name.class
// ^ meta.bracket.scala


${ 1 }
// ^^ punctuation.section.block.begin.scala
// ^ constant.numeric.scala
// ^ punctuation.section.block.end.scala

case '{ x } =>
// ^^^^ keyword.control.flow.scala
// ^^ punctuation.section.block.begin.scala
// ^ punctuation.section.block.end.scala

case '[ T ] =>
// ^^^^ keyword.control.flow.scala
// ^^ meta.bracket.scala
// ^ meta.bracket.scala