doc/lispref/windows.texi (Recombining Windows): Index subject of sections.
doc/lispref/variables.texi (Variables with Restricted Values)
(Generalized Variables): Index subject of sections.
doc/lispref/text.texi (Buffer Contents, Examining Properties)
(Changing Properties, Property Search, Substitution): Index
subject of sections.
doc/lispref/syntax.texi (Motion and Syntax, Parsing Expressions)
(Motion via Parsing, Position Parse, Control Parsing): Index
subject of sections.
doc/lispref/strings.texi (Predicates for Strings, Creating Strings)
(Modifying Strings, Text Comparison): Index subject of sections.
doc/lispref/searching.texi (Syntax of Regexps, Regexp Special)
(Regexp Functions, Regexp Functions): Index subject of sections.
doc/lispref/processes.texi (Subprocess Creation, Process Information): Index
subject of sections.
doc/lispref/positions.texi (Screen Lines): Index subject of sections.
doc/lispref/nonascii.texi (Scanning Charsets, Specifying Coding Systems):
Index subject of sections.
doc/lispref/minibuf.texi (Text from Minibuffer, Object from Minibuffer)
(Multiple Queries, Minibuffer Contents): Index subject of
sections.
doc/lispref/markers.texi (Predicates on Markers, Creating Markers)
(Information from Markers, Moving Markers): Index subject of
sections.
doc/lispref/macros.texi (Defining Macros, Problems with Macros): Index
subject of sections.
doc/lispref/loading.texi (Loading Non-ASCII, Where Defined): Index subject
of sections.
doc/lispref/lists.texi (List-related Predicates, List Variables, Setcar)
(Setcdr, Plist Access): Index subject of sections.
doc/lispref/keymaps.texi (Controlling Active Maps, Scanning Keymaps)
(Modifying Menus): Index subject of sections.
doc/lispref/help.texi (Accessing Documentation, Help Functions): Index
subject of sections.
doc/lispref/hash.texi (Hash Access): Index subject of sections.
doc/lispref/functions.texi (Core Advising Primitives)
(Advising Named Functions, Porting old advices): Index subject of
sections.
doc/lispref/frames.texi (Creating Frames, Initial Parameters)
(Position Parameters, Buffer Parameters, Minibuffers and Frames)
(Pop-Up Menus, Drag and Drop): Index subject of sections.
doc/lispref/files.texi (Visiting Functions, Kinds of Files)
(Unique File Names): Index subject of sections.
doc/lispref/display.texi (Refresh Screen, Echo Area Customization)
(Warning Variables, Warning Options, Delayed Warnings)
(Temporary Displays, Managing Overlays, Overlay Properties)
(Finding Overlays, Size of Displayed Text, Defining Faces)
(Attribute Functions, Displaying Faces, Face Remapping)
(Basic Faces, Font Lookup, Fontsets, Replacing Specs)
(Defining Images, Showing Images): Index subject of sections.
doc/lispref/debugging.texi (Debugging, Explicit Debug)
(Invoking the Debugger, Excess Open, Excess Close): Index subject
of sections.
doc/lispref/customize.texi (Defining New Types, Applying Customizations)
(Custom Themes): Index subject of sections.
doc/lispref/control.texi (Sequencing, Combining Conditions)
(Processing of Errors, Cleanups): Index subject of sections.
doc/lispref/compile.texi (Eval During Compile): Index subject of sections.
doc/lispref/commands.texi (Using Interactive, Distinguish Interactive)
(Command Loop Info, Classifying Events, Event Mod)
(Invoking the Input Method): Index subject of sections.
doc/lispref/buffers.texi (Buffer List, Buffer Gap): Index subject of sections.
doc/lispref/backups.texi (Making Backups, Numbered Backups, Backup Names)
(Reverting): Index subject of sections.
doc/lispref/abbrevs.texi (Abbrev Tables, Defining Abbrevs, Abbrev Files)
(Abbrev Expansion, Standard Abbrev Tables, Abbrev Properties)
(Abbrev Table Properties): Index subject of sections.
doc/lispref/os.texi (Time of Day, Time Conversion, Time Parsing)
(Time Calculations, Idle Timers): Index subject of sections.
+2014-12-23 Eli Zaretskii <eliz@gnu.org>
+
+ * windows.texi (Recombining Windows): Index subject of sections.
+
+ * variables.texi (Variables with Restricted Values)
+ (Generalized Variables): Index subject of sections.
+
+ * text.texi (Buffer Contents, Examining Properties)
+ (Changing Properties, Property Search, Substitution): Index
+ subject of sections.
+
+ * syntax.texi (Motion and Syntax, Parsing Expressions)
+ (Motion via Parsing, Position Parse, Control Parsing): Index
+ subject of sections.
+
+ * strings.texi (Predicates for Strings, Creating Strings)
+ (Modifying Strings, Text Comparison): Index subject of sections.
+
+ * searching.texi (Syntax of Regexps, Regexp Special)
+ (Regexp Functions, Regexp Functions): Index subject of sections.
+
+ * processes.texi (Subprocess Creation, Process Information): Index
+ subject of sections.
+
+ * positions.texi (Screen Lines): Index subject of sections.
+
+ * nonascii.texi (Scanning Charsets, Specifying Coding Systems):
+ Index subject of sections.
+
+ * minibuf.texi (Text from Minibuffer, Object from Minibuffer)
+ (Multiple Queries, Minibuffer Contents): Index subject of
+ sections.
+
+ * markers.texi (Predicates on Markers, Creating Markers)
+ (Information from Markers, Moving Markers): Index subject of
+ sections.
+
+ * macros.texi (Defining Macros, Problems with Macros): Index
+ subject of sections.
+
+ * loading.texi (Loading Non-ASCII, Where Defined): Index subject
+ of sections.
+
+ * lists.texi (List-related Predicates, List Variables, Setcar)
+ (Setcdr, Plist Access): Index subject of sections.
+
+ * keymaps.texi (Controlling Active Maps, Scanning Keymaps)
+ (Modifying Menus): Index subject of sections.
+
+ * help.texi (Accessing Documentation, Help Functions): Index
+ subject of sections.
+
+ * hash.texi (Hash Access): Index subject of sections.
+
+ * functions.texi (Core Advising Primitives)
+ (Advising Named Functions, Porting old advices): Index subject of
+ sections.
+
+ * frames.texi (Creating Frames, Initial Parameters)
+ (Position Parameters, Buffer Parameters, Minibuffers and Frames)
+ (Pop-Up Menus, Drag and Drop): Index subject of sections.
+
+ * files.texi (Visiting Functions, Kinds of Files)
+ (Unique File Names): Index subject of sections.
+
+ * display.texi (Refresh Screen, Echo Area Customization)
+ (Warning Variables, Warning Options, Delayed Warnings)
+ (Temporary Displays, Managing Overlays, Overlay Properties)
+ (Finding Overlays, Size of Displayed Text, Defining Faces)
+ (Attribute Functions, Displaying Faces, Face Remapping)
+ (Basic Faces, Font Lookup, Fontsets, Replacing Specs)
+ (Defining Images, Showing Images): Index subject of sections.
+
+ * debugging.texi (Debugging, Explicit Debug)
+ (Invoking the Debugger, Excess Open, Excess Close): Index subject
+ of sections.
+
+ * customize.texi (Defining New Types, Applying Customizations)
+ (Custom Themes): Index subject of sections.
+
+ * control.texi (Sequencing, Combining Conditions)
+ (Processing of Errors, Cleanups): Index subject of sections.
+
+ * compile.texi (Eval During Compile): Index subject of sections.
+
+ * commands.texi (Using Interactive, Distinguish Interactive)
+ (Command Loop Info, Classifying Events, Event Mod)
+ (Invoking the Input Method): Index subject of sections.
+
+ * buffers.texi (Buffer List, Buffer Gap): Index subject of sections.
+
+ * backups.texi (Making Backups, Numbered Backups, Backup Names)
+ (Reverting): Index subject of sections.
+
+ * abbrevs.texi (Abbrev Tables, Defining Abbrevs, Abbrev Files)
+ (Abbrev Expansion, Standard Abbrev Tables, Abbrev Properties)
+ (Abbrev Table Properties): Index subject of sections.
+
+ * os.texi (Time of Day, Time Conversion, Time Parsing)
+ (Time Calculations, Idle Timers): Index subject of sections.
+
2014-12-18 Stefan Monnier <monnier@iro.umontreal.ca>
* display.texi (Forcing Redisplay): Remove references to
@node Abbrev Tables
@section Abbrev Tables
+@cindex abbrev tables
This section describes how to create and manipulate abbrev tables.
@node Defining Abbrevs
@section Defining Abbrevs
+@cindex defining abbrevs
@code{define-abbrev} is the low-level basic function for defining an
abbrev in an abbrev table.
@node Abbrev Files
@section Saving Abbrevs in Files
+@cindex save abbrevs in files
A file of saved abbrev definitions is actually a file of Lisp code.
The abbrevs are saved in the form of a Lisp program to define the same
@node Abbrev Expansion
@section Looking Up and Expanding Abbreviations
+@cindex looking up abbrevs
+@cindex expanding abbrevs
+@cindex abbrevs, looking up and expanding
Abbrevs are usually expanded by certain interactive commands,
including @code{self-insert-command}. This section describes the
@node Standard Abbrev Tables
@section Standard Abbrev Tables
+@cindex standard abbrev tables
Here we list the variables that hold the abbrev tables for the
preloaded major modes of Emacs.
@node Abbrev Properties
@section Abbrev Properties
+@cindex abbrev properties
Abbrevs have properties, some of which influence the way they work.
You can provide them as arguments to @code{define-abbrev}, and
@node Abbrev Table Properties
@section Abbrev Table Properties
+@cindex abbrev table properties
Like abbrevs, abbrev tables have properties, some of which influence
the way they work. You can provide them as arguments to
@node Making Backups
@subsection Making Backup Files
+@cindex making backup files
@defun backup-buffer
This function makes a backup of the file visited by the current
@node Numbered Backups
@subsection Making and Deleting Numbered Backup Files
+@cindex numbered backups
If a file's name is @file{foo}, the names of its numbered backup
versions are @file{foo.~@var{v}~}, for various integers @var{v}, like
@node Backup Names
@subsection Naming Backup Files
+@cindex naming backup files
The functions in this section are documented mainly because you can
customize the naming conventions for backup files by redefining them.
@node Reverting
@section Reverting
+@cindex reverting buffers
If you have made extensive changes to a file and then change your mind
about them, you can get rid of them by reading in the previous version
@node Buffer List
@section The Buffer List
@cindex buffer list
+@cindex listing all buffers
The @dfn{buffer list} is a list of all live buffers. The order of the
buffers in this list is based primarily on how recently each buffer has
@node Buffer Gap
@section The Buffer Gap
+@cindex buffer gap
Emacs buffers are implemented using an invisible @dfn{gap} to make
insertion and deletion faster. Insertion works by filling in part of
@node Using Interactive
@subsection Using @code{interactive}
@cindex arguments, interactive entry
+@cindex interactive spec, using
This section describes how to write the @code{interactive} form that
makes a Lisp function an interactively-callable command, and how to
@node Distinguish Interactive
@section Distinguish Interactive Calls
+@cindex distinguish interactive calls
+@cindex is this call interactive
Sometimes a command should display additional visual feedback (such
as an informative message in the echo area) for interactive calls
@node Command Loop Info
@section Information from the Command Loop
+@cindex command loop variables
The editor command loop sets several Lisp variables to keep status
records for itself and for commands that are run. With the exception of
@node Classifying Events
@subsection Classifying Events
@cindex event type
+@cindex classifying events
Every event has an @dfn{event type}, which classifies the event for
key binding purposes. For a keyboard event, the event type equals the
@node Event Mod
@subsection Modifying and Translating Input Events
+@cindex modifiers of events
+@cindex translating input events
+@cindex event translation
Emacs modifies every event it reads according to
@code{extra-keyboard-modifiers}, then translates it through
@node Invoking the Input Method
@subsection Invoking the Input Method
+@cindex invoking input method
The event-reading functions invoke the current input method, if any
(@pxref{Input Methods}). If the value of @code{input-method-function}
@node Eval During Compile
@section Evaluation During Compilation
+@cindex eval during compilation
These features permit you to write code to be evaluated during
compilation of a program.
@node Sequencing
@section Sequencing
+@cindex sequencing
+@cindex sequential execution
Evaluating forms in the order they appear is the most common way
control passes from one form to another. In some contexts, such as in a
@node Combining Conditions
@section Constructs for Combining Conditions
+@cindex combining conditions
This section describes three constructs that are often used together
with @code{if} and @code{cond} to express complicated conditions. The
@node Processing of Errors
@subsubsection How Emacs Processes Errors
+@cindex processing of errors
When an error is signaled, @code{signal} searches for an active
@dfn{handler} for the error. A handler is a sequence of Lisp
@node Cleanups
@subsection Cleaning Up from Nonlocal Exits
+@cindex nonlocal exits, cleaning up
The @code{unwind-protect} construct is essential whenever you
temporarily put a data structure in an inconsistent state; it permits
@node Defining New Types
@subsection Defining New Types
+@cindex customization types, define new
+@cindex define new customization types
In the previous sections we have described how to construct elaborate
type specifications for @code{defcustom}. In some cases you may want
@node Applying Customizations
@section Applying Customizations
+@cindex applying customizations
The following functions are responsible for installing the user's
customization settings for variables and faces, respectively. When
@node Custom Themes
@section Custom Themes
+@cindex custom themes
@dfn{Custom themes} are collections of settings that can be enabled
or disabled as a unit. @xref{Custom Themes,,, emacs, The GNU Emacs
Manual}. Each Custom theme is defined by an Emacs Lisp source file,
@c See the file elisp.texi for copying conditions.
@node Debugging
@chapter Debugging Lisp Programs
+@cindex debugging lisp programs
There are several ways to find and investigate problems in an Emacs
Lisp program.
@node Explicit Debug
@subsection Explicit Entry to the Debugger
+@cindex debugger, explicit entry
+@cindex force entry to debugger
You can cause the debugger to be called at a certain point in your
program by writing the expression @code{(debug)} at that point. To do
@node Invoking the Debugger
@subsection Invoking the Debugger
+@cindex invoking lisp debugger
Here we describe in full detail the function @code{debug} that is used
to invoke the debugger.
@node Excess Open
@subsection Excess Open Parentheses
+@cindex excess open parentheses
The first step is to find the defun that is unbalanced. If there is
an excess open parenthesis, the way to do this is to go to the end of
@node Excess Close
@subsection Excess Close Parentheses
+@cindex excess close parentheses
To deal with an excess close parenthesis, first go to the beginning
of the file, then type @kbd{C-u -1 C-M-u} to find the end of the first
@node Refresh Screen
@section Refreshing the Screen
+@cindex refresh the screen
+@cindex screen refresh
The function @code{redraw-frame} clears and redisplays the entire
contents of a given frame (@pxref{Frames}). This is useful if the
@node Echo Area Customization
@subsection Echo Area Customization
+@cindex echo area customization
These variables control details of how the echo area works.
@node Warning Variables
@subsection Warning Variables
+@cindex warning variables
Programs can customize how their warnings appear by binding
the variables described in this section.
@node Warning Options
@subsection Warning Options
+@cindex warning options
These variables are used by users to control what happens
when a Lisp program reports a warning.
@node Delayed Warnings
@subsection Delayed Warnings
+@cindex delayed warnings
Sometimes, you may wish to avoid showing a warning while a command is
running, and only show it only after the end of the command. You can
@node Temporary Displays
@section Temporary Displays
+@cindex temporary display
+@cindex temporary buffer display
Temporary displays are used by Lisp programs to put output into a
buffer and then present it to the user for perusal rather than for
@node Managing Overlays
@subsection Managing Overlays
+@cindex managing overlays
+@cindex overlays, managing
This section describes the functions to create, delete and move
overlays, and to examine their contents. Overlay changes are not
@node Overlay Properties
@subsection Overlay Properties
+@cindex overlay properties
Overlay properties are like text properties in that the properties that
alter how a character is displayed can come from either source. But in
@node Finding Overlays
@subsection Searching for Overlays
+@cindex searching for overlays
+@cindex overlays, searching for
@defun overlays-at pos &optional sorted
This function returns a list of all the overlays that cover the character at
@node Size of Displayed Text
@section Size of Displayed Text
+@cindex size of text on display
+@cindex character width on display
Since not all characters have the same width, these functions let you
check the width of a character. @xref{Primitive Indent}, and
@node Defining Faces
@subsection Defining Faces
+@cindex defining faces
@cindex face spec
The usual way to define a face is through the @code{defface} macro.
@node Attribute Functions
@subsection Face Attribute Functions
+@cindex face attributes, access and modification
This section describes functions for directly accessing and
modifying the attributes of a named face.
@node Displaying Faces
@subsection Displaying Faces
+@cindex displaying faces
+@cindex face merging
When Emacs displays a given piece of text, the visual appearance of
the text may be determined by faces drawn from different sources. If
@node Face Remapping
@subsection Face Remapping
+@cindex face remapping
The variable @code{face-remapping-alist} is used for buffer-local or
global changes in the appearance of a face. For instance, it is used
@node Basic Faces
@subsection Basic Faces
+@cindex basic faces
If your Emacs Lisp program needs to assign some faces to text, it is
often a good idea to use certain existing faces or inherit from them,
@node Font Lookup
@subsection Looking Up Fonts
+@cindex font lookup
+@cindex looking up fonts
@defun x-list-fonts name &optional reference-face frame maximum width
This function returns a list of available font names that match
@node Fontsets
@subsection Fontsets
+@cindex fontset
A @dfn{fontset} is a list of fonts, each assigned to a range of
character codes. An individual font cannot display the whole range of
@node Replacing Specs
@subsection Display Specs That Replace The Text
+@cindex replacing display specs
Some kinds of display specifications specify something to display
instead of the text that has the property. These are called
@node Defining Images
@subsection Defining Images
+@cindex define image
The functions @code{create-image}, @code{defimage} and
@code{find-image} provide convenient ways to create image descriptors.
@node Showing Images
@subsection Showing Images
+@cindex show image
You can use an image descriptor by setting up the @code{display}
property yourself, but it is easier to use the functions in this
@node Visiting Functions
@subsection Functions for Visiting Files
+@cindex visiting files, functions for
+@cindex how to visit files
This section describes the functions normally used to visit files.
For historical reasons, these functions have names starting with
@node Kinds of Files
@subsection Distinguishing Kinds of Files
+@cindex file classification
+@cindex classification of file types
This section describes how to distinguish various kinds of files, such
as directories, symbolic links, and ordinary files.
@node Unique File Names
@subsection Generating Unique File Names
+@cindex unique file names
+@cindex temporary files
Some programs need to write temporary files. Here is the usual way to
construct a name for such a file:
@node Creating Frames
@section Creating Frames
+@cindex frame creation
To create a new frame, call the function @code{make-frame}.
@node Initial Parameters
@subsection Initial Frame Parameters
+@cindex parameters of initial frame
You can specify the parameters for the initial startup frame by
setting @code{initial-frame-alist} in your init file (@pxref{Init
@node Position Parameters
@subsubsection Position Parameters
@cindex window position on display
+@cindex frame position
Position parameters' values are normally measured in pixels, but on
text terminals they count characters or lines instead.
@node Buffer Parameters
@subsubsection Buffer Parameters
+@cindex frame, which buffers to display
+@cindex buffers to display on frame
These frame parameters, meaningful on all kinds of terminals, deal
with which buffers have been, or should, be displayed in the frame.
you can get it with @code{minibuffer-window} (@pxref{Definition of
minibuffer-window}).
+@cindex frame without a minibuffer
However, you can also create a frame with no minibuffer. Such a frame
must use the minibuffer window of some other frame. When you create the
frame, you can explicitly specify the minibuffer window to use (in some
@node Pop-Up Menus
@section Pop-Up Menus
+@cindex menus, popup
A Lisp program can pop up a menu so that the user can choose an
alternative with the mouse. On a text terminal, if the mouse is not
@node Drag and Drop
@section Drag and Drop
+@cindex drag and drop
@vindex x-dnd-test-function
@vindex x-dnd-known-types
@node Core Advising Primitives
@subsection Primitives to manipulate advices
+@cindex advice, add and remove
@defmac add-function where place function &optional props
This macro is the handy way to add the advice @var{function} to the function
@node Advising Named Functions
@subsection Advising Named Functions
+@cindex advising named functions
A common use of advice is for named functions and macros.
You could just use @code{add-function} as in:
@node Porting old advices
@subsection Adapting code using the old defadvice
+@cindex old advices, porting
A lot of code uses the old @code{defadvice} mechanism, which is largely made
obsolete by the new @code{advice-add}, whose implementation and semantics is
@node Hash Access
@section Hash Table Access
+@cindex accessing hash tables
+@cindex hash table access
This section describes the functions for accessing and storing
associations in a hash table. In general, any Lisp object can be used
@node Accessing Documentation
@section Access to Documentation Strings
+@cindex accessing documentation strings
@defun documentation-property symbol property &optional verbatim
This function returns the documentation string recorded in
@node Help Functions
@section Help Functions
+@cindex help functions
Emacs provides a variety of built-in help functions, all accessible to
the user as subcommands of the prefix @kbd{C-h}. For more information
@node Controlling Active Maps
@section Controlling the Active Keymaps
+@cindex active keymap, controlling
@defvar global-map
This variable contains the default global keymap that maps Emacs
@node Scanning Keymaps
@section Scanning Keymaps
+@cindex scanning keymaps
+@cindex keymaps, scanning
This section describes functions used to scan all the current keymaps
for the sake of printing help information.
@node Modifying Menus
@subsection Modifying Menus
+@cindex menu modification
When you insert a new item in an existing menu, you probably want to
put it in a particular place among the menu's existing items. If you
@node List-related Predicates
@section Predicates on Lists
+@cindex predicates for lists
+@cindex list predicates
The following predicates test whether a Lisp object is an atom,
whether it is a cons cell or is a list, or whether it is the
@node List Variables
@section Modifying List Variables
+@cindex modify a list
+@cindex list modification
These functions, and one macro, provide convenient ways
to modify a list which is stored in a variable.
@node Setcar
@subsection Altering List Elements with @code{setcar}
+@cindex replace list element
+@cindex list, replace element
Changing the @sc{car} of a cons cell is done with @code{setcar}. When
used on a list, @code{setcar} replaces one element of a list with a
@node Setcdr
@subsection Altering the CDR of a List
+@cindex replace part of list
The lowest-level primitive for modifying a @sc{cdr} is @code{setcdr}:
@node Plist Access
@subsection Property Lists Outside Symbols
+@cindex plist access
+@cindex accessing plist properties
The following functions can be used to manipulate property lists.
They all compare property names using @code{eq}.
@node Loading Non-ASCII
@section Loading Non-@acronym{ASCII} Characters
+@cindex loading, and non-ASCII characters
+@cindex non-ASCII characters in loaded files
When Emacs Lisp programs contain string constants with non-@acronym{ASCII}
characters, these can be represented within Emacs either as unibyte
@node Where Defined
@section Which File Defined a Certain Symbol
+@cindex symbol, where defined
+@cindex where was a symbol defined
@defun symbol-file symbol &optional type
This function returns the name of the file that defined @var{symbol}.
@node Defining Macros
@section Defining Macros
+@cindex defining macros
+@cindex macro, how to define
A Lisp macro object is a list whose @sc{car} is @code{macro}, and
whose @sc{cdr} is a function. Expansion of the macro works
@node Problems with Macros
@section Common Problems Using Macros
+@cindex macro caveats
Macro expansion can have counterintuitive consequences. This
section describes some important consequences that can lead to
@node Predicates on Markers
@section Predicates on Markers
+@cindex predicates for markers
+@cindex markers, predicates for
You can test an object to see whether it is a marker, or whether it is
either an integer or a marker. The latter test is useful in connection
@node Creating Markers
@section Functions that Create Markers
+@cindex creating markers
+@cindex marker creation
When you create a new marker, you can make it point nowhere, or point
to the present position of point, or to the beginning or end of the
@node Information from Markers
@section Information from Markers
+@cindex marker information
This section describes the functions for accessing the components of a
marker object.
@node Moving Markers
@section Moving Marker Positions
+@cindex moving markers
+@cindex marker, how to move position
This section describes how to change the position of an existing
marker. When you do this, be sure you know whether the marker is used
@node Text from Minibuffer
@section Reading Text Strings with the Minibuffer
+@cindex minibuffer input, reading text strings
The most basic primitive for minibuffer input is
@code{read-from-minibuffer}, which can be used to read either a string
@node Object from Minibuffer
@section Reading Lisp Objects with the Minibuffer
+@cindex minibuffer input, reading lisp objects
This section describes functions for reading Lisp objects with the
minibuffer.
@node Multiple Queries
@section Asking Multiple Y-or-N Questions
+@cindex multiple yes-or-no questions
When you have a series of similar questions to ask, such as ``Do you
want to save this buffer'' for each buffer in turn, you should use
@node Minibuffer Contents
@section Minibuffer Contents
+@cindex access minibuffer contents
+@cindex minibuffer contents, accessing
These functions access the minibuffer prompt and contents.
@node Scanning Charsets
@section Scanning for Character Sets
+@cindex scanning for character sets
+@cindex character set, searching
Sometimes it is useful to find out which character set a particular
character belongs to. One use for this is in determining which coding
@node Specifying Coding Systems
@subsection Specifying a Coding System for One Operation
+@cindex specify coding system
+@cindex force coding system for operation
+@cindex coding system for operation
You can specify the coding system for a specific operation by binding
the variables @code{coding-system-for-read} and/or
@node Time of Day
@section Time of Day
+@cindex time of day
This section explains how to determine the current time and time
zone.
@node Time Conversion
@section Time Conversion
@cindex calendrical information
+@cindex time conversion
These functions convert time values (lists of two to four integers,
as explained in the previous section) into calendrical information and
@node Time Parsing
@section Parsing and Formatting Times
+@cindex time parsing
+@cindex time formatting
+@cindex formatting time values
These functions convert time values to text in a string, and vice versa.
Time values are lists of two to four integers (@pxref{Time of Day}).
@node Time Calculations
@section Time Calculations
+@cindex time calculations
+@cindex comparing time values
+@cindex calendrical computations
These functions perform calendrical computations using time values
(the kind of list that @code{current-time} returns).
@node Idle Timers
@section Idle Timers
+@cindex idle timers
Here is how to set up a timer that runs when Emacs is idle for a
certain length of time. Aside from how to set them up, idle timers
@node Screen Lines
@subsection Motion by Screen Lines
+@cindex screen lines, moving by
The line functions in the previous section count text lines, delimited
only by newline characters. By contrast, these functions count screen
@node Subprocess Creation
@section Functions that Create Subprocesses
+@cindex create subprocess
+@cindex process creation
There are three primitives that create a new subprocess in which to run
a program. One of them, @code{start-process}, creates an asynchronous
@node Process Information
@section Process Information
+@cindex process information
Several functions return information about processes.
@node Syntax of Regexps
@subsection Syntax of Regular Expressions
+@cindex regexp syntax
+@cindex syntax of regular expressions
Regular expressions have a syntax in which a few characters are
special constructs and the rest are @dfn{ordinary}. An ordinary
@node Regexp Special
@subsubsection Special Characters in Regular Expressions
+@cindex regexp, special characters in
Here is a list of the characters that are special in a regular
expression.
These functions operate on regular expressions.
+@cindex quote special characters in regexp
@defun regexp-quote string
This function returns a regular expression whose only exact match is
@var{string}. Using this regular expression in @code{looking-at} will
@end example
@end defun
+@cindex optimize regexp
@defun regexp-opt strings &optional paren
This function returns an efficient regular expression that will match
any of the strings in the list @var{strings}. This is useful when you
@node Predicates for Strings
@section Predicates for Strings
+@cindex predicates for strings
+@cindex string predicates
For more information about general sequence and array predicates,
see @ref{Sequences Arrays Vectors}, and @ref{Arrays}.
@node Creating Strings
@section Creating Strings
+@cindex creating strings
+@cindex string creation
The following functions create strings, either from scratch, or by
putting strings together, or by taking them apart.
@node Modifying Strings
@section Modifying Strings
+@cindex modifying strings
+@cindex string modification
The most basic way to alter the contents of an existing string is with
@code{aset} (@pxref{Array Functions}). @code{(aset @var{string}
@node Text Comparison
@section Comparison of Characters and Strings
@cindex string equality
+@cindex text comparison
@defun char-equal character1 character2
This function returns @code{t} if the arguments represent the same
@node Motion and Syntax
@section Motion and Syntax
+@cindex moving across syntax classes
+@cindex skipping characters of certain syntax
This section describes functions for moving across characters that
have certain syntax classes.
@node Parsing Expressions
@section Parsing Expressions
+@cindex parsing expressions
+@cindex scanning expressions
This section describes functions for parsing and scanning balanced
expressions. We will refer to such expressions as @dfn{sexps},
@node Motion via Parsing
@subsection Motion Commands Based on Parsing
+@cindex motion based on parsing
This section describes simple point-motion functions that operate
based on parsing expressions.
@node Position Parse
@subsection Finding the Parse State for a Position
+@cindex parse state for a position
For syntactic analysis, such as in indentation, often the useful
thing is to compute the syntactic state corresponding to a given buffer
@node Control Parsing
@subsection Parameters to Control Parsing
+@cindex parsing, control parameters
@defvar multibyte-syntax-as-symbol
If this variable is non-@code{nil}, @code{scan-sexps} treats all
@node Buffer Contents
@section Examining Buffer Contents
+@cindex buffer portion as string
This section describes functions that allow a Lisp program to
convert any portion of the text in the buffer into a string.
@node Examining Properties
@subsection Examining Text Properties
+@cindex examining text properties
+@cindex text properties, examining
The simplest way to examine text properties is to ask for the value of
a particular property of a particular character. For that, use
@node Changing Properties
@subsection Changing Text Properties
+@cindex changing text properties
+@cindex text properties, changing
The primitives for changing properties apply to a specified range of
text in a buffer or string. The function @code{set-text-properties}
@node Property Search
@subsection Text Property Search Functions
+@cindex searching text properties
+@cindex text properties, searching
In typical use of text properties, most of the time several or many
consecutive characters have the same value for a property. Rather than
@node Substitution
@section Substituting for a Character Code
+@cindex replace characters in region
+@cindex substitute characters
The following functions replace characters within a specified region
based on their character codes.
@node Variables with Restricted Values
@section Variables with Restricted Values
+@cindex lisp variables defined in C, restrictions
Ordinary Lisp variables can be assigned any value that is a valid
Lisp object. However, certain Lisp variables are not defined in Lisp,
@node Generalized Variables
@section Generalized Variables
+@cindex generalized variable
+@cindex place form
A @dfn{generalized variable} or @dfn{place form} is one of the many places
in Lisp memory where values can be stored. The simplest place form is
a regular Lisp variable. But the @sc{car}s and @sc{cdr}s of lists, elements
@node Recombining Windows
@section Recombining Windows
+@cindex recombining windows
+@cindex windows, recombining
When deleting the last sibling of a window @var{W}, its parent window
is deleted too, with @var{W} replacing it in the window tree. This