nvim-metals is a Lua plugin built to provide a better experience while using
Metals, the Scala Language Server, with Neovim's built-in LSP
support.1 You can see all
the available features
here.
- Before you get started you need to ensure that you are using the latest nvim
v.0.9.x or newer. If you're still on v0.8.x then you'll want to target the
v0.8.xtag. - Ensure Coursier is installed locally.2
- Ensure that you have all the LSP mappings for the core functionality you want setup.3
- Ensure plenary.nvim is installed.4
- Subscribe to this discussion which will notify you of any breaking changes.
- Unfamiliar with Lua and Neovim? Check out the great
:h lua-guide.
NOTE: This plugin works without needing to install
neovim/nvim-lspconfig. If you have
it installed for other languages, that's not a problem, but make sure you do not
have Metals configured through nvim-lspconfig while using this plugin.1
- You can find a full minimal example configuration here.
- You can find the full documentation with
:help nvim-metals. - You can find a full list of features here.
To view all of the available commands, check out :help metals-commands in the
help docs. Similarly, to see the available configuration settings check out
:help metals-settings.
To see the full details on the available configurations, checkout out :help metals-integrations. The currently available integrations are:
Footnotes
-
If you're familiar with nvim and LSP you'll probably know of
nvim-lspconfigwhich also has a Metals configuration. Note that this is a very minimal version with no specific Metals commands and no Metals extensions. You can see more info on this here. DO NOT try to use Metals both withnvim-lspconfigand withnvim-metalsas stuff will not work right. ↩ ↩2 -
nvim-metalsuses Coursier to download and update Metals. NOTE: On Windows, you should runcoursierorcs.exeonce from the command line as this is how it will install itself. Once this is done you should addC:\Users\YOURNAME\AppData\Coursier\data\binto your path. To verify that it is properly installed you can runcs --helpfrom a new shell. ↩ -
By default methods for things like goto definition, find references, etc are there, but not automatically mapped. You can find a minimal example configuration here. ↩
-
You're more than likely already relying on for other plugins. However, make sure to also have this installed as Metals uses it for things like Jobs, popups, and paths. ↩