feat: add yank_id & yank_url for messages text (#521)

This commit is contained in:
Ayyan 2025-03-25 23:57:31 -04:00 • committed by GitHub
parent a2be9c3329
commit f9824b1ff2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 40 additions and 11 deletions

View file

@ -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() {

View file

@ -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{