@@ -132,21 +132,11 @@ func (dv *DiffView) String() string {
132 var b strings.Builder
132 var b strings.Builder
134 for i, h := range dv.unified.Hunks {
134 for i, h := range dv.unified.Hunks {
135− beforeShownLines, afterShownLines := dv.hunkShownLines(i)
137 if dv.lineNumbers {
135 if dv.lineNumbers {
138 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", beforeNumDigits)))
136 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", beforeNumDigits)))
139 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", afterNumDigits)))
137 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", afterNumDigits)))
141− b.WriteString(dv.style.DividerLine.Code.Width(codeWidth + leadingSymbolsSize).Render(
139+ b.WriteString(dv.style.DividerLine.Code.Width(codeWidth + leadingSymbolsSize).Render(dv.hunkLineFor(i)))
143− " @@ -%d,%d +%d,%d @@",
150 b.WriteRune('\n')
140 b.WriteRune('\n')
152 beforeLine := h.FromLine
142 beforeLine := h.FromLine
@@ -217,6 +207,19 @@ func (dv *DiffView) lineNumberDigits() (maxBefore, maxAfter int) {
210+func (dv *DiffView) hunkLineFor(i int) string {
211+ h := dv.unified.Hunks[i]
212+ beforeShownLines, afterShownLines := dv.hunkShownLines(i)
215+ " @@ -%d,%d +%d,%d @@ ",
220// hunkShownLines calculates the number of lines shown in a hunk for both before
223// hunkShownLines calculates the number of lines shown in a hunk for both before
221// and after versions.
224// and after versions.
222func (dv *DiffView) hunkShownLines(i int) (before, after int) {
225func (dv *DiffView) hunkShownLines(i int) (before, after int) {
@@ -239,11 +242,13 @@ func (dv *DiffView) detectWidth() {
242− for _, h := range dv.unified.Hunks {
245+ for i, h := range dv.unified.Hunks {
246+ shownLines := ansi.StringWidth(dv.hunkLineFor(i))
243 for _, l := range h.Lines {
248 for _, l := range h.Lines {
244 lineWidth := ansi.StringWidth(strings.TrimSuffix(l.Content, "\n"))
249 lineWidth := ansi.StringWidth(strings.TrimSuffix(l.Content, "\n"))
245 lineWidth += leadingSymbolsSize
250 lineWidth += leadingSymbolsSize
246− dv.width = max(dv.width, lineWidth)
251+ dv.width = max(dv.width, lineWidth, shownLines)