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*
|
*nvim-tree.trash.cmd*
|
||||||
The command used to trash items (must be installed on your system).
|
The command used to trash items (must be installed on your system).
|
||||||
The default is shipped with glib2 which is a common linux package.
|
The default is shipped with glib2 which is a common linux package.
|
||||||
Only available for UNIX.
|
|
||||||
Type: `string`, Default: `"gio trash"`
|
Type: `string`, Default: `"gio trash"`
|
||||||
|
|
||||||
*nvim-tree.actions*
|
*nvim-tree.actions*
|
||||||
@@ -2293,7 +2292,7 @@ macOS
|
|||||||
system.
|
system.
|
||||||
|
|
||||||
Windows WSL and PowerShell
|
Windows WSL and PowerShell
|
||||||
- Trash is unavailable
|
- Trash is synchronized
|
||||||
- Executable file detection is disabled as this is non-performant and can
|
- Executable file detection is disabled as this is non-performant and can
|
||||||
freeze nvim
|
freeze nvim
|
||||||
- Some filesystem watcher error related to permissions will not be reported
|
- Some filesystem watcher error related to permissions will not be reported
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ function M.fn(node)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- configs
|
-- configs
|
||||||
if utils.is_unix then
|
if utils.is_unix or utils.is_windows then
|
||||||
if M.config.trash.cmd == nil then
|
if M.config.trash.cmd == nil then
|
||||||
M.config.trash.cmd = "trash"
|
M.config.trash.cmd = "trash"
|
||||||
end
|
end
|
||||||
@@ -55,11 +55,15 @@ function M.fn(node)
|
|||||||
|
|
||||||
-- trashes a path (file or folder)
|
-- trashes a path (file or folder)
|
||||||
local function trash_path(on_exit)
|
local function trash_path(on_exit)
|
||||||
vim.fn.jobstart(M.config.trash.cmd .. ' "' .. node.absolute_path .. '"', {
|
local need_sync_wait = utils.is_windows
|
||||||
detach = true,
|
local job = vim.fn.jobstart(M.config.trash.cmd .. ' "' .. node.absolute_path .. '"', {
|
||||||
|
detach = not need_sync_wait,
|
||||||
on_exit = on_exit,
|
on_exit = on_exit,
|
||||||
on_stderr = on_stderr,
|
on_stderr = on_stderr,
|
||||||
})
|
})
|
||||||
|
if need_sync_wait then
|
||||||
|
vim.fn.jobwait { job }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function do_trash()
|
local function do_trash()
|
||||||
|
|||||||
Reference in New Issue
Block a user