Mercurial > vim
comparison src/testdir/test_delete.vim @ 33844:58c9f11eae5b v9.0.2134
patch 9.0.2134: ml_get error when scrolling
Commit: https://github.com/vim/vim/commit/c4ffeddfe5bd1824650e9b911ed9245bf56c69e3
Author: Christian Brabandt <cb@256bit.org>
Date: Mon Nov 27 23:25:03 2023 +0100
patch 9.0.2134: ml_get error when scrolling
Problem: ml_get error when scrolling after delete
Solution: mark topline to be validated in main_loop
if it is larger than current buffers line
count
reset_lnums() is called after e.g. TextChanged autocommands and it may
accidentally cause curwin->w_topline to become invalid, e.g. if the
autocommand has deleted some lines.
So verify that curwin->w_topline points to a valid line and if not, mark
the window to have w_topline recalculated in main_loop() in
update_topline() after reset_lnums() returns.
fixes: #13568
fixes: #13578
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 27 Nov 2023 23:30:04 +0100 |
parents | 98f5a0618a77 |
children |
comparison
equal
deleted
inserted
replaced
33843:dc37b35ded98 | 33844:58c9f11eae5b |
---|---|
1 " Test for delete(). | 1 " Test for delete(). |
2 | 2 |
3 source check.vim | 3 source check.vim |
4 source term_util.vim | |
5 source screendump.vim | |
4 | 6 |
5 func Test_file_delete() | 7 func Test_file_delete() |
6 split Xfdelfile | 8 split Xfdelfile |
7 call setline(1, ['a', 'b']) | 9 call setline(1, ['a', 'b']) |
8 wq | 10 wq |
105 func Test_delete_errors() | 107 func Test_delete_errors() |
106 call assert_fails('call delete('''')', 'E474:') | 108 call assert_fails('call delete('''')', 'E474:') |
107 call assert_fails('call delete(''foo'', 0)', 'E15:') | 109 call assert_fails('call delete(''foo'', 0)', 'E15:') |
108 endfunc | 110 endfunc |
109 | 111 |
112 " This should no longer trigger ml_get errors | |
113 func Test_delete_ml_get_errors() | |
114 CheckRunVimInTerminal | |
115 let lines =<< trim END | |
116 set noshowcmd noruler scrolloff=0 | |
117 source samples/matchparen.vim | |
118 END | |
119 call writefile(lines, 'XDelete_ml_get_error', 'D') | |
120 let buf = RunVimInTerminal('-S XDelete_ml_get_error samples/box.txt', #{rows: 10, wait_for_ruler: 0}) | |
121 call TermWait(buf) | |
122 call term_sendkeys(buf, "249GV\<C-End>d") | |
123 call TermWait(buf) | |
124 " The following used to trigger ml_get errors | |
125 call term_sendkeys(buf, "\<PageUp>") | |
126 call TermWait(buf) | |
127 call term_sendkeys(buf, ":mess\<cr>") | |
128 call VerifyScreenDump(buf, 'Test_delete_ml_get_errors_1', {}) | |
129 call term_sendkeys(buf, ":q!\<cr>") | |
130 call StopVimInTerminal(buf) | |
131 endfunc | |
132 | |
110 " vim: shiftwidth=2 sts=2 expandtab | 133 " vim: shiftwidth=2 sts=2 expandtab |