*** empty log message ***
[bpt/emacs.git] / lispref / elisp.texi
CommitLineData
a44af9f2
RS
1\input texinfo @c -*-texinfo-*-
2@c %**start of header
3@setfilename elisp
a44af9f2
RS
4@settitle GNU Emacs Lisp Reference Manual
5@c %**end of header
6
ccf9222c
LK
7@c Version of the manual and of Emacs.
8@c Please remember to update the edition number in README as well.
d01d5531 9@set VERSION 2.9
ccf9222c 10@set EMACSVER 22.0.50
cdd76925 11
140cc574 12@dircategory Emacs
221fc415
RS
13@direntry
14* Elisp: (elisp). The Emacs Lisp Reference Manual.
15@end direntry
16
a9f0a989 17@smallbook
a4776185
GM
18@setchapternewpage odd
19@finalout
20
21@c Combine indices.
22@synindex cp fn
23@syncodeindex vr fn
24@syncodeindex ky fn
25@syncodeindex pg fn
26@c We use the "type index" to index new functions and variables.
27@c @syncodeindex tp fn
a9f0a989 28
9d7d543c
KB
29@copying
30This is edition @value{VERSION} of the GNU Emacs Lisp
ccf9222c 31Reference Manual, corresponding to Emacs version @value{EMACSVER}.
a44af9f2 32
ceb4c4d3
TTN
33Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
34 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
a44af9f2 35
9d7d543c 36@quotation
a4776185 37Permission is granted to copy, distribute and/or modify this document
7260457b 38under the terms of the GNU Free Documentation License, Version 1.2 or
a4776185 39any later version published by the Free Software Foundation; with the
9d7d543c
KB
40Invariant Sections being ``GNU General Public License'', with the
41Front-Cover texts being ``A GNU Manual'', and with the Back-Cover
42Texts as in (a) below. A copy of the license is included in the
43section entitled ``GNU Free Documentation License''.
a4776185
GM
44
45(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
46this GNU Manual, like GNU software. Copies published by the Free
47Software Foundation raise funds for GNU development.''
9d7d543c
KB
48@end quotation
49@end copying
a44af9f2 50
a44af9f2
RS
51@titlepage
52@title GNU Emacs Lisp Reference Manual
ccf9222c 53@subtitle For Emacs Version @value{EMACSVER}
1919bf4d 54@subtitle Revision @value{VERSION}, January 2002
a44af9f2
RS
55
56@author by Bil Lewis, Dan LaLiberte, Richard Stallman
57@author and the GNU Manual Group
58@page
59@vskip 0pt plus 1filll
9d7d543c 60@insertcopying
a44af9f2 61
9d7d543c 62@sp 1
a44af9f2 63Published by the Free Software Foundation @*
9d7d543c
KB
6451 Franklin St, Fifth Floor @*
65Boston, MA 02110-1301 @*
66USA @*
67ISBN 1-882114-73-6
a44af9f2 68
9d7d543c 69@sp 1
a44af9f2
RS
70Cover art by Etienne Suvasa.
71@end titlepage
e121563b
KB
72
73
74@c Print the tables of contents
75@summarycontents
76@contents
77
a44af9f2 78
ccf9222c 79@ifnottex
e4a29e5a 80@node Top, Introduction, (dir), (dir)
ccf9222c 81@top Emacs Lisp
a44af9f2 82
cdd76925 83This Info file contains edition @value{VERSION} of the GNU Emacs Lisp
ccf9222c 84Reference Manual, corresponding to GNU Emacs version @value{EMACSVER}.
37680279 85@end ifnottex
a44af9f2
RS
86
87@menu
a44af9f2
RS
88* Introduction:: Introduction and conventions used.
89
3e099569 90* Lisp Data Types:: Data types of objects in Emacs Lisp.
a44af9f2
RS
91* Numbers:: Numbers and arithmetic functions.
92* Strings and Characters:: Strings, and functions that work on them.
93* Lists:: Lists, cons cells, and related functions.
94* Sequences Arrays Vectors:: Lists, strings and vectors are called sequences.
95 Certain functions act on any kind of sequence.
96 The description of vectors is here as well.
8241495d 97* Hash Tables:: Very fast lookup-tables.
a44af9f2
RS
98* Symbols:: Symbols represent names, uniquely.
99
100* Evaluation:: How Lisp expressions are evaluated.
101* Control Structures:: Conditionals, loops, nonlocal exits.
102* Variables:: Using symbols in programs to stand for values.
103* Functions:: A function is a Lisp program
104 that can be invoked from other functions.
105* Macros:: Macros are a way to extend the Lisp language.
f9f59935 106* Customization:: Writing customization declarations.
a44af9f2
RS
107
108* Loading:: Reading files of Lisp code into Lisp.
109* Byte Compilation:: Compilation makes programs run faster.
cc236dfe 110* Advising Functions:: Adding to the definition of a function.
a44af9f2
RS
111* Debugging:: Tools and tips for debugging Lisp programs.
112
3e099569 113* Read and Print:: Converting Lisp objects to text and back.
a44af9f2
RS
114* Minibuffers:: Using the minibuffer to read input.
115* Command Loop:: How the editor command loop works,
116 and how you can call its subroutines.
117* Keymaps:: Defining the bindings from keys to commands.
118* Modes:: Defining major and minor modes.
119* Documentation:: Writing and using documentation strings.
120
121* Files:: Accessing files.
122* Backups and Auto-Saving:: Controlling how backups and auto-save
123 files are made.
124* Buffers:: Creating and using buffer objects.
125* Windows:: Manipulating windows and displaying buffers.
b3486daf 126* Frames:: Making multiple system-level windows.
a44af9f2
RS
127* Positions:: Buffer positions and motion functions.
128* Markers:: Markers represent positions and update
129 automatically when the text is changed.
130
131* Text:: Examining and changing text in buffers.
f9f59935 132* Non-ASCII Characters:: Non-ASCII text in buffers and strings.
a44af9f2
RS
133* Searching and Matching:: Searching buffers for strings or regexps.
134* Syntax Tables:: The syntax table controls word and list parsing.
135* Abbrevs:: How Abbrev mode works, and its data structures.
136
137* Processes:: Running and communicating with subprocesses.
a40d4712 138* Display:: Features for controlling the screen display.
1ac3fc42
GM
139* System Interface:: Getting the user id, system type, environment
140 variables, and other such things.
a44af9f2
RS
141
142Appendices
143
ccf9222c 144* Antinews:: Info for users downgrading to Emacs 21.
e23a63a5 145* GNU Free Documentation License:: The license for this documentation
879bde83 146* GPL:: Conditions for copying and changing GNU Emacs.
4356e9eb 147* Tips:: Advice and coding conventions for Emacs Lisp.
a44af9f2
RS
148* GNU Emacs Internals:: Building and dumping Emacs;
149 internal data structures.
150* Standard Errors:: List of all error symbols.
cc236dfe
RS
151* Standard Buffer-Local Variables::
152 List of variables buffer-local in all buffers.
a44af9f2
RS
153* Standard Keymaps:: List of standard keymaps.
154* Standard Hooks:: List of standard hook variables.
155
a44af9f2
RS
156* Index:: Index including concepts, functions, variables,
157 and other terms.
158
ccf9222c 159* New Symbols:: New functions and variables in Emacs @value{EMACSVER}.
f9f59935 160
ccf9222c
LK
161Detailed Node Listing
162---------------------
a44af9f2
RS
163
164Here are other nodes that are inferiors of those already listed,
165mentioned here so you can get to them in one step:
166
167Introduction
168
169* Caveats:: Flaws and a request for help.
170* Lisp History:: Emacs Lisp is descended from Maclisp.
171* Conventions:: How the manual is formatted.
f3280ac5 172* Version Info:: Which Emacs version is running?
a44af9f2
RS
173* Acknowledgements:: The authors, editors, and sponsors of this manual.
174
175Conventions
176
177* Some Terms:: Explanation of terms we use in this manual.
178* nil and t:: How the symbols @code{nil} and @code{t} are used.
179* Evaluation Notation:: The format we use for examples of evaluation.
180* Printing Notation:: The format we use for examples that print output.
181* Error Messages:: The format we use for examples of errors.
182* Buffer Text Notation:: The format we use for buffer contents in examples.
183* Format of Descriptions:: Notation for describing functions, variables, etc.
184
185Format of Descriptions
186
177c0ea7
JB
187* A Sample Function Description::
188* A Sample Variable Description::
a44af9f2
RS
189
190Lisp Data Types
191
192* Printed Representation:: How Lisp objects are represented as text.
193* Comments:: Comments and their formatting conventions.
194* Programming Types:: Types found in all Lisp systems.
195* Editing Types:: Types specific to Emacs.
f3280ac5 196* Circular Objects:: Read syntax for circular structure.
a44af9f2
RS
197* Type Predicates:: Tests related to types.
198* Equality Predicates:: Tests of equality between any two objects.
199
200Programming Types
201
202* Integer Type:: Numbers without fractional parts.
203* Floating Point Type:: Numbers with fractional parts and with a large range.
204* Character Type:: The representation of letters, numbers and
a40d4712 205 control characters.
f3280ac5
LK
206* Symbol Type:: A multi-use object that refers to a function,
207 variable, property list, or itself.
a44af9f2 208* Sequence Type:: Both lists and arrays are classified as sequences.
3e099569 209* Cons Cell Type:: Cons cells, and lists (which are made from cons cells).
a44af9f2
RS
210* Array Type:: Arrays include strings and vectors.
211* String Type:: An (efficient) array of characters.
212* Vector Type:: One-dimensional arrays.
f3280ac5
LK
213* Char-Table Type:: One-dimensional sparse arrays indexed by characters.
214* Bool-Vector Type:: One-dimensional arrays of @code{t} or @code{nil}.
215* Hash Table Type:: Super-fast lookup tables.
3e099569
RS
216* Function Type:: A piece of executable code you can call from elsewhere.
217* Macro Type:: A method of expanding an expression into another
a44af9f2
RS
218 expression, more fundamental but less pretty.
219* Primitive Function Type:: A function written in C, callable from Lisp.
220* Byte-Code Type:: A function written in Lisp, then compiled.
221* Autoload Type:: A type used for automatically loading seldom-used
a40d4712 222 functions.
a44af9f2 223
f3280ac5 224Cons Cell and List Types
a44af9f2 225
f3280ac5 226* Box Diagrams:: Drawing pictures of lists.
a44af9f2
RS
227* Dotted Pair Notation:: An alternative syntax for lists.
228* Association List Type:: A specially constructed list.
229
230Editing Types
231
232* Buffer Type:: The basic object of editing.
f3280ac5 233* Marker Type:: A position in a buffer.
a44af9f2 234* Window Type:: What makes buffers visible.
f3280ac5 235* Frame Type:: Windows subdivide frames.
a44af9f2 236* Window Configuration Type::Save what the screen looks like.
f3280ac5 237* Frame Configuration Type::Recording the status of all frames.
a44af9f2
RS
238* Process Type:: A process running on the underlying OS.
239* Stream Type:: Receive or send characters.
240* Keymap Type:: What function a keystroke invokes.
1911e6e5 241* Overlay Type:: How an overlay is represented.
a44af9f2
RS
242
243Numbers
244
245* Integer Basics:: Representation and range of integers.
246* Float Basics:: Representation and range of floating point.
247* Predicates on Numbers:: Testing for numbers.
248* Comparison of Numbers:: Equality and inequality predicates.
f3280ac5 249* Numeric Conversions:: Converting float to integer and vice versa.
a44af9f2 250* Arithmetic Operations:: How to add, subtract, multiply and divide.
f3280ac5 251* Rounding Operations:: Explicitly rounding floating point numbers.
a44af9f2 252* Bitwise Operations:: Logical and, or, not, shifting.
22697dac 253* Math Functions:: Trig, exponential and logarithmic functions.
a44af9f2
RS
254* Random Numbers:: Obtaining random integers, predictable or not.
255
256Strings and Characters
257
258* String Basics:: Basic properties of strings and characters.
259* Predicates for Strings:: Testing whether an object is a string or char.
260* Creating Strings:: Functions to allocate new strings.
f3280ac5 261* Modifying Strings:: Altering the contents of an existing string.
a44af9f2
RS
262* Text Comparison:: Comparing characters or strings.
263* String Conversion:: Converting characters or strings and vice versa.
1911e6e5 264* Formatting Strings:: @code{format}: Emacs's analogue of @code{printf}.
a9f0a989 265* Case Conversion:: Case conversion functions.
f3280ac5 266* Case Tables:: Customizing case conversion.
a44af9f2
RS
267
268Lists
269
270* Cons Cells:: How lists are made out of cons cells.
a44af9f2
RS
271* List-related Predicates:: Is this object a list? Comparing two lists.
272* List Elements:: Extracting the pieces of a list.
273* Building Lists:: Creating list structure.
274* Modifying Lists:: Storing new pieces into an existing list.
275* Sets And Lists:: A list can represent a finite mathematical set.
276* Association Lists:: A list can represent a finite relation or mapping.
b02bc8d0 277* Rings:: Managing a fixed-size ring of objects.
a44af9f2
RS
278
279Modifying Existing List Structure
280
281* Setcar:: Replacing an element in a list.
282* Setcdr:: Replacing part of the list backbone.
283 This can be used to remove or add elements.
284* Rearrangement:: Reordering the elements in a list; combining lists.
285
286Sequences, Arrays, and Vectors
287
288* Sequence Functions:: Functions that accept any kind of sequence.
289* Arrays:: Characteristics of arrays in Emacs Lisp.
290* Array Functions:: Functions specifically for arrays.
291* Vectors:: Functions specifically for vectors.
f3280ac5
LK
292* Vector Functions:: Functions specifically for vectors.
293* Char-Tables:: How to work with char-tables.
294* Bool-Vectors:: How to work with bool-vectors.
295
296Hash Tables
297
298* Creating Hash:: Functions to create hash tables.
299* Hash Access:: Reading and writing the hash table contents.
300* Defining Hash:: Defining new comparison methods
301* Other Hash:: Miscellaneous.
a44af9f2
RS
302
303Symbols
304
305* Symbol Components:: Symbols have names, values, function definitions
306 and property lists.
307* Definitions:: A definition says how a symbol will be used.
308* Creating Symbols:: How symbols are kept unique.
309* Property Lists:: Each symbol has a property list
310 for recording miscellaneous information.
311
312Evaluation
313
314* Intro Eval:: Evaluation in the scheme of things.
a44af9f2 315* Forms:: How various sorts of objects are evaluated.
177c0ea7 316* Quoting:: Avoiding evaluation (to put constants in
a44af9f2 317 the program).
f3280ac5 318* Eval:: How to invoke the Lisp interpreter explicitly.
a44af9f2
RS
319
320Kinds of Forms
321
322* Self-Evaluating Forms:: Forms that evaluate to themselves.
323* Symbol Forms:: Symbols evaluate as variables.
324* Classifying Lists:: How to distinguish various sorts of list forms.
f3280ac5
LK
325* Function Indirection:: When a symbol appears as the car of a list,
326 we find the real function via the symbol.
a44af9f2
RS
327* Function Forms:: Forms that call functions.
328* Macro Forms:: Forms that call macros.
329* Special Forms:: ``Special forms'' are idiosyncratic primitives,
330 most of them extremely important.
331* Autoloading:: Functions set up to load files
332 containing their real definitions.
333
334Control Structures
335
336* Sequencing:: Evaluation in textual order.
f3280ac5 337* Conditionals:: @code{if}, @code{cond}, @code{when}, @code{unless}.
a44af9f2
RS
338* Combining Conditions:: @code{and}, @code{or}, @code{not}.
339* Iteration:: @code{while} loops.
340* Nonlocal Exits:: Jumping out of a sequence.
341
342Nonlocal Exits
343
344* Catch and Throw:: Nonlocal exits for the program's own purposes.
345* Examples of Catch:: Showing how such nonlocal exits can be written.
346* Errors:: How errors are signaled and handled.
347* Cleanups:: Arranging to run a cleanup form if an
348 error happens.
349
350Errors
351
352* Signaling Errors:: How to report an error.
353* Processing of Errors:: What Emacs does when you report an error.
354* Handling Errors:: How you can trap errors and continue execution.
3e099569 355* Error Symbols:: How errors are classified for trapping them.
a44af9f2
RS
356
357Variables
358
359* Global Variables:: Variable values that exist permanently, everywhere.
360* Constant Variables:: Certain "variables" have values that never change.
361* Local Variables:: Variable values that exist only temporarily.
362* Void Variables:: Symbols that lack values.
363* Defining Variables:: A definition says a symbol is used as a variable.
f3280ac5
LK
364* Tips for Defining:: Things you should think about when you
365 define a variable.
a44af9f2
RS
366* Accessing Variables:: Examining values of variables whose names
367 are known only at run time.
368* Setting Variables:: Storing new values in variables.
369* Variable Scoping:: How Lisp chooses among local and global values.
370* Buffer-Local Variables:: Variable values in effect only in one buffer.
f3280ac5
LK
371* Frame-Local Variables:: Variable values in effect only in one frame.
372* Future Local Variables:: New kinds of local values we might add some day.
f3280ac5 373* File Local Variables:: Handling local variable lists in files.
16ac1559 374* Variable Aliases:: Variables that are aliases for other variables.
f3280ac5
LK
375* Variables with Restricted Values:: Non-constant variables whose value can
376 @emph{not} be an arbitrary Lisp object.
a44af9f2
RS
377
378Scoping Rules for Variable Bindings
379
177c0ea7 380* Scope:: Scope means where in the program a value
a44af9f2
RS
381 is visible. Comparison with other languages.
382* Extent:: Extent means how long in time a value exists.
383* Impl of Scope:: Two ways to implement dynamic scoping.
177c0ea7 384* Using Scoping:: How to use dynamic scoping carefully and
a44af9f2
RS
385 avoid problems.
386
387Buffer-Local Variables
388
389* Intro to Buffer-Local:: Introduction and concepts.
390* Creating Buffer-Local:: Creating and destroying buffer-local bindings.
391* Default Value:: The default value is seen in buffers
cc236dfe 392 that don't have their own buffer-local values.
a44af9f2
RS
393
394Functions
395
396* What Is a Function:: Lisp functions vs primitives; terminology.
397* Lambda Expressions:: How functions are expressed as Lisp objects.
398* Function Names:: A symbol can serve as the name of a function.
399* Defining Functions:: Lisp expressions for defining functions.
400* Calling Functions:: How to use an existing function.
401* Mapping Functions:: Applying a function to each element of a list, etc.
177c0ea7 402* Anonymous Functions:: Lambda-expressions are functions with no names.
a44af9f2
RS
403* Function Cells:: Accessing or setting the function definition
404 of a symbol.
f3280ac5
LK
405* Obsolete Functions:: Declaring functions obsolete.
406* Inline Functions:: Defining functions that the compiler will open code.
407* Function Safety:: Determining whether a function is safe to call.
a44af9f2 408* Related Topics:: Cross-references to specific Lisp primitives
177c0ea7 409 that have a special bearing on how
a44af9f2
RS
410 functions work.
411
412Lambda Expressions
413
414* Lambda Components:: The parts of a lambda expression.
415* Simple Lambda:: A simple example.
416* Argument List:: Details and special features of argument lists.
417* Function Documentation:: How to put documentation in a function.
418
419Macros
420
421* Simple Macro:: A basic example.
422* Expansion:: How, when and why macros are expanded.
423* Compiling Macros:: How macros are expanded by the compiler.
424* Defining Macros:: How to write a macro definition.
425* Backquote:: Easier construction of list structure.
426* Problems with Macros:: Don't evaluate the macro arguments too many times.
427 Don't hide the user's variables.
ca99e358 428* Indenting Macros:: Specifying how to indent macro calls.
a44af9f2 429
f3280ac5
LK
430Writing Customization Definitions
431
432* Common Keywords:: Common keyword arguments for all kinds of
433 customization declarations.
434* Group Definitions:: Writing customization group definitions.
435* Variable Definitions:: Declaring user options.
436* Customization Types:: Specifying the type of a user option.
437
a44af9f2
RS
438Loading
439
440* How Programs Do Loading:: The @code{load} function and others.
858ede52
RS
441* Library Search:: Finding a library to load.
442* Loading Non-ASCII:: Non-@acronym{ASCII} characters in Emacs Lisp files.
a44af9f2 443* Autoload:: Setting up a function to autoload.
a44af9f2 444* Repeated Loading:: Precautions about loading a file twice.
858ede52
RS
445* Named Features:: Loading a library if it isn't already loaded.
446* Where Defined:: Finding which file defined a certain symbol.
f7e28285 447* Unloading:: How to ``unload'' a library that was loaded.
858ede52
RS
448* Hooks for Loading:: Providing code to be run when
449 particular libraries are loaded.
a44af9f2
RS
450
451Byte Compilation
452
f3280ac5 453* Speed of Byte-Code:: An example of speedup from byte compilation.
a44af9f2 454* Compilation Functions:: Byte compilation functions.
f3280ac5
LK
455* Docs and Compilation:: Dynamic loading of documentation strings.
456* Dynamic Loading:: Dynamic loading of individual functions.
457* Eval During Compile:: Code to be evaluated when you compile.
458* Compiler Errors:: Handling compiler error messages.
459* Byte-Code Objects:: The data type used for byte-compiled functions.
a44af9f2
RS
460* Disassembly:: Disassembling byte-code; how to read byte-code.
461
f3280ac5 462Advising Emacs Lisp Functions
a9f0a989
RS
463
464* Simple Advice:: A simple example to explain the basics of advice.
465* Defining Advice:: Detailed description of @code{defadvice}.
f3280ac5 466* Around-Advice:: Wrapping advice around a function's definition.
a9f0a989
RS
467* Computed Advice:: ...is to @code{defadvice} as @code{fset} is to @code{defun}.
468* Activation of Advice:: Advice doesn't do anything until you activate it.
469* Enabling Advice:: You can enable or disable each piece of advice.
470* Preactivation:: Preactivation is a way of speeding up the
471 loading of compiled advice.
1911e6e5 472* Argument Access in Advice:: How advice can access the function's arguments.
583abbac 473* Advising Primitives:: Accessing arguments when advising a primitive.
a9f0a989
RS
474* Combined Definition:: How advice is implemented.
475
a44af9f2
RS
476Debugging Lisp Programs
477
478* Debugger:: How the Emacs Lisp debugger is implemented.
f3280ac5 479* Edebug:: A source-level Emacs Lisp debugger.
a44af9f2 480* Syntax Errors:: How to find syntax errors.
f3280ac5 481* Test Coverage:: Ensuring you have tested all branches in your code.
177c0ea7 482* Compilation Errors:: How to find errors that show up in
a44af9f2 483 byte compilation.
177c0ea7 484
a44af9f2
RS
485The Lisp Debugger
486
487* Error Debugging:: Entering the debugger when an error happens.
f3280ac5 488* Infinite Loops:: Stopping and debugging a program that doesn't exit.
a44af9f2
RS
489* Function Debugging:: Entering it when a certain function is called.
490* Explicit Debug:: Entering it at a certain point in the program.
491* Using Debugger:: What the debugger does; what you see while in it.
492* Debugger Commands:: Commands used while in the debugger.
493* Invoking the Debugger:: How to call the function @code{debug}.
494* Internals of Debugger:: Subroutines of the debugger, and global variables.
495
f3280ac5
LK
496Edebug
497
498* Using Edebug:: Introduction to use of Edebug.
499* Instrumenting:: You must instrument your code
500 in order to debug it with Edebug.
501* Edebug Execution Modes:: Execution modes, stopping more or less often.
502* Jumping:: Commands to jump to a specified place.
503* Edebug Misc:: Miscellaneous commands.
67774855 504* Breaks:: Setting breakpoints to make the program stop.
f3280ac5
LK
505* Trapping Errors:: Trapping errors with Edebug.
506* Edebug Views:: Views inside and outside of Edebug.
507* Edebug Eval:: Evaluating expressions within Edebug.
508* Eval List:: Expressions whose values are displayed
509 each time you enter Edebug.
510* Printing in Edebug:: Customization of printing.
511* Trace Buffer:: How to produce trace output in a buffer.
512* Coverage Testing:: How to test evaluation coverage.
513* The Outside Context:: Data that Edebug saves and restores.
67774855 514* Edebug and Macros:: Specifying how to handle macro calls.
f3280ac5
LK
515* Edebug Options:: Option variables for customizing Edebug.
516
a44af9f2
RS
517Debugging Invalid Lisp Syntax
518
519* Excess Open:: How to find a spurious open paren or missing close.
520* Excess Close:: How to find a spurious close paren or missing open.
521
522Reading and Printing Lisp Objects
523
524* Streams Intro:: Overview of streams, reading and printing.
177c0ea7 525* Input Streams:: Various data types that can be used as
a44af9f2
RS
526 input streams.
527* Input Functions:: Functions to read Lisp objects from text.
177c0ea7 528* Output Streams:: Various data types that can be used as
a44af9f2
RS
529 output streams.
530* Output Functions:: Functions to print Lisp objects as text.
f3280ac5
LK
531* Output Variables:: Variables that control what the printing
532 functions do.
a44af9f2
RS
533
534Minibuffers
535
536* Intro to Minibuffers:: Basic information about minibuffers.
537* Text from Minibuffer:: How to read a straight text string.
538* Object from Minibuffer:: How to read a Lisp object or expression.
f3280ac5
LK
539* Minibuffer History:: Recording previous minibuffer inputs
540 so the user can reuse them.
541* Initial Input:: Specifying initial contents for the minibuffer.
a44af9f2
RS
542* Completion:: How to invoke and customize completion.
543* Yes-or-No Queries:: Asking a question with a simple answer.
f3280ac5
LK
544* Multiple Queries:: Asking a series of similar questions.
545* Reading a Password:: Reading a password from the terminal.
0fb9f9ae
RS
546* Minibuffer Commands:: Commands used as key bindings in minibuffers.
547* Minibuffer Contents:: How such commands access the minibuffer text.
548* Minibuffer Windows:: Operating on the special minibuffer windows.
549* Recursive Mini:: Whether recursive entry to minibuffer is allowed.
a44af9f2
RS
550* Minibuffer Misc:: Various customization hooks and variables.
551
552Completion
553
554* Basic Completion:: Low-level functions for completing strings.
555 (These are too low level to use the minibuffer.)
556* Minibuffer Completion:: Invoking the minibuffer with completion.
557* Completion Commands:: Minibuffer commands that do completion.
558* High-Level Completion:: Convenient special cases of completion
559 (reading buffer name, file name, etc.)
560* Reading File Names:: Using completion to read file names.
561* Programmed Completion:: Finding the completions for a given file name.
562
563Command Loop
564
565* Command Overview:: How the command loop reads commands.
566* Defining Commands:: Specifying how a function should read arguments.
567* Interactive Call:: Calling a command, so that it will read arguments.
568* Command Loop Info:: Variables set by the command loop for you to examine.
f3280ac5 569* Adjusting Point:: Adjustment of point after a command.
a44af9f2
RS
570* Input Events:: What input looks like when you read it.
571* Reading Input:: How to read input events from the keyboard or mouse.
f3280ac5 572* Special Events:: Events processed immediately and individually.
a44af9f2
RS
573* Waiting:: Waiting for user input or elapsed time.
574* Quitting:: How @kbd{C-g} works. How to catch or defer quitting.
575* Prefix Command Arguments:: How the commands to set prefix args work.
576* Recursive Editing:: Entering a recursive edit,
577 and why you usually shouldn't.
578* Disabling Commands:: How the command loop handles disabled commands.
579* Command History:: How the command history is set up, and how accessed.
580* Keyboard Macros:: How keyboard macros are implemented.
581
582Defining Commands
583
584* Using Interactive:: General rules for @code{interactive}.
585* Interactive Codes:: The standard letter-codes for reading arguments
586 in various ways.
587* Interactive Examples:: Examples of how to read interactive arguments.
588
589Keymaps
590
591* Keymap Terminology:: Definitions of terms pertaining to keymaps.
592* Format of Keymaps:: What a keymap looks like as a Lisp object.
593* Creating Keymaps:: Functions to create and copy keymaps.
594* Inheritance and Keymaps:: How one keymap can inherit the bindings
595 of another keymap.
596* Prefix Keys:: Defining a key with a keymap as its definition.
a44af9f2
RS
597* Active Keymaps:: Each buffer has a local keymap
598 to override the standard (global) bindings.
a40d4712 599 Each minor mode can also override them.
a44af9f2
RS
600* Key Lookup:: How extracting elements from keymaps works.
601* Functions for Key Lookup:: How to request key lookup.
602* Changing Key Bindings:: Redefining a key in a keymap.
3afe8e39 603* Remapping Commands:: Bindings that translate one command to another.
a44af9f2
RS
604* Key Binding Commands:: Interactive interfaces for redefining keys.
605* Scanning Keymaps:: Looking through all keymaps, for printing help.
f3280ac5
LK
606* Menu Keymaps:: A keymap can define a menu for X
607 or for use from the terminal.
a44af9f2
RS
608
609Major and Minor Modes
610
049557c2
LT
611* Hooks:: How to use hooks; how to write code that
612 provides hooks.
a44af9f2
RS
613* Major Modes:: Defining major modes.
614* Minor Modes:: Defining minor modes.
615* Mode Line Format:: Customizing the text that appears in the mode line.
36ad23ec
LK
616* Imenu:: How a mode can provide a menu
617 of definitions in the buffer.
618* Font Lock Mode:: How modes can highlight text according to syntax.
619* Desktop Save Mode:: How modes can have buffer state saved between
620 Emacs sessions.
a44af9f2
RS
621
622Major Modes
623
049557c2 624* Major Mode Basics::
a44af9f2
RS
625* Major Mode Conventions:: Coding conventions for keymaps, etc.
626* Example Major Modes:: Text mode and Lisp modes.
627* Auto Major Mode:: How Emacs chooses the major mode automatically.
628* Mode Help:: Finding out how to use a mode.
36ad23ec
LK
629* Derived Modes:: Defining a new major mode based on another major
630 mode.
631* Generic Modes:: Defining a simple major mode that supports
632 comment syntax and Font Lock mode.
633* Mode Hooks:: Hooks run at the end of major mode functions.
a44af9f2
RS
634
635Minor Modes
636
637* Minor Mode Conventions:: Tips for writing a minor mode.
638* Keymaps and Minor Modes:: How a minor mode can have its own keymap.
36ad23ec 639* Defining Minor Modes:: A convenient facility for defining minor modes.
a44af9f2
RS
640
641Mode Line Format
642
049557c2 643* Mode Line Basics::
a44af9f2
RS
644* Mode Line Data:: The data structure that controls the mode line.
645* Mode Line Variables:: Variables used in that data structure.
646* %-Constructs:: Putting information into a mode line.
36ad23ec
LK
647* Properties in Mode:: Using text properties in the mode line.
648* Header Lines:: Like a mode line, but at the top.
649* Emulating Mode Line:: Formatting text as the mode line would.
a44af9f2
RS
650
651Documentation
652
653* Documentation Basics:: Good style for doc strings.
654 Where to put them. How Emacs stores them.
655* Accessing Documentation:: How Lisp programs can access doc strings.
656* Keys in Documentation:: Substituting current key bindings.
657* Describing Characters:: Making printable descriptions of
658 non-printing characters and key sequences.
659* Help Functions:: Subroutines used by Emacs help facilities.
660
661Files
662
663* Visiting Files:: Reading files into Emacs buffers for editing.
664* Saving Buffers:: Writing changed buffers back into files.
665* Reading from Files:: Reading files into other buffers.
666* Writing to Files:: Writing new files from parts of buffers.
667* File Locks:: Locking and unlocking files, to prevent
f3280ac5
LK
668 simultaneous editing by two people.
669* Information about Files:: Testing existence, accessibility, size of files.
f9f59935
RS
670* Changing Files:: Renaming files, changing protection, etc.
671* File Names:: Decomposing and expanding file names.
f3280ac5
LK
672* Contents of Directories:: Getting a list of the files in a directory.
673* Create/Delete Dirs:: Creating and Deleting Directories.
674* Magic File Names:: Defining "magic" special handling
675 for certain file names.
676* Format Conversion:: Conversion to and from various file formats.
a44af9f2
RS
677
678Visiting Files
679
680* Visiting Functions:: The usual interface functions for visiting.
681* Subroutines of Visiting:: Lower-level subroutines that they use.
682
683Information about Files
684
685* Testing Accessibility:: Is a given file readable? Writable?
f3280ac5
LK
686* Kinds of Files:: Is it a directory? A symbolic link?
687* Truenames:: Eliminating symbolic links from a file name.
a44af9f2
RS
688* File Attributes:: How large is it? Any other names? Etc.
689
690File Names
691
692* File Name Components:: The directory part of a file name, and the rest.
177c0ea7 693* Relative File Names:: Some file names are relative to a
a44af9f2 694 current directory.
f3280ac5
LK
695* Directory Names:: A directory's name as a directory
696 is different from its name as a file.
a44af9f2
RS
697* File Name Expansion:: Converting relative file names to absolute ones.
698* Unique File Names:: Generating names for temporary files.
699* File Name Completion:: Finding the completions for a given file name.
f3280ac5
LK
700* Standard File Names:: If your package uses a fixed file name,
701 how to handle various operating systems simply.
a44af9f2
RS
702
703Backups and Auto-Saving
704
177c0ea7 705* Backup Files:: How backup files are made; how their names
a44af9f2
RS
706 are chosen.
707* Auto-Saving:: How auto-save files are made; how their
708 names are chosen.
177c0ea7 709* Reverting:: @code{revert-buffer}, and how to customize
a44af9f2
RS
710 what it does.
711
712Backup Files
713
714* Making Backups:: How Emacs makes backup files, and when.
177c0ea7 715* Rename or Copy:: Two alternatives: renaming the old file
a44af9f2
RS
716 or copying it.
717* Numbered Backups:: Keeping multiple backups for each source file.
718* Backup Names:: How backup file names are computed; customization.
719
720Buffers
721
722* Buffer Basics:: What is a buffer?
f3280ac5
LK
723* Current Buffer:: Designating a buffer as current
724 so primitives will access its contents.
a44af9f2
RS
725* Buffer Names:: Accessing and changing buffer names.
726* Buffer File Name:: The buffer file name indicates which file
727 is visited.
728* Buffer Modification:: A buffer is @dfn{modified} if it needs to be saved.
729* Modification Time:: Determining whether the visited file was changed
730 ``behind Emacs's back''.
731* Read Only Buffers:: Modifying text is not allowed in a
732 read-only buffer.
733* The Buffer List:: How to look at all the existing buffers.
734* Creating Buffers:: Functions that create buffers.
735* Killing Buffers:: Buffers exist until explicitly killed.
f3280ac5
LK
736* Indirect Buffers:: An indirect buffer shares text with some
737 other buffer.
738* Buffer Gap:: The gap in the buffer.
a44af9f2
RS
739
740Windows
741
742* Basic Windows:: Basic information on using windows.
743* Splitting Windows:: Splitting one window into two windows.
744* Deleting Windows:: Deleting a window gives its space to other windows.
745* Selecting Windows:: The selected window is the one that you edit in.
746* Cyclic Window Ordering:: Moving around the existing windows.
747* Buffers and Windows:: Each window displays the contents of a buffer.
748* Displaying Buffers:: Higher-lever functions for displaying a buffer
749 and choosing a window for it.
f3280ac5 750* Choosing Window:: How to choose a window for displaying a buffer.
a44af9f2
RS
751* Window Point:: Each window has its own location of point.
752* Window Start:: The display-start position controls which text
177c0ea7 753 is on-screen in the window.
f3280ac5
LK
754* Textual Scrolling:: Moving text up and down through the window.
755* Vertical Scrolling:: Moving the contents up and down on the window.
756* Horizontal Scrolling:: Moving the contents sideways on the window.
a44af9f2
RS
757* Size of Window:: Accessing the size of a window.
758* Resizing Windows:: Changing the size of a window.
f3280ac5 759* Coordinates and Windows:: Converting coordinates to windows.
a44af9f2 760* Window Configurations:: Saving and restoring the state of the screen.
f3280ac5
LK
761* Window Hooks:: Hooks for scrolling, window size changes,
762 redisplay going past a certain point,
763 or window configuration changes.
a44af9f2 764
bfe721d1
KH
765Frames
766
767* Creating Frames:: Creating additional frames.
768* Multiple Displays:: Creating frames on other X displays.
769* Frame Parameters:: Controlling frame size, position, font, etc.
770* Frame Titles:: Automatic updating of frame titles.
771* Deleting Frames:: Frames last until explicitly deleted.
772* Finding All Frames:: How to examine all existing frames.
773* Frames and Windows:: A frame contains windows;
774 display of text always works through windows.
775* Minibuffers and Frames:: How a frame finds the minibuffer to use.
776* Input Focus:: Specifying the selected frame.
777* Visibility of Frames:: Frames may be visible or invisible, or icons.
778* Raising and Lowering:: Raising a frame makes it hide other X windows;
1911e6e5 779 lowering it puts it underneath the others.
bfe721d1
KH
780* Frame Configurations:: Saving the state of all frames.
781* Mouse Tracking:: Getting events that say when the mouse moves.
782* Mouse Position:: Asking where the mouse is, or moving it.
783* Pop-Up Menus:: Displaying a menu for the user to select from.
784* Dialog Boxes:: Displaying a box to ask yes or no.
785* Pointer Shapes:: Specifying the shape of the mouse pointer.
ebc6903b 786* Window System Selections::Transferring text to and from other windows.
bfe721d1 787* Color Names:: Getting the definitions of color names.
f3280ac5 788* Text Terminal Colors:: Defining colors for text-only terminals.
bfe721d1 789* Resources:: Getting resource values from the server.
e79a8eb2 790* Display Feature Testing:: Determining the features of a terminal.
bfe721d1 791
a44af9f2
RS
792Positions
793
794* Point:: The special position where editing takes place.
795* Motion:: Changing point.
796* Excursions:: Temporary motion and buffer changes.
797* Narrowing:: Restricting editing to a portion of the buffer.
798
799Motion
800
801* Character Motion:: Moving in terms of characters.
802* Word Motion:: Moving in terms of words.
803* Buffer End Motion:: Moving to the beginning or end of the buffer.
804* Text Lines:: Moving in terms of lines of text.
805* Screen Lines:: Moving in terms of lines as displayed.
a44af9f2
RS
806* List Motion:: Moving by parsing lists and sexps.
807* Skipping Characters:: Skipping characters belonging to a certain set.
808
809Markers
810
811* Overview of Markers:: The components of a marker, and how it relocates.
812* Predicates on Markers:: Testing whether an object is a marker.
813* Creating Markers:: Making empty markers or markers at certain places.
f3280ac5
LK
814* Information from Markers::Finding the marker's buffer or character
815 position.
816* Marker Insertion Types:: Two ways a marker can relocate when you
817 insert where it points.
f9f59935 818* Moving Markers:: Moving the marker to a new buffer or position.
a44af9f2
RS
819* The Mark:: How ``the mark'' is implemented with a marker.
820* The Region:: How to access ``the region''.
821
822Text
823
824* Near Point:: Examining text in the vicinity of point.
825* Buffer Contents:: Examining text in a general fashion.
f3280ac5 826* Comparing Text:: Comparing substrings of buffers.
a44af9f2
RS
827* Insertion:: Adding new text to a buffer.
828* Commands for Insertion:: User-level commands to insert text.
829* Deletion:: Removing text from a buffer.
830* User-Level Deletion:: User-level commands to delete text.
831* The Kill Ring:: Where removed text sometimes is saved for
832 later use.
833* Undo:: Undoing changes to the text of a buffer.
f3280ac5
LK
834* Maintaining Undo:: How to enable and disable undo information.
835 How to control how much information is kept.
a44af9f2 836* Filling:: Functions for explicit filling.
bfe721d1 837* Margins:: How to specify margins for filling commands.
f3280ac5
LK
838* Adaptive Fill:: Adaptive Fill mode chooses a fill prefix
839 from context.
840* Auto Filling:: How auto-fill mode is implemented to break lines.
a44af9f2 841* Sorting:: Functions for sorting parts of the buffer.
a44af9f2 842* Columns:: Computing horizontal positions, and using them.
f3280ac5 843* Indentation:: Functions to insert or adjust indentation.
a44af9f2 844* Case Changes:: Case conversion of parts of the buffer.
840797ee 845* Text Properties:: Assigning Lisp property lists to text characters.
a44af9f2 846* Substitution:: Replacing a given character wherever it appears.
840797ee 847* Transposition:: Swapping two portions of a buffer.
a44af9f2
RS
848* Registers:: How registers are implemented. Accessing
849 the text or position stored in a register.
3afe8e39
RS
850* Base 64:: Conversion to or from base 64 encoding.
851* MD5 Checksum:: Compute the MD5 ``message digest''/``checksum''.
f3280ac5 852* Atomic Changes:: Installing several buffer changes ``atomically''.
840797ee 853* Change Hooks:: Supplying functions to be run when text is changed.
177c0ea7 854
a44af9f2
RS
855The Kill Ring
856
857* Kill Ring Concepts:: What text looks like in the kill ring.
858* Kill Functions:: Functions that kill text.
3afe8e39 859* Yanking:: How yanking is done.
a44af9f2 860* Yank Commands:: Commands that access the kill ring.
22697dac 861* Low-Level Kill Ring:: Functions and variables for kill ring access.
a44af9f2
RS
862* Internals of Kill Ring:: Variables that hold kill-ring data.
863
864Indentation
865
866* Primitive Indent:: Functions used to count and insert indentation.
867* Mode-Specific Indent:: Customize indentation for different modes.
868* Region Indent:: Indent all the lines in a region.
869* Relative Indent:: Indent the current line based on previous lines.
870* Indent Tabs:: Adjustable, typewriter-like tab stops.
871* Motion by Indent:: Move to first non-blank character.
872
840797ee
KH
873Text Properties
874
875* Examining Properties:: Looking at the properties of one character.
876* Changing Properties:: Setting the properties of a range of text.
877* Property Search:: Searching for where a property changes value.
878* Special Properties:: Particular properties with special meanings.
879* Format Properties:: Properties for representing formatting of text.
880* Sticky Properties:: How inserted text gets properties from
881 neighboring text.
882* Saving Properties:: Saving text properties in files, and reading
883 them back.
884* Lazy Properties:: Computing text properties in a lazy fashion
885 only when text is examined.
3d24098d
RS
886* Clickable Text:: Using text properties to make regions of text
887 do something when you click on them.
f3280ac5 888* Links and Mouse-1:: How to make @key{Mouse-1} follow a link.
3d24098d
RS
889* Fields:: The @code{field} property defines
890 fields within the buffer.
840797ee
KH
891* Not Intervals:: Why text properties do not use
892 Lisp-visible text intervals.
893
5557b83b
RS
894Non-ASCII Characters
895
896* Text Representations:: Unibyte and multibyte representations
897* Converting Representations:: Converting unibyte to multibyte and vice versa.
898* Selecting a Representation:: Treating a byte sequence as unibyte or multi.
899* Character Codes:: How unibyte and multibyte relate to
900 codes of individual characters.
901* Character Sets:: The space of possible characters codes
902 is divided into various character sets.
903* Chars and Bytes:: More information about multibyte encodings.
904* Splitting Characters:: Converting a character to its byte sequence.
905* Scanning Charsets:: Which character sets are used in a buffer?
906* Translation of Characters:: Translation tables are used for conversion.
907* Coding Systems:: Coding systems are conversions for saving files.
908* Input Methods:: Input methods allow users to enter various
8a9e355c 909 non-ASCII characters without special keyboards.
5557b83b
RS
910* Locales:: Interacting with the POSIX locale.
911
a44af9f2
RS
912Searching and Matching
913
914* String Search:: Search for an exact match.
62929713 915* Searching and Case:: Case-independent or case-significant searching.
a44af9f2
RS
916* Regular Expressions:: Describing classes of strings.
917* Regexp Search:: Searching for a match for a regexp.
f3280ac5 918* POSIX Regexps:: Searching POSIX-style for the longest match.
62929713
RS
919* Match Data:: Finding out which part of the text matched,
920 after a string or regexp search.
921* Search and Replace:: Commands that loop, searching and replacing.
f3280ac5 922* Standard Regexps:: Useful regexps for finding sentences, pages,...
a44af9f2
RS
923
924Regular Expressions
925
926* Syntax of Regexps:: Rules for writing regular expressions.
927* Regexp Example:: Illustrates regular expression syntax.
f3280ac5 928* Regexp Functions:: Functions for operating on regular expressions.
a44af9f2
RS
929
930Syntax Tables
931
f3280ac5 932* Syntax Basics:: Basic concepts of syntax tables.
a44af9f2
RS
933* Syntax Descriptors:: How characters are classified.
934* Syntax Table Functions:: How to create, examine and alter syntax tables.
f3280ac5
LK
935* Syntax Properties:: Overriding syntax with text properties.
936* Motion and Syntax:: Moving over characters with certain syntaxes.
a44af9f2
RS
937* Parsing Expressions:: Parsing balanced expressions
938 using the syntax table.
939* Standard Syntax Tables:: Syntax tables used by various major modes.
940* Syntax Table Internals:: How syntax table information is stored.
f3280ac5 941* Categories:: Another way of classifying character syntax.
a44af9f2
RS
942
943Syntax Descriptors
944
945* Syntax Class Table:: Table of syntax classes.
946* Syntax Flags:: Additional flags each character can have.
947
948Abbrevs And Abbrev Expansion
949
950* Abbrev Mode:: Setting up Emacs for abbreviation.
f3280ac5 951* Abbrev Tables:: Creating and working with abbrev tables.
a44af9f2 952* Defining Abbrevs:: Specifying abbreviations and their expansions.
f3280ac5
LK
953* Abbrev Files:: Saving abbrevs in files.
954* Abbrev Expansion:: Controlling expansion; expansion subroutines.
a44af9f2
RS
955* Standard Abbrev Tables:: Abbrev tables used by various major modes.
956
957Processes
958
959* Subprocess Creation:: Functions that start subprocesses.
f3280ac5 960* Shell Arguments:: Quoting an argument to pass it to a shell.
a44af9f2
RS
961* Synchronous Processes:: Details of using synchronous subprocesses.
962* Asynchronous Processes:: Starting up an asynchronous subprocess.
963* Deleting Processes:: Eliminating an asynchronous subprocess.
964* Process Information:: Accessing run-status and other attributes.
965* Input to Processes:: Sending input to an asynchronous subprocess.
966* Signals to Processes:: Stopping, continuing or interrupting
967 an asynchronous subprocess.
968* Output from Processes:: Collecting output from an asynchronous subprocess.
969* Sentinels:: Sentinels run when process run-status changes.
f3280ac5
LK
970* Query Before Exit:: Whether to query if exiting will kill a process.
971* Transaction Queues:: Transaction-based communication with subprocesses.
bfe721d1 972* Network:: Opening network connections.
f3280ac5
LK
973* Network Servers:: Network servers let Emacs accept net connections.
974* Datagrams:: UDP network connections.
975* Low-Level Network:: Lower-level but more general function
976 to create connections and servers.
2c59ce38
RS
977* Misc Network:: Additional relevant functions for network connections.
978* Byte Packing:: Using bindat to pack and unpack binary data.
a44af9f2
RS
979
980Receiving Output from Processes
981
982* Process Buffers:: If no filter, output is put in a buffer.
983* Filter Functions:: Filter functions accept output from the process.
e37769b1 984* Decoding Output:: Filters can get unibyte or multibyte strings.
a44af9f2
RS
985* Accepting Output:: How to wait until process output arrives.
986
f3280ac5
LK
987Emacs Display
988
989* Refresh Screen:: Clearing the screen and redrawing everything on it.
990* Forcing Redisplay:: Forcing redisplay.
991* Truncation:: Folding or wrapping long text lines.
99297d62 992* The Echo Area:: Displaying messages at the bottom of the screen.
f3280ac5 993* Warnings:: Displaying warning messages for the user.
f3280ac5 994* Invisible Text:: Hiding part of the buffer text.
99297d62 995* Selective Display:: Hiding part of the buffer text (the old way).
f3280ac5
LK
996* Temporary Displays:: Displays that go away automatically.
997* Overlays:: Use overlays to highlight parts of the buffer.
998* Width:: How wide a character or string is on the screen.
999* Line Height:: Controlling the height of lines.
1000* Faces:: A face defines a graphics style
1001 for text characters: font, colors, etc.
1002* Fringes:: Controlling window fringes.
1003* Scroll Bars:: Controlling vertical scroll bars.
1004* Pointer Shape:: Controlling the mouse pointer shape.
1005* Display Property:: Enabling special display features.
1006* Images:: Displaying images in Emacs buffers.
1007* Buttons:: Adding clickable buttons to Emacs buffers.
1008* Blinking:: How Emacs shows the matching open parenthesis.
f3280ac5
LK
1009* Usual Display:: The usual conventions for displaying nonprinting chars.
1010* Display Tables:: How to specify other conventions.
1011* Beeping:: Audible signal to the user.
1012* Window Systems:: Which window system is being used.
1013
a44af9f2
RS
1014Operating System Interface
1015
1016* Starting Up:: Customizing Emacs start-up processing.
1017* Getting Out:: How exiting works (permanent or temporary).
1018* System Environment:: Distinguish the name and kind of system.
f3280ac5
LK
1019* User Identification:: Finding the name and user id of the user.
1020* Time of Day:: Getting the current time.
1021* Time Conversion:: Converting a time from numeric form to a string, or
1022 to calendrical data (or vice versa).
2c59ce38
RS
1023* Time Parsing:: Converting a time from numeric form to text
1024 and vice versa.
f3280ac5
LK
1025* Processor Run Time:: Getting the run time used by Emacs.
1026* Time Calculations:: Adding, subtracting, comparing times, etc.
1027* Timers:: Setting a timer to call a function at a certain time.
a44af9f2
RS
1028* Terminal Input:: Recording terminal input for debugging.
1029* Terminal Output:: Recording terminal output for debugging.
f3280ac5
LK
1030* Sound Output:: Playing sounds on the computer's speaker.
1031* X11 Keysyms:: Operating on key symbols for X Windows
a44af9f2 1032* Batch Mode:: Running Emacs without terminal interaction.
f3280ac5 1033* Session Management:: Saving and restoring state with X Session Management.
a44af9f2
RS
1034
1035Starting Up Emacs
1036
8241495d 1037* Startup Summary:: Sequence of actions Emacs performs at start-up.
a44af9f2
RS
1038* Init File:: Details on reading the init file (@file{.emacs}).
1039* Terminal-Specific:: How the terminal-specific Lisp file is read.
8241495d 1040* Command-Line Arguments:: How command line arguments are processed,
a44af9f2
RS
1041 and how you can customize them.
1042
1043Getting out of Emacs
1044
1045* Killing Emacs:: Exiting Emacs irreversibly.
1046* Suspending Emacs:: Exiting Emacs reversibly.
1047
f3280ac5 1048Tips and Conventions
a44af9f2 1049
f3280ac5 1050* Coding Conventions:: Conventions for clean and robust programs.
2c59ce38
RS
1051* Key Binding Conventions:: Which keys should be bound by which programs.
1052* Programming Tips:: Making Emacs code fit smoothly in Emacs.
1053* Compilation Tips:: Making compiled code run fast.
1054* Warning Tips:: Turning off compiler warnings.
f3280ac5
LK
1055* Documentation Tips:: Writing readable documentation strings.
1056* Comment Tips:: Conventions for writing comments.
1057* Library Headers:: Standard headers for library packages.
a44af9f2
RS
1058
1059GNU Emacs Internals
1060
1061* Building Emacs:: How to preload Lisp libraries into Emacs.
1062* Pure Storage:: A kludge to make preloaded Lisp functions sharable.
1063* Garbage Collection:: Reclaiming space for Lisp objects no longer used.
f3280ac5 1064* Memory Usage:: Info about total size of Lisp objects made so far.
a44af9f2 1065* Writing Emacs Primitives:: Writing C code for Emacs.
f3280ac5 1066* Object Internals:: Data formats of buffers, windows, processes.
a44af9f2
RS
1067
1068Object Internals
1069
1070* Buffer Internals:: Components of a buffer structure.
1071* Window Internals:: Components of a window structure.
1072* Process Internals:: Components of a process structure.
1073@end menu
1074
1075@include intro.texi
1076@include objects.texi
1077@include numbers.texi
1078@include strings.texi
1079
1080@include lists.texi
1081@include sequences.texi
8241495d 1082@include hash.texi
a44af9f2
RS
1083@include symbols.texi
1084@include eval.texi
1085
1086@include control.texi
1087@include variables.texi
1088@include functions.texi
1089@include macros.texi
1090
f9f59935 1091@include customize.texi
a44af9f2
RS
1092@include loading.texi
1093@include compile.texi
cc236dfe 1094@include advice.texi
a44af9f2 1095
cc236dfe 1096@include debugging.texi
f9f59935 1097@include streams.texi
a44af9f2
RS
1098@include minibuf.texi
1099@include commands.texi
a44af9f2 1100
cc236dfe 1101@include keymaps.texi
f9f59935 1102@include modes.texi
a44af9f2
RS
1103@include help.texi
1104@include files.texi
a44af9f2 1105
cc236dfe 1106@include backups.texi
f9f59935 1107@include buffers.texi
a44af9f2
RS
1108@include windows.texi
1109@include frames.texi
f9f59935 1110
cc236dfe 1111@include positions.texi
a44af9f2
RS
1112@include markers.texi
1113@include text.texi
f9f59935 1114@include nonascii.texi
f9f59935 1115
cc236dfe 1116@include searching.texi
a44af9f2
RS
1117@include syntax.texi
1118@include abbrevs.texi
a44af9f2 1119@include processes.texi
f9f59935 1120
a44af9f2 1121@include display.texi
513331d3 1122@include os.texi
a44af9f2
RS
1123
1124@c MOVE to Emacs Manual: include misc-modes.texi
1125
1126@c appendices
1127
1128@c REMOVE this: include non-hacker.texi
1129
a40d4712 1130@include anti.texi
9695b783
GM
1131@include doclicense.texi
1132@include gpl.texi
a44af9f2
RS
1133@include tips.texi
1134@include internals.texi
1135@include errors.texi
1136@include locals.texi
1137@include maps.texi
1138@include hooks.texi
a44af9f2
RS
1139
1140@include index.texi
1141
f9f59935 1142@node New Symbols, , Index, Top
a9f0a989 1143@unnumbered New Symbols Since the Previous Edition
f9f59935 1144
cc236dfe 1145@printindex tp
f9f59935 1146
a44af9f2
RS
1147@bye
1148
1149\f
1150These words prevent "local variables" above from confusing Emacs.
ab5796a9
MB
1151
1152@ignore
1153 arch-tag: f7e9a219-a0e1-4776-b631-08eaa1d49b34
1154@end ignore