aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFamiu Haque <famiuhaque@protonmail.com>2022-02-08 20:28:52 +0600
committerbfredl <bjorn.linse@gmail.com>2022-04-05 16:50:07 +0200
commit463174b5d76d9a88fab02db144aaaac7fa19efd1 (patch)
treefa83cf6cfebe59d5a8e669d04f1288e86acbf1cf
parentb08cf73be959397b5715395f1465fb76a76a6a05 (diff)
downloadrneovim-463174b5d76d9a88fab02db144aaaac7fa19efd1.tar.gz
rneovim-463174b5d76d9a88fab02db144aaaac7fa19efd1.tar.bz2
rneovim-463174b5d76d9a88fab02db144aaaac7fa19efd1.zip
fix(ui): make window resize commands manage cmdheight
Previously, the window resize commands did not resize the value of `cmdheight` when they caused a change in the topframe height, leaving a gap between the end of topframe and the start of the command line, this commit fixes that by making window resize commands automatically change the value of cmdheight if the resize affects the height of topframe.
-rw-r--r--src/nvim/window.c10
-rw-r--r--test/functional/legacy/cmdline_spec.lua4
2 files changed, 11 insertions, 3 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c
index 9ac51bb108..cc21bf25b0 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -5412,11 +5412,17 @@ void win_setheight_win(int height, win_T *win)
// line, clear it.
if (full_screen && msg_scrolled == 0 && row < cmdline_row) {
grid_fill(&default_grid, row, cmdline_row, 0, Columns, ' ', ' ', 0);
+ if (msg_grid.chars) {
+ clear_cmdline = true;
+ }
}
cmdline_row = row;
+ p_ch = MAX(Rows - cmdline_row, 1);
+ curtab->tp_ch_used = p_ch;
msg_row = row;
msg_col = 0;
redraw_all_later(NOT_VALID);
+ showmode();
}
}
@@ -5452,7 +5458,9 @@ static void frame_setheight(frame_T *curfrp, int height)
if (curfrp->fr_parent == NULL) {
// topframe: can only change the command line
if (height > ROWS_AVAIL) {
- height = ROWS_AVAIL;
+ // If height is greater than the available space, try to create space for the frame by
+ // reducing 'cmdheight' if possible, while making sure `cmdheight` doesn't go below 1.
+ height = MIN(ROWS_AVAIL + (p_ch - 1), height);
}
if (height > 0) {
frame_new_height(curfrp, height, false, false);
diff --git a/test/functional/legacy/cmdline_spec.lua b/test/functional/legacy/cmdline_spec.lua
index 9ebe9aeb91..2868279a97 100644
--- a/test/functional/legacy/cmdline_spec.lua
+++ b/test/functional/legacy/cmdline_spec.lua
@@ -33,8 +33,8 @@ describe('cmdline', function()
~ |
~ |
~ |
- 6 |
- 7 |
+ |
+ |
|
]])
end)