Description
I am a maintainer for barbar.nvim, and we have a feature that allows users to adjust the offset of the tabline when a sidebar (such as nvim-tree) is open.
This works well most of the time, however, recently a user reported that this does not work when using the Open At Startup snippets from the wiki. Upon investigation, it appears that this is because nvim-tree does not emit a BufWinEnter event in this case. It is worth noting that when doing :NvimTreeToggle afterward, it does.
Neovim version
NVIM v0.9.0
Build type: Release
LuaJIT 2.1.0-beta3
Operating system and version
6.2.10-arch1-1
nvim-tree version
48d53a5
Minimal config
vim.api.nvim_create_autocmd(
{'BufWinEnter', 'FileType', 'WinNew', 'WinResized', 'WinScrolled'},
{callback = function(event) vim.print(event) end}
)
vim.opt.rtp:append(vim.fn.stdpath('data') .. '/lazy/nvim-tree.lua')
require'nvim-tree'.setup {}
-- auto open nvim-tree when open neovim
local function open_nvim_tree(data)
-- buffer is a real file on the disk
local real_file = vim.fn.filereadable(data.file) == 1
-- buffer is a [No Name]
local no_name = data.file == '' and vim.bo[data.buf].buftype == ''
-- only files please
if not real_file and not no_name then
return
end
-- open the tree but dont focus it
require('nvim-tree.api').tree.toggle({ focus = false })
end
vim.api.nvim_create_autocmd({'VimEnter'}, { callback = open_nvim_tree })
It also happens with tree.open
Steps to reproduce
nvim --clean -u minimal.lua
- Observe that a
BufWinEnter event is not printed on startup for the NvimTree buffer.
Expected behavior
It follows the event sequence that happens when executing :NvimTreeToggle after startup concludes:
{
buf = 2,
event = "FileType",
file = "NvimTree_1",
id = 14,
match = "NvimTree"
}
{
buf = 1,
event = "WinNew",
file = "",
id = 14,
match = ""
}
{
buf = 2,
event = "BufWinEnter",
file = "/home/iron-e/NvimTree_1",
id = 14,
match = "/home/iron-e/NvimTree_1"
}
You can verify the above by using this snippet:
vim.opt.rtp:append(vim.fn.stdpath('data') .. '/lazy/nvim-tree.lua')
require'nvim-tree'.setup {}
-- start listening to autocmds AFTER vim enter; reduces noise
vim.api.nvim_create_autocmd('VimEnter', {callback = function()
vim.api.nvim_create_autocmd(
{'BufWinEnter', 'FileType', 'WinNew', 'WinResized', 'WinScrolled'},
{callback = function(event) vim.print(event) end}
)
end})
Then manually typing :NvimTreeToggle.
Actual behavior
{
buf = 1,
event = "BufWinEnter",
file = "",
id = 3,
match = ""
}
{
buf = 2,
event = "FileType",
file = "NvimTree_1",
id = 3,
match = "NvimTree"
}
-- no ButWinEnter for `buf = 2`
Description
I am a maintainer for barbar.nvim, and we have a feature that allows users to adjust the offset of the tabline when a sidebar (such as nvim-tree) is open.
This works well most of the time, however, recently a user reported that this does not work when using the Open At Startup snippets from the wiki. Upon investigation, it appears that this is because nvim-tree does not emit a
BufWinEnterevent in this case. It is worth noting that when doing:NvimTreeToggleafterward, it does.Neovim version
Operating system and version
6.2.10-arch1-1
nvim-tree version
48d53a5
Minimal config
It also happens with
tree.openSteps to reproduce
nvim --clean -u minimal.luaBufWinEnterevent is not printed on startup for theNvimTreebuffer.Expected behavior
It follows the event sequence that happens when executing
:NvimTreeToggleafter startup concludes:{ buf = 2, event = "FileType", file = "NvimTree_1", id = 14, match = "NvimTree" } { buf = 1, event = "WinNew", file = "", id = 14, match = "" } { buf = 2, event = "BufWinEnter", file = "/home/iron-e/NvimTree_1", id = 14, match = "/home/iron-e/NvimTree_1" }You can verify the above by using this snippet:
Then manually typing
:NvimTreeToggle.Actual behavior
{ buf = 1, event = "BufWinEnter", file = "", id = 3, match = "" } { buf = 2, event = "FileType", file = "NvimTree_1", id = 3, match = "NvimTree" } -- no ButWinEnter for `buf = 2`