Further config for dired

This commit is contained in:
2024-06-19 15:12:18 +02:00
parent 90e5821402
commit ebb5c9e498

View File

@@ -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