feat: api.marks.bulk.trash (#2391)

* Feature: Bulk trash api

* Update docs

* Follow documentation syntax

* Remove unnecessary refresh

* doc spacing

---------

Co-authored-by: Alexander Courtis <alex@courtis.org>
This commit is contained in:
pr4th4m
2023-09-16 15:10:36 +10:00
committed by GitHub
parent 94c7c810af
commit 7f7665a17b
6 changed files with 89 additions and 30 deletions

View File

@@ -0,0 +1,47 @@
local marks = require "nvim-tree.marks"
local utils = require "nvim-tree.utils"
local remove_file = require "nvim-tree.actions.fs.trash"
local notify = require "nvim-tree.notify"
local lib = require "nvim-tree.lib"
local M = {
config = {},
}
--- Delete nodes; each removal will be optionally notified
--- @param nodes table
local function do_trash(nodes)
for _, node in pairs(nodes) do
remove_file.remove(node)
end
marks.clear_marks()
end
function M.bulk_trash()
local nodes = marks.get_marks()
if not nodes or #nodes == 0 then
notify.warn "No bookmarks to trash."
return
end
if M.config.ui.confirm.trash then
local prompt_select = "Trash bookmarked ?"
local prompt_input = prompt_select .. " y/N: "
lib.prompt(prompt_input, prompt_select, { "", "y" }, { "No", "Yes" }, function(item_short)
utils.clear_prompt()
if item_short == "y" then
do_trash(nodes)
end
end)
else
do_trash(nodes)
end
end
function M.setup(opts)
M.config.ui = opts.ui
M.config.filesystem_watchers = opts.filesystem_watchers
end
return M