[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/dirvish 4c78097248 1/2: fix(core): prevent mode-line got c
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/dirvish 4c78097248 1/2: fix(core): prevent mode-line got cut off in fullframe state |
Date: |
Sat, 22 Mar 2025 01:00:42 -0400 (EDT) |
branch: elpa/dirvish
commit 4c78097248597cbf93374190204aeaf89a18e510
Author: Alex Lu <hellosimon1103@hotmail.com>
Commit: Alex Lu <hellosimon1103@hotmail.com>
fix(core): prevent mode-line got cut off in fullframe state
The *window-safe-min-height* and *window-resize-pixelwise* usage here is
pretty
hacky, so this might be removed in the future.
---
dirvish.el | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/dirvish.el b/dirvish.el
index 0257310150..277c11f0a1 100644
--- a/dirvish.el
+++ b/dirvish.el
@@ -994,6 +994,11 @@ If HEADER, the format is used for `header-line-format'."
,(ceiling (* scale len-r))))))
str-r)))))
+(defun dirvish--mode-line-height (fullframe &optional header)
+ "Get mode/header-line (when HEADER) height in single pane or FULLFRAME."
+ (let ((hv (if header dirvish-header-line-height dirvish-mode-line-height)))
+ (cond ((numberp hv) hv) (fullframe (cdr hv)) (t (car hv)))))
+
;; Thanks to `doom-modeline'.
(defun dirvish--mode-line-bar-img (fullframe-p header)
"Create a bar image with height of `dirvish-mode-line-height'.
@@ -1001,9 +1006,8 @@ If FULLFRAME-P, use the `cdr' of the value as height,
otherwise
use `car'. If HEADER, use `dirvish-header-line-height' instead."
(when (and (display-graphic-p) (image-type-available-p 'pbm)
(numberp dirvish-mode-line-bar-image-width))
- (let* ((hv (if header dirvish-header-line-height dirvish-mode-line-height))
- (ht (cond ((numberp hv) hv) (fullframe-p (cdr hv)) (t (car hv))))
- (wd dirvish-mode-line-bar-image-width))
+ (let ((ht (dirvish--mode-line-height fullframe-p header))
+ (wd dirvish-mode-line-bar-image-width))
(propertize
" " 'display
(ignore-errors
@@ -1351,7 +1355,10 @@ Dirvish sets `revert-buffer-function' to this function."
(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))) util-windows)
+ (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))
+ (mh (dirvish--mode-line-height t)) (hh (dirvish--mode-line-height t
t)))
(setf (dv-index dv) (cons (dirvish-prop :root) (current-buffer)))
;; only record window config before creating fullframe layout
(setf (dv-winconf dv) (when layout (or conf
(current-window-configuration))))
@@ -1369,13 +1376,12 @@ Dirvish sets `revert-buffer-function' to this function."
(let* ((buf (dirvish--special-buffer pane dv (eq pane 'preview)))
(args (alist-get pane w-args))
(win (display-buffer buf `(dirvish--display-buffer . ,args))))
- (cond ((eq pane 'preview) (setf (dv-preview-window dv) win))
- (t (set-window-dedicated-p win t) (push win util-windows)))
+ (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))))
(set-window-buffer win buf)))
(dirvish--create-parent-windows dv)
- (when (and (display-graphic-p) (> emacs-major-version 28))
- (let ((window-safe-min-height 0) (window-resize-pixelwise t))
- (dolist (win util-windows) (fit-window-to-buffer win 2 1))))
(unless (dirvish-prop :cached)
(dirvish--dir-data-async default-directory (current-buffer))
(dirvish-prop :cached t))