|
|
@@ -217,15 +217,27 @@ func renderText(
|
|
|
base := styles.NewStyle().Foreground(t.Text()).Background(backgroundColor)
|
|
|
text = ansi.WordwrapWc(text, width-6, " -")
|
|
|
|
|
|
- // Build list of attachment filenames for highlighting
|
|
|
+ var result strings.Builder
|
|
|
+ lastEnd := int64(0)
|
|
|
+
|
|
|
+ // Apply highlighting to filenames and base style to rest of text
|
|
|
for _, filePart := range fileParts {
|
|
|
- atFilename := "@" + filePart.Filename
|
|
|
- // Find and highlight complete @filename references
|
|
|
- highlightStyle := base.Foreground(t.Secondary())
|
|
|
- text = strings.ReplaceAll(text, atFilename, highlightStyle.Render(atFilename))
|
|
|
+ highlight := base.Foreground(t.Secondary())
|
|
|
+ start, end := filePart.Source.Text.Start, filePart.Source.Text.End
|
|
|
+
|
|
|
+ if start > lastEnd {
|
|
|
+ result.WriteString(base.Render(text[lastEnd:start]))
|
|
|
+ }
|
|
|
+ result.WriteString(highlight.Render(text[start:end]))
|
|
|
+
|
|
|
+ lastEnd = end
|
|
|
+ }
|
|
|
+
|
|
|
+ if lastEnd < int64(len(text)) {
|
|
|
+ result.WriteString(base.Render(text[lastEnd:]))
|
|
|
}
|
|
|
|
|
|
- content = base.Width(width - 6).Render(text)
|
|
|
+ content = base.Width(width - 6).Render(result.String())
|
|
|
}
|
|
|
|
|
|
timestamp := ts.
|