Rewrite core libraries (WIP)
This commit is contained in:
parent
83c852e11f
commit
50ea98319f
68 changed files with 1892 additions and 5345 deletions
|
@ -1,41 +1,52 @@
|
|||
;;; core-project.el --- all your (basic) project navigational needs
|
||||
;;; core-project.el --- tools for getting around your project
|
||||
|
||||
(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
|
||||
auto-revert-verbose nil)
|
||||
;; I want Emacs project-aware. i.e. To know what project I'm in, and to be able
|
||||
;; to tell me about it. `projectile' helps me with this. It also provides nifty
|
||||
;; tools for digging out files I want from a project of any size.
|
||||
;;
|
||||
;; `neotree', on the other hand, allows me to browse my project files. I
|
||||
;; occasionally like having a birds-eye view of my files.
|
||||
|
||||
;; List directories first
|
||||
(defun doom|dired-sort ()
|
||||
"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))
|
||||
(add-hook 'dired-after-readin-hook 'doom|dired-sort)
|
||||
(package! projectile :demand t
|
||||
:init
|
||||
(setq projectile-cache-file (concat doom-temp-dir "/projectile.cache")
|
||||
projectile-completion-system 'ivy
|
||||
projectile-enable-caching t
|
||||
projectile-file-exists-remote-cache-expire nil
|
||||
projectile-globally-ignored-directories `(,doom-temp-dir ".sync")
|
||||
projectile-globally-ignored-file-suffixes '(".elc" ".pyc" ".o")
|
||||
projectile-globally-ignored-files '(".DS_Store" "Icon
")
|
||||
projectile-indexing-method 'alien
|
||||
projectile-known-projects-file (concat doom-temp-dir "/projectile.projects")
|
||||
projectile-project-root-files '(".git" ".hg" ".svn" ".project")
|
||||
projectile-require-project-root nil)
|
||||
|
||||
(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))
|
||||
(mapc (lambda (r) (push r projectile-other-file-alist))
|
||||
'(("less" "css")
|
||||
("styl" "css")
|
||||
("sass" "css")
|
||||
("scss" "css")
|
||||
("css" "scss" "sass" "less" "styl")
|
||||
("jade" "html")
|
||||
("pug" "html")
|
||||
("html" "jade" "pug" "jsx" "tsx")))
|
||||
|
||||
;; Automatically create missing directories when creating new files
|
||||
(defun doom|create-non-existent-directory ()
|
||||
(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))))
|
||||
(push 'doom|create-non-existent-directory find-file-not-found-functions)
|
||||
(defun doom*projectile-cache-current-file (orig-fun &rest args)
|
||||
"Don't cache ignored files."
|
||||
(unless (--any (f-descendant-of? buffer-file-name it)
|
||||
(projectile-ignored-directories))
|
||||
(apply orig-fun args)))
|
||||
(advice-add 'projectile-cache-current-file :around 'doom*projectile-cache-current-file)
|
||||
|
||||
(use-package neotree
|
||||
(projectile-global-mode +1))
|
||||
|
||||
|
||||
;;
|
||||
;; Autoloaded Packages
|
||||
;;
|
||||
|
||||
(package! neotree
|
||||
:commands (neotree-show
|
||||
neotree-hide
|
||||
neotree-toggle
|
||||
|
@ -51,23 +62,30 @@
|
|||
neo-window-width 25
|
||||
neo-show-updir-line nil
|
||||
neo-theme 'nerd ; fallback
|
||||
neo-banner-message nil)
|
||||
neo-banner-message nil
|
||||
neo-show-hidden-files nil
|
||||
neo-hidden-regexp-list
|
||||
'(;; vcs folders
|
||||
"^\\.\\(git\\|hg\\|svn\\)$"
|
||||
;; compiled files
|
||||
"\\.\\(pyc\\|o\\|elc\\|lock\\|css.map\\)$"
|
||||
;; generated files, caches or local pkgs
|
||||
"^\\(node_modules\\|vendor\\|.\\(project\\|cask\\|yardoc\\|sass-cache\\)\\)$"
|
||||
;; org-mode folders
|
||||
"^\\.\\(sync\\|export\\|attach\\)$"
|
||||
"~$"
|
||||
"^#.*#$"))
|
||||
|
||||
:config
|
||||
(evil-set-initial-state 'neotree-mode 'motion)
|
||||
(add-hook 'neo-after-create-hook 'doom-hide-mode-line-mode)
|
||||
|
||||
;; Don't ask for confirmation when creating files
|
||||
(advice-add 'neotree-create-node :around 'doom*neotree-create-node)
|
||||
;; Prevents messing up the neotree buffer on window changes
|
||||
(advice-add 'doom/evil-window-move :around 'doom*save-neotree)
|
||||
(advice-add 'doom/popup-buffer :around 'doom*save-neotree)
|
||||
;; Adding keybindings to `neotree-mode-map' wouldn't work for me (they get
|
||||
;; overridden when the neotree buffer is spawned). So we bind them in a hook.
|
||||
(add-hook 'neo-after-create-hook 'doom|neotree-init-keymap)
|
||||
(defun doom|neotree-init-keymap (&rest _)
|
||||
(map! :Lm "\\\\" 'evil-window-prev
|
||||
:Lm "ESC ESC" 'doom/neotree-close
|
||||
:Lm "q" 'doom/neotree-close
|
||||
:Lm "ESC ESC" 'neotree-hide
|
||||
:Lm "q" 'neotree-hide
|
||||
:Lm [return] 'neotree-enter
|
||||
:Lm "RET" 'neotree-enter
|
||||
:Lm "<return>" 'neotree-enter
|
||||
|
@ -83,32 +101,5 @@
|
|||
:Lm "r" 'neotree-rename-node
|
||||
:Lm "R" 'neotree-change-root)))
|
||||
|
||||
(use-package projectile
|
||||
:config
|
||||
(setq projectile-require-project-root nil
|
||||
projectile-enable-caching t
|
||||
projectile-cache-file (concat doom-temp-dir "/projectile.cache")
|
||||
projectile-known-projects-file (concat doom-temp-dir "/projectile.projects")
|
||||
projectile-indexing-method 'alien
|
||||
projectile-file-exists-remote-cache-expire nil
|
||||
projectile-project-root-files '(".git" ".hg" ".svn" ".project"))
|
||||
|
||||
;; Don't cache ignored files!
|
||||
(defun doom*projectile-cache-current-file (orig-fun &rest args)
|
||||
(unless (--any (f-descendant-of? buffer-file-name it)
|
||||
(projectile-ignored-directories))
|
||||
(apply orig-fun args)))
|
||||
(advice-add 'projectile-cache-current-file :around 'doom*projectile-cache-current-file)
|
||||
|
||||
(push doom-temp-dir projectile-globally-ignored-directories)
|
||||
(push "assets" projectile-globally-ignored-directories)
|
||||
(push ".cask" projectile-globally-ignored-directories)
|
||||
(push ".sync" projectile-globally-ignored-directories)
|
||||
(push ".elc" projectile-globally-ignored-file-suffixes)
|
||||
(push ".project" projectile-globally-ignored-file-suffixes)
|
||||
(push "Icon
" projectile-globally-ignored-files)
|
||||
|
||||
(projectile-global-mode +1))
|
||||
|
||||
(provide 'core-project)
|
||||
;;; core-project.el ends here
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue