Skip to content

Commit 2da1f26

Browse files
committed
feat: toggle filters
1 parent 164f11d commit 2da1f26

File tree

6 files changed

+22
-0
lines changed

6 files changed

+22
-0
lines changed

doc/nvim-tree-lua.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ Show the mappings: `g?`
165165
`>` Next Sibling |nvim-tree-api.node.navigate.sibling.next()|
166166
`<` Previous Sibling |nvim-tree-api.node.navigate.sibling.prev()|
167167
`.` Run Command |nvim-tree-api.node.run.cmd()|
168+
`,` Toggle All Filters |nvim-tree-api.tree.toggle_filters()|
168169
`-` Up |nvim-tree-api.tree.change_root_to_parent()|
169170
`a` Create File Or Directory |nvim-tree-api.fs.create()|
170171
`bd` Delete Bookmarked |nvim-tree-api.marks.bulk.delete()|
@@ -537,6 +538,7 @@ Following is the default configuration. See |nvim-tree-opts| for details.
537538
show_on_open_dirs = true,
538539
},
539540
filters = {
541+
disabled = false,
540542
git_ignored = true,
541543
dotfiles = false,
542544
git_clean = false,
@@ -1242,6 +1244,11 @@ Only relevant when |modified.show_on_dirs| is `true`.
12421244

12431245
File / folder filters that may be toggled.
12441246

1247+
*nvim-tree.filters.disabled*
1248+
Ignores all enabled filters.
1249+
Toggle via |nvim-tree-api.tree.toggle_filters()|, default `,`
1250+
Type: `boolean`, Default: `false`
1251+
12451252
*nvim-tree.filters.git_ignored*
12461253
Ignore files based on `.gitignore`. Requires |git.enable| `= true`
12471254
Toggle via |nvim-tree-api.tree.toggle_gitignore_filter()|, default `I`
@@ -2221,6 +2228,7 @@ You are encouraged to copy these to your own |nvim-tree.on_attach| function.
22212228
vim.keymap.set('n', '>', api.node.navigate.sibling.next, opts('Next Sibling'))
22222229
vim.keymap.set('n', '<', api.node.navigate.sibling.prev, opts('Previous Sibling'))
22232230
vim.keymap.set('n', '.', api.node.run.cmd, opts('Run Command'))
2231+
vim.keymap.set('n', ',', api.tree.toggle_filters, opts('Toggle All Filters'))
22242232
vim.keymap.set('n', '-', api.tree.change_root_to_parent, opts('Up'))
22252233
vim.keymap.set('n', 'a', api.fs.create, opts('Create File Or Directory'))
22262234
vim.keymap.set('n', 'bd', api.marks.bulk.delete, opts('Delete Bookmarked'))
@@ -2756,6 +2764,7 @@ highlight group is not, hard linking as follows: >
27562764
|nvim-tree.filesystem_watchers.enable|
27572765
|nvim-tree.filesystem_watchers.ignore_dirs|
27582766
|nvim-tree.filters.custom|
2767+
|nvim-tree.filters.disabled|
27592768
|nvim-tree.filters.dotfiles|
27602769
|nvim-tree.filters.exclude|
27612770
|nvim-tree.filters.git_clean|

lua/nvim-tree.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,7 @@ local DEFAULT_OPTS = { -- BEGIN_DEFAULT_OPTS
499499
show_on_open_dirs = true,
500500
},
501501
filters = {
502+
disabled = false,
502503
git_ignored = true,
503504
dotfiles = false,
504505
git_clean = false,

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,9 @@ function M.dotfiles()
4141
reload()
4242
end
4343

44+
function M.disable()
45+
filters.config.filters_disabled = not filters.config.filters_disabled
46+
reload()
47+
end
48+
4449
return M

lua/nvim-tree/api.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ Api.tree.find_file = wrap(actions.tree.find_file.fn)
128128
Api.tree.search_node = wrap(actions.finders.search_node.fn)
129129
Api.tree.collapse_all = wrap(actions.tree.modifiers.collapse_all.fn)
130130
Api.tree.expand_all = wrap_node(actions.tree.modifiers.expand_all.fn)
131+
Api.tree.toggle_filters = wrap(actions.tree.modifiers.toggles.disable)
131132
Api.tree.toggle_gitignore_filter = wrap(actions.tree.modifiers.toggles.git_ignored)
132133
Api.tree.toggle_git_clean_filter = wrap(actions.tree.modifiers.toggles.git_clean)
133134
Api.tree.toggle_no_buffer_filter = wrap(actions.tree.modifiers.toggles.no_buffer)

lua/nvim-tree/explorer/filters.lua

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,10 @@ end
137137
---@param status table from prepare
138138
---@return boolean
139139
function M.should_filter(path, status)
140+
if M.config.filters_disabled then
141+
return false
142+
end
143+
140144
-- exclusions override all filters
141145
if is_excluded(path) then
142146
return false
@@ -153,6 +157,7 @@ function M.setup(opts)
153157
filter_git_clean = opts.filters.git_clean,
154158
filter_no_buffer = opts.filters.no_buffer,
155159
filter_no_bookmark = opts.filters.no_bookmark,
160+
filters_disabled = opts.filters.disabled,
156161
}
157162

158163
M.ignore_list = {}

lua/nvim-tree/keymap.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ function M.default_on_attach(bufnr)
4848
vim.keymap.set('n', '>', api.node.navigate.sibling.next, opts('Next Sibling'))
4949
vim.keymap.set('n', '<', api.node.navigate.sibling.prev, opts('Previous Sibling'))
5050
vim.keymap.set('n', '.', api.node.run.cmd, opts('Run Command'))
51+
vim.keymap.set('n', ',', api.tree.toggle_filters, opts('Toggle All Filters'))
5152
vim.keymap.set('n', '-', api.tree.change_root_to_parent, opts('Up'))
5253
vim.keymap.set('n', 'a', api.fs.create, opts('Create File Or Directory'))
5354
vim.keymap.set('n', 'bd', api.marks.bulk.delete, opts('Delete Bookmarked'))

0 commit comments

Comments
 (0)