dotfiles/.config/emacs/lisp/init-dired.el

86 lines
2.1 KiB
EmacsLisp

;;; init-dired.el -*- lexical-binding: t -*-
(require 'init-const)
(require 'init-funcs)
;; Directory operations
(use-package dired
:ensure nil ; built-in
:general
(:keymaps 'dired-mode-map
"C-c C-p" 'wdired-change-to-wdired-mode)
:config
;; Guess a default target directory
(setq dired-dwim-target t)
;; Always delete and copy recursively
(setq dired-recursive-deletes 'always
dired-recursive-copies 'always)
;; Show directory first
(setq dired-listing-switches "-alh --group-directories-first"))
;; Quick sort dired buffers via hydra
(use-package dired-quick-sort
:straight t
:ensure t
:defer t
:hook (after-init . dired-quick-sort-setup)
:init
(setq dired-quick-sort-suppress-setup-warning t)
:config
(evil-collection-define-key 'normal 'dired-mode-map
"s" 'hydra-dired-quick-sort/body))
;; Show git info in dired
(use-package dired-git-info
:straight t
:ensure t
:defer t)
;; Allow rsync from dired buffers
(use-package dired-rsync
:straight t
:ensure t
:defer t
:bind (:map dired-mode-map
("C-c C-r" . dired-rsync)))
;; Colorful dired
(use-package diredfl
:straight t
:ensure t
:defer t
:hook (dired-mode . diredfl-mode))
;; Shows icons
(use-package nerd-icons-dired
:straight t
:ensure t
:diminish
:commands nerd-icons-dired-mode
:custom-face
(nerd-icons-dired-dir-face ((t (:inherit nerd-icons-dsilver :foreground unspecified))))
:hook (dired-mode . nerd-icons-dired-mode))
;; Extra Dired functionality
(use-package dired-aux :ensure nil)
(use-package dired-single
:commands (dired dired-jump))
(use-package dired-hide-dotfiles
:hook (dired-mode) ;; hide default when dired-mode enabled.
:config
(evil-collection-define-key 'normal 'dired-mode-map
"H" 'dired-hide-dotfiles-mode))
(evil-collection-define-key 'normal 'dired-mode-map
"h" 'dired-single-up-directory
"l" 'dired-single-buffer
")" 'dired-git-info-mode)
;; `find-dired' alternative using `fd'
;; (when (executable-find "fd")
;; (use-package fd-dired))
(provide 'init-dired)
;;; init-dired.el ends here