From: zeertzjq Date: Tue, 20 Sep 2022 12:17:57 +0000 (+0100) Subject: patch 9.0.0512: cannot redraw the status lines when editing a command X-Git-Tag: v9.0.0512 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c14bfc31d907cbee6a3636f780561ad1787cdb9b;p=vim patch 9.0.0512: cannot redraw the status lines when editing a command Problem: Cannot redraw the status lines when editing a command. Solution: Only postpone the redraw when messages have scrolled. (closes #11170) --- diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 3076d5344..8cdf601f8 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -8431,7 +8431,7 @@ ex_redrawstatus(exarg_T *eap UNUSED) status_redraw_all(); else status_redraw_curbuf(); - if (State & MODE_CMDLINE) + if (msg_scrolled) return; // redraw later RedrawingDisabled = 0; diff --git a/src/testdir/dumps/Test_redrawstatus_in_autocmd_1.dump b/src/testdir/dumps/Test_redrawstatus_in_autocmd_1.dump index 91e436444..50cf6007c 100644 --- a/src/testdir/dumps/Test_redrawstatus_in_autocmd_1.dump +++ b/src/testdir/dumps/Test_redrawstatus_in_autocmd_1.dump @@ -1,7 +1,7 @@ |~+0#4040ff13#ffffff0| @73 |~| @73 -|~| @73 -|o+0#0000000&|n|e| @71 +| +3#0000000&@73|: +|o+0&&|n|e| @71 |t|w|o| @71 |t|h|r|e@1| @69 |f|o|u|r| @70 diff --git a/src/testdir/dumps/Test_redrawstatus_in_autocmd_2.dump b/src/testdir/dumps/Test_redrawstatus_in_autocmd_2.dump new file mode 100644 index 000000000..eca2f9a55 --- /dev/null +++ b/src/testdir/dumps/Test_redrawstatus_in_autocmd_2.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +3#0000000&@67|:|f|o@1|b|a|r +|:+0&&|f|o@1|b|a|r> @67 diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 3014ac36a..f81cec930 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -214,15 +214,20 @@ func Test_redrawstatus_in_autocmd() CheckScreendump let lines =<< trim END - set cmdheight=2 + set laststatus=2 + set statusline=%=:%{getcmdline()} autocmd CmdlineChanged * if getcmdline() == 'foobar' | redrawstatus | endif END call writefile(lines, 'XTest_redrawstatus', 'D') let buf = RunVimInTerminal('-S XTest_redrawstatus', {'rows': 8}) + " :redrawstatus is postponed if messages have scrolled call term_sendkeys(buf, ":echo \"one\\ntwo\\nthree\\nfour\"\") call term_sendkeys(buf, ":foobar") call VerifyScreenDump(buf, 'Test_redrawstatus_in_autocmd_1', {}) + " it is not postponed if messages have not scrolled + call term_sendkeys(buf, "\:foobar") + call VerifyScreenDump(buf, 'Test_redrawstatus_in_autocmd_2', {}) " clean up call term_sendkeys(buf, "\") diff --git a/src/version.c b/src/version.c index c6f76acb8..55da620bc 100644 --- a/src/version.c +++ b/src/version.c @@ -699,6 +699,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 512, /**/ 511, /**/