From 4d074e39ea1228e4f04c70ecfe4e1196a9638176 Mon Sep 17 00:00:00 2001 From: watiko Date: Thu, 14 Jan 2016 17:06:55 +0900 Subject: vim-patch:7.4.754 Problem: Using CTRL-A in Visual mode does not work well. (Gary Johnson) Solution: Make it increment all numbers in the Visual area. (Christian Brabandt) https://github.com/vim/vim/commit/3a304b23823b089e499063e8211c5695d049f3ba --- src/nvim/normal.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'src/nvim/normal.c') diff --git a/src/nvim/normal.c b/src/nvim/normal.c index a116b5a0bd..684467d26a 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -3503,9 +3503,17 @@ static void nv_help(cmdarg_T *cap) */ static void nv_addsub(cmdarg_T *cap) { - if (!checkclearopq(cap->oap) - && do_addsub(cap->cmdchar, cap->count1)) + 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); + } else { + clearopbeep(cap->oap); + } + if (visual) { + VIsual_active = false; + redraw_later(CLEAR); + } } /* @@ -6327,9 +6335,19 @@ static void nv_g_cmd(cmdarg_T *cap) bool flag = false; switch (cap->nchar) { - /* - * "gR": Enter virtual replace mode. - */ + // "g^A/g^X": Sequentially increment visually selected region. + case Ctrl_A: + case Ctrl_X: + if (VIsual_active) { + cap->arg = true; + cap->cmdchar = cap->nchar; + nv_addsub(cap); + } else { + clearopbeep(oap); + } + break; + + // "gR": Enter virtual replace mode. case 'R': cap->arg = true; nv_Replace(cap); -- cgit