diff options
author | altermo <107814000+altermo@users.noreply.github.com> | 2024-02-22 09:39:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-22 16:39:32 +0800 |
commit | e2e63bd045491f36e12c924fddbe76b3ef884b38 (patch) | |
tree | 0fdccbbb98ef8ed00fe420e2ba6a9eaf102ce00e /test/functional/lua/highlight_spec.lua | |
parent | 4ec5c58846a08c083f98d20633c853899104dabe (diff) | |
download | rneovim-e2e63bd045491f36e12c924fddbe76b3ef884b38.tar.gz rneovim-e2e63bd045491f36e12c924fddbe76b3ef884b38.tar.bz2 rneovim-e2e63bd045491f36e12c924fddbe76b3ef884b38.zip |
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.
Diffstat (limited to 'test/functional/lua/highlight_spec.lua')
-rw-r--r-- | test/functional/lua/highlight_spec.lua | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/functional/lua/highlight_spec.lua b/test/functional/lua/highlight_spec.lua index f304bec411..197f3139f3 100644 --- a/test/functional/lua/highlight_spec.lua +++ b/test/functional/lua/highlight_spec.lua @@ -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) |