ui: disable 'lazyredraw' during ui_refresh.

Could also try `do_redraw = true` instead of save/restore `p_lz`, but
the nice thing about save/restore of `p_lz` is that it is "atomic".
The semantics of `do_redraw` are not clear to me.

Closes #4884
References #6202
References https://github.com/neovim/neovim/pull/6202#issuecomment-284379503
References #3929 #5692 #6157
References #5866
This commit is contained in:
Justin M. Keyes 2017-03-11 15:58:51 +01:00
parent d258ac8ed2
commit 34e5654f21
2 changed files with 10 additions and 7 deletions

View File

@ -7440,13 +7440,11 @@ int number_width(win_T *wp)
return n;
}
/*
* Set size of the Vim shell.
* If 'mustset' is TRUE, we must set Rows and Columns, do not get the real
* window size (this is used for the :win command).
* If 'mustset' is FALSE, we may try to get the real window size and if
* it fails use 'width' and 'height'.
*/
/// Set size of the Vim shell.
/// If 'mustset' is TRUE, we must set Rows and Columns, do not get the real
/// window size (this is used for the :win command).
/// If 'mustset' is FALSE, we may try to get the real window size and if
/// it fails use 'width' and 'height'.
void screen_resize(int width, int height)
{
static int busy = FALSE;

View File

@ -193,7 +193,12 @@ void ui_refresh(void)
}
row = col = 0;
int save_p_lz = p_lz;
p_lz = false; // convince redrawing() to return true ...
screen_resize(width, height);
p_lz = save_p_lz;
for (UIWidget i = 0; (int)i < UI_WIDGETS; i++) {
ui_set_external(i, ext_widgets[i]);
}