diff options
Diffstat (limited to 'packages/tui/internal/components')
| -rw-r--r-- | packages/tui/internal/components/chat/messages.go | 5 | ||||
| -rw-r--r-- | packages/tui/internal/components/diff/diff.go | 32 |
2 files changed, 28 insertions, 9 deletions
diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index e1c7a9d14..356eba9f6 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/packages/tui/internal/components/chat/messages.go @@ -16,6 +16,7 @@ import ( "github.com/sst/opencode/internal/layout" "github.com/sst/opencode/internal/styles" "github.com/sst/opencode/internal/theme" + "github.com/sst/opencode/internal/util" ) type MessagesComponent interface { @@ -121,9 +122,13 @@ func (m *messagesComponent) renderView() { return } + measure := util.Measure("messages.renderView") + defer measure("messageCount", len(m.app.Messages)) + t := theme.CurrentTheme() blocks := make([]string, 0) previousBlockType := none + for _, message := range m.app.Messages { var content string var cached bool diff --git a/packages/tui/internal/components/diff/diff.go b/packages/tui/internal/components/diff/diff.go index 9475c1f19..4b5c62008 100644 --- a/packages/tui/internal/components/diff/diff.go +++ b/packages/tui/internal/components/diff/diff.go @@ -8,6 +8,7 @@ import ( "regexp" "strconv" "strings" + "sync" "github.com/alecthomas/chroma/v2" "github.com/alecthomas/chroma/v2/formatters" @@ -19,6 +20,7 @@ import ( "github.com/sergi/go-diff/diffmatchpatch" stylesi "github.com/sst/opencode/internal/styles" "github.com/sst/opencode/internal/theme" + "github.com/sst/opencode/internal/util" ) // ------------------------------------------------------------------------- @@ -939,11 +941,22 @@ func RenderSideBySideHunk(fileName string, h Hunk, opts ...SideBySideOption) str leftWidth := colWidth rightWidth := config.TotalWidth - colWidth var sb strings.Builder - for _, p := range pairs { - leftStr := renderLeftColumn(fileName, p.left, leftWidth) - rightStr := renderRightColumn(fileName, p.right, rightWidth) - sb.WriteString(leftStr + rightStr + "\n") - } + + util.WriteStringsPar(&sb, pairs, func(p linePair) string { + wg := &sync.WaitGroup{} + var leftStr, rightStr string + wg.Add(2) + go func() { + defer wg.Done() + leftStr = renderLeftColumn(fileName, p.left, leftWidth) + }() + go func() { + defer wg.Done() + rightStr = renderRightColumn(fileName, p.right, rightWidth) + }() + wg.Wait() + return leftStr + rightStr + "\n" + }) return sb.String() } @@ -957,7 +970,8 @@ func FormatUnifiedDiff(filename string, diffText string, opts ...UnifiedOption) var sb strings.Builder for _, h := range diffResult.Hunks { - sb.WriteString(RenderUnifiedHunk(filename, h, opts...)) + unifiedDiff := RenderUnifiedHunk(filename, h, opts...) + sb.WriteString(unifiedDiff) } return sb.String(), nil @@ -973,7 +987,7 @@ func FormatDiff(filename string, diffText string, opts ...SideBySideOption) (str var sb strings.Builder // config := NewSideBySideConfig(opts...) - for _, h := range diffResult.Hunks { + util.WriteStringsPar(&sb, diffResult.Hunks, func(h Hunk) string { // sb.WriteString( // lipgloss.NewStyle(). // Background(t.DiffHunkHeader()). @@ -981,8 +995,8 @@ func FormatDiff(filename string, diffText string, opts ...SideBySideOption) (str // Width(config.TotalWidth). // Render(h.Header) + "\n", // ) - sb.WriteString(RenderSideBySideHunk(filename, h, opts...)) - } + return RenderSideBySideHunk(filename, h, opts...) + }) return sb.String(), nil } |
