diff options
-rw-r--r-- | man/nvim.1 | 2 | ||||
-rw-r--r-- | runtime/doc/deprecated.txt | 1 | ||||
-rw-r--r-- | runtime/doc/options.txt | 16 | ||||
-rw-r--r-- | runtime/doc/starting.txt | 26 | ||||
-rw-r--r-- | src/nvim/globals.h | 1 | ||||
-rw-r--r-- | src/nvim/main.c | 5 | ||||
-rw-r--r-- | src/nvim/option_defs.h | 1 | ||||
-rw-r--r-- | src/nvim/options.lua | 18 | ||||
-rw-r--r-- | src/nvim/shada.c | 10 |
9 files changed, 60 insertions, 20 deletions
diff --git a/man/nvim.1 b/man/nvim.1 index 4d338321c4..bf60c80a37 100644 --- a/man/nvim.1 +++ b/man/nvim.1 @@ -199,6 +199,8 @@ do not read or write a ShaDa file. Skip loading plugins. Implied by .Cm -u NONE . +.It Fl -clean +Skip loading plugins and shada (viminfo) file. .It Fl o Ns Op Ar N Open .Ar N diff --git a/runtime/doc/deprecated.txt b/runtime/doc/deprecated.txt index 505ee2d7ba..9e74efabe0 100644 --- a/runtime/doc/deprecated.txt +++ b/runtime/doc/deprecated.txt @@ -62,6 +62,7 @@ Options ~ *'langnoremap'* Deprecated alias to 'nolangremap'. *'vi'* *'viminfo'* Deprecated alias to 'shada' option. +*'viminfofile'* Deprecated alias to 'shadafile' option. UI extensions~ *ui-wildmenu* Use `ext_cmdline` and `ext_popupmenu` instead. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 1c162f73f3..171fff8547 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -5000,9 +5000,9 @@ A jump table for the options with a short description can be found at |Q_op|. has been used since the last search command. *shada-n* n Name of the shada file. The name must immediately follow - the 'n'. Must be at the end of the option! If the "-i" - argument was given when starting Vim, that file name overrides - the one given here with 'shada'. Environment variables are + the 'n'. Must be at the end of the option! If the + 'shadafile' option is set, that file name overrides the one + given here with 'shada'. Environment variables are expanded when opening the file, not when setting the option. *shada-r* r Removable media. The argument is a string (up to the next @@ -5044,6 +5044,14 @@ A jump table for the options with a short description can be found at |Q_op|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. + *'shadafile'* *'sdf'* +'shadafile' 'vif' string (default: "") + global + When non-empty, overrides the file name used for |shada| (viminfo). + When equal to "NONE" no shada file will be read or written. + This option can be set with the |-i| command line flag. The |--clean| + command line flag sets it to "NONE". + *'shell'* *'sh'* *E91* 'shell' 'sh' string (default $SHELL or "sh", Windows: "cmd.exe") @@ -5822,7 +5830,7 @@ A jump table for the options with a short description can be found at |Q_op|. Watch out for errors in expressions. They may render Vim unusable! If you are stuck, hold down ':' or 'Q' to get a prompt, then quit and - edit your vimrc or whatever with "vim -u NONE" to get it right. + edit your vimrc or whatever with "vim --clean" to get it right. Examples: Emulate standard status line with 'ruler' set > diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt index fd6eeccb4a..a8ba64fda8 100644 --- a/runtime/doc/starting.txt +++ b/runtime/doc/starting.txt @@ -86,6 +86,11 @@ argument. |:version| command. See |info-message| about capturing the text. + *--clean* +--clean Equivalent to "-u NONE -i NONE": + - Skips initializations from files and environment variables. + - No 'shada' file is read or written. + *--noplugin* --noplugin Skip loading plugins. Resets the 'loadplugins' option. Note that the |-u| argument may also disable loading plugins: @@ -295,19 +300,21 @@ argument. *-u* *E282* -u {vimrc} The file {vimrc} is read for initializations. Most other - initializations are skipped; see |initialization|. This can - be used to start Vim in a special mode, with special + initializations are skipped; see |initialization|. + + This can be used to start Vim in a special mode, with special mappings and settings. A shell alias can be used to make this easy to use. For example: > alias vimc vim -u ~/.config/nvim/c_init.vim !* < Also consider using autocommands; see |autocommand|. - When {vimrc} is equal to "NONE" (all uppercase), all - initializations from files and environment variables are - skipped, including reading the |ginit.vim| file when the GUI - starts. Plugins and syntax highlighting are also skipped. - When {vimrc} is equal to "NORC" (all uppercase), this has the - same effect as "NONE", but plugins and syntax highlighting are - not skipped. + + When {vimrc} is "NONE" (all uppercase), all initializations + from files and environment variables are skipped. Plugins and + syntax highlighting are also skipped. + + When {vimrc} is "NORC" (all uppercase), this has the same + effect as "NONE", but plugins and syntax highlighting are not + skipped. *-i* -i {shada} The file {shada} is used instead of the default ShaDa @@ -482,6 +489,7 @@ accordingly. Vim proceeds in this order: Loading plugins won't be done when: - The 'loadplugins' option was reset in a vimrc file. - The |--noplugin| command line argument is used. + - The |--clean| command line argument is used. - The "-u NONE" command line argument is used |-u|. - When Vim was compiled without the |+eval| feature. Note that using "-c 'set noloadplugins'" doesn't work, because the diff --git a/src/nvim/globals.h b/src/nvim/globals.h index b529357dea..79af4a8ce3 100644 --- a/src/nvim/globals.h +++ b/src/nvim/globals.h @@ -754,7 +754,6 @@ EXTERN int skip_redraw INIT(= FALSE); /* skip redraw once */ EXTERN int do_redraw INIT(= FALSE); /* extra redraw once */ EXTERN int need_highlight_changed INIT(= true); -EXTERN char *used_shada_file INIT(= NULL); // name of the ShaDa file to use EXTERN FILE *scriptout INIT(= NULL); ///< Stream to write script to. diff --git a/src/nvim/main.c b/src/nvim/main.c index 331cfc9f61..27e2abe1ad 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -871,6 +871,9 @@ static void command_line_scan(mparm_T *parmp) } else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0) { want_argument = true; argv_idx += 11; + } else if (STRNICMP(argv[0] + argv_idx, "clean", 5) == 0) { + parmp->use_vimrc = "NONE"; + set_option_value("shadafile", 0L, "NONE", 0); } else { if (argv[0][argv_idx]) mainerr(err_opt_unknown, argv[0]); @@ -1129,7 +1132,7 @@ static void command_line_scan(mparm_T *parmp) } case 'i': { // "-i {shada}" use for shada - used_shada_file = argv[0]; + set_option_value("shadafile", 0L, argv[0], 0); break; } diff --git a/src/nvim/option_defs.h b/src/nvim/option_defs.h index 2075d2819c..3e116095fd 100644 --- a/src/nvim/option_defs.h +++ b/src/nvim/option_defs.h @@ -630,6 +630,7 @@ EXTERN long p_ur; ///< 'undoreload' EXTERN long p_uc; ///< 'updatecount' EXTERN long p_ut; ///< 'updatetime' EXTERN char_u *p_shada; ///< 'shada' +EXTERN char *p_shadafile; ///< 'shadafile' EXTERN char_u *p_vdir; ///< 'viewdir' EXTERN char_u *p_vop; ///< 'viewoptions' EXTERN unsigned vop_flags; ///< uses SSOP_ flags diff --git a/src/nvim/options.lua b/src/nvim/options.lua index a855610cc9..affddd8084 100644 --- a/src/nvim/options.lua +++ b/src/nvim/options.lua @@ -2015,6 +2015,15 @@ return { defaults={if_true={vi="", vim="!,'100,<50,s10,h"}} }, { + full_name='shadafile', abbreviation='sdf', + type='string', list='onecomma', scope={'global'}, + deny_duplicates=true, + vi_def=true, + secure=true, + varname='p_shadafile', + defaults={if_true={vi=""}} + }, + { full_name='shell', abbreviation='sh', type='string', scope={'global'}, secure=true, @@ -2633,6 +2642,15 @@ return { defaults={if_true={vi="", vim="!,'100,<50,s10,h"}} }, { + full_name='viminfofile', abbreviation='vif', + type='string', list='onecomma', scope={'global'}, + deny_duplicates=true, + vi_def=true, + secure=true, + varname='p_shadafile', + defaults={if_true={vi=""}} + }, + { full_name='virtualedit', abbreviation='ve', type='string', list='onecomma', scope={'global'}, deny_duplicates=true, diff --git a/src/nvim/shada.c b/src/nvim/shada.c index 658cd1ba46..6bbf91e0f9 100644 --- a/src/nvim/shada.c +++ b/src/nvim/shada.c @@ -856,13 +856,13 @@ static int msgpack_sd_writer_write(void *data, const char *buf, size_t len) return 0; } -/// Check whether writing to shada file was disabled with -i NONE +/// Check whether writing to shada file was disabled ("-i NONE" or "--clean"). /// /// @return true if it was disabled, false otherwise. static bool shada_disabled(void) FUNC_ATTR_PURE { - return used_shada_file != NULL && STRCMP(used_shada_file, "NONE") == 0; + return strequal(p_shadafile, "NONE"); } /// Read ShaDa file @@ -1542,14 +1542,14 @@ static char *shada_filename(const char *file) FUNC_ATTR_MALLOC FUNC_ATTR_NONNULL_RET FUNC_ATTR_WARN_UNUSED_RESULT { if (file == NULL || *file == NUL) { - if (used_shada_file != NULL) { - file = used_shada_file; + if (p_shadafile != NULL) { + file = p_shadafile; } else { if ((file = find_shada_parameter('n')) == NULL || *file == NUL) { file = shada_get_default_file(); } // XXX It used to be one level lower, so that whatever is in - // `used_shada_file` was expanded. I intentionally moved it here + // `p_shadafile` was expanded. I intentionally moved it here // because various expansions must have already be done by the shell. // If shell is not performing them then they should be done in main.c // where arguments are parsed, *not here*. |