From: Foxe Chen Date: Fri, 13 Mar 2026 22:14:36 +0000 (+0000) Subject: patch 9.2.0161: intro message disappears on startup in some terminals X-Git-Tag: v9.2.0161^0 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ef3d79ebbe014effa2acd15b26b42086f6c0eebf;p=thirdparty%2Fvim.git patch 9.2.0161: intro message disappears on startup in some terminals Problem: intro message disappears on startup in some terminals (chdiza, after v9.2.0139) Solution: Only call set_shellsize() in handle_csi() if the reported width or height actually differs from the current Rows or Columns. (Foxe Chen) fixes: #19656 closes: #19660 Signed-off-by: Foxe Chen Signed-off-by: Christian Brabandt --- diff --git a/src/term.c b/src/term.c index a1bb6c1b97..a5fab44ea8 100644 --- a/src/term.c +++ b/src/term.c @@ -5791,7 +5791,10 @@ handle_csi( key_name[0] = (int)KS_EXTRA; key_name[1] = (int)KE_IGNORE; - set_shellsize(width, height, true); + // Only update if needed. Avoids intro message from disappearing on + // startup (due to initial event). + if (height != Rows || width != Columns) + set_shellsize(width, height, true); } #endif diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim index e5f31259e5..90cbc87df9 100644 --- a/src/testdir/test_termcodes.vim +++ b/src/testdir/test_termcodes.vim @@ -2991,6 +2991,16 @@ func Test_term_win_resize() call WaitForAssert({-> assert_equal(["50 100"], readfile("XTestWinResizeResult"))}) + " Test that screen is only resized if it actually changed in width or height. + call term_sendkeys(buf, "\:intro\") + call TermWait(buf) + + call term_sendkeys(buf, "\[48;50;100;0;0t") + call TermWait(buf) + + " call delete("tmp.dump") + " call term_dumpwrite(buf, "tmp.dump") + " SIGWINCH handler should be uninstalled call job_stop(term_getjob(buf), 28) call TermWait(buf) diff --git a/src/version.c b/src/version.c index c0f5c7488a..c215222c90 100644 --- a/src/version.c +++ b/src/version.c @@ -734,6 +734,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 161, /**/ 160, /**/