Skip to content

Commit 0074120

Browse files
fix: expand and collapse whole folder groups (#2380)
* fix: expand and collapse whole folder groups * refactor: rename some usages of `next` --------- Co-authored-by: Alexander Courtis <alex@courtis.org>
1 parent b144b33 commit 0074120

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

lua/nvim-tree/lib.lua

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,21 @@ end
7474

7575
-- If node is grouped, return the last node in the group. Otherwise, return the given node.
7676
function M.get_last_group_node(node)
77-
local next = node
78-
while next.group_next do
79-
next = next.group_next
77+
local next_node = node
78+
while next_node.group_next do
79+
next_node = next_node.group_next
8080
end
81-
return next
81+
return next_node
82+
end
83+
84+
function M.get_all_nodes_in_group(node)
85+
local next_node = utils.get_parent_of_group(node)
86+
local nodes = {}
87+
while next_node do
88+
table.insert(nodes, next_node)
89+
next_node = next_node.group_next
90+
end
91+
return nodes
8292
end
8393

8494
function M.expand_or_collapse(node)
@@ -90,8 +100,10 @@ function M.expand_or_collapse(node)
90100
core.get_explorer():expand(node)
91101
end
92102

93-
node = M.get_last_group_node(node)
94-
node.open = not node.open
103+
local open = not M.get_last_group_node(node).open
104+
for _, n in ipairs(M.get_all_nodes_in_group(node)) do
105+
n.open = open
106+
end
95107

96108
renderer.draw()
97109
end

0 commit comments

Comments
 (0)