To: vim_dev@googlegroups.com Subject: Patch 9.0.1542 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 9.0.1542 Problem: Line not fully displayed if it doesn't fit in the screen. Solution: Do not reset s_skipcol if not needed. (Luuk van Baal, closes #12376) Files: src/move.c, src/testdir/test_display.vim, src/testdir/dumps/Test_display_cursor_long_line.dump *** ../vim-9.0.1541/src/move.c 2023-05-09 16:00:59.958881540 +0100 --- src/move.c 2023-05-11 18:33:27.165576908 +0100 *************** *** 2772,2782 **** topline = loff.lnum; int want_height; ! int smooth_scroll = FALSE; ! if (curwin->w_p_sms && curwin->w_p_wrap) { // 'smoothscroll' and 'wrap' are set - smooth_scroll = TRUE; if (atend) { want_height = (curwin->w_height - used) / 2; --- 2772,2781 ---- topline = loff.lnum; int want_height; ! int do_sms = curwin->w_p_wrap && curwin->w_p_sms; ! if (do_sms) { // 'smoothscroll' and 'wrap' are set if (atend) { want_height = (curwin->w_height - used) / 2; *************** *** 2790,2796 **** { // If using smoothscroll, we can precisely scroll to the // exact point where the cursor is halfway down the screen. ! if (smooth_scroll) { topline_back_winheight(&loff, FALSE); if (loff.height == MAXCOL) --- 2789,2795 ---- { // If using smoothscroll, we can precisely scroll to the // exact point where the cursor is halfway down the screen. ! if (do_sms) { topline_back_winheight(&loff, FALSE); if (loff.height == MAXCOL) *************** *** 2892,2898 **** curwin->w_skipcol = skipcol; redraw_later(UPD_NOT_VALID); } ! else reset_skipcol(); } } --- 2891,2897 ---- curwin->w_skipcol = skipcol; redraw_later(UPD_NOT_VALID); } ! else if (do_sms) reset_skipcol(); } } *** ../vim-9.0.1541/src/testdir/test_display.vim 2023-04-30 19:15:09.285424145 +0100 --- src/testdir/test_display.vim 2023-05-11 18:33:27.165576908 +0100 *************** *** 489,492 **** --- 489,510 ---- call StopVimInTerminal(buf) endfunc + " Moving the cursor to a line that doesn't fit in the window should show + " correctly. + func Test_display_cursor_long_line() + CheckScreendump + + let lines =<< trim END + call setline(1, ['a', 'bbbbb '->repeat(100), 'c']) + norm $j + END + + call writefile(lines, 'XdispCursorLongline', 'D') + let buf = RunVimInTerminal('-S XdispCursorLongline', #{rows: 8}) + + call VerifyScreenDump(buf, 'Test_display_cursor_long_line', {}) + + call StopVimInTerminal(buf) + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-9.0.1541/src/testdir/dumps/Test_display_cursor_long_line.dump 2023-05-11 18:37:45.325592764 +0100 --- src/testdir/dumps/Test_display_cursor_long_line.dump 2023-05-11 18:33:27.165576908 +0100 *************** *** 0 **** --- 1,8 ---- + |<+0#4040ff13#ffffff0@2|b+0#0000000&@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| + |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@2 + @2| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| + |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@2 + @2| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| + |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@2 + @2| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4| |b@4> + @57|2|,|6|0@1| @8|5|0|%| *** ../vim-9.0.1541/src/version.c 2023-05-11 15:22:55.071745165 +0100 --- src/version.c 2023-05-11 18:36:20.065599004 +0100 *************** *** 697,698 **** --- 697,700 ---- { /* Add new patch number below this line */ + /**/ + 1542, /**/ -- How To Keep A Healthy Level Of Insanity: 16. Have your coworkers address you by your wrestling name, Rock Hard Kim. /// 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 ///