aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/normal.c
diff options
context:
space:
mode:
authorwatiko <service@mail.watiko.net>2016-01-14 17:06:55 +0900
committerwatiko <service@mail.watiko.net>2016-02-01 03:43:36 +0900
commit4d074e39ea1228e4f04c70ecfe4e1196a9638176 (patch)
treefc56179f5b08eac3233d961c79e5b2ee49f2f577 /src/nvim/normal.c
parent8f22031708b351ec5bb73952e6afc39b07a72ae2 (diff)
downloadrneovim-4d074e39ea1228e4f04c70ecfe4e1196a9638176.tar.gz
rneovim-4d074e39ea1228e4f04c70ecfe4e1196a9638176.tar.bz2
rneovim-4d074e39ea1228e4f04c70ecfe4e1196a9638176.zip
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
Diffstat (limited to 'src/nvim/normal.c')
-rw-r--r--src/nvim/normal.c28
1 files changed, 23 insertions, 5 deletions
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);