clipboard: fix "" register not updated when clipboard=unnamed

Helped-By: Scott Prager <splinterofchaos@gmail.com>
This commit is contained in:
Björn Linse 2015-04-08 21:47:24 +02:00
parent 941b02af4c
commit 9978a01faa
2 changed files with 16 additions and 7 deletions

View File

@ -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)

View File

@ -55,6 +55,12 @@ local function basic_register_test(noblock)
, stuff and some more
some textsome some text, stuff and some more]])
-- deleting a line does update ""
feed('ggdd""P')
expect([[
, stuff and some more
some textsome some text, stuff and some more]])
feed('ggw<c-v>jwyggP')
if noblock then
expect([[