diff --git a/src/proto/screen.pro b/src/proto/screen.pro index b40e0dadc..39424b485 100644 --- a/src/proto/screen.pro +++ b/src/proto/screen.pro @@ -10,7 +10,7 @@ int redraw_asap(int type); void redraw_after_callback(int call_update_screen); void redrawWinline(linenr_T lnum, int invalid); void update_curbuf(int type); -void update_screen(int type_arg); +int update_screen(int type_arg); int conceal_cursor_line(win_T *wp); void conceal_check_cursur_line(void); void update_single_line(win_T *wp, linenr_T lnum); diff --git a/src/screen.c b/src/screen.c index 42995c727..6ce478ecc 100644 --- a/src/screen.c +++ b/src/screen.c @@ -538,8 +538,9 @@ update_curbuf(int type) /* * Based on the current value of curwin->w_topline, transfer a screenfull * of stuff from Filemem to ScreenLines[], and update curwin->w_botline. + * Return OK when the screen was updated, FAIL if it was not done. */ - void + int update_screen(int type_arg) { int type = type_arg; @@ -557,7 +558,7 @@ update_screen(int type_arg) /* Don't do anything if the screen structures are (not yet) valid. */ if (!screen_valid(TRUE)) - return; + return FAIL; if (type == VALID_NO_UPDATE) { @@ -589,7 +590,7 @@ update_screen(int type_arg) must_redraw = type; if (type > INVERTED_ALL) curwin->w_lines_valid = 0; /* don't use w_lines[].wl_size now */ - return; + return FAIL; } updating_screen = TRUE; @@ -842,6 +843,7 @@ update_screen(int type_arg) gui_update_scrollbars(FALSE); } #endif + return OK; } #if defined(FEAT_SIGNS) || defined(FEAT_GUI) || defined(FEAT_CONCEAL) diff --git a/src/terminal.c b/src/terminal.c index c025df178..cb74fcb03 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -40,7 +40,9 @@ * TODO: * - patch to use GUI or cterm colors for vterm. Yasuhiro, #2067 * - patch to add tmap, jakalope (Jacob Askeland) #2073 - * - Redirecting output does not work on MS-Windows. + * - Redirecting output does not work on MS-Windows, Test_terminal_redir_file() + * is disabled. + * - test_terminal_no_cmd hangs (Christian) * - implement term_setsize() * - add test for giving error for invalid 'termsize' value. * - support minimal size when 'termsize' is "rows*cols". @@ -1543,7 +1545,8 @@ terminal_loop(void) /* TODO: skip screen update when handling a sequence of keys. */ /* Repeat redrawing in case a message is received while redrawing. */ while (curwin->w_redr_type != 0) - update_screen(0); + if (update_screen(0) == FAIL) + break; update_cursor(curbuf->b_term, FALSE); c = term_vgetc(); diff --git a/src/version.c b/src/version.c index 689a10ee5..a62d1901c 100644 --- a/src/version.c +++ b/src/version.c @@ -769,6 +769,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1100, /**/ 1099, /**/