mirror of
https://github.com/neovim/neovim.git
synced 2024-12-24 05:05:00 -07:00
BugFix(clipboard): Fix block paste not working properly
Block copy and paste from system-clipboard currently breaks formatting. This fixes it. The bug occurs because system-clipboard doesn't contain information about what mode the copy was made. Simple solution to this is we keep a cache of copy we last made along with mode information. If system-clipboard returns the cache we apply the mode information that we know about that cache.
This commit is contained in:
parent
f35a5f2efc
commit
21444552c0
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user