Rewrite window-resizable.
[bpt/emacs.git] / doc / lispref / windows.texi
index 2bb30dd..52ac5a5 100644 (file)
@@ -274,7 +274,7 @@ the leftmost child window for a horizontal combination.  If
 @defun window-combined-p &optional window horizontal
 This function returns a non-@code{nil} value if and only if
 @var{window} is part of a vertical combination.  If @var{window} is
-omitted or nil, it defaults to the selected one.
+omitted or @code{nil}, it defaults to the selected one.
 
 If the optional argument @var{horizontal} is non-@code{nil}, this
 means to return non-@code{nil} if and only if @var{window} is part of
@@ -542,138 +542,69 @@ function @code{window-resizable}.  @xref{Resizing Windows}.
 @cindex changing window size
 @cindex window size, changing
 
-Emacs does not permit overlapping windows or gaps between windows, so
-changing the size of a window always affects at least one other window.
-When a frame contains just one window, that window can be resized only
-by resizing the window's frame.  The functions described below are
-therefore meaningful only in the context of a frame containing at least
-two windows.  The size of the corresponding frame never changes when
-invoking a function described in this section.
-
-   The routines changing window sizes always operate in one dimension at
-a time.  This means that windows can be resized only either vertically
-or horizontally.  If a window shall be resized in both dimensions, it
-must be resized in one dimension first and in the other dimension
-afterwards.  If the second resize operation fails, the frame might end
-up in an unsatisfactory state.  To avoid such states, it might be useful
-to save the current window configuration (@pxref{Window Configurations})
-before attempting the first resize operation and restore the saved
-configuration in case the second resize operation fails.
-
-   Functions that resize windows are supposed to obey restrictions
-imposed by window minimum sizes and fixed-size windows, see @ref{Window
-Sizes}.  In order to determine whether resizing a specific window is
-possible in the first place, the following function can be used:
-
-@defun window-resizable window delta &optional horizontal ignore side noup nodown
+  This section describes functions for resizing a window without
+changing the size of its frame.  Because live windows do not overlap,
+these functions are meaningful only on frames that contain two or more
+windows: resizing a window also changes the size of a neighboring
+window.  If there is just one window on a frame, its size cannot be
+changed except by resizing the frame (@pxref{Size and Position}).
+
+  Except where noted, these functions also accept internal windows as
+arguments.  Resizing an internal window causes its child windows to be
+resized to fit the same space.
+
+@defun window-resizable window delta &optional horizontal ignore
 This function returns @var{delta} if the size of @var{window} can be
-changed vertically by @var{delta} lines.  Optional argument
-@var{horizontal} non-@code{nil} means to return @var{delta} if
-@var{window} can be resized horizontally by @var{delta} columns.  A
-return value of zero means that @var{window} is not resizable.
-
-If @var{delta} is a positive number, this means that @var{window} shall
-be enlarged by @var{delta} lines or columns.  If @var{window} cannot be
-enlarged by @var{delta} lines or columns, this function returns the
-maximum value in the range from 0 to @var{delta} by which @var{window}
-can be enlarged.
-
-If @var{delta} is a negative number, this means that @var{window} shall
-be shrunk by -@var{delta} lines or columns.  If @var{window} cannot be
-shrunk by -@var{delta} lines or columns, this function returns the
-minimum value in the range from @var{delta} to 0 that can be used for
-shrinking @var{window}.
-
-Normally, the customizable variables @code{window-min-height} and
-@code{window-min-width} specify the smallest allowable size of a
-window.  @xref{Change Window,,Deleting and Rearranging Windows,
-emacs, The GNU Emacs Manual}.  If resizing would result in making any
-window smaller than this, this function usually signals an error.
-However, if the optional argument @var{ignore} is non-@code{nil}, this
-function ignores @code{window-min-height} and @code{window-min-width},
-as well as @code{window-size-fixed}.  In that case, the minimum-height
-window consists of a header (if any), a mode line, plus a text area
-one line tall; the minimum-width window consists of any fringes,
-margins and scroll bar, plus a text area two columns wide.
-
-If @var{ignore} denotes a window, this means to ignore restrictions for
-that window only.  If @var{ignore} equals the constant @code{safe}, this
-means a live window may get as small as one line or two columns.
-
-Optional argument @var{noup} non-@code{nil} means don't go up in the
-window tree but try to steal or distribute the space needed for the
-resize operation among the other windows within @var{window}'s
-combination.  Optional argument @var{nodown} non-@code{nil} means don't
-check whether @var{window} itself and its child windows can be resized.
-@end defun
-
-The function @code{window-resizable} does not change any window sizes.
-The following function does:
+changed vertically by @var{delta} lines.  If the optional argument
+@var{horizontal} is non-@code{nil}, it instead returns @var{delta} if
+@var{window} can be resized horizontally by @var{delta} columns.  It
+does not actually change the window size.
+
+If @var{window} is @code{nil}, it defaults to the selected window.
+
+A positive value of @var{delta} means to check whether the window can be
+enlarged by that number of lines or columns; a negative value of
+@var{delta} means to check whether the window can be shrunk by that many
+lines or columns.  If @var{delta} is non-zero, a return value of 0 means
+that the window cannot be resized.
+
+Normally, the variables @code{window-min-height} and
+@code{window-min-width} specify the smallest allowable window size.
+@xref{Change Window,, Deleting and Rearranging Windows, emacs, The GNU
+Emacs Manual}.  However, if the optional argument @var{ignore} is
+non-@code{nil}, this function ignores @code{window-min-height} and
+@code{window-min-width}, as well as @code{window-size-fixed}.
+Instead, it considers the minimum-height window to be one consisting
+of a header (if any), a mode line, plus a text area one line tall; and
+a minimum-width window as one consisting of fringes, margins, and
+scroll bar (if any), plus a text area two columns wide.
+@end defun
 
 @defun window-resize window delta &optional horizontal ignore
-This function resizes @var{window} vertically by @var{delta} lines.  The
-argument @var{window} can denote an arbitrary window and defaults to the
-selected one.  An attempt to resize the root window of a frame will
-raise an error.
-
-Second argument @var{delta} a positive number means @var{window} shall
-be enlarged by @var{delta} lines.  If @var{delta} is negative, that
-means @var{window} shall be shrunk by -@var{delta} lines.
-
-Optional argument @var{horizontal} non-@code{nil} means to resize
-@var{window} horizontally by @var{delta} columns.  In this case a
-positive @var{delta} means enlarge @var{window} by @var{delta} columns.
-A negative @var{delta} means @var{window} shall be shrunk by
--@var{delta} columns.
-
-Optional argument @var{ignore} has the same meaning as for the function
-@code{window-resizable} above.
-
-This function can simultaneously move two edges of WINDOW.  Exactly
-which edges of @var{window} are moved and which other windows are
-resized along with @var{window} is determined by the splits and nest
-status of the involved windows (@pxref{Splitting Windows}).  If only the
-low (right) edge of @var{window} shall be moved, the function
-@code{adjust-window-trailing-edge} described below should be used.
-@end defun
-
-The next four commands are simple interfaces to @code{window-resize}.
-They always operate on the selected window, never delete any window, and
-always raise an error when resizing would violate a restriction imposed
-by @code{window-min-height}, @code{window-min-width}, or
-@code{window-size-fixed}.
-
-@deffn Command enlarge-window delta &optional horizontal
-This function makes the selected window @var{delta} lines taller.
-Interactively, if no argument is given, it makes the selected window one
-line taller.  If optional argument @var{horizontal} is non-@code{nil},
-it makes the selected window wider by @var{delta} columns.  If
-@var{delta} is negative, it shrinks the selected window by -@var{delta}
-lines or columns.  The return value is @code{nil}.
-@end deffn
+This function resizes @var{window} by @var{delta} increments.  If
+@var{horizontal} is @code{nil}, it changes the height by @var{delta}
+lines; otherwise, it changes the width by @var{delta} columns.  A
+positive @var{delta} means to enlarge the window, and a negative
+@var{delta} means to shrink it.
 
-@deffn Command enlarge-window-horizontally delta
-This function makes the selected window @var{delta} columns wider.
-Interactively, if no argument is given, it makes the selected window one
-column wider.
-@end deffn
+If @var{window} is @code{nil}, it defaults to the selected window.  If
+the window cannot be resized as demanded, an error is signaled.
 
-@deffn Command shrink-window delta &optional horizontal
-This function makes the selected window @var{delta} lines smaller.
-Interactively, if no argument is given, it makes the selected window one
-line smaller.  If optional argument @var{horizontal} is non-@code{nil},
-it makes the selected window narrower by @var{delta} columns.  If
-@var{delta} is negative, it enlarges the selected window by -@var{delta}
-lines or columns.  The return value is @code{nil}.
-@end deffn
+The optional argument @var{ignore} has the same meaning as for the
+function @code{window-resizable} above.
 
-@deffn Command shrink-window-horizontally delta
-This function makes the selected window @var{delta} columns narrower.
-Interactively, if no argument is given, it makes the selected window one
-column narrower.
-@end deffn
+The choice of which window edge this function alters depends on the
+splitting and nesting status of the involved windows; in some cases,
+it may alter both edges.  @xref{Splitting Windows}.  To resize by
+moving only the bottom or right edge of a window, use the function
+@code{adjust-window-trailing-edge}, below.
+@end defun
 
-The following function is useful for moving the line dividing two
+@c The commands enlarge-window, enlarge-window-horizontally,
+@c shrink-window, and shrink-window-horizontally are documented in the
+@c Emacs manual.  They are not preferred for calling from Lisp.
+
+  The following function is useful for moving the line dividing two
 windows.
 
 @defun adjust-window-trailing-edge window delta &optional horizontal
@@ -779,224 +710,66 @@ frame.  @var{window} can be any window and defaults to the selected one.
 @cindex splitting windows
 @cindex window splitting
 
-The functions described below are the primitives needed for creating a
-new window.  They do not accept a buffer as an argument.  Rather, they
-``split'' an existing window into two halves, both displaying the buffer
-previously visible in the window that was split.
+This section describes functions for creating a new window by
+@dfn{splitting} an existing one.
 
 @deffn Command split-window &optional window size side
-This function creates a new window adjacent to @var{window}.  It returns
-the new window which is always a live window.  The argument @var{window}
-can denote any window and defaults to the selected one.  This function
-does not change the selected window.
-
-Optional second argument @var{size} a positive number means make
-@var{window} @var{size} lines (or columns) tall.  If @var{size} is
-negative, make the new window @minus{}@var{size} lines (or columns)
-tall.  If @var{size} is omitted or @code{nil}, then @var{window} is
-divided evenly into two parts.  (If there is an odd line, it is
-allocated to the new window.)
-
-Normally, the customizable variables @code{window-min-height} and
-@code{window-min-width} specify the smallest allowable size of a
-window.  @xref{Change Window,,Deleting and Rearranging Windows, emacs,
-The GNU Emacs Manual}.  If splitting would result in making a window
-smaller than this, this function usually signals an error.  However,
-if @var{size} is non-@code{nil} and valid, a new window of the
-requested size is created, provided it has enough space for a text
-area one line tall and/or two columns wide.
-
-Optional third argument @var{side} @code{nil} (or @code{below})
-specifies that the new window shall be located below @var{window}.  The
-value @code{above} means the new window will be located above
-@var{window}.  In both cases @var{size} specifies the new number of
-lines for @var{window} (or the new window if @var{size} is negative)
-including space reserved for the mode and/or header line.
-
-If @var{side} is @code{t} or @code{right} the new window will be
-positioned on the right side of @var{window}.  The value @code{left}
-means the new window will be located on the left side of @var{window}.
-In both cases @var{size} specifies the new number of columns for
-@var{window} (or the new window provided @var{size} is negative)
-including space reserved for margins, fringes and the scroll bar or a
-divider column.
-
-Any other non-@code{nil} value for @var{side} is currently handled like
-@code{t} (or @code{right}).  Since this might change in the future,
-application programs should refrain from using other values.
-
-If @var{window} is live, properties of the new window like margins and
-scroll bars are inherited from @var{window}.  If @var{window} is an
-internal window, these properties, as well as the buffer shown in the
-new window, are inherited from the window selected on @var{window}'s
-frame.
-
-If @code{ignore-window-parameters} is non-@code{nil}, this function
-ignores window parameters (@pxref{Window Parameters}).  Otherwise, if
-the @code{split-window} parameter of @var{window} is @code{t}, it splits
-the window disregarding any other window parameters.  If the
-@code{split-window} parameter specifies a function, that function is
-called with the arguments @var{window}, @var{size}, and @var{side} to
-split @var{window}.  If that function is @code{ignore}, nothing is done.
+This function creates a new live window next to the window
+@var{window}.  If @var{window} is omitted or @code{nil}, it defaults
+to the selected window.  That window is ``split'', and reduced in
+size.  The space is taken up by the new window, which is returned.
+
+The optional second argument @var{size} determines the sizes of the
+@var{window} and/or the new window.  If it is omitted or @code{nil},
+both windows are given equal sizes; if there is an odd line, it is
+allocated to the new window.  If @var{size} is a positive number,
+@var{window} is given @var{size} lines (or columns, depending on the
+value of @var{side}).  If @var{size} is a negative number, the new
+window is given @minus{}@var{size} lines (or columns).
+
+If @var{size} is @code{nil}, this function obeys the variables
+@code{window-min-height} and @code{window-min-width}.  @xref{Change
+Window,,Deleting and Rearranging Windows, emacs, The GNU Emacs
+Manual}.  Thus, it signals an error if splitting would result in
+making a window smaller than those variables specify.  However, a
+non-@code{nil} value for @var{size} causes those variables to be
+ignored; in that case, the smallest allowable window is considered to
+be one that has space for a text area one line tall and/or two columns
+wide.
+
+The optional third argument @var{side} determines the position of the
+new window relative to @var{window}.  If it is @code{nil} or
+@code{below}, the new window is placed below @var{window}.  If it is
+@code{above}, the new window is placed above @var{window}.  In both
+these cases, @var{size} specifies a total window height, in lines.
+
+If @var{side} is @code{t} or @code{right}, the new window is placed on
+the right of @var{window}.  If @var{side} is @code{left}, the new
+window is placed on the left of @var{window}.  In both these cases,
+@var{size} specifies a total window width, in columns.
+
+If @var{window} is a live window, the new window inherits various
+properties from it, including margins and scroll bars.  If
+@var{window} is an internal window, the new window inherits the
+properties of the window selected within @var{window}'s frame.
+
+If the variable @code{ignore-window-parameters} is non-@code{nil}
+(@pxref{Window Parameters}), this function ignores window parameters.
+Otherwise, it consults the @code{split-window} parameter of
+@var{window}; if this is @code{t}, it splits the window disregarding
+any other window parameters.  If the @code{split-window} parameter
+specifies a function, that function is called with the arguments
+@var{window}, @var{size}, and @var{side} to split @var{window}, in
+lieu of the usual action of @code{split-window}.
 @end deffn
 
-The following example starts with one window on a screen that is 50
-lines high by 80 columns wide; then it splits the window.
-
-@smallexample
-@group
-(setq W1 (selected-window))
-     @result{} #<window 8 on windows.texi>
-(setq W2 (split-window W1 15))
-     @result{} #<window 28 on windows.texi>
-@end group
-@group
-(window-top-line W1)
-     @result{} 0
-(window-total-size W1)
-     @result{} 15
-(window-top-line W2)
-     @result{} 15
-@end group
-@end smallexample
-
-The screen looks like this:
-
-@smallexample
-@group
-         __________
-        |          |  line 0
-        |    W1    |
-        |__________|
-        |          |  line 15
-        |    W2    |
-        |__________|
-                      line 50
- column 0   column 80
-@end group
-@end smallexample
-
-Next, split the top window into two side-by-side windows:
+  As an example, we show a combination of @code{split-window} calls
+that yields the window configuration discussed in @ref{Windows and
+Frames}.  This example demonstrates splitting live windows as well as
+splitting internal windows.  We begin with a frame containing a single
+window (a live root window), which we denote by @var{W4}.  Calling
+@code{(split-window W3)} yields this window configuration:
 
-@smallexample
-@group
-(setq W3 (split-window W1 35 t))
-     @result{} #<window 32 on windows.texi>
-@end group
-@group
-(window-left-column W1)
-     @result{} 0
-(window-total-size W1 t)
-     @result{} 35
-(window-left-column W3)
-     @result{} 35
-@end group
-@end smallexample
-
-@need 3000
-Now the screen looks like this:
-
-@smallexample
-@group
-     column 35
-         __________
-        |    |     |  line 0
-        | W1 |  W3 |
-        |____|_____|
-        |          |  line 15
-        |    W2    |
-        |__________|
-                      line 50
- column 0   column 80
-@end group
-@end smallexample
-
-Normally, Emacs indicates the border between two side-by-side windows
-with a scroll bar (@pxref{Scroll Bars}), or with @samp{|} characters.  The
-display table can specify alternative border characters; see @ref{Display
-Tables}.
-
-Below we describe how @code{split-window} can be used to create the
-window configuration from our earlier example (@pxref{Windows and
-Frames}) and how internal windows are created for this purpose.  We
-start with a frame containing one live window @code{W2} (in the
-following scenarios window names are assigned in an arbitrary manner in
-order to match the names of the example).  Evaluating the form
-@code{(split-window W2 8 t)} creates a new internal window @code{W1}
-with two children---@code{W2} (the window we've split) and a new leaf
-window @code{W6}:
-@smallexample
-@group
-     ______________________________________
-    | ______  ____________________________ |
-    ||      ||                            ||
-    ||      ||                            ||
-    ||      ||                            ||
-    ||      ||                            ||
-    ||      ||                            ||
-    ||      ||                            ||
-    ||      ||                            ||
-    ||      ||                            ||
-    ||      ||                            ||
-    ||      ||                            ||
-    ||__W2__||_____________W6_____________ |
-    |__________________W1__________________|
-
-@end group
-@end smallexample
-
-Evaluating now @code{(split-window W6 -3)} creates another internal
-window @code{W3} with two children---@code{W6} and a new live window
-@code{W5}.  This leaves us with a vertically combined window @code{W3}
-embedded in the horizontally combined window @code{W1}:
-@smallexample
-@group
-     ______________________________________
-    | ______  ____________________________ |
-    ||      || __________________________ ||
-    ||      |||                          |||
-    ||      |||                          |||
-    ||      |||                          |||
-    ||      |||                          |||
-    ||      |||                          |||
-    ||      |||____________W6____________|||
-    ||      || __________________________ ||
-    ||      |||                          |||
-    ||      |||____________W5____________|||
-    ||__W2__||_____________W3_____________ |
-    |__________________W1__________________|
-
-@end group
-@end smallexample
-
-Finally, evaluating @code{(split-window W6 nil t)} should get us the
-desired configuration as depicted below.
-@smallexample
-@group
-     ______________________________________
-    | ______  ____________________________ |
-    ||      || __________________________ ||
-    ||      ||| ___________  ___________ |||
-    ||      ||||           ||           ||||
-    ||      ||||           ||           ||||
-    ||      ||||_____W6____||_____W7____||||
-    ||      |||____________W4____________|||
-    ||      || __________________________ ||
-    ||      |||                          |||
-    ||      |||____________W5____________|||
-    ||__W2__||_____________W3_____________ |
-    |__________________W1__________________|
-
-@end group
-@end smallexample
-
-The scenario sketched above is the standard way to obtain the desired
-configuration.  In Emacs 23 it was also the only way to do that since
-Emacs 23 didn't allow splitting internal windows.
-
-With Emacs 24 you can also proceed as follows: Split an initial window
-@code{W6} by evaluating @code{(split-window W6 -3)} to produce the
-following vertical combination:
 @smallexample
 @group
      ______________________________________
@@ -1004,112 +777,64 @@ following vertical combination:
     ||                                    ||
     ||                                    ||
     ||                                    ||
+    ||_________________W4_________________||
+    | ____________________________________ |
     ||                                    ||
     ||                                    ||
     ||                                    ||
-    ||                                    ||
-    ||_________________W6_________________||
-    | ____________________________________ |
-    ||                                    ||
     ||_________________W5_________________||
     |__________________W3__________________|
 
 @end group
 @end smallexample
 
-Evaluating now @code{(split-window (window-parent W6) -8 'left)} or,
-equivalently, @code{(split-window W3 -8 'left)} should now produce the
-penultimate configuration from the previous scenario from where we can
-continue as described before.
-
-   Another strategy starts with splitting an initial window @code{W6} by
-evaluating @code{(split-window W6 nil nil t)} with the following result:
-@smallexample
-@group
-     ______________________________________
-    | _________________  _________________ |
-    ||                 ||                 ||
-    ||                 ||                 ||
-    ||                 ||                 ||
-    ||                 ||                 ||
-    ||                 ||                 ||
-    ||                 ||                 ||
-    ||                 ||                 ||
-    ||                 ||                 ||
-    ||                 ||                 ||
-    ||                 ||                 ||
-    ||________W6_______||________W7_______||
-    |__________________W4__________________|
-
-@end group
-@end smallexample
-
-Evaluating now @code{(split-window W4 -3)} or @code{(split-window
-(window-parent W6) -3)} should get us a configuration as shown next.
-@smallexample
-@group
-     ______________________________________
-    | ____________________________________ |
-    || ________________  ________________ ||
-    |||                ||                |||
-    |||                ||                |||
-    |||                ||                |||
-    |||                ||                |||
-    |||                ||                |||
-    |||_______W6_______||________W7______|||
-    ||_________________W4_________________||
-    | ____________________________________ |
-    ||                                    ||
-    ||_________________W5_________________||
-    |__________________W3__________________|
-
-@end group
-@end smallexample
+@noindent
+The @code{split-window} call has created a new live window, denoted by
+@var{W5}.  It has also created a new internal window, denoted by
+@var{W3}, which becomes the root window and the parent of both
+@var{W4} and @var{W5}.
 
-The desired configuration can be now obtained by evaluating
-@code{(split-window W3 -8 'left)} or, equivalently, @code{(split-window
-(window-parent W5) -8 'left)}.
+  Next, we call @code{(split-window W3 nil 'left)}, passing the
+internal window @var{W3} as the argument.  The result:
 
-   For a final approach let's start with the configuration of two live
-windows @code{W6} and @code{W7} shown above.  If we now evaluate
-@code{(split-window W4 -8 'left)} or @code{(split-window (window-parent
-W6) -8 'left)} we get the following configuration.
 @smallexample
 @group
      ______________________________________
     | ______  ____________________________ |
-    ||      || ____________  ____________ ||
-    ||      |||            ||            |||
-    ||      |||            ||            |||
-    ||      |||            ||            |||
-    ||      |||            ||            |||
-    ||      |||            ||            |||
-    ||      |||            ||            |||
-    ||      |||            ||            |||
-    ||      |||______W6____||______W7____|||
-    ||__W2__||_____________W4_____________||
+    ||      || __________________________ ||
+    ||      |||                          |||
+    ||      |||                          |||
+    ||      |||                          |||
+    ||      |||____________W4____________|||
+    ||      || __________________________ ||
+    ||      |||                          |||
+    ||      |||                          |||
+    ||      |||____________W5____________|||
+    ||__W2__||_____________W3_____________ |
     |__________________W1__________________|
-
 @end group
 @end smallexample
 
-Evaluating now @code{(split-window W4 -3)} or, for example,
-@code{(split-window (window-parent W6) -3)} should produce the desired
-configuration.
+@noindent
+A new live window, @var{W2}, is created to the left of @var{W3} (which
+encompasses the vertical window combination of @var{W4} and @var{W5}).
+A new internal window @var{W1} is also created, and becomes the new
+root window.
 
-  The two options described next can be used to tune the operation of
+  The following two options can be used to modify the operation of
 @code{split-window}.
 
 @defopt window-splits
-If this variable is nil, the function @code{split-window} can split a
-window if and only if that window's screen estate is sufficiently large
-to accommodate both--itself and the new window.
+If this variable is @code{nil}, @code{split-window} can only split a
+window (denoted by @var{window}) if @var{window}'s screen area is
+large enough to accommodate both itself and the new window.  This is
+the default.
 
-If this variable is non-@code{nil}, @code{split-window} tries to resize
-all windows that are part of the same combination as the old window to
-accommodate the new window.  Hence, the new window can be also created if
-the old window is of fixed size or too small to split (@pxref{Window
-Sizes}).
+If this variable is non-@code{nil}, @code{split-window} tries to
+resize all windows that are part of the same combination as
+@var{window}, in order to accommodate the new window.  In particular,
+this may allow @code{split-window} to succeed even if @var{window} is
+a fixed-size window or too small to ordinarily split.
 
 In any case, the value of this variable is assigned to the splits status
 of the new window and, provided old and new window form a new
@@ -1488,11 +1213,11 @@ function, it calls that function with @var{window} as its sole argument.
 @end deffn
 
 @deffn Command delete-windows-on &optional buffer-or-name frame
-This function deletes all windows showing @var{buffer-or-name} and
-returns nil.  If there are no windows showing @var{buffer-or-name}, it
-does nothing.  The optional argument @var{buffer-or-name} may be a
-buffer or the name of an existing buffer and defaults to the current
-buffer.  Invoking this command on a minibuffer signals an error.
+This function deletes all windows showing @var{buffer-or-name}.  If
+there are no windows showing @var{buffer-or-name}, it does nothing.
+The optional argument @var{buffer-or-name} may be a buffer or the name
+of an existing buffer and defaults to the current buffer.  Invoking
+this command on a minibuffer signals an error.
 
 The function @code{delete-windows-on} operates by calling
 @code{delete-window} for each window showing @var{buffer-or-name}.  If a
@@ -2108,7 +1833,7 @@ The constant @code{display-buffer-fallback-action}.
 @noindent
 Each action function is called in turn, passing the buffer as the
 first argument and the combined action alist as the second argument,
-until one of the functions returns non-nil.
+until one of the functions returns non-@code{nil}.
 
 The argument @var{action} can also have a non-@code{nil}, non-list
 value.  This has the special meaning that the buffer should be
@@ -2159,7 +1884,7 @@ returns the window if it succeeds, and @code{nil} if it fails.
 This function tries to display @var{buffer} in the selected window.
 It fails if the selected window is a minibuffer window or is dedicated
 to another buffer (@pxref{Dedicated Windows}).  It also fails if
-@var{alist} has a non-nil @code{inhibit-same-window} entry.
+@var{alist} has a non-@code{nil} @code{inhibit-same-window} entry.
 @end defun
 
 @defun display-buffer-reuse-window buffer alist