Skip to content

Commit db90f59

Browse files
committed
move toggles into filters
1 parent 84d5f0a commit db90f59

File tree

4 files changed

+41
-83
lines changed

4 files changed

+41
-83
lines changed

lua/nvim-tree/actions/tree/modifiers/init.lua

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ local M = {}
22

33
M.collapse_all = require("nvim-tree.actions.tree.modifiers.collapse-all")
44
M.expand_all = require("nvim-tree.actions.tree.modifiers.expand-all")
5-
M.toggles = require("nvim-tree.actions.tree.modifiers.toggles")
65

76
function M.setup(opts)
87
M.expand_all.setup(opts)

lua/nvim-tree/actions/tree/modifiers/toggles.lua

Lines changed: 0 additions & 73 deletions
This file was deleted.

lua/nvim-tree/api.lua

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,22 @@ local function wrap_node_or_nil(fn)
8989
end
9090
end
9191

92+
---Invoke a member's method on the singleton explorer.
93+
---Print error when setup not called.
94+
---@param explorer_member string explorer member name
95+
---@param member_method string method name to invoke on member
96+
---@param ... any passed to method
97+
---@return fun(...): any
98+
local function wrap_explorer_member_args(explorer_member, member_method, ...)
99+
local method_args = ...
100+
return wrap(function(...)
101+
local explorer = core.get_explorer()
102+
if explorer then
103+
return explorer[explorer_member][member_method](explorer[explorer_member], method_args, ...)
104+
end
105+
end)
106+
end
107+
92108
---Invoke a member's method on the singleton explorer.
93109
---Print error when setup not called.
94110
---@param explorer_member string explorer member name
@@ -165,13 +181,13 @@ Api.tree.find_file = wrap(actions.tree.find_file.fn)
165181
Api.tree.search_node = wrap(actions.finders.search_node.fn)
166182
Api.tree.collapse_all = wrap(actions.tree.modifiers.collapse_all.fn)
167183
Api.tree.expand_all = wrap_node(actions.tree.modifiers.expand_all.fn)
168-
Api.tree.toggle_enable_filters = wrap(actions.tree.modifiers.toggles.enable)
169-
Api.tree.toggle_gitignore_filter = wrap(actions.tree.modifiers.toggles.git_ignored)
170-
Api.tree.toggle_git_clean_filter = wrap(actions.tree.modifiers.toggles.git_clean)
171-
Api.tree.toggle_no_buffer_filter = wrap(actions.tree.modifiers.toggles.no_buffer)
172-
Api.tree.toggle_custom_filter = wrap(actions.tree.modifiers.toggles.custom)
173-
Api.tree.toggle_hidden_filter = wrap(actions.tree.modifiers.toggles.dotfiles)
174-
Api.tree.toggle_no_bookmark_filter = wrap(actions.tree.modifiers.toggles.no_bookmark)
184+
Api.tree.toggle_enable_filters = wrap_explorer_member("filters", "toggle")
185+
Api.tree.toggle_gitignore_filter = wrap_explorer_member_args("filters", "toggle", "git_ignored")
186+
Api.tree.toggle_git_clean_filter = wrap_explorer_member_args("filters", "toggle", "git_clean")
187+
Api.tree.toggle_no_buffer_filter = wrap_explorer_member_args("filters", "toggle", "no_buffer")
188+
Api.tree.toggle_custom_filter = wrap_explorer_member_args("filters", "toggle", "custom")
189+
Api.tree.toggle_hidden_filter = wrap_explorer_member_args("filters", "toggle", "dotfiles")
190+
Api.tree.toggle_no_bookmark_filter = wrap_explorer_member_args("filters", "toggle", "no_bookmark")
175191
Api.tree.toggle_help = wrap(help.toggle)
176192
Api.tree.is_tree_buf = wrap(utils.is_nvim_tree_buf)
177193

lua/nvim-tree/explorer/filters.lua

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ local FILTER_REASON = require("nvim-tree.enum").FILTER_REASON
33

44
local Class = require("nvim-tree.classic")
55

6-
---@alias FilterTypes "custom" | "dotfiles" | "git_ignored" | "git_clean" | "no_buffer" | "no_bookmark"
6+
---@alias FilterType "custom" | "dotfiles" | "git_ignored" | "git_clean" | "no_buffer" | "no_bookmark"
77

88
---@class (exact) Filters: Class
99
---@field enabled boolean
10-
---@field states table<FilterTypes, boolean>
10+
---@field states table<FilterType, boolean>
1111
---@field private explorer Explorer
1212
---@field private exclude_list string[] filters.exclude
1313
---@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)
260260
end
261261
end
262262

263+
---Toggle a type and refresh
264+
---@param type FilterType? nil to disable all
265+
function Filters:toggle(type)
266+
if not type or self.states[type] == nil then
267+
self.enabled = not self.enabled
268+
else
269+
self.states[type] = not self.states[type]
270+
end
271+
272+
local node = self.explorer:get_node_at_cursor()
273+
self.explorer:reload_explorer()
274+
if node then
275+
utils.focus_node_or_parent(node)
276+
end
277+
end
278+
263279
return Filters

0 commit comments

Comments
 (0)