{
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;
" Test the ":move" command.
+source check.vim
+source screendump.vim
+
func Test_move()
enew!
call append(0, ['line 1', 'line 2', 'line 3'])
%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