fix(lua): make highlight.on_yank use win-local highlight (#27349)

Currently, highlight.on_yank() does buffer-local highlighting, this PR
makes it window scoped.

Also fix the problem that when yanking in a buffer, moving to another
buffer, and yanking before the original buffer highlight disappears, the
original buffer highlight won't disappear on timeout.
This commit is contained in:
altermo
2024-02-22 09:39:32 +01:00
committed by GitHub
parent 4ec5c58846
commit e2e63bd045
2 changed files with 47 additions and 7 deletions

View File

@@ -1,9 +1,11 @@
local helpers = require('test.functional.helpers')(after_each)
local exec_lua = helpers.exec_lua
local eq = helpers.eq
local neq = helpers.neq
local eval = helpers.eval
local command = helpers.command
local clear = helpers.clear
local api = helpers.api
describe('vim.highlight.on_yank', function()
before_each(function()
@@ -31,4 +33,34 @@ describe('vim.highlight.on_yank', function()
]])
eq('', eval('v:errmsg'))
end)
it('does not show in another window', function()
command('vsplit')
exec_lua([[
vim.api.nvim_buf_set_mark(0,"[",1,1,{})
vim.api.nvim_buf_set_mark(0,"]",1,1,{})
vim.highlight.on_yank({timeout = math.huge, on_macro = true, event = {operator = "y"}})
]])
neq({}, api.nvim_win_get_ns(0))
command('wincmd w')
eq({}, api.nvim_win_get_ns(0))
end)
it('removes old highlight if new one is created before old one times out', function()
command('vnew')
exec_lua([[
vim.api.nvim_buf_set_mark(0,"[",1,1,{})
vim.api.nvim_buf_set_mark(0,"]",1,1,{})
vim.highlight.on_yank({timeout = math.huge, on_macro = true, event = {operator = "y"}})
]])
neq({}, api.nvim_win_get_ns(0))
command('wincmd w')
exec_lua([[
vim.api.nvim_buf_set_mark(0,"[",1,1,{})
vim.api.nvim_buf_set_mark(0,"]",1,1,{})
vim.highlight.on_yank({timeout = math.huge, on_macro = true, event = {operator = "y"}})
]])
command('wincmd w')
eq({}, api.nvim_win_get_ns(0))
end)
end)