The "console fills the whole column" + "sidebar panes all fucked up on
re-entry" bug traces to three interacting problems:
1. I was creating bars BEFORE dapui.open, then using `wincmd K/J` to
force them to full width. That cascade recomputed every window
height. dapui windows without winfixheight absorbed freed space
unpredictably, and the drift accumulated on every toggle.
2. M.exit was closing our bars BEFORE dapui. When our bars closed,
their 4 rows were freed; dapui grabbed those rows into Console
and remembered the new size. Next open → Console ballooned.
3. Console height was coming out right on first entry but dapui's
internal size tracker was letting it grow back on re-open.
Fixes:
- Open bars AFTER dapui.open. `:topleft split` and `:botright split`
natively produce full-width horizontal splits above/below whatever
layout already exists — no wincmd K/J rearrangement needed.
- Close dapui BEFORE close_bars in M.exit so dapui doesn't see our
bars disappearing and grow to fill the void.
- New pin_dapui_sizes(): after dapui.open, iterate dapui panes and
set winfixheight = true on all of them. Console gets an explicit
set_height to config.opts.console_height (default 5) first. Panes
are now locked — wincmd/resize can't mess with them.
- Console height: fixed 5 rows (config.opts.console_height), no
more dynamic min(5, 15% of avail) which was producing unstable
values on re-entry.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>