@@ -292,7 +292,8 @@ func (dv *DiffView) renderUnified() string {
292292 fullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth)
293293 printedLines := 0
294294
295− for _, h := range dv.unified.Hunks {
295+outer:
296+ for i, h := range dv.unified.Hunks {
296297 if dv.lineNumbers {
297298 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
298299 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.afterNumDigits)))
@@ -305,7 +306,23 @@ func (dv *DiffView) renderUnified() string {
305306 beforeLine := h.FromLine
306307 afterLine := h.ToLine
307308
308− for _, l := range h.Lines {
309+ for j, l := range h.Lines {
310+ // print ellipis if we don't have enough space to print the rest of the diff
311+ hasReachedHeight := dv.height > 0 && printedLines+1 == dv.height
312+ isLastHunk := i+1 == len(dv.unified.Hunks)
313+ isLastLine := j+1 == len(h.Lines)
314+ if hasReachedHeight && (!isLastHunk || !isLastLine) {
315+ if dv.lineNumbers {
316+ b.WriteString(dv.style.EqualLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
317+ b.WriteString(dv.style.EqualLine.LineNumber.Render(pad("…", dv.afterNumDigits)))
318+ }
319+ b.WriteString(fullContentStyle.Render(
320+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" …"),
321+ ))
322+ b.WriteRune('\n')
323+ break outer
324+ }
325+
309326 content := strings.TrimSuffix(l.Content, "\n")
310327 content = ansi.Truncate(content, dv.codeWidth, "…")
311328
@@ -368,6 +385,7 @@ func (dv *DiffView) renderSplit() string {
368385 afterFullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth + btoi(dv.extraColOnAfter))
369386 printedLines := 0
370387
388+outer:
371389 for i, h := range dv.splitHunks {
372390 if dv.lineNumbers {
373391 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
@@ -384,7 +402,28 @@ func (dv *DiffView) renderSplit() string {
384402 beforeLine := h.fromLine
385403 afterLine := h.toLine
386404
387− for _, l := range h.lines {
405+ for j, l := range h.lines {
406+ // print ellipis if we don't have enough space to print the rest of the diff
407+ hasReachedHeight := dv.height > 0 && printedLines+1 == dv.height
408+ isLastHunk := i+1 == len(dv.unified.Hunks)
409+ isLastLine := j+1 == len(h.lines)
410+ if hasReachedHeight && (!isLastHunk || !isLastLine) {
411+ if dv.lineNumbers {
412+ b.WriteString(dv.style.EqualLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
413+ }
414+ b.WriteString(beforeFullContentStyle.Render(
415+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" …"),
416+ ))
417+ if dv.lineNumbers {
418+ b.WriteString(dv.style.EqualLine.LineNumber.Render(pad("…", dv.afterNumDigits)))
419+ }
420+ b.WriteString(afterFullContentStyle.Render(
421+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" …"),
422+ ))
423+ b.WriteRune('\n')
424+ break outer
425+ }
426+
388427 var beforeContent string
389428 var afterContent string
390429 if l.before != nil {