Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ use {
["w"] = "open_with_window_picker",
--["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing
["C"] = "close_node",
-- ['C'] = 'close_all_subnodes',
["z"] = "close_all_nodes",
--["Z"] = "expand_all_nodes",
["a"] = {
Expand Down
5 changes: 4 additions & 1 deletion doc/neo-tree.txt
Original file line number Diff line number Diff line change
Expand Up @@ -191,11 +191,14 @@ C = close_node: Close node if it is open, else close it's parent.

z = close_all_nodes: Close all nodes in the tree.

close_all_subnodes: Same as "close_node", but also recursively collapse
all subnodes, similar to "close_all_nodes"

expand_all_nodes: Expand all directory nodes in the tree recursively.

P = toggle_preview: Toggles "preview mode", see |neo-tree-preview-mode|

l = focus_preview: Focus the active preview window
l = focus_preview: Focus the active preview window

<esc> = revert_preview: Ends "preview_mode" if it is enabled, and reverts
any preview windows to what was being shown before
Expand Down
27 changes: 22 additions & 5 deletions lua/neo-tree/sources/common/commands.lua
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,6 @@ M.add_directory = function(state, callback)
fs_actions.create_directory(in_directory, callback, using_root_directory)
end

M.close_all_nodes = function(state)
renderer.collapse_all_nodes(state.tree)
renderer.redraw(state)
end

M.expand_all_nodes = function(state, toggle_directory)
if toggle_directory == nil then
toggle_directory = function(_, node)
Expand Down Expand Up @@ -159,6 +154,28 @@ M.close_node = function(state, callback)
end
end

M.close_all_subnodes = function(state)
local tree = state.tree
local node = tree:get_node()
local parent_node = tree:get_node(node:get_parent_id())
local target_node

if node:has_children() and node:is_expanded() then
target_node = node
else
target_node = parent_node
end

renderer.collapse_all_nodes(tree, target_node:get_id())
renderer.redraw(state)
renderer.focus_node(state, target_node:get_id())
end

M.close_all_nodes = function(state)
renderer.collapse_all_nodes(state.tree)
renderer.redraw(state)
end

M.close_window = function(state)
renderer.close(state)
end
Expand Down
15 changes: 7 additions & 8 deletions lua/neo-tree/ui/renderer.lua
Original file line number Diff line number Diff line change
Expand Up @@ -536,14 +536,13 @@ M.get_expanded_nodes = function(tree, root_node_id)
local node_ids = {}

local function process(node)
local id = node:get_id()
if node:is_expanded() then
local id = node:get_id()
table.insert(node_ids, id)

if node:has_children() then
for _, child in ipairs(tree:get_nodes(id)) do
process(child)
end
end
if node:has_children() then
for _, child in ipairs(tree:get_nodes(id)) do
process(child)
end
end
end
Expand All @@ -561,8 +560,8 @@ M.get_expanded_nodes = function(tree, root_node_id)
return node_ids
end

M.collapse_all_nodes = function(tree)
local expanded = M.get_expanded_nodes(tree)
M.collapse_all_nodes = function(tree, root_node_id)
local expanded = M.get_expanded_nodes(tree, root_node_id)
for _, id in ipairs(expanded) do
local node = tree:get_node(id)
if utils.is_expandable(node) then
Expand Down