From f7002337c02a3a6b73b7d1409186c864b129413d Mon Sep 17 00:00:00 2001 From: notomo Date: Thu, 26 Aug 2021 23:37:36 +0900 Subject: backport: 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. --- test/functional/lua/highlight_spec.lua | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 test/functional/lua/highlight_spec.lua (limited to 'test/functional/lua/highlight_spec.lua') diff --git a/test/functional/lua/highlight_spec.lua b/test/functional/lua/highlight_spec.lua new file mode 100644 index 0000000000..853b2991e8 --- /dev/null +++ b/test/functional/lua/highlight_spec.lua @@ -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) -- cgit