diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-09-20 13:17:57 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-09-20 13:17:57 +0100 |
commit | c14bfc31d907cbee6a3636f780561ad1787cdb9b (patch) | |
tree | 4fdf0e832dd4def2a38a061a4954ea8609a3a992 | |
parent | bdedd2bcce3a59028c7504a397ff77d901b1b12a (diff) | |
download | vim-git-c14bfc31d907cbee6a3636f780561ad1787cdb9b.tar.gz |
patch 9.0.0512: cannot redraw the status lines when editing a commandv9.0.0512
Problem: Cannot redraw the status lines when editing a command.
Solution: Only postpone the redraw when messages have scrolled.
(closes #11170)
-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 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\"\<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 c6f76acb8..55da620bc 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, |