mirror of
https://github.com/vim/vim.git
synced 2025-09-27 04:14:06 -04:00
patch 8.2.3764: cannot see any text when window was made zero lines
Problem: Cannot see any text when window was made zero lines or zero columns. Solution: Ensure there is at least one line and column. (fixes #9307)
This commit is contained in:
@@ -618,6 +618,11 @@ edit(
|
|||||||
c = hkmap(c); // Hebrew mode mapping
|
c = hkmap(c); // Hebrew mode mapping
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// If the window was made so small that nothing shows, make it at least
|
||||||
|
// one line and one column when typing.
|
||||||
|
if (KeyTyped && !KeyStuffed)
|
||||||
|
win_ensure_size();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Special handling of keys while the popup menu is visible or wanted
|
* Special handling of keys while the popup menu is visible or wanted
|
||||||
* and the cursor is still in the completed word. Only when there is
|
* and the cursor is still in the completed word. Only when there is
|
||||||
|
@@ -608,6 +608,11 @@ normal_cmd(
|
|||||||
old_mapped_len = 0; // do go to Insert mode
|
old_mapped_len = 0; // do go to Insert mode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the window was made so small that nothing shows, make it at least one
|
||||||
|
// line and one column when typing a command.
|
||||||
|
if (KeyTyped && !KeyStuffed)
|
||||||
|
win_ensure_size();
|
||||||
|
|
||||||
#ifdef FEAT_CMDL_INFO
|
#ifdef FEAT_CMDL_INFO
|
||||||
need_flushbuf = add_to_showcmd(c);
|
need_flushbuf = add_to_showcmd(c);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -55,6 +55,7 @@ void shell_new_columns(void);
|
|||||||
void win_size_save(garray_T *gap);
|
void win_size_save(garray_T *gap);
|
||||||
void win_size_restore(garray_T *gap);
|
void win_size_restore(garray_T *gap);
|
||||||
int win_comp_pos(void);
|
int win_comp_pos(void);
|
||||||
|
void win_ensure_size(void);
|
||||||
void win_setheight(int height);
|
void win_setheight(int height);
|
||||||
void win_setheight_win(int height, win_T *win);
|
void win_setheight_win(int height, win_T *win);
|
||||||
void win_setwidth(int width);
|
void win_setwidth(int width);
|
||||||
|
@@ -1358,4 +1358,38 @@ func Test_close_dest_window()
|
|||||||
%bw!
|
%bw!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_window_minimal_size()
|
||||||
|
set winminwidth=0 winminheight=0
|
||||||
|
|
||||||
|
" check size is fixed vertically
|
||||||
|
new
|
||||||
|
call win_execute(win_getid(2), 'wincmd _')
|
||||||
|
call assert_equal(0, winheight(0))
|
||||||
|
call feedkeys('0', 'tx')
|
||||||
|
call assert_equal(1, winheight(0))
|
||||||
|
bwipe!
|
||||||
|
|
||||||
|
" check size is fixed horizontally
|
||||||
|
vert new
|
||||||
|
call win_execute(win_getid(2), 'wincmd |')
|
||||||
|
call assert_equal(0, winwidth(0))
|
||||||
|
call feedkeys('0', 'tx')
|
||||||
|
call assert_equal(1, winwidth(0))
|
||||||
|
bwipe!
|
||||||
|
|
||||||
|
if has('timers')
|
||||||
|
" check size is fixed in Insert mode
|
||||||
|
new
|
||||||
|
call timer_start(100, {_ -> win_execute(win_getid(2), 'wincmd _')})
|
||||||
|
call timer_start(200, {_ -> assert_equal(0, winheight(0))})
|
||||||
|
call timer_start(300, {_ -> feedkeys(" \<Esc>", 't!')})
|
||||||
|
call feedkeys('a', 'tx!')
|
||||||
|
call assert_equal(1, winheight(0))
|
||||||
|
bwipe!
|
||||||
|
endif
|
||||||
|
|
||||||
|
set winminwidth& winminheight&
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -753,6 +753,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 */
|
||||||
|
/**/
|
||||||
|
3764,
|
||||||
/**/
|
/**/
|
||||||
3763,
|
3763,
|
||||||
/**/
|
/**/
|
||||||
|
12
src/window.c
12
src/window.c
@@ -5517,6 +5517,18 @@ frame_comp_pos(frame_T *topfrp, int *row, int *col)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make the current window show at least one line and one column.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
win_ensure_size()
|
||||||
|
{
|
||||||
|
if (curwin->w_height == 0)
|
||||||
|
win_setheight(1);
|
||||||
|
if (curwin->w_width == 0)
|
||||||
|
win_setwidth(1);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set current window height and take care of repositioning other windows to
|
* Set current window height and take care of repositioning other windows to
|
||||||
* fit around it.
|
* fit around it.
|
||||||
|
Reference in New Issue
Block a user