mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.1.2315: not always using the right window when jumping to an error
Problem: Not always using the right window when jumping to an error. Solution: Add the "uselast" flag in 'switchbuf'. (closes #1652)
This commit is contained in:
@@ -7417,6 +7417,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
|||||||
vsplit Just like "split" but split vertically.
|
vsplit Just like "split" but split vertically.
|
||||||
newtab Like "split", but open a new tab page. Overrules
|
newtab Like "split", but open a new tab page. Overrules
|
||||||
"split" when both are present.
|
"split" when both are present.
|
||||||
|
uselast If included, jump to the previously used window when
|
||||||
|
jumping to errors with |quickfix| commands.
|
||||||
|
|
||||||
*'synmaxcol'* *'smc'*
|
*'synmaxcol'* *'smc'*
|
||||||
'synmaxcol' 'smc' number (default 3000)
|
'synmaxcol' 'smc' number (default 3000)
|
||||||
|
@@ -911,11 +911,13 @@ EXTERN char_u *p_su; // 'suffixes'
|
|||||||
EXTERN char_u *p_sws; // 'swapsync'
|
EXTERN char_u *p_sws; // 'swapsync'
|
||||||
EXTERN char_u *p_swb; // 'switchbuf'
|
EXTERN char_u *p_swb; // 'switchbuf'
|
||||||
EXTERN unsigned swb_flags;
|
EXTERN unsigned swb_flags;
|
||||||
|
// Keep in sync with p_swb_values in optionstr.c
|
||||||
#define SWB_USEOPEN 0x001
|
#define SWB_USEOPEN 0x001
|
||||||
#define SWB_USETAB 0x002
|
#define SWB_USETAB 0x002
|
||||||
#define SWB_SPLIT 0x004
|
#define SWB_SPLIT 0x004
|
||||||
#define SWB_NEWTAB 0x008
|
#define SWB_NEWTAB 0x008
|
||||||
#define SWB_VSPLIT 0x010
|
#define SWB_VSPLIT 0x010
|
||||||
|
#define SWB_USELAST 0x020
|
||||||
EXTERN char_u *p_syn; // 'syntax'
|
EXTERN char_u *p_syn; // 'syntax'
|
||||||
EXTERN long p_ts; // 'tabstop'
|
EXTERN long p_ts; // 'tabstop'
|
||||||
EXTERN int p_tbs; // 'tagbsearch'
|
EXTERN int p_tbs; // 'tagbsearch'
|
||||||
|
@@ -39,7 +39,8 @@ static char *(p_ssop_values[]) = {"buffers", "winpos", "resize", "winsize",
|
|||||||
"localoptions", "options", "help", "blank", "globals", "slash", "unix",
|
"localoptions", "options", "help", "blank", "globals", "slash", "unix",
|
||||||
"sesdir", "curdir", "folds", "cursor", "tabpages", "terminal", NULL};
|
"sesdir", "curdir", "folds", "cursor", "tabpages", "terminal", NULL};
|
||||||
#endif
|
#endif
|
||||||
static char *(p_swb_values[]) = {"useopen", "usetab", "split", "newtab", "vsplit", NULL};
|
// Keep in sync with SWB_ flags in option.h
|
||||||
|
static char *(p_swb_values[]) = {"useopen", "usetab", "split", "newtab", "vsplit", "uselast", NULL};
|
||||||
static char *(p_tc_values[]) = {"followic", "ignore", "match", "followscs", "smart", NULL};
|
static char *(p_tc_values[]) = {"followic", "ignore", "match", "followscs", "smart", NULL};
|
||||||
#if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN)
|
#if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN)
|
||||||
static char *(p_toolbar_values[]) = {"text", "icons", "tooltips", "horiz", NULL};
|
static char *(p_toolbar_values[]) = {"text", "icons", "tooltips", "horiz", NULL};
|
||||||
|
@@ -3013,8 +3013,11 @@ qf_goto_win_with_qfl_file(int qf_fnum)
|
|||||||
if (IS_QF_WINDOW(win))
|
if (IS_QF_WINDOW(win))
|
||||||
{
|
{
|
||||||
// Didn't find it, go to the window before the quickfix
|
// Didn't find it, go to the window before the quickfix
|
||||||
// window.
|
// window, unless 'switchbuf' contains 'uselast': in this case we
|
||||||
if (altwin != NULL)
|
// try to jump to the previously used window first.
|
||||||
|
if ((swb_flags & SWB_USELAST) && win_valid(prevwin))
|
||||||
|
win = prevwin;
|
||||||
|
else if (altwin != NULL)
|
||||||
win = altwin;
|
win = altwin;
|
||||||
else if (curwin->w_prev != NULL)
|
else if (curwin->w_prev != NULL)
|
||||||
win = curwin->w_prev;
|
win = curwin->w_prev;
|
||||||
|
@@ -1664,6 +1664,14 @@ func Test_switchbuf()
|
|||||||
call assert_equal(3, tabpagenr('$'))
|
call assert_equal(3, tabpagenr('$'))
|
||||||
tabfirst | enew | tabonly | only
|
tabfirst | enew | tabonly | only
|
||||||
|
|
||||||
|
set switchbuf=uselast
|
||||||
|
split
|
||||||
|
let last_winid = win_getid()
|
||||||
|
copen
|
||||||
|
exe "normal 1G\<CR>"
|
||||||
|
call assert_equal(last_winid, win_getid())
|
||||||
|
enew | only
|
||||||
|
|
||||||
set switchbuf=
|
set switchbuf=
|
||||||
edit Xqftestfile1
|
edit Xqftestfile1
|
||||||
let file1_winid = win_getid()
|
let file1_winid = win_getid()
|
||||||
|
@@ -741,6 +741,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 */
|
||||||
|
/**/
|
||||||
|
2315,
|
||||||
/**/
|
/**/
|
||||||
2314,
|
2314,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user