emacs/dired: fix ranger oddities

Added two hacks to fix two obnoxious issues Ranger has, having to do
with it failing to clean up after itself. In particular:

1. A left over mouse-1 bind that traps focus in a particular
   window (easy to get around with keyboard-based window switch
   commands, but this renders the mouse useless),

2. And the lingering ranger header bar (i.e. it doesn't clean up
   header-line-format).

This commit also ensures Deer overrides dired if +ranger is enabled.
This commit is contained in:
Henrik Lissner 2019-05-20 20:04:34 -04:00
parent e76765e0b8
commit ed69d580fb
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -72,21 +72,39 @@
:after dired :after dired
:init :init
;; set up image-dired to allow picture resize ;; 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 :config
(unless (file-directory-p image-dired-dir) (unless (file-directory-p image-dired-dir)
(make-directory image-dired-dir)) (make-directory image-dired-dir))
(set-popup-rule! "^\\*ranger" :ignore t) (set-popup-rule! "^\\*ranger" :ignore t)
(setq ranger-override-dired t (defun +dired*cleanup-header-line ()
ranger-cleanup-on-disable t "Ranger fails to clean up `header-line-format' when it is closed, so..."
ranger-omit-regexp "^\.DS_Store$" (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-excluded-extensions '("mkv" "iso" "mp4")
ranger-deer-show-details nil ranger-deer-show-details t
ranger-max-preview-size 10 ranger-max-preview-size 10
ranger-show-literal nil ranger-show-literal nil
dired-omit-verbose nil)) ranger-hide-cursor nil))
(def-package! all-the-icons-dired (def-package! all-the-icons-dired