patch 8.0.0716: not easy to start Vim cleanly
Problem: Not easy to start Vim cleanly without changing the viminfo file.
Not possible to know whether the -i command line flag was used.
Solution: Add the --clean command line argument. Add the 'viminfofile'
option. Add "-u DEFAULTS".
diff --git a/src/main.c b/src/main.c
index 67c0a30..6e21f73 100644
--- a/src/main.c
+++ b/src/main.c
@@ -433,7 +433,9 @@
#ifndef NO_VIM_MAIN
/* Reset 'loadplugins' for "-u NONE" before "--cmd" arguments.
* Allows for setting 'loadplugins' there. */
- if (params.use_vimrc != NULL && STRCMP(params.use_vimrc, "NONE") == 0)
+ if (params.use_vimrc != NULL
+ && (STRCMP(params.use_vimrc, "NONE") == 0
+ || STRCMP(params.use_vimrc, "DEFAULTS") == 0))
p_lpl = FALSE;
/* Execute --cmd arguments. */
@@ -1869,6 +1871,7 @@
case '-': /* "--" don't take any more option arguments */
/* "--help" give help message */
/* "--version" give version message */
+ /* "--clean" clean context */
/* "--literal" take files literally */
/* "--nofork" don't fork */
/* "--not-a-term" don't warn for not a term */
@@ -1886,6 +1889,11 @@
msg_didout = FALSE;
mch_exit(0);
}
+ else if (STRNICMP(argv[0] + argv_idx, "clean", 5) == 0)
+ {
+ parmp->use_vimrc = (char_u *)"DEFAULTS";
+ set_option_value((char_u *)"vif", 0L, (char_u *)"NONE", 0);
+ }
else if (STRNICMP(argv[0] + argv_idx, "literal", 7) == 0)
{
#ifdef EXPAND_FILENAMES
@@ -2318,7 +2326,7 @@
#endif
case 'i': /* "-i {viminfo}" use for viminfo */
- use_viminfo = (char_u *)argv[0];
+ set_option_value((char_u *)"vif", 0L, (char_u *)argv[0], 0);
break;
case 's': /* "-s {scriptin}" read from script file */
@@ -2988,7 +2996,9 @@
*/
if (parmp->use_vimrc != NULL)
{
- if (STRCMP(parmp->use_vimrc, "NONE") == 0
+ if (STRCMP(parmp->use_vimrc, "DEFAULTS") == 0)
+ do_source((char_u *)VIM_DEFAULTS_FILE, FALSE, DOSO_NONE);
+ else if (STRCMP(parmp->use_vimrc, "NONE") == 0
|| STRCMP(parmp->use_vimrc, "NORC") == 0)
{
#ifdef FEAT_GUI
@@ -3383,6 +3393,7 @@
#ifdef FEAT_VIMINFO
main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
#endif
+ main_msg(_("--clean\t\t'nocompatible', Vim defaults, no plugins, no viminfo"));
main_msg(_("-h or --help\tPrint Help (this message) and exit"));
main_msg(_("--version\t\tPrint version information and exit"));