Mercurial > vim
changeset 30027:7e787f94852b v9.0.0351
patch 9.0.0351: message window may obscure the command line
Commit: https://github.com/vim/vim/commit/b5b4f61cf192324379b6a8c4f7ed83a13f0e3bc6
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 01 Sep 2022 17:45:03 +0200 |
parents | 139557ff6c5b |
children | 2ee12f894bb0 |
files | src/eval.c src/popupwin.c src/testdir/dumps/Test_echowindow_4.dump src/testdir/test_messages.vim src/version.c |
diffstat | 5 files changed, 24 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- 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); }
--- 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)
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|
--- 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()\<CR>") call VerifyScreenDump(buf, 'Test_echowindow_3', {}) + call term_sendkeys(buf, ":call ManyMessages()\<CR>") + call VerifyScreenDump(buf, 'Test_echowindow_4', {}) + " clean up call StopVimInTerminal(buf) call delete('XtestEchowindow')