Function: dirvish--build-layout
dirvish--build-layout is a natively compiled function defined in
dirvish.el.
Signature
(dirvish--build-layout DV)
Documentation
Build layout for Dirvish session DV.
Source Code
;; Defined in /nix/store/1gijwny2yx4fggrsb9l110h1ybs1gdk5-emacs-packages-deps/share/emacs/site-lisp/elpa/dirvish-20260725.1520/dirvish.el
(defun dirvish--build-layout (dv)
"Build layout for Dirvish session DV."
(let* ((layout (dv-curr-layout dv)) (conf (dv-winconf dv))
(w-args `((preview (side . right) (window-width . ,(nth 2 layout)))
(header (side . above) (window-height . -2)
(window-parameters . ((no-other-window . t))))
(footer (side . below) (window-height . -2)
(window-parameters . ((no-other-window . t))))))
(w-order (and layout (dirvish--window-split-order)))
(window-safe-min-height 0) (window-resize-pixelwise t)
(lh (line-pixel-height)) (gui? (display-graphic-p)) sf
(mh (dirvish--mode-line-height t)) (hh (dirvish--mode-line-height t t)))
(setf (dv-index dv) (cons (dirvish-prop :root) (current-buffer)))
;; only refresh window config before creating fullframe layout
(setf (dv-winconf dv) (when layout (or conf (current-window-configuration))))
(and (not layout) (setq sf (dv-size-fixed dv)) (setq window-size-fixed sf))
(when layout (dirvish--init-special-buffers dv))
(dirvish--setup-mode-line dv)
(when w-order (let ((ignore-window-parameters t)) (delete-other-windows)))
(when (or (dv-curr-layout dv) (dv-dedicated dv))
(set-window-dedicated-p nil t))
;; ensure a positive fringe on both sides for `dirvish-subtree' (#311)
(set-window-fringes nil (1+ dirvish-window-fringe) 1)
(dolist (pane w-order)
(let* ((buf (dirvish--special-buffer pane dv (eq pane 'preview)))
(args (alist-get pane w-args))
(win (display-buffer buf `(dirvish--display-buffer . ,args))))
(pcase pane
('preview (setf (dv-preview-window dv) win))
('header (when (and gui? (> hh lh)) (fit-window-to-buffer win 2 1)))
('footer (when (and gui? (> mh lh)) (fit-window-to-buffer win 2 1))))
(unless (eq pane 'preview) (set-window-dedicated-p win t))
(set-window-buffer win buf)))
(dirvish--create-parent-windows dv)
(dirvish--run-with-delay 'reset) ; preview initialization
(dirvish--maybe-toggle-cursor)
(dirvish--maybe-toggle-details)))