diff --git a/internal/exp/diffview/diffview.go b/internal/exp/diffview/diffview.go index 12a764b26784325999ed80fd5f53d08a45857794..40481539fdb0b233242dddd4990775abdacd982b 100644 --- a/internal/exp/diffview/diffview.go +++ b/internal/exp/diffview/diffview.go @@ -25,48 +25,63 @@ const ( layoutSplit ) +type LineStyle struct { + Symbol lipgloss.Style + Code lipgloss.Style +} + type Style struct { - Base lipgloss.Style - InsertLine lipgloss.Style - InsertSymbols lipgloss.Style - DeleteLine lipgloss.Style - DeleteSymbols lipgloss.Style + EqualLine LineStyle + InsertLine LineStyle + DeleteLine LineStyle } var DefaultLightStyle = Style{ - Base: lipgloss.NewStyle(). - Foreground(charmtone.Pepper). - Background(charmtone.Salt), - InsertLine: lipgloss.NewStyle(). - Foreground(charmtone.Pepper). - Background(lipgloss.Color("#e8f5e9")), - InsertSymbols: lipgloss.NewStyle(). - Foreground(charmtone.Turtle). - Background(lipgloss.Color("#e8f5e9")), - DeleteLine: lipgloss.NewStyle(). - Foreground(charmtone.Pepper). - Background(lipgloss.Color("#ffebee")), - DeleteSymbols: lipgloss.NewStyle(). - Foreground(charmtone.Cherry). - Background(lipgloss.Color("#ffebee")), + EqualLine: LineStyle{ + Code: lipgloss.NewStyle(). + Foreground(charmtone.Pepper). + Background(charmtone.Salt), + }, + InsertLine: LineStyle{ + Symbol: lipgloss.NewStyle(). + Foreground(charmtone.Turtle). + Background(lipgloss.Color("#e8f5e9")), + Code: lipgloss.NewStyle(). + Foreground(charmtone.Pepper). + Background(lipgloss.Color("#e8f5e9")), + }, + DeleteLine: LineStyle{ + Symbol: lipgloss.NewStyle(). + Foreground(charmtone.Cherry). + Background(lipgloss.Color("#ffebee")), + Code: lipgloss.NewStyle(). + Foreground(charmtone.Pepper). + Background(lipgloss.Color("#ffebee")), + }, } var DefaultDarkStyle = Style{ - Base: lipgloss.NewStyle(). - Foreground(charmtone.Salt). - Background(charmtone.Pepper), - InsertLine: lipgloss.NewStyle(). - Foreground(charmtone.Salt). - Background(lipgloss.Color("#303a30")), - InsertSymbols: lipgloss.NewStyle(). - Foreground(charmtone.Turtle). - Background(lipgloss.Color("#303a30")), - DeleteLine: lipgloss.NewStyle(). - Foreground(charmtone.Salt). - Background(lipgloss.Color("#3a3030")), - DeleteSymbols: lipgloss.NewStyle(). - Foreground(charmtone.Cherry). - Background(lipgloss.Color("#3a3030")), + EqualLine: LineStyle{ + Code: lipgloss.NewStyle(). + Foreground(charmtone.Salt). + Background(charmtone.Pepper), + }, + InsertLine: LineStyle{ + Symbol: lipgloss.NewStyle(). + Foreground(charmtone.Turtle). + Background(lipgloss.Color("#303a30")), + Code: lipgloss.NewStyle(). + Foreground(charmtone.Salt). + Background(lipgloss.Color("#303a30")), + }, + DeleteLine: LineStyle{ + Symbol: lipgloss.NewStyle(). + Foreground(charmtone.Cherry). + Background(lipgloss.Color("#3a3030")), + Code: lipgloss.NewStyle(). + Foreground(charmtone.Salt). + Background(lipgloss.Color("#3a3030")), + }, } // DiffView represents a view for displaying differences between two files. @@ -170,13 +185,13 @@ func (dv *DiffView) String() string { switch l.Kind { case udiff.Insert: - b.WriteString(dv.style.InsertSymbols.Render("+ ")) - b.WriteString(dv.style.InsertLine.Width(width).Render(content)) + b.WriteString(dv.style.InsertLine.Symbol.Render("+ ")) + b.WriteString(dv.style.InsertLine.Code.Width(width).Render(content)) case udiff.Delete: - b.WriteString(dv.style.DeleteSymbols.Render("- ")) - b.WriteString(dv.style.DeleteLine.Width(width).Render(content)) + b.WriteString(dv.style.DeleteLine.Symbol.Render("- ")) + b.WriteString(dv.style.DeleteLine.Code.Width(width).Render(content)) case udiff.Equal: - b.WriteString(dv.style.Base.Width(width + leadingSymbolsSize).Render(" " + content)) + b.WriteString(dv.style.EqualLine.Code.Width(width + leadingSymbolsSize).Render(" " + content)) } b.WriteRune('\n') }