From f5dd30948e67b0bfbfe0f1023a9b0c8a0b20b486 Mon Sep 17 00:00:00 2001 From: phanium <91544758+phanen@users.noreply.github.com> Date: Sun, 16 Mar 2025 20:49:05 +0800 Subject: fix(checkhealth): handle nested lua/ directory #32918 Problem: :checkhealth fails if plugin has nested "lua/" directory Solution: trim `{runtimepath}/lua` from fullpath to get subpath (`./**/{health, health/init.lua}`) --- runtime/lua/vim/health.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'runtime') diff --git a/runtime/lua/vim/health.lua b/runtime/lua/vim/health.lua index 0d42e8fed6..75cbfdef4a 100644 --- a/runtime/lua/vim/health.lua +++ b/runtime/lua/vim/health.lua @@ -118,7 +118,13 @@ local function filepath_to_healthcheck(path) func = 'health#' .. name .. '#check' filetype = 'v' else - local subpath = path:gsub('.*/lua/', '') + local rtp = vim + .iter(vim.api.nvim_list_runtime_paths()) + :map(vim.fs.normalize) + :find(function(rtp0) + return vim.fs.relpath(rtp0, path) + end) + local subpath = path:gsub('^' .. vim.pesc(rtp .. '/lua/'), '') if vim.fs.basename(subpath) == 'health.lua' then -- */health.lua name = vim.fs.dirname(subpath) -- cgit