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