diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index cbb34215..dd627333 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -1148,7 +1148,6 @@ Configuration options for trashing. *nvim-tree.trash.cmd* The command used to trash items (must be installed on your system). The default is shipped with glib2 which is a common linux package. - Only available for UNIX. Type: `string`, Default: `"gio trash"` *nvim-tree.actions* @@ -2293,7 +2292,7 @@ macOS system. Windows WSL and PowerShell -- Trash is unavailable +- Trash is synchronized - Executable file detection is disabled as this is non-performant and can freeze nvim - Some filesystem watcher error related to permissions will not be reported diff --git a/lua/nvim-tree/actions/fs/trash.lua b/lua/nvim-tree/actions/fs/trash.lua index 954165ea..523beb50 100644 --- a/lua/nvim-tree/actions/fs/trash.lua +++ b/lua/nvim-tree/actions/fs/trash.lua @@ -30,7 +30,7 @@ function M.fn(node) end -- configs - if utils.is_unix then + if utils.is_unix or utils.is_windows then if M.config.trash.cmd == nil then M.config.trash.cmd = "trash" end @@ -55,11 +55,15 @@ function M.fn(node) -- trashes a path (file or folder) local function trash_path(on_exit) - vim.fn.jobstart(M.config.trash.cmd .. ' "' .. node.absolute_path .. '"', { - detach = true, + local need_sync_wait = utils.is_windows + local job = vim.fn.jobstart(M.config.trash.cmd .. ' "' .. node.absolute_path .. '"', { + detach = not need_sync_wait, on_exit = on_exit, on_stderr = on_stderr, }) + if need_sync_wait then + vim.fn.jobwait { job } + end end local function do_trash()