Mercurial > vim
changeset 30353:7cd4655d7bf1 v9.0.0512
patch 9.0.0512: cannot redraw the status lines when editing a command
Commit: https://github.com/vim/vim/commit/c14bfc31d907cbee6a3636f780561ad1787cdb9b
Author: zeertzjq <zeertzjq@outlook.com>
Date: Tue Sep 20 13:17:57 2022 +0100
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 20 Sep 2022 14:30:12 +0200 |
parents | dc0d8e673afa |
children | 7d342e8f916d |
files | src/ex_docmd.c src/testdir/dumps/Test_redrawstatus_in_autocmd_1.dump src/testdir/dumps/Test_redrawstatus_in_autocmd_2.dump src/testdir/test_cmdline.vim src/version.c |
diffstat | 5 files changed, 19 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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
new file mode 100644 --- /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
--- 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>")