@@ -149,6 +149,9 @@ func (dv *DiffView) String() string {
149149 if dv.width > 0 {
150150 style = style.MaxWidth(dv.width)
151151 }
152+ if dv.height > 0 {
153+ style = style.MaxHeight(dv.height)
154+ }
152155
153156 switch dv.layout {
154157 case layoutUnified:
@@ -287,6 +290,7 @@ func (dv *DiffView) renderUnified() string {
287290 var b strings.Builder
288291
289292 fullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth)
293+ printedLines := 0
290294
291295 for _, h := range dv.unified.Hunks {
292296 if dv.lineNumbers {
@@ -296,6 +300,7 @@ func (dv *DiffView) renderUnified() string {
296300 content := ansi.Truncate(dv.hunkLineFor(h), dv.fullCodeWidth, "…")
297301 b.WriteString(dv.style.DividerLine.Code.Width(dv.fullCodeWidth).Render(content))
298302 b.WriteRune('\n')
303+ printedLines++
299304
300305 beforeLine := h.FromLine
301306 afterLine := h.ToLine
@@ -337,7 +342,19 @@ func (dv *DiffView) renderUnified() string {
337342 beforeLine++
338343 }
339344 b.WriteRune('\n')
345+
346+ printedLines++
347+ }
348+ }
349+
350+ for printedLines < dv.height {
351+ if dv.lineNumbers {
352+ b.WriteString(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
353+ b.WriteString(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.afterNumDigits)))
340354 }
355+ b.WriteString(dv.style.MissingLine.Code.Width(dv.fullCodeWidth).Render(" "))
356+ b.WriteRune('\n')
357+ printedLines++
341358 }
342359
343360 return b.String()
@@ -349,6 +366,7 @@ func (dv *DiffView) renderSplit() string {
349366
350367 beforeFullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth)
351368 afterFullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth + btoi(dv.extraColOnAfter))
369+ printedLines := 0
352370
353371 for i, h := range dv.splitHunks {
354372 if dv.lineNumbers {
@@ -361,6 +379,7 @@ func (dv *DiffView) renderSplit() string {
361379 }
362380 b.WriteString(dv.style.DividerLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "))
363381 b.WriteRune('\n')
382+ printedLines++
364383
365384 beforeLine := h.fromLine
366385 afterLine := h.toLine
@@ -432,9 +451,24 @@ func (dv *DiffView) renderSplit() string {
432451 }
433452
434453 b.WriteRune('\n')
454+
455+ printedLines++
435456 }
436457 }
437458
459+ for printedLines < dv.height {
460+ if dv.lineNumbers {
461+ b.WriteString(dv.style.MissingLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
462+ }
463+ b.WriteString(dv.style.MissingLine.Code.Width(dv.fullCodeWidth).Render(" "))
464+ if dv.lineNumbers {
465+ b.WriteString(dv.style.MissingLine.LineNumber.Render(pad("…", dv.afterNumDigits)))
466+ }
467+ b.WriteString(dv.style.MissingLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "))
468+ b.WriteRune('\n')
469+ printedLines++
470+ }
471+
438472 return b.String()
439473}
440474