ITADN

marks.bulk operations error on nested bookmarked nodes

#3293Closedv3ceban 创建于 2026-03-21
bug
V
v3cebancommented
### 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 条评论