diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-04-28 21:06:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-28 21:06:24 +0200 |
commit | 8aca932aa0ace29a11b2036f882c961b33ab5286 (patch) | |
tree | d2aec86739aa0bc0867c16f74345ccfd8bb37eb4 | |
parent | c76c798bf6377783634eab706339e827fa4fd45f (diff) | |
download | rneovim-8aca932aa0ace29a11b2036f882c961b33ab5286.tar.gz rneovim-8aca932aa0ace29a11b2036f882c961b33ab5286.tar.bz2 rneovim-8aca932aa0ace29a11b2036f882c961b33ab5286.zip |
clipboard: setreg("*") with clipboard=unnamed #9954
Helped-by: Björn Linse <bjorn.linse@gmail.com>
fix #5646
-rw-r--r-- | src/nvim/ops.c | 3 | ||||
-rw-r--r-- | test/functional/clipboard/clipboard_provider_spec.lua | 18 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/nvim/ops.c b/src/nvim/ops.c index 79a7271819..bd436bfac6 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -5616,6 +5616,9 @@ static yankreg_T *adjust_clipboard_name(int *name, bool quiet, bool writing) if (explicit_cb_reg) { target = &y_regs[*name == '*' ? STAR_REGISTER : PLUS_REGISTER]; + if (writing && (cb_flags & (*name == '*' ? CB_UNNAMED : CB_UNNAMEDPLUS))) { + clipboard_needs_update = false; + } goto end; } else { // unnamed register: "implicit" clipboard if (writing && clipboard_delay_update) { diff --git a/test/functional/clipboard/clipboard_provider_spec.lua b/test/functional/clipboard/clipboard_provider_spec.lua index 2bbc678a02..b2d75db745 100644 --- a/test/functional/clipboard/clipboard_provider_spec.lua +++ b/test/functional/clipboard/clipboard_provider_spec.lua @@ -236,7 +236,7 @@ describe('clipboard', function() end) end) -describe('clipboard', function() +describe('clipboard (with fake clipboard.vim)', function() local function reset(...) clear('--cmd', 'let &rtp = "test/functional/fixtures,".&rtp', ...) end @@ -664,4 +664,20 @@ describe('clipboard', function() the a sourcetarget]]) end) + it('setreg("*") with clipboard=unnamed #5646', function() + source([=[ + function! Paste_without_yank(direction) range + let [reg_save,regtype_save] = [getreg('*'), getregtype('*')] + normal! gvp + call setreg('*', reg_save, regtype_save) + endfunction + xnoremap p :call Paste_without_yank('p')<CR> + set clipboard=unnamed + ]=]) + insert('some words') + feed('gg0yiw') + feed('wviwp') + expect('some some') + eq('some', eval('getreg("*")')) + end) end) |