marks.bulk operations error on nested bookmarked nodes
bug
### Description
Deleting/trashing multiple marked files or directories can lead to annoying errors when a queued operation tries to delete something that a different operation already deleted. This doesn't happen with the new visual operations that use `utils.filter_descendant_nodes`.
Video demo: https://asciinema.org/a/5n7WsgavWaHmYTeM
### Neovim version
```text
NVIM v0.11.6
Build type: Release
LuaJIT 2.1.1772619647
```
### Operating system and version
macOS 26.3.1
### Windows variant
_No response_
### nvim-tree version
dfeeb12aaae37f23285101cf875416c29052b22a
### Clean room replication
```lua
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
vim.cmd([[set runtimepath=$VIMRUNTIME]])
vim.cmd([[set packpath=/tmp/nvt-min/site]])
local package_root = "/tmp/nvt-min/site/pack"
local install_path = package_root .. "/packer/start/packer.nvim"
local function load_plugins()
require("packer").startup({
{
"wbthomason/packer.nvim",
"nvim-tree/nvim-tree.lua",
"nvim-tree/nvim-web-devicons",
-- ADD PLUGINS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
},
config = {
package_root = package_root,
compile_path = install_path .. "/plugin/packer_compiled.lua",
display = { non_interactive = true },
},
})
end
if vim.fn.isdirectory(install_path) == 0 then
print("Installing nvim-tree and dependencies.")
vim.fn.system({ "git", "clone", "--depth=1", "https://github.com/wbthomason/packer.nvim", install_path })
end
load_plugins()
require("packer").sync()
vim.cmd([[autocmd User PackerComplete ++once echo "Ready!" | lua setup()]])
vim.opt.termguicolors = true
vim.opt.cursorline = true
-- MODIFY NVIM-TREE SETTINGS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
_G.setup = function()
require("nvim-tree").setup({})
end
-- UNCOMMENT this block for diagnostics issues, substituting pattern and cmd as appropriate.
-- Requires diagnostics.enable = true in setup.
--[[
vim.api.nvim_create_autocmd("FileType", {
pattern = "lua",
callback = function()
vim.lsp.start {
name = "my-luals",
cmd = { "lua-language-server" },
root_dir = vim.loop.cwd(),
}
end,
})
]]
```
### Steps to reproduce
1. Bookmark multiple nested directories/nodes either individually or in bulk visually
```text
(marked) dir
(marked) nested dir
(marked) file
```
2. Press `bd` or `bt` to delete or trash bookmarked nodes
### Expected behavior
Bookmark bulk operations should filter out descendant nodes and not attempt deleting the nodes that were affected by deleting their parent.
### Actual behavior
Bookmark bulk operations acts on the first marked directory, which results in deleting the rest of the nested notes, and then attempt to act on the now gone children, logging errors for each unsuccessfull attempt.
关闭于 2026-03-22 0 条评论