Просмотр исходного кода

feat: copy message to clipboard using keybinding (#80)

* copy message

* default keybinding

Co-authored-by: chromium <chromium@chromium.codes>
chromium 4 лет назад
Родитель
Сommit
f6061df298
2 измененных файлов с 13 добавлено и 0 удалено
  1. 2 0
      config.go
  2. 11 0
      ui.go

+ 2 - 0
config.go

@@ -23,6 +23,7 @@ type keybindings struct {
 	SelectLastMessage           string `toml:"select_last_message"`
 	SelectLastMessage           string `toml:"select_last_message"`
 	ReplySelectedMessage        string `toml:"reply_selected_message"`
 	ReplySelectedMessage        string `toml:"reply_selected_message"`
 	MentionReplySelectedMessage string `toml:"mention_reply_selected_message"`
 	MentionReplySelectedMessage string `toml:"mention_reply_selected_message"`
+	CopySelectedMessage	    string `toml:"copy_selected_message"`
 }
 }
 
 
 type theme struct {
 type theme struct {
@@ -107,6 +108,7 @@ func loadConfig() *config {
 			SelectLastMessage:           "End",
 			SelectLastMessage:           "End",
 			ReplySelectedMessage:        "Rune[r]",
 			ReplySelectedMessage:        "Rune[r]",
 			MentionReplySelectedMessage: "Rune[R]",
 			MentionReplySelectedMessage: "Rune[R]",
+			CopySelectedMessage: "Rune[c]",
 		}
 		}
 		c.Borders = tview.Borders
 		c.Borders = tview.Borders
 
 

+ 11 - 0
ui.go

@@ -197,6 +197,17 @@ func onMessagesViewInputCapture(e *tcell.EventKey) *tcell.EventKey {
 		messageInputField.SetTitle("[@] Replying to " + m.Author.String())
 		messageInputField.SetTitle("[@] Replying to " + m.Author.String())
 		app.SetFocus(messageInputField)
 		app.SetFocus(messageInputField)
 		return nil
 		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
 	return e