Procházet zdrojové kódy

feat: add navigation keys configuration for guilds tree and messages text widget

ayn2op před 1 rokem
rodič
revize
9f15a63424
3 změnil soubory, kde provedl 30 přidání a 25 odebrání
  1. 4 4
      cmd/guilds_tree.go
  2. 5 11
      cmd/messages_text.go
  3. 21 10
      internal/config/keys.go

+ 4 - 4
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)
 

+ 5 - 11
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 {

+ 21 - 10
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]",