neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 1aa26f5d55550dd12c2cfd0f74618f0dcd6467ec
parent c374d7809572976c608c3042ce11f72e5d1c7fd4
Author: phanium <91544758+phanen@users.noreply.github.com>
Date:   Tue, 23 Dec 2025 23:39:22 +0800

fix(lua): separate vim.{g,b,w,t} types #37081

Problem:
When `vim.g.foo = 1`, `vim.b.foo` also appears as
a completion candidate (when use emmylua_ls).

Solution:
Define separate types.
Diffstat:
Mruntime/lua/vim/_editor.lua | 13+++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/runtime/lua/vim/_editor.lua b/runtime/lua/vim/_editor.lua @@ -410,6 +410,11 @@ vim.cmd = setmetatable({}, { --- @field [string] any --- @field [integer] vim.var_accessor +--- @class (private) vim.g: { [string]: any } +--- @class (private) vim.b: vim.var_accessor +--- @class (private) vim.w: vim.var_accessor +--- @class (private) vim.t: vim.var_accessor + -- These are the vim.env/v/g/o/bo/wo variable magic accessors. do --- @param scope string @@ -430,11 +435,11 @@ do return setmetatable({}, mt) end - vim.g = make_dict_accessor('g', false) + vim.g = make_dict_accessor('g', false) --[[@as vim.g]] vim.v = make_dict_accessor('v', false) --[[@as vim.v]] - vim.b = make_dict_accessor('b') - vim.w = make_dict_accessor('w') - vim.t = make_dict_accessor('t') + vim.b = make_dict_accessor('b') --[[@as vim.b]] + vim.w = make_dict_accessor('w') --[[@as vim.w]] + vim.t = make_dict_accessor('t') --[[@as vim.t]] end --- @deprecated