From: Bram Moolenaar Date: Fri, 19 Jun 2015 12:41:49 +0000 (+0200) Subject: patch 7.4.742 X-Git-Tag: v7.4.742 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a594d77ffcccf2ac0e4079c41342ca55d4c9bb08;p=vim patch 7.4.742 Problem: Cannot specify a vertical split when loading a buffer for a quickfix command. Solution: Add the "vsplit" value to 'switchbuf'. (Brook Hong) --- diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 31210393b..9cdf9bb58 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -7067,6 +7067,7 @@ A jump table for the options with a short description can be found at |Q_op|. split If included, split the current window before loading a buffer for a |quickfix| command that display errors. Otherwise: do not split, use current window. + vsplit Just like "split" but split vertically. newtab Like "split", but open a new tab page. Overrules "split" when both are present. diff --git a/src/buffer.c b/src/buffer.c index 6dfe007c2..97c659604 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -2071,17 +2071,21 @@ buflist_getfile(n, lnum, options, forceit) * "buf" if one exists */ if (swb_flags & SWB_USEOPEN) wp = buf_jump_open_win(buf); + /* If 'switchbuf' contains "usetab": jump to first window in any tab * page containing "buf" if one exists */ if (wp == NULL && (swb_flags & SWB_USETAB)) wp = buf_jump_open_tab(buf); - /* If 'switchbuf' contains "split" or "newtab" and the current buffer - * isn't empty: open new window */ - if (wp == NULL && (swb_flags & (SWB_SPLIT | SWB_NEWTAB)) && !bufempty()) + + /* If 'switchbuf' contains "split", "vsplit" or "newtab" and the + * current buffer isn't empty: open new tab or window */ + if (wp == NULL && (swb_flags & (SWB_VSPLIT | SWB_SPLIT | SWB_NEWTAB)) + && !bufempty()) { - if (swb_flags & SWB_NEWTAB) /* Open in a new tab */ + if (swb_flags & SWB_NEWTAB) tabpage_new(); - else if (win_split(0, 0) == FAIL) /* Open in a new window */ + else if (win_split(0, (swb_flags & SWB_VSPLIT) ? WSP_VERT : 0) + == FAIL) return FAIL; RESET_BINDING(curwin); } diff --git a/src/option.h b/src/option.h index b03146676..7c7d35abf 100644 --- a/src/option.h +++ b/src/option.h @@ -765,12 +765,13 @@ EXTERN char_u *p_sws; /* 'swapsync' */ EXTERN char_u *p_swb; /* 'switchbuf' */ EXTERN unsigned swb_flags; #ifdef IN_OPTION_C -static char *(p_swb_values[]) = {"useopen", "usetab", "split", "newtab", NULL}; +static char *(p_swb_values[]) = {"useopen", "usetab", "split", "newtab", "vsplit", NULL}; #endif #define SWB_USEOPEN 0x001 #define SWB_USETAB 0x002 #define SWB_SPLIT 0x004 #define SWB_NEWTAB 0x008 +#define SWB_VSPLIT 0x010 EXTERN int p_tbs; /* 'tagbsearch' */ EXTERN long p_tl; /* 'taglength' */ EXTERN int p_tr; /* 'tagrelative' */ diff --git a/src/version.c b/src/version.c index 6fc420cbd..197b6ea0b 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 742, /**/ 741, /**/