diff options
-rw-r--r-- | src/ex_docmd.c | 2 | ||||
-rw-r--r-- | src/testdir/dumps/Test_redrawstatus_in_autocmd_1.dump | 4 | ||||
-rw-r--r-- | src/testdir/dumps/Test_redrawstatus_in_autocmd_2.dump | 8 | ||||
-rw-r--r-- | src/testdir/test_cmdline.vim | 7 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 19 insertions, 4 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 3076d5344b..8cdf601f86 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 91e436444c..50cf6007c0 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 0000000000..eca2f9a55c --- /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 3014ac36a5..f81cec930c 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\"\<CR>") 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, "\<Esc>:foobar") + call VerifyScreenDump(buf, 'Test_redrawstatus_in_autocmd_2', {}) " clean up call term_sendkeys(buf, "\<CR>") diff --git a/src/version.c b/src/version.c index c6f76acb83..55da620bc0 100644 --- a/src/version.c +++ b/src/version.c @@ -700,6 +700,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 512, +/**/ 511, /**/ 510, |