Mercurial > vim
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