feat(view): add filters.git_clean, filters.no_buffer (#1784)
* feat(view): add filters.git_clean * feat(view): add filters.git_clean * feat(view): add filters.no_buffer * feat(view): filters.no_buffer misses unloaded, handles buffer in/out * feat(view): filters.no_buffer matches directories specifically * feat(view): filters.no_buffer clarify targets * feat: add placeholder filters.diagnostics_ok, refactor filters * feat(view): remove placeholder filters.diagnostics_ok
This commit is contained in:
committed by
GitHub
parent
e49fa4e529
commit
c5dc80c36b
@@ -34,7 +34,7 @@ local function update_parent_statuses(node, project, root)
|
||||
end
|
||||
end
|
||||
|
||||
function M.reload(node, status)
|
||||
function M.reload(node, git_status, unloaded_bufnr)
|
||||
local cwd = node.link_to or node.absolute_path
|
||||
local handle = vim.loop.fs_scandir(cwd)
|
||||
if type(handle) == "string" then
|
||||
@@ -44,6 +44,8 @@ function M.reload(node, status)
|
||||
|
||||
local ps = log.profile_start("reload %s", node.absolute_path)
|
||||
|
||||
local filter_status = filters.prepare(git_status, unloaded_bufnr)
|
||||
|
||||
if node.group_next then
|
||||
node.nodes = { node.group_next }
|
||||
node.group_next = nil
|
||||
@@ -71,7 +73,7 @@ function M.reload(node, status)
|
||||
|
||||
local abs = utils.path_join { cwd, name }
|
||||
t = t or (fs_stat_cached(abs) or {}).type
|
||||
if not filters.should_ignore(abs) and not filters.should_ignore_git(abs, status.files) then
|
||||
if not filters.should_filter(abs, filter_status) then
|
||||
child_names[abs] = true
|
||||
|
||||
-- Recreate node if type changes.
|
||||
@@ -112,7 +114,7 @@ function M.reload(node, status)
|
||||
end
|
||||
|
||||
node.nodes = vim.tbl_map(
|
||||
update_status(nodes_by_path, node_ignored, status),
|
||||
update_status(nodes_by_path, node_ignored, git_status),
|
||||
vim.tbl_filter(function(n)
|
||||
if child_names[n.absolute_path] then
|
||||
return child_names[n.absolute_path]
|
||||
@@ -127,7 +129,7 @@ function M.reload(node, status)
|
||||
local child_folder_only = common.has_one_child_folder(node) and node.nodes[1]
|
||||
if M.config.group_empty and not is_root and child_folder_only then
|
||||
node.group_next = child_folder_only
|
||||
local ns = M.reload(child_folder_only, status)
|
||||
local ns = M.reload(child_folder_only, git_status)
|
||||
node.nodes = ns or {}
|
||||
log.profile_end(ps, "reload %s", node.absolute_path)
|
||||
return ns
|
||||
|
||||
Reference in New Issue
Block a user