mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.2.4327: may end up with no current buffer
Problem: May end up with no current buffer. Solution: When deleting the current buffer to not pick a quickfix buffer as the new current buffer.
This commit is contained in:
26
src/buffer.c
26
src/buffer.c
@@ -1430,8 +1430,14 @@ do_buffer_ext(
|
||||
buf = buflist_findnr(curwin->w_jumplist[jumpidx].fmark.fnum);
|
||||
if (buf != NULL)
|
||||
{
|
||||
if (buf == curbuf || !buf->b_p_bl)
|
||||
buf = NULL; // skip current and unlisted bufs
|
||||
// Skip current and unlisted bufs. Also skip a quickfix
|
||||
// buffer, it might be deleted soon.
|
||||
if (buf == curbuf || !buf->b_p_bl
|
||||
#if defined(FEAT_QUICKFIX)
|
||||
|| bt_quickfix(buf)
|
||||
#endif
|
||||
)
|
||||
buf = NULL;
|
||||
else if (buf->b_ml.ml_mfp == NULL)
|
||||
{
|
||||
// skip unloaded buf, but may keep it for later
|
||||
@@ -1467,7 +1473,11 @@ do_buffer_ext(
|
||||
continue;
|
||||
}
|
||||
// in non-help buffer, try to skip help buffers, and vv
|
||||
if (buf->b_help == curbuf->b_help && buf->b_p_bl)
|
||||
if (buf->b_help == curbuf->b_help && buf->b_p_bl
|
||||
#if defined(FEAT_QUICKFIX)
|
||||
&& !bt_quickfix(buf)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
if (buf->b_ml.ml_mfp != NULL) // found loaded buffer
|
||||
break;
|
||||
@@ -1485,7 +1495,11 @@ do_buffer_ext(
|
||||
if (buf == NULL) // No loaded buffer, find listed one
|
||||
{
|
||||
FOR_ALL_BUFFERS(buf)
|
||||
if (buf->b_p_bl && buf != curbuf)
|
||||
if (buf->b_p_bl && buf != curbuf
|
||||
#if defined(FEAT_QUICKFIX)
|
||||
&& !bt_quickfix(buf)
|
||||
#endif
|
||||
)
|
||||
break;
|
||||
}
|
||||
if (buf == NULL) // Still no buffer, just take one
|
||||
@@ -1494,6 +1508,10 @@ do_buffer_ext(
|
||||
buf = curbuf->b_next;
|
||||
else
|
||||
buf = curbuf->b_prev;
|
||||
#if defined(FEAT_QUICKFIX)
|
||||
if (bt_quickfix(buf))
|
||||
buf = NULL;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user