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:
committed by
Bram Moolenaar
parent
f167c7b424
commit
4282633ba6
22
src/buffer.c
22
src/buffer.c
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user