.emacs.d

the most bloated Emacs config on this planet
git clone https://git.trogloxene.org/.emacs.d.git
Log | Files | Refs

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