From 7b9425ca82d06c6a49f62bd3111817035332794c Mon Sep 17 00:00:00 2001 From: Young Xu Date: Sat, 6 May 2023 01:10:35 +0800 Subject: [PATCH] feat: golang ide config with format --- README.md | 3 +++ init.lua | 2 -- lua/core/keymapping.lua | 4 ++-- lua/lsp/go.lua | 33 ++++++-------------------------- lua/plugins/file-tree.lua | 2 +- lua/plugins/golang.lua | 9 --------- lua/plugins/null-ls.lua | 40 ++++++++++++++++++++++++++++----------- 7 files changed, 41 insertions(+), 52 deletions(-) delete mode 100644 lua/plugins/golang.lua diff --git a/README.md b/README.md index 6a9f777..d5434b5 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,9 @@ sudo npm install -g typescript typescript-language-server sudo npm install -g @volar/vue-language-server sudo npm install -g eslint_d go install github.com/yoheimuta/protolint/cmd/protolint@latest +go install -v github.com/incu6us/goimports-reviser/v3@latest +go install github.com/segmentio/golines@latest +go install mvdan.cc/gofumpt@latest ``` ### 记忆项 diff --git a/init.lua b/init.lua index 47edcf5..828a7bd 100644 --- a/init.lua +++ b/init.lua @@ -48,8 +48,6 @@ require("lsp.clang") require("plugins.java") -- lspsaga require("plugins.lspsaga") --- golang lsp -require("plugins.golang") -- rust ide require("plugins.rust") -- 载入主题 diff --git a/lua/core/keymapping.lua b/lua/core/keymapping.lua index 8ebbf71..a376e72 100644 --- a/lua/core/keymapping.lua +++ b/lua/core/keymapping.lua @@ -56,8 +56,8 @@ map.set("n", "qn", ":q!", noreopt) map.set("n", "qq", ":qa!", noreopt) map.set("i", "jk", "", noreopt) -- 文件页切换 -map.set("n", "ll", ":BufferLineCyclePrev", noreopt) -map.set("n", "hh", ":BufferLineCycleNext", noreopt) +map.set("n", "hh", ":BufferLineCyclePrev", noreopt) +map.set("n", "ll", ":BufferLineCycleNext", noreopt) map.set("n", "bpi", ":BufferLineTogglePin", noreopt) map.set("n", "bcl", ":BufferLineCloseLeft", noreopt) map.set("n", "bcr", ":BufferLineCloseRight", noreopt) diff --git a/lua/lsp/go.lua b/lua/lsp/go.lua index f38faa2..56f7b04 100644 --- a/lua/lsp/go.lua +++ b/lua/lsp/go.lua @@ -1,3 +1,7 @@ +require("go").setup({ + lsp_cfg = false, +}) + local has_words_before = function() local line, col = unpack(vim.api.nvim_win_get_cursor(0)) return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil @@ -44,30 +48,5 @@ cmp.setup({ }), }) -local capabilities = require("cmp_nvim_lsp").default_capabilities() --nvim-cmp - -require("lspconfig").golangci_lint_ls.setup({ - on_attach = common_lsp_on_attach, - flags = common_lsp_flags, -}) - -util = require("lspconfig/util") -require("lspconfig").gopls.setup({ - cmd = { "gopls" }, - filetypes = { "go", "gomod" }, - root_dir = util.root_pattern("go.work", "go.mod", ".git"), - on_attach = common_lsp_on_attach, - flags = common_lsp_flags, - capabilities = capabilities, - settings = { - gopls = { - experimentalPostfixCompletions = true, - analyses = { - unusedparams = true, - shadow = true, - }, - staticcheck = true, - }, - }, - init_options = { usePlaceholders = true }, -}) +local cfg = require("go.lsp").config() -- config() return the go.nvim gopls setup +require("lspconfig").gopls.setup(cfg) diff --git a/lua/plugins/file-tree.lua b/lua/plugins/file-tree.lua index 520bf52..10dbffc 100644 --- a/lua/plugins/file-tree.lua +++ b/lua/plugins/file-tree.lua @@ -18,7 +18,7 @@ require("nvim-tree").setup({ filters = { custom = {}, dotfiles = true, - exclude = { ".golangci*", ".protolint*", ".gitignore" }, + exclude = { ".golangci*", ".protolint*", ".gitignore", ".eslintrc*" }, }, filesystem_watchers = { enable = true, diff --git a/lua/plugins/golang.lua b/lua/plugins/golang.lua deleted file mode 100644 index 5ce0e4b..0000000 --- a/lua/plugins/golang.lua +++ /dev/null @@ -1,9 +0,0 @@ -require("go").setup() -local format_sync_grp = vim.api.nvim_create_augroup("GoImport", {}) -vim.api.nvim_create_autocmd("InsertLeavePre", { - pattern = "*.go", - callback = function() - require("go.format").goimport() - end, - group = format_sync_grp, -}) diff --git a/lua/plugins/null-ls.lua b/lua/plugins/null-ls.lua index cdeb406..3f997d2 100644 --- a/lua/plugins/null-ls.lua +++ b/lua/plugins/null-ls.lua @@ -1,15 +1,33 @@ local null_ls = require("null-ls") +local sources = { + null_ls.builtins.formatting.stylua, + null_ls.builtins.formatting.goimports_reviser, + null_ls.builtins.formatting.golines.with({ + extra_args = { + "--max-len=180", + "--base-formatter=gofumpt", + }, + }), + null_ls.builtins.formatting.eslint_d, + null_ls.builtins.formatting.yamlfmt, + null_ls.builtins.formatting.protolint, + -- 诊断 + null_ls.builtins.diagnostics.eslint_d, + null_ls.builtins.diagnostics.protolint, +} + +local gotest = require("go.null_ls").gotest() +local gotest_codeaction = require("go.null_ls").gotest_action() +local golangci_lint = require("go.null_ls").golangci_lint() +table.insert(sources, gotest) +table.insert(sources, golangci_lint) +table.insert(sources, gotest_codeaction) + null_ls.setup({ - debounce = 500, - sources = { - null_ls.builtins.formatting.stylua, - null_ls.builtins.formatting.gofmt, - null_ls.builtins.formatting.eslint_d, - null_ls.builtins.formatting.yamlfmt, - null_ls.builtins.formatting.protolint, - -- 诊断 - null_ls.builtins.diagnostics.eslint_d, - null_ls.builtins.diagnostics.protolint, - }, + debounce = 1000, + default_timeout = 5000, + sources = sources, }) + +null_ls.register(gotest)