fix(nvim): update config for gopls

This commit is contained in:
Bruno Carlin 2024-02-19 17:50:04 +01:00
parent b8eb57b652
commit 9b7da8ef75
Signed by: bcarlin
GPG key ID: 8E254EA0FFEB9B6D

View file

@ -1,15 +1,28 @@
vim.api.nvim_create_autocmd('BufWritePre', { vim.api.nvim_create_autocmd("BufWritePre", {
pattern = '*.go', pattern = "*.go",
callback = function() callback = function()
vim.lsp.buf.code_action({ context = { only = { 'source.organizeImports' } }, apply = true }) local params = vim.lsp.util.make_range_params()
vim.lsp.buf.format() params.context = {only = {"source.organizeImports"}}
-- buf_request_sync defaults to a 1000ms timeout. Depending on your
-- machine and codebase, you may want longer. Add an additional
-- argument after params if you find that you have to write the file
-- twice for changes to be saved.
-- E.g., vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000)
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params)
for cid, res in pairs(result or {}) do
for _, r in pairs(res.result or {}) do
if r.edit then
local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16"
vim.lsp.util.apply_workspace_edit(r.edit, enc)
end
end
end
vim.lsp.buf.format({async = false})
end end
}) })
local capabilities = require('cmp_nvim_lsp').default_capabilities()
require('lspconfig').gopls.setup { require('lspconfig').gopls.setup {
capabilities = capabilities,
flags = { flags = {
debounce_text_changes = 150, debounce_text_changes = 150,
}, },
@ -20,7 +33,9 @@ require('lspconfig').gopls.setup {
gofumpt = true, gofumpt = true,
usePlaceholders = true, usePlaceholders = true,
completeUnimported = true, completeUnimported = true,
completeFunctionCalls = true,
experimentalPostfixCompletions = true, experimentalPostfixCompletions = true,
allExperiments = true,
analyses = { analyses = {
assign = true, assign = true,
atomic = true, atomic = true,
@ -56,6 +71,11 @@ require('lspconfig').gopls.setup {
useany = true, useany = true,
nonewvars = true, nonewvars = true,
}, },
codelenses = {
generate = true,
gc_details = true,
run_govulncheck = true,
},
}, },
}, },
} }