neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit d837b6d50cbb7e90ac8f77a9e1ac2a69acae02c1
parent 96c494dec345f9a3dd2676048292267552e3f5f8
Author: Javier Lopez <graulopezjavier@gmail.com>
Date:   Wed,  1 Jun 2022 09:10:10 -0500

fix(checkhealth): skip vim.health #18816

Problem:
https://github.com/neovim/neovim/pull/18720#issuecomment-1142614996

The vim.health module is detected as a healthcheck, which produces spurious errors:

    vim: require("vim.health").check()
    ========================================================================
    - ERROR: Failed to run healthcheck for "vim" plugin. Exception:
      function health#check, line 20
      Vim(eval):E5108: Error executing lua [string "luaeval()"]:1: attempt to call field 'check' (a nil value)
      stack traceback:
      [string "luaeval()"]:1: in main chunk

Solution:
Skip vim.health when discovering healthchecks.

Diffstat:
Mruntime/autoload/health.vim | 5+++++
Mruntime/lua/vim/health.lua | 2++
Mtest/functional/plugin/health_spec.lua | 10+++++++++-
3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/runtime/autoload/health.vim b/runtime/autoload/health.vim @@ -171,6 +171,11 @@ function! s:get_healthcheck(plugin_names) abort for v in values(healthchecks) let output[v[0]] = v[1:] endfor + try + " vim.health is not a healthcheck, skip it + call remove(output, 'vim') + catch + endtry return output endfunction diff --git a/runtime/lua/vim/health.lua b/runtime/lua/vim/health.lua @@ -41,6 +41,8 @@ M._complete = function() vim.tbl_map(function(f) unique[f] = true end, names) + -- vim.health is this file, which is not a healthcheck + unique['vim'] = nil return vim.tbl_keys(unique) end diff --git a/test/functional/plugin/health_spec.lua b/test/functional/plugin/health_spec.lua @@ -5,7 +5,7 @@ local Screen = require('test.functional.ui.screen') local clear = helpers.clear local curbuf_contents = helpers.curbuf_contents local command = helpers.command -local eq = helpers.eq +local eq, neq = helpers.eq, helpers.neq local getcompletion = helpers.funcs.getcompletion describe(':checkhealth', function() @@ -37,6 +37,7 @@ describe(':checkhealth', function() eq('nvim', getcompletion('nvim', 'checkhealth')[1]) eq('provider', getcompletion('prov', 'checkhealth')[1]) eq('vim.lsp', getcompletion('vim.ls', 'checkhealth')[1]) + neq('vim', getcompletion('^vim', 'checkhealth')[1]) -- should not complete vim.health end) end) @@ -242,6 +243,13 @@ describe('health.vim', function() - ERROR: No healthcheck found for "non_existent_healthcheck" plugin. ]]) end) + + it("does not use vim.health as a healtcheck", function() + -- vim.health is not a healthcheck + command("checkhealth vim") + helpers.expect([[ + ERROR: No healthchecks found.]]) + end) end) end)