diff --git a/modules/tools/dired/config.el b/modules/tools/dired/config.el index e7e7f5657..452d5c925 100644 --- a/modules/tools/dired/config.el +++ b/modules/tools/dired/config.el @@ -1,61 +1,54 @@ ;;; tools/dired/config.el -*- lexical-binding: t; -*- -(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 - ;; 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")) +(def-package! dired + :defer t + :init + (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 + ;; 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")) + :config + (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)) + (add-hook 'dired-after-readin-hook #'+dired|sort-directories-first) -(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)) -(add-hook 'dired-after-readin-hook #'+dired|sort-directories-first) + ;; 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)))) + (push #'+dired|create-non-existent-directory find-file-not-found-functions) -;; 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)))) -(push #'+dired|create-non-existent-directory find-file-not-found-functions) + ;; Don't interfere with leader key + (define-key dired-mode-map (kbd doom-leader-key) nil)) -(after! evil - (add-transient-hook! 'dired-mode-hook - (map! :map dired-mode-map - :n "c" #'find-file - :n "d" #'dired-do-delete - :n "r" #'dired-do-rename))) - - -;; -;; Packages -;; (def-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) (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))) - (advice-add #'dired-k--highlight :around #'+dired*dired-k-highlight) - - (add-hook 'dired-initial-position-hook #'dired-k) - (add-hook 'dired-after-readin-hook #'dired-k-no-revert)) - + (advice-add #'dired-k--highlight :around #'+dired*dired-k-highlight))