summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-07-08 23:09:28 +0200
committerBram Moolenaar <Bram@vim.org>2020-07-08 23:09:28 +0200
commit96916ac67ad9ed5d79ce87b099f9d01aa4c13745 (patch)
tree9ecc679aa3799d886c894b21adc410b4ca851cb7
parent6e13530ca03dd9cad245221177dd65f712211448 (diff)
patch 8.2.1164: text cleared by checking terminal properties not redrawnv8.2.1164
Problem: Text cleared by checking terminal properties not redrawn. (Alexey Radkov) Solution: Mark the screen characters as invalid. (closes #6422)
-rw-r--r--src/proto/screen.pro1
-rw-r--r--src/screen.c10
-rw-r--r--src/term.c2
-rw-r--r--src/version.c2
4 files changed, 15 insertions, 0 deletions
diff --git a/src/proto/screen.pro b/src/proto/screen.pro
index 919bd419b0..3f475ec12c 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 01d6257b7c..0d65b4bbdc 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2982,6 +2982,16 @@ lineinvalid(unsigned off, int width)
}
/*
+ * 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".
*/
static void
diff --git a/src/term.c b/src/term.c
index 3bda87cccc..07acc11b2a 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 91da9bb9d8..f3e023f972 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1164,
+/**/
1163,
/**/
1162,