From 726a6d83420ca61d6f267bbe2a7ce4c768a5d958 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sun, 10 Mar 2024 22:47:27 +0200 Subject: [lua/mappings] Started work on vim.keymap.set wrapper --- lua/mappings.lua | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lua/mappings.lua (limited to 'lua/mappings.lua') diff --git a/lua/mappings.lua b/lua/mappings.lua new file mode 100644 index 0000000..0713724 --- /dev/null +++ b/lua/mappings.lua @@ -0,0 +1,44 @@ +keys = { sideeffect = {}, key = "" } +setmetatable(keys, +{ + __index = function (table, index) + local modifier, key = index:match("^(.*)_"), index:match("[^_]*$") + if modifier == nil then + if #key > 1 then + key = "<" .. key .. ">" + end + table.key = table.key .. key + return keys + end + modifier = modifier:upper() + + if modifier == "SHIFT" then table.key = table.key .. "" + elseif modifier == "CONTROL" then table.key = table.key .. "" + elseif modifier == "ALT" then table.key = table.key .. "" + elseif modifier == "SUPER" then table.key = table.key .. "" + elseif modifier ~= nil then error("Unknown key modifier \"" .. modifier .. "\"!") + end + + return keys + end, + __call = function (table, ...) + return vim.keymap.set(table.sideeffect, table.key, ...) + end +}) +map = {} +setmetatable(map, +{ + __index = function (table, index) + keys.sideeffect = {} + keys.key = "" + for i = 1, index:len() do + rawset(keys.sideeffect, i, index:sub(i, i)) + end + return keys + end +}) + +--vim.keymap.set(mode.n.Alt_P, "gd") + +map.n.Alt_p("gt") +map.n.Alt_o("gT") -- cgit v1.3.1-23-gd82d