dotfiles/.config/emacs/lisp/init-dired.el
2024-09-04 10:41:46 +09:00

93 lines
2.2 KiB
EmacsLisp

;;; init-dired.el -*- lexical-binding: t -*-
(require 'init-const)
(require 'init-funcs)
;; Directory operations
(use-package dired
:ensure nil ; built-in
:hook (dired-mode . dired-omit-mode)
:general
(:keymaps 'dired-mode-map
"C-c C-p" 'wdired-change-to-wdired-mode
"C-c C-r" 'dired-rsync)
:custom (dired-omit-files (rx (seq bol ".")))
: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")
(if (executable-find "fd")
(evil-collection-define-key 'normal 'dired-mode-map
"f" 'fd-dired)
(evil-collection-define-key 'normal 'dired-mode-map
"f" 'find-dired))
(evil-collection-define-key 'normal 'dired-mode-map
"." 'dired-omit-mode
"h" 'dired-single-up-directory
"l" 'dired-single-buffer
")" 'dired-git-info-mode
"s" 'hydra-dired-quick-sort/body))
;; 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))
;; 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)
;; Colorful dired
(use-package diredfl
:straight t
:ensure 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 ; built-in package
:ensure nil)
(use-package dired-single
:straight t
:ensure t
:defer t
:commands (dired dired-jump))
;; `find-dired' alternative using `fd'
(when (executable-find "fd")
(use-package fd-dired
:straight t
:ensure t
:defer t))
(provide 'init-dired)
;;; init-dired.el ends here