fix(lua): highlight.on_yank can close timer in twice #18976

check whether timer is closing in vim.defer_fn before closing
This commit is contained in:
notomo
2022-06-16 11:39:55 +09:00
committed by Christian Clason
parent f15d6094fc
commit fe42dea674
2 changed files with 19 additions and 6 deletions

View File

@@ -6,20 +6,29 @@ local command = helpers.command
local clear = helpers.clear
describe('vim.highlight.on_yank', function()
before_each(function()
clear()
end)
it('does not show errors even if buffer is wiped before timeout', function()
command('new')
exec_lua[[
exec_lua([[
vim.highlight.on_yank({timeout = 10, on_macro = true, event = {operator = "y", regtype = "v"}})
vim.cmd('bwipeout!')
]]
]])
helpers.sleep(10)
helpers.feed('<cr>') -- avoid hang if error message exists
eq('', eval('v:errmsg'))
end)
it('does not close timer twice', function()
exec_lua([[
vim.highlight.on_yank({timeout = 10, on_macro = true, event = {operator = "y"}})
vim.loop.sleep(10)
vim.schedule(function()
vim.highlight.on_yank({timeout = 0, on_macro = true, event = {operator = "y"}})
end)
]])
eq('', eval('v:errmsg'))
end)
end)