changeset 6979:a25618cbc68a v7.4.807

patch 7.4.807 Problem: After CTRL-V CTRL-A mode isn't updated. (Hirohito Higashi) Solution: Clear the command line or update the displayed command.
author Bram Moolenaar <bram@vim.org>
date Tue, 04 Aug 2015 19:18:52 +0200
parents 5ad1ff809c32
children 823ecdaddf1d
files src/normal.c src/version.c
diffstat 2 files changed, 22 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/normal.c
+++ b/src/normal.c
@@ -48,6 +48,7 @@ static int	checkclearopq __ARGS((oparg_T
 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_ya
 		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);
     }
 }
--- 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,