MCPcopy Create free account
hub / github.com/JanSmrcka/differ / RenderSplitDiff

Function RenderSplitDiff

internal/ui/diff.go:321–346  ·  view source on GitHub ↗

RenderSplitDiff renders parsed diff in side-by-side layout.

(parsed ParsedDiff, filename string, styles Styles, t theme.Theme, width int)

Source from the content-addressed store, hash-verified

319
320// RenderSplitDiff renders parsed diff in side-by-side layout.
321func RenderSplitDiff(parsed ParsedDiff, filename string, styles Styles, t theme.Theme, width int) string {
322 if parsed.Binary {
323 return RenderBinaryFile(styles, width)
324 }
325 initChromaStyle(t.ChromaStyle)
326
327 pairs := PairLines(parsed.Lines)
328 panelW := (width - 1) / 2 // 1 char for separator
329
330 var b strings.Builder
331 for _, sl := range pairs {
332 // Hunk headers span full width
333 if sl.Left != nil && sl.Left.Type == LineHunkHeader {
334 b.WriteString(renderHunkLine(*sl.Left, styles, width))
335 b.WriteByte('\n')
336 continue
337 }
338 left := renderSplitSide(sl.Left, filename, styles, t, panelW, true)
339 right := renderSplitSide(sl.Right, filename, styles, t, panelW, false)
340 b.WriteString(left)
341 b.WriteString(lipgloss.NewStyle().Foreground(lipgloss.Color(t.BorderFg)).Render("│"))
342 b.WriteString(right)
343 b.WriteByte('\n')
344 }
345 return b.String()
346}
347
348// RenderNewFileSplit renders untracked file content in split layout (all-added on right).
349func RenderNewFileSplit(content, filename string, styles Styles, t theme.Theme, width int) string {

Callers 3

loadDiffCmdMethod · 0.85

Calls 5

RenderBinaryFileFunction · 0.85
initChromaStyleFunction · 0.85
PairLinesFunction · 0.85
renderHunkLineFunction · 0.85
renderSplitSideFunction · 0.85

Tested by 2