fix: prevent autocmd outbursts by using setcmdline instead of feedkey (#1446)

This commit is contained in:
NAKAI Tsuyoshi
2023-02-19 00:58:05 +09:00
committed by GitHub
parent 0c6a89af9a
commit 8202df9561

View File

@@ -411,7 +411,17 @@ custom_entries_view._insert = setmetatable({
word = word or ''
if api.is_cmdline_mode() then
local cursor = api.get_cursor()
vim.api.nvim_feedkeys(keymap.backspace(string.sub(api.get_current_line(), self.offset, cursor[2])) .. word, 'int', true)
-- setcmdline() added in v0.8.0
if vim.fn.setcmdline then
local current_line = api.get_current_line()
local before_line = current_line:sub(1, self.offset - 1)
local after_line = current_line:sub(cursor[2] + 1)
local pos = vim.fn.strdisplaywidth(before_line .. word) + 1
vim.fn.setcmdline(before_line .. word .. after_line, pos)
vim.api.nvim_feedkeys(keymap.t('<Cmd>redraw<CR>'), 'ni', false)
else
vim.api.nvim_feedkeys(keymap.backspace(string.sub(api.get_current_line(), self.offset, cursor[2])) .. word, 'int', true)
end
else
if this.pending then
return