diff options
-rw-r--r-- | src/nvim/lua/vim.lua | 9 | ||||
-rw-r--r-- | test/functional/lua/vim_spec.lua | 2 |
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() |