changeset 1020:be9fbf8b0cdb v7.0.146

updated for version 7.0-146
author vimboss
date Fri, 20 Oct 2006 18:13:14 +0000
parents 95b507e6c9e7
children 81cf1b6e0a2d
files src/buffer.c src/quickfix.c src/version.c
diffstat 3 files changed, 30 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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;
--- 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;
 
--- 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,