Mikołaj
Mikołaj

Reputation: 21

How do I get Metals LSP working in neovim?

Please help me with Metals LSP setup. I tried doing that with no luck, so I hope somebody here can help me please. I've been using mason and its lsp-config but now with metals i have trouble to configure it correctly since its not in mason currently my lsp file looks like this:

local servers = { 'rust_analyzer', 'ocamllsp', 'gopls', 'pyright', 'jdtls', 'asm_lsp', 'clangd' }

require("mason").setup()
require("mason-lspconfig").setup({
    ensure_installed = servers,
})

local on_attach = function(_, _)
  vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, {})
  vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, {})
  vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {})
  vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, {})
  vim.keymap.set('n', 'gr', require('telescope.builtin').lsp_references, {})
  vim.keymap.set('n', 'K', vim.lsp.buf.hover, {})
end

local capabilities = require('cmp_nvim_lsp').default_capabilities()

local lspconfig = require('lspconfig')
for _, lsp in ipairs(servers) do
  lspconfig[lsp].setup {
    on_attach = on_attach,
    capabilities = capabilities,
  }
end

i have downloaded these plugins via packer

  -- lsp
  use {
    "williamboman/mason.nvim",
    "williamboman/mason-lspconfig.nvim",
    "neovim/nvim-lspconfig",
  }

  -- scala lsp
  use({'scalameta/nvim-metals', requires = { "nvim-lua/plenary.nvim" }})

  -- completion
  use 'hrsh7th/cmp-nvim-lsp'
  use 'hrsh7th/cmp-buffer'
  use 'hrsh7th/cmp-path'
  use 'hrsh7th/cmp-cmdline'
  use 'hrsh7th/nvim-cmp'
  use 'L3MON4D3/LuaSnip'
  use 'saadparwaiz1/cmp_luasnip'

also i tried putting

local metals_config = require('metals').bare_config()

metals_config.setup {
    on_attach = on_attach,
    capabilities = capabilities,
}

inside my lsp.lua file

Upvotes: 2

Views: 1518

Answers (0)

Related Questions