Mercurial > vim
diff src/normal.c @ 6868:9798a98a1583 v7.4.754
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)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Thu, 25 Jun 2015 13:57:36 +0200 |
parents | 8ebcd7f1ff5b |
children | f9876721bedc |
line wrap: on
line diff
--- a/src/normal.c +++ b/src/normal.c @@ -4201,9 +4201,17 @@ nv_help(cap) nv_addsub(cap) cmdarg_T *cap; { - if (!checkclearopq(cap->oap) - && do_addsub((int)cap->cmdchar, cap->count1) == OK) + 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); + else + clearopbeep(cap->oap); + if (visual) + { + VIsual_active = FALSE; + redraw_later(CLEAR); + } } /* @@ -7841,14 +7849,28 @@ nv_g_cmd(cap) switch (cap->nchar) { + case Ctrl_A: + case Ctrl_X: #ifdef MEM_PROFILE /* * "g^A": dump log of used memory. */ - case Ctrl_A: - vim_mem_profile_dump(); + if (!VIsual_active && cap->nchar == Ctrl_A) + vim_mem_profile_dump(); + else +#endif + /* + * "g^A/g^X": sequentially increment visually selected region + */ + if (VIsual_active) + { + cap->arg = TRUE; + cap->cmdchar = cap->nchar; + nv_addsub(cap); + } + else + clearopbeep(oap); break; -#endif #ifdef FEAT_VREPLACE /*