From 6527e5f31b8ced9e3ad186b6445925d4d91f15de Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 13 May 2022 18:18:29 +0800 Subject: [PATCH] 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. --- lua/cmp/utils/keymap.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lua/cmp/utils/keymap.lua b/lua/cmp/utils/keymap.lua index 5727cd0..8e916b9 100644 --- a/lua/cmp/utils/keymap.lua +++ b/lua/cmp/utils/keymap.lua @@ -16,12 +16,15 @@ end ---@param keys string ---@return string keymap.normalize = function(keys) - vim.api.nvim_set_keymap('t', '(cmp.utils.keymap.normalize)', keys, {}) - for _, map in ipairs(vim.api.nvim_get_keymap('t')) do - if keymap.equals(map.lhs, '(cmp.utils.keymap.normalize)') then - return map.rhs + local normalize_buf = vim.api.nvim_create_buf(false, true) + vim.api.nvim_buf_set_keymap(normalize_buf, 't', keys, '(cmp.utils.keymap.normalize)', {}) + for _, map in ipairs(vim.api.nvim_buf_get_keymap(normalize_buf, 't')) do + if keymap.equals(map.rhs, '(cmp.utils.keymap.normalize)') then + vim.api.nvim_buf_delete(normalize_buf, {}) + return map.lhs end end + vim.api.nvim_buf_delete(normalize_buf, {}) return keys end