This commit is contained in:
hrsh7th
2021-11-08 21:24:10 +09:00
parent f831dbc107
commit ac7c5fc00e

View File

@@ -301,27 +301,31 @@ custom_entries_view._select = function(self, cursor, option)
self.event:emit('change') self.event:emit('change')
end end
custom_entries_view._insert = function(self, word) custom_entries_view._insert = setmetatable({
pending = false,
}, {
__call = function(this, self, word)
word = word or '' word = word or ''
if api.is_cmdline_mode() then if api.is_cmdline_mode() then
local cursor = api.get_cursor() local cursor = api.get_cursor()
local length = vim.str_utfindex(string.sub(api.get_current_line(), self.offset, cursor[2])) local length = vim.str_utfindex(string.sub(api.get_current_line(), self.offset, cursor[2]))
vim.api.nvim_feedkeys(keymap.backspace(length) .. word, 'int', true) vim.api.nvim_feedkeys(keymap.backspace(length) .. word, 'int', true)
else else
local release = require('cmp').core:suspend() if this.pending then
feedkeys.call('', 'n', function() return
end
this.pending = true
local release = require('cmp').suspend()
feedkeys.call('', '', function()
local cursor = api.get_cursor() local cursor = api.get_cursor()
local length = vim.str_utfindex(string.sub(api.get_current_line(), self.offset, cursor[2])) feedkeys.call(keymap.backspace(1 + cursor[2] - self.offset) .. word, 'int', vim.schedule_wrap(function()
feedkeys.call( this.pending = false
keymap.backspace(length) .. word,
'int',
vim.schedule_wrap(function()
release() release()
end) end))
)
end) end)
end end
end end
})
return custom_entries_view return custom_entries_view