diff options
| author | Bram Moolenaar <Bram@vim.org> | 2018-11-11 22:18:21 +0100 |
|---|---|---|
| committer | Bram Moolenaar <Bram@vim.org> | 2018-11-11 22:18:21 +0100 |
| commit | f3aea59afa23304266dfd0dd26b5d8cc70a21331 (patch) | |
| tree | ece744179705b1a62c5ac35202c32e8559f61d3b | |
| parent | 883ba68cda05cac668a493ce5115332e1b5fdc29 (diff) | |
| download | vim-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.c | 9 | ||||
| -rw-r--r-- | src/testdir/test_terminal.vim | 22 | ||||
| -rw-r--r-- | src/version.c | 2 |
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, |
