From 8c2f01f9da92b4be79b38977fb1f2f71888cacac Mon Sep 17 00:00:00 2001 From: Simon Lasbrugnas Date: Fri, 18 Oct 2024 12:20:02 +0200 Subject: [PATCH] feat(lsp): add golang autocmd on save Auto organize imports and format on save. --- lua/plugins/lsp/config.lua | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/lua/plugins/lsp/config.lua b/lua/plugins/lsp/config.lua index 57335bf..b55cd81 100644 --- a/lua/plugins/lsp/config.lua +++ b/lua/plugins/lsp/config.lua @@ -13,6 +13,38 @@ lspconfig.lua_ls.setup({ }, }) +lspconfig.gopls.setup({ + on_attach = function(_, bufnr) + -- autcmd format on save + vim.api.nvim_create_autocmd("BufWritePre", { + buffer = bufnr, + callback = function() + vim.lsp.buf.format() + end, + }) + + -- autocmd Organize Imports on save + vim.api.nvim_create_autocmd("BufWritePre", { + buffer = bufnr, + callback = function() + local params = vim.lsp.util.make_range_params() + params.context = {only = {"source.organizeImports"}} + local result = vim.lsp.buf_request_sync(bufnr, "textDocument/codeAction", params, 1000) + for _, res in pairs(result or {}) do + for _, r in pairs(res.result or {}) do + if r.edit then + vim.lsp.util.apply_workspace_edit(r.edit, "utf-8") + else + vim.lsp.buf.execute_command(r.command) + end + end + end + end, + }) + end, +}) + + lspconfig.eslint.setup({ on_attach = function(_, bufnr) vim.api.nvim_create_autocmd("BufWritePre", {