feat(health): checkhealth buffer can show in a split window (#26714)

:checkhealth now respects :vertical and :horizontal.
For example:
  :vertical checkhealth foo bar
will open the healthcheck buffer in a vertical split.
This commit is contained in:
Pablo Arias
2023-12-25 01:30:56 +01:00
committed by GitHub
parent 675522af18
commit 2ff2785c39
4 changed files with 217 additions and 5 deletions

View File

@@ -268,14 +268,27 @@ end
-- Runs the specified healthchecks.
-- Runs all discovered healthchecks if plugin_names is empty.
function M._check(plugin_names)
-- splitmod controls how the healthcheck window opens: "vertical", "horizontal" or "tab"
function M._check(splitmod, plugin_names)
local healthchecks = plugin_names == '' and get_healthcheck('*') or get_healthcheck(plugin_names)
-- Create buffer and open in a tab, unless this is the default buffer when Nvim starts.
local emptybuf = vim.fn.bufnr('$') == 1 and vim.fn.getline(1) == '' and 1 == vim.fn.line('$')
local mod = emptybuf and 'buffer' or 'tab sbuffer'
local mod = function()
if splitmod == 'vertical' then
return 'vertical sbuffer'
elseif splitmod == 'horizontal' then
return 'horizontal sbuffer'
elseif emptybuf then
-- if this is the default buffer when Nvim starts, open healthcheck directly
return 'buffer'
else
-- if not specified otherwise open healthcheck in a tab
return 'tab sbuffer'
end
end
local bufnr = vim.api.nvim_create_buf(true, true)
vim.cmd(mod .. ' ' .. bufnr)
vim.cmd(mod() .. ' ' .. bufnr)
if vim.fn.bufexists('health://') == 1 then
vim.cmd.bwipe('health://')