2017-06-08 11:47:56 +02:00
|
|
|
;;; tools/dired/config.el -*- lexical-binding: t; -*-
|
2017-02-19 18:53:38 -05: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
|
2017-04-16 20:36:15 -04:00
|
|
|
auto-revert-verbose nil
|
|
|
|
;; files
|
|
|
|
image-dired-dir (concat doom-cache-dir "image-dired/")
|
|
|
|
image-dired-db-file (concat image-dired-dir "image-dired/db.el")
|
|
|
|
image-dired-gallery-dir (concat image-dired-dir "gallery/")
|
|
|
|
image-dired-temp-image-file (concat image-dired-dir "temp-image")
|
|
|
|
image-dired-temp-rotate-image-file (concat image-dired-dir "temp-rotate-image"))
|
2017-02-19 18:53:38 -05:00
|
|
|
|
|
|
|
(defun +dired|sort-directories-first ()
|
|
|
|
"List directories first in dired buffers."
|
|
|
|
(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))
|
2017-04-17 02:17:10 -04:00
|
|
|
(add-hook 'dired-after-readin-hook #'+dired|sort-directories-first)
|
2017-02-19 18:53:38 -05:00
|
|
|
|
|
|
|
;; Automatically create missing directories when creating new files
|
|
|
|
(defun +dired|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))))
|
2017-04-17 02:17:10 -04:00
|
|
|
(push #'+dired|create-non-existent-directory find-file-not-found-functions)
|
2017-02-19 18:53:38 -05:00
|
|
|
|
2017-04-05 14:26:26 -04:00
|
|
|
(after! evil
|
|
|
|
(add-transient-hook! 'dired-mode-hook
|
|
|
|
(map! :map dired-mode-map
|
2017-04-17 02:17:10 -04:00
|
|
|
:n "c" #'find-file
|
|
|
|
:n "d" #'dired-do-delete
|
|
|
|
:n "r" #'dired-do-rename)))
|
2017-04-05 14:26:26 -04:00
|
|
|
|
2017-02-19 18:53:38 -05:00
|
|
|
|
|
|
|
;;
|
|
|
|
;; Packages
|
|
|
|
;;
|
|
|
|
|
2017-02-23 00:06:12 -05:00
|
|
|
(def-package! dired-k
|
2017-02-19 18:53:38 -05:00
|
|
|
:after dired
|
|
|
|
:config
|
|
|
|
(setq dired-k-style 'git)
|
2017-04-16 11:56:37 -04:00
|
|
|
|
|
|
|
(defun +dired*dired-k-highlight (orig-fn &rest args)
|
|
|
|
"Butt out if the requested directory is remote (i.e. through tramp)."
|
|
|
|
(unless (file-remote-p default-directory)
|
|
|
|
(apply orig-fn args)))
|
2017-04-17 02:17:10 -04:00
|
|
|
(advice-add #'dired-k--highlight :around #'+dired*dired-k-highlight)
|
2017-04-16 11:56:37 -04:00
|
|
|
|
2017-04-17 02:17:10 -04:00
|
|
|
(add-hook 'dired-initial-position-hook #'dired-k)
|
2017-02-19 18:53:38 -05:00
|
|
|
(add-hook 'dired-after-readin-hook #'dired-k-no-revert))
|
|
|
|
|