mirror of
https://github.com/neovim/neovim.git
synced 2025-10-17 15:21:47 +00:00
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:
@@ -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)
|
||||
|
Reference in New Issue
Block a user