MunifTanjim / nui.nvim

UI Component Library for Neovim.
MIT License
1.62k stars 57 forks source link

Submitting input inside layout results in "invalid window id" #306

Closed Sebastian-Larsson closed 11 months ago

Sebastian-Larsson commented 11 months ago

Submitting an input inside a layout results in the error below:

Error executing vim.schedule lua callback: ...m/site/pack/packer/start/nui.nvim/lua/nui/input/init.lua:125: Invalid window id: 1046
stack traceback:
        [C]: in function 'nvim_win_get_cursor'
        ...m/site/pack/packer/start/nui.nvim/lua/nui/input/init.lua:125: in function 'unmount'
        ...site/pack/packer/start/nui.nvim/lua/nui/layout/float.lua:161: in function 'unmount_box'
        .../site/pack/packer/start/nui.nvim/lua/nui/layout/init.lua:331: in function 'unmount'
        .../site/pack/packer/start/nui.nvim/lua/nui/layout/init.lua:96: in function ''
        vim/_editor.lua: in function <vim/_editor.lua:0>

The sample code to reproduce this is:

local Input = require("nui.input")
local Popup = require("nui.popup")
local Layout = require("nui.layout")

local function create_menu()

    local popup = Popup({
        style = "minimal",
        border = "rounded",
    })

    local input = Input({
        style = "minimal",
        border = "rounded",
    }, {
        prompt = "> ",
        on_close = function()
            print("Menu Closed!")
        end,
        on_submit = function(item)
            print("Menu Submitted:", item)
        end
    })

    local layout = Layout(
        {
            relative = "win",
            position = "50%",
            enter = true,
            size = {
                width = 52,
                height = 52,
            },
        },
        Layout.Box({
            Layout.Box(popup, { size = "80%" }),
            Layout.Box(input, { size = "20%" }),
        }, { dir = "col" })
    )

    return layout
end

local function start()
    local menu = create_menu()

    menu:mount()
end

start()
Sebastian-Larsson commented 11 months ago

My bad, I wasn't running the latest version.