diff --git a/home/editor/neovim/keybinds.lua b/home/editor/neovim/keybinds.lua index a6d4378..19562e9 100644 --- a/home/editor/neovim/keybinds.lua +++ b/home/editor/neovim/keybinds.lua @@ -21,6 +21,11 @@ vim.keymap.set('n', '<leader>ff', require('telescope.builtin').find_files, vim.keymap.set('n', '<leader>fg', require('telescope.builtin').live_grep, { desc = '[F]ind by [G]rep' }) +-- Tabs vim.keymap.set('n', '<leader>tt', ':tabnew<cr>') vim.keymap.set('n', '<leader>tn', ':tabnext<cr>') vim.keymap.set('n', '<leader>tp', ':tabprevious<cr>') + +-- LSP +vim.keymap.set('n', 'gD', vim.lsp.buf.declaration) +vim.keymap.set('n', 'gd', vim.lsp.buf.definition) diff --git a/home/editor/neovim/plugins.lua b/home/editor/neovim/plugins.lua index f852fdf..bcae021 100644 --- a/home/editor/neovim/plugins.lua +++ b/home/editor/neovim/plugins.lua @@ -20,7 +20,7 @@ lsp_zero.format_on_save({ ['tsserver'] = { 'typescript', 'javascript' }, }, }) - +-- LSP: go local lspconfig = require('lspconfig') lspconfig.gopls.setup({ settings = { @@ -33,7 +33,30 @@ lspconfig.gopls.setup({ } } }) +vim.api.nvim_create_autocmd("BufWritePre", { + pattern = "*.go", + callback = function() + local params = vim.lsp.util.make_range_params() + params.context = { only = { "source.organizeImports" } } + -- buf_request_sync defaults to a 1000ms timeout. Depending on your + -- machine and codebase, you may want longer. Add an additional + -- argument after params if you find that you have to write the file + -- twice for changes to be saved. + -- E.g., vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000) + local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params) + for cid, res in pairs(result or {}) do + for _, r in pairs(res.result or {}) do + if r.edit then + local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16" + vim.lsp.util.apply_workspace_edit(r.edit, enc) + end + end + end + vim.lsp.buf.format({ async = false }) + end +}) +-- LSP: nix lspconfig.nil_ls.setup({ autostart = true, settings = { @@ -45,6 +68,7 @@ lspconfig.nil_ls.setup({ }, }) +-- LSP: lua lspconfig.lua_ls.setup({ on_init = function(client) local path = client.workspace_folders[1].name @@ -85,6 +109,7 @@ lspconfig.lua_ls.setup({ } }) +-- LSP: ts/js lspconfig.tsserver.setup({ init_options = { plugins = { @@ -206,9 +231,10 @@ cmp.setup({ }), sources = cmp.config.sources({ }, { - { name = "copilot", group_index = 2 }, - { name = "luasnip" }, - { name = "buffer" }, + { name = "copilot", group_index = 2 }, + { name = "nvim_lsp", group_index = 2 }, + -- { name = "luasnip" }, + -- { name = "buffer" }, }) })