nvim-tree / nvim-tree/nvim-tree.lua

Opening file in new tab, replaces previous tab file with NvimTree

Open
#2,933 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug PR please
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.