changeset 11655:8014350fe51a v8.0.0710

patch 8.0.0710: a job that writes to a buffer clears completion commit https://github.com/vim/vim/commit/8603356bf41e4aa5fe1d7cffe3ee003745c167a6 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jul 12 20:24:41 2017 +0200 patch 8.0.0710: a job that writes to a buffer clears completion Problem: A job that writes to a buffer clears command line completion. (Ramel Eshed) Solution: Do not redraw while showing the completion menu.
author Christian Brabandt <cb@256bit.org>
date Wed, 12 Jul 2017 20:30:03 +0200
parents f555f26d134e
children 807dfed6e2aa
files src/screen.c src/version.c
diffstat 2 files changed, 15 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/src/screen.c
+++ b/src/screen.c
@@ -275,6 +275,10 @@ redraw_buf_and_status_later(buf_T *buf, 
 {
     win_T	*wp;
 
+    if (wild_menu_showing != 0)
+	/* Don't redraw while the command line completion is displayed, it
+	 * would disappear. */
+	return;
     FOR_ALL_WINDOWS(wp)
     {
 	if (wp->w_buffer == buf)
@@ -444,22 +448,12 @@ redraw_after_callback(void)
 	; /* do nothing */
     else if (State & CMDLINE)
     {
-	/* Redrawing only works when the screen didn't scroll. */
-	if (msg_scrolled == 0)
-	{
+	/* Redrawing only works when the screen didn't scroll. Don't clear
+	 * wildmenu entries. */
+	if (msg_scrolled == 0 && wild_menu_showing == 0)
 	    update_screen(0);
-	    compute_cmdrow();
-	}
-	else
-	{
-	    /* Redraw in the same position, so that the user can continue
-	     * editing the command. */
-	    compute_cmdrow();
-	    if (cmdline_row > msg_scrolled)
-		cmdline_row -= msg_scrolled;
-	    else
-		cmdline_row = 0;
-	}
+	/* Redraw in the same position, so that the user can continue
+	 * editing the command. */
 	redrawcmdline_ex(FALSE);
     }
     else if (State & (NORMAL | INSERT))
@@ -9417,9 +9411,9 @@ setcursor(void)
 
 
 /*
- * insert 'line_count' lines at 'row' in window 'wp'
- * if 'invalid' is TRUE the wp->w_lines[].wl_lnum is invalidated.
- * if 'mayclear' is TRUE the screen will be cleared if it is faster than
+ * Insert 'line_count' lines at 'row' in window 'wp'.
+ * If 'invalid' is TRUE the wp->w_lines[].wl_lnum is invalidated.
+ * If 'mayclear' is TRUE the screen will be cleared if it is faster than
  * scrolling.
  * Returns FAIL if the lines are not inserted, OK for success.
  */
@@ -9502,7 +9496,7 @@ win_ins_lines(
 }
 
 /*
- * delete "line_count" window lines at "row" in window "wp"
+ * Delete "line_count" window lines at "row" in window "wp".
  * If "invalid" is TRUE curwin->w_lines[] is invalidated.
  * If "mayclear" is TRUE the screen will be cleared if it is faster than
  * scrolling
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    710,
+/**/
     709,
 /**/
     708,