@@ -292,7 +292,8 @@ func (dv *DiffView) renderUnified() string {
292 fullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth)
292 fullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth)
293 printedLines := 0
293 printedLines := 0
295− for _, h := range dv.unified.Hunks {
296+ for i, h := range dv.unified.Hunks {
296 if dv.lineNumbers {
297 if dv.lineNumbers {
297 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
298 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
298 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.afterNumDigits)))
299 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.afterNumDigits)))
@@ -305,7 +306,23 @@ func (dv *DiffView) renderUnified() string {
305 beforeLine := h.FromLine
306 beforeLine := h.FromLine
306 afterLine := h.ToLine
307 afterLine := h.ToLine
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) {
316+ b.WriteString(dv.style.EqualLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
317+ b.WriteString(dv.style.EqualLine.LineNumber.Render(pad("…", dv.afterNumDigits)))
319+ b.WriteString(fullContentStyle.Render(
320+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" …"),
309 content := strings.TrimSuffix(l.Content, "\n")
326 content := strings.TrimSuffix(l.Content, "\n")
310 content = ansi.Truncate(content, dv.codeWidth, "…")
327 content = ansi.Truncate(content, dv.codeWidth, "…")
@@ -368,6 +385,7 @@ func (dv *DiffView) renderSplit() string {
368 afterFullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth + btoi(dv.extraColOnAfter))
385 afterFullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth + btoi(dv.extraColOnAfter))
369 printedLines := 0
386 printedLines := 0
371 for i, h := range dv.splitHunks {
389 for i, h := range dv.splitHunks {
372 if dv.lineNumbers {
390 if dv.lineNumbers {
373 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
391 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
@@ -384,7 +402,28 @@ func (dv *DiffView) renderSplit() string {
384 beforeLine := h.fromLine
402 beforeLine := h.fromLine
385 afterLine := h.toLine
403 afterLine := h.toLine
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) {
412+ b.WriteString(dv.style.EqualLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
414+ b.WriteString(beforeFullContentStyle.Render(
415+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" …"),
418+ b.WriteString(dv.style.EqualLine.LineNumber.Render(pad("…", dv.afterNumDigits)))
420+ b.WriteString(afterFullContentStyle.Render(
421+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" …"),
388 var beforeContent string
427 var beforeContent string
389 var afterContent string
428 var afterContent string
390 if l.before != nil {
429 if l.before != nil {