aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/highlight_spec.lua
diff options
context:
space:
mode:
authornotomo <notomo.motono@gmail.com>2022-06-16 11:39:55 +0900
committerGitHub <noreply@github.com>2022-06-15 19:39:55 -0700
commit0e8186bdd8699fb20ad70e28813c3603f9ff0ece (patch)
tree34c0c6018a8be7f0a1980ab900f16cc501c5dabb /test/functional/lua/highlight_spec.lua
parentfa4b0c3ba5c4aa6dce90cf9d5fb63ea65fd0daee (diff)
downloadrneovim-0e8186bdd8699fb20ad70e28813c3603f9ff0ece.tar.gz
rneovim-0e8186bdd8699fb20ad70e28813c3603f9ff0ece.tar.bz2
rneovim-0e8186bdd8699fb20ad70e28813c3603f9ff0ece.zip
fix(lua): highlight.on_yank can close timer in twice #18976
Steps to reproduce: 1. setting `vim.highlight.on_yank` ``` vim.api.nvim_create_autocmd({ "TextYankPost" }, { pattern = { "*" }, callback = function() vim.highlight.on_yank({ timeout = 200 }) end, }) ``` 2. repeat typing `yeye` ... 3. causes the following error. ``` Error executing vim.schedule lua callback: vim/_editor.lua:0: handle 0x01e96970 is already closing stack traceback: [C]: in function 'close' vim/_editor.lua: in function '' vim/_editor.lua: in function <vim/_editor.lua:0> ``` 📝 Test result before fix: [----------] Global test environment setup. [----------] Running tests from test/functional/lua/highlight_spec.lua [ RUN ] vim.highlight.on_yank does not show errors even if buffer is wiped before timeout: 15.07 ms OK [ RUN ] vim.highlight.on_yank does not show errors even if executed between timeout and clearing highlight: 15.07 ms ERR test/helpers.lua:73: Expected objects to be the same. Passed in: (string) 'Error executing vim.schedule lua callback: vim/_editor.lua:0: handle 0x02025260 is already closing stack traceback: [C]: in function 'close' vim/_editor.lua: in function '' vim/_editor.lua: in function <vim/_editor.lua:0>' Expected: (string) ''
Diffstat (limited to 'test/functional/lua/highlight_spec.lua')
-rw-r--r--test/functional/lua/highlight_spec.lua15
1 files changed, 12 insertions, 3 deletions
diff --git a/test/functional/lua/highlight_spec.lua b/test/functional/lua/highlight_spec.lua
index 50eecb5d09..60d0ed5017 100644
--- a/test/functional/lua/highlight_spec.lua
+++ b/test/functional/lua/highlight_spec.lua
@@ -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)