2022-03-20 10:22:32 +08:00
local util = require ' lspconfig.util '
2021-10-05 15:13:10 +08:00
2022-03-20 10:22:32 +08:00
return {
2021-10-05 15:13:10 +08:00
default_config = {
2022-03-20 10:22:32 +08:00
cmd = { ' metals ' } ,
2021-10-05 15:13:10 +08:00
filetypes = { ' scala ' } ,
root_dir = util.root_pattern ( ' build.sbt ' , ' build.sc ' , ' build.gradle ' , ' pom.xml ' ) ,
message_level = vim.lsp . protocol.MessageType . Log ,
init_options = {
statusBarProvider = ' show-message ' ,
isHttpEnabled = true ,
compilerOptions = {
snippetAutoIndent = false ,
} ,
} ,
} ,
docs = {
description = [ [
https : // scalameta.org / metals /
Scala language server with rich IDE features .
See full instructions in the Metals documentation :
https : // scalameta.org / metals / docs / editors / vim.html # using - an - alternative - lsp - client
Note : that if you ' re using [nvim-metals](https://github.com/scalameta/nvim-metals), that plugin fully handles the setup and installation of Metals, and you shouldn ' t set up Metals both with it and ` lspconfig ` .
To install Metals , make sure to have [ coursier ] ( https : // get - coursier.io / docs / cli - installation ) installed , and once you do you can install the latest Metals with ` cs install metals ` . You can also manually bootstrap Metals with the following command .
` ` ` bash
cs bootstrap \
--java-opt -Xss4m \
--java-opt -Xms100m \
org.scalameta : metals_2 .12 : < enter - version - here > \
- r bintray : scalacenter / releases \
- r sonatype : snapshots \
- o / usr / local / bin / metals - f
` ` `
] ] ,
default_config = {
root_dir = [[util.root_pattern("build.sbt", "build.sc", "build.gradle", "pom.xml")]] ,
} ,
} ,
}