From ebb5c9e4984a7cc6c55ffe08489f95268b77f642 Mon Sep 17 00:00:00 2001 From: luxick Date: Wed, 19 Jun 2024 15:12:18 +0200 Subject: [PATCH] Further config for dired --- README.org | 69 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 27 deletions(-) diff --git a/README.org b/README.org index 8e5107f..1d0576d 100644 --- a/README.org +++ b/README.org @@ -80,35 +80,50 @@ Emacs sure loves to clutter directories with backup files. Configure dired to only use one buffer. #+BEGIN_SRC emacs-lisp (setf dired-kill-when-opening-new-dired-buffer t) - (eval-after-load "dired" - '(progn - (defadvice dired-advertised-find-file (around dired-subst-directory activate) - "Replace current buffer if file is a directory." - (interactive) - (let* ((orig (current-buffer)) - ;; (filename (dired-get-filename)) - (filename (dired-get-filename t t)) - (bye-p (file-directory-p filename))) - ad-do-it - (when (and bye-p (not (string-match "[/\\\\]\\.$" filename))) - (kill-buffer orig)))))) + (setq dired-listing-switches "-laGh1v --group-directories-first") + + (setq dired-omit-files + (rx (or (seq bol (? ".") "#") ;; emacs autosave files + (seq bol "." (not (any "."))) ;; dot-files + (seq "~" eol) ;; backup-files + (seq bol "CVS" eol) ;; CVS dirs + ))) + + (defun my-dired-init () + "to be run as hook for `dired-mode'." + (interactive) + + (define-key dired-mode-map (kbd ".") #'dired-prev-dirline) + (define-key dired-mode-map (kbd ",") #'dired-next-dirline) + + (define-key dired-mode-map (kbd "1") #'dired-do-shell-command) + (define-key dired-mode-map (kbd "6") #'dired-up-directory) + (define-key dired-mode-map (kbd "9") #'dired-hide-details-mode) + + (define-key dired-mode-map (kbd "b") #'dired-do-byte-compile) + + (define-key dired-mode-map (kbd "`") #'dired-flag-backup-files) + + (define-key dired-mode-map (kbd "e") nil) + (define-key dired-mode-map (kbd "e c") #'dired-do-copy) + (define-key dired-mode-map (kbd "e d") #'dired-do-delete) + (define-key dired-mode-map (kbd "e g") #'dired-mark-files-containing-regexp) + (define-key dired-mode-map (kbd "e h") #'dired-hide-details-mode) + (define-key dired-mode-map (kbd "e m") #'dired-mark-files-regexp) + (define-key dired-mode-map (kbd "e n") #'dired-create-directory) + (define-key dired-mode-map (kbd "e r") #'dired-do-rename) + (define-key dired-mode-map (kbd "e u") #'dired-unmark-all-marks) + + (dired-hide-details-mode 1) + (dired-omit-mode 1)) + + (add-hook 'dired-mode-hook 'my-dired-init) (eval-after-load "dired" - ;; don't remove `other-window', the caller expects it to be there - '(defun dired-up-directory (&optional other-window) - "Run Dired on parent directory of current directory." - (interactive "P") - (let* ((dir (dired-current-directory)) - (orig (current-buffer)) - (up (file-name-directory (directory-file-name dir)))) - (or (dired-goto-file (directory-file-name dir)) - ;; Only try dired-goto-subdir if buffer has more than one dir. - (and (cdr dired-subdir-alist) - (dired-goto-subdir up)) - (progn - (kill-buffer orig) - (dired up) - (dired-goto-file dir)))))) + '(progn + (define-key dired-mode-map (kbd "RET") 'dired-find-alternate-file) ; was dired-advertised-find-file + (define-key dired-mode-map (kbd "^") (lambda () (interactive) (find-alternate-file ".."))) ; was dired-up-directory + )) #+END_SRC ** Other Settings