aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api/vim_spec.lua
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-09-24 19:48:40 +0800
committerGitHub <noreply@github.com>2024-09-24 11:48:40 +0000
commit052875b9dc3de3283844a30dce9646f26982542d (patch)
tree15dd7b775c42ab3752919c1521d46d5b8bb5c2be /test/functional/api/vim_spec.lua
parent3f6bc34e663c62bc8899dcdc65bf204b2ccfdaec (diff)
downloadrneovim-052875b9dc3de3283844a30dce9646f26982542d.tar.gz
rneovim-052875b9dc3de3283844a30dce9646f26982542d.tar.bz2
rneovim-052875b9dc3de3283844a30dce9646f26982542d.zip
fix(paste): only record a paste when it's from RPC (#30491)
Problem: When using nvim_paste in a mapping during a macro recording, both the mapping and the paste are recorded, causing the paste to be performed twice when replaying the macro. Solution: Only record a paste when it is from RPC. Unfortunately this means there is no way for a script to make a recorded paste. A way to enable that can be discussed later if there is need.
Diffstat (limited to 'test/functional/api/vim_spec.lua')
-rw-r--r--test/functional/api/vim_spec.lua7
1 files changed, 7 insertions, 0 deletions
diff --git a/test/functional/api/vim_spec.lua b/test/functional/api/vim_spec.lua
index 1b34945f13..af4d4854f5 100644
--- a/test/functional/api/vim_spec.lua
+++ b/test/functional/api/vim_spec.lua
@@ -1358,6 +1358,13 @@ describe('API', function()
test_paste_repeat_visual_select(true)
end)
end)
+ it('in a mapping recorded in a macro', function()
+ command([[nnoremap <F2> <Cmd>call nvim_paste('foo', v:false, -1)<CR>]])
+ feed('qr<F2>$q')
+ expect('foo')
+ feed('@r') -- repeating a macro containing the mapping should only paste once
+ expect('foofoo')
+ end)
local function test_paste_cancel_error(is_error)
before_each(function()
exec_lua(([[