From a8dd5c7e41dde33a5e130eb6d8945def13ebb8d6 Mon Sep 17 00:00:00 2001 From: Emanuel Krollmann <115734183+Sodastream11@users.noreply.github.com> Date: Sat, 12 Apr 2025 19:54:20 +0200 Subject: [PATCH] fix(man.lua): noisy "ENOENT" error on Windows #33409 Problem: :Man shows noisy "ENOENT: no such file or directory" error on Windows. Solution: Do some checks before calling `vim.system`. --- runtime/lua/man.lua | 11 ++++++++++- runtime/plugin/man.lua | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/runtime/lua/man.lua b/runtime/lua/man.lua index a7596bb1c3..c6b05d1412 100644 --- a/runtime/lua/man.lua +++ b/runtime/lua/man.lua @@ -8,6 +8,12 @@ local M = {} --- @param env? table --- @return string local function system(cmd, silent, env) + if vim.fn.executable(cmd[1]) == 0 then + error(string.format('not found: "%s"', cmd[1]), 0) + elseif vim.uv.fs_access(cmd[1], 'X') then + error(string.format('not executable : "%s"', cmd[1]), 0) + end + local r = vim.system(cmd, { env = env, timeout = 10000 }):wait() if not silent then @@ -577,7 +583,10 @@ function M.man_complete(arg_lead, cmd_line) return {} end - local pages = get_paths(name, sect) + local ok, pages = pcall(get_paths, name, sect) + if not ok then + return nil + end -- We check for duplicates in case the same manpage in different languages -- was found. diff --git a/runtime/plugin/man.lua b/runtime/plugin/man.lua index e707b68859..3e08353e08 100644 --- a/runtime/plugin/man.lua +++ b/runtime/plugin/man.lua @@ -8,7 +8,7 @@ vim.api.nvim_create_user_command('Man', function(params) if params.bang then man.init_pager() else - local err = man.open_page(params.count, params.smods, params.fargs) + local _, err = pcall(man.open_page, params.count, params.smods, params.fargs) if err then vim.notify('man.lua: ' .. err, vim.log.levels.ERROR) end