From 2b45b619abe4e5d4ce01fd432ef87b5c107346a6 Mon Sep 17 00:00:00 2001 From: Bryan Gilbert Date: Sat, 6 May 2017 12:12:04 -0400 Subject: [PATCH] add simple h/j/k/l keybindings navigate to neotree --- modules/feature/evil/autoload/neotree.el | 38 ++++++++++++++++++++++++ modules/feature/evil/config.el | 4 +++ 2 files changed, 42 insertions(+) diff --git a/modules/feature/evil/autoload/neotree.el b/modules/feature/evil/autoload/neotree.el index e16b3375c..e55868c8c 100644 --- a/modules/feature/evil/autoload/neotree.el +++ b/modules/feature/evil/autoload/neotree.el @@ -17,3 +17,41 @@ (neotree-dir project-root)) (neotree-find path project-root))))) +;;;###autoload +(defun +evil/neotree-collapse-or-up () + "Collapse an expanded directory node or go to the parent node." + (interactive) + (let ((node (neo-buffer--get-filename-current-line))) + (when node + (if (file-directory-p node) + (if (neo-buffer--expanded-node-p node) + (+evil/neotree-collapse) + (neotree-select-up-node)) + (neotree-select-up-node))))) + +;;;###autoload +(defun +evil/neotree-collapse () + "Collapse a neotree node." + (interactive) + (let ((node (neo-buffer--get-filename-current-line))) + (when node + (when (file-directory-p node) + (neo-buffer--set-expand node nil) + (neo-buffer--refresh t)) + (when neo-auto-indent-point + (neo-point-auto-indent))))) + +;;;###autoload +(defun +evil/neotree-expand-or-open () + "Expand or open a neotree node." + (interactive) + (let ((node (neo-buffer--get-filename-current-line))) + (when node + (if (file-directory-p node) + (progn + (neo-buffer--set-expand node t) + (neo-buffer--refresh t) + (when neo-auto-indent-point + (next-line) + (neo-point-auto-indent))) + (call-interactively 'neotree-enter))))) diff --git a/modules/feature/evil/config.el b/modules/feature/evil/config.el index d875ad6ff..74989408c 100644 --- a/modules/feature/evil/config.el +++ b/modules/feature/evil/config.el @@ -403,6 +403,10 @@ algorithm is just confusing, like in python or ruby." :Lm "K" 'neotree-select-previous-sibling-node :Lm "H" 'neotree-select-up-node :Lm "L" 'neotree-select-down-node + :Lm "h" '+evil/neotree-collapse-or-up + :Lm "j" 'neotree-next-line + :Lm "k" 'neotree-previous-line + :Lm "l" '+evil/neotree-expand-or-open :Lm "v" 'neotree-enter-vertical-split :Lm "s" 'neotree-enter-horizontal-split :Lm "c" 'neotree-create-node