aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2022-07-13 14:29:10 -0500
committerToby Vincent <tobyv13@gmail.com>2022-07-13 14:29:10 -0500
commitdf7c827b8fd460a11a4529fe501b299cbbc9d8ff (patch)
treefdf9ea7b367d7f9a9f6ea5153dc5393bfa0c118b
parent31e41262e825b130f2f103befbd7986f458a87fa (diff)
refactor(nvim): move group name param into group_opts in create_map_group
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/formatting.lua5
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/init.lua5
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/bufferline.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/diffview.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/neogen.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/neogit.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/notify.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/refactoring.lua5
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua8
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils.lua24
13 files changed, 40 insertions, 23 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/formatting.lua b/nvim/.config/nvim/lua/tobyvin/lsp/formatting.lua
index 4bdb487..467c0d6 100644
--- a/nvim/.config/nvim/lua/tobyvin/lsp/formatting.lua
+++ b/nvim/.config/nvim/lua/tobyvin/lsp/formatting.lua
@@ -8,8 +8,7 @@ M.toggle_format = function()
end
M.on_attach = function(client, bufnr)
- local nmap = require("tobyvin.utils").create_map_group("n", "<leader>l", "LSP", { buffer = bufnr })
- local vmap = require("tobyvin.utils").create_map_group("v", "<leader>l", "LSP", { buffer = bufnr })
+ local nmap = require("tobyvin.utils").create_map_group("n", "<leader>l", { name = "LSP", buffer = bufnr })
if client.server_capabilities.documentFormattingProvider then
vim.b.auto_format = true
@@ -38,6 +37,8 @@ M.on_attach = function(client, bufnr)
})
end
+ local vmap = require("tobyvin.utils").create_map_group("v", "<leader>l", { name = "LSP", buffer = bufnr })
+
if client.server_capabilities.documentRangeFormattingProvider then
vim.api.nvim_buf_create_user_command(
bufnr,
diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/init.lua b/nvim/.config/nvim/lua/tobyvin/lsp/init.lua
index a1a12c3..6e1a282 100644
--- a/nvim/.config/nvim/lua/tobyvin/lsp/init.lua
+++ b/nvim/.config/nvim/lua/tobyvin/lsp/init.lua
@@ -1,8 +1,7 @@
local M = {}
M.on_attach = function(client, bufnr)
- local nmap = require("tobyvin.utils").create_map_group("n", "<leader>l", "LSP", { buffer = bufnr })
- local nmap_goto = require("tobyvin.utils").create_map_group("n", "<leader>lg", "Goto", { buffer = bufnr })
+ local nmap = require("tobyvin.utils").create_map_group("n", "<leader>l", { name = "LSP", buffer = bufnr })
nmap("a", vim.lsp.buf.code_action, { desc = "Code Action" })
nmap("d", "<cmd>TroubleToggle document_diagnostics<cr>", { desc = "Document Diagnostics" })
@@ -19,6 +18,8 @@ M.on_attach = function(client, bufnr)
nmap("s", "<cmd>Telescope lsp_document_symbols<cr>", { desc = "Document Symbols" })
nmap("S", "<cmd>Telescope lsp_dynamic_workspace_symbols<cr>", { desc = "Workspace Symbols" })
nmap("w", "<cmd>Telescope lsp_workspace_diagnostics<cr>", { desc = "Workspace Diagnostics" })
+
+ local nmap_goto = require("tobyvin.utils").create_map_group("n", "<leader>lg", { name = "Goto", buffer = bufnr })
nmap_goto("d", vim.lsp.buf.definition, { desc = "Definition" })
nmap_goto("D", vim.lsp.buf.declaration, { desc = "Declaration" })
nmap_goto("i", vim.lsp.buf.implementation, { desc = "Implementation" })
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins.lua b/nvim/.config/nvim/lua/tobyvin/plugins.lua
index b7419c8..f4feae3 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins.lua
@@ -488,7 +488,7 @@ M.setup = function()
desc = "Reload packer config on write",
})
- local nmap = utils.create_map_group("n", "<leader>p", "Packer")
+ local nmap = utils.create_map_group("n", "<leader>p", { name = "Packer" })
nmap("c", packer.compile, { desc = "Compile" })
nmap("C", packer.clean, { desc = "Clean" })
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/bufferline.lua b/nvim/.config/nvim/lua/tobyvin/plugins/bufferline.lua
index 12787ee..06f9404 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins/bufferline.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins/bufferline.lua
@@ -35,7 +35,7 @@ M.setup = function()
},
})
- local nmap = utils.create_map_group("n", "<leader>b", "Buffers")
+ local nmap = utils.create_map_group("n", "<leader>b", { name = "Buffers" })
nmap("c", bufferline.close_with_pick, { desc = "Close Buffer" })
nmap("b", bufferline.pick_buffer, { desc = "Pick Buffer" })
end
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/diffview.lua b/nvim/.config/nvim/lua/tobyvin/plugins/diffview.lua
index 055941c..b822848 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins/diffview.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins/diffview.lua
@@ -10,7 +10,7 @@ M.setup = function()
diffview.setup()
- local nmap = utils.create_map_group("n", "<leader>g", "Git")
+ local nmap = utils.create_map_group("n", "<leader>g", { name = "Git" })
nmap("d", diffview.open, { desc = "Diffview" })
end
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua b/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua
index f9c1ff6..1b59f3b 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua
@@ -7,7 +7,7 @@ M.setup = function()
return
end
- local nmap = require("tobyvin.utils").create_map_group("n", "<leader>g", "Git")
+ local nmap = require("tobyvin.utils").create_map_group("n", "<leader>g", { name = "Git" })
gitsigns.setup({
signs = {
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua b/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua
index 916a638..6e7fa69 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins/lspconfig.lua
@@ -97,7 +97,7 @@ M.setup = function()
},
})
- local nmap = utils.create_map_group("n", "<leader>l", "LSP")
+ local nmap = utils.create_map_group("n", "<leader>l", { name = "LSP" })
nmap("i", "<cmd>LspInfo<cr>", { desc = "LSP info" })
nmap("I", "<cmd>LspInstallInfo<cr>", { desc = "LSP installer info" })
end
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/neogen.lua b/nvim/.config/nvim/lua/tobyvin/plugins/neogen.lua
index 78416e0..b83cb28 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins/neogen.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins/neogen.lua
@@ -7,7 +7,7 @@ M.setup = function()
return
end
- local nmap = require("tobyvin.utils").create_map_group("n", "<leader>s", "Snippets")
+ local nmap = require("tobyvin.utils").create_map_group("n", "<leader>s", { name = "Snippets" })
neogen.setup({ snippet_engine = "luasnip" })
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/neogit.lua b/nvim/.config/nvim/lua/tobyvin/plugins/neogit.lua
index 762999e..a2f8a2e 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins/neogit.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins/neogit.lua
@@ -17,7 +17,7 @@ M.setup = function()
-- kind = "replace",
})
- local nmap = utils.create_map_group("n", "<leader>g", "git")
+ local nmap = utils.create_map_group("n", "<leader>g", { name = "git" })
nmap("g", neogit.open, { desc = "Neogit" })
end
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/notify.lua b/nvim/.config/nvim/lua/tobyvin/plugins/notify.lua
index fdb22d8..945b572 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins/notify.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins/notify.lua
@@ -17,7 +17,7 @@ M.setup = function()
local telescope_ok, telescope = pcall(require, "telescope")
if telescope_ok then
telescope.load_extension("notify")
- local nmap = utils.create_map_group("n", "<leader>f", "Find")
+ local nmap = utils.create_map_group("n", "<leader>f", { name = "Find" })
nmap("n", telescope.extensions.notify.notify, { desc = "Notifications" })
end
end
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/refactoring.lua b/nvim/.config/nvim/lua/tobyvin/plugins/refactoring.lua
index 70f3ad9..5cca39c 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins/refactoring.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins/refactoring.lua
@@ -10,7 +10,7 @@ M.setup = function()
refactoring.setup()
- local nmap = utils.create_map_group("n", "<leader>r", "Refactor")
+ local nmap = utils.create_map_group("n", "<leader>r", { name = "Refactor" })
nmap("b", function()
refactoring.refactor("Extract Block")
end, { desc = "Extract Block" })
@@ -21,7 +21,8 @@ M.setup = function()
refactoring.refactor("Inline Variable")
end, { desc = "Inline Variable" })
- local vmap = utils.create_map_group("v", "<leader>r", "Refactor")
+ -- TODO: Fix needing to exit visual mode
+ local vmap = utils.create_map_group("v", "<leader>r", { name = "Refactor" })
vmap("e", function()
refactoring.refactor("Extract Function")
end, { desc = "Extract Function" })
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua b/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua
index 7c88372..49f7c54 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua
@@ -72,7 +72,7 @@ M.setup = function()
local builtins = require("telescope.builtin")
- local nmap_find = require("tobyvin.utils").create_map_group("n", "<leader>f", "Find")
+ local nmap_find = require("tobyvin.utils").create_map_group("n", "<leader>f", { name = "Find" })
nmap_find("b", builtins.buffers, { desc = "Buffers" })
nmap_find("c", builtins.command_history, { desc = "Command History" })
nmap_find("C", builtins.commands, { desc = "Commands" })
@@ -88,16 +88,16 @@ M.setup = function()
nmap_find("e", telescope.extensions.frecency.frecency, { desc = "Frecency" })
nmap_find("p", telescope.extensions.packer.packer, { desc = "Packer" })
- local nmap_git = require("tobyvin.utils").create_map_group("n", "<leader>g", "Git")
+ local nmap_git = require("tobyvin.utils").create_map_group("n", "<leader>g", { name = "Git" })
nmap_git("b", builtins.git_branches, { desc = "Checkout branch" })
nmap_git("c", builtins.git_commits, { desc = "Checkout commit" })
nmap_git("o", builtins.git_status, { desc = "Open changed file" })
- local nmap_git_wt = require("tobyvin.utils").create_map_group("n", "<leader>gw", "Worktree")
+ local nmap_git_wt = require("tobyvin.utils").create_map_group("n", "<leader>gw", { name = "Worktree" })
nmap_git_wt("s", telescope.extensions.git_worktree.git_worktrees, { desc = "Switch worktree" })
nmap_git_wt("c", telescope.extensions.git_worktree.create_git_worktree, { desc = "Create worktree" })
- local nmap_git_gh = require("tobyvin.utils").create_map_group("n", "<leader>gG", "Github")
+ local nmap_git_gh = require("tobyvin.utils").create_map_group("n", "<leader>gG", { name = "Github" })
nmap_git_gh("i", telescope.extensions.gh.issues, { desc = "Issues" })
nmap_git_gh("p", telescope.extensions.gh.pull_request, { desc = "Pull request" })
nmap_git_gh("g", telescope.extensions.gh.gist, { desc = "Gist" })
diff --git a/nvim/.config/nvim/lua/tobyvin/utils.lua b/nvim/.config/nvim/lua/tobyvin/utils.lua
index 35c5f32..d053a9b 100644
--- a/nvim/.config/nvim/lua/tobyvin/utils.lua
+++ b/nvim/.config/nvim/lua/tobyvin/utils.lua
@@ -15,16 +15,30 @@ setmetatable(M.diagnostic_signs, {
end,
})
-M.create_map_group = function(mode, prefix, name, g_opts)
- g_opts = g_opts or {}
+--- Helper function to create a group of keymaps that share a common prefix and/or options. If which-key is installed
+--- and group_opts.name is set, it will also create a corresponding named group.
+---@param mode string|table Same mode short names as vim.keymap.set(). A list will create the group on all modes.
+---@param prefix string Prefix to prepend to the lhs of all keymaps in the group.
+---@param group_opts ?table Options to apply to all keymaps in this group.
+---In addition to the options listed in vim.keymap.set, this table also accepts the following:
+--- - name: Name of the group to create in which-key. If which-key is not installed, this does nothing.
+---@return function Function to create mapping using the groups defaults.
+-- TODO: Possibly add memoization to groups/subgroups using the __call metatable attribute
+M.create_map_group = function(mode, prefix, group_opts)
+ group_opts = group_opts or {}
+
+ local name = group_opts.name
+ group_opts.name = nil
local status_ok, which_key = pcall(require, "which-key")
- if status_ok and name then
- which_key.register({ [prefix] = { name = name } }, vim.tbl_extend("force", { mode = mode }, g_opts))
+ if status_ok and name ~= nil then
+ for _, m in pairs(vim.tbl_flatten({ mode })) do
+ which_key.register({ [prefix] = { name = name } }, vim.tbl_extend("force", { mode = m }, group_opts))
+ end
end
return function(lhs, rhs, opts)
- vim.keymap.set(mode, prefix .. lhs, rhs, vim.tbl_deep_extend("force", g_opts, opts or {}))
+ vim.keymap.set(mode, prefix .. lhs, rhs, vim.tbl_deep_extend("keep", opts or {}, group_opts))
end
end