feat: golang ide config with format
This commit is contained in:
parent
06d2d1ed02
commit
7b9425ca82
@ -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
|
||||
```
|
||||
|
||||
### 记忆项
|
||||
|
2
init.lua
2
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")
|
||||
-- 载入主题
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
})
|
@ -1,15 +1,33 @@
|
||||
local null_ls = require("null-ls")
|
||||
|
||||
null_ls.setup({
|
||||
debounce = 500,
|
||||
sources = {
|
||||
local sources = {
|
||||
null_ls.builtins.formatting.stylua,
|
||||
null_ls.builtins.formatting.gofmt,
|
||||
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 = 1000,
|
||||
default_timeout = 5000,
|
||||
sources = sources,
|
||||
})
|
||||
|
||||
null_ls.register(gotest)
|
||||
|
Loading…
Reference in New Issue
Block a user