mirror of
https://github.com/vim/vim.git
synced 2025-07-04 23:07:33 -04:00
patch 9.1.0708: Recursive window update does not account for reset skipcol
Problem: Window is updated with potentially invalid skipcol in recursive window update path. I.e. cursor outside of visible range in large line that does not fit. Solution: Make sure it is valid (Luuk van Baal). closes: #15605 Signed-off-by: Luuk van Baal <luukvbaal@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
parent
9abd02d16a
commit
3d5065fc75
@ -2774,7 +2774,7 @@ win_update(win_T *wp)
|
|||||||
redrawWinline(wp, wp->w_cursor.lnum);
|
redrawWinline(wp, wp->w_cursor.lnum);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
// New redraw either due to updated topline or due to wcol fix.
|
// New redraw either due to updated topline, wcol fix or reset skipcol.
|
||||||
if (wp->w_redr_type != 0)
|
if (wp->w_redr_type != 0)
|
||||||
{
|
{
|
||||||
// Don't update for changes in buffer again.
|
// Don't update for changes in buffer again.
|
||||||
@ -2782,6 +2782,7 @@ win_update(win_T *wp)
|
|||||||
curbuf->b_mod_set = FALSE;
|
curbuf->b_mod_set = FALSE;
|
||||||
j = curbuf->b_mod_xlines;
|
j = curbuf->b_mod_xlines;
|
||||||
curbuf->b_mod_xlines = 0;
|
curbuf->b_mod_xlines = 0;
|
||||||
|
curs_columns(TRUE);
|
||||||
win_update(curwin);
|
win_update(curwin);
|
||||||
curbuf->b_mod_set = i;
|
curbuf->b_mod_set = i;
|
||||||
curbuf->b_mod_xlines = j;
|
curbuf->b_mod_xlines = j;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
| +0&#ffffff0@39
|
|<+0#4040ff13#ffffff0@2|t+0#0000000&|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t
|
||||||
@40
|
|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l
|
||||||
@40
|
|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g|
|
||||||
> @39
|
>t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o|
|
||||||
@40
|
|l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g
|
||||||
@40
|
| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o
|
||||||
@40
|
| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n
|
||||||
@40
|
| @39
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
| +0&#ffffff0@39
|
|<+0#4040ff13#ffffff0@2|l+0#0000000&|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l
|
||||||
@40
|
|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g|
|
||||||
@40
|
|t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o|
|
||||||
@40
|
|l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g
|
||||||
@40
|
| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o
|
||||||
@40
|
| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n
|
||||||
> @39
|
>g| |t|w|o| |l|o|n|g| |t|w|o| |l|o|n|g| @20
|
||||||
@40
|
@40
|
||||||
|
@ -1162,7 +1162,6 @@ func Test_smooth_long_scrolloff()
|
|||||||
END
|
END
|
||||||
call writefile(lines, 'XSmoothLongScrolloff', 'D')
|
call writefile(lines, 'XSmoothLongScrolloff', 'D')
|
||||||
let buf = RunVimInTerminal('-u NONE -S XSmoothLongScrolloff', #{rows: 8, cols: 40})
|
let buf = RunVimInTerminal('-u NONE -S XSmoothLongScrolloff', #{rows: 8, cols: 40})
|
||||||
"FIXME: empty screen due to reset_skipcol()/curs_columns() shenanigans
|
|
||||||
call term_sendkeys(buf, ":norm j721|\<CR>")
|
call term_sendkeys(buf, ":norm j721|\<CR>")
|
||||||
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_1', {})
|
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_1', {})
|
||||||
|
|
||||||
@ -1182,7 +1181,6 @@ func Test_smooth_long_scrolloff()
|
|||||||
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_6', {})
|
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_6', {})
|
||||||
|
|
||||||
call term_sendkeys(buf, "gk")
|
call term_sendkeys(buf, "gk")
|
||||||
"FIXME: empty screen due to reset_skipcol()/curs_columns() shenanigans
|
|
||||||
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_7', {})
|
call VerifyScreenDump(buf, 'Test_smooth_long_scrolloff_7', {})
|
||||||
|
|
||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
|
@ -704,6 +704,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 */
|
||||||
|
/**/
|
||||||
|
708,
|
||||||
/**/
|
/**/
|
||||||
707,
|
707,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user