fix(#3077): deleting a directory containing symlinked directory will delete the contents of the linked directory (#3168)
* fix(#3077) deleting a directory containing symlink file will delete all content inside the symlink * fix(#3077): add diagnostic override TODO --------- Co-authored-by: Alexander Courtis <alex@courtis.org>
This commit is contained in:
parent
543ed3cac2
commit
10db6943cb
@ -71,9 +71,16 @@ local function remove_dir(cwd)
|
|||||||
|
|
||||||
-- Type must come from fs_stat and not fs_scandir_next to maintain sshfs compatibility
|
-- Type must come from fs_stat and not fs_scandir_next to maintain sshfs compatibility
|
||||||
local stat = vim.loop.fs_stat(new_cwd)
|
local stat = vim.loop.fs_stat(new_cwd)
|
||||||
local type = stat and stat.type or nil
|
-- 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)
|
||||||
|
|
||||||
if type == "directory" then
|
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" and ltype ~= "link" then
|
||||||
local success = remove_dir(new_cwd)
|
local success = remove_dir(new_cwd)
|
||||||
if not success then
|
if not success then
|
||||||
return false
|
return false
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user