refactor(#2942): multi instance: move get_nodes_by_line to Explorer
This commit is contained in:
parent
3a3565ed84
commit
660c42a0ac
@ -1,4 +1,3 @@
|
||||
local utils = require("nvim-tree.utils")
|
||||
local view = require("nvim-tree.view")
|
||||
local core = require("nvim-tree.core")
|
||||
local diagnostics = require("nvim-tree.diagnostics")
|
||||
@ -36,7 +35,7 @@ end
|
||||
---@param skip_gitignored boolean? default false
|
||||
local function move(explorer, where, what, skip_gitignored)
|
||||
local first_node_line = core.get_nodes_starting_line()
|
||||
local nodes_by_line = utils.get_nodes_by_line(explorer.nodes, first_node_line)
|
||||
local nodes_by_line = explorer:get_nodes_by_line(first_node_line)
|
||||
local iter_start, iter_end, iter_step, cur, first, nex
|
||||
|
||||
local cursor = explorer:get_cursor_position()
|
||||
|
||||
@ -527,7 +527,7 @@ function Explorer:get_node_at_cursor()
|
||||
return self
|
||||
end
|
||||
|
||||
return utils.get_nodes_by_line(self.nodes, core.get_nodes_starting_line())[cursor[1]]
|
||||
return self:get_nodes_by_line(core.get_nodes_starting_line())[cursor[1]]
|
||||
end
|
||||
|
||||
function Explorer:place_cursor_on_node()
|
||||
@ -560,7 +560,7 @@ function Explorer:find_node_line(node)
|
||||
end
|
||||
|
||||
local first_node_line = core.get_nodes_starting_line()
|
||||
local nodes_by_line = utils.get_nodes_by_line(self.nodes, first_node_line)
|
||||
local nodes_by_line = self:get_nodes_by_line(first_node_line)
|
||||
local iter_start, iter_end = first_node_line, #nodes_by_line
|
||||
|
||||
for line = iter_start, iter_end, 1 do
|
||||
@ -646,6 +646,29 @@ function Explorer:find_node(fn)
|
||||
return node, i
|
||||
end
|
||||
|
||||
--- Return visible nodes indexed by line
|
||||
---@param line_start number
|
||||
---@return table
|
||||
function Explorer:get_nodes_by_line(line_start)
|
||||
local nodes_by_line = {}
|
||||
local line = line_start
|
||||
|
||||
Iterator.builder(self.nodes)
|
||||
:applier(function(node)
|
||||
if node.group_next then
|
||||
return
|
||||
end
|
||||
nodes_by_line[line] = node
|
||||
line = line + 1
|
||||
end)
|
||||
:recursor(function(node)
|
||||
return node.group_next and { node.group_next } or (node.open and #node.nodes > 0 and node.nodes)
|
||||
end)
|
||||
:iterate()
|
||||
|
||||
return nodes_by_line
|
||||
end
|
||||
|
||||
---Api.tree.get_nodes
|
||||
---@return nvim_tree.api.Node
|
||||
function Explorer:get_nodes()
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
local Iterator = require("nvim-tree.iterators.node-iterator")
|
||||
|
||||
local M = {
|
||||
debouncers = {},
|
||||
}
|
||||
@ -149,30 +147,6 @@ M.default_format_hidden_count = function(hidden_count, simple)
|
||||
return nil
|
||||
end
|
||||
|
||||
--- Return visible nodes indexed by line
|
||||
---@param nodes_all Node[]
|
||||
---@param line_start number
|
||||
---@return table
|
||||
function M.get_nodes_by_line(nodes_all, line_start)
|
||||
local nodes_by_line = {}
|
||||
local line = line_start
|
||||
|
||||
Iterator.builder(nodes_all)
|
||||
:applier(function(node)
|
||||
if node.group_next then
|
||||
return
|
||||
end
|
||||
nodes_by_line[line] = node
|
||||
line = line + 1
|
||||
end)
|
||||
:recursor(function(node)
|
||||
return node.group_next and { node.group_next } or (node.open and #node.nodes > 0 and node.nodes)
|
||||
end)
|
||||
:iterate()
|
||||
|
||||
return nodes_by_line
|
||||
end
|
||||
|
||||
function M.rename_loaded_buffers(old_path, new_path)
|
||||
-- delete new if it exists
|
||||
for _, buf in pairs(vim.api.nvim_list_bufs()) do
|
||||
|
||||
Loading…
Reference in New Issue
Block a user