diff options
Diffstat (limited to 'src/nvim/ops.c')
-rw-r--r-- | src/nvim/ops.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/nvim/ops.c b/src/nvim/ops.c index d8df6ae72d..766b5720d9 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -67,8 +67,6 @@ #define PLUS_REGISTER 38 #define NUM_REGISTERS 39 -#define CB_UNNAMEDMASK (CB_UNNAMED | CB_UNNAMEDPLUS) - static yankreg_T y_regs[NUM_REGISTERS]; static yankreg_T *y_previous = NULL; /* ptr to last written yankreg */ @@ -767,7 +765,10 @@ yankreg_T *get_yank_register(int regname, int mode) if (mode == YREG_PASTE && get_clipboard(regname, ®, false)) { // reg is set to clipboard contents. return reg; - } else if (mode != YREG_YANK && (regname == 0 || regname == '"') && y_previous != NULL) { + } else if (mode != YREG_YANK + && (regname == 0 || regname == '"' || regname == '*' || regname == '+') + && y_previous != NULL) { + // in case clipboard not available, paste from previous used register return y_previous; } @@ -5277,11 +5278,11 @@ static yankreg_T *adjust_clipboard_name(int *name, bool quiet) } yankreg_T *target; if (cb_flags & CB_UNNAMEDPLUS) { - *name = '+'; - target = &y_regs[STAR_REGISTER]; + *name = cb_flags & CB_UNNAMED ? '"': '+'; + target = &y_regs[PLUS_REGISTER]; } else { *name = '*'; - target = &y_regs[PLUS_REGISTER]; + target = &y_regs[STAR_REGISTER]; } return target; // unnamed register } |