From 05c668f684e111880b4d15de9ec63c2ba3264ef3 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Mon, 9 Sep 2019 08:29:49 -0700 Subject: paste: fix normal-mode paste by different approach #10976 Forcing insert-mode after the first paste-chunk seems to work, as an alternative to a9e2bae0eb69 (insert-before-cursor). NB: Dot-repeat needs to match the original action. Since a9e2bae0eb69 changed paste to insert-before-cursor, dot-repeat must also. But that makes dot-repeat unpleasant/unusual. --- src/nvim/lua/vim.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/nvim/lua/vim.lua b/src/nvim/lua/vim.lua index 010c3b98ee..f0f24e4d16 100644 --- a/src/nvim/lua/vim.lua +++ b/src/nvim/lua/vim.lua @@ -191,8 +191,14 @@ paste = (function() local line1, _ = string.gsub(lines[1], '[\r\n\012\027]', ' ') -- Scrub. vim.api.nvim_input(line1) vim.api.nvim_set_option('paste', false) - elseif mode ~= 'c' then - vim.api.nvim_put(lines, 'c', false, true) + elseif mode ~= 'c' then -- Else: discard remaining cmdline-mode chunks. + if phase < 2 and mode ~= 'i' and mode ~= 'R' then + vim.api.nvim_put(lines, 'c', true, true) + -- XXX: Normal-mode: workaround bad cursor-placement after first chunk. + vim.api.nvim_command('normal! a') + else + vim.api.nvim_put(lines, 'c', false, true) + end end if phase ~= -1 and (now - tdots >= 100) then local dots = ('.'):rep(tick % 4) -- cgit