如何让 Metals LSP 在 neovim 中工作?

问题描述 投票:0回答:1

请帮助我设置 Metals LSP。我尝试这样做但没有运气,所以我希望这里有人可以帮助我。 我一直在使用 mason 及其 lsp-config 但现在对于金属,我很难正确配置它,因为它不在梅森中 目前我的 lsp 文件如下所示:

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

我已经通过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'

我也尝试过放

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

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

在我的 lsp.lua 文件中

scala lua neovim language-server-protocol scala-metals
1个回答
0
投票

我是在回答问题,但这实际上是在回答
加斯顿·沙巴斯的评论。这个项目看起来非常有用,但文档很糟糕,先决条件似乎到处都是强制性的东西,以及有兴趣深入研究的人可能想要查看的东西。

对于 Metal 插件的弃用版本,实际上有比目前 nvim-metals 更好的文档。我认为想要看到这项工作被采用的人会花一些时间来整理基本的安装描述,也许还可以制作一个视频来展示它如何在日常使用中发挥作用。

© www.soinside.com 2019 - 2024. All rights reserved.