]> granicus.if.org Git - vim/commitdiff
patch 8.0.1554: custom plugins loaded with --clean v8.0.1554
authorBram Moolenaar <Bram@vim.org>
Thu, 1 Mar 2018 20:57:32 +0000 (21:57 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 1 Mar 2018 20:57:32 +0000 (21:57 +0100)
Problem:    Custom plugins loaded with --clean.
Solution:   Do not include the home directory in 'runtimepath'.

runtime/doc/starting.txt
src/main.c
src/option.c
src/os_amiga.h
src/os_dos.h
src/os_mac.h
src/os_unix.h
src/proto/option.pro
src/structs.h
src/version.c

index 48af7f20837d32693166c291c77cb9e0bd759846..2b3418b3a5e93af111fad4d38667075611bb48a2 100644 (file)
@@ -516,6 +516,7 @@ a slash.  Thus "-R" means recovery and "-/R" readonly.
                - the |defaults.vim| script is loaded, which implies
                  'nocompatible': use Vim defaults
                - no viminfo file is read or written
+               - the home directory is excluded from 'runtimepath'
                                                        *-x*
 -x             Use encryption to read/write files.  Will prompt for a key,
                which is then stored in the 'key' option.  All writes will
index 78a30182e1faebf3dc22154e002c73abe170d2af..cf937a3205cd0f3f2590abda5a22312ed7d7cc16 100644 (file)
@@ -158,18 +158,25 @@ main
 
 #ifdef STARTUPTIME
     /* Need to find "--startuptime" before actually parsing arguments. */
-    for (i = 1; i < argc; ++i)
-    {
-       if (STRICMP(argv[i], "--startuptime") == 0 && i + 1 < argc)
+    for (i = 1; i < argc - 1; ++i)
+       if (STRICMP(argv[i], "--startuptime") == 0)
        {
            time_fd = mch_fopen(argv[i + 1], "a");
            TIME_MSG("--- VIM STARTING ---");
            break;
        }
-    }
 #endif
     starttime = time(NULL);
 
+#ifdef CLEAN_RUNTIMEPATH
+    /* Need to find "--clean" before actually parsing arguments. */
+    for (i = 1; i < argc; ++i)
+       if (STRICMP(argv[i], "--clean") == 0)
+       {
+           params.clean = TRUE;
+           break;
+       }
+#endif
     common_init(&params);
 
 #ifdef FEAT_CLIENTSERVER
@@ -1024,7 +1031,7 @@ common_init(mparm_T *paramp)
      * First find out the home directory, needed to expand "~" in options.
      */
     init_homedir();            /* find real value of $HOME */
-    set_init_1();
+    set_init_1(paramp->clean);
     TIME_MSG("inits 1");
 
 #ifdef FEAT_EVAL
@@ -1903,6 +1910,7 @@ command_line_scan(mparm_T *parmp)
                else if (STRNICMP(argv[0] + argv_idx, "clean", 5) == 0)
                {
                    parmp->use_vimrc = (char_u *)"DEFAULTS";
+                   parmp->clean = TRUE;
                    set_option_value((char_u *)"vif", 0L, (char_u *)"NONE", 0);
                }
                else if (STRNICMP(argv[0] + argv_idx, "literal", 7) == 0)
index 96620395102682a96a2742bf04ed2fe2121578cf..1b5144709123b794cc197e30155b0d7305215a30 100644 (file)
@@ -3345,9 +3345,10 @@ static int briopt_check(win_T *wp);
  * Initialize the options, first part.
  *
  * Called only once from main(), just after creating the first buffer.
+ * If "clean_arg" is TRUE Vim was started with --clean.
  */
     void
-set_init_1(void)
+set_init_1(int clean_arg)
 {
     char_u     *p;
     int                opt_idx;
@@ -3554,6 +3555,24 @@ set_init_1(void)
      */
     set_options_default(0);
 
+#ifdef CLEAN_RUNTIMEPATH
+    if (clean_arg)
+    {
+       opt_idx = findoption((char_u *)"runtimepath");
+       if (opt_idx >= 0)
+       {
+           options[opt_idx].def_val[VI_DEFAULT] = (char_u *)CLEAN_RUNTIMEPATH;
+           p_rtp = (char_u *)CLEAN_RUNTIMEPATH;
+       }
+       opt_idx = findoption((char_u *)"packpath");
+       if (opt_idx >= 0)
+       {
+           options[opt_idx].def_val[VI_DEFAULT] = (char_u *)CLEAN_RUNTIMEPATH;
+           p_pp = (char_u *)CLEAN_RUNTIMEPATH;
+       }
+    }
+#endif
+
 #ifdef FEAT_GUI
     if (found_reverse_arg)
        set_option_value((char_u *)"bg", 0L, (char_u *)"dark", 0);
index 5154e28c5cabea77615dc54cadc1623951acaee8..336cbdbaf351c8d749b3ec6ad34c2fa11a2583c7 100644 (file)
@@ -43,6 +43,9 @@
 #ifndef        DFLT_RUNTIMEPATH
 # define DFLT_RUNTIMEPATH "home:vimfiles,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,home:vimfiles/after"
 #endif
+#ifndef        CLEAN_RUNTIMEPATH
+# define CLEAN_RUNTIMEPATH "$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after"
+#endif
 
 #ifndef        BASENAMELEN
 # define BASENAMELEN   26      /* Amiga */
index 0edc3e0db6435650217f89af0b7f83409d5c6090..bb8b30848dd01fc744f671fc35c5581c23fe455d 100644 (file)
 
 #define DFLT_ERRORFILE         "errors.err"
 #define DFLT_RUNTIMEPATH       "$HOME/vimfiles,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$HOME/vimfiles/after"
+#define CLEAN_RUNTIMEPATH      "$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after"
 
 #define CASE_INSENSITIVE_FILENAME   /* ignore case when comparing file names */
 #define SPACE_IN_FILENAME
index 9fc2f92899b58a0d065dd9701800b9329376c43b..f1c7cb719b4714e759ce48ae243398deab672561 100644 (file)
 #ifndef DFLT_RUNTIMEPATH
 # define DFLT_RUNTIMEPATH      "~/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,~/.vim/after"
 #endif
+#ifndef CLEAN_RUNTIMEPATH
+# define CLEAN_RUNTIMEPATH     "$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after"
+#endif
 
 /*
  * Macintosh has plenty of memory, use large buffers
index 695affaea93e542ddd904bfcd741f6bdd8b5fdf5..414652924105e3c81d6bef607ef257774aefac5e 100644 (file)
@@ -366,11 +366,14 @@ typedef struct dsc$descriptor   DESC;
 
 #ifdef VMS
 # define DFLT_RUNTIMEPATH      "sys$login:vimfiles,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,sys$login:vimfiles/after"
+# define CLEAN_RUNTIMEPATH      "$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after"
 #else
 # ifdef RUNTIME_GLOBAL
 #  define DFLT_RUNTIMEPATH     "~/.vim," RUNTIME_GLOBAL ",$VIMRUNTIME," RUNTIME_GLOBAL "/after,~/.vim/after"
+#  define CLEAN_RUNTIMEPATH    RUNTIME_GLOBAL ",$VIMRUNTIME," RUNTIME_GLOBAL "/after"
 # else
 #  define DFLT_RUNTIMEPATH     "~/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,~/.vim/after"
+#  define CLEAN_RUNTIMEPATH    "$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after"
 # endif
 #endif
 
index 59dcd42724deb17565b8ce8ed85f3315851c62db..60a45e6d8103a5681abd48f640533270a77a66d4 100644 (file)
@@ -1,5 +1,5 @@
 /* option.c */
-void set_init_1(void);
+void set_init_1(int clean_arg);
 void set_string_default(char *name, char_u *val);
 void set_number_default(char *name, long val);
 void free_all_options(void);
index 4f6a196574a77dc49ce851e98251167fde7298e3..fe8c03609b2ef44683a8259f8d4118b9792fa11a 100644 (file)
@@ -3333,6 +3333,7 @@ typedef struct
 
     int                evim_mode;              /* started as "evim" */
     char_u     *use_vimrc;             /* vimrc from -u argument */
+    int                clean;                  /* --clean argument */
 
     int                n_commands;                  /* no. of commands from + or -c */
     char_u     *commands[MAX_ARG_CMDS];     /* commands from + or -c arg. */
index 5f6646432c07238cf90d6f320c4437f57a21ea4a..e890d110567d3ee2e2ed915e5f37c973746afc69 100644 (file)
@@ -778,6 +778,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1554,
 /**/
     1553,
 /**/