如何使用 lspconfig 让 gopls 在 NeoVim 中工作?

Dar*_*ing 8 go neovim gopls

neovim 中的 gopls 使用 lspconfig 似乎无法处理任何 go 文件,即使是具有 .git 或 go.mod 文件的文件。我的 lspconfig 可以在下面找到,之后是 .go 文件中的 LspInfo,显示它应该可以工作。任何帮助将非常感激!


lspconfig["gopls"].setup({
    capabilities = capabilities,
    on_attach = on_attach,
})


Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我已经浏览了几乎所有有关此问题的 Reddit 帖子,并尝试弄乱我的 go 环境,但似乎没有任何效果。我还查看了日志,他们确实提到了 go_proxy=Off,但我的 go env 说得不同,这很奇怪。

小智 1

您还需要指定filetypes. 这是一个示例配置(我当前使用的)

lspconfig.gopls.setup {
  on_attach = on_attach,
  capabilities = capabilities,
  cmd = {"gopls"},
  filetypes = { "go", "gomod", "gowork", "gotmpl" },
  root_dir = util.root_pattern("go.work", "go.mod", ".git"),
  settings = {
    gopls = {
      completeUnimported = true,
      usePlaceholders = true,
      analyses = {
        unusedparams = true,
      },
    },
  },
}
Run Code Online (Sandbox Code Playgroud)