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

XEmacs Lisp Reference Manual

This Info file contains the third edition of the XEmacs Lisp Reference Manual, corresponding to XEmacs version 21.0.

GNU GENERAL PUBLIC LICENSE  Conditions for copying and changing XEmacs.
1. Introduction  Introduction and conventions used.
2. The XEmacs Packaging System  Lisp library administrative infrastructure.
8. Lisp Data Types  Data types of objects in XEmacs Lisp.
9. Numbers  Numbers and arithmetic functions.
10. Strings and Characters  Strings, and functions that work on them.
11. Lists  Lists, cons cells, and related functions.
12. 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.
13. Symbols  Symbols represent names, uniquely.
14. Evaluation  How Lisp expressions are evaluated.
15. Control Structures  Conditionals, loops, nonlocal exits.
16. Variables  Using symbols in programs to stand for values.
17. Functions and Commands  A function is a Lisp program that can be invoked from other functions.
18. Macros  Macros are a way to extend the Lisp language.
19. Writing Customization Definitions  Writing customization declarations.
20. Loading  Reading files of Lisp code into Lisp.
21. Byte Compilation  Compilation makes programs run faster.
22. Debugging Lisp Programs  Tools and tips for debugging Lisp programs.
23. Reading and Printing Lisp Objects  Converting Lisp objects to text and back.
24. Minibuffers  Using the minibuffer to read input.
25. Command Loop  How the editor command loop works, and how you can call its subroutines.
26. Keymaps  Defining the bindings from keys to commands.
27. Menus  Defining pull-down and pop-up menus.
28. Dialog Boxes  Creating dialog boxes.
29. Toolbar  Controlling the toolbar.
30. Gutter  Controlling the gutter.
31. Scrollbars  Controlling the scrollbars.
32. Drag and Drop  Generic API to inter-application communication via specific protocols.
33. Major and Minor Modes  Defining major and minor modes.
34. Documentation  Writing and using documentation strings.
35. Files  Accessing files.
36. Backups and Auto-Saving  Controlling how backups and auto-save files are made.
37. Buffers  Creating and using buffer objects.
38. Windows  Manipulating windows and displaying buffers.
39. Frames  Making multiple X windows.
40. Consoles and Devices  Opening frames on multiple TTY's or X displays.
41. Positions  Buffer positions and motion functions.
42. Markers  Markers represent positions and update automatically when the text is changed.
43. Text  Examining and changing text in buffers.
44. Searching and Matching  Searching buffers for strings or regexps.
45. Syntax Tables  The syntax table controls word and list parsing.
46. Abbrevs And Abbrev Expansion  How Abbrev mode works, and its data structures.
47. Extents  Extents are regions of text with particular display characteristics.
48. Specifiers  How faces and glyphs are specified.
49. Faces and Window-System Objects  A face is a set of display characteristics specifying how text is to be displayed.
50. Glyphs  General interface to pixmaps displayed in a buffer or frame.
51. Annotations  Higher-level interface to glyphs in a buffer.
52. Emacs Display  Parameters controlling screen usage. The bell. Waiting for input.
53. Hash Tables  Fast data structures for mappings.
54. Range Tables  Keeping track of ranges of numbers.
55. Databases  An interface to standard DBM and DB databases.
56. Processes  Running and communicating with subprocesses.
57. Operating System Interface  Getting the user id, system type, environment variables, and other such things.
58. Functions Specific to the X Window System  Functions specific to the X Window System.
59. ToolTalk Support  Interfacing with the ToolTalk message service.
60. LDAP Support  Interfacing with the Lightweight Directory Access Protocol.
61. PostgreSQL Support  Interfacing to the PostgreSQL libpq library.
62. Internationalization  How Emacs supports different languages and cultural conventions.
63. MULE  Specifics of the Asian-language support.
Appendices
A. Tips and Standards  Advice for writing Lisp programs.
B. Building XEmacs; Allocation of Objects  Behind-the-scenes information about XEmacs.
C. Standard Errors  List of all error symbols.
D. Buffer-Local Variables  List of variables local in all buffers.
E. Standard Keymaps  List of standard keymaps.
F. 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
1.1 Caveats  Flaws and a request for help.
1.2 Lisp History  XEmacs Lisp is descended from Maclisp.
1.3 Conventions  How the manual is formatted.
1.4 Acknowledgements  The authors, editors, and sponsors of this manual.
Conventions
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.
Format of Descriptions
1.3.7.1 A Sample Function Description  
1.3.7.2 A Sample Variable Description  
Packaging
3. An overview of the XEmacs Packaging System  Lisp Libraries and Packages.
Package Terminology:  Basic stuff.
Building Packages:  Turn packaged source into a tarball.
The Local.rules File:  Tell the XEmacs Packaging System about your host.
5. Creating Packages:  Tell the XEmacs Packaging System about your package.
7.2 Issues  
Package Overview
3.1 The User View  
3.2 The Library Maintainer View  
3.2.4 The Package Release Engineer View  
The Library Maintainer's View
3.2.1 Infrastructure  Global Makefiles and common rules.
3.2.2 Control Files  Package-specific Makefiles and administrative files.
3.2.3 Obtaining the XEmacs Packaging System and Required Utilities  Obtaining the XEmacs Packaging System and utilities.
Creating Packages
6. package-info.in  
7. `Makefile'  
4. `Makefile' targets  
Lisp Data Types
8.1 Printed Representation and Read Syntax  How Lisp objects are represented as text.
8.2 Comments  Comments and their formatting conventions.
8.4 Programming Types  Types found in all Lisp systems.
8.5 Editing Types  Types specific to XEmacs.
8.7 Type Predicates  Tests related to types.
8.8 Equality Predicates  Tests of equality between any two objects.
Programming Types
8.4.1 Integer Type  Numbers without fractional parts.
8.4.2 Floating Point Type  Numbers with fractional parts and with a large range.
8.4.3 Character Type  The representation of letters, numbers and control characters.
8.4.5 Sequence Types  Both lists and arrays are classified as sequences.
8.4.6 Cons Cell and List Types  Cons cells, and lists (which are made from cons cells).
8.4.7 Array Type  Arrays include strings and vectors.
8.4.8 String Type  An (efficient) array of characters.
8.4.9 Vector Type  One-dimensional arrays.
8.4.4 Symbol Type  A multi-use object that refers to a function, variable, property list, or itself.
8.4.11 Function Type  A piece of executable code you can call from elsewhere.
8.4.12 Macro Type  A method of expanding an expression into another expression, more fundamental but less pretty.
8.4.13 Primitive Function Type  A function written in C, callable from Lisp.
8.4.14 Compiled-Function Type  A function written in Lisp, then compiled.
8.4.15 Autoload Type  A type used for automatically loading seldom-used functions.
Cons Cell Type
8.4.6.1 Dotted Pair Notation  An alternative syntax for lists.
8.4.6.2 Association List Type  A specially constructed list.
Editing Types
8.5.1 Buffer Type  The basic object of editing.
8.5.4 Window Type  What makes buffers visible.
8.5.8 Window Configuration Type  Save what the screen looks like.
8.5.2 Marker Type  A position in a buffer.
8.5.10 Process Type  A process running on the underlying OS.
8.5.11 Stream Type  Receive or send characters.
8.5.12 Keymap Type  What function a keystroke invokes.
8.5.13 Syntax Table Type  What a character means.
Numbers
9.1 Integer Basics  Representation and range of integers.
9.4.2 Ratio Basics  Representation and range of rational numbers.
9.3 Floating Point Basics  Representation and range of floating point.
9.4 The Bignum Extension  Arbitrary precision integers, ratios, and floats.
9.5 Type Predicates for Numbers  Testing for numbers.
9.6 Comparison of Numbers  Equality and inequality predicates.
9.8 Arithmetic Operations  How to add, subtract, multiply and divide.
9.10 Bitwise Operations on Integers  Logical and, or, not, shifting.
9.7 Numeric Conversions  Converting float to integer and vice versa.
9.11 Standard Mathematical Functions  Trig, exponential and logarithmic functions.
9.12 Random Numbers  Obtaining random integers, predictable or not.
Strings and Characters
10.1 String and Character Basics  Basic properties of strings and characters.
10.2 The Predicates for Strings  Testing whether an object is a string or char.
10.3 Creating Strings  Functions to allocate new strings.
10.4 The Predicates for Characters  Testing whether an object is a character.
10.5 Character Codes  Each character has an equivalent integer.
10.6 Comparison of Characters and Strings  Comparing characters or strings.
10.7 Conversion of Characters and Strings  Converting characters or strings and vice versa.
10.8 Modifying Strings  Changing characters in a string.
10.9 String Properties  Additional information attached to strings.
10.10 Formatting Strings  format: XEmacs's analog of printf.
10.11 Character Case  Case conversion functions.
10.13 The Char Table  Mapping from characters to Lisp objects.
10.12 The Case Table  Customizing case conversion.
Lists
11.1 Lists and Cons Cells  How lists are made out of cons cells.
11.2 Lists as Linked Pairs of Boxes  Graphical notation to explain lists.
11.3 Predicates on Lists  Is this object a list? Comparing two lists.
11.4 Accessing Elements of Lists  Extracting the pieces of a list.
11.5 Building Cons Cells and Lists  Creating list structure.
11.6 Modifying Existing List Structure  Storing new pieces into an existing list.
11.7 Using Lists as Sets  A list can represent a finite mathematical set.
11.8 Association Lists  A list can represent a finite relation or mapping.
11.9 Property Lists  A different way to represent a finite mapping.
11.10 Weak Lists  A list with special garbage-collection behavior.
Modifying Existing List Structure
11.6.1 Altering List Elements with setcar  Replacing an element in a list.
11.6.2 Altering the CDR of a List  Replacing part of the list backbone. This can be used to remove or add elements.
11.6.3 Functions that Rearrange Lists  Reordering the elements in a list; combining lists.
Sequences, Arrays, and Vectors
12.1 Sequences  Functions that accept any kind of sequence.
12.2 Arrays  Characteristics of arrays in XEmacs Lisp.
12.3 Functions that Operate on Arrays  Functions specifically for arrays.
12.4 Vectors  Functions specifically for vectors.
Symbols
13.1 Symbol Components  Symbols have names, values, function definitions and property lists.
13.2 Defining Symbols  A definition says how a symbol will be used.
13.3 Creating and Interning Symbols  How symbols are kept unique.
13.4 Symbol Properties  Each symbol has a property list for recording miscellaneous information.
Evaluation
14.1 Introduction to Evaluation  Evaluation in the scheme of things.
14.2 Eval  How to invoke the Lisp interpreter explicitly.
14.3 Kinds of Forms  How various sorts of objects are evaluated.
14.4 Quoting  Avoiding evaluation (to put constants in the program).
Kinds of Forms
14.3.1 Self-Evaluating Forms  Forms that evaluate to themselves.
14.3.2 Symbol Forms  Symbols evaluate as variables.
14.3.3 Classification of List Forms  How to distinguish various sorts of list forms.
14.3.5 Evaluation of Function Forms  Forms that call functions.
14.3.6 Lisp Macro Evaluation  Forms that call macros.
14.3.7 Special Operators  "Special operators" are idiosyncratic primitives, most of them extremely important.
14.3.8 Autoloading  Functions set up to load files containing their real definitions.
Control Structures
15.1 Sequencing  Evaluation in textual order.
15.2 Conditionals  if, cond.
15.3 Constructs for Combining Conditions  and, or, not.
15.4 Iteration  while loops.
15.5 Nonlocal Exits  Jumping out of a sequence.
Nonlocal Exits
15.5.1 Explicit Nonlocal Exits: catch and throw  Nonlocal exits for the program's own purposes.
15.5.2 Examples of catch and throw  Showing how such nonlocal exits can be written.
15.5.3 Errors  How errors are signaled and handled.
15.5.4 Cleaning Up from Nonlocal Exits  Arranging to run a cleanup form if an error happens.
Errors
15.5.3.1 How to Signal an Error  How to report an error.
15.5.3.2 How XEmacs Processes Errors  What XEmacs does when you report an error.
15.5.3.3 Writing Code to Handle Errors  How you can trap errors and continue execution.
15.5.3.4 Error Symbols and Condition Names  How errors are classified for trapping them.
Variables
16.1 Global Variables  Variable values that exist permanently, everywhere.
16.2 Variables That Never Change  Certain "variables" have values that never change.
16.3 Local Variables  Variable values that exist only temporarily.
16.4 When a Variable is "Void"  Symbols that lack values.
16.5 Defining Global Variables  A definition says a symbol is used as a variable.
16.6 Accessing Variable Values  Examining values of variables whose names are known only at run time.
16.7 How to Alter a Variable Value  Storing new values in variables.
16.8 Scoping Rules for Variable Bindings  How Lisp chooses among local and global values.
16.9 Buffer-Local Variables  Variable values in effect only in one buffer.
Scoping Rules for Variable Bindings
16.8.1 Scope  Scope means where in the program a value is visible. Comparison with other languages.
16.8.2 Extent  Extent means how long in time a value exists.
16.8.3 Implementation of Dynamic Scoping  Two ways to implement dynamic scoping.
16.8.4 Proper Use of Dynamic Scoping  How to use dynamic scoping carefully and avoid problems.
Buffer-Local Variables
16.9.1 Introduction to Buffer-Local Variables  Introduction and concepts.
16.9.2 Creating and Deleting Buffer-Local Bindings  Creating and destroying buffer-local bindings.
16.9.3 The Default Value of a Buffer-Local Variable  The default value is seen in buffers that don't have their own local values.
Functions
17.1 What Is a Function?  Lisp functions vs primitives; terminology.
17.2 Lambda Expressions  How functions are expressed as Lisp objects.
17.3 Naming a Function  A symbol can serve as the name of a function.
17.4 Defining Functions  Lisp expressions for defining functions.
17.5 Calling Functions  How to use an existing function.
17.6 Mapping Functions  Applying a function to each element of a list, etc.
17.7 Anonymous Functions  Lambda-expressions are functions with no names.
17.8 Accessing Function Cell Contents  Accessing or setting the function definition of a symbol.
17.10 Other Topics Related to Functions  Cross-references to specific Lisp primitives that have a special bearing on how functions work.
Lambda Expressions
17.2.1 Components of a Lambda Expression  The parts of a lambda expression.
17.2.2 A Simple Lambda-Expression Example  A simple example.
17.2.3 Advanced Features of Argument Lists  Details and special features of argument lists.
17.2.4 Documentation Strings of Functions  How to put documentation in a function.
Macros
18.1 A Simple Example of a Macro  A basic example.
18.2 Expansion of a Macro Call  How, when and why macros are expanded.
18.3 Macros and Byte Compilation  How macros are expanded by the compiler.
18.4 Defining Macros  How to write a macro definition.
18.5 Backquote  Easier construction of list structure.
18.6 Common Problems Using Macros  Don't evaluate the macro arguments too many times. Don't hide the user's variables.
Loading
20.1 How Programs Do Loading  The load function and others.
20.2 Autoload  Setting up a function to autoload.
20.4 Features  Loading a library if it isn't already loaded.
20.3 Repeated Loading  Precautions about loading a file twice.
Byte Compilation
21.1 Performance of Byte-Compiled Code  An example of speedup from byte compilation.
21.2 The Compilation Functions  Byte compilation functions.
21.4 Documentation Strings and Compilation  Dynamic loading of documentation strings.
21.5 Dynamic Loading of Individual Functions  Dynamic loading of individual functions.
21.6 Evaluation During Compilation  Code to be evaluated when you compile.
21.7 Compiled-Function Objects  The data type used for byte-compiled functions.
21.8 Disassembled Byte-Code  Disassembling byte-code; how to read byte-code.
21.9 Different Behavior  When compiled code gives different results.
Debugging Lisp Programs
22.1 The Lisp Debugger  How the XEmacs Lisp debugger is implemented.
22.2 Debugging Invalid Lisp Syntax  How to find syntax errors.
22.3 Debugging Problems in Compilation  How to find errors that show up in byte compilation.
22.4 Edebug  A source-level XEmacs Lisp debugger.
The Lisp Debugger
22.1.1 Entering the Debugger on an Error  Entering the debugger when an error happens.
22.1.3 Entering the Debugger on a Function Call  Entering it when a certain function is called.
22.1.4 Explicit Entry to the Debugger  Entering it at a certain point in the program.
22.1.5 Using the Debugger  What the debugger does; what you see while in it.
22.1.6 Debugger Commands  Commands used while in the debugger.
22.1.7 Invoking the Debugger  How to call the function debug.
22.1.8 Internals of the Debugger  Subroutines of the debugger, and global variables.
Debugging Invalid Lisp Syntax
22.2.1 Excess Open Parentheses  How to find a spurious open paren or missing close.
22.2.2 Excess Close Parentheses  How to find a spurious close paren or missing open.
Reading and Printing Lisp Objects
23.1 Introduction to Reading and Printing  Overview of streams, reading and printing.
23.2 Input Streams  Various data types that can be used as input streams.
23.3 Input Functions  Functions to read Lisp objects from text.
23.4 Output Streams  Various data types that can be used as output streams.
23.5 Output Functions  Functions to print Lisp objects as text.
Minibuffers
24.1 Introduction to Minibuffers  Basic information about minibuffers.
24.2 Reading Text Strings with the Minibuffer  How to read a straight text string.
24.3 Reading Lisp Objects with the Minibuffer  How to read a Lisp object or expression.
24.5 Completion  How to invoke and customize completion.
24.6 Yes-or-No Queries  Asking a question with a simple answer.
24.9 Minibuffer Miscellany  Various customization hooks and variables.
Completion
24.5.1 Basic Completion Functions  Low-level functions for completing strings.
(These are too low level to use the minibuffer.)
24.5.2 Completion and the Minibuffer  Invoking the minibuffer with completion.
24.5.3 Minibuffer Commands That Do Completion  Minibuffer commands that do completion.
24.5.4 High-Level Completion Functions  Convenient special cases of completion
(reading buffer name, file name, etc.)
24.5.5 Reading File Names  Using completion to read file names.
24.5.6 Programmed Completion  Finding the completions for a given file name.
Command Loop
25.1 Command Loop Overview  How the command loop reads commands.
25.2 Defining Commands  Specifying how a function should read arguments.
25.3 Interactive Call  Calling a command, so that it will read arguments.
25.4 Information from the Command Loop  Variables set by the command loop for you to examine.
25.5 Events  What input looks like when you read it.
25.6 Reading Input  How to read input events from the keyboard or mouse.
25.7 Waiting for Elapsed Time or Input  Waiting for user input or elapsed time.
25.8 Quitting  How C-g works. How to catch or defer quitting.
25.9 Prefix Command Arguments  How the commands to set prefix args work.
25.10 Recursive Editing  Entering a recursive edit, and why you usually shouldn't.
25.11 Disabling Commands  How the command loop handles disabled commands.
25.12 Command History  How the command history is set up, and how accessed.
25.13 Keyboard Macros  How keyboard macros are implemented.
Defining Commands
25.2.1 Using interactive  General rules for interactive.
25.2.2 Code Characters for interactive  The standard letter-codes for reading arguments in various ways.
25.2.3 Examples of Using interactive  Examples of how to read interactive arguments.
Events
25.5.1 Event Types  Events come in different types.
25.5.2 Contents of the Different Types of Events  What the contents of each event type are.
25.5.3 Event Predicates  Querying whether an event is of a particular type.
25.5.4 Accessing the Position of a Mouse Event  Determining where a mouse event occurred, and over what.
25.5.5 Accessing the Other Contents of Events  Accessing non-positional event info.
25.5.6 Working With Events  Creating, copying, and destroying events.
25.5.7 Converting Events  Converting between events, keys, and characters.
Accessing Mouse Event Positions
25.5.4.1 Frame-Level Event Position Info  
25.5.4.2 Window-Level Event Position Info  
25.5.4.3 Event Text Position Info  
25.5.4.4 Event Glyph Position Info  
25.5.4.5 Event Toolbar Position Info  
25.5.4.6 Other Event Position Info  
Reading Input
25.6.1 Key Sequence Input  How to read one key sequence.
25.6.2 Reading One Event  How to read just one event.
25.6.3 Dispatching an Event  What to do with an event once it has been read.
25.6.4 Quoted Character Input  Asking the user to specify a character.
25.6.5 Miscellaneous Event Input Features  How to reread or throw away input events.
Keymaps
26.1 Keymap Terminology  Definitions of terms pertaining to keymaps.
26.2 Format of Keymaps  What a keymap looks like as a Lisp object.
26.3 Creating Keymaps  Functions to create and copy keymaps.
26.4 Inheritance and Keymaps  How one keymap can inherit the bindings of another keymap.
26.5 Key Sequences  How to specify key sequences.
26.6 Prefix Keys  Defining a key with a keymap as its definition.
26.7 Active Keymaps  Each buffer has a local keymap to override the standard (global) bindings. Each minor mode can also override them.
26.8 Key Lookup  How extracting elements from keymaps works.
26.9 Functions for Key Lookup  How to request key lookup.
26.10 Changing Key Bindings  Redefining a key in a keymap.
26.11 Commands for Binding Keys  Interactive interfaces for redefining keys.
26.12 Scanning Keymaps  Looking through all keymaps, for printing help.
26.13 Other Keymap Functions  Miscellaneous keymap functions.
Menus
27.1 Format of Menus  Format of a menu description.
27.2 Format of the Menubar  How to specify a menubar.
27.3 Menubar  Functions for controlling the menubar.
27.4 Modifying Menus  Modifying a menu description.
27.6 Pop-Up Menus  Functions for specifying pop-up menus.
27.5 Menu Filters  Filter functions for the default menubar.
27.8 Buffers Menu  The menu that displays the list of buffers.
Dialog Boxes
28.1 Dialog Box Format  
28.2 Dialog Box Functions  
Toolbar
29.1 Toolbar Intro  An introduction.
29.3 Toolbar Descriptor Format  How to create a toolbar.
29.4 Specifying the Toolbar  Setting a toolbar.
29.5 Other Toolbar Variables  Controlling the size of toolbars.
Gutter
Scrollbars
Major and Minor Modes
33.1 Major Modes  Defining major modes.
33.2 Minor Modes  Defining minor modes.
33.3 Modeline Format  Customizing the text that appears in the modeline.
33.4 Hooks  How to use hooks; how to write code that provides hooks.
Major Modes
33.1.1 Major Mode Conventions  Coding conventions for keymaps, etc.
33.1.2 Major Mode Examples  Text mode and Lisp modes.
33.1.3 How XEmacs Chooses a Major Mode  How XEmacs chooses the major mode automatically.
33.1.4 Getting Help about a Major Mode  Finding out how to use a mode.
Minor Modes
33.2.1 Conventions for Writing Minor Modes  Tips for writing a minor mode.
33.2.2 Keymaps and Minor Modes  How a minor mode can have its own keymap.
Modeline Format
33.3.1 The Data Structure of the Modeline  The data structure that controls the modeline.
33.3.2 Variables Used in the Modeline  Variables used in that data structure.
33.3.3 %-Constructs in the ModeLine  Putting information into a modeline.
Documentation
34.1 Documentation Basics  Good style for doc strings. Where to put them. How XEmacs stores them.
34.2 Access to Documentation Strings  How Lisp programs can access doc strings.
34.3 Substituting Key Bindings in Documentation  Substituting current key bindings.
34.4 Describing Characters for Help Messages  Making printable descriptions of non-printing characters and key sequences.
34.5 Help Functions  Subroutines used by XEmacs help facilities.
Files
35.1 Visiting Files  Reading files into Emacs buffers for editing.
35.2 Saving Buffers  Writing changed buffers back into files.
35.3 Reading from Files  Reading files into other buffers.
35.4 Writing to Files  Writing new files from parts of buffers.
35.5 File Locks  Locking and unlocking files, to prevent simultaneous editing by two people.
35.6 Information about Files  Testing existence, accessibility, size of files.
35.9 Contents of Directories  Getting a list of the files in a directory.
35.7 Changing File Names and Attributes  Renaming files, changing protection, etc.
35.8 File Names  Decomposing and expanding file names.
Visiting Files
35.1.1 Functions for Visiting Files  The usual interface functions for visiting.
35.1.2 Subroutines of Visiting  Lower-level subroutines that they use.
Information about Files
35.6.1 Testing Accessibility  Is a given file readable? Writable?
35.6.2 Distinguishing Kinds of Files  Is it a directory? A link?
35.6.4 Other Information about Files  How large is it? Any other names? Etc.
File Names
35.8.1 File Name Components  The directory part of a file name, and the rest.
35.8.2 Directory Names  A directory's name as a directory is different from its name as a file.
35.8.3 Absolute and Relative File Names  Some file names are relative to a current directory.
35.8.4 Functions that Expand Filenames  Converting relative file names to absolute ones.
35.8.5 Generating Unique File Names  Generating names for temporary files.
35.8.6 File Name Completion  Finding the completions for a given file name.
Backups and Auto-Saving
36.1 Backup Files  How backup files are made; how their names are chosen.
36.2 Auto-Saving  How auto-save files are made; how their names are chosen.
36.3 Reverting  revert-buffer, and how to customize what it does.
Backup Files
36.1.1 Making Backup Files  How XEmacs makes backup files, and when.
36.1.2 Backup by Renaming or by Copying?  Two alternatives: renaming the old file or copying it.
36.1.3 Making and Deleting Numbered Backup Files  Keeping multiple backups for each source file.
36.1.4 Naming Backup Files  How backup file names are computed; customization.
Buffers
37.1 Buffer Basics  What is a buffer?
37.3 Buffer Names  Accessing and changing buffer names.
37.4 Buffer File Name  The buffer file name indicates which file is visited.
37.5 Buffer Modification  A buffer is modified if it needs to be saved.
37.6 Comparison of Modification Time  Determining whether the visited file was changed
"behind XEmacs's back".
37.7 Read-Only Buffers  Modifying text is not allowed in a read-only buffer.
37.8 The Buffer List  How to look at all the existing buffers.
37.9 Creating Buffers  Functions that create buffers.
37.10 Killing Buffers  Buffers exist until explicitly killed.
37.2 The Current Buffer  Designating a buffer as current so primitives will access its contents.
Windows
38.1 Basic Concepts of Emacs Windows  Basic information on using windows.
38.2 Splitting Windows  Splitting one window into two windows.
38.3 Deleting Windows  Deleting a window gives its space to other windows.
38.4 Selecting Windows  The selected window is the one that you edit in.
38.5 Cyclic Ordering of Windows  Moving around the existing windows.
38.6 Buffers and Windows  Each window displays the contents of a buffer.
38.7 Displaying Buffers in Windows  Higher-lever functions for displaying a buffer and choosing a window for it.
38.9 Windows and Point  Each window has its own location of point.
38.10 The Window Start Position  The display-start position controls which text is on-screen in the window.
38.11 Vertical Scrolling  Moving text up and down in the window.
38.12 Horizontal Scrolling  Moving text sideways on the window.
38.13 The Size of a Window  Accessing the size of a window.
38.15 Changing the Size of a Window  Changing the size of a window.
38.16 Window Configurations  Saving and restoring the state of the screen.
Frames
39.1 Creating Frames  Creating additional frames.
39.2 Frame Properties  Controlling frame size, position, font, etc.
39.3 Frame Titles  Automatic updating of frame titles.
39.4 Deleting Frames  Frames last until explicitly deleted.
39.5 Finding All Frames  How to examine all existing frames.
39.6 Frames and Windows  A frame contains windows; display of text always works through windows.
39.7 Minibuffers and Frames  How a frame finds the minibuffer to use.
39.8 Input Focus  Specifying the selected frame.
39.9 Visibility of Frames  Frames may be visible or invisible, or icons.
39.10 Raising and Lowering Frames  Raising a frame makes it hide other X windows; lowering it makes the others hide them.
39.12 Hooks for Customizing Frame Behavior  Hooks for customizing frame behavior.
Positions
41.1 Point  The special position where editing takes place.
41.2 Motion  Changing point.
41.3 Excursions  Temporary motion and buffer changes.
41.4 Narrowing  Restricting editing to a portion of the buffer.
Motion
41.2.1 Motion by Characters  Moving in terms of characters.
41.2.2 Motion by Words  Moving in terms of words.
41.2.3 Motion to an End of the Buffer  Moving to the beginning or end of the buffer.
41.2.4 Motion by Text Lines  Moving in terms of lines of text.
41.2.5 Motion by Screen Lines  Moving in terms of lines as displayed.
41.2.6 Moving over Balanced Expressions  Moving by parsing lists and sexps.
41.2.7 Skipping Characters  Skipping characters belonging to a certain set.
Markers
42.1 Overview of Markers  The components of a marker, and how it relocates.
42.2 Predicates on Markers  Testing whether an object is a marker.
42.3 Functions That Create Markers  Making empty markers or markers at certain places.
42.4 Information from Markers  Finding the marker's buffer or character position.
42.5 Changing Marker Positions  Moving the marker to a new buffer or position.
42.6 The Mark  How "the mark" is implemented with a marker.
42.7 The Region  How to access "the region".
Text
43.1 Examining Text Near Point  Examining text in the vicinity of point.
43.2 Examining Buffer Contents  Examining text in a general fashion.
43.3 Comparing Text  Comparing substrings of buffers.
43.4 Inserting Text  Adding new text to a buffer.
43.5 User-Level Insertion Commands  User-level commands to insert text.
43.6 Deleting Text  Removing text from a buffer.
43.7 User-Level Deletion Commands  User-level commands to delete text.
43.8 The Kill Ring  Where removed text sometimes is saved for later use.
43.9 Undo  Undoing changes to the text of a buffer.
43.10 Maintaining Undo Lists  How to enable and disable undo information. How to control how much information is kept.
43.11 Filling  Functions for explicit filling.
43.12 Margins for Filling  How to specify margins for filling commands.
43.13 Auto Filling  How auto-fill mode is implemented to break lines.
43.14 Sorting Text  Functions for sorting parts of the buffer.
43.15 Counting Columns  Computing horizontal positions, and using them.
43.16 Indentation  Functions to insert or adjust indentation.
43.17 Case Changes  Case conversion of parts of the buffer.
43.18 Text Properties  Assigning Lisp property lists to text characters.
43.19 Substituting for a Character Code  Replacing a given character wherever it appears.
43.20 Registers  How registers are implemented. Accessing the text or position stored in a register.
43.21 Transposition of Text  Swapping two portions of a buffer.
43.22 Change Hooks  Supplying functions to be run when text is changed.
The Kill Ring
43.8.1 Kill Ring Concepts  What text looks like in the kill ring.
43.8.2 Functions for Killing  Functions that kill text.
43.8.3 Functions for Yanking  Commands that access the kill ring.
43.8.4 Low-Level Kill Ring  Functions and variables for kill ring access.
43.8.5 Internals of the Kill Ring  Variables that hold kill-ring data.
Indentation
43.16.1 Indentation Primitives  Functions used to count and insert indentation.
43.16.2 Indentation Controlled by Major Mode  Customize indentation for different modes.
43.16.3 Indenting an Entire Region  Indent all the lines in a region.
43.16.4 Indentation Relative to Previous Lines  Indent the current line based on previous lines.
43.16.5 Adjustable "Tab Stops"  Adjustable, typewriter-like tab stops.
43.16.6 Indentation-Based Motion Commands  Move to first non-blank character.
Searching and Matching
44.1 Searching for Strings  Search for an exact match.
44.2 Regular Expressions  Describing classes of strings.
44.3 Regular Expression Searching  Searching for a match for a regexp.
44.6 The Match Data  Finding out which part of the text matched various parts of a regexp, after regexp search.
44.6.4 Saving and Restoring the Match Data  Saving and restoring this information.
44.8 Standard Regular Expressions Used in Editing  Useful regexps for finding sentences, pages,...
44.7 Searching and Case  Case-independent or case-significant searching.
Regular Expressions
44.2.1 Syntax of Regular Expressions  Rules for writing regular expressions.
44.2.2 Complex Regexp Example  Illustrates regular expression syntax.
Syntax Tables
45.2 Syntax Descriptors  How characters are classified.
45.3 Syntax Table Functions  How to create, examine and alter syntax tables.
45.5 Parsing Balanced Expressions  Parsing balanced expressions using the syntax table.
45.6 Some Standard Syntax Tables  Syntax tables used by various major modes.
45.7 Syntax Table Internals  How syntax table information is stored.
Syntax Descriptors
45.2.1 Table of Syntax Classes  Table of syntax classes.
45.2.2 Syntax Flags  Additional flags each character can have.
Abbrevs And Abbrev Expansion
46.1 Setting Up Abbrev Mode  Setting up XEmacs for abbreviation.
46.2 Abbrev Tables  Creating and working with abbrev tables.
46.3 Defining Abbrevs  Specifying abbreviations and their expansions.
46.4 Saving Abbrevs in Files  Saving abbrevs in files.
46.5 Looking Up and Expanding Abbreviations  Controlling expansion; expansion subroutines.
46.6 Standard Abbrev Tables  Abbrev tables used by various major modes.
Extents
47.1 Introduction to Extents  Extents are regions over a buffer or string.
47.2 Creating and Modifying Extents  Basic extent functions.
47.3 Extent Endpoints  Accessing and setting the bounds of an extent.
47.4 Finding Extents  Determining which extents are in an object.
47.5 Mapping Over Extents  More sophisticated functions for extent scanning.
47.6 Properties of Extents  Extents have built-in and user-definable properties.
47.7 Detached Extents  Extents that are not in a buffer.
47.8 Extent Parents  Inheriting properties from another extent.
47.9 Duplicable Extents  Extents can be marked to be copied into strings.
47.10 Interaction of Extents with Keyboard and Mouse Events  Extents can interact with the keyboard and mouse.
47.11 Atomic Extents  Treating a block of text as a single entity.
Specifiers
48.1 Introduction to Specifiers  Specifiers provide a clean way for display and other properties to vary
(under user control) in a wide variety
of contexts.
48.3 In-Depth Overview of a Specifier  Gory details about specifier innards.
48.4 How a Specifier Is Instantiated  Instantiation means obtaining the "value" of a specifier in a particular context.
48.5 Specifier Types  Specifiers come in different flavors.
48.6 Adding specifications to a Specifier  Specifications control a specifier's "value" by giving conditions under which a particular value is valid.
48.7 Retrieving the Specifications from a Specifier  Querying a specifier's specifications.
48.9 Functions for Instantiating a Specifier  Functions to instantiate a specifier.
48.10 Examples of Specifier Usage  Making all this stuff clearer.
48.11 Creating New Specifier Objects  Creating specifiers for your own use.
48.12 Functions for Checking the Validity of Specifier Components  Validating the components of a specifier.
48.13 Other Functions for Working with Specifications in a Specifier  Other ways of working with specifications.
Faces and Window-System Objects
49.1 Faces  Controlling the way text looks.
49.2 Fonts  Controlling the typeface of text.
49.3 Colors  Controlling the color of text and pixmaps.
Faces
49.1.1 Merging Faces for Display  How XEmacs decides which face to use for a character.
49.1.2 Basic Functions for Working with Faces  How to define and examine faces.
49.1.3 Face Properties  How to access and modify a face's properties.
49.1.4 Face Convenience Functions  Convenience functions for accessing particular properties of a face.
49.1.5 Other Face Display Functions  Other functions pertaining to how a a face appears.
Fonts
49.2.1 Font Specifiers  Specifying how a font will appear.
49.2.2 Font Instances  What a font specifier gets instantiated as.
49.2.3 Font Instance Names  The name of a font instance.
49.2.4 Font Instance Size  The size of a font instance.
49.2.5 Font Instance Characteristics  Display characteristics of font instances.
49.2.6 Font Convenience Functions  Convenience functions that automatically instantiate and retrieve the properties of a font specifier.
Colors
49.3.1 Color Specifiers  Specifying how a color will appear.
49.3.2 Color Instances  What a color specifier gets instantiated as.
49.3.3 Color Instance Properties  Properties of color instances.
49.3.4 Color Convenience Functions  Convenience functions that automatically instantiate and retrieve the properties of a color specifier.
Glyphs
50.1 Glyph Introduction  Glyphs are abstract image specifications.
50.2 Images  Specifying the appearance of glyphs.
50.3 Using Glyphs  Creating and displaying glyphs.
50.4 Manipulating Glyphs  Getting and setting glyph properties.
50.5 Glyph Examples  Examples of how to work with glyphs.
Images
50.2.1 Image Instantiators  Specifying an image's appearance.
50.2.2 Image Instantiator Conversion  Lazy realization of graphics.
50.2.3 Image Instantiator Formats  A catalog of image descriptors.
50.2.4 Image Instances  Classes of graphical objects.
Image Instances
50.2.4.1 Image Instance Types  Each image instance has a particular type.
50.2.4.2 Image Instance Functions  Functions for working with image instances.
Using Glyphs
50.3.1 Creating Glyphs  Creating new glyphs.
50.3.2 Buffer Glyphs  Annotations are glyphs that appear in a buffer.
50.3.3 Redisplay Glyphs  Glyphs controlling various redisplay functions.
50.3.4 Frame Glyphs  Displaying glyphs in GUI components of the frame.
50.3.5 External Glyphs  Icons and mouse pointers for the window system.
50.3.6 Native GUI Widgets  Complex active elements treated as a single glyph.
50.3.7 Subwindows  Externally-controlled subwindows in buffers.
Native GUI Widgets
50.3.6.1 Introduction to Native Widgets and Subwindow Glyphs  Native widgets provide tight integration of GUI features with the platform GUI.
50.3.6.2 Lisp API to Native Widgets  Native widgets are glyphs.
50.3.6.3 Layouts  Specifying composite widgets from Lisp.
50.3.6.4 Primitive Widgets  Catalogue of available native widgets.
Manipulating Glyphs
50.4.1 Glyph Properties  Accessing and modifying a glyph's properties.
50.4.2 Glyph Convenience Functions  Accessing particular properties of a glyph.
50.4.3 Glyph Dimensions  Determining the height, width, etc. of a glyph.
50.4.4 Glyph Types  Each glyph has a particular type.
Annotations
51.1 Annotation Basics  Introduction to annotations.
51.2 Annotation Primitives  Creating and deleting annotations.
51.3 Annotation Properties  Retrieving and changing the characteristics of an annotation.
51.5 Margin Primitives  Controlling the size of the margins.
51.4 Locating Annotations  Looking for annotations in a buffer.
51.6 Annotation Hooks  Hooks called at certain times during an annotation's lifetime.
Hash Tables
53.1 Introduction to Hash Tables  Hash tables are fast data structures for implementing simple tables (i.e. finite mappings from keys to values).
53.2 Working With Hash Tables  Hash table functions.
53.3 Weak Hash Tables  Hash tables with special garbage-collection behavior.
Range Tables
54.1 Introduction to Range Tables  Range tables efficiently map ranges of integers to values.
54.2 Working With Range Tables  Range table functions.
XEmacs Display
52.1 Refreshing the Screen  Clearing the screen and redrawing everything on it.
52.2 Truncation  Folding or wrapping long text lines.
52.3 The Echo Area  Where messages are displayed.
52.6 Selective Display  Hiding part of the buffer text.
52.7 The Overlay Arrow  Display of an arrow to indicate position.
52.8 Temporary Displays  Displays that go away automatically.
52.9 Blinking Parentheses  How XEmacs shows the matching open parenthesis.
52.10 Usual Display Conventions  The usual conventions for displaying nonprinting chars.
52.11 Display Tables  How to specify other conventions.
52.12 Beeping  Audible signal to the user.
Processes
56.1 Functions that Create Subprocesses  Functions that start subprocesses.
56.2 Creating a Synchronous Process  Details of using synchronous subprocesses.
56.4 Creating an Asynchronous Process  Starting up an asynchronous subprocess.
56.5 Deleting Processes  Eliminating an asynchronous subprocess.
56.6 Process Information  Accessing run-status and other attributes.
56.7 Sending Input to Processes  Sending input to an asynchronous subprocess.
56.8 Sending Signals to Processes  Stopping, continuing or interrupting an asynchronous subprocess.
56.9 Receiving Output from Processes  Collecting output from an asynchronous subprocess.
56.10 Sentinels: Detecting Process Status Changes  Sentinels run when process run-status changes.
56.13 Network Connections  Opening network connections.
Receiving Output from Processes
56.9.1 Process Buffers  If no filter, output is put in a buffer.
56.9.2 Process Filter Functions  Filter functions accept output from the process.
56.9.3 Accepting Output from Processes  How to wait until process output arrives.
Operating System Interface
57.1 Starting Up XEmacs  Customizing XEmacs start-up processing.
57.2 Getting out of XEmacs  How exiting works (permanent or temporary).
57.3 Operating System Environment  Distinguish the name and kind of system.
57.8 Terminal Input  Recording terminal input for debugging.
57.9 Terminal Output  Recording terminal output for debugging.
57.10 Flow Control  How to turn output flow control on or off.
57.11 Batch Mode  Running XEmacs without terminal interaction.
Starting Up XEmacs
57.1.1 Summary: Sequence of Actions at Start Up  Sequence of actions XEmacs performs at start-up.
57.1.2 The Init File: `.emacs'  Details on reading the init file (`.emacs').
57.1.3 Terminal-Specific Initialization  How the terminal-specific Lisp file is read.
57.1.4 Command Line Arguments  How command line arguments are processed, and how you can customize them.
Getting out of XEmacs
57.2.1 Killing XEmacs  Exiting XEmacs irreversibly.
57.2.2 Suspending XEmacs  Exiting XEmacs reversibly.
X-Windows
58.1 X Selections  Transferring text to and from other X clients.
58.2 X Server  Information about the X server connected to a particular device.
58.2.1 Resources  Getting resource values from the server.
58.2.2 Data about the X Server  Getting info about the X server.
58.2.3 Restricting Access to the Server by Other Apps  Restricting access to the server by other apps.
58.3 Miscellaneous X Functions and Variables  Other X-specific functions and variables.
ToolTalk Support
59.1 XEmacs ToolTalk API Summary  
59.2 Sending Messages  
59.3 Receiving Messages  
LDAP Support
60.1 Building XEmacs with LDAP support  How to add LDAP support to XEmacs
60.2 XEmacs LDAP API  Lisp access to LDAP functions
60.3 Syntax of Search Filters  A brief summary of RFC 1558
XEmacs LDAP API
60.2.1 LDAP Variables  Lisp variables related to LDAP
60.2.2 The High-Level LDAP API  High-level LDAP lisp functions
60.2.3 The Low-Level LDAP API  Low-level LDAP lisp primitives
60.2.4 LDAP Internationalization  I18n variables and functions
The Low-Level LDAP API
60.2.3.1 The LDAP Lisp Object  
60.2.3.2 Opening and Closing a LDAP Connection  
60.2.3.3 Low-level Operations on a LDAP Server  
LDAP Internationalization
60.2.4.1 LDAP Internationalization Variables  
60.2.4.2 Encoder/Decoder Functions  
Internationalization
62.1 I18N Levels 1 and 2  Support for different time, date, and currency formats.
62.2 I18N Level 3  Support for localized messages.
62.3 I18N Level 4  Support for Asian languages.
MULE
63.1 Internationalization Terminology  Definition of various internationalization terms.
63.2 Charsets  Sets of related characters.
63.3 MULE Characters  Working with characters in XEmacs/MULE.
63.4 Composite Characters  Making new characters by overstriking other ones.
63.6 ISO 2022  An international standard for charsets and encodings.
63.5 Coding Systems  Ways of representing a string of chars using integers.
63.7 CCL  A special language for writing fast converters.
63.8 Category Tables  Subdividing charsets into groups.
Tips
A.1 Writing Clean Lisp Programs  Writing clean and robust programs.
A.2 Tips for Making Compiled Code Fast  Making compiled code run fast.
A.3 Tips for Documentation Strings  Writing readable documentation strings.
A.4 Tips on Writing Comments  Conventions for writing comments.
A.5 Conventional Headers for XEmacs Libraries  Standard headers for library packages.
Building XEmacs and Object Allocation
B.1 Building XEmacs  How to preload Lisp libraries into XEmacs.
B.2 Garbage Collection  Reclaiming space for Lisp objects no longer used.



This document was generated by XEmacs Webmaster on August, 3 2012 using texi2html