Reuse scratch buffer for keymap normalization (#991)

This commit is contained in:
Jaehwang Jung
2022-05-15 18:44:21 +09:00
committed by GitHub
parent 23e182d6d6
commit 160405250e

View File

@@ -1,4 +1,5 @@
local misc = require('cmp.utils.misc') local misc = require('cmp.utils.misc')
local buffer = require('cmp.utils.buffer')
local api = require('cmp.utils.api') local api = require('cmp.utils.api')
local keymap = {} local keymap = {}
@@ -16,15 +17,15 @@ end
---@param keys string ---@param keys string
---@return string ---@return string
keymap.normalize = function(keys) keymap.normalize = function(keys)
local normalize_buf = vim.api.nvim_create_buf(false, true) local normalize_buf = buffer.ensure('cmp.util.keymap.normalize')
vim.api.nvim_buf_set_keymap(normalize_buf, 't', keys, '<Plug>(cmp.utils.keymap.normalize)', {}) vim.api.nvim_buf_set_keymap(normalize_buf, 't', keys, '<Plug>(cmp.utils.keymap.normalize)', {})
for _, map in ipairs(vim.api.nvim_buf_get_keymap(normalize_buf, 't')) do for _, map in ipairs(vim.api.nvim_buf_get_keymap(normalize_buf, 't')) do
if keymap.equals(map.rhs, '<Plug>(cmp.utils.keymap.normalize)') then if keymap.equals(map.rhs, '<Plug>(cmp.utils.keymap.normalize)') then
vim.api.nvim_buf_delete(normalize_buf, {}) vim.api.nvim_buf_del_keymap(normalize_buf, 't', keys)
return map.lhs return map.lhs
end end
end end
vim.api.nvim_buf_delete(normalize_buf, {}) vim.api.nvim_buf_del_keymap(normalize_buf, 't', keys)
return keys return keys
end end