aboutsummaryrefslogtreecommitdiffstats
path: root/lua/lspconfig/server_configurations/gopls.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lspconfig/server_configurations/gopls.lua')
-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,