Summary Files Commits Branches @commit @diff @stats
path: root / lua / mappings.lua
diff options
context:
space:
mode:
Commitd2b0e501275a7f79dc27538fd4c1a17af4ba0017 (patch)
Author
 Syndamia <kamen@syndamia.com>
2024-03-11 09:48:18 +0200
Committer
 Syndamia <kamen@syndamia.com>
2024-03-11 09:48:18 +0200
Filese840c947dadf8c73ae43c3fa9d6fb658135bb410 /lua/mappings.lua
anderson-d2b0e501275a7f79dc27538fd4c1a17af4ba0017.tar
anderson-d2b0e501275a7f79dc27538fd4c1a17af4ba0017.tar.gz
anderson-d2b0e501275a7f79dc27538fd4c1a17af4ba0017.zip
Parent437f97f8ffbb9363019884897593aa74892f212c (diff)
[mappings] Reworked map table logic to be more concise
1 files changed, 28 insertions, 27 deletions
-rw-r--r--lua/mappings.lua55
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")