--[=[ Helpers ]=]-- keys = {} setmetatable(keys, { __index = function (table, index) local mod, key = index:match("^(.*)_"), index:match("[^_]*$") if mod == nil then local upperkey = key:upper() if upperkey == "ESCAPE" then key = "" elseif #key > 1 then key = "<" .. key .. ">" end return key end mod = mod:upper() if mod == "SHIFT" then key = "" elseif mod == "CONTROL" then key = "" elseif mod == "ALT" then key = "" elseif mod == "SUPER" then key = "" elseif mod ~= nil then error("Unknown key modifier \"" .. mod .. "\"!") end return key end }) map = { keys = { lhs = {}, rhs = "" } } setmetatable(map, { __index = function (table, index) table.keys.lhs = {} table.keys.rhs = "" for i = 1, index:len() do table.keys.lhs[i] = index:sub(i, i) end return table.keys end }) setmetatable(map.keys, { __index = function (table, index) table.rhs = table.rhs .. keys[index] return table end, __call = function (table, ...) return vim.keymap.set(table.lhs, table.rhs, ...) end }) --[=[ Mappings ]=]-- map.n.Alt_p("gt") map.n.Alt_o("gT")