fix(vim.fs): abspath(".") returns "/…/." #36583

This commit is contained in:
Justin M. Keyes
2025-11-16 22:36:03 -08:00
committed by GitHub
parent f11f8546e7
commit 1f9d9cb2e5
2 changed files with 24 additions and 9 deletions

View File

@@ -446,7 +446,7 @@ function M.root(source, marker)
for _, mark in ipairs(markers) do
local paths = M.find(mark, {
upward = true,
path = vim.fn.fnamemodify(path, ':p:h'),
path = M.abspath(path),
})
if #paths ~= 0 then
@@ -756,6 +756,8 @@ end
--- @param path string Path
--- @return string Absolute path
function M.abspath(path)
-- TODO(justinmk): mark f_fnamemodify as API_FAST and use it, ":p:h" should be safe...
vim.validate('path', path, 'string')
-- Expand ~ to user's home directory
@@ -782,7 +784,10 @@ function M.abspath(path)
-- Convert cwd path separator to `/`
cwd = cwd:gsub(os_sep, '/')
-- Prefix is not needed for expanding relative paths, as `cwd` already contains it.
if path == '.' then
return cwd
end
-- Prefix is not needed for expanding relative paths, `cwd` already contains it.
return M.joinpath(cwd, path)
end