diff options
| author | Tom <[email protected]> | 2025-07-19 21:28:40 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-07-19 09:28:40 -0500 |
| commit | 2b44dbdbf105f1c5d1cd34b7ae86925ff41e4c79 (patch) | |
| tree | d38af1226cf2cf88287e79a0ab2014e4b83d1a07 /packages/tui/internal/components | |
| parent | 4bbbbac5f661de72a2b25d7a85e70c00788e194f (diff) | |
| download | opencode-2b44dbdbf105f1c5d1cd34b7ae86925ff41e4c79.tar.gz opencode-2b44dbdbf105f1c5d1cd34b7ae86925ff41e4c79.zip | |
fix: prevent sparse spacing in hyphenated words (#1102)
Diffstat (limited to 'packages/tui/internal/components')
| -rw-r--r-- | packages/tui/internal/components/chat/message.go | 14 | ||||
| -rw-r--r-- | packages/tui/internal/components/textarea/textarea.go | 4 |
2 files changed, 14 insertions, 4 deletions
diff --git a/packages/tui/internal/components/chat/message.go b/packages/tui/internal/components/chat/message.go index d3263b053..ef097c09c 100644 --- a/packages/tui/internal/components/chat/message.go +++ b/packages/tui/internal/components/chat/message.go @@ -196,6 +196,8 @@ func renderText( case opencode.UserMessage: ts = time.UnixMilli(int64(casted.Time.Created)) base := styles.NewStyle().Foreground(t.Text()).Background(backgroundColor) + + // Process @ mentions and styling with hyphen preservation words := strings.Fields(text) for i, word := range words { if strings.HasPrefix(word, "@") { @@ -204,9 +206,14 @@ func renderText( words[i] = base.Render(word + " ") } } - text = strings.Join(words, "") - text = ansi.WordwrapWc(text, width-6, " -") - content = base.Width(width - 6).Render(text) + styledText := strings.Join(words, "") + + // Apply word wrapping with hyphen preservation + frameSize := util.GetMessageContainerFrame() + wrappedText := util.ProcessTextWithHyphens(styledText, func(t string) string { + return ansi.WordwrapWc(t, width-frameSize, " ") + }) + content = base.Width(width - frameSize).Render(wrappedText) } timestamp := ts. @@ -707,5 +714,4 @@ func renderDiagnostics( // if !ok { // return "" // } - } diff --git a/packages/tui/internal/components/textarea/textarea.go b/packages/tui/internal/components/textarea/textarea.go index cc073e27d..a4b954d49 100644 --- a/packages/tui/internal/components/textarea/textarea.go +++ b/packages/tui/internal/components/textarea/textarea.go @@ -2051,6 +2051,10 @@ func wrapInterfaces(content []any, width int) [][]any { if unicode.IsSpace(r) { isSpace = true } + // Use hyphen-aware word boundary detection + if r == '-' { + isSpace = false + } itemW = rw.RuneWidth(r) } else if att, ok := item.(*Attachment); ok { itemW = uniseg.StringWidth(att.Display) |
