mirror of
https://github.com/neovim/neovim.git
synced 2025-10-09 03:16:31 +00:00
vim-patch:9.0.1279: display shows lines scrolled down erroneously (#22126)
Problem: Display shows lines scrolled down erroneously. (Yishai Lerner)
Solution: Do not change "wl_lnum" at index zero. (closes vim/vim#11938)
61fdbfa1e3
Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
@@ -296,7 +296,9 @@ static void changed_common(linenr_T lnum, colnr_T col, linenr_T lnume, linenr_T
|
||||
for (int i = 0; i < wp->w_lines_valid; i++) {
|
||||
if (wp->w_lines[i].wl_valid) {
|
||||
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;
|
||||
} else if (xtra != 0) {
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user