From: Bram Moolenaar Date: Wed, 8 Jul 2020 21:09:28 +0000 (+0200) Subject: patch 8.2.1164: text cleared by checking terminal properties not redrawn X-Git-Tag: v8.2.1164 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=96916ac67ad9ed5d79ce87b099f9d01aa4c13745;p=vim patch 8.2.1164: text cleared by checking terminal properties not redrawn Problem: Text cleared by checking terminal properties not redrawn. (Alexey Radkov) Solution: Mark the screen characters as invalid. (closes #6422) --- diff --git a/src/proto/screen.pro b/src/proto/screen.pro index 919bd419b..3f475ec12 100644 --- a/src/proto/screen.pro +++ b/src/proto/screen.pro @@ -31,6 +31,7 @@ int screen_valid(int doclear); void screenalloc(int doclear); void free_screenlines(void); void screenclear(void); +void line_was_clobbered(int screen_lnum); int can_clear(char_u *p); void screen_start(void); void windgoto(int row, int col); diff --git a/src/screen.c b/src/screen.c index 01d6257b7..0d65b4bbd 100644 --- a/src/screen.c +++ b/src/screen.c @@ -2981,6 +2981,16 @@ lineinvalid(unsigned off, int width) (void)vim_memset(ScreenAttrs + off, -1, (size_t)width * sizeof(sattr_T)); } +/* + * To be called when characters were sent to the terminal directly, outputting + * test on "screen_lnum". + */ + void +line_was_clobbered(int screen_lnum) +{ + lineinvalid(LineOffset[screen_lnum], (int)Columns); +} + /* * Copy part of a Screenline for vertically split window "wp". */ diff --git a/src/term.c b/src/term.c index 3bda87ccc..07acc11b2 100644 --- a/src/term.c +++ b/src/term.c @@ -3732,6 +3732,7 @@ check_terminal_behavior(void) screen_stop_highlight(); term_windgoto(1, 0); out_str((char_u *)" "); + line_was_clobbered(1); } if (xcc_status.tr_progress == STATUS_GET) @@ -3761,6 +3762,7 @@ check_terminal_behavior(void) screen_stop_highlight(); term_windgoto(2, 0); out_str((char_u *)" "); + line_was_clobbered(2); } if (did_send) diff --git a/src/version.c b/src/version.c index 91da9bb9d..f3e023f97 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1164, /**/ 1163, /**/