fix: declare bce in terminfo now that erase ops actually implement it
The bce (background-color-erase) capability was deliberately left
undeclared with a comment saying erase-shaped ops always fill with
COLOR_DEFAULT, not the active background -- true when written, stale
the moment blank_cell(g) landed (see the commit that introduced it):
clear_row/erase_line/erase_chars/insert_chars/delete_chars all fill
via blank_cell(g), which reads g.cur_bg.
Leaving a real capability undeclared isn't harmless: an ncurses-linked
app checks terminfo before trusting erase-to-fill-with-background, and
without bce falls back to manually padding a line with spaces instead
of a plain erase -- starting from wherever the cursor already was, not
column 1. On a full-width row that overshoots the last column by
however far the cursor had already advanced, autowrapping and forcing
a real scroll.
This is the actual root cause of a real nvim session intermittently
shifting the whole screen up by one row when entering command-line
mode -- root-caused by replaying the exact captured bytes into a real
tmux pane (whose terminfo correctly declares bce) and watching it
reproduce the identical corruption, which places the defect in what
term told nvim about itself, not in term's own byte handling.