21.4.14 "Reasonable Discussion".
[chise/xemacs-chise.git.1] / man / lispref / display.texi
index 1517f0f..3263dbe 100644 (file)
@@ -1,6 +1,6 @@
 @c -*-texinfo-*-
 @c This is part of the XEmacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998 Free Software Foundation, Inc. 
+@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998 Free Software Foundation, Inc.
 @c See the file lispref.texi for copying conditions.
 @setfilename ../../info/display.info
 @node Display, Hash Tables, Annotations, Top
@@ -30,9 +30,14 @@ that XEmacs presents to the user.
 The function @code{redraw-frame} redisplays the entire contents of a
 given frame.  @xref{Frames}.
 
-@c Emacs 19 feature
-@defun redraw-frame frame
+@defun redraw-frame &optional frame no-preempt
 This function clears and redisplays frame @var{frame}.
+
+@var{frame} defaults to the selected frame if omitted.
+
+Normally, redisplay is preempted as normal if input arrives.  However,
+if optional second arg @var{no-preempt} is non-@code{nil}, redisplay
+will not stop for input and is guaranteed to proceed to completion.
 @end defun
 
 Even more powerful is @code{redraw-display}:
@@ -72,9 +77,9 @@ redrawn from scratch.  Normally this occurs the next time that
 @code{next-event} or @code{sit-for} is called; however, a display update
 will not occur if there is input pending.  @xref{Command Loop}.
 
-@defun force-cursor-redisplay
-This function causes an immediate update of the cursor on the selected
-frame.  (This function does not exist in FSF Emacs.)
+@defun force-cursor-redisplay &optional frame
+This function causes an immediate update of the cursor on @var{frame},
+which defaults to the selected frame.
 @end defun
 
 @node Truncation
@@ -162,9 +167,9 @@ The @dfn{echo area} is used for displaying messages made with the
 @code{message} primitive, and for echoing keystrokes.  It is not the
 same as the minibuffer, despite the fact that the minibuffer appears
 (when active) in the same place on the screen as the echo area.  The
-@cite{XEmacs Reference Manual} specifies the rules for resolving conflicts
+@cite{XEmacs Lisp Reference Manual} specifies the rules for resolving conflicts
 between the echo area and the minibuffer for use of that screen space
-(@pxref{Minibuffer,, The Minibuffer, emacs, The XEmacs Reference Manual}).
+(@pxref{Minibuffer,, The Minibuffer, xemacs, The XEmacs Lisp Reference Manual}).
 Error messages appear in the echo area; see @ref{Errors}.
 
 You can write output in the echo area by using the Lisp printing
@@ -216,16 +221,16 @@ function;
 @item @code{progress}---progress indicators like
 @samp{Converting... 45%} (not logged by default);
 
-@item @code{prompt}---prompt-like messages like @samp{Isearch: foo} (not 
+@item @code{prompt}---prompt-like messages like @samp{Isearch: foo} (not
 logged by default);
 
-@item @code{command}---helper command messages like @samp{Mark set} (not 
+@item @code{command}---helper command messages like @samp{Mark set} (not
 logged by default);
 
 @item @code{no-log}---messages that should never be logged
 @end itemize
 
-Several messages may be stacked in the echo area at once.  Lisp programs 
+Several messages may be stacked in the echo area at once.  Lisp programs
 may access these messages, or remove them as appropriate, via the
 message stack.
 
@@ -273,7 +278,7 @@ displayed there.
 If a message remains at the head of the message-stack and
 @var{no-restore} is @code{nil}, it will be displayed.  The string which
 remains in the echo area will be returned, or @code{nil} if the
-message-stack is now empty.  If @var{label} is nil, the entire
+message-stack is now empty.  If @var{label} is @code{nil}, the entire
 message-stack is cleared.
 
 @example
@@ -513,7 +518,9 @@ by a visible newline, it displays an ellipsis.
 
   Ordinarily, commands that operate on text or move point do not care
 whether the text is invisible.  However, the user-level line motion
-commands explicitly ignore invisible newlines.
+commands explicitly ignore invisible newlines.  Since this causes a
+slow-down of these commands it is turned off by default, controlled by
+the variable @code{line-move-ignore-invisible}.
 
 @node Selective Display
 @section Selective Display
@@ -554,7 +561,7 @@ effect is seen only within XEmacs.
 
 @defvar selective-display
 This buffer-local variable enables selective display.  This means that
-lines, or portions of lines, may be made invisible.  
+lines, or portions of lines, may be made invisible.
 
 @itemize @bullet
 @item
@@ -823,7 +830,7 @@ at the matching parenthesis.  A fraction of a second often gives
 good results, but the default is 1, which works on all systems.
 @end defvar
 
-@defun blink-matching-open
+@deffn Command blink-matching-open
 This function is the default value of @code{blink-paren-function}.  It
 assumes that point follows a character with close parenthesis syntax and
 moves the cursor momentarily to the matching opening character.  If that
@@ -836,9 +843,6 @@ Here is an example of calling this function explicitly.
 @smallexample
 @group
 (defun interactive-blink-matching-open ()
-@c Do not break this line! -- rms.
-@c The first line of a doc string
-@c must stand alone.
   "Indicate momentarily the start of sexp before point."
   (interactive)
 @end group
@@ -849,7 +853,7 @@ Here is an example of calling this function explicitly.
     (blink-matching-open)))
 @end group
 @end smallexample
-@end defun
+@end deffn
 
 @node Usual Display
 @section Usual Display Conventions
@@ -996,6 +1000,71 @@ the contents of a display table, using additional indirection
 to a ``glyph table'' and such.  Note that ``glyph'' has a different
 meaning in XEmacs.)
 
+@defvar current-display-table
+
+The display table currently in use.  This is a specifier.
+
+Display tables are used to control how characters are displayed.  Each
+time that redisplay processes a character, it is looked up in all the
+display tables that apply (obtained by calling @code{specifier-instance}
+on @code{current-display-table} and any overriding display tables
+specified in currently active faces).  The first entry found that
+matches the character determines how the character is displayed.  If
+there is no matching entry, the default display method is
+used. (Non-control characters are displayed as themselves and control
+characters are displayed according to the buffer-local variable
+@code{ctl-arrow}.  Control characters are further affected by
+@code{control-arrow-glyph} and @code{octal-escape-glyph}.)
+
+Each instantiator in this specifier and the display-table specifiers
+in faces is a display table or a list of such tables.  If a list, each
+table will be searched in turn for an entry matching a particular
+character.  Each display table is one of
+
+@itemize @bullet
+@item
+A vector, specifying values for characters starting at 0.
+@item
+A char table, either of type @code{char} or @code{generic}.
+@item
+A range table.
+@end itemize
+
+Each entry in a display table should be one of
+
+@itemize @bullet
+@item
+nil (this entry is ignored and the search continues).
+@item
+A character (use this character; if it happens to be the same as
+the original character, default processing happens, otherwise
+redisplay attempts to display this character directly;
+#### At some point recursive display-table lookup will be
+implemented).
+@item
+A string (display each character in the string directly;
+#### At some point recursive display-table lookup will be
+implemented).
+@item
+A glyph (display the glyph;
+#### At some point recursive display-table lookup will be
+implemented when a string glyph is being processed).
+@item
+A cons of the form (format "@var{string}") where @var{string} is a
+printf-like spec used to process the character. #### Unfortunately no
+formatting directives other than %% are implemented.
+@item
+A vector (each element of the vector is processed recursively;
+in such a case, nil elements in the vector are simply ignored).
+
+#### At some point in the near future, display tables are likely to
+be expanded to include other features, such as referencing characters
+in particular fonts and allowing the character search to continue
+all the way up the chain of specifier instantiators.  These features
+are necessary to properly display Unicode characters.
+@end itemize
+@end defvar
+
   Individual faces can also specify an overriding display table;
 this is set using @code{set-face-display-table}.  @xref{Faces}.