static void
may_do_filetypes(char_u *pat)
{
- char_u *cmd = vim_strsave((char_u *)"did_load_filetypes");
+ char_u *cmd = vim_strsave((char_u *)"g:did_load_filetypes");
/* If runtime/filetype.vim wasn't loaded yet, the scripts will be found
* when it loads. */
if (cmd != NULL && eval_to_number(cmd) > 0)
{
do_cmdline_cmd((char_u *)"augroup filetypedetect");
- source_runtime(pat, TRUE);
+ do_in_path(p_pp, pat, TRUE, source_callback, NULL);
do_cmdline_cmd((char_u *)"augroup END");
}
vim_free(cmd);
if (p_rtp[keep] != NUL)
mch_memmove(new_rtp + keep + 1 + addlen, p_rtp + keep,
oldlen - keep + 1);
- free_string_option(p_rtp);
- p_rtp = new_rtp;
+ set_option_value((char_u *)"rtp", 0L, new_rtp, 0);
+ vim_free(new_rtp);
}
*p2 = c;
--- /dev/null
+" Tests for :loadplugin
+
+func Test_loadplugin()
+ let topdir = expand('%:h') . '/Xdir'
+ exe 'set packpath=' . topdir
+ let plugdir = topdir . '/pack/mine/opt/mytest'
+ call mkdir(plugdir . '/plugin', 'p')
+ call mkdir(plugdir . '/ftdetect', 'p')
+ filetype on
+ try
+ exe 'split ' . plugdir . '/plugin/test.vim'
+ call setline(1, 'let g:plugin_works = 42')
+ wq
+
+ exe 'split ' . plugdir . '/ftdetect/test.vim'
+ call setline(1, 'let g:ftdetect_works = 17')
+ wq
+
+ loadplugin mytest
+ call assert_true(42, g:plugin_works)
+ call assert_true(17, g:ftdetect_works)
+ finally
+ call delete(topdir, 'rf')
+ endtry
+endfunc