From febbf43e12d0f83750d950412f16f4f420e46840 Mon Sep 17 00:00:00 2001 From: Daniel Naylor Date: Wed, 16 Aug 2023 21:52:00 +0100 Subject: [PATCH 1/2] fix: expand and collapse whole folder groups --- lua/nvim-tree/lib.lua | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lua/nvim-tree/lib.lua b/lua/nvim-tree/lib.lua index 622bf8dbd36..f22d14252e0 100644 --- a/lua/nvim-tree/lib.lua +++ b/lua/nvim-tree/lib.lua @@ -81,6 +81,16 @@ function M.get_last_group_node(node) return next end +function M.get_all_nodes_in_group(node) + local next = utils.get_parent_of_group(node) + local nodes = {} + while next do + table.insert(nodes, next) + next = next.group_next + end + return nodes +end + function M.expand_or_collapse(node) if node.has_children then node.has_children = false @@ -90,8 +100,10 @@ function M.expand_or_collapse(node) core.get_explorer():expand(node) end - node = M.get_last_group_node(node) - node.open = not node.open + local open = not M.get_last_group_node(node).open + for _, n in ipairs(M.get_all_nodes_in_group(node)) do + n.open = open + end renderer.draw() end From f6045a2d87e629821cd2f337f60abb47442a7cb8 Mon Sep 17 00:00:00 2001 From: Daniel Naylor Date: Sun, 20 Aug 2023 09:06:03 +0100 Subject: [PATCH 2/2] refactor: rename some usages of `next` --- lua/nvim-tree/lib.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lua/nvim-tree/lib.lua b/lua/nvim-tree/lib.lua index f22d14252e0..0f7c72e3477 100644 --- a/lua/nvim-tree/lib.lua +++ b/lua/nvim-tree/lib.lua @@ -74,19 +74,19 @@ end -- If node is grouped, return the last node in the group. Otherwise, return the given node. function M.get_last_group_node(node) - local next = node - while next.group_next do - next = next.group_next + local next_node = node + while next_node.group_next do + next_node = next_node.group_next end - return next + return next_node end function M.get_all_nodes_in_group(node) - local next = utils.get_parent_of_group(node) + local next_node = utils.get_parent_of_group(node) local nodes = {} - while next do - table.insert(nodes, next) - next = next.group_next + while next_node do + table.insert(nodes, next_node) + next_node = next_node.group_next end return nodes end