Run dired
with C-x d
.
;;; 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")
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)))
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)))
Hit /
to filter in dired buffers.
(use-package dired-filter
:defer 1
:after dired
:delight " drf")
Highlighting in dired buffers.
(use-package diredfl
:defer 1
:after dired
:config
(diredfl-global-mode)
:functions (diredfl-global-mode))
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)))
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))
(provide 'wal-dired)
;;; wal-dired.el ends here