summaryrefslogtreecommitdiff
path: root/src/normal.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/normal.c')
-rw-r--r--src/normal.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/normal.c b/src/normal.c
index 8d8be9b0c..a38538fcd 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -4204,7 +4204,24 @@ nv_addsub(cap)
int 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);
if (visual)