Patch 8.2.4791
Problem:    Autocmd events triggered in different order when reusing an empty
            buffer.
Solution:   Call buff_freeall() earlier. (Charlie Groves, closes #10198)
Files:      src/buffer.c, src/testdir/test_autocmd.vim


*** ../vim-8.2.4790/src/buffer.c        2022-04-10 17:59:23.339015279 +0100
--- src/buffer.c        2022-04-19 16:23:37.943580814 +0100
***************
*** 2068,2077 ****
        buf = curbuf;
        // It's like this buffer is deleted.  Watch out for autocommands that
        // change curbuf!  If that happens, allocate a new buffer anyway.
!       if (curbuf->b_p_bl)
!           apply_autocmds(EVENT_BUFDELETE, NULL, NULL, FALSE, curbuf);
!       if (buf == curbuf)
!           apply_autocmds(EVENT_BUFWIPEOUT, NULL, NULL, FALSE, curbuf);
  #ifdef FEAT_EVAL
        if (aborting())         // autocmds may abort script processing
        {
--- 2068,2076 ----
        buf = curbuf;
        // It's like this buffer is deleted.  Watch out for autocommands that
        // change curbuf!  If that happens, allocate a new buffer anyway.
!       buf_freeall(buf, BFA_WIPE | BFA_DEL);
!       if (buf != curbuf)   // autocommands deleted the buffer!
!           return NULL;
  #ifdef FEAT_EVAL
        if (aborting())         // autocmds may abort script processing
        {
***************
*** 2079,2090 ****
            return NULL;
        }
  #endif
-       if (buf == curbuf)
-       {
-           // Make sure 'bufhidden' and 'buftype' are empty
-           clear_string_option(&buf->b_p_bh);
-           clear_string_option(&buf->b_p_bt);
-       }
      }
      if (buf != curbuf || curbuf == NULL)
      {
--- 2078,2083 ----
***************
*** 2132,2145 ****
  
      if (buf == curbuf)
      {
-       // free all things allocated for this buffer
-       buf_freeall(buf, 0);
-       if (buf != curbuf)       // autocommands deleted the buffer!
-           return NULL;
- #if defined(FEAT_EVAL)
-       if (aborting())         // autocmds may abort script processing
-           return NULL;
- #endif
        free_buffer_stuff(buf, FALSE);  // delete local variables et al.
  
        // Init the options.
--- 2125,2130 ----
*** ../vim-8.2.4790/src/testdir/test_autocmd.vim        2022-04-12 
11:32:41.428327316 +0100
--- src/testdir/test_autocmd.vim        2022-04-19 16:08:27.300227840 +0100
***************
*** 3037,3045 ****
  endfunc
  
  func Test_autocmd_vimgrep()
    augroup aucmd_vimgrep
!     au QuickfixCmdPre,BufNew,BufDelete,BufReadCmd * sb
!     au QuickfixCmdPre,BufNew,BufDelete,BufReadCmd * q9

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20220419152446.AC4471C0796%40moolenaar.net.

Raspunde prin e-mail lui