mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
fix(lua): verify buffer in highlight.on_yank (#15482)
Resolve an issue with deferred clearing of highlight failing if the buffer is deleted before the timeout by checking whether the buffer is valid first.
This commit is contained in:
parent
6ff1e3fa1f
commit
274a3504a7
@ -85,7 +85,11 @@ function highlight.on_yank(opts)
|
|||||||
highlight.range(bufnr, yank_ns, higroup, pos1, pos2, event.regtype, event.inclusive)
|
highlight.range(bufnr, yank_ns, higroup, pos1, pos2, event.regtype, event.inclusive)
|
||||||
|
|
||||||
vim.defer_fn(
|
vim.defer_fn(
|
||||||
function() api.nvim_buf_clear_namespace(bufnr, yank_ns, 0, -1) end,
|
function()
|
||||||
|
if api.nvim_buf_is_valid(bufnr) then
|
||||||
|
api.nvim_buf_clear_namespace(bufnr, yank_ns, 0, -1)
|
||||||
|
end
|
||||||
|
end,
|
||||||
timeout
|
timeout
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
26
test/functional/lua/highlight_spec.lua
Normal file
26
test/functional/lua/highlight_spec.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
local helpers = require('test.functional.helpers')(after_each)
|
||||||
|
local funcs = helpers.funcs
|
||||||
|
local exec_lua = helpers.exec_lua
|
||||||
|
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')
|
||||||
|
local bufnr = funcs.bufnr("%")
|
||||||
|
exec_lua[[
|
||||||
|
vim.highlight.on_yank({timeout = 10, on_macro = true, event = {operator = "y", regtype = "v"}})
|
||||||
|
vim.cmd('bwipeout!')
|
||||||
|
]]
|
||||||
|
exec_lua[[vim.wait(10)]]
|
||||||
|
local pattern = [[vim/highlight.lua:%d+: Invalid buffer id: ]] .. bufnr
|
||||||
|
local exists = pcall(helpers.assert_log, pattern)
|
||||||
|
assert.is_false(exists, string.format("%q should not be in log", pattern))
|
||||||
|
end)
|
||||||
|
|
||||||
|
end)
|
Loading…
Reference in New Issue
Block a user