mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge #21580 cmdline issues with cmdheight=0
This commit is contained in:
commit
5e9508c702
@ -3843,7 +3843,7 @@ void compute_cmdrow(void)
|
|||||||
cmdline_row = wp->w_winrow + wp->w_height
|
cmdline_row = wp->w_winrow + wp->w_height
|
||||||
+ wp->w_hsep_height + wp->w_status_height + global_stl_height();
|
+ wp->w_hsep_height + wp->w_status_height + global_stl_height();
|
||||||
}
|
}
|
||||||
if (cmdline_row == Rows) {
|
if (cmdline_row == Rows && p_ch > 0) {
|
||||||
cmdline_row--;
|
cmdline_row--;
|
||||||
}
|
}
|
||||||
lines_left = cmdline_row;
|
lines_left = cmdline_row;
|
||||||
|
@ -2256,6 +2256,8 @@ static char *set_num_option(int opt_idx, char_u *varp, long value, char *errbuf,
|
|||||||
int minval = 0;
|
int minval = 0;
|
||||||
if (value < minval) {
|
if (value < minval) {
|
||||||
errmsg = e_positive;
|
errmsg = e_positive;
|
||||||
|
} else {
|
||||||
|
p_ch_was_zero = value == 0;
|
||||||
}
|
}
|
||||||
} else if (pp == &p_tm) {
|
} else if (pp == &p_tm) {
|
||||||
if (value < 0) {
|
if (value < 0) {
|
||||||
|
@ -241,7 +241,7 @@ void ui_refresh(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ext_widgets[kUIMessages]) {
|
if (ext_widgets[kUIMessages]) {
|
||||||
p_ch = 0;
|
set_option_value("cmdheight", 0L, NULL, 0);
|
||||||
command_height();
|
command_height();
|
||||||
}
|
}
|
||||||
ui_mode_info_set();
|
ui_mode_info_set();
|
||||||
|
@ -5765,8 +5765,8 @@ static void frame_setheight(frame_T *curfrp, int height)
|
|||||||
if (height > ROWS_AVAIL) {
|
if (height > ROWS_AVAIL) {
|
||||||
// If height is greater than the available space, try to create space for
|
// If height is greater than the available space, try to create space for
|
||||||
// the frame by reducing 'cmdheight' if possible, while making sure
|
// the frame by reducing 'cmdheight' if possible, while making sure
|
||||||
// `cmdheight` doesn't go below 1.
|
// `cmdheight` doesn't go below 1 if it wasn't set to 0 explicitly.
|
||||||
height = (int)MIN((p_ch > 0 ? ROWS_AVAIL + (p_ch - 1) : ROWS_AVAIL), height);
|
height = (int)MIN(ROWS_AVAIL + p_ch - !p_ch_was_zero, height);
|
||||||
}
|
}
|
||||||
if (height > 0) {
|
if (height > 0) {
|
||||||
frame_new_height(curfrp, height, false, false);
|
frame_new_height(curfrp, height, false, false);
|
||||||
@ -6097,8 +6097,6 @@ void win_setminwidth(void)
|
|||||||
/// Status line of dragwin is dragged "offset" lines down (negative is up).
|
/// Status line of dragwin is dragged "offset" lines down (negative is up).
|
||||||
void win_drag_status_line(win_T *dragwin, int offset)
|
void win_drag_status_line(win_T *dragwin, int offset)
|
||||||
{
|
{
|
||||||
static bool p_ch_was_zero = false;
|
|
||||||
|
|
||||||
// If the user explicitly set 'cmdheight' to zero, then allow for dragging
|
// If the user explicitly set 'cmdheight' to zero, then allow for dragging
|
||||||
// the status line making it zero again.
|
// the status line making it zero again.
|
||||||
if (p_ch == 0) {
|
if (p_ch == 0) {
|
||||||
|
@ -35,6 +35,8 @@
|
|||||||
#define MIN_COLUMNS 12 // minimal columns for screen
|
#define MIN_COLUMNS 12 // minimal columns for screen
|
||||||
#define MIN_LINES 2 // minimal lines for screen
|
#define MIN_LINES 2 // minimal lines for screen
|
||||||
|
|
||||||
|
// Set to true if 'cmdheight' was explicitly set to 0.
|
||||||
|
EXTERN bool p_ch_was_zero INIT(= false);
|
||||||
#ifdef INCLUDE_GENERATED_DECLARATIONS
|
#ifdef INCLUDE_GENERATED_DECLARATIONS
|
||||||
# include "window.h.generated.h"
|
# include "window.h.generated.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -1364,4 +1364,40 @@ describe('cmdheight=0', function()
|
|||||||
]])
|
]])
|
||||||
assert_alive()
|
assert_alive()
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('can only be resized to 0 if set explicitly', function()
|
||||||
|
command('set laststatus=2')
|
||||||
|
command('resize +1')
|
||||||
|
screen:expect([[
|
||||||
|
^ |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{2:[No Name] }|
|
||||||
|
|
|
||||||
|
]])
|
||||||
|
command('set cmdheight=0')
|
||||||
|
command('resize -1')
|
||||||
|
command('resize +1')
|
||||||
|
screen:expect([[
|
||||||
|
^ |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{2:[No Name] }|
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
|
||||||
|
it("clears cmdline area when resized with external messages", function()
|
||||||
|
clear()
|
||||||
|
screen = new_screen({rgb=true, ext_messages=true})
|
||||||
|
command('set laststatus=2 cmdheight=0')
|
||||||
|
command('resize -1')
|
||||||
|
screen:expect([[
|
||||||
|
^ |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{3:[No Name] }|
|
||||||
|
|
|
||||||
|
]])
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user