@@ -10,6 +10,7 @@ import (
1010 "github.com/charmbracelet/bubbles/v2/textarea"
1111 "github.com/charmbracelet/bubbles/v2/textinput"
1212 tea "github.com/charmbracelet/bubbletea/v2"
13+ "github.com/charmbracelet/crush/internal/exp/diffview"
1314 "github.com/charmbracelet/glamour/v2/ansi"
1415 "github.com/charmbracelet/lipgloss/v2"
1516 "github.com/lucasb-eyer/go-colorful"
@@ -31,9 +32,10 @@ type Theme struct {
3132 Tertiary color.Color
3233 Accent color.Color
3334
34− BgBase color.Color
35− BgSubtle color.Color
36− BgOverlay color.Color
35+ BgBase color.Color
36+ BgBaseLighter color.Color
37+ BgSubtle color.Color
38+ BgOverlay color.Color
3739
3840 FgBase color.Color
3941 FgMuted color.Color
@@ -70,21 +72,6 @@ type Theme struct {
7072 styles *Styles
7173}
7274
73−type Diff struct {
74− Added color.Color
75− Removed color.Color
76− Context color.Color
77− HunkHeader color.Color
78− HighlightAdded color.Color
79− HighlightRemoved color.Color
80− AddedBg color.Color
81− RemovedBg color.Color
82− ContextBg color.Color
83− LineNumber color.Color
84− AddedLineNumberBg color.Color
85− RemovedLineNumberBg color.Color
86−}
87−
8875type Styles struct {
8976 Base lipgloss.Style
9077 SelectedBase lipgloss.Style
@@ -112,7 +99,7 @@ type Styles struct {
11299 Help help.Styles
113100
114101 // Diff
115− Diff Diff
102+ Diff diffview.Style
116103
117104 // FilePicker
118105 FilePicker filepicker.Styles
@@ -421,22 +408,50 @@ func (t *Theme) buildStyles() *Styles {
421408 FullSeparator: base.Foreground(t.Border),
422409 },
423410
424− // TODO: Fix this this is bad
425− Diff: Diff{
426− Added: t.Green,
427− Removed: t.Red,
428− Context: t.FgSubtle,
429− HunkHeader: t.FgSubtle,
430− HighlightAdded: t.GreenLight,
431− HighlightRemoved: t.RedLight,
432− AddedBg: t.GreenDark,
433− RemovedBg: t.RedDark,
434− ContextBg: t.BgSubtle,
435− LineNumber: t.FgMuted,
436− AddedLineNumberBg: t.GreenDark,
437− RemovedLineNumberBg: t.RedDark,
411+ Diff: diffview.Style{
412+ DividerLine: diffview.LineStyle{
413+ LineNumber: lipgloss.NewStyle().
414+ Foreground(t.FgHalfMuted).
415+ Background(t.BgBaseLighter),
416+ Code: lipgloss.NewStyle().
417+ Foreground(t.FgHalfMuted).
418+ Background(t.BgBaseLighter),
419+ },
420+ MissingLine: diffview.LineStyle{
421+ LineNumber: lipgloss.NewStyle().
422+ Background(t.BgBaseLighter),
423+ Code: lipgloss.NewStyle().
424+ Background(t.BgBaseLighter),
425+ },
426+ EqualLine: diffview.LineStyle{
427+ LineNumber: lipgloss.NewStyle().
428+ Foreground(t.FgMuted).
429+ Background(t.BgBase),
430+ Code: lipgloss.NewStyle().
431+ Foreground(t.FgMuted).
432+ Background(t.BgBase),
433+ },
434+ InsertLine: diffview.LineStyle{
435+ LineNumber: lipgloss.NewStyle().
436+ Foreground(lipgloss.Color("#629657")).
437+ Background(lipgloss.Color("#2b322a")),
438+ Symbol: lipgloss.NewStyle().
439+ Foreground(lipgloss.Color("#629657")).
440+ Background(lipgloss.Color("#323931")),
441+ Code: lipgloss.NewStyle().
442+ Background(lipgloss.Color("#323931")),
443+ },
444+ DeleteLine: diffview.LineStyle{
445+ LineNumber: lipgloss.NewStyle().
446+ Foreground(lipgloss.Color("#a45c59")).
447+ Background(lipgloss.Color("#312929")),
448+ Symbol: lipgloss.NewStyle().
449+ Foreground(lipgloss.Color("#a45c59")).
450+ Background(lipgloss.Color("#383030")),
451+ Code: lipgloss.NewStyle().
452+ Background(lipgloss.Color("#383030")),
453+ },
438454 },
439−
440455 FilePicker: filepicker.Styles{
441456 DisabledCursor: base.Foreground(t.FgMuted),
442457 Cursor: base.Foreground(t.FgBase),