aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2021-09-23 15:00:25 +0100
committerLewis Russell <lewis6991@gmail.com>2021-10-19 19:47:33 +0100
commit6c5e7bde9a1b207345787a60f6c37a325be26c64 (patch)
tree7164aeb001b69ab4d51853e32b16986ab70bc883 /src
parent064411ea7ff825aed3d4e01207914ed61d7ee79d (diff)
downloadrneovim-6c5e7bde9a1b207345787a60f6c37a325be26c64.tar.gz
rneovim-6c5e7bde9a1b207345787a60f6c37a325be26c64.tar.bz2
rneovim-6c5e7bde9a1b207345787a60f6c37a325be26c64.zip
feat(lua): allow passing handles to vim.b/w/t
vim.bo can target a specific buffer by indexing with a number, e.g: `vim.bo[2].filetype` can get/set the filetype for buffer 2. This change replicates that behaviour for the variable namespace.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/lua/vim.lua13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/nvim/lua/vim.lua b/src/nvim/lua/vim.lua
index 51b7430957..30c7034209 100644
--- a/src/nvim/lua/vim.lua
+++ b/src/nvim/lua/vim.lua
@@ -323,22 +323,25 @@ end
do
local validate = vim.validate
- local function make_dict_accessor(scope)
+ local function make_dict_accessor(scope, handle)
validate {
scope = {scope, 's'};
}
local mt = {}
function mt:__newindex(k, v)
- return vim._setvar(scope, 0, k, v)
+ return vim._setvar(scope, handle or 0, k, v)
end
function mt:__index(k)
- return vim._getvar(scope, 0, k)
+ if handle == nil and type(k) == 'number' then
+ return make_dict_accessor(scope, k)
+ end
+ return vim._getvar(scope, handle or 0, k)
end
return setmetatable({}, mt)
end
- vim.g = make_dict_accessor('g')
- vim.v = make_dict_accessor('v')
+ vim.g = make_dict_accessor('g', false)
+ vim.v = make_dict_accessor('v', false)
vim.b = make_dict_accessor('b')
vim.w = make_dict_accessor('w')
vim.t = make_dict_accessor('t')