fix(vim.system): env=nil passes env=nil to uv.spawn

731e616a79 made it so passing `{env = nil, clear_env = true }` would
pass `{env = {}}` to `vim.uv.spawn`.

However this is not what `clear_env` is (arguably) supposed to do.
If `env=nil` then that implies the uses wants `vim.uv.spawn()` to use
the default environment. Adding `clear_env = true` simply prevents
`NVIM` (the base environment) from being added.

Fixes #34730

(cherry picked from commit 4eebc46930)
This commit is contained in:
Lewis Russell
2025-07-02 12:08:48 +01:00
committed by github-actions[bot]
parent 2d3517012a
commit e732cbe36c
4 changed files with 32 additions and 4 deletions

View File

@@ -210,13 +210,18 @@ end
--- @param clear_env? boolean
--- @return string[]?
local function setup_env(env, clear_env)
if not env and clear_env then
return
end
env = env or {}
if not clear_env then
--- @type table<string,string|number>
env = vim.tbl_extend('force', base_env(), env or {})
env = vim.tbl_extend('force', base_env(), env)
end
local renv = {} --- @type string[]
for k, v in pairs(env or {}) do
for k, v in pairs(env) do
renv[#renv + 1] = string.format('%s=%s', k, tostring(v))
end