diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/eval.c | 29 | ||||
| -rw-r--r-- | src/nvim/ex_cmds.lua | 6 | 
2 files changed, 35 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); +} + diff --git a/src/nvim/ex_cmds.lua b/src/nvim/ex_cmds.lua index 5a578cd088..f99954db7a 100644 --- a/src/nvim/ex_cmds.lua +++ b/src/nvim/ex_cmds.lua @@ -451,6 +451,12 @@ return {      func='ex_changes',    },    { +    command='checkhealth', +    flags=bit.bor(EXTRA, TRLBAR), +    addr_type=ADDR_LINES, +    func='ex_checkhealth', +  }, +  {      command='checkpath',      flags=bit.bor(TRLBAR, BANG, CMDWIN),      addr_type=ADDR_LINES,  | 
