From 9f15a6342413f68531402b8aeb5ed272159fc370 Mon Sep 17 00:00:00 2001 From: ayn2op Date: Sat, 21 Dec 2024 21:11:53 -0500 Subject: [PATCH] feat: add navigation keys configuration for guilds tree and messages text widget --- cmd/guilds_tree.go | 8 ++++---- cmd/messages_text.go | 16 +++++----------- internal/config/keys.go | 31 +++++++++++++++++++++---------- 3 files changed, 30 insertions(+), 25 deletions(-) diff --git a/cmd/guilds_tree.go b/cmd/guilds_tree.go index 27911b0..4081c13 100644 --- a/cmd/guilds_tree.go +++ b/cmd/guilds_tree.go @@ -224,14 +224,14 @@ func (gt *GuildsTree) onSelected(n *tview.TreeNode) { func (gt *GuildsTree) onInputCapture(event *tcell.EventKey) *tcell.EventKey { switch event.Name() { - case gt.cfg.Keys.SelectPrevious: + case gt.cfg.Keys.GuildsTree.SelectPrevious: return tcell.NewEventKey(tcell.KeyUp, 0, tcell.ModNone) - case gt.cfg.Keys.SelectNext: + case gt.cfg.Keys.GuildsTree.SelectNext: return tcell.NewEventKey(tcell.KeyDown, 0, tcell.ModNone) - case gt.cfg.Keys.SelectFirst: + case gt.cfg.Keys.GuildsTree.SelectFirst: gt.Move(gt.GetRowCount() * -1) // return tcell.NewEventKey(tcell.KeyHome, 0, tcell.ModNone) - case gt.cfg.Keys.SelectLast: + case gt.cfg.Keys.GuildsTree.SelectLast: gt.Move(gt.GetRowCount()) // return tcell.NewEventKey(tcell.KeyEnd, 0, tcell.ModNone) diff --git a/cmd/messages_text.go b/cmd/messages_text.go index 52d974d..0d8823d 100644 --- a/cmd/messages_text.go +++ b/cmd/messages_text.go @@ -197,24 +197,18 @@ func (mt *MessagesText) getSelectedMessageIndex() (int, error) { func (mt *MessagesText) onInputCapture(event *tcell.EventKey) *tcell.EventKey { switch event.Name() { - case mt.cfg.Keys.SelectPrevious, mt.cfg.Keys.SelectNext, mt.cfg.Keys.SelectFirst, mt.cfg.Keys.SelectLast, mt.cfg.Keys.MessagesText.SelectReply, mt.cfg.Keys.MessagesText.SelectPin: + 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()) - return nil case mt.cfg.Keys.MessagesText.Yank: mt.yank() - return nil case mt.cfg.Keys.MessagesText.Open: mt.open() - return nil case mt.cfg.Keys.MessagesText.Reply: mt.reply(false) - return nil case mt.cfg.Keys.MessagesText.ReplyMention: mt.reply(true) - return nil case mt.cfg.Keys.MessagesText.Delete: mt.delete() - return nil } return nil @@ -234,7 +228,7 @@ func (mt *MessagesText) _select(name string) { } switch name { - case mt.cfg.Keys.SelectPrevious: + case mt.cfg.Keys.MessagesText.SelectPrevious: // If no message is currently selected, select the latest message. if len(mt.GetHighlights()) == 0 { mt.selectedMessageID = ms[0].ID @@ -245,7 +239,7 @@ func (mt *MessagesText) _select(name string) { return } } - case mt.cfg.Keys.SelectNext: + case mt.cfg.Keys.MessagesText.SelectNext: // If no message is currently selected, select the latest message. if len(mt.GetHighlights()) == 0 { mt.selectedMessageID = ms[0].ID @@ -256,9 +250,9 @@ func (mt *MessagesText) _select(name string) { return } } - case mt.cfg.Keys.SelectFirst: + case mt.cfg.Keys.MessagesText.SelectFirst: mt.selectedMessageID = ms[len(ms)-1].ID - case mt.cfg.Keys.SelectLast: + case mt.cfg.Keys.MessagesText.SelectLast: mt.selectedMessageID = ms[0].ID case mt.cfg.Keys.MessagesText.SelectReply: if mt.selectedMessageID == 0 { diff --git a/internal/config/keys.go b/internal/config/keys.go index 20570ea..ceff817 100644 --- a/internal/config/keys.go +++ b/internal/config/keys.go @@ -1,17 +1,19 @@ package config type ( + NavigationKeys struct { + SelectPrevious string `toml:"select_previous"` + SelectNext string `toml:"select_next"` + SelectFirst string `toml:"select_first"` + SelectLast string `toml:"select_last"` + } + Keys struct { FocusGuildsTree string `toml:"focus_guilds_tree"` FocusMessagesText string `toml:"focus_messages_text"` FocusMessageInput string `toml:"focus_message_input"` ToggleGuildsTree string `toml:"toggle_guilds_tree"` - SelectPrevious string `toml:"select_previous"` - SelectNext string `toml:"select_next"` - SelectFirst string `toml:"select_first"` - SelectLast string `toml:"select_last"` - GuildsTree GuildsTreeKeys `toml:"guilds_tree"` MessagesText MessagesTextKeys `toml:"messages_text"` MessageInput MessageInputKeys `toml:"message_input"` @@ -21,10 +23,12 @@ type ( } GuildsTreeKeys struct { + NavigationKeys SelectCurrent string `toml:"select_current"` } MessagesTextKeys struct { + NavigationKeys SelectReply string `toml:"select_reply"` SelectPin string `toml:"select_pin"` Reply string `toml:"reply"` @@ -52,16 +56,23 @@ func defaultKeys() Keys { Logout: "Ctrl+D", Quit: "Ctrl+C", - SelectPrevious: "Rune[k]", - SelectNext: "Rune[j]", - SelectFirst: "Rune[g]", - SelectLast: "Rune[G]", - GuildsTree: GuildsTreeKeys{ + NavigationKeys: NavigationKeys{ + SelectPrevious: "Rune[k]", + SelectNext: "Rune[j]", + SelectFirst: "Rune[g]", + SelectLast: "Rune[G]", + }, SelectCurrent: "Enter", }, MessagesText: MessagesTextKeys{ + NavigationKeys: NavigationKeys{ + SelectPrevious: "Rune[k]", + SelectNext: "Rune[j]", + SelectFirst: "Rune[g]", + SelectLast: "Rune[G]", + }, SelectReply: "Rune[s]", SelectPin: "Rune[p]",