Summary Files Commits Branches @commit @diff @stats
path: root / lua / mappings.lua
diff options
context:
space:
mode:
Commit726a6d83420ca61d6f267bbe2a7ce4c768a5d958 (patch)
Author
 Syndamia <kamen@syndamia.com>
2024-03-10 22:47:27 +0200
Committer
 Syndamia <kamen@syndamia.com>
2024-03-10 22:47:27 +0200
Files738cbb3d5a0eb1b0b0c8320f963c12e501607a88 /lua/mappings.lua
anderson-726a6d83420ca61d6f267bbe2a7ce4c768a5d958.tar
anderson-726a6d83420ca61d6f267bbe2a7ce4c768a5d958.tar.gz
anderson-726a6d83420ca61d6f267bbe2a7ce4c768a5d958.zip
Parent403d5cd027309be155a7061eaedfe4f4fc9352c4 (diff)
[lua/mappings] Started work on vim.keymap.set wrapper
1 files changed, 44 insertions, 0 deletions
-rw-r--r--lua/mappings.lua44
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 .. "<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 .. "\"!")
+ 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")