LSP-metals
Sublime Text package for Metals, a language server for Scala
Details
Installs
- Total 3K
- Win 823
- Mac 1K
- Linux 823
Nov 22 | Nov 21 | Nov 20 | Nov 19 | Nov 18 | Nov 17 | Nov 16 | Nov 15 | Nov 14 | Nov 13 | Nov 12 | Nov 11 | Nov 10 | Nov 9 | Nov 8 | Nov 7 | Nov 6 | Nov 5 | Nov 4 | Nov 3 | Nov 2 | Nov 1 | Oct 31 | Oct 30 | Oct 29 | Oct 28 | Oct 27 | Oct 26 | Oct 25 | Oct 24 | Oct 23 | Oct 22 | Oct 21 | Oct 20 | Oct 19 | Oct 18 | Oct 17 | Oct 16 | Oct 15 | Oct 14 | Oct 13 | Oct 12 | Oct 11 | Oct 10 | Oct 9 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 3 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 3 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 3 | 0 | 0 | 1 | 1 | 0 | 0 |
Mac | 0 | 3 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 2 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 2 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 3 | 0 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 1 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 2 | 1 |
Readme
- Source
- raw.githubusercontent.com
LSP-Metals
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.
Table of Contents
- Requirements
- Installing LSP-metals
- Importing a build
- Configuration
- Workplace Diagnostic
- Run doctor
- All Available Commands
- Show document symbols
- Formatting on save
- Organize imports on save
- Decoration protocol
- Status Bar
- Troubleshooting
Requirements
- Sublime Text (build 4000 or later)
- LSP package:
Command Palette (Cmd + Shift + P) > Install package > LSP
- Java 8 or 11 provided by OpenJDK or Oracle. Eclipse OpenJ9 is not supported, please make sure the JAVA_HOME environment variable points to a valid Java 8 or 11 installation.
Installing LSP-metals
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
Importing a build
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.
- “Not now” disables this prompt for 2 minutes.
- “Don't show again” disables this prompt forever, use rm -rf .metals/ to re-enable the prompt.
- Run
lsp toggle server panel
in the command palette to watch the build import progress. You can optionally add a key binding for this command. - Behind the scenes, Metals uses Bloop to import sbt builds, but you don't need Bloop installed on your machine to run this step.
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.
Speeding up import
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.
Importing changes
When you change build.sbt or sources under project/, you will be prompted to re-import the build.
Configuration
You can edit the package settings by running LSP-metals Settings
in the sublime palette or accessing Preferences > Package Settings > LSP > Servers > LSP-metals
.
Java version
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.
Server version
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.
Workplace Diagnostic
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
Run doctor
To troubleshoot problems with your build workspace, run Doctor run
in the command pallet. This command opens a browser window.
All Available Commands
The following commands can be invoked simply via the sublime command palette.
- Build Import
- Build Connect
- compile Cascade
- Compile Cancel
- Doctor Run
- New Scala File: Also available in the side bar context menu.
Show document symbols
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
Formatting on save
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,
...
Organize imports on save
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
},
...
Decoration protocol
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
}
}
Status Bar
Information about your workspace build like compilation errors count, build status, etc. are displayed by Metals in the sublime status bar.
Troubleshooting
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.