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
|
elseif s:selections[a:reg].owner > 0
|
||||||
return s:selections[a:reg].data
|
return s:selections[a:reg].data
|
||||||
end
|
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
|
endfunction
|
||||||
|
|
||||||
function! s:clipboard.set(lines, regtype, reg) abort
|
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
|
if s:cache_enabled == 0
|
||||||
call s:try_cmd(s:copy[a:reg], a:lines)
|
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
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -506,6 +506,20 @@ describe('clipboard (with fake clipboard.vim)', function()
|
|||||||
feed('p')
|
feed('p')
|
||||||
eq('textstar', meths.get_current_line())
|
eq('textstar', meths.get_current_line())
|
||||||
end)
|
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)
|
end)
|
||||||
|
|
||||||
describe('clipboard=unnamedplus', function()
|
describe('clipboard=unnamedplus', function()
|
||||||
|
Loading…
Reference in New Issue
Block a user