To: vim_dev@googlegroups.com Subject: Patch 8.2.0131 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0131 Problem: Command line is not cleared when switching tabs and the command line height differs. Solution: Set the "clear_cmdline" flag when needed. (Naruhiko Nishino, closes #5495) Files: src/testdir/dumps/Test_cmdlineclear_tabenter.dump, src/testdir/test_cmdline.vim, src/window.c *** ../vim-8.2.0130/src/testdir/dumps/Test_cmdlineclear_tabenter.dump 2020-01-19 15:44:45.066605820 +0100 --- src/testdir/dumps/Test_cmdlineclear_tabenter.dump 2020-01-19 15:39:25.563922621 +0100 *************** *** 0 **** --- 1,10 ---- + | +8#0000001#e0e0e08|+| |[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@49|X+8#0000001#e0e0e08 + > +0#0000000#ffffff0@74 + |~+0#4040ff13&| @73 + |~| @73 + |~| @73 + |~| @73 + |~| @73 + | +0#0000000&@74 + @75 + @57|0|,|0|-|1| @8|A|l@1| *** ../vim-8.2.0130/src/testdir/test_cmdline.vim 2019-12-28 14:06:46.151470752 +0100 --- src/testdir/test_cmdline.vim 2020-01-19 15:43:28.762919691 +0100 *************** *** 905,908 **** --- 905,926 ---- delfunc CmdWinType endfunc + func Test_cmdlineclear_tabenter() + CheckScreendump + + let lines =<< trim [SCRIPT] + call setline(1, range(30)) + [SCRIPT] + + call writefile(lines, 'XtestCmdlineClearTabenter') + let buf = RunVimInTerminal('-S XtestCmdlineClearTabenter', #{rows: 10}) + call term_wait(buf, 50) + " in one tab make the command line higher with CTRL-W - + call term_sendkeys(buf, ":tabnew\\-\-gtgt") + call VerifyScreenDump(buf, 'Test_cmdlineclear_tabenter', {}) + + call StopVimInTerminal(buf) + call delete('XtestCmdlineClearTabenter') + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.0130/src/window.c 2019-12-14 16:18:11.578458401 +0100 --- src/window.c 2020-01-19 15:44:28.514673865 +0100 *************** *** 4093,4098 **** --- 4093,4099 ---- int trigger_enter_autocmds, int trigger_leave_autocmds) { + int row; int old_off = tp->tp_firstwin->w_winrow; win_T *next_prevwin = tp->tp_prevwin; *************** *** 4109,4115 **** prevwin = next_prevwin; last_status(FALSE); // status line may appear or disappear ! (void)win_comp_pos(); // recompute w_winrow for all windows #ifdef FEAT_DIFF diff_need_scrollbind = TRUE; #endif --- 4110,4116 ---- prevwin = next_prevwin; last_status(FALSE); // status line may appear or disappear ! row = win_comp_pos(); // recompute w_winrow for all windows #ifdef FEAT_DIFF diff_need_scrollbind = TRUE; #endif *************** *** 4121,4126 **** --- 4122,4134 ---- if (p_ch != curtab->tp_ch_used) clear_cmdline = TRUE; p_ch = curtab->tp_ch_used; + + // When cmdheight is changed in a tab page with '-', cmdline_row is + // changed but p_ch and tp_ch_used are not changed. Thus we also need to + // check cmdline_row. + if ((row < cmdline_row) && (cmdline_row <= Rows - p_ch)) + clear_cmdline = TRUE; + if (curtab->tp_old_Rows != Rows || (old_off != firstwin->w_winrow #ifdef FEAT_GUI_TABLINE && !gui_use_tabline() *** ../vim-8.2.0130/src/version.c 2020-01-19 13:57:51.465877807 +0100 --- src/version.c 2020-01-19 15:44:52.698574450 +0100 *************** *** 744,745 **** --- 744,747 ---- { /* Add new patch number below this line */ + /**/ + 131, /**/ -- ARTHUR: Old woman! DENNIS: Man! ARTHUR: Man. I'm sorry. Old man, What knight live in that castle over there? DENNIS: I'm thirty-seven. "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///