aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--man/nvim.12
-rw-r--r--runtime/doc/deprecated.txt1
-rw-r--r--runtime/doc/options.txt16
-rw-r--r--runtime/doc/starting.txt26
-rw-r--r--src/nvim/globals.h1
-rw-r--r--src/nvim/main.c5
-rw-r--r--src/nvim/option_defs.h1
-rw-r--r--src/nvim/options.lua18
-rw-r--r--src/nvim/shada.c10
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*.