From 532610388bb09fef6d0de8929092d4dc32f781bf Mon Sep 17 00:00:00 2001 From: Lewis Russell Date: Tue, 29 Apr 2025 10:48:18 +0100 Subject: fix(vim.system): improve error message when cwd does not exist Problem: vim.uv.spawn will emit ENOENT for either when the cmd or cwd do not exist and does not tell you which. Solution: If an error occurs, check if cwd was supplied and included in the error message if it does not exist. --- runtime/lua/vim/_system.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'runtime/lua/vim/_system.lua') diff --git a/runtime/lua/vim/_system.lua b/runtime/lua/vim/_system.lua index c5cb9b73ea..e40229de63 100644 --- a/runtime/lua/vim/_system.lua +++ b/runtime/lua/vim/_system.lua @@ -246,7 +246,13 @@ local function spawn(cmd, opts, on_exit, on_error) local handle, pid_or_err = uv.spawn(cmd, opts, on_exit) if not handle then on_error() - error(('%s: "%s"'):format(pid_or_err, cmd)) + if opts.cwd and not uv.fs_stat(opts.cwd) then + error(("%s (cwd): '%s'"):format(pid_or_err, opts.cwd)) + elseif vim.fn.executable(cmd) == 0 then + error(("%s (cmd): '%s'"):format(pid_or_err, cmd)) + else + error(pid_or_err) + end end return handle, pid_or_err --[[@as integer]] end -- cgit v1.3-3-g829e