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:
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user