diff --git a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/components/VimTreeNavigation.kt b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/components/VimTreeNavigation.kt index 8869674..4bcbb5d 100644 --- a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/components/VimTreeNavigation.kt +++ b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/components/VimTreeNavigation.kt @@ -44,7 +44,7 @@ internal object VimTreeNavigation { KeyStroke.getKeyStroke('p') to IdeaAction("Tree-selectParentNoCollapse"), KeyStroke.getKeyStroke('P') to IdeaAction("Tree-selectFirst"), KeyStroke.getKeyStroke('x') to CollapseSelfOrParentNode, - KeyStroke.getKeyStroke('X') to IdeaAction("CollapseTreeNode"), + KeyStroke.getKeyStroke('X') to CollapseAll, ) ) @@ -141,6 +141,21 @@ internal object VimTreeNavigation { } } + private data object CollapseAll : ActionNode<VimNavigationDispatcher<JTree>> { + override fun performAction(holder: VimNavigationDispatcher<JTree>, actionEvent: AnActionEvent, keyEvent: KeyEvent) { + val tree = holder.component + + CollapseUntilRootNode.performAction(holder, actionEvent, keyEvent) + + var row = 0 + + while (row < tree.rowCount) { + tree.collapseRow(row) + row++ + } + } + } + private data object ExpandChildrenToNextLevel : ActionNode<VimNavigationDispatcher<JTree>> { override fun performAction(holder: VimNavigationDispatcher<JTree>, actionEvent: AnActionEvent, keyEvent: KeyEvent) { val tree = holder.component