mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 8.2.0131: command line is not cleared when switching tabs
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)
This commit is contained in:
10
src/testdir/dumps/Test_cmdlineclear_tabenter.dump
Normal file
10
src/testdir/dumps/Test_cmdlineclear_tabenter.dump
Normal file
@@ -0,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|
|
@@ -905,4 +905,22 @@ func Test_cmdwin_cedit()
|
|||||||
delfunc CmdWinType
|
delfunc CmdWinType
|
||||||
endfunc
|
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\<cr>\<C-w>-\<C-w>-gtgt")
|
||||||
|
call VerifyScreenDump(buf, 'Test_cmdlineclear_tabenter', {})
|
||||||
|
|
||||||
|
call StopVimInTerminal(buf)
|
||||||
|
call delete('XtestCmdlineClearTabenter')
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -742,6 +742,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
131,
|
||||||
/**/
|
/**/
|
||||||
130,
|
130,
|
||||||
/**/
|
/**/
|
||||||
|
10
src/window.c
10
src/window.c
@@ -4093,6 +4093,7 @@ enter_tabpage(
|
|||||||
int trigger_enter_autocmds,
|
int trigger_enter_autocmds,
|
||||||
int trigger_leave_autocmds)
|
int trigger_leave_autocmds)
|
||||||
{
|
{
|
||||||
|
int row;
|
||||||
int old_off = tp->tp_firstwin->w_winrow;
|
int old_off = tp->tp_firstwin->w_winrow;
|
||||||
win_T *next_prevwin = tp->tp_prevwin;
|
win_T *next_prevwin = tp->tp_prevwin;
|
||||||
|
|
||||||
@@ -4109,7 +4110,7 @@ enter_tabpage(
|
|||||||
prevwin = next_prevwin;
|
prevwin = next_prevwin;
|
||||||
|
|
||||||
last_status(FALSE); // status line may appear or disappear
|
last_status(FALSE); // status line may appear or disappear
|
||||||
(void)win_comp_pos(); // recompute w_winrow for all windows
|
row = win_comp_pos(); // recompute w_winrow for all windows
|
||||||
#ifdef FEAT_DIFF
|
#ifdef FEAT_DIFF
|
||||||
diff_need_scrollbind = TRUE;
|
diff_need_scrollbind = TRUE;
|
||||||
#endif
|
#endif
|
||||||
@@ -4121,6 +4122,13 @@ enter_tabpage(
|
|||||||
if (p_ch != curtab->tp_ch_used)
|
if (p_ch != curtab->tp_ch_used)
|
||||||
clear_cmdline = TRUE;
|
clear_cmdline = TRUE;
|
||||||
p_ch = curtab->tp_ch_used;
|
p_ch = curtab->tp_ch_used;
|
||||||
|
|
||||||
|
// When cmdheight is changed in a tab page with '<C-w>-', 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
|
if (curtab->tp_old_Rows != Rows || (old_off != firstwin->w_winrow
|
||||||
#ifdef FEAT_GUI_TABLINE
|
#ifdef FEAT_GUI_TABLINE
|
||||||
&& !gui_use_tabline()
|
&& !gui_use_tabline()
|
||||||
|
Reference in New Issue
Block a user