forked from aniani/vim
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:
@@ -611,7 +611,9 @@ changed_common(
|
|||||||
{
|
{
|
||||||
if (wp->w_lines[i].wl_lnum >= lnum)
|
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
|
// line included in change
|
||||||
wp->w_lines[i].wl_valid = FALSE;
|
wp->w_lines[i].wl_valid = FALSE;
|
||||||
|
10
src/testdir/dumps/Test_move_undo_1.dump
Normal file
10
src/testdir/dumps/Test_move_undo_1.dump
Normal 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|
|
10
src/testdir/dumps/Test_move_undo_2.dump
Normal file
10
src/testdir/dumps/Test_move_undo_2.dump
Normal 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|
|
@@ -1,5 +1,8 @@
|
|||||||
" Test the ":move" command.
|
" Test the ":move" command.
|
||||||
|
|
||||||
|
source check.vim
|
||||||
|
source screendump.vim
|
||||||
|
|
||||||
func Test_move()
|
func Test_move()
|
||||||
enew!
|
enew!
|
||||||
call append(0, ['line 1', 'line 2', 'line 3'])
|
call append(0, ['line 1', 'line 2', 'line 3'])
|
||||||
@@ -43,4 +46,25 @@ func Test_move()
|
|||||||
%bwipeout!
|
%bwipeout!
|
||||||
endfunc
|
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
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -695,6 +695,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 */
|
||||||
|
/**/
|
||||||
|
1279,
|
||||||
/**/
|
/**/
|
||||||
1278,
|
1278,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user