feat(trash): add synchronized trash support for windows (#2335)

* feat(trash): support 'trash' on Windows

* feat(trash): need sync wait on Windows to avoid switch to other app from nvim process

* doc: remove 'Only available for UNIX'

* doc(trash): highlight 'Trash' on Windows is syncrhonized

* doc(trash): highlight 'trash' on Windows is synchronized

* doc(trash): remove dot

* fix(trash): check for unix and windows

* fix(trash): comment

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
This commit is contained in:
linrongbin16
2023-07-29 15:34:47 +08:00
committed by GitHub
parent c1466f991a
commit 75c05742bc
2 changed files with 8 additions and 5 deletions

View File

@@ -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

View File

@@ -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()