]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.1163: $MYVIMDIR is set too late v9.1.1163
authorChristian Brabandt <cb@256bit.org>
Sat, 1 Mar 2025 15:30:33 +0000 (16:30 +0100)
committerChristian Brabandt <cb@256bit.org>
Sat, 1 Mar 2025 15:30:33 +0000 (16:30 +0100)
Problem:  $MYVIMDIR is set too late and not available while sourcing
          runtime files (Maxim Kim, after v9.1.1159)
Solution: Also set it when $MYVIMRC file is found

fixes: #16764
closes: #16767

Signed-off-by: Christian Brabandt <cb@256bit.org>
src/option.c
src/optionstr.c
src/proto/optionstr.pro
src/testdir/test_xdg.vim
src/version.c

index fa34546800c850644388e2383828168f31bf0f8b..f61d7269909b7e19edd23587b7a76e345a7840bf 100644 (file)
@@ -8420,6 +8420,8 @@ vimrc_found(char_u *fname, char_u *envname)
                vim_setenv(envname, p);
                vim_free(p);
            }
+           // Set $MYVIMDIR
+           export_myvimdir();
        }
        else if (dofree)
            vim_free(p);
index 02806b66a6394fc95ceedd8922e292761ccd22ac..f4daabac5774bf6d95158e03b0ec1cb7c9ca64b8 100644 (file)
@@ -135,7 +135,6 @@ static char *(p_sws_values[]) = {"fsync", "sync", NULL};
 
 static int check_opt_strings(char_u *val, char **values, int list);
 static int opt_strings_flags(char_u *val, char **values, unsigned *flagp, int list);
-static void export_myvimdir(void);
 
 /*
  * After setting various option values: recompute variables that depend on
@@ -4817,7 +4816,7 @@ restore_shm_value(void)
 /*
  * Export the environment variable $MYVIMDIR to the first item in runtimepath
  */
-    static void
+    void
 export_myvimdir()
 {
     int                dofree = FALSE;
index 75a8d73b63b1021a33d22986ff5be107447dbdbc..11b9d057c9ddae6b464f673cec99882233f96d1a 100644 (file)
@@ -198,4 +198,5 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char_u *
 int check_ff_value(char_u *p);
 void save_clear_shm_value(void);
 void restore_shm_value(void);
+void export_myvimdir(void);
 /* vim: set ft=c : */
index 15f82e2f6a3d76d733aff70940f8ef99b6b44cbf..b7abd04e6d831f025d91d406fe67081a1ed2688e 100644 (file)
@@ -21,7 +21,7 @@ func Test_xdg_rc_detection()
   let rc = s:get_rcs()
   let before =<< trim CODE
     call writefile([expand('$MYVIMRC')], "XMY_VIMRC")
-    call writefile([expand('$MYVIMRCDIR')], "XMY_VIMDIR")
+    call writefile([expand('$MYVIMDIR')], "XMY_VIMDIR")
     quit!
   CODE
   call RunVim(before, [], "")
@@ -58,21 +58,30 @@ func Test_xdg_runtime_files()
   " g:rc_one|two|three|four is to verify, that the other
   " init files are not sourced
   " g:rc is to verify which rc file has been loaded.
+  " g:rc_vimdir is to verify $MYVIMDIR is set and valid
   let file1 =<< trim CODE
     let g:rc_one = 'one'
     let g:rc = '.vimrc'
+    let g:rc_vimdir = expand('~/.vim/')
+    call assert_equal(g:rc_vimdir, $MYVIMDIR)
   CODE
   let file2 =<< trim CODE
     let g:rc_two = 'two'
     let g:rc = '.vim/vimrc'
+    let g:rc_vimdir = expand('~/.vim/')
+    call assert_equal(g:rc_vimdir, $MYVIMDIR)
   CODE
   let file3 =<< trim CODE
     let g:rc_three = 'three'
     let g:rc = '.config/vim/vimrc'
+    let g:rc_vimdir = expand('~/.config/vim/')
+    call assert_equal(g:rc_vimdir, $MYVIMDIR)
   CODE
   let file4 =<< trim CODE
     let g:rc_four = 'four'
     let g:rc = 'xdg/vim/vimrc'
+    let g:rc_vimdir = expand('~/xdg/vim/')
+    call assert_equal(g:rc_vimdir, $MYVIMDIR)
   CODE
   call writefile(file1, rc1)
   call writefile(file2, rc2)
@@ -87,7 +96,7 @@ func Test_xdg_runtime_files()
     call assert_match('XfakeHOME/\.vimrc', $MYVIMRC)
     call assert_match('XfakeHOME/.vim/', $MYVIMDIR)
     call filter(g:, {idx, _ -> idx =~ '^rc'})
-    call assert_equal(#{rc_one: 'one', rc: '.vimrc'}, g:)
+    call assert_equal(#{rc_one: 'one', rc: '.vimrc', rc_vimdir: $MYVIMDIR}, g:)
     call assert_match('XfakeHOME/\.vim/view', &viewdir)
     call writefile(v:errors, 'Xresult')
     quit
@@ -103,7 +112,7 @@ func Test_xdg_runtime_files()
     call assert_match('XfakeHOME/\.vim/vimrc', $MYVIMRC)
     call assert_match('XfakeHOME/\.vim/', $MYVIMDIR)
     call filter(g:, {idx, _ -> idx =~ '^rc'})
-    call assert_equal(#{rc_two: 'two', rc: '.vim/vimrc'}, g:)
+    call assert_equal(#{rc_two: 'two', rc: '.vim/vimrc', rc_vimdir: $MYVIMDIR}, g:)
     call assert_match('XfakeHOME/\.vim/view', &viewdir)
     call writefile(v:errors, 'Xresult')
     quit
@@ -123,7 +132,7 @@ func Test_xdg_runtime_files()
     call assert_match('XfakeHOME/\.config/vim/vimrc', $MYVIMRC, msg)
     call assert_match('XfakeHOME/\.config/vim/', $MYVIMDIR, msg)
     call filter(g:, {idx, _ -> idx =~ '^rc'})
-    call assert_equal(#{rc_three: 'three', rc: '.config/vim/vimrc'}, g:)
+    call assert_equal(#{rc_three: 'three', rc: '.config/vim/vimrc', rc_vimdir: $MYVIMDIR}, g:)
     call assert_match('XfakeHOME/\.config/vim/view', &viewdir)
     call writefile(v:errors, 'Xresult')
     quit
@@ -141,7 +150,7 @@ func Test_xdg_runtime_files()
     call assert_match('XfakeHOME/xdg/vim/vimrc', $MYVIMRC, msg)
     call assert_match('XfakeHOME/xdg/vim/', $MYVIMDIR, msg)
     call filter(g:, {idx, _ -> idx =~ '^rc'})
-    call assert_equal(#{rc_four: 'four', rc: 'xdg/vim/vimrc'}, g:)
+    call assert_equal(#{rc_four: 'four', rc: 'xdg/vim/vimrc', rc_vimdir: $MYVIMDIR}, g:)
     call assert_match('XfakeHOME/xdg/vim/view, &viewdir)
     call writefile(v:errors, 'Xresult')
     quit
index e95cf7e064742d6f79fab6c25a45dad79b0a51ed..25c29256c82955a0d92c1ec813106f2749f4312d 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1163,
 /**/
     1162,
 /**/