Patch 8.1.0988
Problem:    Deleting a location list buffer breaks location list window
            functionality.
Solution:   (Yegappan Lakshmanan, closes #4056)
Files:      src/quickfix.c, src/testdir/test_quickfix.vim


*** ../vim-8.1.0987/src/quickfix.c      2019-02-10 22:58:58.976414779 +0100
--- src/quickfix.c      2019-03-02 07:55:18.877241143 +0100
***************
*** 3981,3986 ****
--- 3981,4007 ----
  }
  
  /*
+  * Set options for the buffer in the quickfix or location list window.
+  */
+     static void
+ qf_set_cwindow_options(void)
+ {
+     // switch off 'swapfile'
+     set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+     set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
+           OPT_LOCAL);
+     set_option_value((char_u *)"bh", 0L, (char_u *)"hide", OPT_LOCAL);
+     RESET_BINDING(curwin);
+ #ifdef FEAT_DIFF
+     curwin->w_p_diff = FALSE;
+ #endif
+ #ifdef FEAT_FOLDING
+     set_option_value((char_u *)"fdm", 0L, (char_u *)"manual",
+           OPT_LOCAL);
+ #endif
+ }
+ 
+ /*
   * Open a new quickfix or location list window, load the quickfix buffer and
   * set the appropriate options for the window.
   * Returns FAIL if the window could not be opened.
***************
*** 4032,4054 ****
        // Create a new quickfix buffer
        (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, oldwin);
  
-       // switch off 'swapfile'
-       set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
-       set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
-               OPT_LOCAL);
-       set_option_value((char_u *)"bh", 0L, (char_u *)"hide", OPT_LOCAL);
-       RESET_BINDING(curwin);
- #ifdef FEAT_DIFF
-       curwin->w_p_diff = FALSE;
- #endif
- #ifdef FEAT_FOLDING
-       set_option_value((char_u *)"fdm", 0L, (char_u *)"manual",
-               OPT_LOCAL);
- #endif
        // save the number of the new buffer
        qi->qf_bufnr = curbuf->b_fnum;
      }
  
      // Only set the height when still in the same tab page and there is no
      // window to the side.
      if (curtab == prevtab && curwin->w_width == Columns)
--- 4053,4068 ----
        // Create a new quickfix buffer
        (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, oldwin);
  
        // save the number of the new buffer
        qi->qf_bufnr = curbuf->b_fnum;
      }
  
+     // Set the options for the quickfix buffer/window (if not already done)
+     // Do this even if the quickfix buffer was already present, as an autocmd
+     // might have previously deleted (:bdelete) the quickfix buffer.
+     if (curbuf->b_p_bt[0] != 'q')
+       qf_set_cwindow_options();
+ 
      // Only set the height when still in the same tab page and there is no
      // window to the side.
      if (curtab == prevtab && curwin->w_width == Columns)
*** ../vim-8.1.0987/src/testdir/test_quickfix.vim       2019-02-10 
22:58:58.976414779 +0100
--- src/testdir/test_quickfix.vim       2019-03-02 07:55:18.877241143 +0100
***************
*** 3933,3938 ****
--- 3933,3948 ----
      call assert_match(qfbnum . '  h-  "\[Location List]"', execute('ls'))
      call assert_true(bufloaded(qfbnum))
  
+     " After deleting a location list buffer using ":bdelete", opening the
+     " location list window should mark the buffer as a location list buffer.
+     exe "bdelete " . qfbnum
+     lopen
+     call assert_equal("quickfix", &buftype)
+     call assert_equal(1, getwininfo(win_getid(winnr()))[0].loclist)
+     call assert_equal(wid, getloclist(0, {'filewinid' : 0}).filewinid)
+     call assert_false(&swapfile)
+     lclose
+ 
      " When the location list is cleared for the window, the buffer should be
      " removed
      call setloclist(0, [], 'f')
*** ../vim-8.1.0987/src/version.c       2019-03-02 07:15:20.217458790 +0100
--- src/version.c       2019-03-02 07:56:37.372654522 +0100
***************
*** 781,782 ****
--- 781,784 ----
  {   /* Add new patch number below this line */
+ /**/
+     988,
  /**/

-- 
What a wonderfully exciting cough!  Do you mind if I join you?
                -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
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].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui