Mercurial > vim
diff src/buffer.c @ 9487:69ed2c9d34a6 v7.4.2024
commit https://github.com/vim/vim/commit/7c0a2f367f2507669560b1a66423155c70d2e75b
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jul 10 22:11:16 2016 +0200
patch 7.4.2024
Problem: More buf_valid() calls can be optimized.
Solution: Use bufref_valid() instead.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 10 Jul 2016 22:15:06 +0200 |
parents | c16e207dc465 |
children | c2e904cc064f |
line wrap: on
line diff
--- a/src/buffer.c +++ b/src/buffer.c @@ -83,7 +83,7 @@ open_buffer( { int retval = OK; #ifdef FEAT_AUTOCMD - buf_T *old_curbuf; + bufref_T old_curbuf; #endif #ifdef FEAT_SYN_HL long old_tw = curbuf->b_p_tw; @@ -129,7 +129,7 @@ open_buffer( #ifdef FEAT_AUTOCMD /* The autocommands in readfile() may change the buffer, but only AFTER * reading the file. */ - old_curbuf = curbuf; + set_bufref(&old_curbuf, curbuf); modified_was_set = FALSE; #endif @@ -284,12 +284,12 @@ open_buffer( * The autocommands may have changed the current buffer. Apply the * modelines to the correct buffer, if it still exists and is loaded. */ - if (buf_valid(old_curbuf) && old_curbuf->b_ml.ml_mfp != NULL) + if (bufref_valid(&old_curbuf) && old_curbuf.br_buf->b_ml.ml_mfp != NULL) { aco_save_T aco; /* Go to the buffer that was opened. */ - aucmd_prepbuf(&aco, old_curbuf); + aucmd_prepbuf(&aco, old_curbuf.br_buf); #endif do_modelines(0); curbuf->b_flags &= ~(BF_CHECK_RO | BF_NEVERLOADED); @@ -809,7 +809,9 @@ goto_buffer( int count) { # if defined(FEAT_WINDOWS) && defined(HAS_SWAP_EXISTS_ACTION) - buf_T *old_curbuf = curbuf; + bufref_T old_curbuf; + + set_bufref(&old_curbuf, curbuf); swap_exists_action = SEA_DIALOG; # endif @@ -838,7 +840,7 @@ goto_buffer( # endif } else - handle_swap_exists(old_curbuf); + handle_swap_exists(&old_curbuf); # endif } #endif @@ -849,7 +851,7 @@ goto_buffer( * It is allowed for "old_curbuf" to be NULL or invalid. */ void -handle_swap_exists(buf_T *old_curbuf) +handle_swap_exists(bufref_T *old_curbuf) { # if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) cleanup_T cs; @@ -857,6 +859,7 @@ handle_swap_exists(buf_T *old_curbuf) #ifdef FEAT_SYN_HL long old_tw = curbuf->b_p_tw; #endif + buf_T *buf; if (swap_exists_action == SEA_QUIT) { @@ -872,11 +875,14 @@ handle_swap_exists(buf_T *old_curbuf) swap_exists_action = SEA_NONE; /* don't want it again */ swap_exists_did_quit = TRUE; close_buffer(curwin, curbuf, DOBUF_UNLOAD, FALSE); - if (!buf_valid(old_curbuf) || old_curbuf == curbuf) - old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED); - if (old_curbuf != NULL) + if (old_curbuf == NULL || !bufref_valid(old_curbuf) + || old_curbuf->br_buf == curbuf) + buf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED); + else + buf = old_curbuf->br_buf; + if (buf != NULL) { - enter_buffer(old_curbuf); + enter_buffer(buf); #ifdef FEAT_SYN_HL if (old_tw != curbuf->b_p_tw) check_colorcolumn(curwin);