diff --git a/internal/exp/diffview/diffview.go b/internal/exp/diffview/diffview.go index c519223532c4e8eac851d1e8763f368bcbf0861a..034e7200e155b510383ad8dd1f2349217d2ef04f 100644 --- a/internal/exp/diffview/diffview.go +++ b/internal/exp/diffview/diffview.go @@ -12,7 +12,10 @@ import ( "github.com/charmbracelet/x/ansi" ) -const leadingSymbolsSize = 2 +const ( + leadingSymbolsSize = 2 + lineNumPadding = 1 +) type file struct { path string @@ -132,6 +135,7 @@ func (dv *DiffView) String() string { return err.Error() } dv.convertDiffToSplit() + dv.adjustStyles() dv.detectNumDigits() dv.detectCodeWidth() @@ -145,6 +149,18 @@ func (dv *DiffView) String() string { } } +func (dv *DiffView) adjustStyles() { + dv.style.MissingLine.LineNumber = setPadding(dv.style.MissingLine.LineNumber) + dv.style.DividerLine.LineNumber = setPadding(dv.style.DividerLine.LineNumber) + dv.style.EqualLine.LineNumber = setPadding(dv.style.EqualLine.LineNumber) + dv.style.InsertLine.LineNumber = setPadding(dv.style.InsertLine.LineNumber) + dv.style.DeleteLine.LineNumber = setPadding(dv.style.DeleteLine.LineNumber) +} + +func setPadding(s lipgloss.Style) lipgloss.Style { + return s.Padding(0, lineNumPadding).Align(lipgloss.Right) +} + // renderUnified renders the unified diff view as a string. func (dv *DiffView) renderUnified() string { var b strings.Builder diff --git a/internal/exp/diffview/style.go b/internal/exp/diffview/style.go index b8c99e58e861b1acbc109d1b81cb2d6da2e39f9e..2c083175ebed768255cefda436a083dfd6f3d6c5 100644 --- a/internal/exp/diffview/style.go +++ b/internal/exp/diffview/style.go @@ -23,26 +23,21 @@ var DefaultLightStyle = Style{ DividerLine: LineStyle{ LineNumber: lipgloss.NewStyle(). Foreground(charmtone.Iron). - Background(charmtone.Thunder). - Align(lipgloss.Right). - Padding(0, 1), + Background(charmtone.Thunder), Code: lipgloss.NewStyle(). Foreground(charmtone.Oyster). Background(charmtone.Anchovy), }, MissingLine: LineStyle{ LineNumber: lipgloss.NewStyle(). - Background(charmtone.Ash). - Padding(0, 1), + Background(charmtone.Ash), Code: lipgloss.NewStyle(). Background(charmtone.Ash), }, EqualLine: LineStyle{ LineNumber: lipgloss.NewStyle(). Foreground(charmtone.Charcoal). - Background(charmtone.Ash). - Align(lipgloss.Right). - Padding(0, 1), + Background(charmtone.Ash), Code: lipgloss.NewStyle(). Foreground(charmtone.Pepper). Background(charmtone.Salt), @@ -50,9 +45,7 @@ var DefaultLightStyle = Style{ InsertLine: LineStyle{ LineNumber: lipgloss.NewStyle(). Foreground(charmtone.Turtle). - Background(lipgloss.Color("#c8e6c9")). - Align(lipgloss.Right). - Padding(0, 1), + Background(lipgloss.Color("#c8e6c9")), Symbol: lipgloss.NewStyle(). Foreground(charmtone.Turtle). Background(lipgloss.Color("#e8f5e9")), @@ -63,9 +56,7 @@ var DefaultLightStyle = Style{ DeleteLine: LineStyle{ LineNumber: lipgloss.NewStyle(). Foreground(charmtone.Cherry). - Background(lipgloss.Color("#ffcdd2")). - Align(lipgloss.Left). - Padding(0, 1), + Background(lipgloss.Color("#ffcdd2")), Symbol: lipgloss.NewStyle(). Foreground(charmtone.Cherry). Background(lipgloss.Color("#ffebee")), @@ -79,26 +70,21 @@ var DefaultDarkStyle = Style{ DividerLine: LineStyle{ LineNumber: lipgloss.NewStyle(). Foreground(charmtone.Smoke). - Background(charmtone.Sapphire). - Align(lipgloss.Right). - Padding(0, 1), + Background(charmtone.Sapphire), Code: lipgloss.NewStyle(). Foreground(charmtone.Smoke). Background(charmtone.Ox), }, MissingLine: LineStyle{ LineNumber: lipgloss.NewStyle(). - Background(charmtone.Charcoal). - Padding(0, 1), + Background(charmtone.Charcoal), Code: lipgloss.NewStyle(). Background(charmtone.Charcoal), }, EqualLine: LineStyle{ LineNumber: lipgloss.NewStyle(). Foreground(charmtone.Ash). - Background(charmtone.Charcoal). - Align(lipgloss.Right). - Padding(0, 1), + Background(charmtone.Charcoal), Code: lipgloss.NewStyle(). Foreground(charmtone.Salt). Background(charmtone.Pepper), @@ -106,9 +92,7 @@ var DefaultDarkStyle = Style{ InsertLine: LineStyle{ LineNumber: lipgloss.NewStyle(). Foreground(charmtone.Turtle). - Background(lipgloss.Color("#293229")). - Align(lipgloss.Right). - Padding(0, 1), + Background(lipgloss.Color("#293229")), Symbol: lipgloss.NewStyle(). Foreground(charmtone.Turtle). Background(lipgloss.Color("#303a30")), @@ -119,9 +103,7 @@ var DefaultDarkStyle = Style{ DeleteLine: LineStyle{ LineNumber: lipgloss.NewStyle(). Foreground(charmtone.Cherry). - Background(lipgloss.Color("#332929")). - Align(lipgloss.Left). - Padding(0, 1), + Background(lipgloss.Color("#332929")), Symbol: lipgloss.NewStyle(). Foreground(charmtone.Cherry). Background(lipgloss.Color("#3a3030")),