diff options
| Commit | 726a6d83420ca61d6f267bbe2a7ce4c768a5d958 (patch) | |
|---|---|---|
| Author | 2024-03-10 22:47:27 +0200 | |
| Committer | 2024-03-10 22:47:27 +0200 | |
| Files | 738cbb3d5a0eb1b0b0c8320f963c12e501607a88 /lua/mappings.lua | |
| anderson-726a6d83420ca61d6f267bbe2a7ce4c768a5d958.tar anderson-726a6d83420ca61d6f267bbe2a7ce4c768a5d958.tar.gz anderson-726a6d83420ca61d6f267bbe2a7ce4c768a5d958.zip | ||
| Parent | 403d5cd027309be155a7061eaedfe4f4fc9352c4 (diff) | |
[lua/mappings] Started work on vim.keymap.set wrapper
1 files changed, 44 insertions, 0 deletions
| -rw-r--r-- | lua/mappings.lua | 44 |
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") |
