Homepage: https://www.emacswiki.org/emacs/download/autofit-frame.el
Author: Drew Adams
Updated:
Automatically resize one-window frames to fit
Automatically resize one-window frames to fit.
Functions are provided here to automatically resize each frame to
fit its selected window, when there is no other window in the
frame. Some standard Emacs primitive functions are redefined to
do this: `display-buffer' (prior to Emacs 23 only),
`switch-to-buffer', and `pop-to-buffer' (prior to Emacs 23 only).
Prior to Emacs 23, automatic frame resizing is also provided here
implicitly for functions `switch-to-buffer-other-window' and
`switch-to-buffer-other-frame', since they ultimately use
`display-buffer', and so the version of it defined here. (Command
`switch-to-buffer' does not use `display-buffer' - it is redefined
separately here, for all Emacs versions.)
Put the following in your Emacs initialization file (`~/.emacs'),
in order to provide for automatic frame resizing:
(require 'autofit-frame)
(add-hook 'after-make-frame-functions 'fit-frame)
The second line here causes newly created frames to be fitted to
their buffer (window). Even if you load `auto-fit-frames.el', you
will still need to do this, because `display-buffer' and so on are
not called when a new frame is created.
To automatically fit frames that show a temporary buffer in their
sole window, add this to your initialization file also:
(add-hook 'temp-buffer-show-hook ; Emacs < 24.4
'fit-frame-if-one-window 'append)
(add-hook 'temp-buffer-window-show-hook ; Emacs 24.4+
'fit-frame-if-one-window 'append)
User option (variable) `autofit-frames-flag' turns on and off the
automatic resizing defined here. Setting it to nil turns it off:
(setq autofit-frames-flag nil). You can also bind it to nil to
temporarily inhibit frame resizing in Lisp code:
(let ((autofit-frames-flag nil))...)
New user option (variable) defined here: `autofit-frames-flag'.
New function defined here (useful as a `temp-buffer-show-hook'):
`fit-frame-if-one-window'.
***** NOTE: The following function defined in `window.el' has been
REDEFINED HERE:
`window--display-buffer-1' (Emacs 23+) -
Resize frame to fit sole window if `autofit-frames-flag'.
***** NOTE: The following EMACS PRIMITIVES are REDEFINED HERE:
`display-buffer' (prior to Emacs 23 only) -
1) Use `read-buffer' in interactive spec.
2) Resize frame to fit sole window if `autofit-frames-flag'
(and provided buffer was not yet displayed).
3) Raise the frame.
4) Restore point in buffer - fixes unknown Emacs 22 bug.
`pop-to-buffer' (prior to Emacs 23 only) -
Use the `display-buffer' defined here.
`switch-to-buffer' (all Emacs versions) -
1) Use `read-buffer' in interactive spec.
2) If current window is dedicated, then use another window.
3) Resize frame to fit sole window if `autofit-frames-flag'
(unless BUFFER is already the `current-buffer').
This file loads file `fit-frame.el', which provides the main
functionality behind the automatic frame resizing. See it for
user options to do such things as customize default frame sizes.
The reason for separating the code here from that in
`fit-frame.el' is to let you load that code but not load the code
here, if you do not want to redefine Emacs primitives.
This file was formerly called `shrink-fit-all.el', then
`auto-resize-frames.el'.
See also these files for other frame commands:
`doremi-frm.el' - Incrementally adjust frame properties
using arrow keys and/or mouse wheel.
`frame-cmds.el' - Miscellaneous frame and window commands.
`thumb-frm.el' - Shrink frames to a thumbnail size and
restore them again.
`zoom-frm.el' - Zoom a frame, so that its font becomes
larger or smaller.