diff --git a/lua/nvim-tree/actions/fs/remove-file.lua b/lua/nvim-tree/actions/fs/remove-file.lua index fd71ae6a376..b475506380a 100644 --- a/lua/nvim-tree/actions/fs/remove-file.lua +++ b/lua/nvim-tree/actions/fs/remove-file.lua @@ -71,9 +71,16 @@ local function remove_dir(cwd) -- Type must come from fs_stat and not fs_scandir_next to maintain sshfs compatibility local stat = vim.loop.fs_stat(new_cwd) + -- TODO remove once 0.12 is the minimum neovim version + -- path incorrectly specified as an integer, fixed upstream for neovim 0.12 https://github.com/neovim/neovim/pull/33872 + ---@diagnostic disable-next-line: param-type-mismatch + local lstat = vim.loop.fs_lstat(new_cwd) + local type = stat and stat.type or nil + -- Checks if file is a link file to ensure deletion of the symlink instead of the file it points to + local ltype = lstat and lstat.type or nil - if type == "directory" then + if type == "directory" and ltype ~= "link" then local success = remove_dir(new_cwd) if not success then return false