(elisp)Top


Next: Introduction Prev: (dir) Up: (dir)
Enter node , (file) or (file)node

Emacs Lisp
**********

This Info file contains edition 2.9 of the GNU Emacs Lisp Reference
Manual, corresponding to GNU Emacs version 22.2.

Introduction
Introduction and conventions used.
Lisp Data Types
Data types of objects in Emacs Lisp.
Numbers
Numbers and arithmetic functions.
Strings and Characters
Strings, and functions that work on them.
Lists
Lists, cons cells, and related functions.
Sequences Arrays Vectors
Lists, strings and vectors are called sequences.
Certain functions act on any kind of sequence. The description of vectors is here as well.
Hash Tables
Very fast lookup-tables.
Symbols
Symbols represent names, uniquely.
Evaluation
How Lisp expressions are evaluated.
Control Structures
Conditionals, loops, nonlocal exits.
Variables
Using symbols in programs to stand for values.
Functions
A function is a Lisp program
that can be invoked from other functions.
Macros
Macros are a way to extend the Lisp language.
Customization
Writing customization declarations.
Loading
Reading files of Lisp code into Lisp.
Byte Compilation
Compilation makes programs run faster.
Advising Functions
Adding to the definition of a function.
Debugging
Tools and tips for debugging Lisp programs.
Read and Print
Converting Lisp objects to text and back.
Minibuffers
Using the minibuffer to read input.
Command Loop
How the editor command loop works,
and how you can call its subroutines.
Keymaps
Defining the bindings from keys to commands.
Modes
Defining major and minor modes.
Documentation
Writing and using documentation strings.
Files
Accessing files.
Backups and Auto-Saving
Controlling how backups and auto-save
files are made.
Buffers
Creating and using buffer objects.
Windows
Manipulating windows and displaying buffers.
Frames
Making multiple system-level windows.
Positions
Buffer positions and motion functions.
Markers
Markers represent positions and update
automatically when the text is changed.
Text
Examining and changing text in buffers.
Non-ASCII Characters
Non-ASCII text in buffers and strings.
Searching and Matching
Searching buffers for strings or regexps.
Syntax Tables
The syntax table controls word and list parsing.
Abbrevs
How Abbrev mode works, and its data structures.
Processes
Running and communicating with subprocesses.
Display
Features for controlling the screen display.
System Interface
Getting the user id, system type, environment
variables, and other such things.
Appendices

Antinews
Info for users downgrading to Emacs 21.
GNU Free Documentation License
The license for this documentation
GPL
Conditions for copying and changing GNU Emacs.
Tips
Advice and coding conventions for Emacs Lisp.
GNU Emacs Internals
Building and dumping Emacs;
internal data structures.
Standard Errors
List of all error symbols.
Standard Buffer-Local Variables
List of variables buffer-local in all buffers.
Standard Keymaps
List of standard keymaps.
Standard Hooks
List of standard hook variables.
Index
Index including concepts, functions, variables,
and other terms.
 --- The Detailed Node Listing ---
 ---------------------------------

Here are other nodes that are inferiors of those already listed,
mentioned here so you can get to them in one step:

Introduction

Caveats
Flaws and a request for help.
Lisp History
Emacs Lisp is descended from Maclisp.
Conventions
How the manual is formatted.
Version Info
Which Emacs version is running?
Acknowledgements
The authors, editors, and sponsors of this manual.
Conventions

Some Terms
Explanation of terms we use in this manual.
nil and t
How the symbols `nil' and `t' are used.
Evaluation Notation
The format we use for examples of evaluation.
Printing Notation
The format we use for examples that print output.
Error Messages
The format we use for examples of errors.
Buffer Text Notation
The format we use for buffer contents in examples.
Format of Descriptions
Notation for describing functions, variables, etc.
Format of Descriptions

A Sample Function Description
A description of an imaginary
function, `foo'.
A Sample Variable Description
A description of an imaginary
variable, `electric-future-map'.
Lisp Data Types

Printed Representation
How Lisp objects are represented as text.
Comments
Comments and their formatting conventions.
Programming Types
Types found in all Lisp systems.
Editing Types
Types specific to Emacs.
Circular Objects
Read syntax for circular structure.
Type Predicates
Tests related to types.
Equality Predicates
Tests of equality between any two objects.
Programming Types

Integer Type
Numbers without fractional parts.
Floating Point Type
Numbers with fractional parts and with a large range.
Character Type
The representation of letters, numbers and
control characters.
Symbol Type
A multi-use object that refers to a function,
variable, property list, or itself.
Sequence Type
Both lists and arrays are classified as sequences.
Cons Cell Type
Cons cells, and lists (which are made from cons cells).
Array Type
Arrays include strings and vectors.
String Type
An (efficient) array of characters.
Vector Type
One-dimensional arrays.
Char-Table Type
One-dimensional sparse arrays indexed by characters.
Bool-Vector Type
One-dimensional arrays of `t' or `nil'.
Hash Table Type
Super-fast lookup tables.
Function Type
A piece of executable code you can call from elsewhere.
Macro Type
A method of expanding an expression into another
expression, more fundamental but less pretty.
Primitive Function Type
A function written in C, callable from Lisp.
Byte-Code Type
A function written in Lisp, then compiled.
Autoload Type
A type used for automatically loading seldom-used
functions.
Character Type

Basic Char Syntax
Syntax for regular characters.
General Escape Syntax
How to specify characters by their codes.
Ctl-Char Syntax
Syntax for control characters.
Meta-Char Syntax
Syntax for meta-characters.
Other Char Bits
Syntax for hyper-, super-, and alt-characters.
Cons Cell and List Types

Box Diagrams
Drawing pictures of lists.
Dotted Pair Notation
An alternative syntax for lists.
Association List Type
A specially constructed list.
String Type

Syntax for Strings
How to specify Lisp strings.
Non-ASCII in Strings
International characters in strings.
Nonprinting Characters
Literal unprintable characters in strings.
Text Props and Strings
Strings with text properties.
Editing Types

Buffer Type
The basic object of editing.
Marker Type
A position in a buffer.
Window Type
What makes buffers visible.
Frame Type
Windows subdivide frames.
Window Configuration Type
Recording the way a frame is subdivided.
Frame Configuration Type
Recording the status of all frames.
Process Type
A process running on the underlying OS.
Stream Type
Receive or send characters.
Keymap Type
What function a keystroke invokes.
Overlay Type
How an overlay is represented.
Numbers

Integer Basics
Representation and range of integers.
Float Basics
Representation and range of floating point.
Predicates on Numbers
Testing for numbers.
Comparison of Numbers
Equality and inequality predicates.
Numeric Conversions
Converting float to integer and vice versa.
Arithmetic Operations
How to add, subtract, multiply and divide.
Rounding Operations
Explicitly rounding floating point numbers.
Bitwise Operations
Logical and, or, not, shifting.
Math Functions
Trig, exponential and logarithmic functions.
Random Numbers
Obtaining random integers, predictable or not.
Strings and Characters

String Basics
Basic properties of strings and characters.
Predicates for Strings
Testing whether an object is a string or char.
Creating Strings
Functions to allocate new strings.
Modifying Strings
Altering the contents of an existing string.
Text Comparison
Comparing characters or strings.
String Conversion
Converting characters to strings and vice versa.
Formatting Strings
`format': Emacs's analogue of `printf'.
Case Conversion
Case conversion functions.
Case Tables
Customizing case conversion.
Lists

Cons Cells
How lists are made out of cons cells.
List-related Predicates
Is this object a list? Comparing two lists.
List Elements
Extracting the pieces of a list.
Building Lists
Creating list structure.
List Variables
Modifying lists stored in variables.
Modifying Lists
Storing new pieces into an existing list.
Sets And Lists
A list can represent a finite mathematical set.
Association Lists
A list can represent a finite relation or mapping.
Rings
Managing a fixed-size ring of objects.
Modifying Existing List Structure

Setcar
Replacing an element in a list.
Setcdr
Replacing part of the list backbone.
This can be used to remove or add elements.
Rearrangement
Reordering the elements in a list; combining lists.
Sequences, Arrays, and Vectors

Sequence Functions
Functions that accept any kind of sequence.
Arrays
Characteristics of arrays in Emacs Lisp.
Array Functions
Functions specifically for arrays.
Vectors
Special characteristics of Emacs Lisp vectors.
Vector Functions
Functions specifically for vectors.
Char-Tables
How to work with char-tables.
Bool-Vectors
How to work with bool-vectors.
Hash Tables

Creating Hash
Functions to create hash tables.
Hash Access
Reading and writing the hash table contents.
Defining Hash
Defining new comparison methods
Other Hash
Miscellaneous.
Symbols

Symbol Components
Symbols have names, values, function definitions
and property lists.
Definitions
A definition says how a symbol will be used.
Creating Symbols
How symbols are kept unique.
Property Lists
Each symbol has a property list
for recording miscellaneous information.
Property Lists

Plists and Alists
Comparison of the advantages of property
lists and association lists.
Symbol Plists
Functions to access symbols' property lists.
Other Plists
Accessing property lists stored elsewhere.
Evaluation

Intro Eval
Evaluation in the scheme of things.
Forms
How various sorts of objects are evaluated.
Quoting
Avoiding evaluation (to put constants in
the program).
Eval
How to invoke the Lisp interpreter explicitly.
Kinds of Forms

Self-Evaluating Forms
Forms that evaluate to themselves.
Symbol Forms
Symbols evaluate as variables.
Classifying Lists
How to distinguish various sorts of list forms.
Function Indirection
When a symbol appears as the car of a list,
we find the real function via the symbol.
Function Forms
Forms that call functions.
Macro Forms
Forms that call macros.
Special Forms
"Special forms" are idiosyncratic primitives,
most of them extremely important.
Autoloading
Functions set up to load files
containing their real definitions.
Control Structures

Sequencing
Evaluation in textual order.
Conditionals
`if', `cond', `when', `unless'.
Combining Conditions
`and', `or', `not'.
Iteration
`while' loops.
Nonlocal Exits
Jumping out of a sequence.
Nonlocal Exits

Catch and Throw
Nonlocal exits for the program's own purposes.
Examples of Catch
Showing how such nonlocal exits can be written.
Errors
How errors are signaled and handled.
Cleanups
Arranging to run a cleanup form if an
error happens.
Errors

Signaling Errors
How to report an error.
Processing of Errors
What Emacs does when you report an error.
Handling Errors
How you can trap errors and continue execution.
Error Symbols
How errors are classified for trapping them.
Standard Errors
List of all error symbols.
Variables

Global Variables
Variable values that exist permanently, everywhere.
Constant Variables
Certain "variables" have values that never change.
Local Variables
Variable values that exist only temporarily.
Void Variables
Symbols that lack values.
Defining Variables
A definition says a symbol is used as a variable.
Tips for Defining
Things you should think about when you
define a variable.
Accessing Variables
Examining values of variables whose names
are known only at run time.
Setting Variables
Storing new values in variables.
Variable Scoping
How Lisp chooses among local and global values.
Buffer-Local Variables
Variable values in effect only in one buffer.
Future Local Variables
New kinds of local values we might add some day.
File Local Variables
Handling local variable lists in files.
Variable Aliases
Variables that are aliases for other variables.
Variables with Restricted Values
Non-constant variables whose value can
_not_ be an arbitrary Lisp object.
Standard Buffer-Local Variables
List of variables buffer-local in all buffers.
Scoping Rules for Variable Bindings

Scope
Scope means where in the program a value
is visible. Comparison with other languages.
Extent
Extent means how long in time a value exists.
Impl of Scope
Two ways to implement dynamic scoping.
Using Scoping
How to use dynamic scoping carefully and
avoid problems.
Buffer-Local Variables

Intro to Buffer-Local
Introduction and concepts.
Creating Buffer-Local
Creating and destroying buffer-local bindings.
Default Value
The default value is seen in buffers
that don't have their own buffer-local values.
Functions

What Is a Function
Lisp functions vs primitives; terminology.
Lambda Expressions
How functions are expressed as Lisp objects.
Function Names
A symbol can serve as the name of a function.
Defining Functions
Lisp expressions for defining functions.
Calling Functions
How to use an existing function.
Mapping Functions
Applying a function to each element of a list, etc.
Anonymous Functions
Lambda-expressions are functions with no names.
Function Cells
Accessing or setting the function definition
of a symbol.
Obsolete Functions
Declaring functions obsolete.
Inline Functions
Defining functions that the compiler will open code.
Function Safety
Determining whether a function is safe to call.
Related Topics
Cross-references to specific Lisp primitives
that have a special bearing on how functions work.
Lambda Expressions

Lambda Components
The parts of a lambda expression.
Simple Lambda
A simple example.
Argument List
Details and special features of argument lists.
Function Documentation
How to put documentation in a function.
Macros

Simple Macro
A basic example.
Expansion
How, when and why macros are expanded.
Compiling Macros
How macros are expanded by the compiler.
Defining Macros
How to write a macro definition.
Backquote
Easier construction of list structure.
Problems with Macros
Don't evaluate the macro arguments too many times.
Don't hide the user's variables.
Indenting Macros
Specifying how to indent macro calls.
Common Problems Using Macros

Wrong Time
Do the work in the expansion, not in the macro.
Argument Evaluation
The expansion should evaluate each macro arg once.
Surprising Local Vars
Local variable bindings in the expansion
require special care.
Eval During Expansion
Don't evaluate them; put them in the expansion.
Repeated Expansion
Avoid depending on how many times expansion is done.
Writing Customization Definitions

Common Keywords
Common keyword arguments for all kinds of
customization declarations.
Group Definitions
Writing customization group definitions.
Variable Definitions
Declaring user options.
Customization Types
Specifying the type of a user option.
Customization Types

Simple Types
Simple customization types: sexp, integer, number,
string, file, directory, alist.
Composite Types
Build new types from other types or data.
Splicing into Lists
Splice elements into list with `:inline'.
Type Keywords
Keyword-argument pairs in a customization type.
Defining New Types
Give your type a name.
Loading

How Programs Do Loading
The `load' function and others.
Load Suffixes
Details about the suffixes that `load' tries.
Library Search
Finding a library to load.
Loading Non-ASCII
Non-ASCII characters in Emacs Lisp files.
Autoload
Setting up a function to autoload.
Repeated Loading
Precautions about loading a file twice.
Named Features
Loading a library if it isn't already loaded.
Where Defined
Finding which file defined a certain symbol.
Unloading
How to "unload" a library that was loaded.
Hooks for Loading
Providing code to be run when
particular libraries are loaded.
Byte Compilation

Speed of Byte-Code
An example of speedup from byte compilation.
Compilation Functions
Byte compilation functions.
Docs and Compilation
Dynamic loading of documentation strings.
Dynamic Loading
Dynamic loading of individual functions.
Eval During Compile
Code to be evaluated when you compile.
Compiler Errors
Handling compiler error messages.
Byte-Code Objects
The data type used for byte-compiled functions.
Disassembly
Disassembling byte-code; how to read byte-code.
Advising Emacs Lisp Functions

Simple Advice
A simple example to explain the basics of advice.
Defining Advice
Detailed description of `defadvice'.
Around-Advice
Wrapping advice around a function's definition.
Computed Advice
is to `defadvice' as `fset' is to `defun'.
Activation of Advice
Advice doesn't do anything until you activate it.
Enabling Advice
You can enable or disable each piece of advice.
Preactivation
Preactivation is a way of speeding up the
loading of compiled advice.
Argument Access in Advice
How advice can access the function's arguments.
Advising Primitives
Accessing arguments when advising a primitive.
Combined Definition
How advice is implemented.
Debugging Lisp Programs

Debugger
How the Emacs Lisp debugger is implemented.
Edebug
A source-level Emacs Lisp debugger.
Syntax Errors
How to find syntax errors.
Test Coverage
Ensuring you have tested all branches in your code.
Compilation Errors
How to find errors that show up in
byte compilation.
The Lisp Debugger

Error Debugging
Entering the debugger when an error happens.
Infinite Loops
Stopping and debugging a program that doesn't exit.
Function Debugging
Entering it when a certain function is called.
Explicit Debug
Entering it at a certain point in the program.
Using Debugger
What the debugger does; what you see while in it.
Debugger Commands
Commands used while in the debugger.
Invoking the Debugger
How to call the function `debug'.
Internals of Debugger
Subroutines of the debugger, and global variables.
Edebug

Using Edebug
Introduction to use of Edebug.
Instrumenting
You must instrument your code
in order to debug it with Edebug.
Edebug Execution Modes
Execution modes, stopping more or less often.
Jumping
Commands to jump to a specified place.
Edebug Misc
Miscellaneous commands.
Breaks
Setting breakpoints to make the program stop.
Trapping Errors
Trapping errors with Edebug.
Edebug Views
Views inside and outside of Edebug.
Edebug Eval
Evaluating expressions within Edebug.
Eval List
Expressions whose values are displayed
each time you enter Edebug.
Printing in Edebug
Customization of printing.
Trace Buffer
How to produce trace output in a buffer.
Coverage Testing
How to test evaluation coverage.
The Outside Context
Data that Edebug saves and restores.
Edebug and Macros
Specifying how to handle macro calls.
Edebug Options
Option variables for customizing Edebug.
Debugging Invalid Lisp Syntax

Excess Open
How to find a spurious open paren or missing close.
Excess Close
How to find a spurious close paren or missing open.
Reading and Printing Lisp Objects

Streams Intro
Overview of streams, reading and printing.
Input Streams
Various data types that can be used as
input streams.
Input Functions
Functions to read Lisp objects from text.
Output Streams
Various data types that can be used as
output streams.
Output Functions
Functions to print Lisp objects as text.
Output Variables
Variables that control what the printing
functions do.
Minibuffers

Intro to Minibuffers
Basic information about minibuffers.
Text from Minibuffer
How to read a straight text string.
Object from Minibuffer
How to read a Lisp object or expression.
Minibuffer History
Recording previous minibuffer inputs
so the user can reuse them.
Initial Input
Specifying initial contents for the minibuffer.
Completion
How to invoke and customize completion.
Yes-or-No Queries
Asking a question with a simple answer.
Multiple Queries
Asking a series of similar questions.
Reading a Password
Reading a password from the terminal.
Minibuffer Commands
Commands used as key bindings in minibuffers.
Minibuffer Contents
How such commands access the minibuffer text.
Minibuffer Windows
Operating on the special minibuffer windows.
Recursive Mini
Whether recursive entry to minibuffer is allowed.
Minibuffer Misc
Various customization hooks and variables.
Completion

Basic Completion
Low-level functions for completing strings.
(These are too low level to use the minibuffer.)
Minibuffer Completion
Invoking the minibuffer with completion.
Completion Commands
Minibuffer commands that do completion.
High-Level Completion
Convenient special cases of completion
(reading buffer name, file name, etc.)
Reading File Names
Using completion to read file names.
Programmed Completion
Finding the completions for a given file name.
Command Loop

Command Overview
How the command loop reads commands.
Defining Commands
Specifying how a function should read arguments.
Interactive Call
Calling a command, so that it will read arguments.
Distinguish Interactive
Making a command distinguish interactive calls.
Command Loop Info
Variables set by the command loop for you to examine.
Adjusting Point
Adjustment of point after a command.
Input Events
What input looks like when you read it.
Reading Input
How to read input events from the keyboard or mouse.
Special Events
Events processed immediately and individually.
Waiting
Waiting for user input or elapsed time.
Quitting
How C-g works. How to catch or defer quitting.
Prefix Command Arguments
How the commands to set prefix args work.
Recursive Editing
Entering a recursive edit,
and why you usually shouldn't.
Disabling Commands
How the command loop handles disabled commands.
Command History
How the command history is set up, and how accessed.
Keyboard Macros
How keyboard macros are implemented.
Defining Commands

Using Interactive
General rules for `interactive'.
Interactive Codes
The standard letter-codes for reading arguments
in various ways.
Interactive Examples
Examples of how to read interactive arguments.
Input Events

Keyboard Events
Ordinary characters--keys with symbols on them.
Function Keys
Function keys--keys with names, not symbols.
Mouse Events
Overview of mouse events.
Click Events
Pushing and releasing a mouse button.
Drag Events
Moving the mouse before releasing the button.
Button-Down Events
A button was pushed and not yet released.
Repeat Events
Double and triple click (or drag, or down).
Motion Events
Just moving the mouse, not pushing a button.
Focus Events
Moving the mouse between frames.
Misc Events
Other events the system can generate.
Event Examples
Examples of the lists for mouse events.
Classifying Events
Finding the modifier keys in an event symbol.
Accessing Mouse
Functions to extract info from mouse events.
Accessing Scroll
Functions to get info from scroll bar events.
Strings of Events
Special considerations for putting
keyboard character events in a string.
Reading Input

Key Sequence Input
How to read one key sequence.
Reading One Event
How to read just one event.
Event Mod
How Emacs modifies events as they are read.
Invoking the Input Method
How reading an event uses the input method.
Quoted Character Input
Asking the user to specify a character.
Event Input Misc
How to reread or throw away input events.
Keymaps

Key Sequences
Key sequences as Lisp objects.
Keymap Basics
Basic concepts of keymaps.
Format of Keymaps
What a keymap looks like as a Lisp object.
Creating Keymaps
Functions to create and copy keymaps.
Inheritance and Keymaps
How one keymap can inherit the bindings
of another keymap.
Prefix Keys
Defining a key with a keymap as its definition.
Active Keymaps
How Emacs searches the active keymaps
for a key binding.
Searching Keymaps
A pseudo-Lisp summary of searching active maps.
Controlling Active Maps
Each buffer has a local keymap
to override the standard (global) bindings. A minor mode can also override them.
Key Lookup
How extracting elements from keymaps works.
Functions for Key Lookup
How to request key lookup.
Changing Key Bindings
Redefining a key in a keymap.
Remapping Commands
A keymap can translate one command to another.
Translation Keymaps
Keymaps for translating sequences of events.
Key Binding Commands
Interactive interfaces for redefining keys.
Scanning Keymaps
Looking through all keymaps, for printing help.
Menu Keymaps
A keymap can define a menu for X
or for use from the terminal.
Standard Keymaps
List of standard keymaps.
Major and Minor Modes

Hooks
How to use hooks; how to write code that
provides hooks.
Major Modes
Defining major modes.
Minor Modes
Defining minor modes.
Mode Line Format
Customizing the text that appears in the mode line.
Imenu
How a mode can provide a menu
of definitions in the buffer.
Font Lock Mode
How modes can highlight text according to syntax.
Desktop Save Mode
How modes can have buffer state saved between
Emacs sessions.
Menu Keymaps

Defining Menus
How to make a keymap that defines a menu.
Mouse Menus
How users actuate the menu with the mouse.
Keyboard Menus
How users actuate the menu with the keyboard.
Menu Example
Making a simple menu.
Menu Bar
How to customize the menu bar.
Tool Bar
A tool bar is a row of images.
Modifying Menus
How to add new items to a menu.
Defining Menus

Simple Menu Items
A simple kind of menu key binding,
limited in capabilities.
Extended Menu Items
More powerful menu item definitions
let you specify keywords to enable various features.
Menu Separators
Drawing a horizontal line through a menu.
Alias Menu Items
Using command aliases in menu items.
Major and Minor Modes

Hooks
How to use hooks; how to write code that provides hooks.
Major Modes
Defining major modes.
Minor Modes
Defining minor modes.
Mode Line Format
Customizing the text that appears in the mode line.
Imenu
How a mode can provide a menu
of definitions in the buffer.
Font Lock Mode
How modes can highlight text according to syntax.
Desktop Save Mode
How modes can have buffer state saved between
Emacs sessions.
Major Modes

Major Mode Basics
Major Mode Conventions
Coding conventions for keymaps, etc.
Example Major Modes
Text mode and Lisp modes.
Auto Major Mode
How Emacs chooses the major mode automatically.
Mode Help
Finding out how to use a mode.
Derived Modes
Defining a new major mode based on another major
mode.
Generic Modes
Defining a simple major mode that supports
comment syntax and Font Lock mode.
Mode Hooks
Hooks run at the end of major mode functions.
Minor Modes

Minor Mode Conventions
Tips for writing a minor mode.
Keymaps and Minor Modes
How a minor mode can have its own keymap.
Defining Minor Modes
A convenient facility for defining minor modes.
Mode Line Format

Mode Line Basics
Mode Line Data
The data structure that controls the mode line.
Mode Line Variables
Variables used in that data structure.
%-Constructs
Putting information into a mode line.
Properties in Mode
Using text properties in the mode line.
Header Lines
Like a mode line, but at the top.
Emulating Mode Line
Formatting text as the mode line would.
Font Lock Mode

Font Lock Basics
Overview of customizing Font Lock.
Search-based Fontification
Fontification based on regexps.
Customizing Keywords
Customizing search-based fontification.
Other Font Lock Variables
Additional customization facilities.
Levels of Font Lock
Each mode can define alternative levels
so that the user can select more or less.
Precalculated Fontification
How Lisp programs that produce the buffer
contents can also specify how to fontify it.
Faces for Font Lock
Special faces specifically for Font Lock.
Syntactic Font Lock
Fontification based on syntax tables.
Setting Syntax Properties
Defining character syntax based on context
using the Font Lock mechanism.
Multiline Font Lock
How to coerce Font Lock into properly
highlighting multiline constructs.
Multiline Font Lock Constructs

Font Lock Multiline
Marking multiline chunks with a text property
Region to Fontify
Controlling which region gets refontified
after a buffer change.
Documentation

Documentation Basics
Good style for doc strings.
Where to put them. How Emacs stores them.
Accessing Documentation
How Lisp programs can access doc strings.
Keys in Documentation
Substituting current key bindings.
Describing Characters
Making printable descriptions of
non-printing characters and key sequences.
Help Functions
Subroutines used by Emacs help facilities.
Files

Visiting Files
Reading files into Emacs buffers for editing.
Saving Buffers
Writing changed buffers back into files.
Reading from Files
Reading files into other buffers.
Writing to Files
Writing new files from parts of buffers.
File Locks
Locking and unlocking files, to prevent
simultaneous editing by two people.
Information about Files
Testing existence, accessibility, size of files.
Changing Files
Renaming files, changing protection, etc.
File Names
Decomposing and expanding file names.
Contents of Directories
Getting a list of the files in a directory.
Create/Delete Dirs
Creating and Deleting Directories.
Magic File Names
Defining "magic" special handling
for certain file names.
Format Conversion
Conversion to and from various file formats.
Visiting Files

Visiting Functions
The usual interface functions for visiting.
Subroutines of Visiting
Lower-level subroutines that they use.
Information about Files

Testing Accessibility
Is a given file readable? Writable?
Kinds of Files
Is it a directory? A symbolic link?
Truenames
Eliminating symbolic links from a file name.
File Attributes
How large is it? Any other names? Etc.
Locating Files
How to find a file in standard places.
File Names

File Name Components
The directory part of a file name, and the rest.
Relative File Names
Some file names are relative to a
current directory.
Directory Names
A directory's name as a directory
is different from its name as a file.
File Name Expansion
Converting relative file names to absolute ones.
Unique File Names
Generating names for temporary files.
File Name Completion
Finding the completions for a given file name.
Standard File Names
If your package uses a fixed file name,
how to handle various operating systems simply.
Backups and Auto-Saving

Backup Files
How backup files are made; how their names
are chosen.
Auto-Saving
How auto-save files are made; how their
names are chosen.
Reverting
`revert-buffer', and how to customize
what it does.
Backup Files

Making Backups
How Emacs makes backup files, and when.
Rename or Copy
Two alternatives: renaming the old file
or copying it.
Numbered Backups
Keeping multiple backups for each source file.
Backup Names
How backup file names are computed; customization.
Buffers

Buffer Basics
What is a buffer?
Current Buffer
Designating a buffer as current
so primitives will access its contents.
Buffer Names
Accessing and changing buffer names.
Buffer File Name
The buffer file name indicates which file
is visited.
Buffer Modification
A buffer is "modified" if it needs to be saved.
Modification Time
Determining whether the visited file was changed
``behind Emacs's back''.
Read Only Buffers
Modifying text is not allowed in a
read-only buffer.
The Buffer List
How to look at all the existing buffers.
Creating Buffers
Functions that create buffers.
Killing Buffers
Buffers exist until explicitly killed.
Indirect Buffers
An indirect buffer shares text with some
other buffer.
Buffer Gap
The gap in the buffer.
Windows

Basic Windows
Basic information on using windows.
Splitting Windows
Splitting one window into two windows.
Deleting Windows
Deleting a window gives its space to other windows.
Selecting Windows
The selected window is the one that you edit in.
Cyclic Window Ordering
Moving around the existing windows.
Buffers and Windows
Each window displays the contents of a buffer.
Displaying Buffers
Higher-level functions for displaying a buffer
and choosing a window for it.
Choosing Window
How to choose a window for displaying a buffer.
Window Point
Each window has its own location of point.
Window Start
The display-start position controls which text
is on-screen in the window.
Textual Scrolling
Moving text up and down through the window.
Vertical Scrolling
Moving the contents up and down on the window.
Horizontal Scrolling
Moving the contents sideways on the window.
Size of Window
Accessing the size of a window.
Resizing Windows
Changing the size of a window.
Coordinates and Windows
Converting coordinates to windows.
Window Tree
The layout and sizes of all windows in a frame.
Window Configurations
Saving and restoring the state of the screen.
Window Hooks
Hooks for scrolling, window size changes,
redisplay going past a certain point, or window configuration changes.
Frames

Creating Frames
Creating additional frames.
Multiple Displays
Creating frames on other displays.
Frame Parameters
Controlling frame size, position, font, etc.
Frame Titles
Automatic updating of frame titles.
Deleting Frames
Frames last until explicitly deleted.
Finding All Frames
How to examine all existing frames.
Frames and Windows
A frame contains windows;
display of text always works through windows.
Minibuffers and Frames
How a frame finds the minibuffer to use.
Input Focus
Specifying the selected frame.
Visibility of Frames
Frames may be visible or invisible, or icons.
Raising and Lowering
Raising a frame makes it hide other windows;
lowering it puts it underneath the others.
Frame Configurations
Saving the state of all frames.
Mouse Tracking
Getting events that say when the mouse moves.
Mouse Position
Asking where the mouse is, or moving it.
Pop-Up Menus
Displaying a menu for the user to select from.
Dialog Boxes
Displaying a box to ask yes or no.
Pointer Shape
Specifying the shape of the mouse pointer.
Window System Selections
Transferring text to and from other windows.
Drag and Drop
Internals of Drag-and-Drop implementation.
Color Names
Getting the definitions of color names.
Text Terminal Colors
Defining colors for text-only terminals.
Resources
Getting resource values from the server.
Display Feature Testing
Determining the features of a terminal.
Frame Parameters

Parameter Access
How to change a frame's parameters.
Initial Parameters
Specifying frame parameters when you make a frame.
Window Frame Parameters
List of frame parameters for window systems.
Size and Position
Changing the size and position of a frame.
Geometry
Parsing geometry specifications.
Window Frame Parameters

Basic Parameters
Parameters that are fundamental.
Position Parameters
The position of the frame on the screen.
Size Parameters
Frame's size.
Layout Parameters
Size of parts of the frame, and
enabling or disabling some parts.
Buffer Parameters
Which buffers have been or should be shown.
Management Parameters
Communicating with the window manager.
Cursor Parameters
Controlling the cursor appearance.
Color Parameters
Colors of various parts of the frame.
Positions

Point
The special position where editing takes place.
Motion
Changing point.
Excursions
Temporary motion and buffer changes.
Narrowing
Restricting editing to a portion of the buffer.
Motion

Character Motion
Moving in terms of characters.
Word Motion
Moving in terms of words.
Buffer End Motion
Moving to the beginning or end of the buffer.
Text Lines
Moving in terms of lines of text.
Screen Lines
Moving in terms of lines as displayed.
List Motion
Moving by parsing lists and sexps.
Skipping Characters
Skipping characters belonging to a certain set.
Markers

Overview of Markers
The components of a marker, and how it relocates.
Predicates on Markers
Testing whether an object is a marker.
Creating Markers
Making empty markers or markers at certain places.
Information from Markers
Finding the marker's buffer or character
position.
Marker Insertion Types
Two ways a marker can relocate when you
insert where it points.
Moving Markers
Moving the marker to a new buffer or position.
The Mark
How "the mark" is implemented with a marker.
The Region
How to access "the region".
Text

Near Point
Examining text in the vicinity of point.
Buffer Contents
Examining text in a general fashion.
Comparing Text
Comparing substrings of buffers.
Insertion
Adding new text to a buffer.
Commands for Insertion
User-level commands to insert text.
Deletion
Removing text from a buffer.
User-Level Deletion
User-level commands to delete text.
The Kill Ring
Where removed text sometimes is saved for
later use.
Undo
Undoing changes to the text of a buffer.
Maintaining Undo
How to enable and disable undo information.
How to control how much information is kept.
Filling
Functions for explicit filling.
Margins
How to specify margins for filling commands.
Adaptive Fill
Adaptive Fill mode chooses a fill prefix
from context.
Auto Filling
How auto-fill mode is implemented to break lines.
Sorting
Functions for sorting parts of the buffer.
Columns
Computing horizontal positions, and using them.
Indentation
Functions to insert or adjust indentation.
Case Changes
Case conversion of parts of the buffer.
Text Properties
Assigning Lisp property lists to text characters.
Substitution
Replacing a given character wherever it appears.
Transposition
Swapping two portions of a buffer.
Registers
How registers are implemented. Accessing
the text or position stored in a register.
Base 64
Conversion to or from base 64 encoding.
MD5 Checksum
Compute the MD5 "message digest"/"checksum".
Atomic Changes
Installing several buffer changes "atomically".
Change Hooks
Supplying functions to be run when text is changed.
The Kill Ring

Kill Ring Concepts
What text looks like in the kill ring.
Kill Functions
Functions that kill text.
Yanking
How yanking is done.
Yank Commands
Commands that access the kill ring.
Low-Level Kill Ring
Functions and variables for kill ring access.
Internals of Kill Ring
Variables that hold kill-ring data.
Indentation

Primitive Indent
Functions used to count and insert indentation.
Mode-Specific Indent
Customize indentation for different modes.
Region Indent
Indent all the lines in a region.
Relative Indent
Indent the current line based on previous lines.
Indent Tabs
Adjustable, typewriter-like tab stops.
Motion by Indent
Move to first non-blank character.
Text Properties

Examining Properties
Looking at the properties of one character.
Changing Properties
Setting the properties of a range of text.
Property Search
Searching for where a property changes value.
Special Properties
Particular properties with special meanings.
Format Properties
Properties for representing formatting of text.
Sticky Properties
How inserted text gets properties from
neighboring text.
Saving Properties
Saving text properties in files, and reading
them back.
Lazy Properties
Computing text properties in a lazy fashion
only when text is examined.
Clickable Text
Using text properties to make regions of text
do something when you click on them.
Links and Mouse-1
How to make <Mouse-1> follow a link.
Fields
The `field' property defines
fields within the buffer.
Not Intervals
Why text properties do not use
Lisp-visible text intervals.
Non-ASCII Characters

Text Representations
Unibyte and multibyte representations
Converting Representations
Converting unibyte to multibyte and vice versa.
Selecting a Representation
Treating a byte sequence as unibyte or multi.
Character Codes
How unibyte and multibyte relate to
codes of individual characters.
Character Sets
The space of possible character codes
is divided into various character sets.
Chars and Bytes
More information about multibyte encodings.
Splitting Characters
Converting a character to its byte sequence.
Scanning Charsets
Which character sets are used in a buffer?
Translation of Characters
Translation tables are used for conversion.
Coding Systems
Coding systems are conversions for saving files.
Input Methods
Input methods allow users to enter various
non-ASCII characters without special keyboards.
Locales
Interacting with the POSIX locale.
Coding Systems

Coding System Basics
Basic concepts.
Encoding and I/O
How file I/O functions handle coding systems.
Lisp and Coding Systems
Functions to operate on coding system names.
User-Chosen Coding Systems
Asking the user to choose a coding system.
Default Coding Systems
Controlling the default choices.
Specifying Coding Systems
Requesting a particular coding system
for a single file operation.
Explicit Encoding
Encoding or decoding text without doing I/O.
Terminal I/O Encoding
Use of encoding for terminal I/O.
MS-DOS File Types
How DOS "text" and "binary" files
relate to coding systems.
Searching and Matching

String Search
Search for an exact match.
Searching and Case
Case-independent or case-significant searching.
Regular Expressions
Describing classes of strings.
Regexp Search
Searching for a match for a regexp.
POSIX Regexps
Searching POSIX-style for the longest match.
Match Data
Finding out which part of the text matched,
after a string or regexp search.
Search and Replace
Commands that loop, searching and replacing.
Standard Regexps
Useful regexps for finding sentences, pages,...
Regular Expressions

Syntax of Regexps
Rules for writing regular expressions.
Regexp Example
Illustrates regular expression syntax.
Regexp Functions
Functions for operating on regular expressions.
Syntax of Regular Expressions

Regexp Special
Special characters in regular expressions.
Char Classes
Character classes used in regular expressions.
Regexp Backslash
Backslash-sequences in regular expressions.
The Match Data

Replacing Match
Replacing a substring that was matched.
Simple Match Data
Accessing single items of match data,
such as where a particular subexpression started.
Entire Match Data
Accessing the entire match data at once, as a list.
Saving Match Data
Saving and restoring the match data.
Syntax Tables

Syntax Basics
Basic concepts of syntax tables.
Syntax Descriptors
How characters are classified.
Syntax Table Functions
How to create, examine and alter syntax tables.
Syntax Properties
Overriding syntax with text properties.
Motion and Syntax
Moving over characters with certain syntaxes.
Parsing Expressions
Parsing balanced expressions
using the syntax table.
Standard Syntax Tables
Syntax tables used by various major modes.
Syntax Table Internals
How syntax table information is stored.
Categories
Another way of classifying character syntax.
Syntax Descriptors

Syntax Class Table
Table of syntax classes.
Syntax Flags
Additional flags each character can have.
Parsing Expressions

Motion via Parsing
Motion functions that work by parsing.
Position Parse
Determining the syntactic state of a position.
Parser State
How Emacs represents a syntactic state.
Low-Level Parsing
Parsing across a specified region.
Control Parsing
Parameters that affect parsing.
Abbrevs And Abbrev Expansion

Abbrev Mode
Setting up Emacs for abbreviation.
Abbrev Tables
Creating and working with abbrev tables.
Defining Abbrevs
Specifying abbreviations and their expansions.
Abbrev Files
Saving abbrevs in files.
Abbrev Expansion
Controlling expansion; expansion subroutines.
Standard Abbrev Tables
Abbrev tables used by various major modes.
Processes

Subprocess Creation
Functions that start subprocesses.
Shell Arguments
Quoting an argument to pass it to a shell.
Synchronous Processes
Details of using synchronous subprocesses.
Asynchronous Processes
Starting up an asynchronous subprocess.
Deleting Processes
Eliminating an asynchronous subprocess.
Process Information
Accessing run-status and other attributes.
Input to Processes
Sending input to an asynchronous subprocess.
Signals to Processes
Stopping, continuing or interrupting
an asynchronous subprocess.
Output from Processes
Collecting output from an asynchronous subprocess.
Sentinels
Sentinels run when process run-status changes.
Query Before Exit
Whether to query if exiting will kill a process.
Transaction Queues
Transaction-based communication with subprocesses.
Network
Opening network connections.
Network Servers
Network servers let Emacs accept net connections.
Datagrams
UDP network connections.
Low-Level Network
Lower-level but more general function
to create connections and servers.
Misc Network
Additional relevant functions for network connections.
Byte Packing
Using bindat to pack and unpack binary data.
Receiving Output from Processes

Process Buffers
If no filter, output is put in a buffer.
Filter Functions
Filter functions accept output from the process.
Decoding Output
Filters can get unibyte or multibyte strings.
Accepting Output
How to wait until process output arrives.
Low-Level Network Access

Proc
Network Processes. Using `make-network-process'.
Options
Network Options. Further control over network connections.
Features
Network Feature Testing.
Determining which network features work on the machine you are using.
Packing and Unpacking Byte Arrays

Bindat Spec
Describing data layout.
Bindat Functions
Doing the unpacking and packing.
Bindat Examples
Samples of what bindat.el can do for you!
Emacs Display

Refresh Screen
Clearing the screen and redrawing everything on it.
Forcing Redisplay
Forcing redisplay.
Truncation
Folding or wrapping long text lines.
The Echo Area
Displaying messages at the bottom of the screen.
Warnings
Displaying warning messages for the user.
Invisible Text
Hiding part of the buffer text.
Selective Display
Hiding part of the buffer text (the old way).
Temporary Displays
Displays that go away automatically.
Overlays
Use overlays to highlight parts of the buffer.
Width
How wide a character or string is on the screen.
Line Height
Controlling the height of lines.
Faces
A face defines a graphics style
for text characters: font, colors, etc.
Fringes
Controlling window fringes.
Scroll Bars
Controlling vertical scroll bars.
Display Property
Enabling special display features.
Images
Displaying images in Emacs buffers.
Buttons
Adding clickable buttons to Emacs buffers.
Abstract Display
Emacs' Widget for Object Collections.
Blinking
How Emacs shows the matching open parenthesis.
Usual Display
The usual conventions for displaying nonprinting chars.
Display Tables
How to specify other conventions.
Beeping
Audible signal to the user.
Window Systems
Which window system is being used.
The Echo Area

Displaying Messages
Explicitly displaying text in the echo area.
Progress
Informing user about progress of a long operation.
Logging Messages
Echo area messages are logged for the user.
Echo Area Customization
Controlling the echo area.
Reporting Warnings

Warning Basics
Warnings concepts and functions to report them.
Warning Variables
Variables programs bind to customize their warnings.
Warning Options
Variables users set to control display of warnings.
Overlays

Managing Overlays
Creating and moving overlays.
Overlay Properties
How to read and set properties.
What properties do to the screen display.
Finding Overlays
Searching for overlays.
Faces

Defining Faces
How to define a face with `defface'.
Face Attributes
What is in a face?
Attribute Functions
Functions to examine and set face attributes.
Displaying Faces
How Emacs combines the faces specified for
a character.
Font Selection
Finding the best available font for a face.
Face Functions
How to define and examine faces.
Auto Faces
Hook for automatic face assignment.
Font Lookup
Looking up the names of available fonts
and information about them.
Fontsets
A fontset is a collection of fonts
that handle a range of character sets.
Fringes

Fringe Size/Pos
Specifying where to put the window fringes.
Fringe Indicators
Displaying indicator icons in the window fringes.
Fringe Cursors
Displaying cursors in the right fringe.
Fringe Bitmaps
Specifying bitmaps for fringe indicators.
Customizing Bitmaps
Specifying your own bitmaps to use in the fringes.
Overlay Arrow
Display of an arrow to indicate position.
The `display' Property

Specified Space
Displaying one space with a specified width.
Pixel Specification
Specifying space width or height in pixels.
Other Display Specs
Displaying an image; magnifying text; moving it
up or down on the page; adjusting the width of spaces within text.
Display Margins
Displaying text or images to the side of
the main text.
Images

Image Descriptors
How to specify an image for use in `:display'.
XBM Images
Special features for XBM format.
XPM Images
Special features for XPM format.
GIF Images
Special features for GIF format.
PostScript Images
Special features for PostScript format.
Other Image Types
Various other formats are supported.
Defining Images
Convenient ways to define an image for later use.
Showing Images
Convenient ways to display an image once
it is defined.
Image Cache
Internal mechanisms of image display.
Buttons

Button Properties
Button properties with special meanings.
Button Types
Defining common properties for classes of buttons.
Making Buttons
Adding buttons to Emacs buffers.
Manipulating Buttons
Getting and setting properties of buttons.
Button Buffer Commands
Buffer-wide commands and bindings for buttons.
Abstract Display

Abstract Display Functions
Functions in the Ewoc package.
Abstract Display Example
Example of using Ewoc.
Display Tables

Display Table Format
What a display table consists of.
Active Display Table
How Emacs selects a display table to use.
Glyphs
How to define a glyph, and what glyphs mean.
Operating System Interface

Starting Up
Customizing Emacs start-up processing.
Getting Out
How exiting works (permanent or temporary).
System Environment
Distinguish the name and kind of system.
User Identification
Finding the name and user id of the user.
Time of Day
Getting the current time.
Time Conversion
Converting a time from numeric form to a string, or
to calendrical data (or vice versa).
Time Parsing
Converting a time from numeric form to text
and vice versa.
Processor Run Time
Getting the run time used by Emacs.
Time Calculations
Adding, subtracting, comparing times, etc.
Timers
Setting a timer to call a function at a certain time.
Idle Timers
Setting a timer to call a function when Emacs has
been idle for a certain length of time.
Terminal Input
Accessing and recording terminal input.
Terminal Output
Controlling and recording terminal output.
Sound Output
Playing sounds on the computer's speaker.
X11 Keysyms
Operating on key symbols for X Windows
Batch Mode
Running Emacs without terminal interaction.
Session Management
Saving and restoring state with X Session Management.
Starting Up Emacs

Startup Summary
Sequence of actions Emacs performs at start-up.
Init File
Details on reading the init file (`.emacs').
Terminal-Specific
How the terminal-specific Lisp file is read.
Command-Line Arguments
How command-line arguments are processed,
and how you can customize them.
Getting Out of Emacs

Killing Emacs
Exiting Emacs irreversibly.
Suspending Emacs
Exiting Emacs reversibly.
Terminal Input

Input Modes
Options for how input is processed.
Recording Input
Saving histories of recent or all input events.
Tips and Conventions

Coding Conventions
Conventions for clean and robust programs.
Key Binding Conventions
Which keys should be bound by which programs.
Programming Tips
Making Emacs code fit smoothly in Emacs.
Compilation Tips
Making compiled code run fast.
Warning Tips
Turning off compiler warnings.
Documentation Tips
Writing readable documentation strings.
Comment Tips
Conventions for writing comments.
Library Headers
Standard headers for library packages.
GNU Emacs Internals

Building Emacs
How the dumped Emacs is made.
Pure Storage
A kludge to make preloaded Lisp functions sharable.
Garbage Collection
Reclaiming space for Lisp objects no longer used.
Memory Usage
Info about total size of Lisp objects made so far.
Writing Emacs Primitives
Writing C code for Emacs.
Object Internals
Data formats of buffers, windows, processes.
Object Internals

Buffer Internals
Components of a buffer structure.
Window Internals
Components of a window structure.
Process Internals
Components of a process structure.

automatically generated by info2www version 1.2.2.9