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.[^no-lspconfig] You can see all
the available features
here.
v0.8.x
tag.: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.[^no-lspconfig]
Example if using packer
:
use({'scalameta/nvim-metals', requires = { "nvim-lua/plenary.nvim" }})
:help nvim-metals
.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:
[^no-lspconfig]: If you're familiar with nvim and LSP you'll probably know of
nvim-lspconfig
which 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 with nvim-lspconfig
and with nvim-metals
as
stuff will not work right.
[^coursier]: nvim-metals
uses Coursier to download and update Metals. NOTE:
On Windows, you should run coursier
or cs.exe
once from the command line
as this is how it will install itself. Once this is done you should add
C:\Users\YOURNAME\AppData\Coursier\data\bin
to your path. To verify that it
is properly installed you can run cs --help
from a new shell.
[^mappings]: 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.
[^plenary]: 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.