From bad44a4490d23a1ba46b2afc59c6de82092eb385 Mon Sep 17 00:00:00 2001 From: Ayyan Date: Tue, 25 Feb 2025 19:42:17 -0500 Subject: [PATCH] feat(config): add keys.guilds_tree.yank (#508) Co-authored-by: ayn2op --- cmd/guilds_tree.go | 13 +++++++++++++ internal/config/keys.go | 2 ++ 2 files changed, 15 insertions(+) diff --git a/cmd/guilds_tree.go b/cmd/guilds_tree.go index 4081c13..2ebf3ac 100644 --- a/cmd/guilds_tree.go +++ b/cmd/guilds_tree.go @@ -6,6 +6,7 @@ import ( "sort" "strings" + "github.com/atotto/clipboard" "github.com/ayn2op/discordo/internal/config" "github.com/diamondburned/arikawa/v3/discord" "github.com/diamondburned/arikawa/v3/gateway" @@ -237,6 +238,18 @@ func (gt *GuildsTree) onInputCapture(event *tcell.EventKey) *tcell.EventKey { case gt.cfg.Keys.GuildsTree.SelectCurrent: return tcell.NewEventKey(tcell.KeyEnter, 0, tcell.ModNone) + + case gt.cfg.Keys.GuildsTree.YankID: + node := gt.GetCurrentNode() + if node == nil { + return nil + } + + // Reference of a tree node in the guilds tree is its ID. + // discord.Snowflake (discord.GuildID and discord.ChannelID) have the String method. + if id, ok := node.GetReference().(fmt.Stringer); ok { + go clipboard.WriteAll(id.String()) + } } return nil diff --git a/internal/config/keys.go b/internal/config/keys.go index ceff817..fdaabb2 100644 --- a/internal/config/keys.go +++ b/internal/config/keys.go @@ -25,6 +25,7 @@ type ( GuildsTreeKeys struct { NavigationKeys SelectCurrent string `toml:"select_current"` + YankID string `toml:"yank_id"` } MessagesTextKeys struct { @@ -64,6 +65,7 @@ func defaultKeys() Keys { SelectLast: "Rune[G]", }, SelectCurrent: "Enter", + YankID: "Rune[y]", }, MessagesText: MessagesTextKeys{