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:
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