neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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:
Mruntime/lua/vim/fs.lua | 6+++++-
Mtest/functional/lua/fs_spec.lua | 5+++++
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)