From c4b1ac8c2b36e3b19b7b2279f56cc2057579cc89 Mon Sep 17 00:00:00 2001 From: Hau Nguyen Date: Thu, 29 Jun 2023 17:20:29 +0700 Subject: [PATCH] chore(nvim): use nvim-lsp instead of vim-go --- data/nvim/init.lua | 59 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 13 deletions(-) diff --git a/data/nvim/init.lua b/data/nvim/init.lua index 560f3f2..976fb59 100644 --- a/data/nvim/init.lua +++ b/data/nvim/init.lua @@ -48,13 +48,6 @@ vim.keymap.set("n", "cm", ":FZFCommands") vim.keymap.set("n", "", ":NvimTreeToggle") vim.keymap.set("n", "n", ":NvimTreeFindFile") vim.keymap.set("n", "tr", ":lua MiniTrailspace.trim()") -vim.keymap.set("n", "", ":GoRename") -vim.keymap.set("n", "gf", ":GoFillStruct:w") -vim.keymap.set("n", "gat", ":GoAlternate") -vim.keymap.set("n", "gt", ":GoTest") -vim.keymap.set("n", "gr", ":GoReferrers") -vim.keymap.set("n", "gcv", ":GoCoverage") -vim.keymap.set("n", "gdd", ":GoDeclsDir") -- Use plugin fzf.vim vim.g.fzf_command_prefix = "FZF" @@ -68,10 +61,6 @@ vim.g.neoformat_basic_format_trim = 1 vim.g.neoformat_enabled_go = { "gofumpt" } vim.g.shfmt_opt = "-ci" --- Use plugin vim-go -vim.g.go_gopls_gofumpt = 1 -vim.g.go_doc_popup_window = 1 - -- Use plugin copilot vim.g.copilot_filetypes = { ["*"] = false, @@ -303,8 +292,52 @@ require("lazy").setup({ end, }, - -- https://github.com/fatih/vim-go - "fatih/vim-go", + -- https://github.com/neovim/nvim-lspconfig + { + "neovim/nvim-lspconfig", + config = function() + lspconfig = require("lspconfig") + util = require("lspconfig/util") + + -- https://github.com/golang/tools/blob/master/gopls/doc/vim.md + -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#gopls + -- https://github.com/golang/tools/blob/master/gopls/doc/settings.md + lspconfig.gopls.setup({ + cmd = { "gopls", "serve" }, + filetypes = { "go", "gomod" }, + root_dir = util.root_pattern("go.work", "go.mod", ".git"), + settings = { + gopls = { + gofumpt = true, + semanticTokens = true, + }, + }, + }) + + vim.keymap.set("n", "[d", vim.diagnostic.goto_prev) + vim.keymap.set("n", "]d", vim.diagnostic.goto_next) + + vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("UserLspConfig", {}), + callback = function(ev) + vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc" + + local opts = { buffer = ev.buf } + vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts) + vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) + vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) + vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts) + vim.keymap.set("n", "D", vim.lsp.buf.type_definition, opts) + vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) + vim.keymap.set("n", "", vim.lsp.buf.rename, opts) + vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) + vim.keymap.set("n", "f", function() + vim.lsp.buf.format({ async = true }) + end, opts) + end, + }) + end, + }, -- https://github.com/github/copilot.vim "github/copilot.vim",