LSP 服务器 on_init 每个项目的配置

我是 Lua 的新手,在经过多个小时的搜索后,没有成功。

我希望根据项目设置加载一些 EFM 语言服务器配置。所以,我找到了这个:https://github.com/neovim/nvim-lspconfig/wiki/Project-local-settings

例如:在 A 项目中,我有一个"black"代码格式化程序,在 B 项目中,我有一个"yapf"代码格式化程序。

之后,我编写了自定义 on_init 处理程序:

...
on_init = function (client)
  -- 我们只需要注册可用的 linters 和 formatters,因为它可以提高性能↴
  local result = vim.fn.systemlist(
    [[poetry run pip list --disable-pip-version-check | grep -w -o '^black \|^yapf \|^flake8 \|^isort \|^mypy ']]

  for _, package_name in pairs(result) do
    local package_config = M[string.gsub(package_name, "%s+", "")]
    if package_config then
      table.insert(client.config.settings.languages.python, package_config)
    end
  end

  client.notify("workspace/didChangeConfiguration")
  return true
end,
...

好吧,它起作用了,但是我在自定义命令方面遇到了问题,它是同步的,并在第一次 LSP 加载时冻结 UI。是否可能异步加载 on_init 或异步执行 cmd?

原文链接 https://stackoverflow.com/questions/69808317

点赞