mirror of
https://github.com/vim/vim.git
synced 2025-10-02 05:04:20 -04:00
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)
This commit is contained in:
@@ -31,6 +31,7 @@ int screen_valid(int doclear);
|
|||||||
void screenalloc(int doclear);
|
void screenalloc(int doclear);
|
||||||
void free_screenlines(void);
|
void free_screenlines(void);
|
||||||
void screenclear(void);
|
void screenclear(void);
|
||||||
|
void line_was_clobbered(int screen_lnum);
|
||||||
int can_clear(char_u *p);
|
int can_clear(char_u *p);
|
||||||
void screen_start(void);
|
void screen_start(void);
|
||||||
void windgoto(int row, int col);
|
void windgoto(int row, int col);
|
||||||
|
10
src/screen.c
10
src/screen.c
@@ -2981,6 +2981,16 @@ lineinvalid(unsigned off, int width)
|
|||||||
(void)vim_memset(ScreenAttrs + off, -1, (size_t)width * sizeof(sattr_T));
|
(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".
|
* Copy part of a Screenline for vertically split window "wp".
|
||||||
*/
|
*/
|
||||||
|
@@ -3732,6 +3732,7 @@ check_terminal_behavior(void)
|
|||||||
screen_stop_highlight();
|
screen_stop_highlight();
|
||||||
term_windgoto(1, 0);
|
term_windgoto(1, 0);
|
||||||
out_str((char_u *)" ");
|
out_str((char_u *)" ");
|
||||||
|
line_was_clobbered(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xcc_status.tr_progress == STATUS_GET)
|
if (xcc_status.tr_progress == STATUS_GET)
|
||||||
@@ -3761,6 +3762,7 @@ check_terminal_behavior(void)
|
|||||||
screen_stop_highlight();
|
screen_stop_highlight();
|
||||||
term_windgoto(2, 0);
|
term_windgoto(2, 0);
|
||||||
out_str((char_u *)" ");
|
out_str((char_u *)" ");
|
||||||
|
line_was_clobbered(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (did_send)
|
if (did_send)
|
||||||
|
@@ -754,6 +754,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1164,
|
||||||
/**/
|
/**/
|
||||||
1163,
|
1163,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user