summaryrefslogtreecommitdiff
path: root/src/quickfix.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickfix.c')
-rw-r--r--src/quickfix.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/quickfix.c b/src/quickfix.c
index 6c102d953..6268ec66f 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -1586,10 +1586,30 @@ qf_jump(qi, dir, errornr, forceit)
}
/*
- * If there is only one window, create a new one above the quickfix
- * window.
+ * If no usable window is found and 'switchbuf' is set to 'usetab'
+ * then search in other tabs.
*/
- if (firstwin == lastwin || !usable_win)
+ if (!usable_win && vim_strchr(p_swb, 'a') != NULL)
+ {
+ tabpage_T *tp;
+ win_T *wp;
+
+ FOR_ALL_TAB_WINDOWS(tp, wp)
+ {
+ if (wp->w_buffer->b_fnum == qf_ptr->qf_fnum)
+ {
+ goto_tabpage_win(tp, wp);
+ usable_win = 1;
+ break;
+ }
+ }
+ }
+
+ /*
+ * If there is only one window and is the quickfix window, create a new
+ * one above the quickfix window.
+ */
+ if (((firstwin == lastwin) && bt_quickfix(curbuf)) || !usable_win)
{
ll_ref = curwin->w_llist_ref;