[Top] [Contents] [Index] [ ? ]

GNU Emacs Lisp Reference Manual

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

1. Introduction  Introduction and conventions used.
D.1 Emacs Lisp Coding Conventions  Coding conventions for Emacs Lisp.
2. Lisp Data Types  Data types of objects in Emacs Lisp.
3. Numbers  Numbers and arithmetic functions.
4. Strings and Characters  Strings, and functions that work on them.
5. Lists  Lists, cons cells, and related functions.
6. Sequences, Arrays, and Vectors  Lists, strings and vectors are called sequences. Certain functions act on any kind of sequence. The description of vectors is here as well.
7. Hash Tables  Very fast lookup-tables.
8. Symbols  Symbols represent names, uniquely.
9. Evaluation  How Lisp expressions are evaluated.
10. Control Structures  Conditionals, loops, nonlocal exits.
11. Variables  Using symbols in programs to stand for values.
12. Functions  A function is a Lisp program that can be invoked from other functions.
13. Macros  Macros are a way to extend the Lisp language.
14. Writing Customization Definitions  Writing customization declarations.
15. Loading  Reading files of Lisp code into Lisp.
16. Byte Compilation  Compilation makes programs run faster.
17. Advising Emacs Lisp Functions  Adding to the definition of a function.
18. Debugging Lisp Programs  Tools and tips for debugging Lisp programs.
19. Reading and Printing Lisp Objects  Converting Lisp objects to text and back.
20. Minibuffers  Using the minibuffer to read input.
21. Command Loop  How the editor command loop works, and how you can call its subroutines.
22. Keymaps  Defining the bindings from keys to commands.
23. Major and Minor Modes  Defining major and minor modes.
24. Documentation  Writing and using documentation strings.
25. Files  Accessing files.
26. Backups and Auto-Saving  Controlling how backups and auto-save files are made.
27. Buffers  Creating and using buffer objects.
28. Windows  Manipulating windows and displaying buffers.
29. Frames  Making multiple X windows.
30. Positions  Buffer positions and motion functions.
31. Markers  Markers represent positions and update automatically when the text is changed.
32. Text  Examining and changing text in buffers.
33. Non-ASCII Characters  Non-ASCII text in buffers and strings.
34. Searching and Matching  Searching buffers for strings or regexps.
35. Syntax Tables  The syntax table controls word and list parsing.
36. Abbrevs and Abbrev Expansion  How Abbrev mode works, and its data structures.
37. Processes  Running and communicating with subprocesses.
38. Emacs Display  Features for controlling the screen display.
39. Customizing the Calendar and Diary  Customizing the calendar and diary.
40. Operating System Interface  Getting the user id, system type, environment variables, and other such things.
A. Emacs 20 Antinews  Info for users downgrading to Emacs 20.
B. GNU Free Documentation License  The license for this documentation
C. GNU General Public License  Conditions for copying and changing GNU Emacs.
D. Tips and Conventions  Advice and coding conventions for Emacs Lisp.
E. GNU Emacs Internals  Building and dumping Emacs; internal data structures.
F. Standard Errors  List of all error symbols.
G. Buffer-Local Variables  List of variables buffer-local in all buffers.
H. Standard Keymaps  List of standard keymaps.
I. Standard Hooks  List of standard hook variables.
Index  Index including concepts, functions, variables, and other terms.
New Symbols Since the Previous Edition  New functions and variables in Emacs 21.
-- 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:
1.1 Caveats  Flaws and a request for help.
1.2 Lisp History  Emacs Lisp is descended from Maclisp.
1.3 Conventions  How the manual is formatted.
1.5 Acknowledgements  The authors, editors, and sponsors of this manual.
1.3.1 Some Terms  Explanation of terms we use in this manual.
1.3.2 nil and t  How the symbols nil and t are used.
1.3.3 Evaluation Notation  The format we use for examples of evaluation.
1.3.4 Printing Notation  The format we use for examples that print output.
1.3.5 Error Messages  The format we use for examples of errors.
1.3.6 Buffer Text Notation  The format we use for buffer contents in examples.
1.3.7 Format of Descriptions  Notation for describing functions, variables, etc.
Tips and Conventions
D.1 Emacs Lisp Coding Conventions  Conventions for clean and robust programs.
D.2 Tips for Making Compiled Code Fast  Making compiled code run fast.
D.3 Tips for Documentation Strings  Writing readable documentation strings.
D.4 Tips on Writing Comments  Conventions for writing comments.
D.5 Conventional Headers for Emacs Libraries  Standard headers for library packages.
Format of Descriptions A Sample Function Description A Sample Variable Description  
Lisp Data Types
2.1 Printed Representation and Read Syntax  How Lisp objects are represented as text.
2.2 Comments  Comments and their formatting conventions.
2.3 Programming Types  Types found in all Lisp systems.
2.4 Editing Types  Types specific to Emacs.
2.6 Type Predicates  Tests related to types.
2.7 Equality Predicates  Tests of equality between any two objects.
Programming Types
2.3.1 Integer Type  Numbers without fractional parts.
2.3.2 Floating Point Type  Numbers with fractional parts and with a large range.
2.3.3 Character Type  The representation of letters, numbers and control characters.
2.3.5 Sequence Types  Both lists and arrays are classified as sequences.
2.3.6 Cons Cell and List Types  Cons cells, and lists (which are made from cons cells).
2.3.7 Array Type  Arrays include strings and vectors.
2.3.8 String Type  An (efficient) array of characters.
2.3.9 Vector Type  One-dimensional arrays.
2.3.4 Symbol Type  A multi-use object that refers to a function, variable, property list, or itself.
2.3.13 Function Type  A piece of executable code you can call from elsewhere.
2.3.14 Macro Type  A method of expanding an expression into another expression, more fundamental but less pretty.
2.3.15 Primitive Function Type  A function written in C, callable from Lisp.
2.3.16 Byte-Code Function Type  A function written in Lisp, then compiled.
2.3.17 Autoload Type  A type used for automatically loading seldom-used functions.
List Type Dotted Pair Notation  An alternative syntax for lists. Association List Type  A specially constructed list.
Editing Types
2.4.1 Buffer Type  The basic object of editing.
2.4.3 Window Type  What makes buffers visible.
2.4.5 Window Configuration Type  Save what the screen looks like.
2.4.2 Marker Type  A position in a buffer.
2.4.7 Process Type  A process running on the underlying OS.
2.4.8 Stream Type  Receive or send characters.
2.4.9 Keymap Type  What function a keystroke invokes.
2.4.10 Overlay Type  How an overlay is represented.
3.1 Integer Basics  Representation and range of integers.
3.2 Floating Point Basics  Representation and range of floating point.
3.3 Type Predicates for Numbers  Testing for numbers.
3.4 Comparison of Numbers  Equality and inequality predicates.
3.6 Arithmetic Operations  How to add, subtract, multiply and divide.
3.8 Bitwise Operations on Integers  Logical and, or, not, shifting.
3.5 Numeric Conversions  Converting float to integer and vice versa.
3.9 Standard Mathematical Functions  Trig, exponential and logarithmic functions.
3.10 Random Numbers  Obtaining random integers, predictable or not.
Strings and Characters
4.1 String and Character Basics  Basic properties of strings and characters.
4.2 The Predicates for Strings  Testing whether an object is a string or char.
4.3 Creating Strings  Functions to allocate new strings.
4.5 Comparison of Characters and Strings  Comparing characters or strings.
4.6 Conversion of Characters and Strings  Converting characters or strings and vice versa.
4.7 Formatting Strings  format: Emacs's analogue of printf.
4.8 Case Conversion in Lisp  Case conversion functions.
5.1 Lists and Cons Cells  How lists are made out of cons cells.
5.2 Lists as Linked Pairs of Boxes  Graphical notation to explain lists.
5.3 Predicates on Lists  Is this object a list? Comparing two lists.
5.4 Accessing Elements of Lists  Extracting the pieces of a list.
5.5 Building Cons Cells and Lists  Creating list structure.
5.6 Modifying Existing List Structure  Storing new pieces into an existing list.
5.7 Using Lists as Sets  A list can represent a finite mathematical set.
5.8 Association Lists  A list can represent a finite relation or mapping.
Modifying Existing List Structure
5.6.1 Altering List Elements with setcar  Replacing an element in a list.
5.6.2 Altering the CDR of a List  Replacing part of the list backbone. This can be used to remove or add elements.
5.6.3 Functions that Rearrange Lists  Reordering the elements in a list; combining lists.
Sequences, Arrays, and Vectors
6.1 Sequences  Functions that accept any kind of sequence.
6.2 Arrays  Characteristics of arrays in Emacs Lisp.
6.3 Functions that Operate on Arrays  Functions specifically for arrays.
6.4 Vectors  Functions specifically for vectors.
8.1 Symbol Components  Symbols have names, values, function definitions and property lists.
8.2 Defining Symbols  A definition says how a symbol will be used.
8.3 Creating and Interning Symbols  How symbols are kept unique.
8.4 Property Lists  Each symbol has a property list for recording miscellaneous information.
9.1 Introduction to Evaluation  Evaluation in the scheme of things.
9.4 Eval  How to invoke the Lisp interpreter explicitly.
9.2 Kinds of Forms  How various sorts of objects are evaluated.
9.3 Quoting  Avoiding evaluation (to put constants in the program).
Kinds of Forms
9.2.1 Self-Evaluating Forms  Forms that evaluate to themselves.
9.2.2 Symbol Forms  Symbols evaluate as variables.
9.2.3 Classification of List Forms  How to distinguish various sorts of list forms.
9.2.5 Evaluation of Function Forms  Forms that call functions.
9.2.6 Lisp Macro Evaluation  Forms that call macros.
9.2.7 Special Forms  "Special forms" are idiosyncratic primitives, most of them extremely important.
9.2.8 Autoloading  Functions set up to load files containing their real definitions.
Control Structures
10.1 Sequencing  Evaluation in textual order.
10.2 Conditionals  if, cond.
10.3 Constructs for Combining Conditions  and, or, not.
10.4 Iteration  while loops.
10.5 Nonlocal Exits  Jumping out of a sequence.
Nonlocal Exits
10.5.1 Explicit Nonlocal Exits: catch and throw  Nonlocal exits for the program's own purposes.
10.5.2 Examples of catch and throw  Showing how such nonlocal exits can be written.
10.5.3 Errors  How errors are signaled and handled.
10.5.4 Cleaning Up from Nonlocal Exits  Arranging to run a cleanup form if an error happens.
Errors How to Signal an Error  How to report an error. How Emacs Processes Errors  What Emacs does when you report an error. Writing Code to Handle Errors  How you can trap errors and continue execution. Error Symbols and Condition Names  How errors are classified for trapping them.
11.1 Global Variables  Variable values that exist permanently, everywhere.
11.2 Variables that Never Change  Certain "variables" have values that never change.
11.3 Local Variables  Variable values that exist only temporarily.
11.4 When a Variable is "Void"  Symbols that lack values.
11.5 Defining Global Variables  A definition says a symbol is used as a variable.
11.7 Accessing Variable Values  Examining values of variables whose names are known only at run time.
11.8 How to Alter a Variable Value  Storing new values in variables.
11.9 Scoping Rules for Variable Bindings  How Lisp chooses among local and global values.
11.10 Buffer-Local Variables  Variable values in effect only in one buffer.
Scoping Rules for Variable Bindings
11.9.1 Scope  Scope means where in the program a value is visible. Comparison with other languages.
11.9.2 Extent  Extent means how long in time a value exists.
11.9.3 Implementation of Dynamic Scoping  Two ways to implement dynamic scoping.
11.9.4 Proper Use of Dynamic Scoping  How to use dynamic scoping carefully and avoid problems.
Buffer-Local Variables
11.10.1 Introduction to Buffer-Local Variables  Introduction and concepts.
11.10.2 Creating and Deleting Buffer-Local Bindings  Creating and destroying buffer-local bindings.
11.10.3 The Default Value of a Buffer-Local Variable  The default value is seen in buffers that don't have their own buffer-local values.
12.1 What Is a Function?  Lisp functions vs primitives; terminology.
12.2 Lambda Expressions  How functions are expressed as Lisp objects.
12.3 Naming a Function  A symbol can serve as the name of a function.
12.4 Defining Functions  Lisp expressions for defining functions.
12.5 Calling Functions  How to use an existing function.
12.6 Mapping Functions  Applying a function to each element of a list, etc.
12.7 Anonymous Functions  Lambda-expressions are functions with no names.
12.8 Accessing Function Cell Contents  Accessing or setting the function definition of a symbol.
12.10 Other Topics Related to Functions  Cross-references to specific Lisp primitives that have a special bearing on how functions work.
Lambda Expressions
12.2.1 Components of a Lambda Expression  The parts of a lambda expression.
12.2.2 A Simple Lambda-Expression Example  A simple example.
12.2.3 Other Features of Argument Lists  Details and special features of argument lists.
12.2.4 Documentation Strings of Functions  How to put documentation in a function.
13.1 A Simple Example of a Macro  A basic example.
13.2 Expansion of a Macro Call  How, when and why macros are expanded.
13.3 Macros and Byte Compilation  How macros are expanded by the compiler.
13.4 Defining Macros  How to write a macro definition.
13.5 Backquote  Easier construction of list structure.
13.6 Common Problems Using Macros  Don't evaluate the macro arguments too many times. Don't hide the user's variables.
15.1 How Programs Do Loading  The load function and others.
15.4 Autoload  Setting up a function to autoload.
15.6 Features  Loading a library if it isn't already loaded.
15.5 Repeated Loading  Precautions about loading a file twice.
Byte Compilation
16.2 The Compilation Functions  Byte compilation functions.
16.7 Disassembled Byte-Code  Disassembling byte-code; how to read byte-code.
Advising Functions
17.1 A Simple Advice Example  A simple example to explain the basics of advice.
17.2 Defining Advice  Detailed description of defadvice.
17.4 Computed Advice  ...is to defadvice as fset is to defun.
17.5 Activation of Advice  Advice doesn't do anything until you activate it.
17.6 Enabling and Disabling Advice  You can enable or disable each piece of advice.
17.7 Preactivation  Preactivation is a way of speeding up the loading of compiled advice.
17.8 Argument Access in Advice  How advice can access the function's arguments.
17.9 Definition of Subr Argument Lists  Accessing arguments when advising a primitive.
17.10 The Combined Definition  How advice is implemented.
Debugging Lisp Programs
18.1 The Lisp Debugger  How the Emacs Lisp debugger is implemented.
18.3 Debugging Invalid Lisp Syntax  How to find syntax errors.
18.4 Debugging Problems in Compilation  How to find errors that show up in byte compilation.
18.2 Edebug  A source-level Emacs Lisp debugger.
The Lisp Debugger
18.1.1 Entering the Debugger on an Error  Entering the debugger when an error happens.
18.1.3 Entering the Debugger on a Function Call  Entering it when a certain function is called.
18.1.4 Explicit Entry to the Debugger  Entering it at a certain point in the program.
18.1.5 Using the Debugger  What the debugger does; what you see while in it.
18.1.6 Debugger Commands  Commands used while in the debugger.
18.1.7 Invoking the Debugger  How to call the function debug.
18.1.8 Internals of the Debugger  Subroutines of the debugger, and global variables.
Debugging Invalid Lisp Syntax
18.3.1 Excess Open Parentheses  How to find a spurious open paren or missing close.
18.3.2 Excess Close Parentheses  How to find a spurious close paren or missing open.
Reading and Printing Lisp Objects
19.1 Introduction to Reading and Printing  Overview of streams, reading and printing.
19.2 Input Streams  Various data types that can be used as input streams.
19.3 Input Functions  Functions to read Lisp objects from text.
19.4 Output Streams  Various data types that can be used as output streams.
19.5 Output Functions  Functions to print Lisp objects as text.
20.1 Introduction to Minibuffers  Basic information about minibuffers.
20.2 Reading Text Strings with the Minibuffer  How to read a straight text string.
20.3 Reading Lisp Objects with the Minibuffer  How to read a Lisp object or expression.
20.5 Completion  How to invoke and customize completion.
20.6 Yes-or-No Queries  Asking a question with a simple answer.
20.9 Minibuffer Miscellany  Various customization hooks and variables.
20.5.1 Basic Completion Functions  Low-level functions for completing strings.
(These are too low level to use the minibuffer.)
20.5.2 Completion and the Minibuffer  Invoking the minibuffer with completion.
20.5.3 Minibuffer Commands that Do Completion  Minibuffer commands that do completion.
20.5.4 High-Level Completion Functions  Convenient special cases of completion
(reading buffer name, file name, etc.)
20.5.5 Reading File Names  Using completion to read file names.
20.5.6 Programmed Completion  Finding the completions for a given file name.
Command Loop
21.1 Command Loop Overview  How the command loop reads commands.
21.2 Defining Commands  Specifying how a function should read arguments.
21.3 Interactive Call  Calling a command, so that it will read arguments.
21.4 Information from the Command Loop  Variables set by the command loop for you to examine.
21.6 Input Events  What input looks like when you read it.
21.7 Reading Input  How to read input events from the keyboard or mouse.
21.9 Waiting for Elapsed Time or Input  Waiting for user input or elapsed time.
21.10 Quitting  How C-g works. How to catch or defer quitting.
21.11 Prefix Command Arguments  How the commands to set prefix args work.
21.12 Recursive Editing  Entering a recursive edit, and why you usually shouldn't.
21.13 Disabling Commands  How the command loop handles disabled commands.
21.14 Command History  How the command history is set up, and how accessed.
21.15 Keyboard Macros  How keyboard macros are implemented.
Defining Commands
21.2.1 Using interactive  General rules for interactive.
21.2.2 Code Characters for interactive  The standard letter-codes for reading arguments in various ways.
21.2.3 Examples of Using interactive  Examples of how to read interactive arguments.
22.1 Keymap Terminology  Definitions of terms pertaining to keymaps.
22.2 Format of Keymaps  What a keymap looks like as a Lisp object.
22.3 Creating Keymaps  Functions to create and copy keymaps.
22.4 Inheritance and Keymaps  How one keymap can inherit the bindings of another keymap.
22.5 Prefix Keys  Defining a key with a keymap as its definition.
22.12 Menu Keymaps  A keymap can define a menu for X or for use from the terminal.
22.6 Active Keymaps  Each buffer has a local keymap to override the standard (global) bindings. Each minor mode can also override them.
22.7 Key Lookup  How extracting elements from keymaps works.
22.8 Functions for Key Lookup  How to request key lookup.
22.9 Changing Key Bindings  Redefining a key in a keymap.
22.10 Commands for Binding Keys  Interactive interfaces for redefining keys.
22.11 Scanning Keymaps  Looking through all keymaps, for printing help.
Major and Minor Modes
23.1 Major Modes  Defining major modes.
23.2 Minor Modes  Defining minor modes.
23.3 Mode Line Format  Customizing the text that appears in the mode line.
23.6 Hooks  How to use hooks; how to write code that provides hooks.
Major Modes
23.1.1 Major Mode Conventions  Coding conventions for keymaps, etc.
23.1.2 Major Mode Examples  Text mode and Lisp modes.
23.1.3 How Emacs Chooses a Major Mode  How Emacs chooses the major mode automatically.
23.1.4 Getting Help about a Major Mode  Finding out how to use a mode.
Minor Modes
23.2.1 Conventions for Writing Minor Modes  Tips for writing a minor mode.
23.2.2 Keymaps and Minor Modes  How a minor mode can have its own keymap.
Mode Line Format
23.3.1 The Data Structure of the Mode Line  The data structure that controls the mode line.
23.3.2 Variables Used in the Mode Line  Variables used in that data structure.
23.3.3 %-Constructs in the Mode Line  Putting information into a mode line.
24.1 Documentation Basics  Good style for doc strings. Where to put them. How Emacs stores them.
24.2 Access to Documentation Strings  How Lisp programs can access doc strings.
24.3 Substituting Key Bindings in Documentation  Substituting current key bindings.
24.4 Describing Characters for Help Messages  Making printable descriptions of non-printing characters and key sequences.
24.5 Help Functions  Subroutines used by Emacs help facilities.
25.1 Visiting Files  Reading files into Emacs buffers for editing.
25.2 Saving Buffers  Writing changed buffers back into files.
25.3 Reading from Files  Reading files into other buffers.
25.4 Writing to Files  Writing new files from parts of buffers.
25.5 File Locks  Locking and unlocking files, to prevent simultaneous editing by two people.
25.6 Information about Files  Testing existence, accessibility, size of files.
25.9 Contents of Directories  Getting a list of the files in a directory.
25.7 Changing File Names and Attributes  Renaming files, changing protection, etc.
25.8 File Names  Decomposing and expanding file names.
Visiting Files
25.1.1 Functions for Visiting Files  The usual interface functions for visiting.
25.1.2 Subroutines of Visiting  Lower-level subroutines that they use.
Information about Files
25.6.1 Testing Accessibility  Is a given file readable? Writable?
25.6.2 Distinguishing Kinds of Files  Is it a directory? A link?
25.6.4 Other Information about Files  How large is it? Any other names? Etc.
File Names
25.8.1 File Name Components  The directory part of a file name, and the rest.
25.8.2 Directory Names  A directory's name as a directory is different from its name as a file.
25.8.3 Absolute and Relative File Names  Some file names are relative to a current directory.
25.8.4 Functions that Expand Filenames  Converting relative file names to absolute ones.
25.8.5 Generating Unique File Names  Generating names for temporary files.
25.8.6 File Name Completion  Finding the completions for a given file name.
Backups and Auto-Saving
26.1 Backup Files  How backup files are made; how their names are chosen.
26.2 Auto-Saving  How auto-save files are made; how their names are chosen.
26.3 Reverting  revert-buffer, and how to customize what it does.
Backup Files
26.1.1 Making Backup Files  How Emacs makes backup files, and when.
26.1.2 Backup by Renaming or by Copying?  Two alternatives: renaming the old file or copying it.
26.1.3 Making and Deleting Numbered Backup Files  Keeping multiple backups for each source file.
26.1.4 Naming Backup Files  How backup file names are computed; customization.
27.1 Buffer Basics  What is a buffer?
27.3 Buffer Names  Accessing and changing buffer names.
27.4 Buffer File Name  The buffer file name indicates which file is visited.
27.5 Buffer Modification  A buffer is modified if it needs to be saved.
27.6 Comparison of Modification Time  Determining whether the visited file was changed
"behind Emacs's back".
27.7 Read-Only Buffers  Modifying text is not allowed in a read-only buffer.
27.8 The Buffer List  How to look at all the existing buffers.
27.9 Creating Buffers  Functions that create buffers.
27.10 Killing Buffers  Buffers exist until explicitly killed.
27.2 The Current Buffer  Designating a buffer as current so primitives will access its contents.
28.1 Basic Concepts of Emacs Windows  Basic information on using windows.
28.2 Splitting Windows  Splitting one window into two windows.
28.3 Deleting Windows  Deleting a window gives its space to other windows.
28.4 Selecting Windows  The selected window is the one that you edit in.
28.5 Cyclic Ordering of Windows  Moving around the existing windows.
28.6 Buffers and Windows  Each window displays the contents of a buffer.
28.7 Displaying Buffers in Windows  Higher-lever functions for displaying a buffer and choosing a window for it.
28.9 Windows and Point  Each window has its own location of point.
28.10 The Window Start Position  The display-start position controls which text is on-screen in the window.
28.12 Vertical Fractional Scrolling  Moving text up and down in the window.
28.13 Horizontal Scrolling  Moving text sideways on the window.
28.14 The Size of a Window  Accessing the size of a window.
28.15 Changing the Size of a Window  Changing the size of a window.
28.17 Window Configurations  Saving and restoring the state of the screen.
29.1 Creating Frames  Creating additional frames.
29.2 Multiple Displays  Creating frames on other X displays.
29.3 Frame Parameters  Controlling frame size, position, font, etc.
29.4 Frame Titles  Automatic updating of frame titles.
29.5 Deleting Frames  Frames last until explicitly deleted.
29.6 Finding All Frames  How to examine all existing frames.
29.7 Frames and Windows  A frame contains windows; display of text always works through windows.
29.8 Minibuffers and Frames  How a frame finds the minibuffer to use.
29.9 Input Focus  Specifying the selected frame.
29.10 Visibility of Frames  Frames may be visible or invisible, or icons.
29.11 Raising and Lowering Frames  Raising a frame makes it hide other X windows; lowering it puts it underneath the others.
29.12 Frame Configurations  Saving the state of all frames.
29.13 Mouse Tracking  Getting events that say when the mouse moves.
29.14 Mouse Position  Asking where the mouse is, or moving it.
29.15 Pop-Up Menus  Displaying a menu for the user to select from.
29.16 Dialog Boxes  Displaying a box to ask yes or no.
29.17 Pointer Shapes  Specifying the shape of the mouse pointer.
29.18 Window System Selections  Transferring text to and from other windows.
29.19 Color Names  Getting the definitions of color names.
29.21 X Resources  Getting resource values from the server.
29.22 Display Feature Testing  Determining the features of a terminal.
30.1 Point  The special position where editing takes place.
30.2 Motion  Changing point.
30.3 Excursions  Temporary motion and buffer changes.
30.4 Narrowing  Restricting editing to a portion of the buffer.
30.2.1 Motion by Characters  Moving in terms of characters.
30.2.2 Motion by Words  Moving in terms of words.
30.2.3 Motion to an End of the Buffer  Moving to the beginning or end of the buffer.
30.2.4 Motion by Text Lines  Moving in terms of lines of text.
30.2.5 Motion by Screen Lines  Moving in terms of lines as displayed.
30.2.6 Moving over Balanced Expressions  Moving by parsing lists and sexps.
30.2.7 Skipping Characters  Skipping characters belonging to a certain set.
31.1 Overview of Markers  The components of a marker, and how it relocates.
31.2 Predicates on Markers  Testing whether an object is a marker.
31.3 Functions that Create Markers  Making empty markers or markers at certain places.
31.4 Information from Markers  Finding the marker's buffer or character position.
31.6 Moving Marker Positions  Moving the marker to a new buffer or position.
31.7 The Mark  How "the mark" is implemented with a marker.
31.8 The Region  How to access "the region".
32.1 Examining Text Near Point  Examining text in the vicinity of point.
32.2 Examining Buffer Contents  Examining text in a general fashion.
32.4 Inserting Text  Adding new text to a buffer.
32.5 User-Level Insertion Commands  User-level commands to insert text.
32.6 Deleting Text  Removing text from a buffer.
32.7 User-Level Deletion Commands  User-level commands to delete text.
32.8 The Kill Ring  Where removed text sometimes is saved for later use.
32.9 Undo  Undoing changes to the text of a buffer.
32.14 Auto Filling  How auto-fill mode is implemented to break lines.
32.11 Filling  Functions for explicit filling.
32.12 Margins for Filling  How to specify margins for filling commands.
32.15 Sorting Text  Functions for sorting parts of the buffer.
32.17 Indentation  Functions to insert or adjust indentation.
32.16 Counting Columns  Computing horizontal positions, and using them.
32.18 Case Changes  Case conversion of parts of the buffer.
32.19 Text Properties  Assigning Lisp property lists to text characters.
32.20 Substituting for a Character Code  Replacing a given character wherever it appears.
32.22 Transposition of Text  Swapping two portions of a buffer.
32.21 Registers  How registers are implemented. Accessing the text or position stored in a register.
32.25 Change Hooks  Supplying functions to be run when text is changed.
The Kill Ring
32.8.1 Kill Ring Concepts  What text looks like in the kill ring.
32.8.2 Functions for Killing  Functions that kill text.
32.8.3 Functions for Yanking  Commands that access the kill ring.
32.8.4 Low-Level Kill Ring  Functions and variables for kill ring access.
32.8.5 Internals of the Kill Ring  Variables that hold kill-ring data.
32.17.1 Indentation Primitives  Functions used to count and insert indentation.
32.17.2 Indentation Controlled by Major Mode  Customize indentation for different modes.
32.17.3 Indenting an Entire Region  Indent all the lines in a region.
32.17.4 Indentation Relative to Previous Lines  Indent the current line based on previous lines.
32.17.5 Adjustable "Tab Stops"  Adjustable, typewriter-like tab stops.
32.17.6 Indentation-Based Motion Commands  Move to first non-blank character.
Text Properties
32.19.1 Examining Text Properties  Looking at the properties of one character.
32.19.2 Changing Text Properties  Setting the properties of a range of text.
32.19.3 Text Property Search Functions  Searching for where a property changes value.
32.19.4 Properties with Special Meanings  Particular properties with special meanings.
32.19.5 Formatted Text Properties  Properties for representing formatting of text.
32.19.6 Stickiness of Text Properties  How inserted text gets properties from neighboring text.
32.19.7 Saving Text Properties in Files  Saving text properties in files, and reading them back.
32.19.8 Lazy Computation of Text Properties  Computing text properties in a lazy fashion only when text is examined.
32.19.9 Defining Clickable Text  Using text properties to make regions of text do something when you click on them.
32.19.10 Defining and Using Fields  The field property defines fields within the buffer.
32.19.11 Why Text Properties are not Intervals  Why text properties do not use Lisp-visible text intervals.
Non-ASCII Characters
33.1 Text Representations  Unibyte and multibyte representations
33.2 Converting Text Representations  Converting unibyte to multibyte and vice versa.
33.3 Selecting a Representation  Treating a byte sequence as unibyte or multi.
33.4 Character Codes  How unibyte and multibyte relate to codes of individual characters.
33.5 Character Sets  The space of possible characters codes is divided into various character sets.
33.6 Characters and Bytes  More information about multibyte encodings.
33.7 Splitting Characters  Converting a character to its byte sequence.
33.8 Scanning for Character Sets  Which character sets are used in a buffer?
33.9 Translation of Characters  Translation tables are used for conversion.
33.10 Coding Systems  Coding systems are conversions for saving files.
33.11 Input Methods  Input methods allow users to enter various non-ASCII characters without special keyboards.
33.12 Locales  Interacting with the POSIX locale.
Searching and Matching
34.1 Searching for Strings  Search for an exact match.
34.2 Regular Expressions  Describing classes of strings.
34.3 Regular Expression Searching  Searching for a match for a regexp.
34.6 The Match Data  Finding out which part of the text matched various parts of a regexp, after regexp search.
34.6.4 Saving and Restoring the Match Data  Saving and restoring this information.
34.8 Standard Regular Expressions Used in Editing  Useful regexps for finding sentences, pages,...
34.7 Searching and Case  Case-independent or case-significant searching.
Regular Expressions
34.2.1 Syntax of Regular Expressions  Rules for writing regular expressions.
34.2.2 Complex Regexp Example  Illustrates regular expression syntax.
Syntax Tables
35.2 Syntax Descriptors  How characters are classified.
35.3 Syntax Table Functions  How to create, examine and alter syntax tables.
35.6 Parsing Balanced Expressions  Parsing balanced expressions using the syntax table.
35.7 Some Standard Syntax Tables  Syntax tables used by various major modes.
35.8 Syntax Table Internals  How syntax table information is stored.
Syntax Descriptors
35.2.1 Table of Syntax Classes  Table of syntax classes.
35.2.2 Syntax Flags  Additional flags each character can have.
Abbrevs And Abbrev Expansion
36.1 Setting Up Abbrev Mode  Setting up Emacs for abbreviation.
36.2 Abbrev Tables  Creating and working with abbrev tables.
36.3 Defining Abbrevs  Specifying abbreviations and their expansions.
36.4 Saving Abbrevs in Files  Saving abbrevs in files.
36.5 Looking Up and Expanding Abbreviations  Controlling expansion; expansion subroutines.
36.6 Standard Abbrev Tables  Abbrev tables used by various major modes.
37.1 Functions that Create Subprocesses  Functions that start subprocesses.
37.3 Creating a Synchronous Process  Details of using synchronous subprocesses.
37.4 Creating an Asynchronous Process  Starting up an asynchronous subprocess.
37.5 Deleting Processes  Eliminating an asynchronous subprocess.
37.6 Process Information  Accessing run-status and other attributes.
37.7 Sending Input to Processes  Sending input to an asynchronous subprocess.
37.8 Sending Signals to Processes  Stopping, continuing or interrupting an asynchronous subprocess.
37.9 Receiving Output from Processes  Collecting output from an asynchronous subprocess.
37.10 Sentinels: Detecting Process Status Changes  Sentinels run when process run-status changes.
37.12 Network Connections  Opening network connections.
Receiving Output from Processes
37.9.1 Process Buffers  If no filter, output is put in a buffer.
37.9.2 Process Filter Functions  Filter functions accept output from the process.
37.9.3 Accepting Output from Processes  How to wait until process output arrives.
Operating System Interface
40.1 Starting Up Emacs  Customizing Emacs start-up processing.
40.2 Getting Out of Emacs  How exiting works (permanent or temporary).
40.3 Operating System Environment  Distinguish the name and kind of system.
40.8 Terminal Input  Recording terminal input for debugging.
40.9 Terminal Output  Recording terminal output for debugging.
40.12 Flow Control  How to turn output flow control on or off.
40.13 Batch Mode  Running Emacs without terminal interaction.
Starting Up Emacs
40.1.1 Summary: Sequence of Actions at Startup  Sequence of actions Emacs performs at start-up.
40.1.2 The Init File, `.emacs'  Details on reading the init file (`.emacs').
40.1.3 Terminal-Specific Initialization  How the terminal-specific Lisp file is read.
40.1.4 Command-Line Arguments  How command line arguments are processed, and how you can customize them.
Getting out of Emacs
40.2.1 Killing Emacs  Exiting Emacs irreversibly.
40.2.2 Suspending Emacs  Exiting Emacs reversibly.
Emacs Display
38.1 Refreshing the Screen  Clearing the screen and redrawing everything on it.
38.3 Truncation  Folding or wrapping long text lines.
38.4 The Echo Area  Where messages are displayed.
38.6 Selective Display  Hiding part of the buffer text.
38.7 The Overlay Arrow  Display of an arrow to indicate position.
38.8 Temporary Displays  Displays that go away automatically.
21.9 Waiting for Elapsed Time or Input  Forcing display update and waiting for user.
38.14 Blinking Parentheses  How Emacs shows the matching open parenthesis.
38.16 Usual Display Conventions  How control characters are displayed.
38.18 Beeping  Audible signal to the user.
38.19 Window Systems  Which window system is being used.
GNU Emacs Internals
E.1 Building Emacs  How to preload Lisp libraries into Emacs.
E.2 Pure Storage  A kludge to make preloaded Lisp functions sharable.
E.3 Garbage Collection  Reclaiming space for Lisp objects no longer used.
E.6 Object Internals  Data formats of buffers, windows, processes.
E.5 Writing Emacs Primitives  Writing C code for Emacs.
Object Internals
E.6.1 Buffer Internals  Components of a buffer structure.
E.6.2 Window Internals  Components of a window structure.
E.6.3 Process Internals  Components of a process structure.

This document was generated by Dohn Arms on March, 6 2005 using texi2html