# HG changeset patch # User Christian Brabandt # Date 1499884203 -7200 # Node ID 8014350fe51aee6d411ab8cdef750aebcc0c3c67 # Parent f555f26d134e699a28dc110b60e26b4bf55548a0 patch 8.0.0710: a job that writes to a buffer clears completion commit https://github.com/vim/vim/commit/8603356bf41e4aa5fe1d7cffe3ee003745c167a6 Author: Bram Moolenaar 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. diff --git a/src/screen.c b/src/screen.c --- 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 diff --git a/src/version.c b/src/version.c --- 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,