| 1 |
\input texinfo @c -*-texinfo-*- |
|---|
| 2 |
@c %**start of header |
|---|
| 3 |
@setfilename elisp |
|---|
| 4 |
@settitle GNU Emacs Lisp Reference Manual |
|---|
| 5 |
@c %**end of header |
|---|
| 6 |
|
|---|
| 7 |
@c Version of the manual and of Emacs. |
|---|
| 8 |
@c Please remember to update the edition number in README as well. |
|---|
| 9 |
@set VERSION 2.9 |
|---|
| 10 |
@set EMACSVER 22.2 |
|---|
| 11 |
|
|---|
| 12 |
@dircategory Emacs |
|---|
| 13 |
@direntry |
|---|
| 14 |
* Elisp: (elisp). The Emacs Lisp Reference Manual. |
|---|
| 15 |
@end direntry |
|---|
| 16 |
|
|---|
| 17 |
@c in general, keep the following line commented out, unless doing a |
|---|
| 18 |
@c copy of this manual that will be published. The manual should go |
|---|
| 19 |
@c onto the distribution in the full, 8.5 x 11" size. |
|---|
| 20 |
@c set smallbook |
|---|
| 21 |
|
|---|
| 22 |
@ifset smallbook |
|---|
| 23 |
@smallbook |
|---|
| 24 |
@end ifset |
|---|
| 25 |
|
|---|
| 26 |
@c per rms and peterb, use 10pt fonts for the main text, mostly to |
|---|
| 27 |
@c save on paper cost. |
|---|
| 28 |
@c Do this inside @tex for now, so current makeinfo does not complain. |
|---|
| 29 |
@tex |
|---|
| 30 |
@ifset smallbook |
|---|
| 31 |
@fonttextsize 10 |
|---|
| 32 |
@set EMACSVER 22.1 |
|---|
| 33 |
\global\let\urlcolor=\Black % don't print links in grayscale |
|---|
| 34 |
\global\let\linkcolor=\Black |
|---|
| 35 |
@end ifset |
|---|
| 36 |
\global\hbadness=6666 % don't worry about not-too-underfull boxes |
|---|
| 37 |
@end tex |
|---|
| 38 |
|
|---|
| 39 |
@c Combine indices. |
|---|
| 40 |
@synindex cp fn |
|---|
| 41 |
@syncodeindex vr fn |
|---|
| 42 |
@syncodeindex ky fn |
|---|
| 43 |
@syncodeindex pg fn |
|---|
| 44 |
@c We use the "type index" to index new functions and variables. |
|---|
| 45 |
@c @syncodeindex tp fn |
|---|
| 46 |
|
|---|
| 47 |
@copying |
|---|
| 48 |
This is edition @value{VERSION} of the GNU Emacs Lisp Reference Manual,@* |
|---|
| 49 |
corresponding to Emacs version @value{EMACSVER}. |
|---|
| 50 |
|
|---|
| 51 |
Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, |
|---|
| 52 |
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software |
|---|
| 53 |
Foundation, Inc. |
|---|
| 54 |
|
|---|
| 55 |
@quotation |
|---|
| 56 |
Permission is granted to copy, distribute and/or modify this document |
|---|
| 57 |
under the terms of the GNU Free Documentation License, Version 1.2 or |
|---|
| 58 |
any later version published by the Free Software Foundation; with the |
|---|
| 59 |
Invariant Sections being ``GNU General Public License,'' with the |
|---|
| 60 |
Front-Cover texts being ``A GNU Manual,'' and with the Back-Cover |
|---|
| 61 |
Texts as in (a) below. A copy of the license is included in the |
|---|
| 62 |
section entitled ``GNU Free Documentation License.'' |
|---|
| 63 |
|
|---|
| 64 |
(a) The FSF's Back-Cover Text is: ``You are free to copy and modify |
|---|
| 65 |
this GNU Manual. Buying copies from GNU Press supports the FSF in |
|---|
| 66 |
developing GNU and promoting software freedom.'' |
|---|
| 67 |
@end quotation |
|---|
| 68 |
@end copying |
|---|
| 69 |
|
|---|
| 70 |
@titlepage |
|---|
| 71 |
@title GNU Emacs Lisp Reference Manual |
|---|
| 72 |
@subtitle For Emacs Version @value{EMACSVER} |
|---|
| 73 |
@subtitle Revision @value{VERSION}, April 2007 |
|---|
| 74 |
|
|---|
| 75 |
@author by Bil Lewis, Dan LaLiberte, Richard Stallman |
|---|
| 76 |
@author and the GNU Manual Group |
|---|
| 77 |
@page |
|---|
| 78 |
@vskip 0pt plus 1filll |
|---|
| 79 |
@insertcopying |
|---|
| 80 |
|
|---|
| 81 |
@sp 2 |
|---|
| 82 |
Published by the Free Software Foundation @* |
|---|
| 83 |
51 Franklin St, Fifth Floor @* |
|---|
| 84 |
Boston, MA 02110-1301 @* |
|---|
| 85 |
USA @* |
|---|
| 86 |
ISBN 1-882114-74-4 |
|---|
| 87 |
|
|---|
| 88 |
@sp 2 |
|---|
| 89 |
Cover art by Etienne Suvasa. |
|---|
| 90 |
@end titlepage |
|---|
| 91 |
|
|---|
| 92 |
|
|---|
| 93 |
@c Print the tables of contents |
|---|
| 94 |
@summarycontents |
|---|
| 95 |
@contents |
|---|
| 96 |
|
|---|
| 97 |
|
|---|
| 98 |
@ifnottex |
|---|
| 99 |
@node Top, Introduction, (dir), (dir) |
|---|
| 100 |
@top Emacs Lisp |
|---|
| 101 |
|
|---|
| 102 |
This Info file contains edition @value{VERSION} of the GNU Emacs Lisp |
|---|
| 103 |
Reference Manual, corresponding to GNU Emacs version @value{EMACSVER}. |
|---|
| 104 |
@end ifnottex |
|---|
| 105 |
|
|---|
| 106 |
@menu |
|---|
| 107 |
* Introduction:: Introduction and conventions used. |
|---|
| 108 |
|
|---|
| 109 |
* Lisp Data Types:: Data types of objects in Emacs Lisp. |
|---|
| 110 |
* Numbers:: Numbers and arithmetic functions. |
|---|
| 111 |
* Strings and Characters:: Strings, and functions that work on them. |
|---|
| 112 |
* Lists:: Lists, cons cells, and related functions. |
|---|
| 113 |
* Sequences Arrays Vectors:: Lists, strings and vectors are called sequences. |
|---|
| 114 |
Certain functions act on any kind of sequence. |
|---|
| 115 |
The description of vectors is here as well. |
|---|
| 116 |
* Hash Tables:: Very fast lookup-tables. |
|---|
| 117 |
* Symbols:: Symbols represent names, uniquely. |
|---|
| 118 |
|
|---|
| 119 |
* Evaluation:: How Lisp expressions are evaluated. |
|---|
| 120 |
* Control Structures:: Conditionals, loops, nonlocal exits. |
|---|
| 121 |
* Variables:: Using symbols in programs to stand for values. |
|---|
| 122 |
* Functions:: A function is a Lisp program |
|---|
| 123 |
that can be invoked from other functions. |
|---|
| 124 |
* Macros:: Macros are a way to extend the Lisp language. |
|---|
| 125 |
* Customization:: Writing customization declarations. |
|---|
| 126 |
|
|---|
| 127 |
* Loading:: Reading files of Lisp code into Lisp. |
|---|
| 128 |
* Byte Compilation:: Compilation makes programs run faster. |
|---|
| 129 |
* Advising Functions:: Adding to the definition of a function. |
|---|
| 130 |
* Debugging:: Tools and tips for debugging Lisp programs. |
|---|
| 131 |
|
|---|
| 132 |
* Read and Print:: Converting Lisp objects to text and back. |
|---|
| 133 |
* Minibuffers:: Using the minibuffer to read input. |
|---|
| 134 |
* Command Loop:: How the editor command loop works, |
|---|
| 135 |
and how you can call its subroutines. |
|---|
| 136 |
* Keymaps:: Defining the bindings from keys to commands. |
|---|
| 137 |
* Modes:: Defining major and minor modes. |
|---|
| 138 |
* Documentation:: Writing and using documentation strings. |
|---|
| 139 |
|
|---|
| 140 |
* Files:: Accessing files. |
|---|
| 141 |
* Backups and Auto-Saving:: Controlling how backups and auto-save |
|---|
| 142 |
files are made. |
|---|
| 143 |
* Buffers:: Creating and using buffer objects. |
|---|
| 144 |
* Windows:: Manipulating windows and displaying buffers. |
|---|
| 145 |
* Frames:: Making multiple system-level windows. |
|---|
| 146 |
* Positions:: Buffer positions and motion functions. |
|---|
| 147 |
* Markers:: Markers represent positions and update |
|---|
| 148 |
automatically when the text is changed. |
|---|
| 149 |
|
|---|
| 150 |
* Text:: Examining and changing text in buffers. |
|---|
| 151 |
* Non-ASCII Characters:: Non-ASCII text in buffers and strings. |
|---|
| 152 |
* Searching and Matching:: Searching buffers for strings or regexps. |
|---|
| 153 |
* Syntax Tables:: The syntax table controls word and list parsing. |
|---|
| 154 |
* Abbrevs:: How Abbrev mode works, and its data structures. |
|---|
| 155 |
|
|---|
| 156 |
* Processes:: Running and communicating with subprocesses. |
|---|
| 157 |
* Display:: Features for controlling the screen display. |
|---|
| 158 |
* System Interface:: Getting the user id, system type, environment |
|---|
| 159 |
variables, and other such things. |
|---|
| 160 |
|
|---|
| 161 |
Appendices |
|---|
| 162 |
|
|---|
| 163 |
* Antinews:: Info for users downgrading to Emacs 21. |
|---|
| 164 |
* GNU Free Documentation License:: The license for this documentation |
|---|
| 165 |
* GPL:: Conditions for copying and changing GNU Emacs. |
|---|
| 166 |
* Tips:: Advice and coding conventions for Emacs Lisp. |
|---|
| 167 |
* GNU Emacs Internals:: Building and dumping Emacs; |
|---|
| 168 |
internal data structures. |
|---|
| 169 |
* Standard Errors:: List of all error symbols. |
|---|
| 170 |
* Standard Buffer-Local Variables:: |
|---|
| 171 |
List of variables buffer-local in all buffers. |
|---|
| 172 |
* Standard Keymaps:: List of standard keymaps. |
|---|
| 173 |
* Standard Hooks:: List of standard hook variables. |
|---|
| 174 |
|
|---|
| 175 |
* Index:: Index including concepts, functions, variables, |
|---|
| 176 |
and other terms. |
|---|
| 177 |
|
|---|
| 178 |
@ignore |
|---|
| 179 |
* New Symbols:: New functions and variables in Emacs @value{EMACSVER}. |
|---|
| 180 |
@end ignore |
|---|
| 181 |
|
|---|
| 182 |
@c Do NOT modify the following 3 lines! They must have this form to |
|---|
| 183 |
@c be correctly identified by `texinfo-multiple-files-update'. In |
|---|
| 184 |
@c particular, the detailed menu header line MUST be identical to the |
|---|
| 185 |
@c value of `texinfo-master-menu-header'. See texnfo-upd.el. |
|---|
| 186 |
|
|---|
| 187 |
@detailmenu |
|---|
| 188 |
--- The Detailed Node Listing --- |
|---|
| 189 |
--------------------------------- |
|---|
| 190 |
|
|---|
| 191 |
Here are other nodes that are inferiors of those already listed, |
|---|
| 192 |
mentioned here so you can get to them in one step: |
|---|
| 193 |
|
|---|
| 194 |
Introduction |
|---|
| 195 |
|
|---|
| 196 |
* Caveats:: Flaws and a request for help. |
|---|
| 197 |
* Lisp History:: Emacs Lisp is descended from Maclisp. |
|---|
| 198 |
* Conventions:: How the manual is formatted. |
|---|
| 199 |
* Version Info:: Which Emacs version is running? |
|---|
| 200 |
* Acknowledgements:: The authors, editors, and sponsors of this manual. |
|---|
| 201 |
|
|---|
| 202 |
Conventions |
|---|
| 203 |
|
|---|
| 204 |
* Some Terms:: Explanation of terms we use in this manual. |
|---|
| 205 |
* nil and t:: How the symbols @code{nil} and @code{t} are used. |
|---|
| 206 |
* Evaluation Notation:: The format we use for examples of evaluation. |
|---|
| 207 |
* Printing Notation:: The format we use for examples that print output. |
|---|
| 208 |
* Error Messages:: The format we use for examples of errors. |
|---|
| 209 |
* Buffer Text Notation:: The format we use for buffer contents in examples. |
|---|
| 210 |
* Format of Descriptions:: Notation for describing functions, variables, etc. |
|---|
| 211 |
|
|---|
| 212 |
Format of Descriptions |
|---|
| 213 |
|
|---|
| 214 |
* A Sample Function Description:: A description of an imaginary |
|---|
| 215 |
function, @code{foo}. |
|---|
| 216 |
* A Sample Variable Description:: A description of an imaginary |
|---|
| 217 |
variable, @code{electric-future-map}. |
|---|
| 218 |
|
|---|
| 219 |
Lisp Data Types |
|---|
| 220 |
|
|---|
| 221 |
* Printed Representation:: How Lisp objects are represented as text. |
|---|
| 222 |
* Comments:: Comments and their formatting conventions. |
|---|
| 223 |
* Programming Types:: Types found in all Lisp systems. |
|---|
| 224 |
* Editing Types:: Types specific to Emacs. |
|---|
| 225 |
* Circular Objects:: Read syntax for circular structure. |
|---|
| 226 |
* Type Predicates:: Tests related to types. |
|---|
| 227 |
* Equality Predicates:: Tests of equality between any two objects. |
|---|
| 228 |
|
|---|
| 229 |
Programming Types |
|---|
| 230 |
|
|---|
| 231 |
* Integer Type:: Numbers without fractional parts. |
|---|
| 232 |
* Floating Point Type:: Numbers with fractional parts and with a large range. |
|---|
| 233 |
* Character Type:: The representation of letters, numbers and |
|---|
| 234 |
control characters. |
|---|
| 235 |
* Symbol Type:: A multi-use object that refers to a function, |
|---|
| 236 |
variable, property list, or itself. |
|---|
| 237 |
* Sequence Type:: Both lists and arrays are classified as sequences. |
|---|
| 238 |
* Cons Cell Type:: Cons cells, and lists (which are made from cons cells). |
|---|
| 239 |
* Array Type:: Arrays include strings and vectors. |
|---|
| 240 |
* String Type:: An (efficient) array of characters. |
|---|
| 241 |
* Vector Type:: One-dimensional arrays. |
|---|
| 242 |
* Char-Table Type:: One-dimensional sparse arrays indexed by characters. |
|---|
| 243 |
* Bool-Vector Type:: One-dimensional arrays of @code{t} or @code{nil}. |
|---|
| 244 |
* Hash Table Type:: Super-fast lookup tables. |
|---|
| 245 |
* Function Type:: A piece of executable code you can call from elsewhere. |
|---|
| 246 |
* Macro Type:: A method of expanding an expression into another |
|---|
| 247 |
expression, more fundamental but less pretty. |
|---|
| 248 |
* Primitive Function Type:: A function written in C, callable from Lisp. |
|---|
| 249 |
* Byte-Code Type:: A function written in Lisp, then compiled. |
|---|
| 250 |
* Autoload Type:: A type used for automatically loading seldom-used |
|---|
| 251 |
functions. |
|---|
| 252 |
|
|---|
| 253 |
Character Type |
|---|
| 254 |
|
|---|
| 255 |
* Basic Char Syntax:: Syntax for regular characters. |
|---|
| 256 |
* General Escape Syntax:: How to specify characters by their codes. |
|---|
| 257 |
* Ctl-Char Syntax:: Syntax for control characters. |
|---|
| 258 |
* Meta-Char Syntax:: Syntax for meta-characters. |
|---|
| 259 |
* Other Char Bits:: Syntax for hyper-, super-, and alt-characters. |
|---|
| 260 |
|
|---|
| 261 |
Cons Cell and List Types |
|---|
| 262 |
|
|---|
| 263 |
* Box Diagrams:: Drawing pictures of lists. |
|---|
| 264 |
* Dotted Pair Notation:: An alternative syntax for lists. |
|---|
| 265 |
* Association List Type:: A specially constructed list. |
|---|
| 266 |
|
|---|
| 267 |
String Type |
|---|
| 268 |
|
|---|
| 269 |
* Syntax for Strings:: How to specify Lisp strings. |
|---|
| 270 |
* Non-ASCII in Strings:: International characters in strings. |
|---|
| 271 |
* Nonprinting Characters:: Literal unprintable characters in strings. |
|---|
| 272 |
* Text Props and Strings:: Strings with text properties. |
|---|
| 273 |
|
|---|
| 274 |
Editing Types |
|---|
| 275 |
|
|---|
| 276 |
* Buffer Type:: The basic object of editing. |
|---|
| 277 |
* Marker Type:: A position in a buffer. |
|---|
| 278 |
* Window Type:: What makes buffers visible. |
|---|
| 279 |
* Frame Type:: Windows subdivide frames. |
|---|
| 280 |
* Window Configuration Type:: Recording the way a frame is subdivided. |
|---|
| 281 |
* Frame Configuration Type:: Recording the status of all frames. |
|---|
| 282 |
* Process Type:: A process running on the underlying OS. |
|---|
| 283 |
* Stream Type:: Receive or send characters. |
|---|
| 284 |
* Keymap Type:: What function a keystroke invokes. |
|---|
| 285 |
* Overlay Type:: How an overlay is represented. |
|---|
| 286 |
|
|---|
| 287 |
Numbers |
|---|
| 288 |
|
|---|
| 289 |
* Integer Basics:: Representation and range of integers. |
|---|
| 290 |
* Float Basics:: Representation and range of floating point. |
|---|
| 291 |
* Predicates on Numbers:: Testing for numbers. |
|---|
| 292 |
* Comparison of Numbers:: Equality and inequality predicates. |
|---|
| 293 |
* Numeric Conversions:: Converting float to integer and vice versa. |
|---|
| 294 |
* Arithmetic Operations:: How to add, subtract, multiply and divide. |
|---|
| 295 |
* Rounding Operations:: Explicitly rounding floating point numbers. |
|---|
| 296 |
* Bitwise Operations:: Logical and, or, not, shifting. |
|---|
| 297 |
* Math Functions:: Trig, exponential and logarithmic functions. |
|---|
| 298 |
* Random Numbers:: Obtaining random integers, predictable or not. |
|---|
| 299 |
|
|---|
| 300 |
Strings and Characters |
|---|
| 301 |
|
|---|
| 302 |
* String Basics:: Basic properties of strings and characters. |
|---|
| 303 |
* Predicates for Strings:: Testing whether an object is a string or char. |
|---|
| 304 |
* Creating Strings:: Functions to allocate new strings. |
|---|
| 305 |
* Modifying Strings:: Altering the contents of an existing string. |
|---|
| 306 |
* Text Comparison:: Comparing characters or strings. |
|---|
| 307 |
* String Conversion:: Converting characters to strings and vice versa. |
|---|
| 308 |
* Formatting Strings:: @code{format}: Emacs's analogue of @code{printf}. |
|---|
| 309 |
* Case Conversion:: Case conversion functions. |
|---|
| 310 |
* Case Tables:: Customizing case conversion. |
|---|
| 311 |
|
|---|
| 312 |
Lists |
|---|
| 313 |
|
|---|
| 314 |
* Cons Cells:: How lists are made out of cons cells. |
|---|
| 315 |
* List-related Predicates:: Is this object a list? Comparing two lists. |
|---|
| 316 |
* List Elements:: Extracting the pieces of a list. |
|---|
| 317 |
* Building Lists:: Creating list structure. |
|---|
| 318 |
* List Variables:: Modifying lists stored in variables. |
|---|
| 319 |
* Modifying Lists:: Storing new pieces into an existing list. |
|---|
| 320 |
* Sets And Lists:: A list can represent a finite mathematical set. |
|---|
| 321 |
* Association Lists:: A list can represent a finite relation or mapping. |
|---|
| 322 |
* Rings:: Managing a fixed-size ring of objects. |
|---|
| 323 |
|
|---|
| 324 |
Modifying Existing List Structure |
|---|
| 325 |
|
|---|
| 326 |
* Setcar:: Replacing an element in a list. |
|---|
| 327 |
* Setcdr:: Replacing part of the list backbone. |
|---|
| 328 |
This can be used to remove or add elements. |
|---|
| 329 |
* Rearrangement:: Reordering the elements in a list; combining lists. |
|---|
| 330 |
|
|---|
| 331 |
Sequences, Arrays, and Vectors |
|---|
| 332 |
|
|---|
| 333 |
* Sequence Functions:: Functions that accept any kind of sequence. |
|---|
| 334 |
* Arrays:: Characteristics of arrays in Emacs Lisp. |
|---|
| 335 |
* Array Functions:: Functions specifically for arrays. |
|---|
| 336 |
* Vectors:: Special characteristics of Emacs Lisp vectors. |
|---|
| 337 |
* Vector Functions:: Functions specifically for vectors. |
|---|
| 338 |
* Char-Tables:: How to work with char-tables. |
|---|
| 339 |
* Bool-Vectors:: How to work with bool-vectors. |
|---|
| 340 |
|
|---|
| 341 |
Hash Tables |
|---|
| 342 |
|
|---|
| 343 |
* Creating Hash:: Functions to create hash tables. |
|---|
| 344 |
* Hash Access:: Reading and writing the hash table contents. |
|---|
| 345 |
* Defining Hash:: Defining new comparison methods |
|---|
| 346 |
* Other Hash:: Miscellaneous. |
|---|
| 347 |
|
|---|
| 348 |
Symbols |
|---|
| 349 |
|
|---|
| 350 |
* Symbol Components:: Symbols have names, values, function definitions |
|---|
| 351 |
and property lists. |
|---|
| 352 |
* Definitions:: A definition says how a symbol will be used. |
|---|
| 353 |
* Creating Symbols:: How symbols are kept unique. |
|---|
| 354 |
* Property Lists:: Each symbol has a property list |
|---|
| 355 |
for recording miscellaneous information. |
|---|
| 356 |
|
|---|
| 357 |
Property Lists |
|---|
| 358 |
|
|---|
| 359 |
* Plists and Alists:: Comparison of the advantages of property |
|---|
| 360 |
lists and association lists. |
|---|
| 361 |
* Symbol Plists:: Functions to access symbols' property lists. |
|---|
| 362 |
* Other Plists:: Accessing property lists stored elsewhere. |
|---|
| 363 |
|
|---|
| 364 |
Evaluation |
|---|
| 365 |
|
|---|
| 366 |
* Intro Eval:: Evaluation in the scheme of things. |
|---|
| 367 |
* Forms:: How various sorts of objects are evaluated. |
|---|
| 368 |
* Quoting:: Avoiding evaluation (to put constants in |
|---|
| 369 |
the program). |
|---|
| 370 |
* Eval:: How to invoke the Lisp interpreter explicitly. |
|---|
| 371 |
|
|---|
| 372 |
Kinds of Forms |
|---|
| 373 |
|
|---|
| 374 |
* Self-Evaluating Forms:: Forms that evaluate to themselves. |
|---|
| 375 |
* Symbol Forms:: Symbols evaluate as variables. |
|---|
| 376 |
* Classifying Lists:: How to distinguish various sorts of list forms. |
|---|
| 377 |
* Function Indirection:: When a symbol appears as the car of a list, |
|---|
| 378 |
we find the real function via the symbol. |
|---|
| 379 |
* Function Forms:: Forms that call functions. |
|---|
| 380 |
* Macro Forms:: Forms that call macros. |
|---|
| 381 |
* Special Forms:: "Special forms" are idiosyncratic primitives, |
|---|
| 382 |
most of them extremely important. |
|---|
| 383 |
* Autoloading:: Functions set up to load files |
|---|
| 384 |
containing their real definitions. |
|---|
| 385 |
|
|---|
| 386 |
Control Structures |
|---|
| 387 |
|
|---|
| 388 |
* Sequencing:: Evaluation in textual order. |
|---|
| 389 |
* Conditionals:: @code{if}, @code{cond}, @code{when}, @code{unless}. |
|---|
| 390 |
* Combining Conditions:: @code{and}, @code{or}, @code{not}. |
|---|
| 391 |
* Iteration:: @code{while} loops. |
|---|
| 392 |
* Nonlocal Exits:: Jumping out of a sequence. |
|---|
| 393 |
|
|---|
| 394 |
Nonlocal Exits |
|---|
| 395 |
|
|---|
| 396 |
* Catch and Throw:: Nonlocal exits for the program's own purposes. |
|---|
| 397 |
* Examples of Catch:: Showing how such nonlocal exits can be written. |
|---|
| 398 |
* Errors:: How errors are signaled and handled. |
|---|
| 399 |
* Cleanups:: Arranging to run a cleanup form if an |
|---|
| 400 |
error happens. |
|---|
| 401 |
|
|---|
| 402 |
Errors |
|---|
| 403 |
|
|---|
| 404 |
* Signaling Errors:: How to report an error. |
|---|
| 405 |
* Processing of Errors:: What Emacs does when you report an error. |
|---|
| 406 |
* Handling Errors:: How you can trap errors and continue execution. |
|---|
| 407 |
* Error Symbols:: How errors are classified for trapping them. |
|---|
| 408 |
* Standard Errors:: List of all error symbols. |
|---|
| 409 |
|
|---|
| 410 |
Variables |
|---|
| 411 |
|
|---|
| 412 |
* Global Variables:: Variable values that exist permanently, everywhere. |
|---|
| 413 |
* Constant Variables:: Certain "variables" have values that never change. |
|---|
| 414 |
* Local Variables:: Variable values that exist only temporarily. |
|---|
| 415 |
* Void Variables:: Symbols that lack values. |
|---|
| 416 |
* Defining Variables:: A definition says a symbol is used as a variable. |
|---|
| 417 |
* Tips for Defining:: Things you should think about when you |
|---|
| 418 |
define a variable. |
|---|
| 419 |
* Accessing Variables:: Examining values of variables whose names |
|---|
| 420 |
are known only at run time. |
|---|
| 421 |
* Setting Variables:: Storing new values in variables. |
|---|
| 422 |
* Variable Scoping:: How Lisp chooses among local and global values. |
|---|
| 423 |
* Buffer-Local Variables:: Variable values in effect only in one buffer. |
|---|
| 424 |
* Future Local Variables:: New kinds of local values we might add some day. |
|---|
| 425 |
* File Local Variables:: Handling local variable lists in files. |
|---|
| 426 |
* Variable Aliases:: Variables that are aliases for other variables. |
|---|
| 427 |
* Variables with Restricted Values:: Non-constant variables whose value can |
|---|
| 428 |
@emph{not} be an arbitrary Lisp object. |
|---|
| 429 |
* Standard Buffer-Local Variables:: |
|---|
| 430 |
List of variables buffer-local in all buffers. |
|---|
| 431 |
|
|---|
| 432 |
Scoping Rules for Variable Bindings |
|---|
| 433 |
|
|---|
| 434 |
* Scope:: Scope means where in the program a value |
|---|
| 435 |
is visible. Comparison with other languages. |
|---|
| 436 |
* Extent:: Extent means how long in time a value exists. |
|---|
| 437 |
* Impl of Scope:: Two ways to implement dynamic scoping. |
|---|
| 438 |
* Using Scoping:: How to use dynamic scoping carefully and |
|---|
| 439 |
avoid problems. |
|---|
| 440 |
|
|---|
| 441 |
Buffer-Local Variables |
|---|
| 442 |
|
|---|
| 443 |
* Intro to Buffer-Local:: Introduction and concepts. |
|---|
| 444 |
* Creating Buffer-Local:: Creating and destroying buffer-local bindings. |
|---|
| 445 |
* Default Value:: The default value is seen in buffers |
|---|
| 446 |
that don't have their own buffer-local values. |
|---|
| 447 |
|
|---|
| 448 |
Functions |
|---|
| 449 |
|
|---|
| 450 |
* What Is a Function:: Lisp functions vs primitives; terminology. |
|---|
| 451 |
* Lambda Expressions:: How functions are expressed as Lisp objects. |
|---|
| 452 |
* Function Names:: A symbol can serve as the name of a function. |
|---|
| 453 |
* Defining Functions:: Lisp expressions for defining functions. |
|---|
| 454 |
* Calling Functions:: How to use an existing function. |
|---|
| 455 |
* Mapping Functions:: Applying a function to each element of a list, etc. |
|---|
| 456 |
* Anonymous Functions:: Lambda-expressions are functions with no names. |
|---|
| 457 |
* Function Cells:: Accessing or setting the function definition |
|---|
| 458 |
of a symbol. |
|---|
| 459 |
* Obsolete Functions:: Declaring functions obsolete. |
|---|
| 460 |
* Inline Functions:: Defining functions that the compiler will open code. |
|---|
| 461 |
* Function Safety:: Determining whether a function is safe to call. |
|---|
| 462 |
* Related Topics:: Cross-references to specific Lisp primitives |
|---|
| 463 |
that have a special bearing on how |
|---|
| 464 |
functions work. |
|---|
| 465 |
|
|---|
| 466 |
Lambda Expressions |
|---|
| 467 |
|
|---|
| 468 |
* Lambda Components:: The parts of a lambda expression. |
|---|
| 469 |
* Simple Lambda:: A simple example. |
|---|
| 470 |
* Argument List:: Details and special features of argument lists. |
|---|
| 471 |
* Function Documentation:: How to put documentation in a function. |
|---|
| 472 |
|
|---|
| 473 |
Macros |
|---|
| 474 |
|
|---|
| 475 |
* Simple Macro:: A basic example. |
|---|
| 476 |
* Expansion:: How, when and why macros are expanded. |
|---|
| 477 |
* Compiling Macros:: How macros are expanded by the compiler. |
|---|
| 478 |
* Defining Macros:: How to write a macro definition. |
|---|
| 479 |
* Backquote:: Easier construction of list structure. |
|---|
| 480 |
* Problems with Macros:: Don't evaluate the macro arguments too many times. |
|---|
| 481 |
Don't hide the user's variables. |
|---|
| 482 |
* Indenting Macros:: Specifying how to indent macro calls. |
|---|
| 483 |
|
|---|
| 484 |
Common Problems Using Macros |
|---|
| 485 |
|
|---|
| 486 |
* Wrong Time:: Do the work in the expansion, not in the macro. |
|---|
| 487 |
* Argument Evaluation:: The expansion should evaluate each macro arg once. |
|---|
| 488 |
* Surprising Local Vars:: Local variable bindings in the expansion |
|---|
| 489 |
require special care. |
|---|
| 490 |
* Eval During Expansion:: Don't evaluate them; put them in the expansion. |
|---|
| 491 |
* Repeated Expansion:: Avoid depending on how many times expansion is done. |
|---|
| 492 |
|
|---|
| 493 |
Writing Customization Definitions |
|---|
| 494 |
|
|---|
| 495 |
* Common Keywords:: Common keyword arguments for all kinds of |
|---|
| 496 |
customization declarations. |
|---|
| 497 |
* Group Definitions:: Writing customization group definitions. |
|---|
| 498 |
* Variable Definitions:: Declaring user options. |
|---|
| 499 |
* Customization Types:: Specifying the type of a user option. |
|---|
| 500 |
|
|---|
| 501 |
Customization Types |
|---|
| 502 |
|
|---|
| 503 |
* Simple Types:: Simple customization types: sexp, integer, number, |
|---|
| 504 |
string, file, directory, alist. |
|---|
| 505 |
* Composite Types:: Build new types from other types or data. |
|---|
| 506 |
* Splicing into Lists:: Splice elements into list with @code{:inline}. |
|---|
| 507 |
* Type Keywords:: Keyword-argument pairs in a customization type. |
|---|
| 508 |
* Defining New Types:: Give your type a name. |
|---|
| 509 |
|
|---|
| 510 |
Loading |
|---|
| 511 |
|
|---|
| 512 |
* How Programs Do Loading:: The @code{load} function and others. |
|---|
| 513 |
* Load Suffixes:: Details about the suffixes that @code{load} tries. |
|---|
| 514 |
* Library Search:: Finding a library to load. |
|---|
| 515 |
* Loading Non-ASCII:: Non-@acronym{ASCII} characters in Emacs Lisp files. |
|---|
| 516 |
* Autoload:: Setting up a function to autoload. |
|---|
| 517 |
* Repeated Loading:: Precautions about loading a file twice. |
|---|
| 518 |
* Named Features:: Loading a library if it isn't already loaded. |
|---|
| 519 |
* Where Defined:: Finding which file defined a certain symbol. |
|---|
| 520 |
* Unloading:: How to "unload" a library that was loaded. |
|---|
| 521 |
* Hooks for Loading:: Providing code to be run when |
|---|
| 522 |
particular libraries are loaded. |
|---|
| 523 |
|
|---|
| 524 |
Byte Compilation |
|---|
| 525 |
|
|---|
| 526 |
* Speed of Byte-Code:: An example of speedup from byte compilation. |
|---|
| 527 |
* Compilation Functions:: Byte compilation functions. |
|---|
| 528 |
* Docs and Compilation:: Dynamic loading of documentation strings. |
|---|
| 529 |
* Dynamic Loading:: Dynamic loading of individual functions. |
|---|
| 530 |
* Eval During Compile:: Code to be evaluated when you compile. |
|---|
| 531 |
* Compiler Errors:: Handling compiler error messages. |
|---|
| 532 |
* Byte-Code Objects:: The data type used for byte-compiled functions. |
|---|
| 533 |
* Disassembly:: Disassembling byte-code; how to read byte-code. |
|---|
| 534 |
|
|---|
| 535 |
Advising Emacs Lisp Functions |
|---|
| 536 |
|
|---|
| 537 |
* Simple Advice:: A simple example to explain the basics of advice. |
|---|
| 538 |
* Defining Advice:: Detailed description of @code{defadvice}. |
|---|
| 539 |
* Around-Advice:: Wrapping advice around a function's definition. |
|---|
| 540 |
* Computed Advice:: ...is to @code{defadvice} as @code{fset} is to @code{defun}. |
|---|
| 541 |
* Activation of Advice:: Advice doesn't do anything until you activate it. |
|---|
| 542 |
* Enabling Advice:: You can enable or disable each piece of advice. |
|---|
| 543 |
* Preactivation:: Preactivation is a way of speeding up the |
|---|
| 544 |
loading of compiled advice. |
|---|
| 545 |
* Argument Access in Advice:: How advice can access the function's arguments. |
|---|
| 546 |
* Advising Primitives:: Accessing arguments when advising a primitive. |
|---|
| 547 |
* Combined Definition:: How advice is implemented. |
|---|
| 548 |
|
|---|
| 549 |
Debugging Lisp Programs |
|---|
| 550 |
|
|---|
| 551 |
* Debugger:: How the Emacs Lisp debugger is implemented. |
|---|
| 552 |
* Edebug:: A source-level Emacs Lisp debugger. |
|---|
| 553 |
* Syntax Errors:: How to find syntax errors. |
|---|
| 554 |
* Test Coverage:: Ensuring you have tested all branches in your code. |
|---|
| 555 |
* Compilation Errors:: How to find errors that show up in |
|---|
| 556 |
byte compilation. |
|---|
| 557 |
|
|---|
| 558 |
The Lisp Debugger |
|---|
| 559 |
|
|---|
| 560 |
* Error Debugging:: Entering the debugger when an error happens. |
|---|
| 561 |
* Infinite Loops:: Stopping and debugging a program that doesn't exit. |
|---|
| 562 |
* Function Debugging:: Entering it when a certain function is called. |
|---|
| 563 |
* Explicit Debug:: Entering it at a certain point in the program. |
|---|
| 564 |
* Using Debugger:: What the debugger does; what you see while in it. |
|---|
| 565 |
* Debugger Commands:: Commands used while in the debugger. |
|---|
| 566 |
* Invoking the Debugger:: How to call the function @code{debug}. |
|---|
| 567 |
* Internals of Debugger:: Subroutines of the debugger, and global variables. |
|---|
| 568 |
|
|---|
| 569 |
Edebug |
|---|
| 570 |
|
|---|
| 571 |
* Using Edebug:: Introduction to use of Edebug. |
|---|
| 572 |
* Instrumenting:: You must instrument your code |
|---|
| 573 |
in order to debug it with Edebug. |
|---|
| 574 |
* Edebug Execution Modes:: Execution modes, stopping more or less often. |
|---|
| 575 |
* Jumping:: Commands to jump to a specified place. |
|---|
| 576 |
* Edebug Misc:: Miscellaneous commands. |
|---|
| 577 |
* Breaks:: Setting breakpoints to make the program stop. |
|---|
| 578 |
* Trapping Errors:: Trapping errors with Edebug. |
|---|
| 579 |
* Edebug Views:: Views inside and outside of Edebug. |
|---|
| 580 |
* Edebug Eval:: Evaluating expressions within Edebug. |
|---|
| 581 |
* Eval List:: Expressions whose values are displayed |
|---|
| 582 |
each time you enter Edebug. |
|---|
| 583 |
* Printing in Edebug:: Customization of printing. |
|---|
| 584 |
* Trace Buffer:: How to produce trace output in a buffer. |
|---|
| 585 |
* Coverage Testing:: How to test evaluation coverage. |
|---|
| 586 |
* The Outside Context:: Data that Edebug saves and restores. |
|---|
| 587 |
* Edebug and Macros:: Specifying how to handle macro calls. |
|---|
| 588 |
* Edebug Options:: Option variables for customizing Edebug. |
|---|
| 589 |
|
|---|
| 590 |
Debugging Invalid Lisp Syntax |
|---|
| 591 |
|
|---|
| 592 |
* Excess Open:: How to find a spurious open paren or missing close. |
|---|
| 593 |
* Excess Close:: How to find a spurious close paren or missing open. |
|---|
| 594 |
|
|---|
| 595 |
Reading and Printing Lisp Objects |
|---|
| 596 |
|
|---|
| 597 |
* Streams Intro:: Overview of streams, reading and printing. |
|---|
| 598 |
* Input Streams:: Various data types that can be used as |
|---|
| 599 |
input streams. |
|---|
| 600 |
* Input Functions:: Functions to read Lisp objects from text. |
|---|
| 601 |
* Output Streams:: Various data types that can be used as |
|---|
| 602 |
output streams. |
|---|
| 603 |
* Output Functions:: Functions to print Lisp objects as text. |
|---|
| 604 |
* Output Variables:: Variables that control what the printing |
|---|
| 605 |
functions do. |
|---|
| 606 |
|
|---|
| 607 |
Minibuffers |
|---|
| 608 |
|
|---|
| 609 |
* Intro to Minibuffers:: Basic information about minibuffers. |
|---|
| 610 |
* Text from Minibuffer:: How to read a straight text string. |
|---|
| 611 |
* Object from Minibuffer:: How to read a Lisp object or expression. |
|---|
| 612 |
* Minibuffer History:: Recording previous minibuffer inputs |
|---|
| 613 |
so the user can reuse them. |
|---|
| 614 |
* Initial Input:: Specifying initial contents for the minibuffer. |
|---|
| 615 |
* Completion:: How to invoke and customize completion. |
|---|
| 616 |
* Yes-or-No Queries:: Asking a question with a simple answer. |
|---|
| 617 |
* Multiple Queries:: Asking a series of similar questions. |
|---|
| 618 |
* Reading a Password:: Reading a password from the terminal. |
|---|
| 619 |
* Minibuffer Commands:: Commands used as key bindings in minibuffers. |
|---|
| 620 |
* Minibuffer Contents:: How such commands access the minibuffer text. |
|---|
| 621 |
* Minibuffer Windows:: Operating on the special minibuffer windows. |
|---|
| 622 |
* Recursive Mini:: Whether recursive entry to minibuffer is allowed. |
|---|
| 623 |
* Minibuffer Misc:: Various customization hooks and variables. |
|---|
| 624 |
|
|---|
| 625 |
Completion |
|---|
| 626 |
|
|---|
| 627 |
* Basic Completion:: Low-level functions for completing strings. |
|---|
| 628 |
(These are too low level to use the minibuffer.) |
|---|
| 629 |
* Minibuffer Completion:: Invoking the minibuffer with completion. |
|---|
| 630 |
* Completion Commands:: Minibuffer commands that do completion. |
|---|
| 631 |
* High-Level Completion:: Convenient special cases of completion |
|---|
| 632 |
(reading buffer name, file name, etc.) |
|---|
| 633 |
* Reading File Names:: Using completion to read file names. |
|---|
| 634 |
* Programmed Completion:: Finding the completions for a given file name. |
|---|
| 635 |
|
|---|
| 636 |
Command Loop |
|---|
| 637 |
|
|---|
| 638 |
* Command Overview:: How the command loop reads commands. |
|---|
| 639 |
* Defining Commands:: Specifying how a function should read arguments. |
|---|
| 640 |
* Interactive Call:: Calling a command, so that it will read arguments. |
|---|
| 641 |
* Distinguish Interactive:: Making a command distinguish interactive calls. |
|---|
| 642 |
* Command Loop Info:: Variables set by the command loop for you to examine. |
|---|
| 643 |
* Adjusting Point:: Adjustment of point after a command. |
|---|
| 644 |
* Input Events:: What input looks like when you read it. |
|---|
| 645 |
* Reading Input:: How to read input events from the keyboard or mouse. |
|---|
| 646 |
* Special Events:: Events processed immediately and individually. |
|---|
| 647 |
* Waiting:: Waiting for user input or elapsed time. |
|---|
| 648 |
* Quitting:: How @kbd{C-g} works. How to catch or defer quitting. |
|---|
| 649 |
* Prefix Command Arguments:: How the commands to set prefix args work. |
|---|
| 650 |
* Recursive Editing:: Entering a recursive edit, |
|---|
| 651 |
and why you usually shouldn't. |
|---|
| 652 |
* Disabling Commands:: How the command loop handles disabled commands. |
|---|
| 653 |
* Command History:: How the command history is set up, and how accessed. |
|---|
| 654 |
* Keyboard Macros:: How keyboard macros are implemented. |
|---|
| 655 |
|
|---|
| 656 |
Defining Commands |
|---|
| 657 |
|
|---|
| 658 |
* Using Interactive:: General rules for @code{interactive}. |
|---|
| 659 |
* Interactive Codes:: The standard letter-codes for reading arguments |
|---|
| 660 |
in various ways. |
|---|
| 661 |
* Interactive Examples:: Examples of how to read interactive arguments. |
|---|
| 662 |
|
|---|
| 663 |
Input Events |
|---|
| 664 |
|
|---|
| 665 |
* Keyboard Events:: Ordinary characters--keys with symbols on them. |
|---|
| 666 |
* Function Keys:: Function keys--keys with names, not symbols. |
|---|
| 667 |
* Mouse Events:: Overview of mouse events. |
|---|
| 668 |
* Click Events:: Pushing and releasing a mouse button. |
|---|
| 669 |
* Drag Events:: Moving the mouse before releasing the button. |
|---|
| 670 |
* Button-Down Events:: A button was pushed and not yet released. |
|---|
| 671 |
* Repeat Events:: Double and triple click (or drag, or down). |
|---|
| 672 |
* Motion Events:: Just moving the mouse, not pushing a button. |
|---|
| 673 |
* Focus Events:: Moving the mouse between frames. |
|---|
| 674 |
* Misc Events:: Other events the system can generate. |
|---|
| 675 |
* Event Examples:: Examples of the lists for mouse events. |
|---|
| 676 |
* Classifying Events:: Finding the modifier keys in an event symbol. |
|---|
| 677 |
* Accessing Mouse:: Functions to extract info from mouse events. |
|---|
| 678 |
* Accessing Scroll:: Functions to get info from scroll bar events. |
|---|
| 679 |
* Strings of Events:: Special considerations for putting |
|---|
| 680 |
keyboard character events in a string. |
|---|
| 681 |
|
|---|
| 682 |
Reading Input |
|---|
| 683 |
|
|---|
| 684 |
* Key Sequence Input:: How to read one key sequence. |
|---|
| 685 |
* Reading One Event:: How to read just one event. |
|---|
| 686 |
* Event Mod:: How Emacs modifies events as they are read. |
|---|
| 687 |
* Invoking the Input Method:: How reading an event uses the input method. |
|---|
| 688 |
* Quoted Character Input:: Asking the user to specify a character. |
|---|
| 689 |
* Event Input Misc:: How to reread or throw away input events. |
|---|
| 690 |
|
|---|
| 691 |
Keymaps |
|---|
| 692 |
|
|---|
| 693 |
* Key Sequences:: Key sequences as Lisp objects. |
|---|
| 694 |
* Keymap Basics:: Basic concepts of keymaps. |
|---|
| 695 |
* Format of Keymaps:: What a keymap looks like as a Lisp object. |
|---|
| 696 |
* Creating Keymaps:: Functions to create and copy keymaps. |
|---|
| 697 |
* Inheritance and Keymaps:: How one keymap can inherit the bindings |
|---|
| 698 |
of another keymap. |
|---|
| 699 |
* Prefix Keys:: Defining a key with a keymap as its definition. |
|---|
| 700 |
* Active Keymaps:: How Emacs searches the active keymaps |
|---|
| 701 |
for a key binding. |
|---|
| 702 |
* Searching Keymaps:: A pseudo-Lisp summary of searching active maps. |
|---|
| 703 |
* Controlling Active Maps:: Each buffer has a local keymap |
|---|
| 704 |
to override the standard (global) bindings. |
|---|
| 705 |
A minor mode can also override them. |
|---|
| 706 |
* Key Lookup:: How extracting elements from keymaps works. |
|---|
| 707 |
* Functions for Key Lookup:: How to request key lookup. |
|---|
| 708 |
* Changing Key Bindings:: Redefining a key in a keymap. |
|---|
| 709 |
* Remapping Commands:: A keymap can translate one command to another. |
|---|
| 710 |
* Translation Keymaps:: Keymaps for translating sequences of events. |
|---|
| 711 |
* Key Binding Commands:: Interactive interfaces for redefining keys. |
|---|
| 712 |
* Scanning Keymaps:: Looking through all keymaps, for printing help. |
|---|
| 713 |
* Menu Keymaps:: A keymap can define a menu for X |
|---|
| 714 |
or for use from the terminal. |
|---|
| 715 |
* Standard Keymaps:: List of standard keymaps. |
|---|
| 716 |
|
|---|
| 717 |
Major and Minor Modes |
|---|
| 718 |
|
|---|
| 719 |
* Hooks:: How to use hooks; how to write code that |
|---|
| 720 |
provides hooks. |
|---|
| 721 |
* Major Modes:: Defining major modes. |
|---|
| 722 |
* Minor Modes:: Defining minor modes. |
|---|
| 723 |
* Mode Line Format:: Customizing the text that appears in the mode line. |
|---|
| 724 |
* Imenu:: How a mode can provide a menu |
|---|
| 725 |
of definitions in the buffer. |
|---|
| 726 |
* Font Lock Mode:: How modes can highlight text according to syntax. |
|---|
| 727 |
* Desktop Save Mode:: How modes can have buffer state saved between |
|---|
| 728 |
Emacs sessions. |
|---|
| 729 |
|
|---|
| 730 |
Menu Keymaps |
|---|
| 731 |
|
|---|
| 732 |
* Defining Menus:: How to make a keymap that defines a menu. |
|---|
| 733 |
* Mouse Menus:: How users actuate the menu with the mouse. |
|---|
| 734 |
* Keyboard Menus:: How users actuate the menu with the keyboard. |
|---|
| 735 |
* Menu Example:: Making a simple menu. |
|---|
| 736 |
* Menu Bar:: How to customize the menu bar. |
|---|
| 737 |
* Tool Bar:: A tool bar is a row of images. |
|---|
| 738 |
* Modifying Menus:: How to add new items to a menu. |
|---|
| 739 |
|
|---|
| 740 |
Defining Menus |
|---|
| 741 |
|
|---|
| 742 |
* Simple Menu Items:: A simple kind of menu key binding, |
|---|
| 743 |
limited in capabilities. |
|---|
| 744 |
* Extended Menu Items:: More powerful menu item definitions |
|---|
| 745 |
let you specify keywords to enable |
|---|
| 746 |
various features. |
|---|
| 747 |
* Menu Separators:: Drawing a horizontal line through a menu. |
|---|
| 748 |
* Alias Menu Items:: Using command aliases in menu items. |
|---|
| 749 |
|
|---|
| 750 |
Major and Minor Modes |
|---|
| 751 |
|
|---|
| 752 |
* Hooks:: How to use hooks; how to write code that provides hooks. |
|---|
| 753 |
* Major Modes:: Defining major modes. |
|---|
| 754 |
* Minor Modes:: Defining minor modes. |
|---|
| 755 |
* Mode Line Format:: Customizing the text that appears in the mode line. |
|---|
| 756 |
* Imenu:: How a mode can provide a menu |
|---|
| 757 |
of definitions in the buffer. |
|---|
| 758 |
* Font Lock Mode:: How modes can highlight text according to syntax. |
|---|
| 759 |
* Desktop Save Mode:: How modes can have buffer state saved between |
|---|
| 760 |
Emacs sessions. |
|---|
| 761 |
|
|---|
| 762 |
Major Modes |
|---|
| 763 |
|
|---|
| 764 |
* Major Mode Basics:: |
|---|
| 765 |
* Major Mode Conventions:: Coding conventions for keymaps, etc. |
|---|
| 766 |
* Example Major Modes:: Text mode and Lisp modes. |
|---|
| 767 |
* Auto Major Mode:: How Emacs chooses the major mode automatically. |
|---|
| 768 |
* Mode Help:: Finding out how to use a mode. |
|---|
| 769 |
* Derived Modes:: Defining a new major mode based on another major |
|---|
| 770 |
mode. |
|---|
| 771 |
* Generic Modes:: Defining a simple major mode that supports |
|---|
| 772 |
comment syntax and Font Lock mode. |
|---|
| 773 |
* Mode Hooks:: Hooks run at the end of major mode functions. |
|---|
| 774 |
|
|---|
| 775 |
Minor Modes |
|---|
| 776 |
|
|---|
| 777 |
* Minor Mode Conventions:: Tips for writing a minor mode. |
|---|
| 778 |
* Keymaps and Minor Modes:: How a minor mode can have its own keymap. |
|---|
| 779 |
* Defining Minor Modes:: A convenient facility for defining minor modes. |
|---|
| 780 |
|
|---|
| 781 |
Mode Line Format |
|---|
| 782 |
|
|---|
| 783 |
* Mode Line Basics:: |
|---|
| 784 |
* Mode Line Data:: The data structure that controls the mode line. |
|---|
| 785 |
* Mode Line Variables:: Variables used in that data structure. |
|---|
| 786 |
* %-Constructs:: Putting information into a mode line. |
|---|
| 787 |
* Properties in Mode:: Using text properties in the mode line. |
|---|
| 788 |
* Header Lines:: Like a mode line, but at the top. |
|---|
| 789 |
* Emulating Mode Line:: Formatting text as the mode line would. |
|---|
| 790 |
|
|---|
| 791 |
Font Lock Mode |
|---|
| 792 |
|
|---|
| 793 |
* Font Lock Basics:: Overview of customizing Font Lock. |
|---|
| 794 |
* Search-based Fontification:: Fontification based on regexps. |
|---|
| 795 |
* Customizing Keywords:: Customizing search-based fontification. |
|---|
| 796 |
* Other Font Lock Variables:: Additional customization facilities. |
|---|
| 797 |
* Levels of Font Lock:: Each mode can define alternative levels |
|---|
| 798 |
so that the user can select more or less. |
|---|
| 799 |
* Precalculated Fontification:: How Lisp programs that produce the buffer |
|---|
| 800 |
contents can also specify how to fontify it. |
|---|
| 801 |
* Faces for Font Lock:: Special faces specifically for Font Lock. |
|---|
| 802 |
* Syntactic Font Lock:: Fontification based on syntax tables. |
|---|
| 803 |
* Setting Syntax Properties:: Defining character syntax based on context |
|---|
| 804 |
using the Font Lock mechanism. |
|---|
| 805 |
* Multiline Font Lock:: How to coerce Font Lock into properly |
|---|
| 806 |
highlighting multiline constructs. |
|---|
| 807 |
|
|---|
| 808 |
Multiline Font Lock Constructs |
|---|
| 809 |
|
|---|
| 810 |
* Font Lock Multiline:: Marking multiline chunks with a text property |
|---|
| 811 |
* Region to Fontify:: Controlling which region gets refontified |
|---|
| 812 |
after a buffer change. |
|---|
| 813 |
|
|---|
| 814 |
Documentation |
|---|
| 815 |
|
|---|
| 816 |
* Documentation Basics:: Good style for doc strings. |
|---|
| 817 |
Where to put them. How Emacs stores them. |
|---|
| 818 |
* Accessing Documentation:: How Lisp programs can access doc strings. |
|---|
| 819 |
* Keys in Documentation:: Substituting current key bindings. |
|---|
| 820 |
* Describing Characters:: Making printable descriptions of |
|---|
| 821 |
non-printing characters and key sequences. |
|---|
| 822 |
* Help Functions:: Subroutines used by Emacs help facilities. |
|---|
| 823 |
|
|---|
| 824 |
Files |
|---|
| 825 |
|
|---|
| 826 |
* Visiting Files:: Reading files into Emacs buffers for editing. |
|---|
| 827 |
* Saving Buffers:: Writing changed buffers back into files. |
|---|
| 828 |
* Reading from Files:: Reading files into other buffers. |
|---|
| 829 |
* Writing to Files:: Writing new files from parts of buffers. |
|---|
| 830 |
* File Locks:: Locking and unlocking files, to prevent |
|---|
| 831 |
simultaneous editing by two people. |
|---|
| 832 |
* Information about Files:: Testing existence, accessibility, size of files. |
|---|
| 833 |
* Changing Files:: Renaming files, changing protection, etc. |
|---|
| 834 |
* File Names:: Decomposing and expanding file names. |
|---|
| 835 |
* Contents of Directories:: Getting a list of the files in a directory. |
|---|
| 836 |
* Create/Delete Dirs:: Creating and Deleting Directories. |
|---|
| 837 |
* Magic File Names:: Defining "magic" special handling |
|---|
| 838 |
for certain file names. |
|---|
| 839 |
* Format Conversion:: Conversion to and from various file formats. |
|---|
| 840 |
|
|---|
| 841 |
Visiting Files |
|---|
| 842 |
|
|---|
| 843 |
* Visiting Functions:: The usual interface functions for visiting. |
|---|
| 844 |
* Subroutines of Visiting:: Lower-level subroutines that they use. |
|---|
| 845 |
|
|---|
| 846 |
Information about Files |
|---|
| 847 |
|
|---|
| 848 |
* Testing Accessibility:: Is a given file readable? Writable? |
|---|
| 849 |
* Kinds of Files:: Is it a directory? A symbolic link? |
|---|
| 850 |
* Truenames:: Eliminating symbolic links from a file name. |
|---|
| 851 |
* File Attributes:: How large is it? Any other names? Etc. |
|---|
| 852 |
* Locating Files:: How to find a file in standard places. |
|---|
| 853 |
|
|---|
| 854 |
File Names |
|---|
| 855 |
|
|---|
| 856 |
* File Name Components:: The directory part of a file name, and the rest. |
|---|
| 857 |
* Relative File Names:: Some file names are relative to a |
|---|
| 858 |
current directory. |
|---|
| 859 |
* Directory Names:: A directory's name as a directory |
|---|
| 860 |
is different from its name as a file. |
|---|
| 861 |
* File Name Expansion:: Converting relative file names to absolute ones. |
|---|
| 862 |
* Unique File Names:: Generating names for temporary files. |
|---|
| 863 |
* File Name Completion:: Finding the completions for a given file name. |
|---|
| 864 |
* Standard File Names:: If your package uses a fixed file name, |
|---|
| 865 |
how to handle various operating systems simply. |
|---|
| 866 |
|
|---|
| 867 |
Backups and Auto-Saving |
|---|
| 868 |
|
|---|
| 869 |
* Backup Files:: How backup files are made; how their names |
|---|
| 870 |
are chosen. |
|---|
| 871 |
* Auto-Saving:: How auto-save files are made; how their |
|---|
| 872 |
names are chosen. |
|---|
| 873 |
* Reverting:: @code{revert-buffer}, and how to customize |
|---|
| 874 |
what it does. |
|---|
| 875 |
|
|---|
| 876 |
Backup Files |
|---|
| 877 |
|
|---|
| 878 |
* Making Backups:: How Emacs makes backup files, and when. |
|---|
| 879 |
* Rename or Copy:: Two alternatives: renaming the old file |
|---|
| 880 |
or copying it. |
|---|
| 881 |
* Numbered Backups:: Keeping multiple backups for each source file. |
|---|
| 882 |
* Backup Names:: How backup file names are computed; customization. |
|---|
| 883 |
|
|---|
| 884 |
Buffers |
|---|
| 885 |
|
|---|
| 886 |
* Buffer Basics:: What is a buffer? |
|---|
| 887 |
* Current Buffer:: Designating a buffer as current |
|---|
| 888 |
so primitives will access its contents. |
|---|
| 889 |
* Buffer Names:: Accessing and changing buffer names. |
|---|
| 890 |
* Buffer File Name:: The buffer file name indicates which file |
|---|
| 891 |
is visited. |
|---|
| 892 |
* Buffer Modification:: A buffer is @dfn{modified} if it needs to be saved. |
|---|
| 893 |
* Modification Time:: Determining whether the visited file was changed |
|---|
| 894 |
``behind Emacs's back''. |
|---|
| 895 |
* Read Only Buffers:: Modifying text is not allowed in a |
|---|
| 896 |
read-only buffer. |
|---|
| 897 |
* The Buffer List:: How to look at all the existing buffers. |
|---|
| 898 |
* Creating Buffers:: Functions that create buffers. |
|---|
| 899 |
* Killing Buffers:: Buffers exist until explicitly killed. |
|---|
| 900 |
* Indirect Buffers:: An indirect buffer shares text with some |
|---|
| 901 |
other buffer. |
|---|
| 902 |
* Buffer Gap:: The gap in the buffer. |
|---|
| 903 |
|
|---|
| 904 |
Windows |
|---|
| 905 |
|
|---|
| 906 |
* Basic Windows:: Basic information on using windows. |
|---|
| 907 |
* Splitting Windows:: Splitting one window into two windows. |
|---|
| 908 |
* Deleting Windows:: Deleting a window gives its space to other windows. |
|---|
| 909 |
* Selecting Windows:: The selected window is the one that you edit in. |
|---|
| 910 |
* Cyclic Window Ordering:: Moving around the existing windows. |
|---|
| 911 |
* Buffers and Windows:: Each window displays the contents of a buffer. |
|---|
| 912 |
* Displaying Buffers:: Higher-level functions for displaying a buffer |
|---|
| 913 |
and choosing a window for it. |
|---|
| 914 |
* Choosing Window:: How to choose a window for displaying a buffer. |
|---|
| 915 |
* Window Point:: Each window has its own location of point. |
|---|
| 916 |
* Window Start:: The display-start position controls which text |
|---|
| 917 |
is on-screen in the window. |
|---|
| 918 |
* Textual Scrolling:: Moving text up and down through the window. |
|---|
| 919 |
* Vertical Scrolling:: Moving the contents up and down on the window. |
|---|
| 920 |
* Horizontal Scrolling:: Moving the contents sideways on the window. |
|---|
| 921 |
* Size of Window:: Accessing the size of a window. |
|---|
| 922 |
* Resizing Windows:: Changing the size of a window. |
|---|
| 923 |
* Coordinates and Windows:: Converting coordinates to windows. |
|---|
| 924 |
* Window Tree:: The layout and sizes of all windows in a frame. |
|---|
| 925 |
* Window Configurations:: Saving and restoring the state of the screen. |
|---|
| 926 |
* Window Hooks:: Hooks for scrolling, window size changes, |
|---|
| 927 |
redisplay going past a certain point, |
|---|
| 928 |
or window configuration changes. |
|---|
| 929 |
|
|---|
| 930 |
Frames |
|---|
| 931 |
|
|---|
| 932 |
* Creating Frames:: Creating additional frames. |
|---|
| 933 |
* Multiple Displays:: Creating frames on other displays. |
|---|
| 934 |
* Frame Parameters:: Controlling frame size, position, font, etc. |
|---|
| 935 |
* Frame Titles:: Automatic updating of frame titles. |
|---|
| 936 |
* Deleting Frames:: Frames last until explicitly deleted. |
|---|
| 937 |
* Finding All Frames:: How to examine all existing frames. |
|---|
| 938 |
* Frames and Windows:: A frame contains windows; |
|---|
| 939 |
display of text always works through windows. |
|---|
| 940 |
* Minibuffers and Frames:: How a frame finds the minibuffer to use. |
|---|
| 941 |
* Input Focus:: Specifying the selected frame. |
|---|
| 942 |
* Visibility of Frames:: Frames may be visible or invisible, or icons. |
|---|
| 943 |
* Raising and Lowering:: Raising a frame makes it hide other windows; |
|---|
| 944 |
lowering it puts it underneath the others. |
|---|
| 945 |
* Frame Configurations:: Saving the state of all frames. |
|---|
| 946 |
* Mouse Tracking:: Getting events that say when the mouse moves. |
|---|
| 947 |
* Mouse Position:: Asking where the mouse is, or moving it. |
|---|
| 948 |
* Pop-Up Menus:: Displaying a menu for the user to select from. |
|---|
| 949 |
* Dialog Boxes:: Displaying a box to ask yes or no. |
|---|
| 950 |
* Pointer Shape:: Specifying the shape of the mouse pointer. |
|---|
| 951 |
* Window System Selections::Transferring text to and from other windows. |
|---|
| 952 |
* Drag and Drop:: Internals of Drag-and-Drop implementation. |
|---|
| 953 |
* Color Names:: Getting the definitions of color names. |
|---|
| 954 |
* Text Terminal Colors:: Defining colors for text-only terminals. |
|---|
| 955 |
* Resources:: Getting resource values from the server. |
|---|
| 956 |
* Display Feature Testing:: Determining the features of a terminal. |
|---|
| 957 |
|
|---|
| 958 |
Frame Parameters |
|---|
| 959 |
|
|---|
| 960 |
* Parameter Access:: How to change a frame's parameters. |
|---|
| 961 |
* Initial Parameters:: Specifying frame parameters when you make a frame. |
|---|
| 962 |
* Window Frame Parameters:: List of frame parameters for window systems. |
|---|
| 963< |
|---|