[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 939dc2ff12: Fix 'fit-frame-to-buffer' (Bug#56102)
From: |
Martin Rudalics |
Subject: |
master 939dc2ff12: Fix 'fit-frame-to-buffer' (Bug#56102) |
Date: |
Wed, 6 Jul 2022 03:29:03 -0400 (EDT) |
branch: master
commit 939dc2ff126dbca1f1c31989f2c11a4fdc35648c
Author: Martin Rudalics <rudalics@gmx.at>
Commit: Martin Rudalics <rudalics@gmx.at>
Fix 'fit-frame-to-buffer' (Bug#56102)
* lisp/window.el (fit-frame-to-buffer-sizes): Fix doc-string.
Give calls to 'max' a second argument so they do something
useful. If ONLY equals 'vertically', call
'window-text-pixel-size' with X-LIMIT nil (Bug#56102). For
minimum sizes of the window to fit, use 'window-safe-min-size' by
default.
* doc/lispref/windows.texi (Resizing Windows): Fix descriptions of
'fit-frame-to-buffer' and 'fit-frame-to-buffer-sizes'.
---
doc/lispref/windows.texi | 20 +++++++++++---------
lisp/window.el | 37 +++++++++++++++++++------------------
2 files changed, 30 insertions(+), 27 deletions(-)
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 704ed30366..535571b316 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -1158,11 +1158,13 @@ frame to its buffer using the command
@code{fit-frame-to-buffer}.
This command adjusts the size of @var{frame} to display the contents of
its buffer exactly. @var{frame} can be any live frame and defaults to
the selected one. Fitting is done only if @var{frame}'s root window is
-live. The arguments @var{max-height}, @var{min-height}, @var{max-width}
-and @var{min-width} specify bounds on the new total size of
-@var{frame}'s root window. @var{min-height} and @var{min-width} default
-to the values of @code{window-min-height} and @code{window-min-width}
-respectively.
+live.
+
+The arguments @var{max-height}, @var{min-height}, @var{max-width} and
+@var{min-width}, if non-@code{nil}, specify bounds on the new body size
+of @var{frame}'s root window. A non-@code{nil} value specified by any
+of these arguments overrides the corresponding value specified by
+the option @code{fit-frame-to-buffer-sizes} described below.
If the optional argument @var{only} is @code{vertically}, this function
may resize the frame vertically only. If @var{only} is
@@ -1187,10 +1189,10 @@ here can be overridden for a specific frame by that
frame's
@defopt fit-frame-to-buffer-sizes
This option specifies size boundaries for @code{fit-frame-to-buffer}.
-It specifies the total maximum and minimum lines and maximum and minimum
-columns of the root window of any frame that shall be fit to its buffer.
-If any of these values is non-@code{nil}, it overrides the corresponding
-argument of @code{fit-frame-to-buffer}.
+It specifies the maximum and minimum lines and maximum and minimum
+columns of the root window's body of any frame that shall be fit to its
+buffer. Any value this option specifies will be overridden by the
+corresponding argument of @code{fit-frame-to-buffer}, if non-@code{nil}.
@end defopt
@deffn Command shrink-window-if-larger-than-buffer &optional window
diff --git a/lisp/window.el b/lisp/window.el
index a3ef2521bb..4d88ffa903 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -9179,10 +9179,11 @@ present. See also `fit-frame-to-buffer-sizes'."
(defcustom fit-frame-to-buffer-sizes '(nil nil nil nil)
"Size boundaries of frame for `fit-frame-to-buffer'.
-This list specifies the total maximum and minimum lines and
-maximum and minimum columns of the root window of any frame that
-shall be fit to its buffer. If any of these values is non-nil,
-it overrides the corresponding argument of `fit-frame-to-buffer'.
+This list specifies the total maximum and minimum numbers of
+lines and the maximum and minimum numbers of columns of the body
+of the root window of any frame that shall be fit to its buffer.
+Any value specified by ths variable will be overridden by the
+corresponding argument of `fit-frame-to-buffer', if non-nil.
On window systems where the menubar can wrap, fitting a frame to
its buffer may swallow the last line(s). Specifying an
@@ -9378,30 +9379,30 @@ for `fit-frame-to-buffer'."
(t parent-or-display-height))
;; The following is the maximum height that fits into the
;; top and bottom margins.
- (max (- bottom-margin top-margin outer-minus-body-height))))
+ (max (- bottom-margin top-margin outer-minus-body-height) 0)))
(min-height
(cond
((numberp min-height) (* min-height line-height))
((numberp (nth 1 sizes)) (* (nth 1 sizes) line-height))
- (t (window-min-size window nil nil t))))
+ (t (window-safe-min-size window nil t))))
(max-width
- (min
- (cond
- ((numberp max-width) (* max-width char-width))
- ((numberp (nth 2 sizes)) (* (nth 2 sizes) char-width))
- (t parent-or-display-width))
- ;; The following is the maximum width that fits into the
- ;; left and right margins.
- (max (- right-margin left-margin outer-minus-body-width))))
+ (unless (eq only 'vertically)
+ (min
+ (cond
+ ((numberp max-width) (* max-width char-width))
+ ((numberp (nth 2 sizes)) (* (nth 2 sizes) char-width))
+ (t parent-or-display-width))
+ ;; The following is the maximum width that fits into the
+ ;; left and right margins.
+ (max (- right-margin left-margin outer-minus-body-width) 0))))
(min-width
(cond
((numberp min-width) (* min-width char-width))
- ((numberp (nth 3 sizes)) (nth 3 sizes))
- (t (window-min-size window t nil t))))
+ ((numberp (nth 3 sizes)) (* (nth 3 sizes) char-width))
+ (t (window-safe-min-size window t t))))
;; Note: Currently, for a new frame the sizes of the header
;; and mode line may be estimated incorrectly
- (size
- (window-text-pixel-size window from to max-width max-height))
+ (size (window-text-pixel-size window from to max-width max-height))
(width (max (car size) min-width))
(height (max (cdr size) min-height)))
;; Don't change height or width when the window's size is fixed
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 939dc2ff12: Fix 'fit-frame-to-buffer' (Bug#56102),
Martin Rudalics <=