summaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-05-30 05:32:42 -0500
committeradamdottv <[email protected]>2025-05-30 05:32:42 -0500
commitc5413c8c8dc2c05afcd766c9e9a92a8e541aa403 (patch)
tree24226730435a18ea1410e5931bd0d40c1bb47351 /internal
parentda1e8484a9847bfad039163e89d304f289695f6e (diff)
downloadopencode-c5413c8c8dc2c05afcd766c9e9a92a8e541aa403.tar.gz
opencode-c5413c8c8dc2c05afcd766c9e9a92a8e541aa403.zip
wip: refactoring tui
Diffstat (limited to 'internal')
-rw-r--r--internal/tui/components/chat/message.go31
1 files changed, 23 insertions, 8 deletions
diff --git a/internal/tui/components/chat/message.go b/internal/tui/components/chat/message.go
index c7b8234a0..1dcdf8e46 100644
--- a/internal/tui/components/chat/message.go
+++ b/internal/tui/components/chat/message.go
@@ -8,6 +8,7 @@ import (
"github.com/charmbracelet/lipgloss"
"github.com/charmbracelet/x/ansi"
"github.com/sst/opencode/internal/config"
+ "github.com/sst/opencode/internal/diff"
"github.com/sst/opencode/internal/tui/styles"
"github.com/sst/opencode/internal/tui/theme"
"github.com/sst/opencode/pkg/client"
@@ -168,17 +169,31 @@ func renderAssistantMessage(
for _, arg := range toolMap {
toolArgs = append(toolArgs, fmt.Sprintf("%v", arg))
}
- result := truncateHeight(strings.TrimSpace(toolInvocationResult.Result), 10)
params := renderParams(width-lipgloss.Width(toolName)-1, toolArgs...)
title := styles.Padded().Render(fmt.Sprintf("%s: %s", toolName, params))
- markdown := toMarkdown(result, width)
-
- content := toolStyle.Render(lipgloss.JoinVertical(lipgloss.Left,
- title,
- markdown,
- ))
- messages = append(messages, content)
+ var markdown string
+ if toolInvocationResult.ToolName == "edit" {
+ filename := toolMap["filePath"].(string)
+ oldString := toolMap["oldString"].(string)
+ newString := toolMap["newString"].(string)
+ patch, _, _ := diff.GenerateDiff(oldString, newString, filename)
+ formattedDiff, _ := diff.FormatDiff(patch, diff.WithTotalWidth(width))
+ markdown = truncateHeight(strings.TrimSpace(formattedDiff), 10)
+ content := toolStyle.Render(lipgloss.JoinVertical(lipgloss.Left,
+ toolName,
+ markdown,
+ ))
+ messages = append(messages, content)
+ } else {
+ result := truncateHeight(strings.TrimSpace(toolInvocationResult.Result), 10)
+ markdown = toMarkdown(result, width)
+ content := toolStyle.Render(lipgloss.JoinVertical(lipgloss.Left,
+ title,
+ markdown,
+ ))
+ messages = append(messages, content)
+ }
}
}
}