currently, if a vt scroll region is active (DECSTBM), and the region is not the entire screen, we disable appending new rows to the scrollback buffer.
hterm_terminal.js:
hterm.Terminal.prototype.setVTScrollRegion
- only sets scroll top/bottom if it's smaller than the current terminal
hterm.Terminal.prototype.newLine
- if scroll region is active, do not append any rows
for programs (like screen) which allow for a static banner at the bottom of the screen, this disables scrollback appending for them too. we could enhance the logic so that, if this.vtScrollTop_ is 0, we append the first row to the scrollback.
if (this.vtScrollBottom_ != null) {
// A VT Scroll region is active, we never append new rows.
if (this.screen_.cursorPosition.row == this.vtScrollBottom_) {
--> append row here
// We're at the end of the VT Scroll Region, perform a VT scroll.
this.vtScrollUp(1);
we'll have to rework some of the existing logic as appendRows assumes a vt scroll region is not active, and vtScrollUp just clears/recycles nodes.
this new logic wouldn't work if you had a program where the top row is the status line, but there isn't much we can do at that point as we can't differentiate between a region like [1, height - 1] and [3, 5] or something.
Comment 1 by vapier@chromium.org
, Jul 10 2017