mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
updated for version 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)
This commit is contained in:
parent
730d2c0747
commit
2486285546
@ -1616,6 +1616,8 @@ qf_jump(qi, dir, errornr, forceit)
|
|||||||
*/
|
*/
|
||||||
if (bt_quickfix(curbuf) && !opened_window)
|
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.
|
* If there is no file specified, we don't know where to go.
|
||||||
* But do advance, otherwise ":cn" gets stuck.
|
* But do advance, otherwise ":cn" gets stuck.
|
||||||
@ -1623,14 +1625,29 @@ qf_jump(qi, dir, errornr, forceit)
|
|||||||
if (qf_ptr->qf_fnum == 0)
|
if (qf_ptr->qf_fnum == 0)
|
||||||
goto theend;
|
goto theend;
|
||||||
|
|
||||||
/* Locate a window showing a normal buffer */
|
|
||||||
usable_win = 0;
|
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)
|
FOR_ALL_WINDOWS(win)
|
||||||
if (win->w_buffer->b_p_bt[0] == NUL)
|
if (win->w_buffer->b_p_bt[0] == NUL)
|
||||||
{
|
{
|
||||||
usable_win = 1;
|
usable_win = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If no usable window is found and 'switchbuf' contains "usetab"
|
* If no usable window is found and 'switchbuf' contains "usetab"
|
||||||
@ -1659,8 +1676,6 @@ win_found:
|
|||||||
*/
|
*/
|
||||||
if (((firstwin == lastwin) && bt_quickfix(curbuf)) || !usable_win)
|
if (((firstwin == lastwin) && bt_quickfix(curbuf)) || !usable_win)
|
||||||
{
|
{
|
||||||
ll_ref = curwin->w_llist_ref;
|
|
||||||
|
|
||||||
flags = WSP_ABOVE;
|
flags = WSP_ABOVE;
|
||||||
if (ll_ref != NULL)
|
if (ll_ref != NULL)
|
||||||
flags |= WSP_NEWLOC;
|
flags |= WSP_NEWLOC;
|
||||||
@ -1683,12 +1698,7 @@ win_found:
|
|||||||
if (curwin->w_llist_ref != NULL)
|
if (curwin->w_llist_ref != NULL)
|
||||||
{
|
{
|
||||||
/* In a location window */
|
/* In a location window */
|
||||||
ll_ref = curwin->w_llist_ref;
|
win = usable_win_ptr;
|
||||||
|
|
||||||
/* Find the window with the same location list */
|
|
||||||
FOR_ALL_WINDOWS(win)
|
|
||||||
if (win->w_llist == ll_ref)
|
|
||||||
break;
|
|
||||||
if (win == NULL)
|
if (win == NULL)
|
||||||
{
|
{
|
||||||
/* Find the window showing the selected file */
|
/* Find the window showing the selected file */
|
||||||
|
@ -728,6 +728,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1274,
|
||||||
/**/
|
/**/
|
||||||
1273,
|
1273,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user