Skip to main content

compute_filler_rows

Function compute_filler_rows 

Source
pub fn compute_filler_rows(index: &HunkIndex, side: Side) -> Vec<VirtualRow>
Expand description

Pure function from (HunkIndex, side) to filler rows. Exposed for direct unit testing without round-tripping through a DiffSession.

Two-way vs three-way. Per-hunk shape is inferred from hunk.ranges.len():

  • len() == 2 (two-way): this pane’s len vs the one other side’s len. Conflict hunks shouldn’t occur (compute_two_way doesn’t emit them) — skipped defensively.
  • len() >= 3 (three-way): this pane’s len vs the max of all participating sides’ lens. Conflict hunks contribute filler the same way Change hunks do — the conflict is about content, not geometry.

If the requested side’s slot isn’t present in the hunk (e.g. Side::Remote on a two-way hunk), the hunk is skipped — the provider degrades gracefully when a session shape doesn’t match the hunk shape.