From 179803f537807fff5b5961a2b3efd9e7ddac54a2 Mon Sep 17 00:00:00 2001 From: Ilia Choly Date: Fri, 9 Jun 2023 21:00:04 -0400 Subject: feat(gopls): attach previous lsp instance for GOMODCACHE (#2661) --- lua/lspconfig/server_configurations/gopls.lua | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lua') 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, -- cgit v1.2.3-70-g09d2