aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/lua/vim.lua
diff options
context:
space:
mode:
authorJesse <github@jessebakker.com>2020-05-05 13:18:41 +0200
committerGitHub <noreply@github.com>2020-05-05 13:18:41 +0200
commit48c219829786c14b6e511229a59e2fda32ffe352 (patch)
tree72330aa853951690c4464e0c87b712b746f826f2 /src/nvim/lua/vim.lua
parenta467f3f665bda399feae440656f38ae573cef27f (diff)
downloadrneovim-48c219829786c14b6e511229a59e2fda32ffe352.tar.gz
rneovim-48c219829786c14b6e511229a59e2fda32ffe352.tar.bz2
rneovim-48c219829786c14b6e511229a59e2fda32ffe352.zip
paste: support replace mode (#11945)
* paste: support replace mode * Clean up Co-authored-by: Jesse Bakker <git@jessebakker.com>
Diffstat (limited to 'src/nvim/lua/vim.lua')
-rw-r--r--src/nvim/lua/vim.lua12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/nvim/lua/vim.lua b/src/nvim/lua/vim.lua
index 8ba550ea31..fc337c5e7e 100644
--- a/src/nvim/lua/vim.lua
+++ b/src/nvim/lua/vim.lua
@@ -212,6 +212,18 @@ do
vim.api.nvim_put(lines, 'c', true, true)
-- XXX: Normal-mode: workaround bad cursor-placement after first chunk.
vim.api.nvim_command('normal! a')
+ elseif phase < 2 and mode == 'R' then
+ local nchars = 0
+ for _, line in ipairs(lines) do
+ nchars = nchars + line:len()
+ end
+ local row, col = unpack(vim.api.nvim_win_get_cursor(0))
+ local bufline = vim.api.nvim_buf_get_lines(0, row-1, row, true)[1]
+ local firstline = lines[1]
+ firstline = bufline:sub(1, col)..firstline
+ lines[1] = firstline
+ lines[#lines] = lines[#lines]..bufline:sub(col + nchars + 1, bufline:len())
+ vim.api.nvim_buf_set_lines(0, row-1, row, false, lines)
else
vim.api.nvim_put(lines, 'c', false, true)
end