diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-11-29 21:07:29 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-29 21:07:29 +0800 |
commit | d311c5481dede47d752fa39cb00d728ba18ef5bc (patch) | |
tree | dd2c01f384b4c3713a1d9c5b976cd7c0f8c91fcd /src/nvim/eval/buffer.c | |
parent | 89f0987bde8124f8fcbbcbf8320dbdabe0d69ba9 (diff) | |
parent | 95f5cf96912727a1ede055211645ac9779f3da44 (diff) | |
download | rneovim-d311c5481dede47d752fa39cb00d728ba18ef5bc.tar.gz rneovim-d311c5481dede47d752fa39cb00d728ba18ef5bc.tar.bz2 rneovim-d311c5481dede47d752fa39cb00d728ba18ef5bc.zip |
Merge pull request #21234 from zeertzjq/vim-9.0.0965
vim-patch:9.0.{0965,0966,0967}: using one window for executing autocommands is insufficient
Diffstat (limited to 'src/nvim/eval/buffer.c')
-rw-r--r-- | src/nvim/eval/buffer.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/nvim/eval/buffer.c b/src/nvim/eval/buffer.c index 4816a955a8..6ebf54ef0f 100644 --- a/src/nvim/eval/buffer.c +++ b/src/nvim/eval/buffer.c @@ -86,6 +86,8 @@ static void find_win_for_curbuf(void) /// /// Information is saved in "cob" and MUST be restored by calling /// change_other_buffer_restore(). +/// +/// If this fails then "curbuf" will not be equal to "buf". static void change_other_buffer_prepare(cob_T *cob, buf_T *buf) { CLEAR_POINTER(cob); @@ -103,7 +105,9 @@ static void change_other_buffer_prepare(cob_T *cob, buf_T *buf) // curwin->w_buffer differ from "curbuf", use the autocmd window. curbuf = curwin->w_buffer; aucmd_prepbuf(&cob->cob_aco, buf); - cob->cob_using_aco = true; + if (curbuf == buf) { + cob->cob_using_aco = true; + } } } @@ -302,13 +306,8 @@ void f_bufload(typval_T *argvars, typval_T *unused, EvalFuncData fptr) { buf_T *buf = get_buf_arg(&argvars[0]); - if (buf != NULL && buf->b_ml.ml_mfp == NULL) { - aco_save_T aco; - - aucmd_prepbuf(&aco, buf); - swap_exists_action = SEA_NONE; - open_buffer(false, NULL, 0); - aucmd_restbuf(&aco); + if (buf != NULL) { + buffer_ensure_loaded(buf); } } |