2015-06-15 09:05:52 +02:00
|
|
|
;;; core-project.el --- all your (basic) project navigational needs
|
|
|
|
|
2016-05-02 15:58:21 -04:00
|
|
|
(setq ;; Always copy/delete recursively
|
|
|
|
dired-recursive-copies 'always
|
|
|
|
dired-recursive-deletes 'top
|
|
|
|
;; Auto refresh dired, but be quiet about it
|
|
|
|
global-auto-revert-non-file-buffers t
|
2016-04-05 23:58:32 -04:00
|
|
|
auto-revert-verbose nil)
|
2016-02-02 05:44:07 -05:00
|
|
|
|
|
|
|
;; List directories first
|
2016-05-20 22:37:30 -04:00
|
|
|
(defun doom|dired-sort ()
|
2016-02-02 05:44:07 -05:00
|
|
|
"Dired sort hook to list directories first."
|
|
|
|
(save-excursion
|
|
|
|
(let (buffer-read-only)
|
|
|
|
(forward-line 2) ;; beyond dir. header
|
|
|
|
(sort-regexp-fields t "^.*$" "[ ]*." (point) (point-max))))
|
|
|
|
(and (featurep 'xemacs)
|
|
|
|
(fboundp 'dired-insert-set-properties)
|
|
|
|
(dired-insert-set-properties (point-min) (point-max)))
|
|
|
|
(set-buffer-modified-p nil))
|
2016-05-20 22:37:30 -04:00
|
|
|
(add-hook 'dired-after-readin-hook 'doom|dired-sort)
|
2016-02-02 05:44:07 -05:00
|
|
|
|
2016-08-28 22:54:22 +02:00
|
|
|
(use-package dired-k
|
|
|
|
:after dired
|
|
|
|
:config
|
|
|
|
(setq dired-k-style 'git)
|
|
|
|
(add-hook 'dired-initial-position-hook 'dired-k)
|
|
|
|
(add-hook 'dired-after-readin-hook #'dired-k-no-revert))
|
|
|
|
|
2016-02-02 05:44:07 -05:00
|
|
|
;; Automatically create missing directories when creating new files
|
2016-05-20 22:37:30 -04:00
|
|
|
(defun doom|create-non-existent-directory ()
|
2016-02-02 05:44:07 -05:00
|
|
|
(let ((parent-directory (file-name-directory buffer-file-name)))
|
|
|
|
(when (and (not (file-exists-p parent-directory))
|
|
|
|
(y-or-n-p (format "Directory `%s' does not exist! Create it?" parent-directory)))
|
|
|
|
(make-directory parent-directory t))))
|
2016-05-20 22:37:30 -04:00
|
|
|
(push 'doom|create-non-existent-directory find-file-not-found-functions)
|
2016-02-02 05:44:07 -05:00
|
|
|
|
2015-06-15 09:05:52 +02:00
|
|
|
(use-package neotree
|
|
|
|
:commands (neotree-show
|
|
|
|
neotree-hide
|
|
|
|
neotree-toggle
|
|
|
|
neotree-dir
|
|
|
|
neotree-find
|
2016-08-13 12:30:41 +02:00
|
|
|
neo-global--with-buffer
|
2015-06-15 09:05:52 +02:00
|
|
|
neo-global--window-exists-p)
|
|
|
|
:init
|
|
|
|
(setq neo-create-file-auto-open t
|
2016-09-14 12:38:37 +02:00
|
|
|
neo-auto-indent-point nil
|
2015-06-15 09:05:52 +02:00
|
|
|
neo-mode-line-type 'none
|
2015-12-23 03:38:18 -05:00
|
|
|
neo-persist-show nil
|
2016-09-15 14:20:35 +02:00
|
|
|
neo-window-width 25
|
2015-06-15 09:05:52 +02:00
|
|
|
neo-show-updir-line nil
|
2016-05-20 17:22:52 -04:00
|
|
|
neo-theme 'nerd ; fallback
|
2015-12-23 03:38:18 -05:00
|
|
|
neo-banner-message nil)
|
2015-06-15 09:05:52 +02:00
|
|
|
:config
|
2015-12-23 03:38:18 -05:00
|
|
|
(evil-set-initial-state 'neotree-mode 'motion)
|
2016-06-05 23:08:46 -04:00
|
|
|
(add-hook 'neo-after-create-hook 'doom-hide-mode-line-mode)
|
2016-05-12 02:54:15 -04:00
|
|
|
|
|
|
|
;; Don't ask for confirmation when creating files
|
2016-05-20 22:37:30 -04:00
|
|
|
(advice-add 'neotree-create-node :around 'doom*neotree-create-node)
|
2016-05-12 02:54:15 -04:00
|
|
|
;; Prevents messing up the neotree buffer on window changes
|
2016-05-20 22:37:30 -04:00
|
|
|
(advice-add 'doom/evil-window-move :around 'doom*save-neotree)
|
2016-05-12 02:54:15 -04:00
|
|
|
|
2016-06-04 23:33:09 -04:00
|
|
|
(map! :map neotree-mode-map
|
|
|
|
:m "\\\\" 'evil-window-prev
|
|
|
|
"ESC ESC" 'neotree-hide
|
2016-06-08 14:38:54 -04:00
|
|
|
"q" 'neotree-hide
|
|
|
|
[return] 'neotree-enter
|
|
|
|
"RET" 'neotree-enter
|
|
|
|
:m "J" 'neotree-select-next-sibling-node
|
|
|
|
:m "K" 'neotree-select-previous-sibling-node
|
|
|
|
:m "H" 'neotree-select-up-node
|
|
|
|
:m "L" 'neotree-select-down-node
|
|
|
|
"v" 'neotree-enter-vertical-split
|
|
|
|
"s" 'neotree-enter-horizontal-split
|
|
|
|
"c" 'neotree-create-node
|
|
|
|
"d" 'neotree-delete-node
|
|
|
|
"g" 'neotree-refresh
|
|
|
|
"r" 'neotree-rename-node
|
|
|
|
"R" 'neotree-change-root))
|
2015-06-15 09:05:52 +02:00
|
|
|
|
2016-03-31 03:19:30 -04:00
|
|
|
(use-package projectile
|
|
|
|
:config
|
|
|
|
(setq projectile-require-project-root nil
|
|
|
|
projectile-enable-caching t
|
2016-05-20 22:37:30 -04:00
|
|
|
projectile-cache-file (concat doom-temp-dir "/projectile.cache")
|
|
|
|
projectile-known-projects-file (concat doom-temp-dir "/projectile.projects")
|
2016-03-31 03:19:30 -04:00
|
|
|
projectile-indexing-method 'alien
|
2016-06-17 20:05:20 -04:00
|
|
|
projectile-file-exists-remote-cache-expire nil
|
2016-06-23 01:29:54 -04:00
|
|
|
projectile-project-root-files '(".git" ".hg" ".svn" ".project"))
|
2016-03-31 03:19:30 -04:00
|
|
|
|
2016-04-16 21:29:51 -04:00
|
|
|
;; Don't cache ignored files!
|
2016-05-20 22:37:30 -04:00
|
|
|
(defun doom*projectile-cache-current-file (orig-fun &rest args)
|
2016-04-16 21:29:51 -04:00
|
|
|
(unless (--any (f-descendant-of? buffer-file-name it) (projectile-ignored-directories))
|
|
|
|
(apply orig-fun args)))
|
2016-05-20 22:37:30 -04:00
|
|
|
(advice-add 'projectile-cache-current-file :around 'doom*projectile-cache-current-file)
|
2016-04-16 21:29:51 -04:00
|
|
|
|
2016-08-30 08:59:50 +02:00
|
|
|
(push doom-temp-dir projectile-globally-ignored-directories)
|
2016-03-31 03:19:30 -04:00
|
|
|
(push "assets" projectile-globally-ignored-directories)
|
|
|
|
(push ".cask" projectile-globally-ignored-directories)
|
2016-08-30 08:59:50 +02:00
|
|
|
(push ".sync" projectile-globally-ignored-directories)
|
2016-05-23 20:56:19 -04:00
|
|
|
(push ".elc" projectile-globally-ignored-file-suffixes)
|
2016-08-30 08:59:50 +02:00
|
|
|
(push ".project" projectile-globally-ignored-file-suffixes)
|
|
|
|
(push "Icon
" projectile-globally-ignored-files)
|
2016-05-23 20:56:19 -04:00
|
|
|
|
2016-03-31 03:19:30 -04:00
|
|
|
(projectile-global-mode +1))
|
|
|
|
|
2015-06-15 09:05:52 +02:00
|
|
|
(provide 'core-project)
|
|
|
|
;;; core-project.el ends here
|