summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2021-12-31 12:19:22 +0000
committerBram Moolenaar <Bram@vim.org>2021-12-31 12:19:22 +0000
commit1fa3de1ce806ba18ebcc00c6d9a0678a84735463 (patch)
tree564e1bffe8e1b78c824b0935d6059a21765cb5f2 /src
parent04fb916684829f6aa12f33f14d0d0023b458f200 (diff)
patch 8.2.3952: first line not redrawn when adding lines to an empty bufferv8.2.3952
Problem: First line not redrawn when adding lines to an empty buffer. Solution: Adjust the argument to appended_lines(). (closes #9439, closes #9438)
Diffstat (limited to 'src')
-rw-r--r--src/ex_cmds.c6
-rw-r--r--src/testdir/test_excmd.vim44
-rw-r--r--src/version.c2
3 files changed, 51 insertions, 1 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 8595e8be05..c57f332554 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3359,7 +3359,11 @@ ex_append(exarg_T *eap)
did_undo = TRUE;
ml_append(lnum, theline, (colnr_T)0, FALSE);
- appended_lines_mark(lnum + (empty ? 1 : 0), 1L);
+ if (empty)
+ // there are no marks below the inserted lines
+ appended_lines(lnum, 1L);
+ else
+ appended_lines_mark(lnum, 1L);
vim_free(theline);
++lnum;
diff --git a/src/testdir/test_excmd.vim b/src/testdir/test_excmd.vim
index 67b95bb3bd..6f648dd4e5 100644
--- a/src/testdir/test_excmd.vim
+++ b/src/testdir/test_excmd.vim
@@ -1,6 +1,8 @@
" Tests for various Ex commands.
source check.vim
+source shared.vim
+source term_util.vim
func Test_ex_delete()
new
@@ -128,6 +130,27 @@ func Test_append_cmd()
close!
endfunc
+func Test_append_cmd_empty_buf()
+ CheckRunVimInTerminal
+ let lines =<< trim END
+ func Timer(timer)
+ append
+ aaaaa
+ bbbbb
+ .
+ endfunc
+ call timer_start(10, 'Timer')
+ END
+ call writefile(lines, 'Xtest_append_cmd_empty_buf')
+ let buf = RunVimInTerminal('-S Xtest_append_cmd_empty_buf', {'rows': 6})
+ call WaitForAssert({-> assert_equal('bbbbb', term_getline(buf, 2))})
+ call WaitForAssert({-> assert_equal('aaaaa', term_getline(buf, 1))})
+
+ " clean up
+ call StopVimInTerminal(buf)
+ call delete('Xtest_append_cmd_empty_buf')
+endfunc
+
" Test for the :insert command
func Test_insert_cmd()
new
@@ -156,6 +179,27 @@ func Test_insert_cmd()
close!
endfunc
+func Test_insert_cmd_empty_buf()
+ CheckRunVimInTerminal
+ let lines =<< trim END
+ func Timer(timer)
+ insert
+ aaaaa
+ bbbbb
+ .
+ endfunc
+ call timer_start(10, 'Timer')
+ END
+ call writefile(lines, 'Xtest_insert_cmd_empty_buf')
+ let buf = RunVimInTerminal('-S Xtest_insert_cmd_empty_buf', {'rows': 6})
+ call WaitForAssert({-> assert_equal('bbbbb', term_getline(buf, 2))})
+ call WaitForAssert({-> assert_equal('aaaaa', term_getline(buf, 1))})
+
+ " clean up
+ call StopVimInTerminal(buf)
+ call delete('Xtest_insert_cmd_empty_buf')
+endfunc
+
" Test for the :change command
func Test_change_cmd()
new
diff --git a/src/version.c b/src/version.c
index 649d2fc601..5f24ba4e22 100644
--- a/src/version.c
+++ b/src/version.c
@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3952,
+/**/
3951,
/**/
3950,