on main help sign in
refactor(diffview): ask hunk by parameter instead of accessing by index
commit67fe93e4d37a7e872b937c4b48223f49c970e79f authorAndrey Nering <andreynering@users.noreply.github.com> dateThu 5 Jun 2025, 17:28 (1 year ago) parent062c9a4
1 file changed+8−9
internal/exp/diffview/diffview.go+8−9
internal/exp/diffview/diffview.go+8−9
@@ -131,12 +131,12 @@ func (dv *DiffView) String() string {
131131
132132 var b strings.Builder
133133
134− for i, h := range dv.unified.Hunks {
134+ for _, h := range dv.unified.Hunks {
135135 if dv.lineNumbers {
136136 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", beforeNumDigits)))
137137 b.WriteString(dv.style.DividerLine.LineNumber.Render(pad("…", afterNumDigits)))
138138 }
139− b.WriteString(dv.style.DividerLine.Code.Width(codeWidth + leadingSymbolsSize).Render(dv.hunkLineFor(i)))
139+ b.WriteString(dv.style.DividerLine.Code.Width(codeWidth + leadingSymbolsSize).Render(dv.hunkLineFor(h)))
140140 b.WriteRune('\n')
141141
142142 beforeLine := h.FromLine
@@ -207,9 +207,8 @@ func (dv *DiffView) lineNumberDigits() (maxBefore, maxAfter int) {
207207 return
208208}
209209
210−func (dv *DiffView) hunkLineFor(i int) string {
211− h := dv.unified.Hunks[i]
212− beforeShownLines, afterShownLines := dv.hunkShownLines(i)
210+func (dv *DiffView) hunkLineFor(h *udiff.Hunk) string {
211+ beforeShownLines, afterShownLines := dv.hunkShownLines(h)
213212
214213 return fmt.Sprintf(
215214 " @@ -%d,%d +%d,%d @@ ",
@@ -222,8 +221,8 @@ func (dv *DiffView) hunkLineFor(i int) string {
222221
223222// hunkShownLines calculates the number of lines shown in a hunk for both before
224223// and after versions.
225−func (dv *DiffView) hunkShownLines(i int) (before, after int) {
226− for _, l := range dv.unified.Hunks[i].Lines {
224+func (dv *DiffView) hunkShownLines(h *udiff.Hunk) (before, after int) {
225+ for _, l := range h.Lines {
227226 switch l.Kind {
228227 case udiff.Equal:
229228 before++
@@ -242,8 +241,8 @@ func (dv *DiffView) detectWidth() {
242241 return
243242 }
244243
245− for i, h := range dv.unified.Hunks {
246− shownLines := ansi.StringWidth(dv.hunkLineFor(i))
244+ for _, h := range dv.unified.Hunks {
245+ shownLines := ansi.StringWidth(dv.hunkLineFor(h))
247246
248247 for _, l := range h.Lines {
249248 lineWidth := ansi.StringWidth(strings.TrimSuffix(l.Content, "\n"))