From 325b0856e868bb07caaaeffd0713da030aeb9f50 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 4 Apr 2024 23:00:49 +0200 Subject: [PATCH] nvim: lsp: make gopls fix those damn unused imports when iam saving the files --- nvim/lua/plugins/ide/lsp.lua | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/nvim/lua/plugins/ide/lsp.lua b/nvim/lua/plugins/ide/lsp.lua index 61bcbe6..7b47bcc 100644 --- a/nvim/lua/plugins/ide/lsp.lua +++ b/nvim/lua/plugins/ide/lsp.lua @@ -24,7 +24,21 @@ return { } }, gopls = { - format_on_save = true, + -- format_on_save = true, + on_save = function () + local params = vim.lsp.util.make_range_params() + params.context = {only = {"source.organizeImports"}} + local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 1000) + 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, settings = { gopls = { analyses = { @@ -92,6 +106,14 @@ return { }) end + if server_opt.on_save then + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = server_opt.on_save, + }) + end + vim.api.nvim_create_autocmd("CursorHold", { group = augroup, buffer = bufnr,