# HG changeset patch # User Bram Moolenaar # Date 1662047103 -7200 # Node ID 7e787f94852b6de78461ea755be4c158527ffabf # Parent 139557ff6c5bcafd81c776f4dd7bdaf1a38301cb patch 9.0.0351: message window may obscure the command line Commit: https://github.com/vim/vim/commit/b5b4f61cf192324379b6a8c4f7ed83a13f0e3bc6 Author: Bram Moolenaar Date: Thu Sep 1 16:43:17 2022 +0100 patch 9.0.0351: message window may obscure the command line Problem: Message window may obscure the command line. Solution: Reduce the maximum height of the message window. diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -6729,7 +6729,8 @@ ex_execute(exarg_T *eap) ga_init2(&ga, 1, 80); #ifdef HAS_MESSAGE_WINDOW - in_echowindow = (eap->cmdidx == CMD_echowindow); + if (eap->cmdidx == CMD_echowindow) + start_echowindow(); #endif if (eap->skip) @@ -6833,17 +6834,7 @@ ex_execute(exarg_T *eap) --emsg_skip; #ifdef HAS_MESSAGE_WINDOW if (eap->cmdidx == CMD_echowindow) - { - // show the message window now - ex_redraw(eap); - - // do not overwrite messages - // TODO: only for message window - msg_didout = TRUE; - if (msg_col == 0) - msg_col = 1; - in_echowindow = FALSE; - } + end_echowindow(); #endif set_nextcmd(eap, arg); } diff --git a/src/popupwin.c b/src/popupwin.c --- a/src/popupwin.c +++ b/src/popupwin.c @@ -1356,6 +1356,8 @@ popup_adjust_position(win_T *wp) if (wp->w_maxheight > 0) maxheight = wp->w_maxheight; + else if (wp->w_popup_pos == POPPOS_BOTTOM) + maxheight = cmdline_row - 1; // start at the desired first line if (wp->w_firstline > 0) @@ -4479,6 +4481,7 @@ popup_get_message_win(void) message_win->w_popup_pos = POPPOS_BOTTOM; message_win->w_wantcol = 1; message_win->w_minwidth = 9999; + message_win->w_firstline = -1; // no padding, border at the top for (i = 0; i < 4; ++i) diff --git a/src/testdir/dumps/Test_echowindow_4.dump b/src/testdir/dumps/Test_echowindow_4.dump new file mode 100644 --- /dev/null +++ b/src/testdir/dumps/Test_echowindow_4.dump @@ -0,0 +1,8 @@ +>═+0#e000002#ffffff0@74 +|l|i|n|e| |1|4| @67 +|l|i|n|e| |1|5| @67 +|l|i|n|e| |1|6| @67 +|l|i|n|e| |1|7| @67 +|l|i|n|e| |1|8| @67 +|l|i|n|e| |1|9| @67 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim --- a/src/testdir/test_messages.vim +++ b/src/testdir/test_messages.vim @@ -396,6 +396,11 @@ func Test_echowindow() echowindow a:arg endfunc echowindow 'first line' + func ManyMessages() + for n in range(20) + echowindow 'line' n + endfor + endfunc END call writefile(lines, 'XtestEchowindow') let buf = RunVimInTerminal('-S XtestEchowindow', #{rows: 8}) @@ -407,6 +412,9 @@ func Test_echowindow() call term_sendkeys(buf, ":call popup_clear()\") call VerifyScreenDump(buf, 'Test_echowindow_3', {}) + call term_sendkeys(buf, ":call ManyMessages()\") + call VerifyScreenDump(buf, 'Test_echowindow_4', {}) + " clean up call StopVimInTerminal(buf) call delete('XtestEchowindow') diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -708,6 +708,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 351, +/**/ 350, /**/ 349,