From d2b0e501275a7f79dc27538fd4c1a17af4ba0017 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Mon, 11 Mar 2024 09:48:18 +0200 Subject: [mappings] Reworked map table logic to be more concise --- lua/mappings.lua | 55 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 27 deletions(-) (limited to 'lua/mappings.lua') diff --git a/lua/mappings.lua b/lua/mappings.lua index 0713724..2fd6830 100644 --- a/lua/mappings.lua +++ b/lua/mappings.lua @@ -1,44 +1,45 @@ -keys = { sideeffect = {}, key = "" } -setmetatable(keys, +--[=[ Helpers ]=]-- + +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(rawget(map, "keys"), { __index = function (table, index) - local modifier, key = index:match("^(.*)_"), index:match("[^_]*$") - if modifier == nil then + local mod, key = index:match("^(.*)_"), index:match("[^_]*$") + if mod == nil then if #key > 1 then key = "<" .. key .. ">" end - table.key = table.key .. key - return keys + table.rhs = table.rhs .. key + return table end - modifier = modifier:upper() + mod = mod: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 .. "\"!") + if mod == "SHIFT" then table.rhs = table.rhs .. "" + elseif mod == "CONTROL" then table.rhs = table.rhs .. "" + elseif mod == "ALT" then table.rhs = table.rhs .. "" + elseif mod == "SUPER" then table.rhs = table.rhs .. "" + elseif mod ~= nil then error("Unknown key modifier \"" .. mod .. "\"!") end - return keys + return table 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 + return vim.keymap.set(table.lhs, table.rhs, ...) end }) ---vim.keymap.set(mode.n.Alt_P, "gd") +--[=[ Mappings ]=]-- map.n.Alt_p("gt") map.n.Alt_o("gT") -- cgit v1.3.1-23-gd82d