commit e4da418ba8388e94bb186e3f9a2004ee1e96f1e5
parent 80cf0f3d29fa337d43ec417759cb061bd2798ea8
Author: Mike <4576770+mike325@users.noreply.github.com>
Date: Tue, 18 Jul 2023 08:36:04 +0200
fix(fs.lua): normalize slash truncation (#23753)
Preserve last slash in windows' root drive directories
Diffstat:
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/runtime/lua/vim/fs.lua b/runtime/lua/vim/fs.lua
@@ -348,7 +348,11 @@ function M.normalize(path, opts)
path = path:gsub('%$([%w_]+)', vim.uv.os_getenv)
end
- return (path:gsub('\\', '/'):gsub('/+', '/'):gsub('(.)/$', '%1'))
+ path = path:gsub('\\', '/'):gsub('/+', '/')
+ if iswin and path:match('^%w:/$') then
+ return path
+ end
+ return (path:gsub('(.)/$', '%1'))
end
return M
diff --git a/test/functional/lua/fs_spec.lua b/test/functional/lua/fs_spec.lua
@@ -301,5 +301,10 @@ describe('vim.fs', function()
return vim.fs.normalize('$XDG_CONFIG_HOME/nvim')
]], xdg_config_home))
end)
+ if is_os('win') then
+ it('Last slash is not truncated from root drive', function()
+ eq('C:/', exec_lua [[ return vim.fs.normalize('C:/') ]])
+ end)
+ end
end)
end)