diff options
author | Bram Moolenaar <bram@vim.org> | 2015-08-04 19:18:52 +0200 |
---|---|---|
committer | Bram Moolenaar <bram@vim.org> | 2015-08-04 19:18:52 +0200 |
commit | fdb617d6055a9b12a0f56788657703c8d10d8c1f (patch) | |
tree | 3b0489be66df183ba29aa26493041810664b2970 | |
parent | aa5eeac307af2174de9e09f1d0a88aa76abd1e22 (diff) | |
download | vim-fdb617d6055a9b12a0f56788657703c8d10d8c1f.tar.gz |
Problem: After CTRL-V CTRL-A mode isn't updated. (Hirohito Higashi)
Solution: Clear the command line or update the displayed command.
-rw-r--r-- | src/normal.c | 33 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 22 insertions, 13 deletions
diff --git a/src/normal.c b/src/normal.c index 51aaeccb..309b895a 100644 --- a/src/normal.c +++ b/src/normal.c @@ -48,6 +48,7 @@ static int checkclearopq __ARGS((oparg_T *oap)); static void clearop __ARGS((oparg_T *oap)); static void clearopbeep __ARGS((oparg_T *oap)); static void unshift_special __ARGS((cmdarg_T *cap)); +static void may_clear_cmdline __ARGS((void)); #ifdef FEAT_CMDL_INFO static void del_from_showcmd __ARGS((int)); #endif @@ -1752,12 +1753,7 @@ do_pending_operator(cap, old_col, gui_yank) setmouse(); mouse_dragging = 0; #endif - if (mode_displayed) - clear_cmdline = TRUE; /* unshow visual mode later */ -#ifdef FEAT_CMDL_INFO - else - clear_showcmd(); -#endif + may_clear_cmdline(); if ((oap->op_type == OP_YANK || oap->op_type == OP_COLON || oap->op_type == OP_FUNCTION @@ -3312,13 +3308,7 @@ end_visual_mode() if (!virtual_active()) curwin->w_cursor.coladd = 0; #endif - - if (mode_displayed) - clear_cmdline = TRUE; /* unshow visual mode later */ -#ifdef FEAT_CMDL_INFO - else - clear_showcmd(); -#endif + may_clear_cmdline(); adjust_cursor_eol(); } @@ -3763,6 +3753,21 @@ unshift_special(cap) cap->cmdchar = simplify_key(cap->cmdchar, &mod_mask); } +/* + * If the mode is currently displayed clear the command line or update the + * command displayed. + */ + static void +may_clear_cmdline() +{ + if (mode_displayed) + clear_cmdline = TRUE; /* unshow visual mode later */ +#ifdef FEAT_CMDL_INFO + else + clear_showcmd(); +#endif +} + #if defined(FEAT_CMDL_INFO) || defined(PROTO) /* * Routines for displaying a partly typed command @@ -4240,6 +4245,7 @@ nv_addsub(cap) cmdarg_T *cap; { int visual = VIsual_active; + if (cap->oap->op_type == OP_NOP && do_addsub((int)cap->cmdchar, cap->count1, cap->arg) == OK) { @@ -4259,6 +4265,7 @@ nv_addsub(cap) { VIsual_active = FALSE; redo_VIsual_busy = FALSE; + may_clear_cmdline(); redraw_later(INVERTED); } } diff --git a/src/version.c b/src/version.c index 714851b2..996355f1 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 807, +/**/ 806, /**/ 805, |