LSP-metals
is the recommended Sublime LSP extension for Metals, the Scala language server. LSP-metals
offers automated Metals installation, easy configuration, Metals-specific commands and many other small features.
Command Palette (Cmd + Shift + P) > Install package > LSP
Once you have LSP
installed, you can then install Metals via
Automatically via package control: Command Palette (Cmd + Shift + P) > Install package > LSP-metals
manually: run git clone https://github.com/scalameta/metals-sublime.git LSP-metals
in your sublime packages directory
The first time you open Metals in a new workspace it prompts you to import the build. Click "Import build" to start the installation step.
lsp toggle server panel
in the command palette to watch the build import progress. You can optionally add a key binding for this command.Once the import step completes, compilation starts for your open *.scala files.
Once the sources have compiled successfully, you can navigate the codebase with goto definition.
The "Import build" step can take a long time, especially the first time you run it in a new build. The exact time depends on the complexity of the build and if library dependencies need to be downloaded. For example, this step can take everything from 10 seconds in small cached builds up to 10-15 minutes in large uncached builds.
Consult the Bloop documentation to learn how to speed up build import.
When you change build.sbt or sources under project/, you will be prompted to re-import the build.
You can edit the package settings by running LSP-metals Settings
in the sublime palette or accessing Preferences > Package Settings > LSP > Servers > LSP-metals
.
The LSP-metals
extension by default uses the JAVA_HOME
environment variable
(via environ
). Otherwise, it uses which to locate the java
executable.
If no JAVA_HOME
is detected you can then open Settings by following the
instructions in the displayed error message.
In order to install the latest snapshot of metals you can explicitly set the snapshot version for server_version
. Alternatively, you can also just default to the latest snapshot by setting server_version
to latest-snapshot
.
The same can be done for the latest stable release by setting the value to latest-stable
, If no version is set, it defaults to the latest stable release as well.
The new release check in done each time sublime text is started.
To see all compilation errors and warnings in the workspace, run the following command Toggle Diagnostics Panel
Or use the default mapping super+shift+M
/ ctr+alt+M
To cycle through the diagnostic use the default mapping Next F4
/ Previous shift+F4
To troubleshoot problems with your build workspace, run Doctor run
in the command pallet. This command opens a browser window.
The following commands can be invoked simply via the sublime command palette.
Run the Document Symbols
command to show a symbol outline for the current file. You can also set a key binding for the lsp_document_symbols
command
If you'd like to have LSP-metals
format your file on document save then make sure to add this setting to your Sublime settings, Syntax-specific settings and/or in Project files.
"lsp_format_on_save": true,
...
If you'd like to have LSP-metals
organize your imports on document save then make sure to add this to your LSP
settings.
"lsp_code_actions_on_save":{
"source.organizeImports": true
},
...
This plugin implements the Decoration protocol (only for ST4) which allows showing worksheet evaluations (instead of comments), as well as inferred types and other info as Sublime Phantom.
To enable this feature enable the following LSP-metals
settings:
"settings": {
"metals": {
...
"showInferredType": true,
"showImplicitArguments": true,
"showImplicitConversionsAndClasses": true
}
}
Information about your workspace build like compilation errors count, build status, etc. are displayed by Metals in the sublime status bar.
If you have any questions or issues with LSP-metals, please submit an issue in this repository if it is related to the extension.
If the issue is general to Metals, please submit it in the Metals issue repo.
If you have any feature requests, we also have a feature request issue repo.