# HG changeset patch # User vimboss # Date 1161367994 0 # Node ID be9fbf8b0cdb6a42c07a8be94e9fba866cff00c8 # Parent 95b507e6c9e75d5b4c114a63a98b4bc36c643eea updated for version 7.0-146 diff --git a/src/buffer.c b/src/buffer.c --- a/src/buffer.c +++ b/src/buffer.c @@ -1208,11 +1208,11 @@ do_buffer(action, start, dir, count, for { # ifdef FEAT_WINDOWS /* jump to first window containing buf if one exists ("useopen") */ - if (vim_strchr(p_swb, 'o') && buf_jump_open_win(buf)) + if (vim_strchr(p_swb, 'o') != NULL && buf_jump_open_win(buf)) return OK; /* jump to first window in any tab page containing buf if one exists * ("usetab") */ - if (vim_strchr(p_swb, 'a') && buf_jump_open_tab(buf)) + if (vim_strchr(p_swb, 'a') != NULL && buf_jump_open_tab(buf)) return OK; if (win_split(0, 0) == FAIL) # endif @@ -1842,13 +1842,13 @@ buflist_getfile(n, lnum, options, forcei if (options & GETF_SWITCH) { /* use existing open window for buffer if wanted */ - if (vim_strchr(p_swb, 'o')) /* useopen */ + if (vim_strchr(p_swb, 'o') != NULL) /* useopen */ wp = buf_jump_open_win(buf); /* use existing open window in any tab page for buffer if wanted */ - if (vim_strchr(p_swb, 'a')) /* usetab */ + if (vim_strchr(p_swb, 'a') != NULL) /* usetab */ wp = buf_jump_open_tab(buf); /* split window if wanted ("split") */ - if (wp == NULL && vim_strchr(p_swb, 't') && !bufempty()) + if (wp == NULL && vim_strchr(p_swb, 'l') != NULL && !bufempty()) { if (win_split(0, 0) == FAIL) return FAIL; diff --git a/src/quickfix.c b/src/quickfix.c --- 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; diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -667,6 +667,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 146, +/**/ 145, /**/ 144,