diff --git a/lua/nui/menu/init.lua b/lua/nui/menu/init.lua index dff06a75..28554bb8 100644 --- a/lua/nui/menu/init.lua +++ b/lua/nui/menu/init.lua @@ -283,7 +283,7 @@ function Menu:init(popup_options, options) self._.sep = options.separator self._.should_skip_item = defaults(options.should_skip_item, default_should_skip_item) - self._.prepare_item = defaults(options.prepare_item, make_default_prepare_node(self)) + self._.prepare_item = defaults(options.prepare_item, self._.prepare_item) self.menu_props = {} @@ -316,6 +316,13 @@ function Menu:init(popup_options, options) end end +---@param config? nui_layout_options +function Menu:update_layout(config) + Menu.super.update_layout(self, config) + + self._.prepare_item = defaults(self._.prepare_item, make_default_prepare_node(self)) +end + function Menu:mount() Menu.super.mount(self) diff --git a/tests/nui/menu/init_spec.lua b/tests/nui/menu/init_spec.lua index ad42db0d..b90f5d06 100644 --- a/tests/nui/menu/init_spec.lua +++ b/tests/nui/menu/init_spec.lua @@ -1,6 +1,7 @@ pcall(require, "luacov") local Menu = require("nui.menu") +local Layout = require("nui.layout") local Line = require("nui.line") local Text = require("nui.text") local h = require("tests.helpers") @@ -571,4 +572,30 @@ describe("nui.menu", function() h.assert_extmark(extmarks[4], linenr, "*", hl_group) end) end) + + describe("w/ Layout", function() + it("can be used", function() + menu = Menu({}, { + lines = { + Menu.item("A"), + }, + }) + + local layout = Layout( + { + position = "50%", + size = "100%", + }, + Layout.Box({ + Layout.Box(menu, { size = "100%" }), + }) + ) + + layout:mount() + + h.assert_buf_lines(menu.bufnr, { + "A", + }) + end) + end) end)