diff options
| Commit | d2b0e501275a7f79dc27538fd4c1a17af4ba0017 (patch) | |
|---|---|---|
| Author | 2024-03-11 09:48:18 +0200 | |
| Committer | 2024-03-11 09:48:18 +0200 | |
| Files | e840c947dadf8c73ae43c3fa9d6fb658135bb410 /lua/mappings.lua | |
| anderson-d2b0e501275a7f79dc27538fd4c1a17af4ba0017.tar anderson-d2b0e501275a7f79dc27538fd4c1a17af4ba0017.tar.gz anderson-d2b0e501275a7f79dc27538fd4c1a17af4ba0017.zip | ||
| Parent | 437f97f8ffbb9363019884897593aa74892f212c (diff) | |
[mappings] Reworked map table logic to be more concise
1 files changed, 28 insertions, 27 deletions
| -rw-r--r-- | lua/mappings.lua | 55 |
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 .. "<S-" .. key .. ">" - elseif modifier == "CONTROL" then table.key = table.key .. "<C-" .. key .. ">" - elseif modifier == "ALT" then table.key = table.key .. "<M-" .. key .. ">" - elseif modifier == "SUPER" then table.key = table.key .. "<D-" .. key .. ">" - elseif modifier ~= nil then error("Unknown key modifier \"" .. modifier .. "\"!") + if mod == "SHIFT" then table.rhs = table.rhs .. "<S-" .. key .. ">" + elseif mod == "CONTROL" then table.rhs = table.rhs .. "<C-" .. key .. ">" + elseif mod == "ALT" then table.rhs = table.rhs .. "<M-" .. key .. ">" + elseif mod == "SUPER" then table.rhs = table.rhs .. "<D-" .. key .. ">" + 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") |
