on main help sign in
fix: truncate the diff on the messages
ff27fc4Kujtim Hoxha
internal/tui/components/chat/messages/renderer.go+17−5
@@ -257,6 +257,7 @@ type editRenderer struct {
257
257
258// Render displays the edited file with a formatted diff of changes
258// Render displays the edited file with a formatted diff of changes
259func (er editRenderer) Render(v *toolCallCmp) string {
259func (er editRenderer) Render(v *toolCallCmp) string {
260+ t := styles.CurrentTheme()
260 var params tools.EditParams
261 var params tools.EditParams
261 var args []string
262 var args []string
262 if err := er.unmarshalParams(v.call.Input, &params); err == nil {
263 if err := er.unmarshalParams(v.call.Input, &params); err == nil {
@@ -277,7 +278,18 @@ func (er editRenderer) Render(v *toolCallCmp) string {
277 if v.textWidth() > 120 {
278 if v.textWidth() > 120 {
278 formatter = formatter.Split()
279 formatter = formatter.Split()
279 }
280 }
281+ // add a messagfe to the bottom if the content was truncated
280− return formatter.String()
282+ formatted := formatter.String()
283+ if lipgloss.Height(formatted) > responseContextHeight {
284+ contentLines := strings.Split(formatted, "\n")
285+ truncateMessage := t.S().Muted.
286+ Background(t.BgBaseLighter).
287+ PaddingLeft(2).
288+ Width(v.textWidth() - 4).
289+ Render(fmt.Sprintf("… (%d lines)", len(contentLines)-responseContextHeight))
290+ formatted = strings.Join(contentLines[:responseContextHeight], "\n") + "\n" + truncateMessage
291+ }
292+ return formatted
281 })
293 })
282}
294}
283
295
@@ -556,7 +568,7 @@ func renderParamList(nested bool, paramsWidth int, params ...string) string {
556 }
568 }
557 mainParam := params[0]
569 mainParam := params[0]
558 if len(mainParam) > paramsWidth {
570 if len(mainParam) > paramsWidth {
559− mainParam = mainParam[:paramsWidth-3] + "..."
571+ mainParam = mainParam[:paramsWidth-3] + "…"
560 }
572 }
561
573
562 if len(params) == 1 {
574 if len(params) == 1 {
@@ -596,9 +608,9 @@ func renderParamList(nested bool, paramsWidth int, params ...string) string {
596 }
608 }
597
609
598 if nested {
610 if nested {
599− return t.S().Muted.Render(ansi.Truncate(mainParam, paramsWidth, "..."))
611+ return t.S().Muted.Render(ansi.Truncate(mainParam, paramsWidth, "…"))
600 }
612 }
601− return t.S().Subtle.Render(ansi.Truncate(mainParam, paramsWidth, "..."))
613+ return t.S().Subtle.Render(ansi.Truncate(mainParam, paramsWidth, "…"))
602}
614}
603
615
604// earlyState returns immediately‑rendered error/cancelled/ongoing states.
616// earlyState returns immediately‑rendered error/cancelled/ongoing states.
@@ -651,7 +663,7 @@ func renderPlainContent(v *toolCallCmp, content string) string {
651 out = append(out, t.S().Muted.
663 out = append(out, t.S().Muted.
652 Background(t.BgBaseLighter).
664 Background(t.BgBaseLighter).
653 Width(width).
665 Width(width).
654− Render(fmt.Sprintf("... (%d lines)", len(lines)-responseContextHeight)))
666+ Render(fmt.Sprintf("… (%d lines)", len(lines)-responseContextHeight)))
655 }
667 }
656 return strings.Join(out, "\n")
668 return strings.Join(out, "\n")
657}
669}