diff options
author | Lewis Russell <lewis6991@gmail.com> | 2021-09-23 15:00:25 +0100 |
---|---|---|
committer | Lewis Russell <lewis6991@gmail.com> | 2021-10-19 19:47:33 +0100 |
commit | 6c5e7bde9a1b207345787a60f6c37a325be26c64 (patch) | |
tree | 7164aeb001b69ab4d51853e32b16986ab70bc883 /src | |
parent | 064411ea7ff825aed3d4e01207914ed61d7ee79d (diff) | |
download | rneovim-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.lua | 13 |
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') |