           (if neo-click-changes-root
               (neotree-change-root)
             (progn
-              (neo-buffer--toggle-expand btn-full-path)
-              (neo-buffer--refresh t)
-              (when neo-auto-indent-point
-                (next-line)
-                (neo-point-auto-indent))))
+              (let ((new-state (neo-buffer--toggle-expand btn-full-path)))
+                (neo-buffer--refresh t)
+                (when neo-auto-indent-point
+                  (when new-state (next-line))
+                  (neo-point-auto-indent)))))
         (progn
           (if (eq (safe-length (window-list)) 1)
               (neo-global--with-buffer

                (neo-buffer--lock-width)))
          (neo-global--when-window
            (neo-window--zoom 'minimize))
          (if (and arg (integerp arg)
                   (boundp 'window-numbering-mode)
                   (symbol-value window-numbering-mode)
                   (fboundp 'select-window-by-number))
              (select-window-by-number arg)
            (select-window (get-mru-window)))
          (find-file btn-full-path))))
    btn-full-path))

(defun neotree-change-root ()
  "Change root to current node dir.

(defun neotree-enter (&optional arg)
  "Open a node, like 'o' in NERDTree.

If ARG is an integer then the node is opened in a window selected via
`window-numbering' (if available) according to the passed number.
If ARG is `|' then the node is opened in new vertically split window.
If ARG is `-' then the node is opened in new horizontally split window."
  (interactive "P")
  (let ((btn-full-path (neo-buffer--get-filename-current-line)))
    (unless (null btn-full-path)
