nvim-tree / nvim-tree/nvim-tree.lua
Opening file in new tab, replaces previous tab file with NvimTree
Nobody has claimed this yet.
- Dominant language
- Lua
- Stars
- 8.6k
- Forks
- 639
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 2
Description
Description
If I have one buffer open, say file1.txt, then I open nvim tree and open another file in a new tab using api.node.open.tab, opts("Open in New Tab"), then the file is opened correctly in a new tab but the previously opened tab file is replaced with NvimTree. This causes an issue because if I wanted to go back to the previous tab, expecting it to be file1, then I see the nvim tree and I have to close it to see the file1.
Recording:
Neovim version
NVIM v0.10.1
Build type: Release
LuaJIT 2.1.1725453128
Run "nvim -V1 -v" for more info
Operating system and version
Macos 14.6.1
Windows variant
No response
nvim-tree version
"nvim-tree.lua": { "branch": "master", "commit": "d41b4ca013ed89e41b9c0ecbdae5f1633e42f7fa" },
Clean room replication
Reproducible with same clean room replication:
<video src="https://github.com/user-attachments/assets/6f83ea51-5c9a-47f9-aa16-ab5e24b9562f"></video>
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 { cmd = { "lua-language-server" } }
end,
})
]]
### Steps to reproduce
1. create two files
2. nvim -nu /tmp/nvt-min.lua
3. NvimTreeOpen
4. press enter on file1.txt
5. press <C-w> twice to go back to nvim tree
6. go to file2.txt and press <C-t> to open it in a new tab
Notice how the tabs that are open now are NvimTree_1 and file2.txt instead of expected file1.txt and file2.txt
### Expected behavior
I expect that when opening a file in a new tab, the previously opened tab is maintained
### Actual behavior
Nvimtree is replacing the previously opened tab until I go to the nvim tree tab and toggle it back
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the behavior from the clean-room setup using NvimTreeOpen, api.node.open.tab, or the step. Trace the tab-opening path and verify that opening file2.txt leaves the previous file1.txt tab intact rather than replacing it with NvimTree.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- lua
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100