aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlia Choly <ilia.choly@gmail.com>2023-06-09 21:00:04 -0400
committerGitHub <noreply@github.com>2023-06-10 09:00:04 +0800
commit179803f537807fff5b5961a2b3efd9e7ddac54a2 (patch)
tree13b5f041b556435352842c7462fb8bc3a33be5c6
parentdocs: update server_configurations.md (diff)
downloadnvim-lspconfig-179803f537807fff5b5961a2b3efd9e7ddac54a2.tar
nvim-lspconfig-179803f537807fff5b5961a2b3efd9e7ddac54a2.tar.gz
nvim-lspconfig-179803f537807fff5b5961a2b3efd9e7ddac54a2.tar.bz2
nvim-lspconfig-179803f537807fff5b5961a2b3efd9e7ddac54a2.tar.lz
nvim-lspconfig-179803f537807fff5b5961a2b3efd9e7ddac54a2.tar.xz
nvim-lspconfig-179803f537807fff5b5961a2b3efd9e7ddac54a2.tar.zst
nvim-lspconfig-179803f537807fff5b5961a2b3efd9e7ddac54a2.zip
feat(gopls): attach previous lsp instance for GOMODCACHE (#2661)
-rw-r--r--lua/lspconfig/server_configurations/gopls.lua9
1 files changed, 9 insertions, 0 deletions
diff --git a/lua/lspconfig/server_configurations/gopls.lua b/lua/lspconfig/server_configurations/gopls.lua
index fa84c40c..fd470beb 100644
--- a/lua/lspconfig/server_configurations/gopls.lua
+++ b/lua/lspconfig/server_configurations/gopls.lua
@@ -1,10 +1,19 @@
local util = require 'lspconfig.util'
+local mod_cache = vim.trim(vim.fn.system 'go env GOMODCACHE')
+
return {
default_config = {
cmd = { 'gopls' },
filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' },
root_dir = function(fname)
+ -- see: https://github.com/neovim/nvim-lspconfig/issues/804
+ if fname:sub(1, #mod_cache) == mod_cache then
+ local clients = vim.lsp.get_active_clients { name = 'gopls' }
+ if #clients > 0 then
+ return clients[#clients].config.root_dir
+ end
+ end
return util.root_pattern('go.work', 'go.mod', '.git')(fname)
end,
single_file_support = true,