From 33a54d373c9a1951be962c4aef000cb68234c50b Mon Sep 17 00:00:00 2001 From: Kurama622 Date: Sat, 11 Jan 2025 13:33:42 +0800 Subject: [PATCH 1/3] fix: The menu updates the layout, but the text length does not update. --- lua/nui/menu/init.lua | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lua/nui/menu/init.lua b/lua/nui/menu/init.lua index 28554bb..e1f53ee 100644 --- a/lua/nui/menu/init.lua +++ b/lua/nui/menu/init.lua @@ -319,8 +319,22 @@ 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)) + self._.prepare_item = make_default_prepare_node(self) + if self.tree then + self.tree = Tree({ + winid = self.winid, + ns_id = self.ns_id, + nodes = self._.items, + get_node_id = function(node) + return node._id + end, + prepare_node = self._.prepare_item, + }) + + _.set_buf_options(self.bufnr, { modifiable = true, readonly = false }) + vim.api.nvim_buf_set_lines(self.bufnr, 0, -1, false, {}) + self.tree:render() + end end function Menu:mount() From 549c1909d301dc77787804a7c9206c1afab2228d Mon Sep 17 00:00:00 2001 From: Kurama622 Date: Sat, 11 Jan 2025 18:02:19 +0800 Subject: [PATCH 2/3] fix: Restore cursor position --- lua/nui/menu/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/nui/menu/init.lua b/lua/nui/menu/init.lua index e1f53ee..9cfc5d4 100644 --- a/lua/nui/menu/init.lua +++ b/lua/nui/menu/init.lua @@ -331,9 +331,11 @@ function Menu:update_layout(config) prepare_node = self._.prepare_item, }) + local pos = vim.api.nvim_win_get_cursor(self.winid) _.set_buf_options(self.bufnr, { modifiable = true, readonly = false }) vim.api.nvim_buf_set_lines(self.bufnr, 0, -1, false, {}) self.tree:render() + vim.api.nvim_win_set_cursor(self.winid, pos) end end From 846989ca3f086dfbe6deaf1f23d12f530005aca6 Mon Sep 17 00:00:00 2001 From: Kurama622 Date: Sat, 11 Jan 2025 22:12:03 +0800 Subject: [PATCH 3/3] fix: menu hide/show --- lua/nui/menu/init.lua | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/lua/nui/menu/init.lua b/lua/nui/menu/init.lua index 9cfc5d4..29f4686 100644 --- a/lua/nui/menu/init.lua +++ b/lua/nui/menu/init.lua @@ -321,21 +321,23 @@ function Menu:update_layout(config) Menu.super.update_layout(self, config) self._.prepare_item = make_default_prepare_node(self) if self.tree then - self.tree = Tree({ - winid = self.winid, - ns_id = self.ns_id, - nodes = self._.items, - get_node_id = function(node) - return node._id - end, - prepare_node = self._.prepare_item, - }) - - local pos = vim.api.nvim_win_get_cursor(self.winid) - _.set_buf_options(self.bufnr, { modifiable = true, readonly = false }) - vim.api.nvim_buf_set_lines(self.bufnr, 0, -1, false, {}) - self.tree:render() - vim.api.nvim_win_set_cursor(self.winid, pos) + if self.winid then + self.tree = Tree({ + winid = self.winid, + ns_id = self.ns_id, + nodes = self._.items, + get_node_id = function(node) + return node._id + end, + prepare_node = self._.prepare_item, + }) + + local pos = vim.api.nvim_win_get_cursor(self.winid) + _.set_buf_options(self.bufnr, { modifiable = true, readonly = false }) + vim.api.nvim_buf_set_lines(self.bufnr, 0, -1, false, {}) + self.tree:render() + vim.api.nvim_win_set_cursor(self.winid, pos) + end end end