diff --git a/config/nvim/lua/util/init.lua b/config/nvim/lua/util/init.lua index aa20c18..87434c1 100644 --- a/config/nvim/lua/util/init.lua +++ b/config/nvim/lua/util/init.lua @@ -31,4 +31,56 @@ M.get_selected_text = function() end) end +M.keymap_decorator = function(opts) + opts = opts or {} + + local decorate_key = function(key) + return vim.tbl_extend("force", key, { + (opts.lhs_prefix or "") .. key[1], -- lhs + key[2], -- rhs + desc = (opts.desc_prefix or "") .. key.desc .. (opts.desc_suffix or ""), + }) + end + + return function(keys) + if keys and type(keys[1]) == "table" then + return vim.iter(keys):map(decorate_key):totable() + else + return decorate_key(keys) + end + end +end + +-- M.test = function() +-- local key = { +-- "a", +-- "DoA", +-- desc = "this does A", +-- mode = "v", +-- } + +-- local keys = { +-- { +-- "a", +-- "DoA", +-- desc = "this does A", +-- mode = "v", +-- }, +-- { +-- "b", +-- "DoB", +-- desc = "this does B", +-- mode = "n", +-- }, +-- } + +-- local do_it = M.keymap_decorator { +-- lhs_prefix = "!", +-- desc_prefix = "OK: ", +-- } + +-- P(do_it(key)) +-- P(do_it(keys)) +-- end + return M