feat: golang ide config with format

This commit is contained in:
Young Xu 2023-05-06 01:10:35 +08:00
parent 06d2d1ed02
commit 7b9425ca82
Signed by: xuthus5
GPG Key ID: A23CF9620CBB55F9
7 changed files with 41 additions and 52 deletions

View File

@ -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
```
### 记忆项

View File

@ -48,8 +48,6 @@ require("lsp.clang")
require("plugins.java")
-- lspsaga
require("plugins.lspsaga")
-- golang lsp
require("plugins.golang")
-- rust ide
require("plugins.rust")
-- 载入主题

View File

@ -56,8 +56,8 @@ map.set("n", "qn", ":q!<CR>", noreopt)
map.set("n", "qq", ":qa!<CR>", noreopt)
map.set("i", "jk", "<ESC>", noreopt)
-- 文件页切换
map.set("n", "<leader>ll", ":BufferLineCyclePrev<CR>", noreopt)
map.set("n", "<leader>hh", ":BufferLineCycleNext<CR>", noreopt)
map.set("n", "<leader>hh", ":BufferLineCyclePrev<CR>", noreopt)
map.set("n", "<leader>ll", ":BufferLineCycleNext<CR>", noreopt)
map.set("n", "<leader>bpi", ":BufferLineTogglePin<CR>", noreopt)
map.set("n", "<leader>bcl", ":BufferLineCloseLeft<CR>", noreopt)
map.set("n", "<leader>bcr", ":BufferLineCloseRight<CR>", noreopt)

View File

@ -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)

View File

@ -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,

View File

@ -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,
})

View File

@ -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)