]> granicus.if.org Git - vim/commitdiff
patch 8.1.0522: :terminal does not show trailing empty lines v8.1.0522
authorBram Moolenaar <Bram@vim.org>
Sun, 11 Nov 2018 21:18:21 +0000 (22:18 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 11 Nov 2018 21:18:21 +0000 (22:18 +0100)
Problem:    :terminal does not show trailing empty lines.
Solution:   Add empty lines. (Hirohito Higashi, closes #3605)

src/terminal.c
src/testdir/test_terminal.vim
src/version.c

index 6927d690212eebd4eb0925351d75346f5e636b32..53b6ca8a2a7abd1ec9b03915e8052b93e0819c61 100644 (file)
@@ -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;
index 88cb89e9ba95a28370463bad2e79c04eb5435002..f2586e15695027176bf912d074c4faa3c14e9e8a 100644 (file)
@@ -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
index 8aeda6716a6d4c6f2aec0b85b3b8a9f5ba5ad1bd..1058a2b8349e90907fce405281a7f6ac0d765449 100644 (file)
@@ -792,6 +792,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    522,
 /**/
     521,
 /**/