working on keymaps being a bit better
This commit is contained in:
parent
eb6300a3d0
commit
dc9536eb56
7 changed files with 193 additions and 130 deletions
38
lua/util.lua
38
lua/util.lua
|
@ -1,6 +1,6 @@
|
|||
local M = {}
|
||||
|
||||
function M.keymaps(mappings)
|
||||
function M.keymaps_old(mappings)
|
||||
for mode, maps in pairs(mappings) do
|
||||
for keymap, options in pairs(maps) do
|
||||
if options then
|
||||
|
@ -20,6 +20,42 @@ function M.keymaps(mappings)
|
|||
end
|
||||
end
|
||||
|
||||
-- [1]: (string) lhs (required)
|
||||
-- [2]: (string|fun()) rhs (optional)
|
||||
-- mode: (string|string[]) mode (optional, defaults to "n")
|
||||
-- ft: (string|string[]) filetype for buffer-local keymaps (optional)
|
||||
-- any other option valid for vim.keymap.set
|
||||
function M.keymaps(keymaps)
|
||||
-- is not an array, will pass directly to keymaps
|
||||
if type(keymaps[1]) == "string" then
|
||||
M.keymap(keymaps)
|
||||
else
|
||||
-- is array will iterate over
|
||||
for _, keymap in pairs(keymaps) do
|
||||
M.keymap(keymap)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function M.keymap(keymap)
|
||||
local lhs = keymap[1]
|
||||
local rhs = keymap[2]
|
||||
local mode = keymap["mode"] or "n"
|
||||
local opts = {}
|
||||
for key, value in pairs(keymap) do
|
||||
if type(key) ~= "number" and key ~= "mode" then
|
||||
opts[key] = value
|
||||
end
|
||||
end
|
||||
|
||||
local status, err = pcall(function()
|
||||
vim.keymap.set(mode, lhs, rhs, opts)
|
||||
end)
|
||||
if not status then
|
||||
vim.notify("Failed to create keymap: " .. err, 3)
|
||||
end
|
||||
end
|
||||
|
||||
function M.spread(template)
|
||||
local result = {}
|
||||
for key, value in pairs(template) do
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue