summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-09-20 13:17:57 +0100
committerBram Moolenaar <Bram@vim.org>2022-09-20 13:17:57 +0100
commitc14bfc31d907cbee6a3636f780561ad1787cdb9b (patch)
tree4fdf0e832dd4def2a38a061a4954ea8609a3a992
parentbdedd2bcce3a59028c7504a397ff77d901b1b12a (diff)
downloadvim-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.c2
-rw-r--r--src/testdir/dumps/Test_redrawstatus_in_autocmd_1.dump4
-rw-r--r--src/testdir/dumps/Test_redrawstatus_in_autocmd_2.dump8
-rw-r--r--src/testdir/test_cmdline.vim7
-rw-r--r--src/version.c2
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,