diff --git a/cmd/messages_text.go b/cmd/messages_text.go index a73adf4..359d5d7 100644 --- a/cmd/messages_text.go +++ b/cmd/messages_text.go @@ -203,8 +203,12 @@ func (mt *MessagesText) onInputCapture(event *tcell.EventKey) *tcell.EventKey { switch event.Name() { case mt.cfg.Keys.MessagesText.SelectPrevious, mt.cfg.Keys.MessagesText.SelectNext, mt.cfg.Keys.MessagesText.SelectFirst, mt.cfg.Keys.MessagesText.SelectLast, mt.cfg.Keys.MessagesText.SelectReply, mt.cfg.Keys.MessagesText.SelectPin: mt._select(event.Name()) - case mt.cfg.Keys.MessagesText.Yank: - mt.yank() + case mt.cfg.Keys.MessagesText.YankID: + mt.yankID() + case mt.cfg.Keys.MessagesText.YankContent: + mt.yankContent() + case mt.cfg.Keys.MessagesText.YankURL: + mt.yankURL() case mt.cfg.Keys.MessagesText.Open: mt.open() case mt.cfg.Keys.MessagesText.Reply: @@ -295,18 +299,40 @@ func (mt *MessagesText) onHighlighted(added, removed, remaining []string) { } } -func (mt *MessagesText) yank() { +func (mt *MessagesText) yankID() { msg, err := mt.getSelectedMessage() if err != nil { slog.Error("failed to get selected message", "err", err) return } - err = clipboard.WriteAll(msg.Content) - if err != nil { + if err := clipboard.WriteAll(msg.ID.String()); err != nil { slog.Error("failed to write to clipboard", "err", err) + } +} + +func (mt *MessagesText) yankContent() { + msg, err := mt.getSelectedMessage() + if err != nil { + slog.Error("failed to get selected message", "err", err) return } + + if err = clipboard.WriteAll(msg.Content); err != nil { + slog.Error("failed to write to clipboard", "err", err) + } +} + +func (mt *MessagesText) yankURL() { + msg, err := mt.getSelectedMessage() + if err != nil { + slog.Error("failed to get selected message", "err", err) + return + } + + if err = clipboard.WriteAll(msg.URL()); err != nil { + slog.Error("failed to write to clipboard", "err", err) + } } func (mt *MessagesText) open() { diff --git a/internal/config/keys.go b/internal/config/keys.go index fdaabb2..f433171 100644 --- a/internal/config/keys.go +++ b/internal/config/keys.go @@ -35,9 +35,11 @@ type ( Reply string `toml:"reply"` ReplyMention string `toml:"reply_mention"` - Delete string `toml:"delete"` - Yank string `toml:"yank"` - Open string `toml:"open"` + Delete string `toml:"delete"` + YankID string `toml:"yank_id"` + YankContent string `toml:"yank_content"` + YankURL string `toml:"yank_url"` + Open string `toml:"open"` } MessageInputKeys struct { @@ -81,9 +83,10 @@ func defaultKeys() Keys { Reply: "Rune[r]", ReplyMention: "Rune[R]", - Delete: "Rune[d]", - Yank: "Rune[y]", - Open: "Rune[o]", + Delete: "Rune[d]", + YankContent: "Rune[y]", + YankURL: "Rune[i]", + Open: "Rune[o]", }, MessageInput: MessageInputKeys{