aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-10-15 18:29:53 +0200
committerJustin M. Keyes <justinkz@gmail.com>2017-10-17 01:51:20 +0200
commit5baeb4a49c061472a125f98af798c522d8504fbe (patch)
tree237e3c69fda8f4b95074823a6663443c7bcce368 /src
parent2f4647e77b7e8271aad1b45eb07fbabed78d9fe6 (diff)
downloadrneovim-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')
-rw-r--r--src/nvim/eval.c29
-rw-r--r--src/nvim/ex_cmds.lua6
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,