mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-04 05:40:06 +08:00
63 lines
1.3 KiB
Lua
63 lines
1.3 KiB
Lua
local utils = require("neo-tree.utils")
|
|
|
|
local M = {}
|
|
|
|
M.normalize_map_key = function(key)
|
|
if key == nil then
|
|
return nil
|
|
end
|
|
if key:match("^<[^>]+>$") then
|
|
local parts = utils.split(key, "-")
|
|
if #parts == 2 then
|
|
local mod = parts[1]:lower()
|
|
if mod == "<a" then
|
|
mod = "<m"
|
|
end
|
|
local alpha = parts[2]
|
|
if #alpha > 2 then
|
|
alpha = alpha:lower()
|
|
end
|
|
key = string.format("%s-%s", mod, alpha)
|
|
return key
|
|
else
|
|
key = key:lower()
|
|
if key == "<backspace>" then
|
|
return "<bs>"
|
|
elseif key == "<enter>" then
|
|
return "<cr>"
|
|
elseif key == "<return>" then
|
|
return "<cr>"
|
|
end
|
|
end
|
|
end
|
|
return key
|
|
end
|
|
|
|
M.normalize_map = function(map)
|
|
local new_map = {}
|
|
for key, value in pairs(map) do
|
|
local normalized_key = M.normalize_map_key(key)
|
|
if normalized_key ~= nil then
|
|
new_map[normalized_key] = value
|
|
end
|
|
end
|
|
return new_map
|
|
end
|
|
|
|
local tests = {
|
|
{ "<BS>", "<bs>" },
|
|
{ "<Backspace>", "<bs>" },
|
|
{ "<Enter>", "<cr>" },
|
|
{ "<C-W>", "<c-W>" },
|
|
{ "<A-q>", "<m-q>" },
|
|
{ "<C-Left>", "<c-left>" },
|
|
{ "<C-Right>", "<c-right>" },
|
|
{ "<C-Up>", "<c-up>" },
|
|
}
|
|
for _, test in ipairs(tests) do
|
|
local key = M.normalize_map_key(test[1])
|
|
assert(key == test[2], string.format("%s != %s", key, test[2]))
|
|
end
|
|
|
|
return M
|