summaryrefslogtreecommitdiffstats
path: root/src/ex_docmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r--src/ex_docmd.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 8ca5ede46b..f5b3980465 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -6061,13 +6061,27 @@ ex_win_close(
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
if ((p_confirm || (cmdmod.cmod_flags & CMOD_CONFIRM)) && p_write)
{
- bufref_T bufref;
+# ifdef FEAT_TERMINAL
+ if (term_job_running(buf->b_term))
+ {
+ if (term_confirm_stop(buf) == FAIL)
+ return;
+ // Manually kill the terminal here because this command will
+ // hide it otherwise.
+ free_terminal(buf);
+ need_hide = FALSE;
+ }
+ else
+# endif
+ {
+ bufref_T bufref;
- set_bufref(&bufref, buf);
- dialog_changed(buf, FALSE);
- if (bufref_valid(&bufref) && bufIsChanged(buf))
- return;
- need_hide = FALSE;
+ set_bufref(&bufref, buf);
+ dialog_changed(buf, FALSE);
+ if (bufref_valid(&bufref) && bufIsChanged(buf))
+ return;
+ need_hide = FALSE;
+ }
}
else
#endif