aboutsummaryrefslogtreecommitdiffstats
path: root/lua/lspconfig/metals.lua
blob: eacb19543fc3d0df34869916cddca5158a58b55a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
local configs = require 'lspconfig/configs'
local util = require 'lspconfig/util'
local server_name = "metals"
local bin_name = "metals"

configs[server_name] = {
  default_config = {
    cmd = {bin_name};
    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 = {
    package_json = "https://raw.githubusercontent.com/scalameta/metals-vscode/master/package.json";
    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 this plugin.

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")]];
    };
  };
};