in theory: a really really long hint could cause scrolling to happen after the cursor position is saved. in practice: tab completion in /usr/lib/ causes the entire screen to be filled with filenames, which is actively unhelpful
can avoid reimplementing unicode rendering here by assuming that each rune has a width of 2 and shooting for significantly fewer lines than the full height of the terminal