diff --git a/lua/fzf-lua/libuv.lua b/lua/fzf-lua/libuv.lua index 930c231..a292e85 100644 --- a/lua/fzf-lua/libuv.lua +++ b/lua/fzf-lua/libuv.lua @@ -292,12 +292,14 @@ M.spawn_stdio = function(opts, fn_transform, fn_preprocess) local stderr, stdout = nil, nil + local function stderr_write(msg) + -- prioritize writing errors to stderr + if stderr then stderr:write(msg) + else io.stderr:write(msg) end + end + local function exit(exit_code, msg) - if msg then - -- prioritize writing errors to stderr - if stderr then stderr:write(msg) - else io.stderr:write(msg) end - end + if msg then stderr_write(msg) end os.exit(exit_code) end @@ -327,7 +329,7 @@ M.spawn_stdio = function(opts, fn_transform, fn_preprocess) -- don't really need to do anything since the -- processs will be killed anyways with os.exit() if err then - io.stderr:write(("pipe:write error: %s\n"):format(err)) + stderr_write(("pipe:write error: %s\n"):format(err)) end if cb then cb(err) end end) @@ -357,7 +359,7 @@ M.spawn_stdio = function(opts, fn_transform, fn_preprocess) -- cb with an err ends the process local rc, err = io.stdout:write(data) if not rc then - io.stderr:write(("io.stdout:write error: %s\n"):format(err)) + stderr_write(("io.stdout:write error: %s\n"):format(err)) cb(err or true) else cb(nil)