You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fixing buffer menu having stale items with terminal / cmdline window
Currently, when using special buffers like terminals / command-line
window / quickfix / location list, these buffers will get added to the
"Buffers" menu, but they don't get removed when the buffers are gone,
leaving stale menu items. Fix buffer menu to be more robust.
1. Currently the buffer menu works by using the buffer name to
add/remove the entries, but it's error-prone because the buffer could
have been renamed under-the-hood. While it uses BufFilePre/Post
autocommands to handle normal buffer renames, it doesn't work for the
command-line window (accessible via `q:`) which gets renamed without
sending the autocommand. Instead, change the menus to cached a
dictionary a bufnum -> menu name, so it will always know how to
remove a buffer from itself.
2. Add BufFilePre/Post autocommands to command-line windows when it
changes the buffer name to "[Command Line]".
3. Add BufFilePre/Post autocommands to terminal windows when it
changes the buffer name to the command, e.g. "!/bin/zsh".
Either (1) or (2)+(3) will fix the issue, but just doing all of them as
this seems like the right thing to do (2 + 3) also means the menu items
show the correct names instead of just saying "[No Name]".
This doesn't fix the following which needs to be fixed later:
1. Quickfix and Location List don't send BufDeleted autocmds. This leads
to them also leaving stale buffer menu items as there's no way for
the script to know that those buffers are gone.
Also add unit tests for cmdline-win / terminal buffer menus
Note: This fix misc test_cmdline failures in MacVim due to the menu item
not being able to be removed.
This is a duplicate of vim/vim#5787
0 commit comments