commit 902b689c4d57094cc8955f8274773a308b2e8f08
parent 403fcacfc16fb3a1fbb4be22f77389e0f0616a6e
Author: PRIZ ;] <voxelprismatic@pm.me>
Date: Sat, 3 May 2025 13:34:25 -0500
docs(lua): typing for vim.fn.winlayout #33817
Problem:
`any[]` means nothing, and the return value is not the same as what's
documented in the comment (eg, Lua returns `{ "row", { { "leaf", 1000 },
{ "leaf", 1001 } } }`, not `{ "row", { "leaf", 1000, "leaf", 1001 } }`)
Solution:
Create two classes (vim.fn.winlayout.leaf and vim.fn.winlayout.branch)
and one alias that links the two together.
Also: Due to LuaLS limitations, there is an empty class,
vim.fn.winlayout.empty
Signed-Off-By: VoxelPrismatic <voxelprismatic@pm.me>
Diffstat:
4 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
@@ -12106,7 +12106,7 @@ winlayout([{tabnr}]) *winlayout()*
• {tabnr} (`integer?`)
Return: ~
- (`any[]`)
+ (`vim.fn.winlayout.ret`)
winline() *winline()*
The result is a Number, which is the screen line of the cursor
diff --git a/runtime/lua/vim/_meta/builtin_types.lua b/runtime/lua/vim/_meta/builtin_types.lua
@@ -297,3 +297,18 @@
--- A list of dictionaries with information about
--- undo blocks.
--- @field entries vim.fn.undotree.entry[]
+
+--- @class vim.fn.winlayout.leaf
+--- @field [1] "leaf" Node type
+--- @field [2] integer winid
+
+--- @class vim.fn.winlayout.branch
+--- @field [1] "row" | "col" Node type
+--- @field [2] (vim.fn.winlayout.leaf|vim.fn.winlayout.branch)[] children
+
+--- @class vim.fn.winlayout.empty
+
+--- @alias vim.fn.winlayout.ret
+--- | vim.fn.winlayout.leaf
+--- | vim.fn.winlayout.branch
+--- | vim.fn.winlayout.empty
diff --git a/runtime/lua/vim/_meta/vimfn.lua b/runtime/lua/vim/_meta/vimfn.lua
@@ -11002,7 +11002,7 @@ function vim.fn.winheight(nr) end
--- <
---
--- @param tabnr? integer
---- @return any[]
+--- @return vim.fn.winlayout.ret
function vim.fn.winlayout(tabnr) end
--- The result is a Number, which is the screen line of the cursor
diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua
@@ -13321,7 +13321,7 @@ M.funcs = {
]=],
name = 'winlayout',
params = { { 'tabnr', 'integer' } },
- returns = 'any[]',
+ returns = 'vim.fn.winlayout.ret',
signature = 'winlayout([{tabnr}])',
},
winline = {