From 178566153465fbb0b59717061a850b306d79a938 Mon Sep 17 00:00:00 2001 From: Bobby Bingham Date: Sat, 2 Jul 2022 14:24:15 -0500 Subject: nvim: factor keymap helpers in lsp config --- nvim/.config/nvim/lua/lsp_config.lua | 48 ++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 18 deletions(-) (limited to 'nvim/.config') diff --git a/nvim/.config/nvim/lua/lsp_config.lua b/nvim/.config/nvim/lua/lsp_config.lua index b439ff2..66ced3d 100644 --- a/nvim/.config/nvim/lua/lsp_config.lua +++ b/nvim/.config/nvim/lua/lsp_config.lua @@ -1,10 +1,22 @@ -- Mappings. -- See `:help vim.diagnostic.*` for documentation on any of the below functions -local opts = { noremap=true, silent=true } -vim.api.nvim_set_keymap('n', 'e', 'lua vim.diagnostic.open_float()', opts) -vim.api.nvim_set_keymap('n', '[d', 'lua vim.diagnostic.goto_prev()', opts) -vim.api.nvim_set_keymap('n', ']d', 'lua vim.diagnostic.goto_next()', opts) -vim.api.nvim_set_keymap('n', 'q', 'lua vim.diagnostic.setloclist()', opts) + +local map = function(mode, lhs, rhs, opts) + vim.api.nvim_set_keymap(mode, lhs, rhs, opts or { + noremap = true, silent = true + }) +end + +local buf_map = function(bufnr, mode, lhs, rhs, opts) + vim.api.nvim_buf_set_keymap(bufnr, mode, lhs, rhs, opts or { + noremap = true, silent = true, + }) +end + +map('n', 'e', 'lua vim.diagnostic.open_float()') +map('n', '[d', 'lua vim.diagnostic.goto_prev()') +map('n', ']d', 'lua vim.diagnostic.goto_next()') +map('n', 'q', 'lua vim.diagnostic.setloclist()') -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer @@ -14,19 +26,19 @@ local on_attach = function(client, bufnr) -- Mappings. -- See `:help vim.lsp.*` for documentation on any of the below functions - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', 'lua vim.lsp.buf.definition()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', '', 'lua vim.lsp.buf.signature_help()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ca', 'lua vim.lsp.buf.code_action()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', 'lua vim.lsp.buf.references()', opts) - vim.api.nvim_buf_set_keymap(bufnr, 'n', 'f', 'lua vim.lsp.buf.formatting()', opts) + buf_map(bufnr, 'n', 'gD', 'lua vim.lsp.buf.declaration()') + buf_map(bufnr, 'n', 'gd', 'lua vim.lsp.buf.definition()') + buf_map(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()') + buf_map(bufnr, 'n', 'gi', 'lua vim.lsp.buf.implementation()') + buf_map(bufnr, 'n', '', 'lua vim.lsp.buf.signature_help()') + buf_map(bufnr, 'n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()') + buf_map(bufnr, 'n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()') + buf_map(bufnr, 'n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))') + buf_map(bufnr, 'n', 'D', 'lua vim.lsp.buf.type_definition()') + buf_map(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()') + buf_map(bufnr, 'n', 'ca', 'lua vim.lsp.buf.code_action()') + buf_map(bufnr, 'n', 'gr', 'lua vim.lsp.buf.references()') + buf_map(bufnr, 'n', 'f', 'lua vim.lsp.buf.formatting()') end -- Use a loop to conveniently call 'setup' on multiple servers and -- cgit v1.2.3