mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.2.2772: problems when restoring 'runtimepath' from a session file
Problem: Problems when restoring 'runtimepath' from a session file. Solution: Add the "skiprtp" item in 'sessionoptions'.
This commit is contained in:
@@ -6511,6 +6511,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
|||||||
global values for local options)
|
global values for local options)
|
||||||
options all options and mappings (also global values for local
|
options all options and mappings (also global values for local
|
||||||
options)
|
options)
|
||||||
|
skiprtp exclude 'runtimepath' from the options
|
||||||
resize size of the Vim window: 'lines' and 'columns'
|
resize size of the Vim window: 'lines' and 'columns'
|
||||||
sesdir the directory in which the session file is located
|
sesdir the directory in which the session file is located
|
||||||
will become the current directory (useful with
|
will become the current directory (useful with
|
||||||
|
@@ -4615,6 +4615,9 @@ makeset(FILE *fd, int opt_flags, int local_only)
|
|||||||
if ((opt_flags & OPT_GLOBAL) && optval_default(p, varp, p_cp))
|
if ((opt_flags & OPT_GLOBAL) && optval_default(p, varp, p_cp))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if ((opt_flags & OPT_SKIPRTP) && p->var == (char_u *)&p_rtp)
|
||||||
|
continue;
|
||||||
|
|
||||||
round = 2;
|
round = 2;
|
||||||
if (p->indir != PV_NONE)
|
if (p->indir != PV_NONE)
|
||||||
{
|
{
|
||||||
|
@@ -864,6 +864,7 @@ EXTERN unsigned ssop_flags;
|
|||||||
# define SSOP_CURSOR 0x4000
|
# define SSOP_CURSOR 0x4000
|
||||||
# define SSOP_TABPAGES 0x8000
|
# define SSOP_TABPAGES 0x8000
|
||||||
# define SSOP_TERMINAL 0x10000
|
# define SSOP_TERMINAL 0x10000
|
||||||
|
# define SSOP_SKIP_RTP 0x20000
|
||||||
#endif
|
#endif
|
||||||
EXTERN char_u *p_sh; // 'shell'
|
EXTERN char_u *p_sh; // 'shell'
|
||||||
EXTERN char_u *p_shcf; // 'shellcmdflag'
|
EXTERN char_u *p_shcf; // 'shellcmdflag'
|
||||||
|
@@ -34,10 +34,11 @@ static char *(p_fdo_values[]) = {"all", "block", "hor", "mark", "percent",
|
|||||||
"undo", "jump", NULL};
|
"undo", "jump", NULL};
|
||||||
#endif
|
#endif
|
||||||
#ifdef FEAT_SESSION
|
#ifdef FEAT_SESSION
|
||||||
// Also used for 'viewoptions'!
|
// Also used for 'viewoptions'! Keep in sync with SSOP_ flags.
|
||||||
static char *(p_ssop_values[]) = {"buffers", "winpos", "resize", "winsize",
|
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", "skiprtp",
|
||||||
|
NULL};
|
||||||
#endif
|
#endif
|
||||||
// Keep in sync with SWB_ flags in option.h
|
// Keep in sync with SWB_ flags in option.h
|
||||||
static char *(p_swb_values[]) = {"useopen", "usetab", "split", "newtab", "vsplit", "uselast", NULL};
|
static char *(p_swb_values[]) = {"useopen", "usetab", "split", "newtab", "vsplit", "uselast", NULL};
|
||||||
|
@@ -1224,9 +1224,17 @@ ex_mkrc(exarg_T *eap)
|
|||||||
if (!view_session
|
if (!view_session
|
||||||
|| (eap->cmdidx == CMD_mksession
|
|| (eap->cmdidx == CMD_mksession
|
||||||
&& (*flagp & SSOP_OPTIONS)))
|
&& (*flagp & SSOP_OPTIONS)))
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
int flags = OPT_GLOBAL;
|
||||||
|
|
||||||
|
#ifdef FEAT_SESSION
|
||||||
|
if (eap->cmdidx == CMD_mksession && (*flagp & SSOP_SKIP_RTP))
|
||||||
|
flags |= OPT_SKIPRTP;
|
||||||
#endif
|
#endif
|
||||||
failed |= (makemap(fd, NULL) == FAIL
|
failed |= (makemap(fd, NULL) == FAIL
|
||||||
|| makeset(fd, OPT_GLOBAL, FALSE) == FAIL);
|
|| makeset(fd, flags, FALSE) == FAIL);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef FEAT_SESSION
|
#ifdef FEAT_SESSION
|
||||||
if (!failed && view_session)
|
if (!failed && view_session)
|
||||||
|
@@ -131,6 +131,32 @@ func Test_mksession()
|
|||||||
set sessionoptions&
|
set sessionoptions&
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
def Test_mksession_skiprtp()
|
||||||
|
mksession! Xtest_mks.out
|
||||||
|
var found = 0
|
||||||
|
for line in readfile('Xtest_mks.out')
|
||||||
|
if line =~ 'set runtimepath'
|
||||||
|
found = 1
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
assert_equal(1, found)
|
||||||
|
delete('Xtest_mks.out')
|
||||||
|
|
||||||
|
set sessionoptions+=skiprtp
|
||||||
|
mksession! Xtest_mks.out
|
||||||
|
found = 0
|
||||||
|
for line in readfile('Xtest_mks.out')
|
||||||
|
if line =~ 'set runtimepath'
|
||||||
|
found = 1
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
assert_equal(0, found)
|
||||||
|
delete('Xtest_mks.out')
|
||||||
|
set sessionoptions&
|
||||||
|
enddef
|
||||||
|
|
||||||
func Test_mksession_winheight()
|
func Test_mksession_winheight()
|
||||||
new
|
new
|
||||||
set winheight=10
|
set winheight=10
|
||||||
|
@@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
2772,
|
||||||
/**/
|
/**/
|
||||||
2771,
|
2771,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -1201,6 +1201,7 @@ extern int (*dyn_libintl_wputenv)(const wchar_t *envstring);
|
|||||||
#define OPT_NOWIN 0x20 // don't set window-local options
|
#define OPT_NOWIN 0x20 // don't set window-local options
|
||||||
#define OPT_ONECOLUMN 0x40 // list options one per line
|
#define OPT_ONECOLUMN 0x40 // list options one per line
|
||||||
#define OPT_NO_REDRAW 0x80 // ignore redraw flags on option
|
#define OPT_NO_REDRAW 0x80 // ignore redraw flags on option
|
||||||
|
#define OPT_SKIPRTP 0x100 // "skiprtp" in 'sessionoptions'
|
||||||
|
|
||||||
// Magic chars used in confirm dialog strings
|
// Magic chars used in confirm dialog strings
|
||||||
#define DLG_BUTTON_SEP '\n'
|
#define DLG_BUTTON_SEP '\n'
|
||||||
|
Reference in New Issue
Block a user