Skip to content

Latest commit

 

History

History
209 lines (159 loc) · 4.58 KB

wal-dired.org

File metadata and controls

209 lines (159 loc) · 4.58 KB

Dired

Run dired with C-x d.

Header

;;; wal-dired.el --- Dired. -*- lexical-binding: t -*-

;;; Commentary:
;;
;; Provide Dired packages.

;;; Code:

(eval-when-compile
  (require 'wal-useful nil t)
  (require 'wal-package nil t)
  (require 'wal-bridge nil t))

(declare-function dired-read-dir-and-switches "ext:dired.el")
(declare-function consult--buffer-query "ext:consult.el")
(declare-function consult--buffer-state "ext:consult.el")
(declare-function wal-insert "wal-useful.el")
(declare-function wal-key-combo-for-leader "wal-key-bindings.el")

Packages

dired

The mother of all buffers. You don’t need no tree views. This adds a custom consult buffer source.

(defun wal-dired-from-home (dirname &optional switches)
  "Find DIRNAME local to HOME directory.
Uses the same optional SWITCHES."
  (interactive
    (let ((default-directory (expand-file-name "~/")))

      (dired-read-dir-and-switches "")))

  (pop-to-buffer-same-window (dired-noselect dirname switches)))

(defun wal-image-dired ()
  "Run `image-dired' in the `default-directory'."
  (interactive)

  (image-dired (expand-file-name default-directory)))

(defun wal-dired-buffer-p (buffer)
  "Check if buffer BUFFER is a Dired buffer."
  (with-current-buffer buffer
    (derived-mode-p 'dired-mode)))

(defun wal-consult-dired-buffer--query ()
  "Get Dired buffer names."
  (consult--buffer-query
   :sort 'visibility
   :as #'buffer-name
   :predicate #'wal-dired-buffer-p))

(use-package dired
  :hook ((dired-mode . dired-hide-details-mode))

  :config
  ;; We aren't scared of finding alternate files.
  (put 'dired-find-alternate-file 'disabled nil)

  (with-eval-after-load 'consult
    (defvar wal-consult--source-dired-buffer
      (list :name "Dired Buffer"
            :narrow ?d
            :category 'buffer
            :state #'consult--buffer-state
            :history 'buffer-name-history
            :face 'font-lock-keyword-face
            :hidden t
            :items #'wal-consult-dired-buffer--query))

    (wal-insert
     'consult-buffer-sources
     'consult--source-buffer
     'wal-consult--source-dired-buffer
     :quiet t))

  :custom
  (dired-listing-switches "-lah --group-directories-first")
  (dired-auto-revert-buffer #'dired-directory-changed-p)
  (dired-dwim-target t)

  :bind
  (:map dired-mode-map
   ("M-i" . dired-kill-subdir)
   ;; Replaces duplicate `dired-do-rename-regexp' binding.
   ("% r" . dired-do-query-replace-regexp)))

dired-x

Omit . and .., we have bindings for going up.

(use-package dired-x
  :hook (dired-mode . dired-omit-mode)

  :custom
  (dired-omit-verbose nil)

  :bind
  (:map dired-mode-map
   ("M-/" . dired-omit-mode)))

dired-filter

Hit / to filter in dired buffers.

(use-package dired-filter
  :defer 1
  :after dired

  :delight " drf")

diredfl

Highlighting in dired buffers.

(use-package diredfl
  :defer 1
  :after dired

  :config
  (diredfl-global-mode)

  :functions (diredfl-global-mode))

wdired

Did you know you can edit dired buffers using C-x C-q?

(use-package wdired
  :custom
  (wdired-allow-to-change-permissions t)

  :bind
  (:map wdired-mode-map
   ("C-c C-k" . wdired-abort-changes)))

all-the-icons-dired

Show file icons.

(use-package all-the-icons-dired
  :after all-the-icons

  :hook (dired-mode . all-the-icons-dired-mode)

  :init
  (advice-add
   'all-the-icons-dired-mode :before-while
   'display-graphic-p)

  :custom
  (all-the-icons-dired-monochrome nil))

Footer

(provide 'wal-dired)

;;; wal-dired.el ends here