0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 9.0.0710: quitting/unloading/hiding a terminal does not work properly

Problem:    Quitting/unloading/hiding a terminal buffer does not always work
            properly.
Solution:   Avoid that ":q!" leaves an empty buffer behind.  ":bunload!" also
            kills the job and unloads the buffer.  ":hide" does not unload the
            buffer. (Yee Cheng Chin, closes #11323)
This commit is contained in:
Yee Cheng Chin
2022-10-10 11:46:16 +01:00
committed by Bram Moolenaar
parent f167c7b424
commit 4282633ba6
4 changed files with 46 additions and 11 deletions

View File

@@ -538,7 +538,8 @@ close_buffer(
unload_buf = TRUE;
#ifdef FEAT_TERMINAL
if (bt_terminal(buf) && (buf->b_nwindows == 1 || del_buf))
// depending on how we get here b_nwindows may already be zero
if (bt_terminal(buf) && (buf->b_nwindows <= 1 || del_buf))
{
CHECK_CURBUF;
if (term_job_running(buf->b_term))
@@ -550,6 +551,11 @@ close_buffer(
// Wiping out or unloading a terminal buffer kills the job.
free_terminal(buf);
// A terminal buffer is wiped out when job has finished.
del_buf = TRUE;
unload_buf = TRUE;
wipe_buf = TRUE;
}
else
{
@@ -565,10 +571,16 @@ close_buffer(
}
else
{
// A terminal buffer is wiped out if the job has finished.
del_buf = TRUE;
unload_buf = TRUE;
wipe_buf = TRUE;
if (del_buf || unload_buf)
{
// A terminal buffer is wiped out if the job has finished.
// We only do this when there's an intention to unload the
// buffer. This way, :hide and other similar commands won't
// wipe the buffer.
del_buf = TRUE;
unload_buf = TRUE;
wipe_buf = TRUE;
}
}
CHECK_CURBUF;
}