If the optional argument @var{force} is non-@code{nil}, it forces an
immediate and complete redisplay even if input is available.
+
+Returns @code{t} if redisplay was performed, or @code{nil} otherwise.
@end defun
@node Truncation
@result{} t
@end example
+ Emacs stores the overlays of each buffer in two lists, divided
+around an arbitrary ``center position.'' One list extends backwards
+through the buffer from that center position, and the other extends
+forwards from that center position. The center position can be anywhere
+in the buffer.
+
+@defun overlay-recenter pos
+This function recenters the overlays of the current buffer around
+position @var{pos}. That makes overlay lookup faster for positions
+near @var{pos}, but slower for positions far away from @var{pos}.
+@end defun
+
+ A loop that scans the buffer forwards, creating overlays, can run
+faster if you do @code{(overlay-recenter (point-max))} first.
+
@node Overlay Properties
@subsection Overlay Properties
that there is text above the screen, and a down-arrow to show
there is text below the screen.
-There are four kinds of basic values:
+There are three kinds of basic values:
@table @asis
@item @code{nil}
-Don't display the icons.
+Don't display any of these fringe icons.
@item @code{left}
-Display them in the left fringe.
+Display the angle icons and arrows in the left fringe.
@item @code{right}
-Display them in the right fringe.
-@item @var{anything-else}
-Display the icon at the top of the window top in the left fringe, and other
-in the right fringe.
+Display the angle icons and arrows in the right fringe.
+@item any non-alist
+Display the angle icons in the left fringe
+and don't display the arrows.
@end table
-If value is a cons @code{(@var{angles} . @var{arrows})}, @var{angles}
-controls the angle icons, and @var{arrows} controls the arrows. Both
-@var{angles} and @var{arrows} work according to the table above.
-Thus, @code{(t . right)} places the top angle icon in the left
-fringe, the bottom angle icon in the right fringe, and both arrows in
-the right fringe.
+Otherwise the value should be an alist that specifies which fringe
+indicators to display and where. Each element of the alist should
+have the form @code{(@var{indicator} . @var{position})}. Here,
+@var{indicator} is one of @code{top}, @code{bottom}, @code{up},
+@code{down}, and @code{t} (which covers all the icons not yet
+specified), while @var{position} is one of @code{left}, @code{right}
+and @code{nil}.
+
+For example, @code{((top . left) (t . right))} places the top angle
+bitmap in left fringe, and the bottom angle bitmap as well as both
+arrow bitmaps in right fringe. To show the angle bitmaps in the left
+fringe, and no arrow bitmaps, use @code{((top . left) (bottom . left))}.
@end defvar
@defvar default-indicate-buffer-boundaries
The ordinary elements of the display table are indexed by character
codes; the element at index @var{c} says how to display the character
-code @var{c}. The value should be @code{nil} or a vector of glyph
-values (@pxref{Glyphs}). If an element is @code{nil}, it says to
-display that character according to the usual display conventions
+code @var{c}. The value should be @code{nil} or a vector of the
+glyphs to be output (@pxref{Glyphs}). @code{nil} says to display the
+character @var{c} according to the usual display conventions
(@pxref{Usual Display}).
- If you use the display table to change the display of newline
-characters, the whole buffer will be displayed as one long ``line.''
+ @strong{Warning:} if you use the display table to change the display
+of newline characters, the whole buffer will be displayed as one long
+``line.''
The display table also has six ``extra slots'' which serve special
purposes. Here is a table of their meanings; @code{nil} in any slot
A @dfn{glyph} is a generalization of a character; it stands for an
image that takes up a single character position on the screen. Glyphs
are represented in Lisp as integers, just as characters are. Normally
-Emacs finds glyphs in the display table (@pxref{Display Tables}).
-
- A glyph can be @dfn{simple} or it can be defined by the @dfn{glyph
-table}. A simple glyph is just a way of specifying a character and a
-face to output it in. The glyph code for a simple glyph, mod 524288,
-is the character to output, and the glyph code divided by 524288
-specifies the face number (@pxref{Face Functions}) to use while
-outputting it. (524288 is
+glyph come from vectors in the display table (@pxref{Display Tables}).
+
+ A glyph code can be @dfn{simple} or it can be defined by the
+@dfn{glyph table}. A simple glyph code is just a way of specifying a
+character and a face to output it in. When a glyph code is simple,
+the code, mod 524288, is the character to output, and the code divided
+by 524288 specifies the face number (@pxref{Face Functions}) to use
+while outputting it. (524288 is
@ifnottex
2**19.)
@end ifnottex
@xref{Faces}.
On character terminals, you can set up a @dfn{glyph table} to define
-the meaning of glyph codes. The glyph codes is the value of the
-variable @code{glyph-table}.
+the meaning of glyph codes.
@defvar glyph-table
-The value of this variable is the current glyph table. It should be a
-vector; the @var{g}th element defines glyph code @var{g}.
+The value of this variable is the current glyph table. It should be
+@code{nil} or a vector whose @var{g}th element defines glyph code
+@var{g}.
If a glyph code is greater than or equal to the length of the glyph
-table, that code is automatically simple. If the value of
-@code{glyph-table} is @code{nil} instead of a vector, then all glyphs
-are simple. The glyph table is not used on graphical displays, only
-on character terminals. On graphical displays, all glyphs are simple.
+table, that code is automatically simple. If @code{glyph-table} is
+@code{nil} then all glyph codes are simple.
+
+The glyph table is used only on character terminals. On graphical
+displays, all glyph codes are simple.
@end defvar
- Here are the possible types of elements in the glyph table:
+ Here are the meaningful types of elements in the glyph table:
@table @asis
@item @var{string}
Send the characters in @var{string} to the terminal to output
-this glyph. This alternative is available on character terminals,
-but not on graphical displays.
+this glyph code.
@item @var{integer}
Define this glyph code as an alias for glyph code @var{integer}. You
-can use an alias to specify a face code for the glyph and use a small
-number as its code.
+can use such an alias to define a small-numbered glyph code which
+specifies a face.
@item @code{nil}
-This glyph is simple.
+This glyph code is simple.
@end table
@defun create-glyph string