diff options
author | notomo <notomo.motono@gmail.com> | 2022-06-16 11:39:55 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-15 19:39:55 -0700 |
commit | 0e8186bdd8699fb20ad70e28813c3603f9ff0ece (patch) | |
tree | 34c0c6018a8be7f0a1980ab900f16cc501c5dabb /test/functional/lua/highlight_spec.lua | |
parent | fa4b0c3ba5c4aa6dce90cf9d5fb63ea65fd0daee (diff) | |
download | rneovim-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.lua | 15 |
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) |