Selaa lähdekoodia

feat(config): add collapse_parent_node & move_to_parent_node keymaps (#530)

Ayyan 1 vuosi sitten
vanhempi
sitoutus
c6c66c31ba
2 muutettua tiedostoa jossa 26 lisäystä ja 0 poistoa
  1. 20 0
      cmd/guilds_tree.go
  2. 6 0
      internal/config/keys.go

+ 20 - 0
cmd/guilds_tree.go

@@ -216,8 +216,28 @@ func (gt *GuildsTree) onSelected(n *tview.TreeNode) {
 	}
 }
 
+func (gt *GuildsTree) collapseParentNode(node *tview.TreeNode) {
+	gt.
+		GetRoot().
+		Walk(func(n, parent *tview.TreeNode) bool {
+			if n == node && parent.GetLevel() != 0 {
+				parent.Collapse()
+				gt.SetCurrentNode(parent)
+				return false
+			}
+
+			return true
+		})
+}
+
 func (gt *GuildsTree) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 	switch event.Name() {
+	case gt.cfg.Keys.GuildsTree.CollapseParentNode:
+		gt.collapseParentNode(gt.GetCurrentNode())
+		return nil
+	case gt.cfg.Keys.GuildsTree.MoveToParentNode:
+		return tcell.NewEventKey(tcell.KeyRune, 'K', tcell.ModNone)
+
 	case gt.cfg.Keys.GuildsTree.SelectPrevious:
 		return tcell.NewEventKey(tcell.KeyUp, 0, tcell.ModNone)
 	case gt.cfg.Keys.GuildsTree.SelectNext:

+ 6 - 0
internal/config/keys.go

@@ -26,6 +26,9 @@ type (
 		NavigationKeys
 		SelectCurrent string `toml:"select_current"`
 		YankID        string `toml:"yank_id"`
+
+		CollapseParentNode string `toml:"collapse_parent_node"`
+		MoveToParentNode   string `toml:"move_to_parent_node"`
 	}
 
 	MessagesTextKeys struct {
@@ -69,6 +72,9 @@ func defaultKeys() Keys {
 			},
 			SelectCurrent: "Enter",
 			YankID:        "Rune[y]",
+
+			CollapseParentNode: "Rune[-]",
+			MoveToParentNode:   "Rune[p]",
 		},
 
 		MessagesText: MessagesTextKeys{