init-dired.el (3708B)
1 ;;; init-dired.el --- dired & dirvish -*-lexical-binding: t -*- 2 3 ;;; Commentary: 4 5 ;;; Code: 6 7 (my-use-package dired 8 :straight nil 9 :config 10 (when *is-mac* 11 (setq insert-directory-program "gls" 12 dired-use-ls-dired t)) 13 (setq dired-dwim-target t 14 dired-listing-switches 15 "-l --almost-all --human-readable --group-directories-first --no-group" 16 dired-switches-in-mode-line 0 17 dired-recursive-deletes 'always 18 dired-recursive-copies 'always 19 dired-mouse-drag-files t 20 mouse-drag-and-drop-region-cross-program t 21 dired-kill-when-opening-new-dired-buffer nil 22 dired-auto-revert-buffer t 23 dired-create-destination-dirs 'ask 24 dired-create-destination-dirs-on-trailing-dirsep t 25 remote-file-name-inhibit-delete-by-moving-to-trash t) 26 (put 'dired-find-alternate-file 'disabled nil)) 27 28 ;; dirvish 29 (my-use-package dirvish 30 :hook 31 (dired-load . dirvish-override-dired-mode) 32 :init 33 (defun my-dirvish-layout-toggle () 34 "Toggle layout using the first recipe in `dirvish-layout-recipes' instead of 35 the hardcoded fallback recipe." 36 (interactive) 37 (let ((dv (or (dirvish-curr) (user-error "Not a dirvish buffer")))) 38 (unless (dv-curr-layout dv) 39 (aset dv (cl-struct-slot-offset 'dirvish 'ff-layout) 40 (car dirvish-layout-recipes))) 41 (dirvish-layout-toggle))) 42 43 :config 44 (if *is-android* 45 (setq dirvish-default-layout nil 46 dirvish-layout-recipes '((0 0 0.6)) 47 dirvish-hide-details t) 48 (setq dirvish-default-layout nil 49 dirvish-layout-recipes '((1 0.15 0.45)) 50 dirvish-hide-details '(dirvish dirvish-side))) 51 52 (setq dirvish-use-mode-line nil 53 dirvish-mode-line-format '(:left (sort omit symlink) :right (free-space index)) 54 dirvish-attributes '(file-time file-size) 55 dirvish-yank-sources 'session 56 dirvish-hide-cursor nil)) 57 58 ;; gitignore 59 (my-use-package dired-gitignore 60 :after dirvish-vc transient 61 :demand t 62 :config 63 (transient-define-suffix dirvish-toggle-gitignore () 64 "Toggle `dired-gitignore-mode' in current Dirvish buffer." 65 :description 66 (lambda () 67 (format "Gitignore filter (%s)" 68 (if dired-gitignore--global-mode-active 69 (propertize "+" 'face 'transient-argument) 70 (propertize "-" 'face 'transient-inactive-argument)))) 71 :transient t 72 (interactive) 73 (dired-gitignore-global-mode)) 74 75 (transient-append-suffix 'dirvish-vc-menu "v" 76 '("i" dirvish-toggle-gitignore))) 77 78 ;; trashed 79 (my-use-package trashed (not *is-mac*) 80 :commands trashed 81 :config 82 (setq trashed-action-confirmer 'y-or-n-p 83 trashed-use-header-line t 84 trashed-sort-key '("Date deleted" . t) 85 trashed-date-format "%Y-%m-%d %H:%M:%S")) 86 87 ;; dired-rsync 88 (my-use-package dired-rsync 89 :config 90 (setq dired-rsync-options "-az -e ssh") 91 92 (defconst my-dired-rsync--mode-line-construct 93 '(:eval (propertize dired-rsync-modeline-status 94 'face 'dired-async-mode-message))) 95 96 (unless (member my-dired-rsync--mode-line-construct 97 (default-value 'mode-line-format)) 98 (setq-default mode-line-format 99 (cons my-dired-rsync--mode-line-construct 100 (default-value 'mode-line-format))))) 101 102 ;; mount disk 103 (my-use-package debase *is-linux* 104 :straight 105 (debase :type git 106 :host codeberg 107 :repo "emacs-weirdware/debase")) 108 109 (my-use-package discomfort *is-linux* 110 :commands discomfort 111 :straight 112 (discomfort :type git 113 :host codeberg 114 :repo "emacs-weirdware/discomfort")) 115 116 (provide 'init-dired) 117 ;;; init-dired.el ends here