Deleting buffer at TermClose event doesn't trigger WinEnter/BufEnter events
jceb opened this issue · 1 comments
Describe the bug
I maintain the blinds.nvim plugin that changes the background color of windows that are currently not selected. The functionality relies on WinEnter and BufEnter events fire. With Neoterm I noticed that the events aren't triggerd when I close a terminal.
The reason for this appears to be that vim doesn't fire WinEnter and BufEnter events when a buffer is deleted in the TermClose event.
For debugging purposes I disabled the TermClose auto command. This solved the issue. Furthermore, I ran an explicit :bw!
on a newly created neoterm window and it still called the neoterm#destroy
function through the job.on_exit
handler - this handler doesn't cause the issue that TermClose does (it might also be a neovim bug). My impression is that the TermClose auto command can be deleted because the underlying functionality of cleaning up the terminal buffer is already triggered through the job.on_exit
handler.
To Reproduce
Steps to reproduce the behavior:
- Open neovim (window 1 contains the empty buffer)
- Create a second window
:new
- Opened a neoterm with
:T bash
in window 2 - Display all auto commands
set verbose=9
- exit neoterm ''
- See error, no WinEnter or BufEnter auto command ist triggerd
Expected behavior
Window 1 should have the background color of the active window.
Screenshots
What's shown in the gif should happen but it doesn't happen:
Versions (please complete the following information):
- OS: Archlinux
- neoterm commit sha1: 511f6c6
- Vim or Neovim
- Neovim
- Vim
- Version [vim --version]
NVIM v0.4.2
Build type: Release
LuaJIT 2.0.5
Compilation: /usr/bin/cc -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -O2 -DNDEBUG -DMIN_LOG_LEVEL=3 -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fdiagnostics-color=always -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPAC
K_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -I/build/neovim/src/build/config -I/build/neovim/src/neovim-0.4.2/src -I/usr/include -I/build/neovim/src/build/src/nvim/auto -I/build/neovim/src/build/include
Compiled by builduser
Features: +acl +iconv +tui
See ":help feature-compile"
Hi there, first of all, thanks for the very detailed issue. <3
My impression is that the TermClose auto command can be deleted because the underlying functionality of cleaning up the terminal buffer is already triggered through the job.on_exit handler.
Yeah, I agree. I did a quick test and without the TermClose
action the BufEnter
worked and the destruction of the neoterm object seem to work properly. 🎉