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:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user