Skip to content

Commit f7c09bd

Browse files
DeH4eralex-courtis
andauthored
feat: add api.tree.toggle_enable_filters (nvim-tree#2706)
* feat: toggle filters * naming refactoring * change name to enable * fix default opt * fix api name * update doc * remove default keybinding, toggle live filter * add API doc --------- Co-authored-by: Alexander Courtis <[email protected]>
1 parent 707b24a commit f7c09bd

File tree

6 files changed

+29
-0
lines changed

6 files changed

+29
-0
lines changed

doc/nvim-tree-lua.txt

+12
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,7 @@ Following is the default configuration. See |nvim-tree-opts| for details.
537537
show_on_open_dirs = true,
538538
},
539539
filters = {
540+
enable = true,
540541
git_ignored = true,
541542
dotfiles = false,
542543
git_clean = false,
@@ -1242,6 +1243,11 @@ Only relevant when |modified.show_on_dirs| is `true`.
12421243

12431244
File / folder filters that may be toggled.
12441245

1246+
*nvim-tree.filters.enable*
1247+
Enable / disable all filters including live filter.
1248+
Toggle via |nvim-tree-api.tree.toggle_enable_filters()|
1249+
Type: `boolean`, Default: `true`
1250+
12451251
*nvim-tree.filters.git_ignored*
12461252
Ignore files based on `.gitignore`. Requires |git.enable| `= true`
12471253
Toggle via |nvim-tree-api.tree.toggle_gitignore_filter()|, default `I`
@@ -1702,6 +1708,10 @@ tree.expand_all() *nvim-tree-api.tree.expand_all()*
17021708
Recursively expand all nodes in the tree.
17031709
Folder: only the nodes underneath that folder.
17041710

1711+
*nvim-tree-api.tree.toggle_enable_filters()*
1712+
tree.toggle_enable_filters()
1713+
Toggle |nvim-tree.filters.enable| all filters.
1714+
17051715
*nvim-tree-api.tree.toggle_gitignore_filter()*
17061716
tree.toggle_gitignore_filter()
17071717
Toggle |nvim-tree.filters.git_ignored| filter.
@@ -2757,6 +2767,7 @@ highlight group is not, hard linking as follows: >
27572767
|nvim-tree.filesystem_watchers.ignore_dirs|
27582768
|nvim-tree.filters.custom|
27592769
|nvim-tree.filters.dotfiles|
2770+
|nvim-tree.filters.enable|
27602771
|nvim-tree.filters.exclude|
27612772
|nvim-tree.filters.git_clean|
27622773
|nvim-tree.filters.git_ignored|
@@ -2966,6 +2977,7 @@ highlight group is not, hard linking as follows: >
29662977
|nvim-tree-api.tree.search_node()|
29672978
|nvim-tree-api.tree.toggle()|
29682979
|nvim-tree-api.tree.toggle_custom_filter()|
2980+
|nvim-tree-api.tree.toggle_enable_filters()|
29692981
|nvim-tree-api.tree.toggle_git_clean_filter()|
29702982
|nvim-tree-api.tree.toggle_gitignore_filter()|
29712983
|nvim-tree-api.tree.toggle_help()|

lua/nvim-tree.lua

+1
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+
enable = true,
502503
git_ignored = true,
503504
dotfiles = false,
504505
git_clean = false,

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

+5
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,9 @@ function M.dotfiles()
4141
reload()
4242
end
4343

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

lua/nvim-tree/api.lua

+1
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_enable_filters = wrap(actions.tree.modifiers.toggles.enable)
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

+5
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@ end
150150
---@param status table from prepare
151151
---@return boolean
152152
function M.should_filter(path, status)
153+
if not M.config.enable then
154+
return false
155+
end
156+
153157
-- exclusions override all filters
154158
if is_excluded(path) then
155159
return false
@@ -160,6 +164,7 @@ end
160164

161165
function M.setup(opts)
162166
M.config = {
167+
enable = opts.filters.enable,
163168
filter_custom = true,
164169
filter_dotfiles = opts.filters.dotfiles,
165170
filter_git_ignored = opts.filters.git_ignored,

lua/nvim-tree/live-filter.lua

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
local view = require "nvim-tree.view"
22
local utils = require "nvim-tree.utils"
33
local Iterator = require "nvim-tree.iterators.node-iterator"
4+
local filters = require "nvim-tree.explorer.filters"
45

56
local M = {
67
filter = nil,
@@ -56,6 +57,10 @@ end
5657
---@param node Node
5758
---@return boolean
5859
local function matches(node)
60+
if not filters.config.enable then
61+
return true
62+
end
63+
5964
local path = node.absolute_path
6065
local name = vim.fn.fnamemodify(path, ":t")
6166
return vim.regex(M.filter):match_str(name) ~= nil

0 commit comments

Comments
 (0)