浏览代码

fix: editor paste functionality for text attachments (#3489)

kcrommett 3 月之前
父节点
当前提交
7216a8c86d
共有 2 个文件被更改,包括 13 次插入2 次删除
  1. 5 2
      packages/tui/internal/components/chat/editor.go
  2. 8 0
      packages/tui/internal/tui/tui.go

+ 5 - 2
packages/tui/internal/components/chat/editor.go

@@ -48,6 +48,7 @@ type EditorComponent interface {
 	SetInterruptKeyInDebounce(inDebounce bool)
 	SetExitKeyInDebounce(inDebounce bool)
 	RestoreFromHistory(index int)
+	GetAttachments() []*attachment.Attachment
 }
 
 type editorComponent struct {
@@ -471,6 +472,10 @@ func (m *editorComponent) Length() int {
 	return m.textarea.Length()
 }
 
+func (m *editorComponent) GetAttachments() []*attachment.Attachment {
+	return m.textarea.GetAttachments()
+}
+
 func (m *editorComponent) Submit() (tea.Model, tea.Cmd) {
 	value := strings.TrimSpace(m.Value())
 	if value == "" {
@@ -628,9 +633,7 @@ func (m *editorComponent) SetValueWithAttachments(value string) {
 			}
 			if end > start {
 				filePath := value[start:end]
-				slog.Debug("test", "filePath", filePath)
 				if _, err := os.Stat(filepath.Join(util.CwdPath, filePath)); err == nil {
-					slog.Debug("test", "found", true)
 					attachment := m.createAttachmentFromFile(filePath)
 					if attachment != nil {
 						m.textarea.InsertAttachment(attachment)

+ 8 - 0
packages/tui/internal/tui/tui.go

@@ -1164,6 +1164,14 @@ func (a Model) executeCommand(command commands.Command) (tea.Model, tea.Cmd) {
 		}
 
 		value := a.editor.Value()
+
+		// Expand text attachments before opening editor
+		for _, att := range a.editor.GetAttachments() {
+			if textSource, ok := att.GetTextSource(); ok {
+				value = strings.Replace(value, att.Display, textSource.Value, 1)
+			}
+		}
+
 		updated, cmd := a.editor.Clear()
 		a.editor = updated.(chat.EditorComponent)
 		cmds = append(cmds, cmd)