diff src/terminal.c @ 12903:411a30bd7e8a v8.0.1328

patch 8.0.1328: trouble when using ":term ++close" with autocmd commit https://github.com/vim/vim/commit/ff5467965e3871d3dc0288416fcc6b1e2ba4f822 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Nov 21 14:47:57 2017 +0100 patch 8.0.1328: trouble when using ":term ++close" with autocmd Problem: Trouble when using ":term ++close" with autocmd. (Gabriel Barta) Solution: Use aucmd_prepbuf() and aucmd_restbuf() instead of setting curbuf. (closes #2339)
author Christian Brabandt <cb@256bit.org>
date Tue, 21 Nov 2017 15:00:06 +0100
parents 40ae30bc2691
children 32531a3eab1f
line wrap: on
line diff
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -51,6 +51,7 @@
  * - implement term_setsize()
  * - Termdebug does not work when Vim build with mzscheme.  gdb hangs.
  * - MS-Windows GUI: WinBar has  tearoff item
+ * - Adding WinBar to terminal window doesn't display, text isn't shifted down.
  * - MS-Windows GUI: still need to type a key after shell exits?  #1924
  * - After executing a shell command the status line isn't redraw.
  * - What to store in a session file?  Shell at the prompt would be OK to
@@ -2172,10 +2173,13 @@ term_channel_closed(channel_T *ch)
 
 		if (term->tl_finish == 'c')
 		{
+		    aco_save_T	aco;
+
 		    /* ++close or term_finish == "close" */
 		    ch_log(NULL, "terminal job finished, closing window");
-		    curbuf = term->tl_buffer;
+		    aucmd_prepbuf(&aco, term->tl_buffer);
 		    do_bufdel(DOBUF_WIPE, (char_u *)"", 1, fnum, fnum, FALSE);
+		    aucmd_restbuf(&aco);
 		    break;
 		}
 		if (term->tl_finish == 'o' && term->tl_buffer->b_nwindows == 0)