summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/tui/internal/components/chat/message.go24
1 files changed, 18 insertions, 6 deletions
diff --git a/packages/tui/internal/components/chat/message.go b/packages/tui/internal/components/chat/message.go
index 35580386e..29920efdd 100644
--- a/packages/tui/internal/components/chat/message.go
+++ b/packages/tui/internal/components/chat/message.go
@@ -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.