on main help sign in
chore(ui): string efficiency
857cc28Christian Rocha
internal/ui/chat/tools.go+10−10
@@ -1119,7 +1119,7 @@ func (t *baseToolMessageItem) formatViewResultForCopy() string {
1119
1119
1120 var result strings.Builder
1120 var result strings.Builder
1121 if lang != "" {
1121 if lang != "" {
1122− result.WriteString(fmt.Sprintf("```%s\n", lang))
1122+ fmt.Fprintf(&result, "```%s\n", lang)
1123 } else {
1123 } else {
1124 result.WriteString("```\n")
1124 result.WriteString("```\n")
1125 }
1125 }
@@ -1155,7 +1155,7 @@ func (t *baseToolMessageItem) formatEditResultForCopy() string {
1155 }
1155 }
1156 diffContent, additions, removals := diff.GenerateDiff(meta.OldContent, meta.NewContent, fileName)
1156 diffContent, additions, removals := diff.GenerateDiff(meta.OldContent, meta.NewContent, fileName)
1157
1157
1158− result.WriteString(fmt.Sprintf("Changes: +%d -%d\n", additions, removals))
1158+ fmt.Fprintf(&result, "Changes: +%d -%d\n", additions, removals)
1159 result.WriteString("```diff\n")
1159 result.WriteString("```diff\n")
1160 result.WriteString(diffContent)
1160 result.WriteString(diffContent)
1161 result.WriteString("\n```")
1161 result.WriteString("\n```")
@@ -1189,7 +1189,7 @@ func (t *baseToolMessageItem) formatMultiEditResultForCopy() string {
1189 }
1189 }
1190 diffContent, additions, removals := diff.GenerateDiff(meta.OldContent, meta.NewContent, fileName)
1190 diffContent, additions, removals := diff.GenerateDiff(meta.OldContent, meta.NewContent, fileName)
1191
1191
1192− result.WriteString(fmt.Sprintf("Changes: +%d -%d\n", additions, removals))
1192+ fmt.Fprintf(&result, "Changes: +%d -%d\n", additions, removals)
1193 result.WriteString("```diff\n")
1193 result.WriteString("```diff\n")
1194 result.WriteString(diffContent)
1194 result.WriteString(diffContent)
1195 result.WriteString("\n```")
1195 result.WriteString("\n```")
@@ -1247,9 +1247,9 @@ func (t *baseToolMessageItem) formatWriteResultForCopy() string {
1247 }
1247 }
1248
1248
1249 var result strings.Builder
1249 var result strings.Builder
1250− result.WriteString(fmt.Sprintf("File: %s\n", fsext.PrettyPath(params.FilePath)))
1250+ fmt.Fprintf(&result, "File: %s\n", fsext.PrettyPath(params.FilePath))
1251 if lang != "" {
1251 if lang != "" {
1252− result.WriteString(fmt.Sprintf("```%s\n", lang))
1252+ fmt.Fprintf(&result, "```%s\n", lang)
1253 } else {
1253 } else {
1254 result.WriteString("```\n")
1254 result.WriteString("```\n")
1255 }
1255 }
@@ -1272,13 +1272,13 @@ func (t *baseToolMessageItem) formatFetchResultForCopy() string {
1272
1272
1273 var result strings.Builder
1273 var result strings.Builder
1274 if params.URL != "" {
1274 if params.URL != "" {
1275− result.WriteString(fmt.Sprintf("URL: %s\n", params.URL))
1275+ fmt.Fprintf(&result, "URL: %s\n", params.URL)
1276 }
1276 }
1277 if params.Format != "" {
1277 if params.Format != "" {
1278− result.WriteString(fmt.Sprintf("Format: %s\n", params.Format))
1278+ fmt.Fprintf(&result, "Format: %s\n", params.Format)
1279 }
1279 }
1280 if params.Timeout > 0 {
1280 if params.Timeout > 0 {
1281− result.WriteString(fmt.Sprintf("Timeout: %ds\n", params.Timeout))
1281+ fmt.Fprintf(&result, "Timeout: %ds\n", params.Timeout)
1282 }
1282 }
1283 result.WriteString("\n")
1283 result.WriteString("\n")
1284
1284
@@ -1300,10 +1300,10 @@ func (t *baseToolMessageItem) formatAgenticFetchResultForCopy() string {
1300
1300
1301 var result strings.Builder
1301 var result strings.Builder
1302 if params.URL != "" {
1302 if params.URL != "" {
1303− result.WriteString(fmt.Sprintf("URL: %s\n", params.URL))
1303+ fmt.Fprintf(&result, "URL: %s\n", params.URL)
1304 }
1304 }
1305 if params.Prompt != "" {
1305 if params.Prompt != "" {
1306− result.WriteString(fmt.Sprintf("Prompt: %s\n\n", params.Prompt))
1306+ fmt.Fprintf(&result, "Prompt: %s\n\n", params.Prompt)
1307 }
1307 }
1308
1308
1309 result.WriteString("```markdown\n")
1309 result.WriteString("```markdown\n")
internal/ui/styles/styles.go+17−15
@@ -2,6 +2,7 @@ package styles
2
2
3import (
3import (
4 "image/color"
4 "image/color"
5+ "strings"
5
6
6 "charm.land/bubbles/v2/filepicker"
7 "charm.land/bubbles/v2/filepicker"
7 "charm.land/bubbles/v2/help"
8 "charm.land/bubbles/v2/help"
@@ -1347,35 +1348,36 @@ func boolPtr(b bool) *bool { return &b }
1347func stringPtr(s string) *string { return &s }
1348func stringPtr(s string) *string { return &s }
1348func uintPtr(u uint) *uint { return &u }
1349func uintPtr(u uint) *uint { return &u }
1349func chromaStyle(style ansi.StylePrimitive) string {
1350func chromaStyle(style ansi.StylePrimitive) string {
1350− var s string
1351+ var s strings.Builder
1351
1352
1352 if style.Color != nil {
1353 if style.Color != nil {
1353− s = *style.Color
1354+ s.WriteString(*style.Color)
1354 }
1355 }
1355 if style.BackgroundColor != nil {
1356 if style.BackgroundColor != nil {
1356− if s != "" {
1357+ if s.Len() > 0 {
1357− s += " "
1358+ s.WriteString(" ")
1358 }
1359 }
1360+ s.WriteString("bg:")
1359− s += "bg:" + *style.BackgroundColor
1361+ s.WriteString(*style.BackgroundColor)
1360 }
1362 }
1361 if style.Italic != nil && *style.Italic {
1363 if style.Italic != nil && *style.Italic {
1362− if s != "" {
1364+ if s.Len() > 0 {
1363− s += " "
1365+ s.WriteString(" ")
1364 }
1366 }
1365− s += "italic"
1367+ s.WriteString("italic")
1366 }
1368 }
1367 if style.Bold != nil && *style.Bold {
1369 if style.Bold != nil && *style.Bold {
1368− if s != "" {
1370+ if s.Len() > 0 {
1369− s += " "
1371+ s.WriteString(" ")
1370 }
1372 }
1371− s += "bold"
1373+ s.WriteString("bold")
1372 }
1374 }
1373 if style.Underline != nil && *style.Underline {
1375 if style.Underline != nil && *style.Underline {
1374− if s != "" {
1376+ if s.Len() > 0 {
1375− s += " "
1377+ s.WriteString(" ")
1376 }
1378 }
1377− s += "underline"
1379+ s.WriteString("underline")
1378 }
1380 }
1379
1381
1380− return s
1382+ return s.String()
1381}
1383}