]> code.delx.au - gnu-emacs/blobdiff - lispref/windows.texi
* os.texi (Timers): Mention with-local-quit.
[gnu-emacs] / lispref / windows.texi
index fe1d6212df0aabf3cfbb273a2809a697f3683409..bd9269f90aec4905c3bbef295d64cfcc80b4162b 100644 (file)
@@ -161,10 +161,8 @@ The two ``halves'' of the split window initially display the same buffer
 previously visible in the window that was split.
 
 @deffn Command split-window &optional window size horizontal
-This function splits @var{window} into two windows.  The original
-window @var{window} remains the selected window, but occupies only
-part of its former screen area.  The rest is occupied by a newly created
-window which is returned as the value of this function.
+This function splits a new window out of @var{window}'s screen area.
+It returns the new window.
 
 If @var{horizontal} is non-@code{nil}, then @var{window} splits into
 two side by side windows.  The original window @var{window} keeps the
@@ -175,11 +173,13 @@ lines to the new window.  The original window is therefore the
 left-hand or upper of the two, and the new window is the right-hand or
 lower.
 
-If @var{window} is omitted or @code{nil}, then the selected window is
-split.  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.)  When @code{split-window} is called
-interactively, all its arguments are @code{nil}.
+If @var{window} is omitted or @code{nil}, that stands for the selected
+window.  When you split the selected window, it remains selected.
+
+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.)  When @code{split-window} is called interactively,
+all its arguments are @code{nil}.
 
 If splitting would result in making a window that is smaller than
 @code{window-min-height} or @code{window-min-width}, the function
@@ -1355,6 +1355,9 @@ visible unless @var{partially} is non-@code{nil}.  The argument
 @var{position} defaults to the current position of point in
 @var{window}; @var{window}, to the selected window.
 
+If @var{position} is @code{t}, that means to check the last visible
+position in @var{window}.
+
 The @code{pos-visible-in-window-p} function considers only vertical
 scrolling.  If @var{position} is out of view only because @var{window}
 has been scrolled horizontally, @code{pos-visible-in-window-p} returns
@@ -1362,13 +1365,16 @@ non-@code{nil} anyway.  @xref{Horizontal Scrolling}.
 
 If @var{position} is visible, @code{pos-visible-in-window-p} returns
 @code{t} if @var{partially} is @code{nil}; if @var{partially} is
-non-@code{nil}, it returns a list of the form @code{(@var{x} @var{y}
-@var{partial})}, where @var{x} and @var{y} are the pixel coordinates
-relative to the top left corner of the window, and @var{partial} is
-@code{nil} if the character after @var{position} is fully visible;
-otherwise it is a cons @code{(@var{rtop} . @var{rbot})} where the
-@var{rtop} and @var{rbot} specify the number of invisible pixels at
-the top and bottom of the row at @var{position}.
+non-@code{nil}, and the character after @var{position} is fully
+visible, it returns a list of the form @code{(@var{x} @var{y})}, where
+@var{x} and @var{y} are the pixel coordinates relative to the top left
+corner of the window; otherwise it returns an extended list of the
+form @code{(@var{x} @var{y} @var{rtop} @var{rbot} @var{rowh}
+@var{vpos})}, where the @var{rtop} and @var{rbot} specify the number
+of off-window pixels at the top and bottom of the row at
+@var{position}, @var{rowh} specifies the visible height of that row,
+and @var{vpos} specifies the vertical position (zero-based row number)
+of that row.
 
 Here is an example:
 
@@ -1382,6 +1388,30 @@ Here is an example:
 @end example
 @end defun
 
+@defun window-line-height &optional line window
+This function returns information about text line @var{line} in @var{window}.
+If @var{line} is one of @code{header-line} or @code{mode-line},
+@code{window-line-height} returns information about the corresponding
+line of the window.  Otherwise, @var{line} is a text line number
+starting from 0.  A negative number counts from the end of the window.
+The argument @var{line} defaults to the current line in @var{window};
+@var{window}, to the selected window.
+
+If the display is not up to date, @code{window-line-height} returns
+@code{nil}.  In that case, @code{pos-visible-in-window-p} may be used
+to obtain related information.
+
+If there is no line corresponding to the specified @var{line},
+@code{window-line-height} returns @code{nil}.  Otherwise, it returns
+a list @code{(@var{height} @var{vpos} @var{ypos} @var{offbot})},
+where @var{height} is the height in pixels of the visible part of the
+line, @var{vpos} and @var{ypos} are the vertical position in lines and
+pixels of the line relative to the top of the first text line, and
+@var{offbot} is the number of off-window pixels at the bottom of the
+text line.  If there are off-window pixels at the top of the (first)
+text line, @var{ypos} is negative.
+@end defun
+
 @node Textual Scrolling
 @section Textual Scrolling
 @cindex textual scrolling
@@ -1419,7 +1449,7 @@ buffer is different from the buffer that is displayed in the selected
 window.  @xref{Current Buffer}.
 
   If the window contains a row which is taller than the height of the
-window (for example in the presense of a large image), the scroll
+window (for example in the presence of a large image), the scroll
 functions will adjust the window vscroll to scroll the partially
 visible row.  To disable this feature, Lisp code may bind the variable
 `auto-window-vscroll' to @code{nil} (@pxref{Vertical Scrolling}).
@@ -1474,7 +1504,7 @@ window is the one at the bottom right corner.  In this case,
 @code{scroll-other-window} attempts to scroll the minibuffer.  If the
 minibuffer contains just one line, it has nowhere to scroll to, so the
 line reappears after the echo area momentarily displays the message
-``Beginning of buffer''.
+@samp{Beginning of buffer}.
 @end deffn
 
 @c Emacs 19 feature
@@ -1506,7 +1536,6 @@ never happens.
 @end defopt
 
 @defopt scroll-down-aggressively
-@tindex scroll-down-aggressively
 The value of this variable should be either @code{nil} or a fraction
 @var{f} between 0 and 1.  If it is a fraction, that specifies where on
 the screen to put point when scrolling down.  More precisely, when a
@@ -1521,7 +1550,6 @@ fashion.
 @end defopt
 
 @defopt scroll-up-aggressively
-@tindex scroll-up-aggressively
 Likewise, for scrolling up.  The value, @var{f}, specifies how far
 point should be placed from the bottom of the window; thus, as with
 @code{scroll-up-aggressively}, a larger value scrolls more aggressively.
@@ -1656,7 +1684,7 @@ pixels.  In this case, the return value is @var{lines}.
 If this variable is non-@code{nil}, the line-move, scroll-up, and
 scroll-down functions will automatically modify the window vscroll to
 scroll through display rows that are taller that the height of the
-window, for example in the presense of large images.
+window, for example in the presence of large images.
 @end defvar
 
 @node Horizontal Scrolling
@@ -1678,8 +1706,8 @@ times the normal character width.  How many characters actually
 disappear off to the left depends on their width, and could vary from
 line to line.
 
-  Because we read from side to side in the ``inner loop'', and from top
-to bottom in the ``outer loop'', the effect of horizontal scrolling is
+  Because we read from side to side in the ``inner loop,'' and from top
+to bottom in the ``outer loop,'' the effect of horizontal scrolling is
 not like that of textual or vertical scrolling.  Textual scrolling
 involves selection of a portion of text to display, and vertical
 scrolling moves the window contents contiguously; but horizontal
@@ -1835,7 +1863,6 @@ If @var{window} is @code{nil}, the function uses the selected window.
 @end example
 @end defun
 
-@tindex window-body-height
 @defun window-body-height &optional window
 Like @code{window-height} but the value does not include the
 mode line (if any) or the header line (if any).
@@ -2068,7 +2095,6 @@ This command returns non-@code{nil} if it actually shrank the window
 and @code{nil} otherwise.
 @end deffn
 
-@tindex window-size-fixed
 @defvar window-size-fixed
 If this variable is non-@code{nil}, in any given buffer,
 then the size of any window displaying the buffer remains fixed
@@ -2196,7 +2222,7 @@ root window, and @var{mini} is the frame's minibuffer window.
 
 If the root window is not split, @var{root} is the root window itself.
 Otherwise, @var{root} is a list @code{(@var{dir} @var{edges} @var{w1}
-@var{w2} ...)} where @var{dir} is @code{nil} for a horisontal split,
+@var{w2} ...)} where @var{dir} is @code{nil} for a horizontal split,
 and @code{t} for a vertical split, @var{edges} gives the combined size and
 position of the subwindows in the split, and the rest of the elements
 are the subwindows in the split.  Each of the subwindows may again be
@@ -2348,6 +2374,10 @@ Displaying a different buffer in the window also runs these functions.
 These functions must be careful in using @code{window-end}
 (@pxref{Window Start}); if you need an up-to-date value, you must use
 the @var{update} argument to ensure you get it.
+
+@strong{Warning:} don't use this feature to alter the way the window
+is scrolled.  It's not designed for that, and such use probably won't
+work.
 @end defvar
 
 @defvar window-size-change-functions