summaryrefslogtreecommitdiff
path: root/src/normal.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2015-08-04 19:18:52 +0200
committerBram Moolenaar <Bram@vim.org>2015-08-04 19:18:52 +0200
commit0bbcb5c8efbfe5f1568f56b24ffd222d915916f6 (patch)
treee4c2caeff666c57f9adbab1d2d90b4614ea59d94 /src/normal.c
parentcc218ab3caf983a0dcd3399beb8e1ecfcf0dd25d (diff)
downloadvim-git-0bbcb5c8efbfe5f1568f56b24ffd222d915916f6.tar.gz
patch 7.4.807v7.4.807
Problem: After CTRL-V CTRL-A mode isn't updated. (Hirohito Higashi) Solution: Clear the command line or update the displayed command.
Diffstat (limited to 'src/normal.c')
-rw-r--r--src/normal.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/src/normal.c b/src/normal.c
index 51aaeccb4..309b895a9 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);
}
}