neovim

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

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:
Mruntime/doc/builtin.txt | 2+-
Mruntime/lua/vim/_meta/builtin_types.lua | 15+++++++++++++++
Mruntime/lua/vim/_meta/vimfn.lua | 2+-
Msrc/nvim/eval.lua | 2+-
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 = {