mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 11:28:22 +00:00
lua: Add buffer, window and tab accessors (#12268)
* Add buffer, window and tab accessors * Fix deletion and add tests
This commit is contained in:
@@ -332,9 +332,26 @@ do
|
|||||||
return pcall_ret(pcall(fn, ...))
|
return pcall_ret(pcall(fn, ...))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
vim.b = make_meta_accessor(
|
||||||
|
nil_wrap(function(v) return a.nvim_buf_get_var(0, v) end),
|
||||||
|
function(v, k) return a.nvim_buf_set_var(0, v, k) end,
|
||||||
|
function(v) return a.nvim_buf_del_var(0, v) end
|
||||||
|
)
|
||||||
|
vim.w = make_meta_accessor(
|
||||||
|
nil_wrap(function(v) return a.nvim_win_get_var(0, v) end),
|
||||||
|
function(v, k) return a.nvim_win_set_var(0, v, k) end,
|
||||||
|
function(v) return a.nvim_win_del_var(0, v) end
|
||||||
|
)
|
||||||
|
vim.t = make_meta_accessor(
|
||||||
|
nil_wrap(function(v) return a.nvim_tabpage_get_var(0, v) end),
|
||||||
|
function(v, k) return a.nvim_tabpage_set_var(0, v, k) end,
|
||||||
|
function(v) return a.nvim_tabpage_del_var(0, v) end
|
||||||
|
)
|
||||||
vim.g = make_meta_accessor(nil_wrap(a.nvim_get_var), a.nvim_set_var, a.nvim_del_var)
|
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.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.o = make_meta_accessor(a.nvim_get_option, a.nvim_set_option)
|
||||||
|
|
||||||
local function getenv(k)
|
local function getenv(k)
|
||||||
local v = vim.fn.getenv(k)
|
local v = vim.fn.getenv(k)
|
||||||
if v == vim.NIL then
|
if v == vim.NIL then
|
||||||
|
@@ -769,10 +769,96 @@ describe('lua stdlib', function()
|
|||||||
exec_lua [[
|
exec_lua [[
|
||||||
vim.api.nvim_set_var("testing", "hi")
|
vim.api.nvim_set_var("testing", "hi")
|
||||||
vim.api.nvim_set_var("other", 123)
|
vim.api.nvim_set_var("other", 123)
|
||||||
|
vim.api.nvim_set_var("to_delete", {hello="world"})
|
||||||
]]
|
]]
|
||||||
|
|
||||||
eq('hi', funcs.luaeval "vim.g.testing")
|
eq('hi', funcs.luaeval "vim.g.testing")
|
||||||
eq(123, funcs.luaeval "vim.g.other")
|
eq(123, funcs.luaeval "vim.g.other")
|
||||||
eq(NIL, funcs.luaeval "vim.g.nonexistant")
|
eq(NIL, funcs.luaeval "vim.g.nonexistant")
|
||||||
|
|
||||||
|
eq({hello="world"}, funcs.luaeval "vim.g.to_delete")
|
||||||
|
exec_lua [[
|
||||||
|
vim.g.to_delete = nil
|
||||||
|
]]
|
||||||
|
eq(NIL, funcs.luaeval "vim.g.to_delete")
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('vim.b', function()
|
||||||
|
exec_lua [[
|
||||||
|
vim.api.nvim_buf_set_var(0, "testing", "hi")
|
||||||
|
vim.api.nvim_buf_set_var(0, "other", 123)
|
||||||
|
vim.api.nvim_buf_set_var(0, "to_delete", {hello="world"})
|
||||||
|
]]
|
||||||
|
|
||||||
|
eq('hi', funcs.luaeval "vim.b.testing")
|
||||||
|
eq(123, funcs.luaeval "vim.b.other")
|
||||||
|
eq(NIL, funcs.luaeval "vim.b.nonexistant")
|
||||||
|
|
||||||
|
eq({hello="world"}, funcs.luaeval "vim.b.to_delete")
|
||||||
|
exec_lua [[
|
||||||
|
vim.b.to_delete = nil
|
||||||
|
]]
|
||||||
|
eq(NIL, funcs.luaeval "vim.b.to_delete")
|
||||||
|
|
||||||
|
exec_lua [[
|
||||||
|
vim.cmd "vnew"
|
||||||
|
]]
|
||||||
|
|
||||||
|
eq(NIL, funcs.luaeval "vim.b.testing")
|
||||||
|
eq(NIL, funcs.luaeval "vim.b.other")
|
||||||
|
eq(NIL, funcs.luaeval "vim.b.nonexistant")
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('vim.w', function()
|
||||||
|
exec_lua [[
|
||||||
|
vim.api.nvim_win_set_var(0, "testing", "hi")
|
||||||
|
vim.api.nvim_win_set_var(0, "other", 123)
|
||||||
|
vim.api.nvim_win_set_var(0, "to_delete", {hello="world"})
|
||||||
|
]]
|
||||||
|
|
||||||
|
eq('hi', funcs.luaeval "vim.w.testing")
|
||||||
|
eq(123, funcs.luaeval "vim.w.other")
|
||||||
|
eq(NIL, funcs.luaeval "vim.w.nonexistant")
|
||||||
|
|
||||||
|
eq({hello="world"}, funcs.luaeval "vim.w.to_delete")
|
||||||
|
exec_lua [[
|
||||||
|
vim.w.to_delete = nil
|
||||||
|
]]
|
||||||
|
eq(NIL, funcs.luaeval "vim.w.to_delete")
|
||||||
|
|
||||||
|
exec_lua [[
|
||||||
|
vim.cmd "vnew"
|
||||||
|
]]
|
||||||
|
|
||||||
|
eq(NIL, funcs.luaeval "vim.w.testing")
|
||||||
|
eq(NIL, funcs.luaeval "vim.w.other")
|
||||||
|
eq(NIL, funcs.luaeval "vim.w.nonexistant")
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('vim.t', function()
|
||||||
|
exec_lua [[
|
||||||
|
vim.api.nvim_tabpage_set_var(0, "testing", "hi")
|
||||||
|
vim.api.nvim_tabpage_set_var(0, "other", 123)
|
||||||
|
vim.api.nvim_tabpage_set_var(0, "to_delete", {hello="world"})
|
||||||
|
]]
|
||||||
|
|
||||||
|
eq('hi', funcs.luaeval "vim.t.testing")
|
||||||
|
eq(123, funcs.luaeval "vim.t.other")
|
||||||
|
eq(NIL, funcs.luaeval "vim.t.nonexistant")
|
||||||
|
|
||||||
|
eq({hello="world"}, funcs.luaeval "vim.t.to_delete")
|
||||||
|
exec_lua [[
|
||||||
|
vim.t.to_delete = nil
|
||||||
|
]]
|
||||||
|
eq(NIL, funcs.luaeval "vim.t.to_delete")
|
||||||
|
|
||||||
|
exec_lua [[
|
||||||
|
vim.cmd "tabnew"
|
||||||
|
]]
|
||||||
|
|
||||||
|
eq(NIL, funcs.luaeval "vim.t.testing")
|
||||||
|
eq(NIL, funcs.luaeval "vim.t.other")
|
||||||
|
eq(NIL, funcs.luaeval "vim.t.nonexistant")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('vim.env', function()
|
it('vim.env', function()
|
||||||
|
Reference in New Issue
Block a user