From 34e5654f2166fea0ae78a6260e8b961be4b07f1d Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sat, 11 Mar 2017 15:58:51 +0100 Subject: 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 --- src/nvim/screen.c | 12 +++++------- src/nvim/ui.c | 5 +++++ 2 files changed, 10 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/nvim/screen.c b/src/nvim/screen.c index f8d519ab36..0c2c4a9bee 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -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; diff --git a/src/nvim/ui.c b/src/nvim/ui.c index a60c061949..b85a01814d 100644 --- a/src/nvim/ui.c +++ b/src/nvim/ui.c @@ -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]); } -- cgit