diff options
author | Jesse <github@jessebakker.com> | 2020-05-05 13:18:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-05 13:18:41 +0200 |
commit | 48c219829786c14b6e511229a59e2fda32ffe352 (patch) | |
tree | 72330aa853951690c4464e0c87b712b746f826f2 /src/nvim/lua/vim.lua | |
parent | a467f3f665bda399feae440656f38ae573cef27f (diff) | |
download | rneovim-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.lua | 12 |
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 |