summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-11-11 22:18:21 +0100
committerBram Moolenaar <Bram@vim.org>2018-11-11 22:18:21 +0100
commitf3aea59afa23304266dfd0dd26b5d8cc70a21331 (patch)
treeece744179705b1a62c5ac35202c32e8559f61d3b
parent883ba68cda05cac668a493ce5115332e1b5fdc29 (diff)
downloadvim-git-f3aea59afa23304266dfd0dd26b5d8cc70a21331.tar.gz
patch 8.1.0522: :terminal does not show trailing empty linesv8.1.0522
Problem: :terminal does not show trailing empty lines. Solution: Add empty lines. (Hirohito Higashi, closes #3605)
-rw-r--r--src/terminal.c9
-rw-r--r--src/testdir/test_terminal.vim22
-rw-r--r--src/version.c2
3 files changed, 33 insertions, 0 deletions
diff --git a/src/terminal.c b/src/terminal.c
index 6927d6902..53b6ca8a2 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -1592,6 +1592,15 @@ update_snapshot(term_T *term)
}
}
+ // Add trailing empty lines.
+ for (pos.row = term->tl_scrollback.ga_len;
+ pos.row < term->tl_scrollback_scrolled + term->tl_cursor_pos.row;
+ ++pos.row)
+ {
+ if (add_empty_scrollback(term, &fill_attr, 0) == OK)
+ add_scrollback_line_to_buffer(term, (char_u *)"", 0);
+ }
+
term->tl_dirty_snapshot = FALSE;
#ifdef FEAT_TIMERS
term->tl_timer_set = FALSE;
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 88cb89e9b..f2586e156 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1658,3 +1658,25 @@ func Test_terminal_hidden_and_close()
call WaitForAssert({-> assert_false(bufexists(bnr))})
call assert_equal(1, winnr('$'))
endfunc
+
+func Test_terminal_does_not_truncate_last_newlines()
+ let cmd = has('win32') ? 'type' : 'cat'
+ let contents = [
+ \ [ 'One', '', 'X' ],
+ \ [ 'Two', '', '' ],
+ \ [ 'Three' ] + repeat([''], 30)
+ \ ]
+
+ for c in contents
+ call writefile(c, 'Xfile')
+ exec 'term' cmd 'Xfile'
+ let bnr = bufnr('$')
+ call assert_equal('terminal', getbufvar(bnr, '&buftype'))
+ call WaitForAssert({-> assert_equal('finished', term_getstatus(bnr))})
+ sleep 50m
+ call assert_equal(c, getline(1, line('$')))
+ quit
+ endfor
+
+ call delete('Xfile')
+endfunc
diff --git a/src/version.c b/src/version.c
index 8aeda6716..1058a2b83 100644
--- a/src/version.c
+++ b/src/version.c
@@ -793,6 +793,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 522,
+/**/
521,
/**/
520,