changeset 14449:5faab0545f3c v8.1.0238

patch 8.1.0238: 'buftype' is cleared when using ":term ++hidden cat" commit https://github.com/vim/vim/commit/7da1fb5532890d9c15cdb5b9bec158f9f9c105a7 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Aug 4 16:54:11 2018 +0200 patch 8.1.0238: 'buftype' is cleared when using ":term ++hidden cat" Problem: 'buftype' is cleared when using ":term ++hidden cat". (Marcin Szamotulski) Solution: Set the "options initialized" flag earlier. (closes #3278)
author Christian Brabandt <cb@256bit.org>
date Sat, 04 Aug 2018 17:00:05 +0200
parents fe6e859a75ad
children 7f74f9597c02
files src/terminal.c src/testdir/test_terminal.vim src/version.c
diffstat 3 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -529,6 +529,8 @@ term_start(
 
     set_string_option_direct((char_u *)"buftype", -1,
 				  (char_u *)"terminal", OPT_FREE|OPT_LOCAL, 0);
+    // Avoid that 'buftype' is reset when this buffer is entered.
+    curbuf->b_p_initialized = TRUE;
 
     /* Mark the buffer as not modifiable. It can only be made modifiable after
      * the job finished. */
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1605,3 +1605,19 @@ func Test_zz2_terminal_guioptions_bang()
   set guioptions&
   call delete(filename)
 endfunc
+
+func Test_terminal_hidden()
+  if !has('unix')
+    return
+  endif
+  term ++hidden cat
+  let bnr = bufnr('$')
+  call assert_equal('terminal', getbufvar(bnr, '&buftype'))
+  exe 'sbuf ' . bnr
+  call assert_equal('terminal', &buftype)
+  call term_sendkeys(bnr, "asdf\<CR>")
+  call WaitForAssert({-> assert_match('asdf', term_getline(bnr, 2))})
+  call term_sendkeys(bnr, "\<C-D>")
+  call WaitForAssert({-> assert_equal('finished', term_getstatus(bnr))})
+  bwipe!
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    238,
+/**/
     237,
 /**/
     236,