From 34efdadb4e865ff28e34dcce19e8abc1dd383651 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 30 Jun 2026 21:33:32 +0200 Subject: 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. --- runtime/lua/vim/_core/proc.lua | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 runtime/lua/vim/_core/proc.lua (limited to 'runtime/lua/vim/_core') diff --git a/runtime/lua/vim/_core/proc.lua b/runtime/lua/vim/_core/proc.lua new file mode 100644 index 0000000000..36bde5309a --- /dev/null +++ b/runtime/lua/vim/_core/proc.lua @@ -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 -- cgit