refactor(#2886): multi instance: node group functions refactoring (#2959)

* move last_group_node to DirectoryNode

* move add BaseNode:as and more doc

* revert parameter name changes

* revert parameter name changes

* add Class

* move group methods into DN

* tidy group methods

* tidy group methods

* tidy group methods

* tidy group methods

* parent is DirectoryNode

* tidy expand all

* BaseNode -> Node

* move watcher to DirectoryNode

* last_group_node is DirectoryNode only

* simplify create-file

* simplify parent

* simplify collapse-all

* simplify live-filter

* style
This commit is contained in:
Alexander Courtis
2024-10-20 17:23:22 +11:00
committed by GitHub
parent fb2070db94
commit 8331a24c77
22 changed files with 284 additions and 258 deletions

View File

@@ -10,6 +10,7 @@ local keymap = require("nvim-tree.keymap")
local notify = require("nvim-tree.notify")
local DirectoryNode = require("nvim-tree.node.directory")
local RootNode = require("nvim-tree.node.root")
local Api = {
tree = {},
@@ -137,9 +138,9 @@ Api.tree.change_root = wrap(function(...)
end)
Api.tree.change_root_to_node = wrap_node(function(node)
if node.name == ".." then
if node.name == ".." or node:is(RootNode) then
actions.root.change_dir.fn("..")
elseif node.nodes ~= nil then
elseif node:is(DirectoryNode) then
actions.root.change_dir.fn(node:last_group_node().absolute_path)
end
end)
@@ -210,13 +211,13 @@ local function edit(mode, node)
end
---@param mode string
---@return fun(node: table)
---@return fun(node: Node)
local function open_or_expand_or_dir_up(mode, toggle_group)
---@param node Node
return function(node)
if node.name == ".." then
actions.root.change_dir.fn("..")
elseif node:is(DirectoryNode) then
---@cast node DirectoryNode
node:expand_or_collapse(toggle_group)
elseif not toggle_group then
edit(mode, node)