patch 9.0.1279: display shows lines scrolled down erroneously

Problem:    Display shows lines scrolled down erroneously. (Yishai Lerner)
Solution:   Do not change "wl_lnum" at index zero. (closes #11938)
This commit is contained in:
Bram Moolenaar 2023-02-04 13:57:55 +00:00
parent 4ad8ae8465
commit 61fdbfa1e3
5 changed files with 49 additions and 1 deletions

View File

@ -611,7 +611,9 @@ changed_common(
{
if (wp->w_lines[i].wl_lnum >= lnum)
{
if (wp->w_lines[i].wl_lnum < lnume)
// Do not change wl_lnum at index zero, it is used to
// compare with w_topline. Invalidate it instead.
if (wp->w_lines[i].wl_lnum < lnume || i == 0)
{
// line included in change
wp->w_lines[i].wl_valid = FALSE;

View File

@ -0,0 +1,10 @@
|S+0&#ffffff0|e|c|o|n|d| @53
>F|i|r|s|t| @54
|T|h|i|r|d| @54
|F|o|u|r|t|h| @53
|~+0#4040ff13&| @58
|~| @58
|~| @58
|~| @58
|~| @58
|:+0#0000000&|m|o|v|e| |+|1| @33|2|,|1| @10|A|l@1|

View File

@ -0,0 +1,10 @@
>F+0&#ffffff0|i|r|s|t| @54
|S|e|c|o|n|d| @53
|T|h|i|r|d| @54
|F|o|u|r|t|h| @53
|~+0#4040ff13&| @58
|~| @58
|~| @58
|~| @58
|~| @58
| +0#0000000&@41|1|,|1| @10|A|l@1|

View File

@ -1,5 +1,8 @@
" Test the ":move" command.
source check.vim
source screendump.vim
func Test_move()
enew!
call append(0, ['line 1', 'line 2', 'line 3'])
@ -43,4 +46,25 @@ func Test_move()
%bwipeout!
endfunc
func Test_move_undo()
CheckRunVimInTerminal
let lines =<< trim END
call setline(1, ['First', 'Second', 'Third', 'Fourth'])
END
call writefile(lines, 'Xtest_move_undo.vim', 'D')
let buf = RunVimInTerminal('-S Xtest_move_undo.vim', #{rows: 10, cols: 60, statusoff: 2})
call term_sendkeys(buf, "gg:move +1\<CR>")
call VerifyScreenDump(buf, 'Test_move_undo_1', {})
" here the display would show the last few lines scrolled down
call term_sendkeys(buf, "u")
call term_sendkeys(buf, ":\<Esc>")
call VerifyScreenDump(buf, 'Test_move_undo_2', {})
call StopVimInTerminal(buf)
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@ -695,6 +695,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1279,
/**/
1278,
/**/