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 /runtime/lua/vim/_editor.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 'runtime/lua/vim/_editor.lua')
-rw-r--r-- | runtime/lua/vim/_editor.lua | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/runtime/lua/vim/_editor.lua b/runtime/lua/vim/_editor.lua index 453aa6ac81..f7dcc3a81b 100644 --- a/runtime/lua/vim/_editor.lua +++ b/runtime/lua/vim/_editor.lua @@ -408,7 +408,9 @@ function vim.defer_fn(fn, timeout) timeout, 0, vim.schedule_wrap(function() - timer:close() + if not timer:is_closing() then + timer:close() + end fn() end) |