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'.
This commit is contained in:
parent
1540481850
commit
939dc2ff12
2 changed files with 30 additions and 27 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue