on main help sign in
refactor(diffview): make code a little bit shorter
commit3ece67a485ab8efe44491cfbd10f11412de31023 authorAndrey Nering <andreynering@users.noreply.github.com> dateThu 12 Jun 2025, 15:58 (1 year ago) parentc681805
1 file changed+71−58
internal/exp/diffview/diffview.go+71−58
internal/exp/diffview/diffview.go+71−58
@@ -342,12 +342,13 @@ func (dv *DiffView) renderUnified() string {
342342
343343outer:
344344 for i, h := range dv.unified.Hunks {
345+ ls := dv.style.DividerLine
345346 if dv.lineNumbers {
346− write(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
347− write(dv.style.DividerLine.LineNumber.Render(pad("…", dv.afterNumDigits)))
347+ write(ls.LineNumber.Render(pad("…", dv.beforeNumDigits)))
348+ write(ls.LineNumber.Render(pad("…", dv.afterNumDigits)))
348349 }
349350 content := ansi.Truncate(dv.hunkLineFor(h), dv.fullCodeWidth, "…")
350− write(dv.style.DividerLine.Code.Width(dv.fullCodeWidth).Render(content))
351+ write(ls.Code.Width(dv.fullCodeWidth).Render(content))
351352 write("\n")
352353 printedLines++
353354
@@ -360,13 +361,13 @@ outer:
360361 isLastHunk := i+1 == len(dv.unified.Hunks)
361362 isLastLine := j+1 == len(h.Lines)
362363 if hasReachedHeight && (!isLastHunk || !isLastLine) {
363− lineStyle := dv.lineStyleForType(l.Kind)
364+ ls := dv.lineStyleForType(l.Kind)
364365 if dv.lineNumbers {
365− write(lineStyle.LineNumber.Render(pad("…", dv.beforeNumDigits)))
366− write(lineStyle.LineNumber.Render(pad("…", dv.afterNumDigits)))
366+ write(ls.LineNumber.Render(pad("…", dv.beforeNumDigits)))
367+ write(ls.LineNumber.Render(pad("…", dv.afterNumDigits)))
367368 }
368369 write(fullContentStyle.Render(
369− lineStyle.Code.Width(dv.fullCodeWidth).Render(" …"),
370+ ls.Code.Width(dv.fullCodeWidth).Render(" …"),
370371 ))
371372 write("\n")
372373 break outer
@@ -384,36 +385,39 @@ outer:
384385
385386 switch l.Kind {
386387 case udiff.Equal:
387− content := getContent(dv.style.EqualLine)
388+ ls := dv.style.EqualLine
389+ content := getContent(ls)
388390 if dv.lineNumbers {
389− write(dv.style.EqualLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
390− write(dv.style.EqualLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
391+ write(ls.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
392+ write(ls.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
391393 }
392394 write(fullContentStyle.Render(
393− dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(ternary(leadingEllipsis, " …", " ") + content),
395+ ls.Code.Width(dv.fullCodeWidth).Render(ternary(leadingEllipsis, " …", " ") + content),
394396 ))
395397 beforeLine++
396398 afterLine++
397399 case udiff.Insert:
398− content := getContent(dv.style.InsertLine)
400+ ls := dv.style.InsertLine
401+ content := getContent(ls)
399402 if dv.lineNumbers {
400− write(dv.style.InsertLine.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
401− write(dv.style.InsertLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
403+ write(ls.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
404+ write(ls.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
402405 }
403406 write(fullContentStyle.Render(
404− dv.style.InsertLine.Symbol.Render(ternary(leadingEllipsis, "+…", "+ ")) +
405− dv.style.InsertLine.Code.Width(dv.codeWidth).Render(content),
407+ ls.Symbol.Render(ternary(leadingEllipsis, "+…", "+ ")) +
408+ ls.Code.Width(dv.codeWidth).Render(content),
406409 ))
407410 afterLine++
408411 case udiff.Delete:
409− content := getContent(dv.style.DeleteLine)
412+ ls := dv.style.DeleteLine
413+ content := getContent(ls)
410414 if dv.lineNumbers {
411− write(dv.style.DeleteLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
412− write(dv.style.DeleteLine.LineNumber.Render(pad(" ", dv.afterNumDigits)))
415+ write(ls.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
416+ write(ls.LineNumber.Render(pad(" ", dv.afterNumDigits)))
413417 }
414418 write(fullContentStyle.Render(
415− dv.style.DeleteLine.Symbol.Render(ternary(leadingEllipsis, "-…", "- ")) +
416− dv.style.DeleteLine.Code.Width(dv.codeWidth).Render(content),
419+ ls.Symbol.Render(ternary(leadingEllipsis, "-…", "- ")) +
420+ ls.Code.Width(dv.codeWidth).Render(content),
417421 ))
418422 beforeLine++
419423 }
@@ -424,11 +428,12 @@ outer:
424428 }
425429
426430 for printedLines < dv.height {
431+ ls := dv.style.MissingLine
427432 if dv.lineNumbers {
428− write(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
429− write(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.afterNumDigits)))
433+ write(ls.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
434+ write(ls.LineNumber.Render(pad(" ", dv.afterNumDigits)))
430435 }
431− write(dv.style.MissingLine.Code.Width(dv.fullCodeWidth).Render(" "))
436+ write(ls.Code.Width(dv.fullCodeWidth).Render(" "))
432437 write("\n")
433438 printedLines++
434439 }
@@ -452,15 +457,16 @@ func (dv *DiffView) renderSplit() string {
452457
453458outer:
454459 for i, h := range dv.splitHunks {
460+ ls := dv.style.DividerLine
455461 if dv.lineNumbers {
456− write(dv.style.DividerLine.LineNumber.Render(pad("…", dv.beforeNumDigits)))
462+ write(ls.LineNumber.Render(pad("…", dv.beforeNumDigits)))
457463 }
458464 content := ansi.Truncate(dv.hunkLineFor(dv.unified.Hunks[i]), dv.fullCodeWidth, "…")
459− write(dv.style.DividerLine.Code.Width(dv.fullCodeWidth).Render(content))
465+ write(ls.Code.Width(dv.fullCodeWidth).Render(content))
460466 if dv.lineNumbers {
461− write(dv.style.DividerLine.LineNumber.Render(pad("…", dv.afterNumDigits)))
467+ write(ls.LineNumber.Render(pad("…", dv.afterNumDigits)))
462468 }
463− write(dv.style.DividerLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "))
469+ write(ls.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "))
464470 write("\n")
465471 printedLines++
466472
@@ -473,25 +479,25 @@ outer:
473479 isLastHunk := i+1 == len(dv.unified.Hunks)
474480 isLastLine := j+1 == len(h.lines)
475481 if hasReachedHeight && (!isLastHunk || !isLastLine) {
476− lineStyle := dv.style.MissingLine
482+ ls := dv.style.MissingLine
477483 if l.before != nil {
478− lineStyle = dv.lineStyleForType(l.before.Kind)
484+ ls = dv.lineStyleForType(l.before.Kind)
479485 }
480486 if dv.lineNumbers {
481− write(lineStyle.LineNumber.Render(pad("…", dv.beforeNumDigits)))
487+ write(ls.LineNumber.Render(pad("…", dv.beforeNumDigits)))
482488 }
483489 write(beforeFullContentStyle.Render(
484− lineStyle.Code.Width(dv.fullCodeWidth).Render(" …"),
490+ ls.Code.Width(dv.fullCodeWidth).Render(" …"),
485491 ))
486− lineStyle = dv.style.MissingLine
492+ ls = dv.style.MissingLine
487493 if l.after != nil {
488− lineStyle = dv.lineStyleForType(l.after.Kind)
494+ ls = dv.lineStyleForType(l.after.Kind)
489495 }
490496 if dv.lineNumbers {
491− write(lineStyle.LineNumber.Render(pad("…", dv.afterNumDigits)))
497+ write(ls.LineNumber.Render(pad("…", dv.afterNumDigits)))
492498 }
493499 write(afterFullContentStyle.Render(
494− lineStyle.Code.Width(dv.fullCodeWidth).Render(" …"),
500+ ls.Code.Width(dv.fullCodeWidth).Render(" …"),
495501 ))
496502 write("\n")
497503 break outer
@@ -510,62 +516,68 @@ outer:
510516
511517 switch {
512518 case l.before == nil:
519+ ls := dv.style.MissingLine
513520 if dv.lineNumbers {
514− write(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
521+ write(ls.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
515522 }
516523 write(beforeFullContentStyle.Render(
517− dv.style.MissingLine.Code.Width(dv.fullCodeWidth).Render(" "),
524+ ls.Code.Width(dv.fullCodeWidth).Render(" "),
518525 ))
519526 case l.before.Kind == udiff.Equal:
520− content := getContent(l.before.Content, dv.style.EqualLine)
527+ ls := dv.style.EqualLine
528+ content := getContent(l.before.Content, ls)
521529 leadingEllipsis := getLeadingEllipsis(content)
522530 if dv.lineNumbers {
523− write(dv.style.EqualLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
531+ write(ls.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
524532 }
525533 write(beforeFullContentStyle.Render(
526− dv.style.EqualLine.Code.Width(dv.fullCodeWidth).Render(ternary(leadingEllipsis, " …", " ") + content),
534+ ls.Code.Width(dv.fullCodeWidth).Render(ternary(leadingEllipsis, " …", " ") + content),
527535 ))
528536 beforeLine++
529537 case l.before.Kind == udiff.Delete:
530− content := getContent(l.before.Content, dv.style.DeleteLine)
538+ ls := dv.style.DeleteLine
539+ content := getContent(l.before.Content, ls)
531540 leadingEllipsis := getLeadingEllipsis(content)
532541 if dv.lineNumbers {
533− write(dv.style.DeleteLine.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
542+ write(ls.LineNumber.Render(pad(beforeLine, dv.beforeNumDigits)))
534543 }
535544 write(beforeFullContentStyle.Render(
536− dv.style.DeleteLine.Symbol.Render(ternary(leadingEllipsis, "-…", "- ")) +
537− dv.style.DeleteLine.Code.Width(dv.codeWidth).Render(content),
545+ ls.Symbol.Render(ternary(leadingEllipsis, "-…", "- ")) +
546+ ls.Code.Width(dv.codeWidth).Render(content),
538547 ))
539548 beforeLine++
540549 }
541550
542551 switch {
543552 case l.after == nil:
553+ ls := dv.style.MissingLine
544554 if dv.lineNumbers {
545− write(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.afterNumDigits)))
555+ write(ls.LineNumber.Render(pad(" ", dv.afterNumDigits)))
546556 }
547557 write(afterFullContentStyle.Render(
548− dv.style.MissingLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "),
558+ ls.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "),
549559 ))
550560 case l.after.Kind == udiff.Equal:
551− content := getContent(l.after.Content, dv.style.EqualLine)
561+ ls := dv.style.EqualLine
562+ content := getContent(l.after.Content, ls)
552563 leadingEllipsis := getLeadingEllipsis(content)
553564 if dv.lineNumbers {
554− write(dv.style.EqualLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
565+ write(ls.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
555566 }
556567 write(afterFullContentStyle.Render(
557− dv.style.EqualLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(ternary(leadingEllipsis, " …", " ") + content),
568+ ls.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(ternary(leadingEllipsis, " …", " ") + content),
558569 ))
559570 afterLine++
560571 case l.after.Kind == udiff.Insert:
561− content := getContent(l.after.Content, dv.style.InsertLine)
572+ ls := dv.style.InsertLine
573+ content := getContent(l.after.Content, ls)
562574 leadingEllipsis := getLeadingEllipsis(content)
563575 if dv.lineNumbers {
564− write(dv.style.InsertLine.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
576+ write(ls.LineNumber.Render(pad(afterLine, dv.afterNumDigits)))
565577 }
566578 write(afterFullContentStyle.Render(
567− dv.style.InsertLine.Symbol.Render(ternary(leadingEllipsis, "+…", "+ ")) +
568− dv.style.InsertLine.Code.Width(dv.codeWidth+btoi(dv.extraColOnAfter)).Render(content),
579+ ls.Symbol.Render(ternary(leadingEllipsis, "+…", "+ ")) +
580+ ls.Code.Width(dv.codeWidth+btoi(dv.extraColOnAfter)).Render(content),
569581 ))
570582 afterLine++
571583 }
@@ -577,14 +589,15 @@ outer:
577589 }
578590
579591 for printedLines < dv.height {
592+ ls := dv.style.MissingLine
580593 if dv.lineNumbers {
581− write(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
594+ write(ls.LineNumber.Render(pad(" ", dv.beforeNumDigits)))
582595 }
583− write(dv.style.MissingLine.Code.Width(dv.fullCodeWidth).Render(" "))
596+ write(ls.Code.Width(dv.fullCodeWidth).Render(" "))
584597 if dv.lineNumbers {
585− write(dv.style.MissingLine.LineNumber.Render(pad(" ", dv.afterNumDigits)))
598+ write(ls.LineNumber.Render(pad(" ", dv.afterNumDigits)))
586599 }
587− write(dv.style.MissingLine.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "))
600+ write(ls.Code.Width(dv.fullCodeWidth + btoi(dv.extraColOnAfter)).Render(" "))
588601 write("\n")
589602 printedLines++
590603 }