mirror of
https://github.com/neovim/neovim.git
synced 2026-08-14 11:29:31 +00:00
Similar to #36123, the ui2 windows confuse `:$q`, which doesn't close the last window on the tab, but targets a hidden ui2 window. The problem seems to be a combination of using `FOR_ALL_WINDOWS_IN_TAB()`, which includes hidden windows, and then counting the windows without factoring in `win_has_winnr()`. There are examples of using `win_has_winnr()`, such as: - [`eval/buffer.c`'s `buf_win_common()`](4a5062cda6/src/nvim/eval/buffer.c (L474-L475)) - [`eval/window.c`'s `f_getwininfo()`](4a5062cda6/src/nvim/eval/window.c (L130-L135)) - [`window.c`'s `win_get_tabwin()`](4a5062cda6/src/nvim/window.c (L7860-L7869)) But possibly problematic ones: - `ex_docmd.c`'s: - [`invalid_range()`](4a5062cda6/src/nvim/ex_docmd.c (L3891-L3893)) - ^ should this include hidden windows? Can a user address them by number? `win_has_winnr()` suggests not - [`ex_close()`](4a5062cda6/src/nvim/ex_docmd.c (L5233-L5244)) - [`ex_hide()`](4a5062cda6/src/nvim/ex_docmd.c (L5478-L5484)) - `eval/window.c`'s: - [`f_winrestcmd()`](4a5062cda6/src/nvim/eval/window.c (L797-L808)) - [`find_win_by_nr()`](4a5062cda6/src/nvim/eval/window.c (L172-L180))