fix: use scratch buffer and lhs for keymap.normalize() (#986)

Fix https://github.com/neovim/neovim/issues/18303

This can be slower, I don't know how frequently this function is called as I don't use this plugin.
This commit is contained in:
zeertzjq
2022-05-13 18:18:29 +08:00
committed by GitHub
parent a226b6a4ff
commit 6527e5f31b

View File

@@ -16,12 +16,15 @@ end
---@param keys string ---@param keys string
---@return string ---@return string
keymap.normalize = function(keys) keymap.normalize = function(keys)
vim.api.nvim_set_keymap('t', '<Plug>(cmp.utils.keymap.normalize)', keys, {}) local normalize_buf = vim.api.nvim_create_buf(false, true)
for _, map in ipairs(vim.api.nvim_get_keymap('t')) do vim.api.nvim_buf_set_keymap(normalize_buf, 't', keys, '<Plug>(cmp.utils.keymap.normalize)', {})
if keymap.equals(map.lhs, '<Plug>(cmp.utils.keymap.normalize)') then for _, map in ipairs(vim.api.nvim_buf_get_keymap(normalize_buf, 't')) do
return map.rhs if keymap.equals(map.rhs, '<Plug>(cmp.utils.keymap.normalize)') then
vim.api.nvim_buf_delete(normalize_buf, {})
return map.lhs
end end
end end
vim.api.nvim_buf_delete(normalize_buf, {})
return keys return keys
end end