To: vim_dev@googlegroups.com Subject: Patch 9.0.0555 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 9.0.0555 Problem: Scrolling with 'nosplitscroll' in callback changing curwin. Solution: Invalidate w_cline_row in the right place. (Luuk van Baal, closes #11185) Files: src/window.c, src/testdir/test_window_cmd.vim, src/testdir/dumps/Test_nosplitscroll_callback_1.dump, src/testdir/dumps/Test_nosplitscroll_callback_2.dump, src/testdir/dumps/Test_nosplitscroll_callback_3.dump, src/testdir/dumps/Test_nosplitscroll_callback_4.dump *** ../vim-9.0.0554/src/window.c 2022-09-22 18:08:34.339338137 +0100 --- src/window.c 2022-09-23 12:52:16.591014553 +0100 *************** *** 6360,6366 **** win_T *wp; linenr_T lnum; ! skip_update_topline = TRUE; // avoid scrolling in curs_rows() FOR_ALL_WINDOWS(wp) { // Skip when window height has not changed. --- 6360,6366 ---- win_T *wp; linenr_T lnum; ! skip_update_topline = TRUE; // avoid scrolling in curs_columns() FOR_ALL_WINDOWS(wp) { // Skip when window height has not changed. *************** *** 6378,6383 **** --- 6378,6385 ---- scroll_to_fraction(wp, wp->w_prev_height); wp->w_cursor.lnum = lnum; } + else if (wp == curwin) + wp->w_valid &= ~VALID_CROW; invalidate_botline_win(wp); validate_botline_win(wp); } *** ../vim-9.0.0554/src/testdir/test_window_cmd.vim 2022-09-19 16:45:26.202239861 +0100 --- src/testdir/test_window_cmd.vim 2022-09-23 12:52:16.587014373 +0100 *************** *** 1,6 **** --- 1,7 ---- " Tests for window cmd (:wincmd, :split, :vsplit, :resize and etc...) source check.vim + source screendump.vim func Test_window_cmd_ls0_with_split() set ls=0 *************** *** 1817,1820 **** --- 1818,1851 ---- set splitscroll& endfunc + function Test_nosplitscroll_callback() + CheckScreendump + let lines =<< trim END + set nosplitscroll + call setline(1, range(&lines)) + function WincmdCb(a, b) + split | wincmd p + endfunction + function TermCb(a, b) + close | split + endfunction + nnoremap t call popup_create(term_start(&shell, { 'hidden': 1, 'exit_cb': 'TermCb' }), {}) + nnoremap j call job_start([&shell, &shellcmdflag, "echo"], { 'exit_cb': 'WincmdCb' }) + END + call writefile(lines, 'XTestNosplitscrollCallback', 'D') + let buf = RunVimInTerminal('-S XTestNosplitscrollCallback', #{rows: 8}) + + call term_sendkeys(buf, "j") + call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_1', {}) + + call term_sendkeys(buf, ":quit\Htexit\") + call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_2', {}) + + call term_sendkeys(buf, ":set sb\:quit\Gj") + call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_3', {}) + + call term_sendkeys(buf, ":quit\Gtexit\") + call VerifyScreenDump(buf, 'Test_nosplitscroll_callback_4', {}) + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-9.0.0554/src/testdir/dumps/Test_nosplitscroll_callback_1.dump 2022-09-23 12:56:40.285422177 +0100 --- src/testdir/dumps/Test_nosplitscroll_callback_1.dump 2022-09-23 12:52:16.583014193 +0100 *************** *** 0 **** --- 1,8 ---- + |0+0&#ffffff0| @73 + |1| @73 + |2| @73 + |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p + >4+0&&| @73 + |5| @73 + |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|5|,|1| @11|6@1|% + | +0&&@74 *** ../vim-9.0.0554/src/testdir/dumps/Test_nosplitscroll_callback_2.dump 2022-09-23 12:56:40.289422306 +0100 --- src/testdir/dumps/Test_nosplitscroll_callback_2.dump 2022-09-23 12:52:16.583014193 +0100 *************** *** 0 **** --- 1,8 ---- + >0+0&#ffffff0| @73 + |1| @73 + |2| @73 + |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p + |4+0&&| @73 + |5| @73 + |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|6@1|% + | +0&&@74 *** ../vim-9.0.0554/src/testdir/dumps/Test_nosplitscroll_callback_3.dump 2022-09-23 12:56:40.293422435 +0100 --- src/testdir/dumps/Test_nosplitscroll_callback_3.dump 2022-09-23 12:52:16.583014193 +0100 *************** *** 0 **** --- 1,8 ---- + >1+0&#ffffff0| @73 + |2| @73 + |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1| @11|1|6|% + |4+0&&| @73 + |5| @73 + |6| @73 + |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|6|,|1| @11|8|0|% + | +0&&@74 *** ../vim-9.0.0554/src/testdir/dumps/Test_nosplitscroll_callback_4.dump 2022-09-23 12:56:40.297422563 +0100 --- src/testdir/dumps/Test_nosplitscroll_callback_4.dump 2022-09-23 12:52:16.583014193 +0100 *************** *** 0 **** --- 1,8 ---- + |1+0&#ffffff0| @73 + |2| @73 + |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|8|,|1| @11|1|6|% + |4+0&&| @73 + >5| @73 + |6| @73 + |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|6|,|1| @11|8|0|% + | +0&&@74 *** ../vim-9.0.0554/src/version.c 2022-09-23 12:44:19.795794418 +0100 --- src/version.c 2022-09-23 12:54:18.494095233 +0100 *************** *** 701,702 **** --- 701,704 ---- { /* Add new patch number below this line */ + /**/ + 555, /**/ -- hundred-and-one symptoms of being an internet addict: 139. You down your lunch in five minutes, at your desk, so you can spend the rest of the hour surfing the Net. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///