refacto: tree explorer root should be absolute_path not cwd
This commit is contained in:
parent
3806653d75
commit
5e900c2f29
@ -102,7 +102,7 @@ local function update_base_dir_with_filepath(filepath, bufnr)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not vim.startswith(filepath, core.get_explorer().cwd) then
|
if not vim.startswith(filepath, core.get_cwd()) then
|
||||||
change_dir.fn(vim.fn.fnamemodify(filepath, ":p:h"))
|
change_dir.fn(vim.fn.fnamemodify(filepath, ":p:h"))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -33,7 +33,7 @@ function M.parent_node(should_close)
|
|||||||
|
|
||||||
local parent = node.parent
|
local parent = node.parent
|
||||||
|
|
||||||
if not parent or parent.cwd then
|
if not parent or not parent.parent then
|
||||||
return view.set_cursor { 1, 0 }
|
return view.set_cursor { 1, 0 }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,7 @@ local function refresh_nodes(node, projects)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function M.reload_node_status(parent_node, projects)
|
function M.reload_node_status(parent_node, projects)
|
||||||
local project_root = git.get_project_root(parent_node.absolute_path or parent_node.cwd)
|
local project_root = git.get_project_root(parent_node.absolute_path)
|
||||||
local status = projects[project_root] or {}
|
local status = projects[project_root] or {}
|
||||||
for _, node in ipairs(parent_node.nodes) do
|
for _, node in ipairs(parent_node.nodes) do
|
||||||
if node.nodes then
|
if node.nodes then
|
||||||
|
|||||||
@ -21,7 +21,7 @@ function M.get_explorer()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function M.get_cwd()
|
function M.get_cwd()
|
||||||
return TreeExplorer.cwd
|
return TreeExplorer.absolute_path
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.get_nodes_starting_line()
|
function M.get_nodes_starting_line()
|
||||||
|
|||||||
@ -59,7 +59,7 @@ local function get_dir_handle(cwd)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function M.explore(node, status)
|
function M.explore(node, status)
|
||||||
local cwd = node.cwd or node.link_to or node.absolute_path
|
local cwd = node.link_to or node.absolute_path
|
||||||
local handle = get_dir_handle(cwd)
|
local handle = get_dir_handle(cwd)
|
||||||
if not handle then
|
if not handle then
|
||||||
return
|
return
|
||||||
@ -67,7 +67,7 @@ function M.explore(node, status)
|
|||||||
|
|
||||||
populate_children(handle, cwd, node, status)
|
populate_children(handle, cwd, node, status)
|
||||||
|
|
||||||
local is_root = node.cwd ~= nil
|
local is_root = not node.parent
|
||||||
local child_folder_only = common.has_one_child_folder(node) and node.nodes[1]
|
local child_folder_only = common.has_one_child_folder(node) and node.nodes[1]
|
||||||
if M.config.group_empty and not is_root and child_folder_only then
|
if M.config.group_empty and not is_root and child_folder_only then
|
||||||
node.group_next = child_folder_only
|
node.group_next = child_folder_only
|
||||||
|
|||||||
@ -13,7 +13,7 @@ Explorer.__index = Explorer
|
|||||||
function Explorer.new(cwd)
|
function Explorer.new(cwd)
|
||||||
cwd = uv.fs_realpath(cwd or uv.cwd())
|
cwd = uv.fs_realpath(cwd or uv.cwd())
|
||||||
local explorer = setmetatable({
|
local explorer = setmetatable({
|
||||||
cwd = cwd,
|
absolute_path = cwd,
|
||||||
nodes = {},
|
nodes = {},
|
||||||
}, Explorer)
|
}, Explorer)
|
||||||
explorer:_load(explorer)
|
explorer:_load(explorer)
|
||||||
@ -21,7 +21,7 @@ function Explorer.new(cwd)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Explorer:_load(node)
|
function Explorer:_load(node)
|
||||||
local cwd = node.cwd or node.link_to or node.absolute_path
|
local cwd = node.link_to or node.absolute_path
|
||||||
local git_statuses = git.load_project_status(cwd)
|
local git_statuses = git.load_project_status(cwd)
|
||||||
M.explore(node, git_statuses)
|
M.explore(node, git_statuses)
|
||||||
end
|
end
|
||||||
|
|||||||
@ -20,7 +20,7 @@ local function update_status(nodes_by_path, node_ignored, status)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function M.reload(node, status)
|
function M.reload(node, status)
|
||||||
local cwd = node.cwd or node.link_to or node.absolute_path
|
local cwd = node.link_to or node.absolute_path
|
||||||
local handle = uv.fs_scandir(cwd)
|
local handle = uv.fs_scandir(cwd)
|
||||||
if type(handle) == "string" then
|
if type(handle) == "string" then
|
||||||
api.nvim_err_writeln(handle)
|
api.nvim_err_writeln(handle)
|
||||||
@ -68,7 +68,7 @@ function M.reload(node, status)
|
|||||||
end, node.nodes)
|
end, node.nodes)
|
||||||
)
|
)
|
||||||
|
|
||||||
local is_root = node.cwd ~= nil
|
local is_root = not node.parent
|
||||||
local child_folder_only = common.has_one_child_folder(node) and node.nodes[1]
|
local child_folder_only = common.has_one_child_folder(node) and node.nodes[1]
|
||||||
if M.config.group_empty and not is_root and child_folder_only then
|
if M.config.group_empty and not is_root and child_folder_only then
|
||||||
node.group_next = child_folder_only
|
node.group_next = child_folder_only
|
||||||
|
|||||||
@ -68,7 +68,7 @@ function M.set_target_win()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function handle_buf_cwd(cwd)
|
local function handle_buf_cwd(cwd)
|
||||||
if M.respect_buf_cwd and cwd ~= core.get_explorer().cwd then
|
if M.respect_buf_cwd and cwd ~= core.get_cwd() then
|
||||||
require("nvim-tree.actions.change-dir").fn(cwd)
|
require("nvim-tree.actions.change-dir").fn(cwd)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -36,7 +36,7 @@ local function remove_overlay()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function matches(node)
|
local function matches(node)
|
||||||
local path = node.cwd or node.absolute_path
|
local path = node.absolute_path
|
||||||
local name = vim.fn.fnamemodify(path, ":t")
|
local name = vim.fn.fnamemodify(path, ":t")
|
||||||
return vim.regex(M.filter):match_str(name) ~= nil
|
return vim.regex(M.filter):match_str(name) ~= nil
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user