From 1aa26f5d55550dd12c2cfd0f74618f0dcd6467ec Mon Sep 17 00:00:00 2001 From: phanium <91544758+phanen@users.noreply.github.com> Date: Tue, 23 Dec 2025 23:39:22 +0800 Subject: [PATCH] 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. --- runtime/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 index d84f80de3f..ccc18d5cf4 100644 --- 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