diff options
| author | anand <anand.panchdhari@gmail.com> | 2026-04-05 16:47:53 +0530 |
|---|---|---|
| committer | anand <anand.panchdhari@gmail.com> | 2026-04-05 16:47:53 +0530 |
| commit | 76f6235bcd178cc5c28cc4fbf0d09fafb1f63a9b (patch) | |
| tree | 8d248824df3cacdfef1789d3663175bce48d05b5 /nvim/lsp/gopls.lua | |
| parent | 50525874363953113aa715ea519d179e9c87bbd0 (diff) | |
some changes
Diffstat (limited to 'nvim/lsp/gopls.lua')
| -rwxr-xr-x | nvim/lsp/gopls.lua | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/nvim/lsp/gopls.lua b/nvim/lsp/gopls.lua deleted file mode 100755 index 0b4c59f..0000000 --- a/nvim/lsp/gopls.lua +++ /dev/null @@ -1,98 +0,0 @@ ----@brief ---- ---- https://github.com/golang/tools/tree/master/gopls ---- ---- Google's lsp server for golang. - ---- @class go_dir_custom_args ---- ---- @field envvar_id string ---- ---- @field custom_subdir string? - -local mod_cache = nil -local std_lib = nil - ----@param custom_args go_dir_custom_args ----@param on_complete fun(dir: string | nil) -local function identify_go_dir(custom_args, on_complete) - local cmd = { 'go', 'env', custom_args.envvar_id } - vim.system(cmd, { text = true }, function(output) - local res = vim.trim(output.stdout or '') - if output.code == 0 and res ~= '' then - if custom_args.custom_subdir and custom_args.custom_subdir ~= '' then - res = res .. custom_args.custom_subdir - end - on_complete(res) - else - vim.schedule(function() - vim.notify( - ('[gopls] identify ' .. custom_args.envvar_id .. ' dir cmd failed with code %d: %s\n%s'):format( - output.code, - vim.inspect(cmd), - output.stderr - ) - ) - end) - on_complete(nil) - end - end) -end - ----@return string? -local function get_std_lib_dir() - if std_lib and std_lib ~= '' then - return std_lib - end - - identify_go_dir({ envvar_id = 'GOROOT', custom_subdir = '/src' }, function(dir) - if dir then - std_lib = dir - end - end) - return std_lib -end - ----@return string? -local function get_mod_cache_dir() - if mod_cache and mod_cache ~= '' then - return mod_cache - end - - identify_go_dir({ envvar_id = 'GOMODCACHE' }, function(dir) - if dir then - mod_cache = dir - end - end) - return mod_cache -end - ----@param fname string ----@return string? -local function get_root_dir(fname) - if mod_cache and fname:sub(1, #mod_cache) == mod_cache then - local clients = vim.lsp.get_clients({ name = 'gopls' }) - if #clients > 0 then - return clients[#clients].config.root_dir - end - end - if std_lib and fname:sub(1, #std_lib) == std_lib then - local clients = vim.lsp.get_clients({ name = 'gopls' }) - if #clients > 0 then - return clients[#clients].config.root_dir - end - end - return vim.fs.root(fname, 'go.work') or vim.fs.root(fname, 'go.mod') or vim.fs.root(fname, '.git') -end - -return { - cmd = { 'gopls' }, - filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' }, - root_dir = function(bufnr, on_dir) - local fname = vim.api.nvim_buf_get_name(bufnr) - get_mod_cache_dir() - get_std_lib_dir() - -- see: https://github.com/neovim/nvim-lspconfig/issues/804 - on_dir(get_root_dir(fname)) - end, -} |
