feat: also apply keyword styling to inactive log items

Christian Rocha created

Change summary

ui/pages/repo/log.go     | 16 +++-----
ui/pages/repo/logitem.go | 20 +++++-----
ui/styles/styles.go      | 75 +++++++++++++++++++++--------------------
3 files changed, 56 insertions(+), 55 deletions(-)

Detailed changes

ui/pages/repo/log.go 🔗

@@ -19,9 +19,7 @@ import (
 	"github.com/muesli/termenv"
 )
 
-var (
-	waitBeforeLoading = time.Millisecond * 100
-)
+var waitBeforeLoading = time.Millisecond * 100
 
 type logView int
 
@@ -437,10 +435,10 @@ func (l *Log) renderCommit(c *ggit.Commit) string {
 	// sanitize commit message from CRLF
 	msg := strings.ReplaceAll(c.Message, "\r\n", "\n")
 	s.WriteString(fmt.Sprintf("%s\n%s\n%s\n%s\n",
-		l.common.Styles.LogCommitHash.Render("commit "+c.ID.String()),
-		l.common.Styles.LogCommitAuthor.Render(fmt.Sprintf("Author: %s <%s>", c.Author.Name, c.Author.Email)),
-		l.common.Styles.LogCommitDate.Render("Date:   "+c.Committer.When.Format(time.UnixDate)),
-		l.common.Styles.LogCommitBody.Render(msg),
+		l.common.Styles.Log.CommitHash.Render("commit "+c.ID.String()),
+		l.common.Styles.Log.CommitAuthor.Render(fmt.Sprintf("Author: %s <%s>", c.Author.Name, c.Author.Email)),
+		l.common.Styles.Log.CommitDate.Render("Date:   "+c.Committer.When.Format(time.UnixDate)),
+		l.common.Styles.Log.CommitBody.Render(msg),
 	))
 	return wrap.String(s.String(), l.common.Width-2)
 }
@@ -451,8 +449,8 @@ func (l *Log) renderSummary(diff *ggit.Diff) string {
 		ch := strings.Split(line, "|")
 		if len(ch) > 1 {
 			adddel := ch[len(ch)-1]
-			adddel = strings.ReplaceAll(adddel, "+", l.common.Styles.LogCommitStatsAdd.Render("+"))
-			adddel = strings.ReplaceAll(adddel, "-", l.common.Styles.LogCommitStatsDel.Render("-"))
+			adddel = strings.ReplaceAll(adddel, "+", l.common.Styles.Log.CommitStatsAdd.Render("+"))
+			adddel = strings.ReplaceAll(adddel, "-", l.common.Styles.Log.CommitStatsDel.Render("-"))
 			stats[i] = strings.Join(ch[:len(ch)-1], "|") + "|" + adddel
 		}
 	}

ui/pages/repo/logitem.go 🔗

@@ -76,7 +76,7 @@ func (d LogItemDelegate) Update(msg tea.Msg, m *list.Model) tea.Cmd {
 
 // Render renders the item. Implements list.ItemDelegate.
 func (d LogItemDelegate) Render(w io.Writer, m list.Model, index int, listItem list.Item) {
-	styles := d.common.Styles
+	styles := d.common.Styles.Log
 	i, ok := listItem.(LogItem)
 	if !ok {
 		return
@@ -88,17 +88,17 @@ func (d LogItemDelegate) Render(w io.Writer, m list.Model, index int, listItem l
 	var titleStyler,
 		descStyler,
 		keywordStyler func(string) string
-	style := styles.LogItemInactive
+	style := styles.ItemInactive
 
 	if index == m.Index() {
-		titleStyler = styles.LogItemTitleActive.Render
-		descStyler = styles.LogItemDescActive.Render
-		keywordStyler = styles.LogItemKeywordActive.Render
-		style = styles.LogItemActive
+		titleStyler = styles.ItemTitleActive.Render
+		descStyler = styles.ItemDescActive.Render
+		keywordStyler = styles.ItemKeywordActive.Render
+		style = styles.ItemActive
 	} else {
-		titleStyler = styles.LogItemTitleInactive.Render
-		descStyler = styles.LogItemDescInactive.Render
-		keywordStyler = styles.LogItemKeywordInactive.Render
+		titleStyler = styles.ItemTitleInactive.Render
+		descStyler = styles.ItemDescInactive.Render
+		keywordStyler = styles.ItemKeywordInactive.Render
 	}
 
 	hash := i.Commit.ID.String()[:7]
@@ -113,7 +113,7 @@ func (d LogItemDelegate) Render(w io.Writer, m list.Model, index int, listItem l
 				// title truncation symbol (1)
 				9),
 	)
-	hashStyle := styles.LogItemHash.Copy().
+	hashStyle := styles.ItemHash.Copy().
 		Align(lipgloss.Right).
 		PaddingLeft(1).
 		Width(m.Width() -

ui/styles/styles.go 🔗

@@ -44,25 +44,27 @@ type Styles struct {
 
 	AboutNoReadme lipgloss.Style
 
-	LogItem                lipgloss.Style
-	LogItemSelector        lipgloss.Style
-	LogItemActive          lipgloss.Style
-	LogItemInactive        lipgloss.Style
-	LogItemHash            lipgloss.Style
-	LogItemTitleInactive   lipgloss.Style
-	LogItemTitleActive     lipgloss.Style
-	LogItemDescInactive    lipgloss.Style
-	LogItemDescActive      lipgloss.Style
-	LogItemKeywordActive   lipgloss.Style
-	LogItemKeywordInactive lipgloss.Style
-	LogCommit              lipgloss.Style
-	LogCommitHash          lipgloss.Style
-	LogCommitAuthor        lipgloss.Style
-	LogCommitDate          lipgloss.Style
-	LogCommitBody          lipgloss.Style
-	LogCommitStatsAdd      lipgloss.Style
-	LogCommitStatsDel      lipgloss.Style
-	LogPaginator           lipgloss.Style
+	Log struct {
+		Item                lipgloss.Style
+		ItemSelector        lipgloss.Style
+		ItemActive          lipgloss.Style
+		ItemInactive        lipgloss.Style
+		ItemHash            lipgloss.Style
+		ItemTitleInactive   lipgloss.Style
+		ItemTitleActive     lipgloss.Style
+		ItemDescInactive    lipgloss.Style
+		ItemDescActive      lipgloss.Style
+		ItemKeywordActive   lipgloss.Style
+		ItemKeywordInactive lipgloss.Style
+		Commit              lipgloss.Style
+		CommitHash          lipgloss.Style
+		CommitAuthor        lipgloss.Style
+		CommitDate          lipgloss.Style
+		CommitBody          lipgloss.Style
+		CommitStatsAdd      lipgloss.Style
+		CommitStatsDel      lipgloss.Style
+		Paginator           lipgloss.Style
+	}
 
 	RefItemSelector    lipgloss.Style
 	RefItemActive      lipgloss.Style
@@ -209,60 +211,61 @@ func DefaultStyles() *Styles {
 		MarginLeft(2).
 		Foreground(lipgloss.Color("#626262"))
 
-	s.LogItemInactive = lipgloss.NewStyle().
+	s.Log.ItemInactive = lipgloss.NewStyle().
 		Border(lipgloss.Border{
 			Left: " ",
 		}, false, false, false, true).
 		PaddingLeft(1)
 
-	s.LogItemActive = s.LogItemInactive.Copy().
+	s.Log.ItemActive = s.Log.ItemInactive.Copy().
 		Border(lipgloss.Border{
 			Left: "┃",
 		}, false, false, false, true).
 		BorderForeground(selectorColor)
 
-	s.LogItemSelector = s.LogItemInactive.Copy().
+	s.Log.ItemSelector = s.Log.ItemInactive.Copy().
 		Width(1).
 		Foreground(lipgloss.Color("#B083EA"))
 
-	s.LogItemHash = s.LogItemInactive.Copy().
+	s.Log.ItemHash = s.Log.ItemInactive.Copy().
 		Foreground(lipgloss.Color("#A3A322"))
 
-	s.LogItemTitleInactive = lipgloss.NewStyle().
+	s.Log.ItemTitleInactive = lipgloss.NewStyle().
 		Foreground(lipgloss.Color("#B083EA"))
 
-	s.LogItemTitleActive = lipgloss.NewStyle().
+	s.Log.ItemTitleActive = lipgloss.NewStyle().
 		Foreground(highlightColor).
 		Bold(true)
 
-	s.LogItemDescInactive = lipgloss.NewStyle()
+	s.Log.ItemDescInactive = lipgloss.NewStyle().
+		Foreground(lipgloss.Color("246"))
 
-	s.LogItemDescActive = lipgloss.NewStyle().
+	s.Log.ItemDescActive = lipgloss.NewStyle().
 		Foreground(lipgloss.Color("95"))
 
-	s.LogItemKeywordActive = s.LogItemDescActive.Copy().
+	s.Log.ItemKeywordActive = s.Log.ItemDescActive.Copy().
 		Foreground(highlightColorDim)
 
-	s.LogCommit = lipgloss.NewStyle().
+	s.Log.Commit = lipgloss.NewStyle().
 		Margin(0, 2)
 
-	s.LogCommitHash = lipgloss.NewStyle().
+	s.Log.CommitHash = lipgloss.NewStyle().
 		Foreground(lipgloss.Color("#A3A322")).
 		Bold(true)
 
-	s.LogCommitBody = lipgloss.NewStyle().
+	s.Log.CommitBody = lipgloss.NewStyle().
 		MarginTop(1).
 		MarginLeft(2)
 
-	s.LogCommitStatsAdd = lipgloss.NewStyle().
+	s.Log.CommitStatsAdd = lipgloss.NewStyle().
 		Foreground(lipgloss.Color("#00D787")).
 		Bold(true)
 
-	s.LogCommitStatsDel = lipgloss.NewStyle().
+	s.Log.CommitStatsDel = lipgloss.NewStyle().
 		Foreground(lipgloss.Color("#FD5B5B")).
 		Bold(true)
 
-	s.LogPaginator = lipgloss.NewStyle().
+	s.Log.Paginator = lipgloss.NewStyle().
 		Margin(0).
 		Align(lipgloss.Center)
 
@@ -288,7 +291,7 @@ func DefaultStyles() *Styles {
 		Bold(true).
 		Foreground(highlightColor)
 
-	s.RefPaginator = s.LogPaginator.Copy()
+	s.RefPaginator = s.Log.Paginator.Copy()
 
 	s.TreeItemSelector = s.TreeItemInactive.Copy().
 		Width(1).
@@ -322,7 +325,7 @@ func DefaultStyles() *Styles {
 
 	s.TreeFileContent = lipgloss.NewStyle()
 
-	s.TreePaginator = s.LogPaginator.Copy()
+	s.TreePaginator = s.Log.Paginator.Copy()
 
 	s.TreeNoItems = s.AboutNoReadme.Copy()