Mercurial > vim
diff src/terminal.c @ 14459:ecf6c05d8ac3 v8.1.0243
patch 8.1.0243: using :term ++close ++hidden closes a window
commit https://github.com/vim/vim/commit/5db7eec42337f0eecdc332f582eecf37278044e8
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Aug 7 16:33:18 2018 +0200
patch 8.1.0243: using :term ++close ++hidden closes a window
Problem: Using :term ++close ++hidden closes a window. (Marcin Szamotulski)
Solution: Don't close the window if only using it temporarily for unloading
the terminal buffer. (closes #3287)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 07 Aug 2018 16:45:05 +0200 |
parents | 5faab0545f3c |
children | cd3f0987c0bc |
line wrap: on
line diff
--- a/src/terminal.c +++ b/src/terminal.c @@ -2818,11 +2818,17 @@ term_after_channel_closed(term_T *term) if (term->tl_finish == TL_FINISH_CLOSE) { aco_save_T aco; - - /* ++close or term_finish == "close" */ + int do_set_w_closing = term->tl_buffer->b_nwindows == 0; + + // ++close or term_finish == "close" ch_log(NULL, "terminal job finished, closing window"); aucmd_prepbuf(&aco, term->tl_buffer); + // Avoid closing the window if we temporarily use it. + if (do_set_w_closing) + curwin->w_closing = TRUE; do_bufdel(DOBUF_WIPE, (char_u *)"", 1, fnum, fnum, FALSE); + if (do_set_w_closing) + curwin->w_closing = FALSE; aucmd_restbuf(&aco); return TRUE; }