aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/normal.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/normal.c')
-rw-r--r--src/nvim/normal.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/nvim/normal.c b/src/nvim/normal.c
index 684467d26a..d831679b64 100644
--- a/src/nvim/normal.c
+++ b/src/nvim/normal.c
@@ -3506,7 +3506,21 @@ static void nv_addsub(cmdarg_T *cap)
bool visual = VIsual_active;
if (cap->oap->op_type == OP_NOP
&& do_addsub((int)cap->cmdchar, cap->count1, cap->arg) == OK) {
- prep_redo_cmd(cap);
+ if (visual) {
+ ResetRedobuff();
+ AppendCharToRedobuff(VIsual_mode);
+ if (VIsual_mode == 'V') {
+ AppendNumberToRedobuff(cap->oap->line_count);
+ AppendCharToRedobuff('j');
+ }
+ AppendNumberToRedobuff(cap->count1);
+ if (cap->nchar != NUL) {
+ AppendCharToRedobuff(cap->nchar);
+ }
+ AppendCharToRedobuff(cap->cmdchar);
+ } else {
+ prep_redo_cmd(cap);
+ }
} else {
clearopbeep(cap->oap);
}