st: alternative scrollback using ring buffer and view offset
Implement scrollback as a fixed-size ring buffer and render history
by offsetting the view instead of copying screen contents.
Implement reflow of history and screen content on resize if it is needed.
Tradeoffs / differences:
- Scrollback is disabled on the alternate screen
- Simpler model than the existing scrollback patch set
- Mouse wheel scrolling enabled by default
- Shift + page up/down and shift + end/home work as well.
- When using vim, mouse movement will no longer move the cursor.
- There can be visual artifacts if width of the window is shrank to the
size smaller than the shell promp.
- Mouse selection is persistent even if it goes off screen but it get
reset on resize.