diff options
| author | Justin M. Keyes <justinkz@gmail.com> | 2017-10-15 18:29:53 +0200 | 
|---|---|---|
| committer | Justin M. Keyes <justinkz@gmail.com> | 2017-10-17 01:51:20 +0200 | 
| commit | 5baeb4a49c061472a125f98af798c522d8504fbe (patch) | |
| tree | 237e3c69fda8f4b95074823a6663443c7bcce368 /src/nvim/eval.c | |
| parent | 2f4647e77b7e8271aad1b45eb07fbabed78d9fe6 (diff) | |
| download | rneovim-5baeb4a49c061472a125f98af798c522d8504fbe.tar.gz rneovim-5baeb4a49c061472a125f98af798c522d8504fbe.tar.bz2 rneovim-5baeb4a49c061472a125f98af798c522d8504fbe.zip | |
ex-cmds: :checkhealth
Built-in `:checkhealth` checks for valid $VIMRUNTIME by attempting to
autoload `health#check()`.
closes #2977
closes #3159
Diffstat (limited to 'src/nvim/eval.c')
| -rw-r--r-- | src/nvim/eval.c | 29 | 
1 files changed, 29 insertions, 0 deletions
| diff --git a/src/nvim/eval.c b/src/nvim/eval.c index b2a0d9a767..986c4a9a17 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -22850,3 +22850,32 @@ void eval_format_source_name_line(char *buf, size_t bufsize)             (sourcing_name ? sourcing_name : (char_u *)"?"),             (sourcing_name ? sourcing_lnum : 0));  } + +/// ":checkhealth [plugins]" +void ex_checkhealth(exarg_T *eap) +{ +  bool found = !!find_func((char_u *)"health#check"); +  if (!found +      && script_autoload("health#check", sizeof("health#check") - 1, false)) { +    found = !!find_func((char_u *)"health#check"); +  } +  if (!found) { +    const char *vimruntime_env = os_getenv("VIMRUNTIME"); +    if (vimruntime_env == NULL) { +      EMSG(_("E5009: $VIMRUNTIME is empty or unset")); +      return; +    } else { +      EMSG2(_("E5009: Invalid $VIMRUNTIME: %s"), os_getenv("VIMRUNTIME")); +      return; +    } +  } + +  size_t bufsize = STRLEN(eap->arg) + strlen("CheckHealth ") + 1; +  char *buf = xmalloc(bufsize); +  snprintf(buf, bufsize, "CheckHealth %s", eap->arg); + +  do_cmdline_cmd(buf); + +  xfree(buf); +} + | 
