aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/lua/vim.lua9
-rw-r--r--test/functional/lua/vim_spec.lua2
2 files changed, 9 insertions, 2 deletions
diff --git a/src/nvim/lua/vim.lua b/src/nvim/lua/vim.lua
index e13b44a8ed..00f7c8a48b 100644
--- a/src/nvim/lua/vim.lua
+++ b/src/nvim/lua/vim.lua
@@ -315,7 +315,14 @@ do
vim.g = make_meta_accessor(nil_wrap(a.nvim_get_var), a.nvim_set_var, a.nvim_del_var)
vim.v = make_meta_accessor(nil_wrap(a.nvim_get_vvar), a.nvim_set_vvar)
vim.o = make_meta_accessor(a.nvim_get_option, a.nvim_set_option)
- vim.env = make_meta_accessor(vim.fn.getenv, vim.fn.setenv)
+ local function getenv(k)
+ local v = vim.fn.getenv(k)
+ if v == vim.NIL then
+ return nil
+ end
+ return v
+ end
+ vim.env = make_meta_accessor(getenv, vim.fn.setenv)
-- TODO(ashkan) if/when these are available from an API, generate them
-- instead of hardcoding.
local window_options = {
diff --git a/test/functional/lua/vim_spec.lua b/test/functional/lua/vim_spec.lua
index 720a33d430..877d14f7e7 100644
--- a/test/functional/lua/vim_spec.lua
+++ b/test/functional/lua/vim_spec.lua
@@ -569,7 +569,7 @@ describe('lua stdlib', function()
vim.fn.setenv("A", 123)
]]
eq('123', funcs.luaeval "vim.env.A")
- eq(NIL, funcs.luaeval "vim.env.B")
+ eq(true, funcs.luaeval "vim.env.B == nil")
end)
it('vim.v', function()