Critical fix — the top status bar was overlapping the first rows of the
source window and Call Stack pane. Root cause: both bars were floating
windows positioned at row 0 and just-above-statusline. dapui's layout
algorithm doesn't know about floats, so its windows extend into the
rows our floats were covering. Overlap = content hidden.
Fix: convert both bars from floating windows to real splits.
:topleft split → top status bar (3 rows, winfixheight)
:botright split → bottom control bar (3 rows, winfixheight)
Splits consume real layout space so dapui's panes lay out below/above
them naturally. No more overlap.
Also:
- Bars are now 3 rows each (sep / content / sep) for clear visual
separation from the main content area, per user design preference.
- IP gutter sign (👉) now placed via extmark with sign_text at
priority 500, overriding nvim-dap's DapStopped sign which was
losing the priority tie with the breakpoint sign on the paused line.
Both the gutter finger and the EOL-vtext finger now show.
- Sidebar width: max(25, min(40, columns/3)). Scales down on narrow
terminals, caps at 40 on wide ones so the source window stays the
star. Minimum 25 keeps the panes readable.
- Console (bottom tray) height: max(5, 15% of available vertical
space) — floors at 5 rows so very tall terminals don't blow it up
while small terminals still get a usable Console.
- Sidebar panes: equal 25% each (Stack / Scopes / Watches /
Breakpoints). User preference — lets Breakpoints be visibly taller
than the 5-row minimum Console so they read as distinct panes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>