]> granicus.if.org Git - vim/commitdiff
patch 8.0.0710: a job that writes to a buffer clears completion v8.0.0710
authorBram Moolenaar <Bram@vim.org>
Wed, 12 Jul 2017 18:24:41 +0000 (20:24 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 12 Jul 2017 18:24:41 +0000 (20:24 +0200)
Problem:    A job that writes to a buffer clears command line completion.
            (Ramel Eshed)
Solution:   Do not redraw while showing the completion menu.

src/screen.c
src/version.c

index f047534e89847745cde3eb37018cb8baf4bfd4a3..5a360b5ff1ea3ed638873fcc5b86331e97f76c9c 100644 (file)
@@ -275,6 +275,10 @@ redraw_buf_and_status_later(buf_T *buf, int type)
 {
     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
index e284648f296aba63f26d69047eb62a958553013d..02ce657ea08a161dc83015c0529fabfb0da9aac6 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    710,
 /**/
     709,
 /**/