diff --git a/config.go b/config.go index 6bb4191..bb111b0 100644 --- a/config.go +++ b/config.go @@ -23,6 +23,7 @@ type keybindings struct { SelectLastMessage string `toml:"select_last_message"` ReplySelectedMessage string `toml:"reply_selected_message"` MentionReplySelectedMessage string `toml:"mention_reply_selected_message"` + CopySelectedMessage string `toml:"copy_selected_message"` } type theme struct { @@ -107,6 +108,7 @@ func loadConfig() *config { SelectLastMessage: "End", ReplySelectedMessage: "Rune[r]", MentionReplySelectedMessage: "Rune[R]", + CopySelectedMessage: "Rune[c]", } c.Borders = tview.Borders diff --git a/ui.go b/ui.go index 9c7e805..b61796d 100644 --- a/ui.go +++ b/ui.go @@ -197,6 +197,17 @@ func onMessagesViewInputCapture(e *tcell.EventKey) *tcell.EventKey { messageInputField.SetTitle("[@] Replying to " + m.Author.String()) app.SetFocus(messageInputField) return nil + case conf.Keybindings.CopySelectedMessage: + hs := messagesView.GetHighlights() + if len(hs) == 0 { + return nil + } + + m := findByMessageID(hs[0]) + err := clipboard.WriteAll(m.Content) + if err != nil { + return nil + } } return e