@@ -286,6 +286,8 @@ func (dv *DiffView) resizeCodeWidth() {
func (dv *DiffView) renderUnified() string {
var b strings.Builder
+ fullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth)
+
for _, h := range dv.unified.Hunks {
if dv.lineNumbers {
b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("ā¦", dv.beforeNumDigits)))
@@ -308,7 +310,9 @@ func (dv *DiffView) renderUnified() string {
b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
}
- b.WriteString(dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" " + content))
+ b.WriteString(fullContentStyle.Render(
+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" " + content),
+ ))
beforeLine++
afterLine++
case udiff.Insert:
@@ -316,16 +320,20 @@ func (dv *DiffView) renderUnified() string {
b.WriteString(dv.style.InsertLine.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
b.WriteString(dv.style.InsertLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
}
- b.WriteString(dv.style.InsertLine.Symbol.Render("+ "))
- b.WriteString(dv.style.InsertLine.Code.Width(dv.codeWidth).Render(content))
+ b.WriteString(fullContentStyle.Render(
+ dv.style.InsertLine.Symbol.Render("+ ") +
+ dv.style.InsertLine.Code.Width(dv.codeWidth).Render(content),
+ ))
afterLine++
case udiff.Delete:
if dv.lineNumbers {
b.WriteString(dv.style.DeleteLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
b.WriteString(dv.style.DeleteLine.LineNumber.Render(pad(" ", dv.afterNumDigits)))
}
- b.WriteString(dv.style.DeleteLine.Symbol.Render("- "))
- b.WriteString(dv.style.DeleteLine.Code.Width(dv.codeWidth).Render(content))
+ b.WriteString(fullContentStyle.Render(
+ dv.style.DeleteLine.Symbol.Render("- ") +
+ dv.style.DeleteLine.Code.Width(dv.codeWidth).Render(content),
+ ))
beforeLine++
}
b.WriteRune('\n')
@@ -339,6 +347,9 @@ func (dv *DiffView) renderUnified() string {
func (dv *DiffView) renderSplit() string {
var b strings.Builder
+ beforeFullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth)
+ afterFullContentStyle := lipgloss.NewStyle().MaxWidth(dv.fullCodeWidth + btoi(dv.extraColOnAfter))
+
for i, h := range dv.splitHunks {
if dv.lineNumbers {
b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("ā¦", dv.beforeNumDigits)))
@@ -371,19 +382,25 @@ func (dv *DiffView) renderSplit() string {
if dv.lineNumbers {
b.WriteString(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
}
- b.WriteString(dv.style.MissingLine.Code.Width(dv.fullCodeWidth).Render(" "))
+ b.WriteString(beforeFullContentStyle.Render(
+ dv.style.MissingLine.Code.Width(dv.fullCodeWidth).Render(" "),
+ ))
case l.before.Kind == udiff.Equal:
if dv.lineNumbers {
b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
}
- b.WriteString(dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" " + beforeContent))
+ b.WriteString(beforeFullContentStyle.Render(
+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(" " + beforeContent),
+ ))
beforeLine++
case l.before.Kind == udiff.Delete:
if dv.lineNumbers {
b.WriteString(dv.style.DeleteLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
}
- b.WriteString(dv.style.DeleteLine.Symbol.Render("- "))
- b.WriteString(dv.style.DeleteLine.Code.Width(dv.codeWidth).Render(beforeContent))
+ b.WriteString(beforeFullContentStyle.Render(
+ dv.style.DeleteLine.Symbol.Render("- ") +
+ dv.style.DeleteLine.Code.Width(dv.codeWidth).Render(beforeContent),
+ ))
beforeLine++
}
@@ -392,19 +409,25 @@ func (dv *DiffView) renderSplit() string {
if dv.lineNumbers {
b.WriteString(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.afterNumDigits)))
}
- b.WriteString(dv.style.MissingLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "))
+ b.WriteString(afterFullContentStyle.Render(
+ dv.style.MissingLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "),
+ ))
case l.after.Kind == udiff.Equal:
if dv.lineNumbers {
b.WriteString(dv.style.EqualLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
}
- b.WriteString(dv.style.EqualLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" " + afterContent))
+ b.WriteString(afterFullContentStyle.Render(
+ dv.style.EqualLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" " + afterContent),
+ ))
afterLine++
case l.after.Kind == udiff.Insert:
if dv.lineNumbers {
b.WriteString(dv.style.InsertLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
}
- b.WriteString(dv.style.InsertLine.Symbol.Render("+ "))
- b.WriteString(dv.style.InsertLine.Code.Width(dv.codeWidth + btoi(dv.extraColOnAfter)).Render(afterContent))
+ b.WriteString(afterFullContentStyle.Render(
+ dv.style.InsertLine.Symbol.Render("+ ") +
+ dv.style.InsertLine.Code.Width(dv.codeWidth+btoi(dv.extraColOnAfter)).Render(afterContent),
+ ))
afterLine++
}
@@ -10,6 +10,6 @@
[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m 9[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m10[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m
[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m10[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m11[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m
[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m11[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m12[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m
-[48;2;51;41;41mĀ [m[38;2;255;56;139;48;2;51;41;41m12[m[48;2;51;41;41mĀ [m[38;2;255;56;139;48;2;58;48;48m- [m[38;2;241;239;239;48;2;58;48;48m[m[48;2;41;50;41mĀ [m[38;2;10;220;217;48;2;41;50;41m13[m[48;2;41;50;41m[m[38;2;10;220;217;48;2;48;58;48m[m[38;2;241;239;239;48;2;48;58;48m[m
+[48;2;51;41;41mĀ [m[38;2;255;56;139;48;2;51;41;41m12[m[48;2;51;41;41mĀ [m[38;2;255;56;139;48;2;58;48;48m-[m[38;2;241;239;239;48;2;58;48;48m[m[48;2;41;50;41mĀ [m[38;2;10;220;217;48;2;41;50;41m13[m[48;2;41;50;41mĀ [m[38;2;10;220;217;48;2;48;58;48m[m[38;2;241;239;239;48;2;48;58;48m[m
[48;2;58;57;67mĀ [m[48;2;58;57;67m [m[48;2;58;57;67mĀ [m[48;2;58;57;67m[m[48;2;58;57;67m [m[48;2;41;50;41mĀ [m[38;2;10;220;217;48;2;41;50;41m14[m[48;2;41;50;41mĀ [m[38;2;10;220;217;48;2;48;58;48m[m[38;2;241;239;239;48;2;48;58;48m[m
[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m13[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m15[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m
@@ -10,6 +10,6 @@
[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m 9[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m10[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m
[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m10[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m11[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m
[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m11[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m12[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m
-[48;2;51;41;41mĀ [m[38;2;255;56;139;48;2;51;41;41m12[m[48;2;51;41;41mĀ [m[38;2;255;56;139;48;2;58;48;48m- [m[38;2;241;239;239;48;2;58;48;48m[m[48;2;41;50;41mĀ [m[38;2;10;220;217;48;2;41;50;41m13[m[48;2;41;50;41mĀ [m[38;2;10;220;217;48;2;48;58;48m[m[38;2;241;239;239;48;2;48;58;48m[m
+[48;2;51;41;41mĀ [m[38;2;255;56;139;48;2;51;41;41m12[m[48;2;51;41;41mĀ [m[38;2;255;56;139;48;2;58;48;48m-[m[38;2;241;239;239;48;2;58;48;48m[m[48;2;41;50;41mĀ [m[38;2;10;220;217;48;2;41;50;41m13[m[48;2;41;50;41mĀ [m[38;2;10;220;217;48;2;48;58;48m+[m[38;2;241;239;239;48;2;48;58;48m[m
[48;2;58;57;67mĀ [m[48;2;58;57;67m [m[48;2;58;57;67mĀ [m[48;2;58;57;67m[m[48;2;58;57;67m [m[48;2;41;50;41mĀ [m[38;2;10;220;217;48;2;41;50;41m14[m[48;2;41;50;41mĀ [m[38;2;10;220;217;48;2;48;58;48m+[m[38;2;241;239;239;48;2;48;58;48m[m
[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m13[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m[48;2;58;57;67mĀ [m[38;2;223;219;221;48;2;58;57;67m15[m[48;2;58;57;67mĀ [m[38;2;241;239;239;48;2;32;31;38m[m[48;2;32;31;38m [m
@@ -10,6 +10,6 @@
[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m 9[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m10[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m
[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m10[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m11[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m
[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m11[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m12[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m
-[48;2;255;205;210mĀ [m[38;2;255;56;139;48;2;255;205;210m12[m[48;2;255;205;210mĀ [m[38;2;255;56;139;48;2;255;235;238m- [m[38;2;32;31;38;48;2;255;235;238m[m[48;2;200;230;201mĀ [m[38;2;10;220;217;48;2;200;230;201m13[m[48;2;200;230;201m[m[38;2;10;220;217;48;2;232;245;233m[m[38;2;32;31;38;48;2;232;245;233m[m
+[48;2;255;205;210mĀ [m[38;2;255;56;139;48;2;255;205;210m12[m[48;2;255;205;210mĀ [m[38;2;255;56;139;48;2;255;235;238m-[m[38;2;32;31;38;48;2;255;235;238m[m[48;2;200;230;201mĀ [m[38;2;10;220;217;48;2;200;230;201m13[m[48;2;200;230;201mĀ [m[38;2;10;220;217;48;2;232;245;233m[m[38;2;32;31;38;48;2;232;245;233m[m
[48;2;223;219;221mĀ [m[48;2;223;219;221m [m[48;2;223;219;221mĀ [m[48;2;223;219;221m[m[48;2;223;219;221m [m[48;2;200;230;201mĀ [m[38;2;10;220;217;48;2;200;230;201m14[m[48;2;200;230;201mĀ [m[38;2;10;220;217;48;2;232;245;233m[m[38;2;32;31;38;48;2;232;245;233m[m
[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m13[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m15[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m
@@ -10,6 +10,6 @@
[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m 9[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m10[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m
[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m10[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m11[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m
[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m11[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m12[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m
-[48;2;255;205;210mĀ [m[38;2;255;56;139;48;2;255;205;210m12[m[48;2;255;205;210mĀ [m[38;2;255;56;139;48;2;255;235;238m- [m[38;2;32;31;38;48;2;255;235;238m[m[48;2;200;230;201mĀ [m[38;2;10;220;217;48;2;200;230;201m13[m[48;2;200;230;201mĀ [m[38;2;10;220;217;48;2;232;245;233m[m[38;2;32;31;38;48;2;232;245;233m[m
+[48;2;255;205;210mĀ [m[38;2;255;56;139;48;2;255;205;210m12[m[48;2;255;205;210mĀ [m[38;2;255;56;139;48;2;255;235;238m-[m[38;2;32;31;38;48;2;255;235;238m[m[48;2;200;230;201mĀ [m[38;2;10;220;217;48;2;200;230;201m13[m[48;2;200;230;201mĀ [m[38;2;10;220;217;48;2;232;245;233m+[m[38;2;32;31;38;48;2;232;245;233m[m
[48;2;223;219;221mĀ [m[48;2;223;219;221m [m[48;2;223;219;221mĀ [m[48;2;223;219;221m[m[48;2;223;219;221m [m[48;2;200;230;201mĀ [m[38;2;10;220;217;48;2;200;230;201m14[m[48;2;200;230;201mĀ [m[38;2;10;220;217;48;2;232;245;233m+[m[38;2;32;31;38;48;2;232;245;233m[m
[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m13[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m[48;2;223;219;221mĀ [m[38;2;58;57;67;48;2;223;219;221m15[m[48;2;223;219;221mĀ [m[38;2;32;31;38;48;2;241;239;239m[m[48;2;241;239;239m [m