⚠ ️ This project is under development so there is nothing to try out yet. These instructions are intended for people who want to contribute to the Metals codebase.
If anything isn't clear, please open an issue or ask on gitter.
This project follows Scalameta's contribution guidelines. Please read them for information about how to create good bug reports and submit pull requests.
metalscontains a Scala implementation of a language server based on Scalameta
mtagssource file indexer for Java and Scala.
vscode-extensioncontains a Visual Studio Code extension, implementing a client for the language server
testsdirectory for unit tests
test-workspacedirectory for manually testing the vscode plugin locally
The improvement you are looking to contribute may belong in a separate repository:
- scalameta/scalameta: SemanticDB, parsing, tokenization
- scalameta/scalafmt: code formatting
- scalameta/lsp4s: LSP data structures and JSON-RPC
- scalacenter/scalafix: code refactoring and linting
- scala/scala: presentation compiler
You will need the following applications installed:
sbt(for building a local version of the server)
npm(for building a local version of the VSCode extension)
- Visual Studio Code (
codefrom the console)
To run the unit tests open an sbt shell and run
sbt > unit/test # Run all unit tests > metals/testOnly -- tests.DefinitionSuite # Only test goto definition
VS Code extension
Install the extension dependencies
cd vscode-extension npm install
Then open the project
Next, install the Scala syntax package
This plugin is required to start the extension.
Now you can start the plugin debugging mode via
Debug > Start debuggin or
⚠ It is normal that the plugin fails to start because it tries to start the Metals language server, which does not exist at this moment.