e267bc982afe0b911df751bde89a18cc88ef27cc

Author
Christian Rocha <christian@rocha.is>
Committer
Christian Rocha <christian@rocha.is>
Date

Message

chore: adjust line number coloring

Diff

 1diff --git a/server/middleware.go b/server/middleware.go
 2index 8f48e498e635d4726c7ca757444bf2d9c66bd233..e6d6b1bcc186f682c5fad72d2e8080f69431f330 100644
 3--- a/server/middleware.go
 4+++ b/server/middleware.go
 5@@ -20,10 +20,11 @@ import (
 6 )
 7 
 8 var (
 9-	linenoStyle   = lipgloss.NewStyle().Foreground(lipgloss.Color("8"))
10-	dirnameStyle  = lipgloss.NewStyle().Foreground(lipgloss.Color("#00AAFF"))
11-	filenameStyle = lipgloss.NewStyle()
12-	filemodeStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#777777"))
13+	lineDigitStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("239"))
14+	lineBarStyle   = lipgloss.NewStyle().Foreground(lipgloss.Color("236"))
15+	dirnameStyle   = lipgloss.NewStyle().Foreground(lipgloss.Color("#00AAFF"))
16+	filenameStyle  = lipgloss.NewStyle()
17+	filemodeStyle  = lipgloss.NewStyle().Foreground(lipgloss.Color("#777777"))
18 )
19 
20 type entries []object.TreeEntry
21@@ -144,13 +145,18 @@ func softServeMiddleware(ac *appCfg.Config) wish.Middleware {
22 
23 func withLineNumber(s string, color bool) string {
24 	lines := strings.Split(s, "\n")
25-	mll := fmt.Sprintf("%d", len(fmt.Sprintf("%d", len(lines))))
26+	// NB: len() is not a particularly safe way to count string width (because
27+	// it's counting bytes instead of runes) but in this case it's okay
28+	// because we're only dealing with digits, which are one byte each.
29+	mll := len(fmt.Sprintf("%d", len(lines)))
30 	for i, l := range lines {
31-		lines[i] = fmt.Sprintf("%-"+mll+"d", i+1)
32+		digit := fmt.Sprintf("%*d", mll, i)
33+		line := "│"
34 		if color {
35-			lines[i] = linenoStyle.Render(lines[i])
36+			digit = lineDigitStyle.Render(digit)
37+			line = lineBarStyle.Render(line)
38 		}
39-		lines[i] += " │ " + l
40+		lines[i] = fmt.Sprintf(" %s %s %s", digit, line, l)
41 	}
42 	return strings.Join(lines, "\n")
43 }