refactor(dired): dirvish-hide-details
Prior to this, I used window-width to determine whether file details should be hidden, but there was a jarring delay on `dirvish-setup-hook` that made the effect look awful (especially when walking up and down file trees). This changes `dirvish-hide-details` to accept a list of contexts where it should be enabled, which I think is more elegant. Of course, `dirvish-hide-details` will fall back on old behavior if set to `t` or `nil`. I'll consider upstreaming it later (and perhaps doing similar for `dirvish-hide-cursor`). Ref: #6760
This commit is contained in:
parent
d4ad14b75d
commit
ddfb0cc3cc
1 changed files with 21 additions and 11 deletions
|
@ -105,17 +105,27 @@ Fixes #3939: unsortable dired entries on Windows."
|
|||
(setq dirvish-subtree-always-show-state t)
|
||||
(appendq! dirvish-attributes '(nerd-icons subtree-state)))
|
||||
|
||||
;; HACK: Doom will treat an integer value for `dirvish-hide-details' to mean
|
||||
;; hide file/dir details if window is less than N characters wide (e.g. for
|
||||
;; side windows or small full-window layouts).
|
||||
(setq dirvish-hide-details 50)
|
||||
;; TODO: Proc this hook sooner. The delay on `dirvish-setup-hook' is jarring.
|
||||
(add-hook! 'dirvish-setup-hook
|
||||
(defun +dired-hide-details-in-side-mode-h ()
|
||||
(when (integerp dirvish-hide-details)
|
||||
(dired-hide-details-mode
|
||||
(if (< (window-width dirvish--selected-window) dirvish-hide-details)
|
||||
+1 -1)))))
|
||||
;; HACK: Makes `dirvish-hide-details' accept a list of symbols to instruct
|
||||
;; Dirvish in what contexts `dirvish-hide-details' should be enabled. The
|
||||
;; accepted values are:
|
||||
;; - `dired': when opening a directory directly or w/o Dirvish's full UI.
|
||||
;; - `dirvish': when opening full-frame Dirvish.
|
||||
;; - `dirvish-side': when opening Dirvish in the sidebar.
|
||||
;; REVIEW: Upstream this behavior later. (Maybe with similar treatment for
|
||||
;; `dirvish-hide-cursor'?)
|
||||
(setq dirvish-hide-details '(dirvish dirvish-side))
|
||||
(defadvice! +dired--hide-details-maybe-a (fn &rest args)
|
||||
:around #'dirvish-init-dired-buffer
|
||||
(let ((dirvish-hide-details
|
||||
(if (listp dirvish-hide-details)
|
||||
(cond ((if dirvish--this (memq 'side (dv-type dirvish--this)))
|
||||
(memq 'dirvish-side dirvish-hide-details))
|
||||
((or (null dirvish--this)
|
||||
(null (car (dv-layout dirvish--this))))
|
||||
(memq 'dired dirvish-hide-details))
|
||||
((memq 'dirvish dirvish-hide-details)))
|
||||
dirvish-hide-details)))
|
||||
(apply fn args)))
|
||||
|
||||
(when (modulep! :ui tabs)
|
||||
(after! centaur-tabs
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue