@@ -25,7 +25,8 @@ import (
"github.com/charmbracelet/crush/internal/tui/util"
)
-var copyKey = key.NewBinding(key.WithKeys("c", "y", "C", "Y"), key.WithHelp("c/y", "copy"))
+// CopyKey is the key binding for copying message content to the clipboard.
+var CopyKey = key.NewBinding(key.WithKeys("c", "y", "C", "Y"), key.WithHelp("c/y", "copy"))
// MessageCmp defines the interface for message components in the chat interface.
// It combines standard UI model interfaces with message-specific functionality.
@@ -99,7 +100,7 @@ func (m *messageCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, cmd
}
case tea.KeyPressMsg:
- if key.Matches(msg, copyKey) {
+ if key.Matches(msg, CopyKey) {
err := clipboard.WriteAll(m.message.Content().Text)
if err != nil {
return m, util.ReportError(fmt.Errorf("failed to copy message content to clipboard: %w", err))
@@ -165,7 +165,7 @@ func (m *toolCallCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
}
return m, tea.Batch(cmds...)
case tea.KeyPressMsg:
- if key.Matches(msg, copyKey) {
+ if key.Matches(msg, CopyKey) {
return m, m.copyTool()
}
}
@@ -19,6 +19,7 @@ import (
"github.com/charmbracelet/crush/internal/tui/components/chat"
"github.com/charmbracelet/crush/internal/tui/components/chat/editor"
"github.com/charmbracelet/crush/internal/tui/components/chat/header"
+ "github.com/charmbracelet/crush/internal/tui/components/chat/messages"
"github.com/charmbracelet/crush/internal/tui/components/chat/sidebar"
"github.com/charmbracelet/crush/internal/tui/components/chat/splash"
"github.com/charmbracelet/crush/internal/tui/components/completions"
@@ -865,10 +866,7 @@ func (p *chatPage) Help() help.KeyMap {
key.WithKeys("up", "down"),
key.WithHelp("↑↓", "scroll"),
),
- key.NewBinding(
- key.WithKeys("c", "y"),
- key.WithHelp("c/y", "copy"),
- ),
+ messages.CopyKey,
)
fullList = append(fullList,
[]key.Binding{