1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-04 06:40:06 +08:00
SpaceVim/bundle/nvim-tree.lua/lua/nvim-tree/actions/collapse-all.lua

44 lines
943 B
Lua
Raw Normal View History

2022-05-19 09:03:59 +08:00
local renderer = require "nvim-tree.renderer"
local utils = require "nvim-tree.utils"
local core = require "nvim-tree.core"
local M = {}
function M.fn(keep_buffers)
if not core.get_explorer() then
return
end
local buffer_paths = {}
for _, buffer in ipairs(vim.api.nvim_list_bufs()) do
table.insert(buffer_paths, vim.api.nvim_buf_get_name(buffer))
end
local function iter(nodes)
for _, node in pairs(nodes) do
if node.open then
local new_open = false
if keep_buffers == true then
for _, buffer_path in ipairs(buffer_paths) do
local matches = utils.str_find(buffer_path, node.absolute_path)
if matches then
new_open = true
end
end
end
node.open = new_open
end
if node.nodes then
iter(node.nodes)
end
end
end
iter(core.get_explorer().nodes)
renderer.draw()
end
return M