feat(terminal): bring PageList to full parity with Ghostty
Second pass over the page memory model (done by Codex/gpt-6-astra in an isolated worktree, reviewed and merged here): - Resize/reflow now port Zig's incremental ReflowCursor algorithm with page backfill and the same capacity growth/split sequence, instead of rebuilding a snapshot, so page boundaries, pruning and tracked-pin remapping match Ghostty. - Point<->pin conversion for the active area starts at the list tail and the viewport offset is cached, so hot-path operations no longer walk the whole scrollback from the head. - RefCountedSet reproduces Zig's observable ID reuse and error points. - All 202 PageList tests are ported (plus 13 extra regressions). With this, the five Screen/Terminal tests previously ignored as blocked on PageList behaviour pass and are re-enabled. Test Plan: - cargo test -p ghostty-terminal (913 passed, 0 ignored) - cargo clippy -p ghostty-terminal --all-targets -- -D warnings
This commit is contained in:
1 parent
d24b40cf2b
commit
83c10debe6
9 files changed
+4613
-1770
No files matched your search
@@ -432,7 +432,6 @@ fn terminal_index_bottom_of_scroll_region_with_hyperlinks() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore = "pagelist: erase_row_bounded leaves the row hyperlink flag set on the blanked row"]
|
||||
fn terminal_index_bottom_of_scroll_region_clear_hyperlinks() {
|
||||
let mut t = init_scrollback(5, 5, 0);
|
||||
t.set_top_and_bottom_margin(2, 3);
|
||||
|
||||
@@ -444,7 +444,6 @@ fn terminal_resize_with_wraparound_off() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore = "pagelist: reflow less cols leaves the active area one row too low (screen has '01\n23' but active/viewport shows '23'); see pagelist-requests"]
|
||||
fn terminal_resize_with_wraparound_on() {
|
||||
let mut t = init(4, 2);
|
||||
|
||||
|
||||
Reference in new issue
Block a user