@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999
+@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../info/text
In an interactive call, @var{count} is the numeric prefix argument.
This command calls @code{auto-fill-function} whenever that is
-non-@code{nil} and the character inserted is a space or a newline
-(@pxref{Auto Filling}).
+non-@code{nil} and the character inserted is in the table
+@code{auto-fill-chars} (@pxref{Auto Filling}).
@c Cross refs reworded to prevent overfull hbox. --rjc 15mar92
This command performs abbrev expansion if Abbrev mode is enabled and
@end deffn
@deffn Command delete-region start end
-This command deletes the text in the current buffer in the region
-defined by @var{start} and @var{end}. The value is @code{nil}. If
-point was inside the deleted region, its value afterward is @var{start}.
+This command deletes the text between positions @var{start} and
+@var{end} in the current buffer, and returns @code{nil}. If point was
+inside the deleted region, its value afterward is @var{start}.
Otherwise, point relocates with the surrounding text, as markers do.
@end deffn
+@defun delete-and-extract-region start end
+@tindex delete-and-extract-region
+This function deletes the text between positions @var{start} and
+@var{end} in the current buffer, and returns a string containing the
+text just deleted.
+
+If point was inside the deleted region, its value afterward is
+@var{start}. Otherwise, point relocates with the surrounding text, as
+markers do.
+@end defun
+
@deffn Command delete-char count &optional killp
This command deletes @var{count} characters directly after point, or
before point if @var{count} is negative. If @var{killp} is
@defvar auto-fill-function
The value of this variable should be a function (of no arguments) to be
-called after self-inserting a space or a newline. It may be @code{nil},
-in which case nothing special is done in that case.
+called after self-inserting a character from the table
+@code{auto-fill-chars}. It may be @code{nil}, in which case nothing
+special is done in that case.
The value of @code{auto-fill-function} is @code{do-auto-fill} when
Auto-Fill mode is enabled. That is a function whose sole purpose is to
Fill works.
@end defvar
+@defvar auto-fill-chars
+A char table of characters which invoke @code{auto-fill-function} when
+self-inserted---space and newline in most language environments. They
+have an entry @code{t} in the table.
+@end defvar
+
@node Sorting
@section Sorting Text
@cindex sorting text
@item help-echo
@kindex help-echo @r{(text property)}
+@anchor{Text help-echo}
If text has a string as its @code{help-echo} property, then when you
move the mouse onto that text, Emacs displays that string in the echo
-area, or in the tooltip window. This feature is used in the mode line.
-It is available starting in Emacs 21.
+area, or in the tooltip window.
+
+If the value of the @code{help-echo} property is a function, that
+function is called with three arguments, @var{window}, @var{object} and
+@var{position} and should return a help string or @var{nil} for
+none. The first argument, @var{window} is the window in which
+the help was found. The second, @var{object}, is the buffer, overlay or
+string which had the @code{help-echo} property. The @var{position}
+argument is as follows:
+
+@itemize @bullet{}
+@item
+If @var{object} is a buffer, @var{pos} is the position in the buffer
+where the @code{help-echo} text property was found.
+@item
+If @var{object} is an overlay, that overlay has a @code{help-echo}
+property, and @var{pos} is the position in the overlay's buffer under
+the mouse.
+@item
+If @var{object} is a string (an overlay string or a string displayed
+with the @code{display} property), @var{pos} is the position in that
+string under the mouse.
+@end itemize
+
+If the value of the @code{help-echo} property is neither a function nor
+a string, it is evaluated to obtain a help string.
+
+You can alter the way help text is displayed by setting the variable
+@code{show-help-function} (@pxref{Help display}).
+
+This feature is used in the mode line and for other active text. It is
+available starting in Emacs 21.
@item local-map
@cindex keymap of character
@code{let}.
@end defvar
+@defvar show-help-function
+@tindex show-help-function
+@anchor{Help display} If this variable is non-@code{nil}, it specifies a
+function called to display help strings. These may be @code{help-echo}
+properties, menu help strings (@pxref{Simple Menu Items},
+@pxref{Extended Menu Items}), or tool bar help strings (@pxref{Tool
+Bar}). The specified function is called with one argument, the help
+string to display. Tooltip mode (@pxref{(emacs)Tooltips}) provides an
+example.
+@end defvar
+
@node Format Properties
@subsection Formatted Text Properties
file to visit, based on the position found in the event.
Instead of defining a mouse command for the major mode, you can define
-a key binding for the clickable text itself, using the @code{local-map}
+a key binding for the clickable text itself, using the @code{keymap}
text property:
@example
(let ((map (make-sparse-keymap)))
- (define-key-binding map [mouse-2] 'operate-this-button)
+ (define-key map [mouse-2] 'operate-this-button)
(put-text-property (point)
(save-excursion
(dired-move-to-end-of-filename)
(point))
- 'local-map map))
+ 'keymap map))
@end example
@noindent
made within the @code{combine-after-change-calls} body.
@strong{Warning:} You must not alter the values of
-@code{after-change-functions} and @code{after-change-function} within
+@code{after-change-functions} within
the body of a @code{combine-after-change-calls} form.
@strong{Note:} If the changes you combine occur in widely scattered
functions.
@end defmac
-@defvar before-change-function
-This obsolete variable holds one function to call before any buffer
-modification (or @code{nil} for no function). It is called just like
-the functions in @code{before-change-functions}.
-@end defvar
-
-@defvar after-change-function
-This obsolete variable holds one function to call after any buffer modification
-(or @code{nil} for no function). It is called just like the functions in
-@code{after-change-functions}.
-@end defvar
-
-The four variables above are temporarily bound to @code{nil} during the
+The two variables above are temporarily bound to @code{nil} during the
time that any of these functions is running. This means that if one of
these functions changes the buffer, that change won't run these
functions. If you do want a hook function to make changes that run