Next: , Previous: , Up: Windows   [Contents][Index]


38.5 Cyclic Ordering of Windows

When you use the command C-x o (other-window) to select the next window, it moves through all the windows on the screen in a specific cyclic order. For any given configuration of windows, this order never varies. It is called the cyclic ordering of windows.

This ordering generally goes from top to bottom, and from left to right. But it may go down first or go right first, depending on the order in which the windows were split.

If the first split was vertical (into windows one above each other), and then the subwindows were split horizontally, then the ordering is left to right in the top of the frame, and then left to right in the next lower part of the frame, and so on. If the first split was horizontal, the ordering is top to bottom in the left part, and so on. In general, within each set of siblings at any level in the window tree, the order is left to right, or top to bottom.

Function: next-window &optional window minibuf which-frames which-devices

This function returns the window following window in the cyclic ordering of windows. This is the window that C-x o would select if typed when window is selected. If window is the only window visible, then this function returns window. If omitted, window defaults to the selected window.

The value of the argument minibuf determines whether the minibuffer is included in the window order. Normally, when minibuf is nil, the minibuffer is included if it is currently active; this is the behavior of C-x o. (The minibuffer window is active while the minibuffer is in use. See Minibuffers.)

If minibuf is t, then the cyclic ordering includes the minibuffer window even if it is not active.

If minibuf is neither t nor nil, then the minibuffer window is not included even if it is active.

By default, only the windows in the selected frame are considered. The optional argument which-frames changes this behavior. Here are the possible values and their meanings:

nil

Consider all the windows in window’s frame, plus the minibuffer used by that frame even if it lies in some other frame.

t

Consider all windows in all existing frames.

visible

Consider all windows in all visible frames. (To get useful results, you must ensure window is in a visible frame.)

0

Consider all windows in all visible or iconified frames.

frame

Consider all windows on frame frame.

anything else

Consider precisely the windows in window’s frame, and no others.

The optional argument which-devices further clarifies on which devices to search for frames as specified by which-frames. This value is only meaningful if which-frames is non-nil.

nil

Consider all devices on the selected console.

device

Consider only the one device device.

console

Consider all devices on console.

device-type

Consider all devices with device type device-type.

window-system

Consider all devices on window system consoles.

anything else

Consider all devices without restriction.

If you use consistent values for minibuf, which-frames, and which-devices, you can use next-window to iterate through the entire cycle of acceptable windows, eventually ending up back at the window you started with. previous-window traverses the same cycle, in the reverse order.

This example assumes there are two windows, both displaying the buffer ‘windows.texi’:

(selected-window)
     ⇒ #<window 56 on windows.texi>
(next-window (selected-window))
     ⇒ #<window 52 on windows.texi>
(next-window (next-window (selected-window)))
     ⇒ #<window 56 on windows.texi>
Function: previous-window &optional window minibuf which-frames which-devices

This function returns the window preceding window in the cyclic ordering of windows. The other arguments specify which windows to include in the cycle, as in next-window.

Command: other-window count &optional which-frames which-devices

This function selects the countth following window in the cyclic order. If count is negative, then it selects the -countth preceding window. It returns nil.

In an interactive call, count is the numeric prefix argument.

The other arguments specify which windows to include in the cycle, as in next-window.

Function: walk-windows function &optional minibuf which-frames which-devices

This function cycles through all windows, calling function once for each window with the window as its sole argument.

The other arguments specify which windows to cycle through, as in next-window.


Next: , Previous: , Up: Windows   [Contents][Index]