183 lines
6.6 KiB
EmacsLisp
183 lines
6.6 KiB
EmacsLisp
;;; packages.el --- Spacemacs Projects Layer packages File
|
|
;;
|
|
;; Copyright (c) 2012-2016 Sylvain Benner & Contributors
|
|
;;
|
|
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
|
;; URL: https://github.com/syl20bnr/spacemacs
|
|
;;
|
|
;; This file is not part of GNU Emacs.
|
|
;;
|
|
;;; License: GPLv3
|
|
|
|
(setq spacemacs-projects
|
|
'(
|
|
neotree
|
|
projectile
|
|
))
|
|
|
|
(defun spacemacs-projects/init-neotree ()
|
|
(use-package neotree
|
|
:defer t
|
|
:commands neo-global--window-exists-p
|
|
:init
|
|
(progn
|
|
(setq neo-window-width 32
|
|
neo-create-file-auto-open t
|
|
neo-banner-message nil
|
|
neo-show-updir-line nil
|
|
neo-mode-line-type 'neotree
|
|
neo-smart-open t
|
|
neo-dont-be-alone t
|
|
neo-persist-show nil
|
|
neo-show-hidden-files t
|
|
neo-auto-indent-point t
|
|
neo-modern-sidebar t
|
|
neo-vc-integration nil)
|
|
|
|
(defun spacemacs/neotree-expand-or-open ()
|
|
"Collapse 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)))))
|
|
|
|
(defun spacemacs/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)))))
|
|
|
|
(defun spacemacs/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)
|
|
(spacemacs/neotree-collapse)
|
|
(neotree-select-up-node))
|
|
(neotree-select-up-node)))))
|
|
|
|
(defun neotree-find-project-root ()
|
|
(interactive)
|
|
(if (neo-global--window-exists-p)
|
|
(neotree-hide)
|
|
(let ((origin-buffer-file-name (buffer-file-name)))
|
|
(neotree-find (projectile-project-root))
|
|
(neotree-find origin-buffer-file-name))))
|
|
|
|
(defun spacemacs//neotree-maybe-attach-window ()
|
|
(when (get-buffer-window (neo-global--get-buffer))
|
|
(neo-global--attach)))
|
|
|
|
(defun spacemacs//neotree-key-bindings ()
|
|
"Set the key bindings for a neotree buffer."
|
|
(evilified-state-evilify-map neotree-mode-map
|
|
:mode neotree-mode
|
|
:bindings
|
|
(kbd "TAB") 'neotree-stretch-toggle
|
|
(kbd "RET") 'neotree-enter
|
|
(kbd "|") 'neotree-enter-vertical-split
|
|
(kbd "-") 'neotree-enter-horizontal-split
|
|
(kbd "?") 'evil-search-backward
|
|
(kbd "c") 'neotree-create-node
|
|
(kbd "d") 'neotree-delete-node
|
|
(kbd "gr") 'neotree-refresh
|
|
(kbd "h") 'spacemacs/neotree-collapse-or-up
|
|
(kbd "H") 'neotree-select-previous-sibling-node
|
|
(kbd "J") 'neotree-select-down-node
|
|
(kbd "K") 'neotree-select-up-node
|
|
(kbd "l") 'spacemacs/neotree-expand-or-open
|
|
(kbd "L") 'neotree-select-next-sibling-node
|
|
(kbd "q") 'neotree-hide
|
|
(kbd "r") 'neotree-rename-node
|
|
(kbd "R") 'neotree-change-root
|
|
(kbd "s") 'neotree-hidden-file-toggle))
|
|
|
|
(spacemacs/set-leader-keys
|
|
"ft" 'neotree-toggle
|
|
"pt" 'neotree-find-project-root))
|
|
|
|
:config
|
|
(progn
|
|
(spacemacs//neotree-key-bindings)
|
|
(add-hook 'persp-activated-hook #'spacemacs//neotree-maybe-attach-window)
|
|
(add-hook 'eyebrowse-post-window-switch-hook #'spacemacs//neotree-maybe-attach-window))))
|
|
|
|
(defun spacemacs-projects/init-projectile ()
|
|
(use-package projectile
|
|
:commands (projectile-ack
|
|
projectile-ag
|
|
projectile-compile-project
|
|
projectile-dired
|
|
projectile-find-dir
|
|
projectile-find-file
|
|
projectile-find-tag
|
|
projectile-test-project
|
|
projectile-grep
|
|
projectile-invalidate-cache
|
|
projectile-kill-buffers
|
|
projectile-multi-occur
|
|
projectile-project-p
|
|
projectile-project-root
|
|
projectile-recentf
|
|
projectile-regenerate-tags
|
|
projectile-replace
|
|
projectile-replace-regexp
|
|
projectile-run-async-shell-command-in-root
|
|
projectile-run-shell-command-in-root
|
|
projectile-switch-project
|
|
projectile-switch-to-buffer
|
|
projectile-vc)
|
|
:init
|
|
(progn
|
|
;; note for Windows: GNU find or Cygwin find must be in path to enable
|
|
;; fast indexing
|
|
(when (and (spacemacs/system-is-mswindows) (executable-find "find"))
|
|
(setq projectile-indexing-method 'alien
|
|
projectile-generic-command "find . -type f"))
|
|
(setq projectile-sort-order 'recentf
|
|
projectile-cache-file (concat spacemacs-cache-directory
|
|
"projectile.cache")
|
|
projectile-known-projects-file (concat spacemacs-cache-directory
|
|
"projectile-bookmarks.eld"))
|
|
(unless (configuration-layer/package-usedp 'helm-projectile)
|
|
(spacemacs/set-leader-keys
|
|
"pb" 'projectile-switch-to-buffer
|
|
"pd" 'projectile-find-dir
|
|
"pf" 'projectile-find-file
|
|
"pF" 'projectile-find-file-dwim
|
|
"ph" 'helm-projectile
|
|
"pr" 'projectile-recentf
|
|
"ps" 'projectile-switch-project))
|
|
(spacemacs/set-leader-keys
|
|
"p!" 'projectile-run-shell-command-in-root
|
|
"p&" 'projectile-run-async-shell-command-in-root
|
|
"p%" 'projectile-replace-regexp
|
|
"pa" 'projectile-toggle-between-implementation-and-test
|
|
"pc" 'projectile-compile-project
|
|
"pD" 'projectile-dired
|
|
"pG" 'projectile-regenerate-tags
|
|
"pI" 'projectile-invalidate-cache
|
|
"pk" 'projectile-kill-buffers
|
|
"po" 'projectile-multi-occur
|
|
"pR" 'projectile-replace
|
|
"pT" 'projectile-test-project
|
|
"py" 'projectile-find-tag))
|
|
:config
|
|
(progn
|
|
(projectile-global-mode)
|
|
(spacemacs|hide-lighter projectile-mode))))
|