From 6f73a28b7985b14d1ce1f02dd9773615b6197633 Mon Sep 17 00:00:00 2001 From: Matthew Leong Date: Tue, 2 Aug 2022 10:15:46 -0700 Subject: [PATCH] feat: clean up keymap api --- lua/cosmic/config/examples/editor.lua | 7 ++-- lua/cosmic/lsp/mappings.lua | 56 ++++++++++++++------------- lua/cosmic/utils/init.lua | 18 +++------ 3 files changed, 39 insertions(+), 42 deletions(-) diff --git a/lua/cosmic/config/examples/editor.lua b/lua/cosmic/config/examples/editor.lua index 2a5a49f..aec7e5b 100644 --- a/lua/cosmic/config/examples/editor.lua +++ b/lua/cosmic/config/examples/editor.lua @@ -17,7 +17,7 @@ opt.tabstop = 4 -- or `:map`, `:map ` -- Example: Additional insert mapping: -map('i', 'jj', '', { noremap = true, silent = true }) +map('i', 'jj', '') -- Mapping options: -- map('n', ...) @@ -26,5 +26,6 @@ map('i', 'jj', '', { noremap = true, silent = true }) -- map('t', ...) -- Example: Disable find files keymap --- local cmd = vim.cmd --- cmd('unmap f') +-- vim.keymap.del('n', 'f') + +-- See :h vim.keymap for more info diff --git a/lua/cosmic/lsp/mappings.lua b/lua/cosmic/lsp/mappings.lua index dee32fa..77abb1e 100644 --- a/lua/cosmic/lsp/mappings.lua +++ b/lua/cosmic/lsp/mappings.lua @@ -1,43 +1,47 @@ +local map = require('cosmic.utils').map local M = {} -- Mappings. function M.init(client, bufnr) - local buf_map = require('cosmic.utils').buf_map - -- See `:help vim.lsp.*` for documentation on any of the below functions - buf_map(bufnr, 'n', 'gd', 'lua require("telescope.builtin").lsp_definitions()') - buf_map(bufnr, 'n', 'gD', 'lua vim.lsp.buf.declaration()') - buf_map(bufnr, 'n', 'gi', 'lua require("telescope.builtin").lsp_implementations()') - buf_map(bufnr, 'n', 'gt', 'lua require("telescope.builtin").lsp_type_definitions()') - buf_map(bufnr, 'n', 'gr', 'lua require("telescope.builtin").lsp_references()') - buf_map(bufnr, 'n', 'gn', 'lua require("cosmic-ui").rename()') + local function set_keymap(mode, lhs, rhs) + map(mode, lhs, rhs, { + buffer = bufnr, + }) + end + + set_keymap('n', 'gd', 'lua require("telescope.builtin").lsp_definitions()') + set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()') + set_keymap('n', 'gi', 'lua require("telescope.builtin").lsp_implementations()') + set_keymap('n', 'gt', 'lua require("telescope.builtin").lsp_type_definitions()') + set_keymap('n', 'gr', 'lua require("telescope.builtin").lsp_references()') + set_keymap('n', 'gn', 'lua require("cosmic-ui").rename()') -- diagnostics - buf_map(bufnr, 'n', '[g', 'lua vim.diagnostic.goto_prev()') - buf_map(bufnr, 'n', ']g', 'lua vim.diagnostic.goto_next()') - buf_map(bufnr, 'n', 'ge', 'lua vim.diagnostic.open_float(nil, { scope = "line", })') - buf_map(bufnr, 'n', 'ge', 'Telescope diagnostics bufnr=0') + set_keymap('n', '[g', 'lua vim.diagnostic.goto_prev()') + set_keymap('n', ']g', 'lua vim.diagnostic.goto_next()') + set_keymap('n', 'ge', 'lua vim.diagnostic.open_float(nil, { scope = "line", })') + set_keymap('n', 'ge', 'Telescope diagnostics bufnr=0') -- hover - buf_map(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()') + set_keymap('n', 'K', 'lua vim.lsp.buf.hover()') -- code actions - buf_map(bufnr, 'n', 'ga', 'lua require("cosmic-ui").code_actions()') - buf_map(bufnr, 'v', 'ga', 'lua require("cosmic-ui").range_code_actions()') + set_keymap('n', 'ga', 'lua require("cosmic-ui").code_actions()') + set_keymap('v', 'ga', 'lua require("cosmic-ui").range_code_actions()') -- formatting - buf_map(bufnr, 'n', 'gf', 'lua vim.lsp.buf.formatting()') - buf_map(bufnr, 'v', 'gf', 'lua vim.lsp.buf.range_formatting()') + set_keymap('n', 'gf', 'lua vim.lsp.buf.formatting()') + set_keymap('v', 'gf', 'lua vim.lsp.buf.range_formatting()') -- signature help - buf_map(bufnr, 'n', '', 'lua require("lsp_signature").signature()') + set_keymap('n', '', 'lua require("lsp_signature").signature()') -- lsp workspace - buf_map(bufnr, 'n', 'wd', 'Telescope diagnostics') - 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, + set_keymap('n', 'wd', 'Telescope diagnostics') + set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()') + set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()') + set_keymap( 'n', 'wl', 'lua require("cosmic.utils.logger"):log(vim.inspect(vim.lsp.buf.list_workspace_folders()))' @@ -45,9 +49,9 @@ function M.init(client, bufnr) if client.name == 'tsserver' then -- typescript helpers - buf_map(bufnr, 'n', 'gr', ':TSLspRenameFile') - buf_map(bufnr, 'n', 'go', ':TSLspOrganize') - buf_map(bufnr, 'n', 'gi', ':TSLspImportAll') + set_keymap('n', 'gr', ':TSLspRenameFile') + set_keymap('n', 'go', ':TSLspOrganize') + set_keymap('n', 'gi', ':TSLspImportAll') end end diff --git a/lua/cosmic/utils/init.lua b/lua/cosmic/utils/init.lua index 4cca60d..5f22d27 100644 --- a/lua/cosmic/utils/init.lua +++ b/lua/cosmic/utils/init.lua @@ -3,19 +3,11 @@ local augroup_name = 'CosmicNvimUtils' local group = vim.api.nvim_create_augroup(augroup_name, { clear = true }) function M.map(mode, lhs, rhs, opts) - local options = { noremap = true, silent = true } - if opts then - options = M.merge(options, opts) - end - vim.api.nvim_set_keymap(mode, lhs, rhs, options) -end - -function M.buf_map(bufnr, mode, lhs, rhs, opts) - local options = { noremap = true, silent = true } - if opts then - options = M.merge(options, opts) - end - vim.api.nvim_buf_set_keymap(bufnr, mode, lhs, rhs, options) + local defaults = { + silent = true, + noremap = true, + } + vim.keymap.set(mode, lhs, rhs, M.merge(defaults, opts or {})) end function M.merge_list(tbl1, tbl2)