forked from aniani/vim
patch 7.4.2024
Problem: More buf_valid() calls can be optimized. Solution: Use bufref_valid() instead.
This commit is contained in:
17
src/window.c
17
src/window.c
@@ -2340,6 +2340,9 @@ win_close(win_T *win, int free_buf)
|
||||
*/
|
||||
if (win->w_buffer != NULL)
|
||||
{
|
||||
bufref_T bufref;
|
||||
|
||||
set_bufref(&bufref, curbuf);
|
||||
#ifdef FEAT_AUTOCMD
|
||||
win->w_closing = TRUE;
|
||||
#endif
|
||||
@@ -2350,7 +2353,7 @@ win_close(win_T *win, int free_buf)
|
||||
#endif
|
||||
/* Make sure curbuf is valid. It can become invalid if 'bufhidden' is
|
||||
* "wipe". */
|
||||
if (!buf_valid(curbuf))
|
||||
if (!bufref_valid(&bufref))
|
||||
curbuf = firstbuf;
|
||||
}
|
||||
|
||||
@@ -6632,12 +6635,12 @@ restore_win(
|
||||
* No autocommands will be executed. Use aucmd_prepbuf() if there are any.
|
||||
*/
|
||||
void
|
||||
switch_buffer(buf_T **save_curbuf, buf_T *buf)
|
||||
switch_buffer(bufref_T *save_curbuf, buf_T *buf)
|
||||
{
|
||||
# ifdef FEAT_AUTOCMD
|
||||
block_autocmds();
|
||||
# endif
|
||||
*save_curbuf = curbuf;
|
||||
set_bufref(save_curbuf, curbuf);
|
||||
--curbuf->b_nwindows;
|
||||
curbuf = buf;
|
||||
curwin->w_buffer = buf;
|
||||
@@ -6648,17 +6651,17 @@ switch_buffer(buf_T **save_curbuf, buf_T *buf)
|
||||
* Restore the current buffer after using switch_buffer().
|
||||
*/
|
||||
void
|
||||
restore_buffer(buf_T *save_curbuf)
|
||||
restore_buffer(bufref_T *save_curbuf)
|
||||
{
|
||||
# ifdef FEAT_AUTOCMD
|
||||
unblock_autocmds();
|
||||
# endif
|
||||
/* Check for valid buffer, just in case. */
|
||||
if (buf_valid(save_curbuf))
|
||||
if (bufref_valid(save_curbuf))
|
||||
{
|
||||
--curbuf->b_nwindows;
|
||||
curwin->w_buffer = save_curbuf;
|
||||
curbuf = save_curbuf;
|
||||
curwin->w_buffer = save_curbuf->br_buf;
|
||||
curbuf = save_curbuf->br_buf;
|
||||
++curbuf->b_nwindows;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user