mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #14848 from shadmansaleh/fixup/block_paste_clipboard
fix(clipboard): Fix block paste from system clipboard not working properly
This commit is contained in:
commit
a50a3a12d6
@ -156,7 +156,14 @@ function! s:clipboard.get(reg) abort
|
||||
elseif s:selections[a:reg].owner > 0
|
||||
return s:selections[a:reg].data
|
||||
end
|
||||
return s:try_cmd(s:paste[a:reg])
|
||||
|
||||
let clipboard_data = s:try_cmd(s:paste[a:reg])
|
||||
if match(&clipboard, '\v(unnamed|unnamedplus)') >= 0 && get(s:selections[a:reg].data, 0, []) == clipboard_data
|
||||
" When system clipboard return is same as our cache return the cache
|
||||
" as it contains regtype information
|
||||
return s:selections[a:reg].data
|
||||
end
|
||||
return clipboard_data
|
||||
endfunction
|
||||
|
||||
function! s:clipboard.set(lines, regtype, reg) abort
|
||||
@ -175,6 +182,9 @@ function! s:clipboard.set(lines, regtype, reg) abort
|
||||
|
||||
if s:cache_enabled == 0
|
||||
call s:try_cmd(s:copy[a:reg], a:lines)
|
||||
"Cache it anyway we can compare it later to get regtype of the yank
|
||||
let s:selections[a:reg] = copy(s:selection)
|
||||
let s:selections[a:reg].data = [a:lines, a:regtype]
|
||||
return 0
|
||||
end
|
||||
|
||||
|
@ -506,6 +506,20 @@ describe('clipboard (with fake clipboard.vim)', function()
|
||||
feed('p')
|
||||
eq('textstar', meths.get_current_line())
|
||||
end)
|
||||
|
||||
it('Block paste works currectly', function()
|
||||
insert([[
|
||||
aabbcc
|
||||
ddeeff
|
||||
]])
|
||||
feed('gg^<C-v>') -- Goto start of top line enter visual block mode
|
||||
feed('3ljy^k') -- yank 4x2 block & goto initial location
|
||||
feed('P') -- Paste it infront
|
||||
expect([[
|
||||
aabbaabbcc
|
||||
ddeeddeeff
|
||||
]])
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('clipboard=unnamedplus', function()
|
||||
|
Loading…
Reference in New Issue
Block a user