vim-patch:7.4.1478

Problem:    ":loadplugin" doesn't take care of ftdetect files.
Solution:   Also load ftdetect scripts when appropriate.

1bdd42627d
This commit is contained in:
James McCoy 2016-04-26 00:24:25 -04:00
parent 8f2505e594
commit 9dc621e77d
2 changed files with 25 additions and 4 deletions

View File

@ -2375,6 +2375,21 @@ int do_in_runtimepath(char_u *name, bool all, DoInRuntimepathCB callback,
return do_in_path(p_rtp, name, all, callback, cookie);
}
// Source filetype detection scripts, if filetype.vim was already done.
static void may_do_filetypes(char_u *pat)
{
char_u *cmd = vim_strsave((char_u *)"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("augroup filetypedetect");
source_runtime(pat, TRUE);
do_cmdline_cmd("augroup END");
}
xfree(cmd);
}
static void source_pack_plugin(char_u *fname, void *cookie)
{
char_u *p6, *p5, *p4, *p3, *p2, *p1, *p;
@ -2436,17 +2451,23 @@ void source_packages(void)
{
do_in_path(p_pp, (char_u *)"pack/*/ever/*/plugin/*.vim",
true, source_pack_plugin, NULL);
may_do_filetypes((char_u *)"pack/*/ever/*/ftdetect/*.vim");
}
// ":loadplugin {name}"
void ex_loadplugin(exarg_T *eap)
{
static const char *pattern = "pack/*/opt/%s/plugin/*.vim";
static const char *plugpat = "pack/*/opt/%s/plugin/*.vim";
static const char *ftpat = "pack/*/opt/%s/ftdetect/*.vim";
size_t len = STRLEN(pattern) + STRLEN(eap->arg);
size_t len = STRLEN(ftpat) + STRLEN(eap->arg);
char *pat = xmallocz(len);
vim_snprintf(pat, len, pattern, eap->arg);
vim_snprintf(pat, len, plugpat, eap->arg);
do_in_path(p_pp, (char_u *)pat, true, source_pack_plugin, NULL);
vim_snprintf(pat, len, ftpat, eap->arg);
may_do_filetypes((char_u *)pat);
xfree(pat);
}

View File

@ -217,7 +217,7 @@ static int included_patches[] = {
// 1481 NA
// 1480,
// 1479,
// 1478,
1478,
// 1477,
// 1476 NA
// 1475 NA