Mercurial > vim
changeset 24464:a56f9c2ba51c v8.2.2772
patch 8.2.2772: problems when restoring 'runtimepath' from a session file
Commit: https://github.com/vim/vim/commit/635bd60804966803490287e97460ecdc91d5fe0a
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Apr 16 19:58:22 2021 +0200
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'.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 16 Apr 2021 20:00:05 +0200 |
parents | 754a22f6d5bc |
children | 10508ba73a4b |
files | runtime/doc/options.txt src/option.c src/option.h src/optionstr.c src/session.c src/testdir/test_mksession.vim src/version.c src/vim.h |
diffstat | 8 files changed, 46 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -6511,6 +6511,7 @@ A jump table for the options with a shor global values for local options) options all options and mappings (also global values for local options) + skiprtp exclude 'runtimepath' from the options resize size of the Vim window: 'lines' and 'columns' sesdir the directory in which the session file is located will become the current directory (useful with
--- a/src/option.c +++ b/src/option.c @@ -4615,6 +4615,9 @@ makeset(FILE *fd, int opt_flags, int loc if ((opt_flags & OPT_GLOBAL) && optval_default(p, varp, p_cp)) continue; + if ((opt_flags & OPT_SKIPRTP) && p->var == (char_u *)&p_rtp) + continue; + round = 2; if (p->indir != PV_NONE) {
--- a/src/option.h +++ b/src/option.h @@ -864,6 +864,7 @@ EXTERN unsigned ssop_flags; # define SSOP_CURSOR 0x4000 # define SSOP_TABPAGES 0x8000 # define SSOP_TERMINAL 0x10000 +# define SSOP_SKIP_RTP 0x20000 #endif EXTERN char_u *p_sh; // 'shell' EXTERN char_u *p_shcf; // 'shellcmdflag'
--- a/src/optionstr.c +++ b/src/optionstr.c @@ -34,10 +34,11 @@ static char *(p_fdo_values[]) = {"all", "undo", "jump", NULL}; #endif #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", "localoptions", "options", "help", "blank", "globals", "slash", "unix", - "sesdir", "curdir", "folds", "cursor", "tabpages", "terminal", NULL}; + "sesdir", "curdir", "folds", "cursor", "tabpages", "terminal", "skiprtp", + NULL}; #endif // Keep in sync with SWB_ flags in option.h static char *(p_swb_values[]) = {"useopen", "usetab", "split", "newtab", "vsplit", "uselast", NULL};
--- a/src/session.c +++ b/src/session.c @@ -1225,8 +1225,16 @@ ex_mkrc(exarg_T *eap) || (eap->cmdidx == CMD_mksession && (*flagp & SSOP_OPTIONS))) #endif + { + int flags = OPT_GLOBAL; + +#ifdef FEAT_SESSION + if (eap->cmdidx == CMD_mksession && (*flagp & SSOP_SKIP_RTP)) + flags |= OPT_SKIPRTP; +#endif failed |= (makemap(fd, NULL) == FAIL - || makeset(fd, OPT_GLOBAL, FALSE) == FAIL); + || makeset(fd, flags, FALSE) == FAIL); + } #ifdef FEAT_SESSION if (!failed && view_session)
--- a/src/testdir/test_mksession.vim +++ b/src/testdir/test_mksession.vim @@ -131,6 +131,32 @@ func Test_mksession() set sessionoptions& 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() new set winheight=10
--- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2772, +/**/ 2771, /**/ 2770,
--- a/src/vim.h +++ b/src/vim.h @@ -1201,6 +1201,7 @@ extern int (*dyn_libintl_wputenv)(const #define OPT_NOWIN 0x20 // don't set window-local options #define OPT_ONECOLUMN 0x40 // list options one per line #define OPT_NO_REDRAW 0x80 // ignore redraw flags on option +#define OPT_SKIPRTP 0x100 // "skiprtp" in 'sessionoptions' // Magic chars used in confirm dialog strings #define DLG_BUTTON_SEP '\n'