diff --git a/modules/emacs/dired/config.el b/modules/emacs/dired/config.el index b8d92af1c..1efad9213 100644 --- a/modules/emacs/dired/config.el +++ b/modules/emacs/dired/config.el @@ -72,21 +72,39 @@ :after dired :init ;; set up image-dired to allow picture resize - (setq image-dired-dir (concat doom-cache-dir "image-dir")) + (setq image-dired-dir (concat doom-cache-dir "image-dir") + ranger-override-dired t) :config (unless (file-directory-p image-dired-dir) (make-directory image-dired-dir)) (set-popup-rule! "^\\*ranger" :ignore t) - (setq ranger-override-dired t - ranger-cleanup-on-disable t - ranger-omit-regexp "^\.DS_Store$" + (defun +dired*cleanup-header-line () + "Ranger fails to clean up `header-line-format' when it is closed, so..." + (dolist (buffer (buffer-list)) + (when (buffer-live-p buffer) + (with-current-buffer buffer + (when (equal header-line-format '(:eval (ranger-header-line))) + (setq header-line-format nil)))))) + (advice-add #'ranger-revert :before #'+dired*cleanup-header-line) + + (defun +dired*cleanup-mouse1-bind () + "Ranger binds an anonymous function to mouse-1 after previewing a buffer +that prevents the user from escaping the window with the mouse. This command is +never cleaned up if the buffer already existed before ranger was initialized, so +we have to clean it up ourselves." + (when (window-live-p ranger-preview-window) + (with-current-buffer (window-buffer ranger-preview-window) + (local-unset-key [mouse-1])))) + (advice-add #'ranger-setup-preview :after #'+dired*cleanup-mouse1-bind) + + (setq ranger-cleanup-on-disable t ranger-excluded-extensions '("mkv" "iso" "mp4") - ranger-deer-show-details nil + ranger-deer-show-details t ranger-max-preview-size 10 ranger-show-literal nil - dired-omit-verbose nil)) + ranger-hide-cursor nil)) (def-package! all-the-icons-dired