From 2b400daca38b69e9d1dc76d97fa9391e2764b400 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Wed, 26 Jun 2019 21:43:57 -0400 Subject: vim-patch:8.0.1100: stuck in redraw loop when 'lazyredraw' is set Problem: Stuck in redraw loop when 'lazyredraw' is set. Solution: Don't loop on update_screen() when not redrawing. (Yasuhiro Matsumoto, closes vim/vim#2082) https://github.com/vim/vim/commit/072412ed45aa20a67aaa7e387d7f6bf59c7d3fbe --- src/nvim/screen.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/nvim/screen.c b/src/nvim/screen.c index d141520fef..19dff0a0f0 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -269,14 +269,14 @@ void update_curbuf(int type) /// and redraw_all_later() to mark parts of the screen as needing a redraw. /// /// @param type set to a NOT_VALID to force redraw of entire screen -void update_screen(int type) +int update_screen(int type) { static int did_intro = FALSE; int did_one; // Don't do anything if the screen structures are (not yet) valid. if (!default_grid.chars) { - return; + return FAIL; } if (must_redraw) { @@ -299,9 +299,10 @@ void update_screen(int type) if (!redrawing() || updating_screen) { redraw_later(type); /* remember type for next time */ must_redraw = type; - if (type > INVERTED_ALL) - curwin->w_lines_valid = 0; /* don't use w_lines[].wl_size now */ - return; + if (type > INVERTED_ALL) { + curwin->w_lines_valid = 0; // don't use w_lines[].wl_size now + } + return FAIL; } updating_screen = TRUE; @@ -511,6 +512,7 @@ void update_screen(int type) // either cmdline is cleared, not drawn or mode is last drawn cmdline_was_last_drawn = false; + return OK; } /* -- cgit