Go to the first, previous, next, last section, table of contents.


Changing the Size of a Window

The window size functions fall into two classes: high-level commands that change the size of windows and low-level functions that access window size. Emacs does not permit overlapping windows or gaps between windows, so resizing one window affects other windows.

Command: enlarge-window size &optional horizontal
This function makes the selected window size lines taller, stealing lines from neighboring windows. It takes the lines from one window at a time until that window is used up, then takes from another. If a window from which lines are stolen shrinks below window-min-height lines, that window disappears.

If horizontal is non-nil, this function makes window wider by size columns, stealing columns instead of lines. If a window from which columns are stolen shrinks below window-min-width columns, that window disappears.

If the requested size would exceed that of the window's frame, then the function makes the window occupy the entire height (or width) of the frame.

If size is negative, this function shrinks the window by -size lines or columns. If that makes the window smaller than the minimum size (window-min-height and window-min-width), enlarge-window deletes the window.

enlarge-window returns nil.

Command: enlarge-window-horizontally columns
This function makes the selected window columns wider. It could be defined as follows:

(defun enlarge-window-horizontally (columns)
  (enlarge-window columns t))

Command: shrink-window size &optional horizontal
This function is like enlarge-window but negates the argument size, making the selected window smaller by giving lines (or columns) to the other windows. If the window shrinks below window-min-height or window-min-width, then it disappears.

If size is negative, the window is enlarged by -size lines or columns.

Command: shrink-window-horizontally columns
This function makes the selected window columns narrower. It could be defined as follows:

(defun shrink-window-horizontally (columns)
  (shrink-window columns t))

Command: shrink-window-if-larger-than-buffer window
This command shrinks window to be as small as possible while still showing the full contents of its buffer--but not less than window-min-height lines.

However, the command does nothing if the window is already too small to display the whole text of the buffer, or if part of the contents are currently scrolled off screen, or if the window is not the full width of its frame, or if the window is the only window in its frame.

The following two variables constrain the window-size-changing functions to a minimum height and width.

User Option: window-min-height
The value of this variable determines how short a window may become before it is automatically deleted. Making a window smaller than window-min-height automatically deletes it, and no window may be created shorter than this. The absolute minimum height is two (allowing one line for the mode line, and one line for the buffer display). Actions that change window sizes reset this variable to two if it is less than two. The default value is 4.

User Option: window-min-width
The value of this variable determines how narrow a window may become before it is automatically deleted. Making a window smaller than window-min-width automatically deletes it, and no window may be created narrower than this. The absolute minimum width is one; any value below that is ignored. The default value is 10.


Go to the first, previous, next, last section, table of contents.