feat: support collapse a single folder under cursor
with messy conflict resolution
This commit is contained in:
parent
ebcaccda1c
commit
70e5451eb6
@ -341,7 +341,15 @@ See |nvim-tree-highlight| for details.
|
||||
|
||||
See |nvim-tree-api.tree.collapse_all()|
|
||||
|
||||
Calls: `api.tree.collapse_all(false)`
|
||||
Calls: api.tree.collapse_all({ under_cursor = false, keep_buffers = false, })
|
||||
|
||||
*:NvimTreeCollapseFolder*
|
||||
|
||||
Collapses the folder under cursor
|
||||
|
||||
See |nvim-tree-api.tree.collapse_all()|
|
||||
|
||||
Calls: api.tree.collapse_all({ under_cursor = true, keep_buffers = false, })
|
||||
|
||||
*:NvimTreeCollapseKeepBuffers*
|
||||
|
||||
@ -1829,10 +1837,14 @@ tree.find_file({opts}) *nvim-tree-api.tree.find_file()*
|
||||
tree.search_node() *nvim-tree-api.tree.search_node()*
|
||||
Open the search dialogue as per the search_node action.
|
||||
|
||||
tree.collapse_all({keep_buffers}) *nvim-tree-api.tree.collapse_all()*
|
||||
tree.collapse_all({opts}) *nvim-tree-api.tree.collapse_all()*
|
||||
Collapse the tree.
|
||||
|
||||
Parameters: ~
|
||||
• {opts} (table) optional parameters
|
||||
|
||||
Parameters: ~
|
||||
• {under_cursor} (boolean) only collapse the node under cursor
|
||||
• {keep_buffers} (boolean) do not collapse nodes with open buffers.
|
||||
|
||||
tree.expand_all({node}) *nvim-tree-api.tree.expand_all()*
|
||||
@ -3340,6 +3352,7 @@ highlight group is not, hard linking as follows: >
|
||||
|nvim-tree-api.tree.close_in_all_tabs()|
|
||||
|nvim-tree-api.tree.close_in_this_tab()|
|
||||
|nvim-tree-api.tree.collapse_all()|
|
||||
|nvim-tree-api.tree.collapse
|
||||
|nvim-tree-api.tree.expand_all()|
|
||||
|nvim-tree-api.tree.find_file()|
|
||||
|nvim-tree-api.tree.focus()|
|
||||
|
||||
@ -23,8 +23,12 @@ local function buf_match()
|
||||
end
|
||||
end
|
||||
|
||||
---@param keep_buffers boolean
|
||||
function M.fn(keep_buffers)
|
||||
---@param opts ApiTreeCollapseOpts|nil
|
||||
function M.fn(opts)
|
||||
opts = opts or {}
|
||||
local keep_buffers = opts.keep_buffers or false
|
||||
local under_cursor = opts.under_cursor or false
|
||||
|
||||
local explorer = core.get_explorer()
|
||||
if not explorer then
|
||||
return
|
||||
@ -37,7 +41,17 @@ function M.fn(keep_buffers)
|
||||
|
||||
local matches = buf_match()
|
||||
|
||||
Iterator.builder(explorer.nodes)
|
||||
local selectedNodes
|
||||
if under_cursor then
|
||||
if not node or not node.nodes then
|
||||
return
|
||||
end
|
||||
selectedNodes = node.nodes
|
||||
else
|
||||
selectedNodes = explorer.nodes
|
||||
end
|
||||
|
||||
Iterator.builder(selectedNodes)
|
||||
:hidden()
|
||||
:applier(function(n)
|
||||
local dir = n:as(DirectoryNode)
|
||||
|
||||
@ -182,6 +182,11 @@ Api.tree.get_nodes = wrap_explorer("get_nodes")
|
||||
|
||||
Api.tree.find_file = wrap(actions.tree.find_file.fn)
|
||||
Api.tree.search_node = wrap(actions.finders.search_node.fn)
|
||||
|
||||
---@class ApiTreeCollapseOpts
|
||||
---@field under_cursor boolean
|
||||
---@field keep_buffers boolean
|
||||
|
||||
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.toggle_enable_filters = wrap_explorer_member("filters", "toggle")
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
local api = require("nvim-tree.api")
|
||||
local view = require("nvim-tree.view")
|
||||
local lib = require("nvim-tree.lib")
|
||||
|
||||
local M = {}
|
||||
|
||||
@ -121,7 +122,17 @@ local CMDS = {
|
||||
bar = true,
|
||||
},
|
||||
command = function()
|
||||
api.tree.collapse_all(false)
|
||||
api.tree.collapse_all({ under_cursor = false, keep_buffers = false })
|
||||
end,
|
||||
},
|
||||
{
|
||||
name = "NvimTreeCollapseFolder",
|
||||
opts = {
|
||||
desc = "nvim-tree: collapse the folder under cursor",
|
||||
bar = true,
|
||||
},
|
||||
command = function()
|
||||
api.tree.collapse_all({ under_cursor = true, keep_buffers = false })
|
||||
end,
|
||||
},
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user