diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2015-04-08 21:47:24 +0200 |
---|---|---|
committer | Björn Linse <bjorn.linse@gmail.com> | 2015-04-11 11:11:52 +0200 |
commit | 9978a01faa14f46f059119ae8bac6a2be944394d (patch) | |
tree | 80b6d85eee83d7a586b335c297cf696d40991605 /src | |
parent | 941b02af4cca9fb98c6ee4a8dd4aa800bd337deb (diff) | |
download | rneovim-9978a01faa14f46f059119ae8bac6a2be944394d.tar.gz rneovim-9978a01faa14f46f059119ae8bac6a2be944394d.tar.bz2 rneovim-9978a01faa14f46f059119ae8bac6a2be944394d.zip |
clipboard: fix "" register not updated when clipboard=unnamed
Helped-By: Scott Prager <splinterofchaos@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/ops.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/nvim/ops.c b/src/nvim/ops.c index 54c2edf4fa..1ed6827a33 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -775,9 +775,12 @@ void get_yank_register(int regname, int mode) { int i; + if (mode == YREG_PASTE && get_clipboard(regname, &y_current, false)) { + // y_current is set to clipboard contents. + return; + } y_append = FALSE; - int unnamedclip = cb_flags & CB_UNNAMEDMASK; - if ((regname == 0 || regname == '"') && !unnamedclip && mode != YREG_YANK && y_previous != NULL) { + if ((regname == 0 || regname == '"') && mode != YREG_YANK && y_previous != NULL) { y_current = y_previous; return; } @@ -801,8 +804,6 @@ void get_yank_register(int regname, int mode) if (mode == YREG_YANK) { // remember the written register for unnamed paste y_previous = y_current; - } else if (mode == YREG_PASTE) { - get_clipboard(regname, &y_current, false); } } @@ -5366,11 +5367,11 @@ static struct yankreg* adjust_clipboard_name(int *name, bool quiet, bool writing return NULL; } -static void get_clipboard(int name, struct yankreg** target, bool quiet) +static bool get_clipboard(int name, struct yankreg** target, bool quiet) { struct yankreg* reg = adjust_clipboard_name(&name, quiet, false); if (reg == NULL) { - return; + return false; } free_register(reg); @@ -5455,7 +5456,7 @@ static void get_clipboard(int name, struct yankreg** target, bool quiet) } *target = reg; - return; + return true; err: if (reg->y_array) { @@ -5467,6 +5468,8 @@ err: reg->y_array = NULL; reg->y_size = 0; EMSG("clipboard: provider returned invalid data"); + *target = reg; + return false; } static void set_clipboard(int name) |