File tree Expand file tree Collapse file tree 4 files changed +32
-2
lines changed Expand file tree Collapse file tree 4 files changed +32
-2
lines changed Original file line number Diff line number Diff line change @@ -96,6 +96,8 @@ nnoremap <leader>n :NvimTreeFindFile<CR>
96
96
" NvimTreeFocus
97
97
" NvimTreeFindFileToggle
98
98
" NvimTreeResize
99
+ " NvimTreeCollapse
100
+ " NvimTreeCollapseKeepBuffers
99
101
100
102
set termguicolors " this variable must be enabled for colors to be applied properly
101
103
Original file line number Diff line number Diff line change @@ -66,6 +66,15 @@ adds or removes the given value to the current window width.
66
66
Example `:NvimTreeResize -20` removes the value 20 from the current width. And
67
67
`:NvimTreeResize +20` adds the value 20 to the current width.
68
68
69
+ | :NvimTreeCollapse | *:NvimTreeCollapse*
70
+
71
+ Collapses the nvim-tree recursively.
72
+
73
+ | :NvimTreeCollapseKeepBuffers | *:NvimTreeCollapseKeepBuffers*
74
+
75
+ Collapses the nvim-tree recursively, but keep the directories open, which are
76
+ used in an open buffer.
77
+
69
78
70
79
==============================================================================
71
80
SETUP *nvim-tree.setup*
Original file line number Diff line number Diff line change @@ -280,6 +280,8 @@ local function setup_vim_commands()
280
280
command! NvimTreeFindFile lua require'nvim-tree'.find_file(true)
281
281
command! NvimTreeFindFileToggle lua require'nvim-tree'.toggle(true)
282
282
command! -nargs=1 NvimTreeResize lua require'nvim-tree'.resize("<args>")
283
+ command! NvimTreeCollapse lua require'nvim-tree.actions.collapse-all'.fn()
284
+ command! NvimTreeCollapseKeepBuffers lua require'nvim-tree.actions.collapse-all'.fn(true)
283
285
]]
284
286
end
285
287
Original file line number Diff line number Diff line change 1
1
local renderer = require " nvim-tree.renderer"
2
+ local utils = require " nvim-tree.utils"
2
3
3
4
local M = {}
4
5
5
- function M .fn ()
6
+ function M .fn (keep_buffers )
7
+ local buffer_paths = {}
8
+ for _ , buffer in ipairs (vim .api .nvim_list_bufs ()) do
9
+ table.insert (buffer_paths , vim .api .nvim_buf_get_name (buffer ))
10
+ end
11
+
6
12
local function iter (nodes )
7
13
for _ , node in pairs (nodes ) do
8
14
if node .open then
9
- node .open = false
15
+ local new_open = false
16
+
17
+ if keep_buffers == true then
18
+ for _ , buffer_path in ipairs (buffer_paths ) do
19
+ local matches = utils .str_find (buffer_path , node .absolute_path )
20
+ if matches then
21
+ new_open = true
22
+ end
23
+ end
24
+ end
25
+
26
+ node .open = new_open
10
27
end
11
28
if node .nodes then
12
29
iter (node .nodes )
You can’t perform that action at this time.
0 commit comments