feat(health): report ulimit info

Problem:
Nvim shows `(libuv) kqueue(): Too many open files` on macos.
ref https://github.com/neovim/neovim/issues/40238

Solution:
Add a healthcheck for this situation.
This commit is contained in:
Justin M. Keyes
2026-06-30 21:33:32 +02:00
parent d253acca35
commit 34efdadb4e
6 changed files with 143 additions and 84 deletions

View File

@@ -0,0 +1,20 @@
-- OS/process utils.
local M = {}
--- Counts (approximate) open file descriptors for this process. Works on Linux/macOS/BSD.
---@return integer? # Number of open fds, or nil if `/dev/fd` failed (fds exhausted, or unavailable/Windows).
function M.count_open_fds()
local n = 0
for _, _, err in vim.fs.dir('/dev/fd', { err = true }) do
-- If `/dev/fd` scan failed (e.g. EMFILE when fds exhausted), count would be misleading.
if err then
return nil
end
n = n + 1
end
-- Discount the scan's own descriptor.
return math.max(0, n - 1)
end
return M