@@ -286,6 +286,8 @@ func (dv *DiffView) resizeCodeWidth() {
286func (dv *DiffView) renderUnified() string {
286func (dv *DiffView) renderUnified() string {
287 var b strings.Builder
287 var b strings.Builder
289+ fullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth)
289 for _, h := range dv.unified.Hunks {
291 for _, h := range dv.unified.Hunks {
290 if dv.lineNumbers {
292 if dv.lineNumbers {
291 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
293 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
@@ -308,7 +310,9 @@ func (dv *DiffView) renderUnified() string {
308 b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
310 b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
309 b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
311 b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
313+ b.WriteString(fullContentStyle.Render(
311− b.WriteString(dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" " + content))
314+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" " + content),
312 beforeLine++
316 beforeLine++
313 afterLine++
317 afterLine++
314 case udiff.Insert:
318 case udiff.Insert:
@@ -316,16 +320,20 @@ func (dv *DiffView) renderUnified() string {
316 b.WriteString(dv.style.InsertLine.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
320 b.WriteString(dv.style.InsertLine.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
317 b.WriteString(dv.style.InsertLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
321 b.WriteString(dv.style.InsertLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
323+ b.WriteString(fullContentStyle.Render(
319− b.WriteString(dv.style.InsertLine.Symbol.Render("+ "))
324+ dv.style.InsertLine.Symbol.Render("+ ") +
320− b.WriteString(dv.style.InsertLine.Code.Width(dv.codeWidth).Render(content))
325+ dv.style.InsertLine.Code.Width(dv.codeWidth).Render(content),
321 afterLine++
327 afterLine++
322 case udiff.Delete:
328 case udiff.Delete:
323 if dv.lineNumbers {
329 if dv.lineNumbers {
324 b.WriteString(dv.style.DeleteLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
330 b.WriteString(dv.style.DeleteLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
325 b.WriteString(dv.style.DeleteLine.LineNumber.Render(pad(" ", dv.afterNumDigits)))
331 b.WriteString(dv.style.DeleteLine.LineNumber.Render(pad(" ", dv.afterNumDigits)))
333+ b.WriteString(fullContentStyle.Render(
327− b.WriteString(dv.style.DeleteLine.Symbol.Render("- "))
334+ dv.style.DeleteLine.Symbol.Render("- ") +
328− b.WriteString(dv.style.DeleteLine.Code.Width(dv.codeWidth).Render(content))
335+ dv.style.DeleteLine.Code.Width(dv.codeWidth).Render(content),
329 beforeLine++
337 beforeLine++
331 b.WriteRune('\n')
339 b.WriteRune('\n')
@@ -339,6 +347,9 @@ func (dv *DiffView) renderUnified() string {
339func (dv *DiffView) renderSplit() string {
347func (dv *DiffView) renderSplit() string {
340 var b strings.Builder
348 var b strings.Builder
350+ beforeFullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth)
351+ afterFullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth + btoi(dv.extraColOnAfter))
342 for i, h := range dv.splitHunks {
353 for i, h := range dv.splitHunks {
343 if dv.lineNumbers {
354 if dv.lineNumbers {
344 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
355 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
@@ -371,19 +382,25 @@ func (dv *DiffView) renderSplit() string {
371 if dv.lineNumbers {
382 if dv.lineNumbers {
372 b.WriteString(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
383 b.WriteString(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
385+ b.WriteString(beforeFullContentStyle.Render(
374− b.WriteString(dv.style.MissingLine.Code.Width(dv.fullCodeWidth).Render(" "))
386+ dv.style.MissingLine.Code.Width(dv.fullCodeWidth).Render(" "),
375 case l.before.Kind == udiff.Equal:
388 case l.before.Kind == udiff.Equal:
376 if dv.lineNumbers {
389 if dv.lineNumbers {
377 b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
390 b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
392+ b.WriteString(beforeFullContentStyle.Render(
379− b.WriteString(dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" " + beforeContent))
393+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" " + beforeContent),
380 beforeLine++
395 beforeLine++
381 case l.before.Kind == udiff.Delete:
396 case l.before.Kind == udiff.Delete:
382 if dv.lineNumbers {
397 if dv.lineNumbers {
383 b.WriteString(dv.style.DeleteLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
398 b.WriteString(dv.style.DeleteLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
400+ b.WriteString(beforeFullContentStyle.Render(
385− b.WriteString(dv.style.DeleteLine.Symbol.Render("- "))
401+ dv.style.DeleteLine.Symbol.Render("- ") +
386− b.WriteString(dv.style.DeleteLine.Code.Width(dv.codeWidth).Render(beforeContent))
402+ dv.style.DeleteLine.Code.Width(dv.codeWidth).Render(beforeContent),
387 beforeLine++
404 beforeLine++
@@ -392,19 +409,25 @@ func (dv *DiffView) renderSplit() string {
392 if dv.lineNumbers {
409 if dv.lineNumbers {
393 b.WriteString(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.afterNumDigits)))
410 b.WriteString(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.afterNumDigits)))
412+ b.WriteString(afterFullContentStyle.Render(
395− b.WriteString(dv.style.MissingLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "))
413+ dv.style.MissingLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "),
396 case l.after.Kind == udiff.Equal:
415 case l.after.Kind == udiff.Equal:
397 if dv.lineNumbers {
416 if dv.lineNumbers {
398 b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
417 b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
419+ b.WriteString(afterFullContentStyle.Render(
400− b.WriteString(dv.style.EqualLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" " + afterContent))
420+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" " + afterContent),
401 afterLine++
422 afterLine++
402 case l.after.Kind == udiff.Insert:
423 case l.after.Kind == udiff.Insert:
403 if dv.lineNumbers {
424 if dv.lineNumbers {
404 b.WriteString(dv.style.InsertLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
425 b.WriteString(dv.style.InsertLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
427+ b.WriteString(afterFullContentStyle.Render(
406− b.WriteString(dv.style.InsertLine.Symbol.Render("+ "))
428+ dv.style.InsertLine.Symbol.Render("+ ") +
407− b.WriteString(dv.style.InsertLine.Code.Width(dv.codeWidth + btoi(dv.extraColOnAfter)).Render(afterContent))
429+ dv.style.InsertLine.Code.Width(dv.codeWidth+btoi(dv.extraColOnAfter)).Render(afterContent),
408 afterLine++
431 afterLine++