fix: normalize cwd with '..'
This commit is contained in:
parent
d8bf1adcdc
commit
92a64daf27
@ -2,6 +2,7 @@ local uv = vim.loop
|
|||||||
|
|
||||||
local git = require"nvim-tree.git"
|
local git = require"nvim-tree.git"
|
||||||
local renderer = require"nvim-tree.renderer"
|
local renderer = require"nvim-tree.renderer"
|
||||||
|
local utils = require"nvim-tree.utils"
|
||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
@ -12,7 +13,7 @@ local Explorer = {}
|
|||||||
Explorer.__index = Explorer
|
Explorer.__index = Explorer
|
||||||
|
|
||||||
function Explorer.new(cwd)
|
function Explorer.new(cwd)
|
||||||
cwd = cwd or uv.cwd()
|
cwd = utils.path_normalize(cwd or uv.cwd())
|
||||||
return setmetatable({
|
return setmetatable({
|
||||||
cwd = cwd,
|
cwd = cwd,
|
||||||
nodes = {}
|
nodes = {}
|
||||||
|
|||||||
@ -208,4 +208,24 @@ function M.file_exists(path)
|
|||||||
return error == nil
|
return error == nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- @param num number elements to take
|
||||||
|
--- @param list table elements
|
||||||
|
--- @return table
|
||||||
|
function M.take(num, list)
|
||||||
|
local t = {}
|
||||||
|
for i, c in ipairs(list) do
|
||||||
|
if i > num then break end
|
||||||
|
table.insert(t, c)
|
||||||
|
end
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
--- @param path string
|
||||||
|
--- @return string
|
||||||
|
function M.path_normalize(path)
|
||||||
|
local components = vim.split(vim.fn.expand(path), path_separator)
|
||||||
|
local num_dots = #vim.tbl_filter(function(v) return v == ".." end, components)
|
||||||
|
return M.path_join(M.take(#components - num_dots * 2, components))
|
||||||
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user