1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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")
|