diff options
| -rw-r--r-- | src/nvim/ex_cmds2.c | 27 | ||||
| -rw-r--r-- | src/nvim/version.c | 2 | 
2 files changed, 25 insertions, 4 deletions
| diff --git a/src/nvim/ex_cmds2.c b/src/nvim/ex_cmds2.c index 6f301658bf..8389ed9400 100644 --- a/src/nvim/ex_cmds2.c +++ b/src/nvim/ex_cmds2.c @@ -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);  } diff --git a/src/nvim/version.c b/src/nvim/version.c index c546bc0d19..896bf47a53 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -217,7 +217,7 @@ static int included_patches[] = {    // 1481 NA    // 1480,    // 1479, -  // 1478, +  1478,    // 1477,    // 1476 NA    // 1475 NA | 
