Patch 7.3.1274
Problem:    When selecting an entry from a location list it may pick an
            arbitrary window or open a new one.
Solution:   Prefer using a window related to the location list. (Lech Lorens)
Files:      src/quickfix.c


*** ../vim-7.3.1273/src/quickfix.c      2013-06-30 13:33:53.000000000 +0200
--- src/quickfix.c      2013-06-30 13:48:25.000000000 +0200
***************
*** 1616,1621 ****
--- 1616,1623 ----
       */
      if (bt_quickfix(curbuf) && !opened_window)
      {
+       win_T *usable_win_ptr = NULL;
+ 
        /*
         * If there is no file specified, we don't know where to go.
         * But do advance, otherwise ":cn" gets stuck.
***************
*** 1623,1636 ****
        if (qf_ptr->qf_fnum == 0)
            goto theend;
  
-       /* Locate a window showing a normal buffer */
        usable_win = 0;
!       FOR_ALL_WINDOWS(win)
!           if (win->w_buffer->b_p_bt[0] == NUL)
!           {
!               usable_win = 1;
!               break;
!           }
  
        /*
         * If no usable window is found and 'switchbuf' contains "usetab"
--- 1625,1653 ----
        if (qf_ptr->qf_fnum == 0)
            goto theend;
  
        usable_win = 0;
! 
!       ll_ref = curwin->w_llist_ref;
!       if (ll_ref != NULL)
!       {
!           /* Find a window using the same location list that is not a
!            * quickfix window. */
!           FOR_ALL_WINDOWS(usable_win_ptr)
!               if (usable_win_ptr->w_llist == ll_ref
!                       && usable_win_ptr->w_buffer->b_p_bt[0] != 'q')
!                   break;
!       }
! 
!       if (!usable_win)
!       {
!           /* Locate a window showing a normal buffer */
!           FOR_ALL_WINDOWS(win)
!               if (win->w_buffer->b_p_bt[0] == NUL)
!               {
!                   usable_win = 1;
!                   break;
!               }
!       }
  
        /*
         * If no usable window is found and 'switchbuf' contains "usetab"
***************
*** 1659,1666 ****
         */
        if (((firstwin == lastwin) && bt_quickfix(curbuf)) || !usable_win)
        {
-           ll_ref = curwin->w_llist_ref;
- 
            flags = WSP_ABOVE;
            if (ll_ref != NULL)
                flags |= WSP_NEWLOC;
--- 1676,1681 ----
***************
*** 1683,1694 ****
            if (curwin->w_llist_ref != NULL)
            {
                /* In a location window */
!               ll_ref = curwin->w_llist_ref;
! 
!               /* Find the window with the same location list */
!               FOR_ALL_WINDOWS(win)
!                   if (win->w_llist == ll_ref)
!                       break;
                if (win == NULL)
                {
                    /* Find the window showing the selected file */
--- 1698,1704 ----
            if (curwin->w_llist_ref != NULL)
            {
                /* In a location window */
!               win = usable_win_ptr;
                if (win == NULL)
                {
                    /* Find the window showing the selected file */
*** ../vim-7.3.1273/src/version.c       2013-06-30 13:33:53.000000000 +0200
--- src/version.c       2013-06-30 13:56:35.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
  {   /* Add new patch number below this line */
+ /**/
+     1274,
  /**/

-- 
Witches prefer brooms: vacuum-cleaners need extension cords!

 /// 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/groups/opt_out.


Raspunde prin e-mail lui