move toggles into filters
This commit is contained in:
@@ -2,7 +2,6 @@ local M = {}
|
|||||||
|
|
||||||
M.collapse_all = require("nvim-tree.actions.tree.modifiers.collapse-all")
|
M.collapse_all = require("nvim-tree.actions.tree.modifiers.collapse-all")
|
||||||
M.expand_all = require("nvim-tree.actions.tree.modifiers.expand-all")
|
M.expand_all = require("nvim-tree.actions.tree.modifiers.expand-all")
|
||||||
M.toggles = require("nvim-tree.actions.tree.modifiers.toggles")
|
|
||||||
|
|
||||||
function M.setup(opts)
|
function M.setup(opts)
|
||||||
M.expand_all.setup(opts)
|
M.expand_all.setup(opts)
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
local utils = require("nvim-tree.utils")
|
|
||||||
local core = require("nvim-tree.core")
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
---@param explorer Explorer
|
|
||||||
local function reload(explorer)
|
|
||||||
local node = explorer:get_node_at_cursor()
|
|
||||||
explorer:reload_explorer()
|
|
||||||
if node then
|
|
||||||
utils.focus_node_or_parent(node)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function wrap_explorer(fn)
|
|
||||||
return function(...)
|
|
||||||
local explorer = core.get_explorer()
|
|
||||||
if explorer then
|
|
||||||
return fn(explorer, ...)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param explorer Explorer
|
|
||||||
local function custom(explorer)
|
|
||||||
explorer.filters.states.custom = not explorer.filters.states.custom
|
|
||||||
reload(explorer)
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param explorer Explorer
|
|
||||||
local function git_ignored(explorer)
|
|
||||||
explorer.filters.states.git_ignored = not explorer.filters.states.git_ignored
|
|
||||||
reload(explorer)
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param explorer Explorer
|
|
||||||
local function git_clean(explorer)
|
|
||||||
explorer.filters.states.git_clean = not explorer.filters.states.git_clean
|
|
||||||
reload(explorer)
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param explorer Explorer
|
|
||||||
local function no_buffer(explorer)
|
|
||||||
explorer.filters.states.no_buffer = not explorer.filters.states.no_buffer
|
|
||||||
reload(explorer)
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param explorer Explorer
|
|
||||||
local function no_bookmark(explorer)
|
|
||||||
explorer.filters.states.no_bookmark = not explorer.filters.states.no_bookmark
|
|
||||||
reload(explorer)
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param explorer Explorer
|
|
||||||
local function dotfiles(explorer)
|
|
||||||
explorer.filters.states.dotfiles = not explorer.filters.states.dotfiles
|
|
||||||
reload(explorer)
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param explorer Explorer
|
|
||||||
local function enable(explorer)
|
|
||||||
explorer.filters.enabled = not explorer.filters.enabled
|
|
||||||
reload(explorer)
|
|
||||||
end
|
|
||||||
|
|
||||||
M.custom = wrap_explorer(custom)
|
|
||||||
M.git_ignored = wrap_explorer(git_ignored)
|
|
||||||
M.git_clean = wrap_explorer(git_clean)
|
|
||||||
M.no_buffer = wrap_explorer(no_buffer)
|
|
||||||
M.no_bookmark = wrap_explorer(no_bookmark)
|
|
||||||
M.dotfiles = wrap_explorer(dotfiles)
|
|
||||||
M.enable = wrap_explorer(enable)
|
|
||||||
|
|
||||||
return M
|
|
||||||
@@ -89,6 +89,22 @@ local function wrap_node_or_nil(fn)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---Invoke a member's method on the singleton explorer.
|
||||||
|
---Print error when setup not called.
|
||||||
|
---@param explorer_member string explorer member name
|
||||||
|
---@param member_method string method name to invoke on member
|
||||||
|
---@param ... any passed to method
|
||||||
|
---@return fun(...): any
|
||||||
|
local function wrap_explorer_member_args(explorer_member, member_method, ...)
|
||||||
|
local method_args = ...
|
||||||
|
return wrap(function(...)
|
||||||
|
local explorer = core.get_explorer()
|
||||||
|
if explorer then
|
||||||
|
return explorer[explorer_member][member_method](explorer[explorer_member], method_args, ...)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
---Invoke a member's method on the singleton explorer.
|
---Invoke a member's method on the singleton explorer.
|
||||||
---Print error when setup not called.
|
---Print error when setup not called.
|
||||||
---@param explorer_member string explorer member name
|
---@param explorer_member string explorer member name
|
||||||
@@ -165,13 +181,13 @@ Api.tree.find_file = wrap(actions.tree.find_file.fn)
|
|||||||
Api.tree.search_node = wrap(actions.finders.search_node.fn)
|
Api.tree.search_node = wrap(actions.finders.search_node.fn)
|
||||||
Api.tree.collapse_all = wrap(actions.tree.modifiers.collapse_all.fn)
|
Api.tree.collapse_all = wrap(actions.tree.modifiers.collapse_all.fn)
|
||||||
Api.tree.expand_all = wrap_node(actions.tree.modifiers.expand_all.fn)
|
Api.tree.expand_all = wrap_node(actions.tree.modifiers.expand_all.fn)
|
||||||
Api.tree.toggle_enable_filters = wrap(actions.tree.modifiers.toggles.enable)
|
Api.tree.toggle_enable_filters = wrap_explorer_member("filters", "toggle")
|
||||||
Api.tree.toggle_gitignore_filter = wrap(actions.tree.modifiers.toggles.git_ignored)
|
Api.tree.toggle_gitignore_filter = wrap_explorer_member_args("filters", "toggle", "git_ignored")
|
||||||
Api.tree.toggle_git_clean_filter = wrap(actions.tree.modifiers.toggles.git_clean)
|
Api.tree.toggle_git_clean_filter = wrap_explorer_member_args("filters", "toggle", "git_clean")
|
||||||
Api.tree.toggle_no_buffer_filter = wrap(actions.tree.modifiers.toggles.no_buffer)
|
Api.tree.toggle_no_buffer_filter = wrap_explorer_member_args("filters", "toggle", "no_buffer")
|
||||||
Api.tree.toggle_custom_filter = wrap(actions.tree.modifiers.toggles.custom)
|
Api.tree.toggle_custom_filter = wrap_explorer_member_args("filters", "toggle", "custom")
|
||||||
Api.tree.toggle_hidden_filter = wrap(actions.tree.modifiers.toggles.dotfiles)
|
Api.tree.toggle_hidden_filter = wrap_explorer_member_args("filters", "toggle", "dotfiles")
|
||||||
Api.tree.toggle_no_bookmark_filter = wrap(actions.tree.modifiers.toggles.no_bookmark)
|
Api.tree.toggle_no_bookmark_filter = wrap_explorer_member_args("filters", "toggle", "no_bookmark")
|
||||||
Api.tree.toggle_help = wrap(help.toggle)
|
Api.tree.toggle_help = wrap(help.toggle)
|
||||||
Api.tree.is_tree_buf = wrap(utils.is_nvim_tree_buf)
|
Api.tree.is_tree_buf = wrap(utils.is_nvim_tree_buf)
|
||||||
|
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ local FILTER_REASON = require("nvim-tree.enum").FILTER_REASON
|
|||||||
|
|
||||||
local Class = require("nvim-tree.classic")
|
local Class = require("nvim-tree.classic")
|
||||||
|
|
||||||
---@alias FilterTypes "custom" | "dotfiles" | "git_ignored" | "git_clean" | "no_buffer" | "no_bookmark"
|
---@alias FilterType "custom" | "dotfiles" | "git_ignored" | "git_clean" | "no_buffer" | "no_bookmark"
|
||||||
|
|
||||||
---@class (exact) Filters: Class
|
---@class (exact) Filters: Class
|
||||||
---@field enabled boolean
|
---@field enabled boolean
|
||||||
---@field states table<FilterTypes, boolean>
|
---@field states table<FilterType, boolean>
|
||||||
---@field private explorer Explorer
|
---@field private explorer Explorer
|
||||||
---@field private exclude_list string[] filters.exclude
|
---@field private exclude_list string[] filters.exclude
|
||||||
---@field private ignore_list table<string, boolean> filters.custom string table
|
---@field private ignore_list table<string, boolean> filters.custom string table
|
||||||
@@ -260,4 +260,20 @@ function Filters:should_filter_as_reason(path, fs_stat, status)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---Toggle a type and refresh
|
||||||
|
---@param type FilterType? nil to disable all
|
||||||
|
function Filters:toggle(type)
|
||||||
|
if not type or self.states[type] == nil then
|
||||||
|
self.enabled = not self.enabled
|
||||||
|
else
|
||||||
|
self.states[type] = not self.states[type]
|
||||||
|
end
|
||||||
|
|
||||||
|
local node = self.explorer:get_node_at_cursor()
|
||||||
|
self.explorer:reload_explorer()
|
||||||
|
if node then
|
||||||
|
utils.focus_node_or_parent(node)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return Filters
|
return Filters
|
||||||
|
|||||||
Reference in New Issue
Block a user