vim-patch:8.0.0303: shift_delete_registers() #10868

Problem:    Bracketed paste does not work in Visual mode.
Solution:   Delete the text before pasting
a1891848d9
This commit is contained in:
Jan Edmund Lazo 2019-08-28 05:37:18 -04:00 committed by Justin M. Keyes
parent 82d52b229d
commit 1d59575450

View File

@ -1323,6 +1323,19 @@ bool cmdline_paste_reg(int regname, bool literally, bool remcr)
return OK; return OK;
} }
// Shift the delete registers: "9 is cleared, "8 becomes "9, etc.
static void shift_delete_registers(bool y_append)
{
free_register(&y_regs[9]); // free register "9
for (int n = 9; n > 1; n--) {
y_regs[n] = y_regs[n - 1];
}
if (!y_append) {
y_previous = &y_regs[1];
}
y_regs[1].y_array = NULL; // set register "1 to empty
}
/* /*
* Handle a delete operation. * Handle a delete operation.
* *
@ -1417,13 +1430,7 @@ int op_delete(oparg_T *oap)
*/ */
if (oap->regname != 0 || oap->motion_type == kMTLineWise if (oap->regname != 0 || oap->motion_type == kMTLineWise
|| oap->line_count > 1 || oap->use_reg_one) { || oap->line_count > 1 || oap->use_reg_one) {
free_register(&y_regs[9]); /* free register "9 */ shift_delete_registers(is_append_register(oap->regname));
for (n = 9; n > 1; n--)
y_regs[n] = y_regs[n - 1];
if (!is_append_register(oap->regname)) {
y_previous = &y_regs[1];
}
y_regs[1].y_array = NULL; // set register "1 to empty
reg = &y_regs[1]; reg = &y_regs[1];
op_yank_reg(oap, false, reg, false); op_yank_reg(oap, false, reg, false);
did_yank = true; did_yank = true;