This master menu first lists each chapter and index; then it lists
every node in every chapter.
- Preface:                      What to look for. 
- List Processing:              What is Lisp? 
- Practicing Evaluation:        Running several programs. 
- Writing Defuns:               How to write function definitions. 
- Buffer Walk Through:          Exploring a few buffer-related functions. 
- More Complex:                 A few, even more complex functions. 
- Narrowing & Widening:         Restricting your and Emacs attention to
                                    a region. 
- car cdr & cons:               Fundamental functions in Lisp. 
- Cutting & Storing Text:       Removing text and saving it. 
- List Implementation:          How lists are implemented in the computer. 
- Yanking:                      Pasting stored text. 
- Loops & Recursion:            How to repeat a process. 
- Regexp Search:                Regular expression searches. 
- Counting Words:               A review of repetition and regexps. 
- Words in a defun:             Counting words in a defun.
- Readying a Graph:             A prototype graph printing function. 
- Emacs Initialization:         How to write a .emacsfile.
- Debugging:                    How to run the Emacs Lisp debuggers. 
- Conclusion:                   Now you have the basics. 
- the-the:                      An appendix: how to find reduplicated words. 
- Kill Ring:                    An appendix: how the kill ring works. 
- Full Graph:                   How to create a graph with labelled axes. 
- GNU Free Documentation License: 
- Index: 
- About the Author:
--- The Detailed Node Listing ---
 Preface
 
- Why:                          Why learn Emacs Lisp? 
- On Reading this Text:         Read, gain familiarity, pick up habits.... 
- Who You Are:                  For whom this is written. 
- Lisp History: 
- Note for Novices:             You can read this as a novice. 
- Thank You:
List Processing
 
- Lisp Lists:                   What are lists? 
- Run a Program:                Any list in Lisp is a program ready to run. 
- Making Errors:                Generating an error message. 
- Names & Definitions:          Names of symbols and function definitions. 
- Lisp Interpreter:             What the Lisp interpreter does. 
- Evaluation:                   Running a program. 
- Variables:                    Returning a value from a variable. 
- Arguments:                    Passing information to a function. 
- set & setq:                   Setting the value of a variable. 
- Summary:                      The major points. 
- Error Message Exercises:
Lisp Lists
 
- Numbers Lists:                List have numbers, other lists, in them. 
- Lisp Atoms:                   Elemental entities. 
- Whitespace in Lists:          Formating lists to be readable. 
- Typing Lists:                 How GNU Emacs helps you type lists.
The Lisp Interpreter
 
- Complications:                Variables, Special forms, Lists within. 
- Byte Compiling:               Specially processing code for speed.
Evaluation
 
- Evaluating Inner Lists:       Lists within lists...
Variables
 
- fill-column Example: 
- Void Function:                The error message for a symbol
                                  without a function. 
- Void Variable:                The error message for a symbol without a value.
Arguments
 
- Data types:                   Types of data passed to a function. 
- Args as Variable or List:     An argument can be the value
                                  of a variable or list. 
- Variable Number of Arguments:   Some functions may take a
                                  variable number of arguments. 
- Wrong Type of Argument:       Passing an argument of the wrong type
                                  to a function. 
- message:                      A useful function for sending messages.
Setting the Value of a Variable
 
- Using set:                    Setting values. 
- Using setq:                   Setting a quoted value. 
- Counting:                     Using setqto count.Practicing Evaluation
 
- How to Evaluate:              Typing editing commands or C-x C-e
                                  causes evaluation. 
- Buffer Names:                 Buffers and files are different. 
- Getting Buffers:              Getting a buffer itself, not merely its name. 
- Switching Buffers:            How to change to another buffer. 
- Buffer Size & Locations:      Where point is located and the size of
                                the buffer. 
- Evaluation Exercise:
How To Write Function Definitions
 
- Primitive Functions: 
- defun:                        The defunspecial form.
- Install:                      Install a function definition. 
- Interactive:                  Making a function interactive. 
- Interactive Options:          Different options for interactive.
- Permanent Installation:       Installing code permanently. 
- let:                          Creating and initializing local variables. 
- if:                           What if? 
- else:                         If--then--else expressions. 
- Truth & Falsehood:            What Lisp considers false and true. 
- save-excursion:               Keeping track of point, mark, and buffer. 
- Review: 
- defun Exercises:
Install a Function Definition
 
- Effect of installation: 
- Change a defun:               How to change a function definition.
Make a Function Interactive
 
- Interactive multiply-by-seven:   An overview. 
- multiply-by-seven in detail:   The interactive version.
let
 
 
- Prevent confusion: 
- Parts of let Expression: 
- Sample let Expression: 
- Uninitialized let Variables:
The ifSpecial Form
 
- if in more detail: 
- type-of-animal in detail:     An example of an ifexpression.Truth and Falsehood in Emacs Lisp
 
- nil explained:                nilhas two meanings.save-excursion
 
 
- Point and mark:               A review of various locations. 
- Template for save-excursion:
A Few Buffer--Related Functions
 
- Finding More:                 How to find more information. 
- simplified-beginning-of-buffer:   Shows goto-char,point-min, andpush-mark.
- mark-whole-buffer:            Almost the same as beginning-of-buffer.
- append-to-buffer:             Uses save-excursionandinsert-buffer-substring.
- Buffer Related Review:        Review. 
- Buffer Exercises:
The Definition of mark-whole-buffer
 
- mark-whole-buffer overview: 
- Body of mark-whole-buffer:    Only three lines of code.
The Definition of append-to-buffer
 
- append-to-buffer overview: 
- append interactive:           A two part interactive expression. 
- append-to-buffer body:        Incorporates a letexpression.
- append save-excursion:        How the save-excursionworks.A Few More Complex Functions
 
- copy-to-buffer:               With set-buffer,get-buffer-create.
- insert-buffer:                Read-only, and with or.
- beginning-of-buffer:          Shows goto-char,point-min, andpush-mark.
- Second Buffer Related Review: 
- optional Exercise:
The Definition of insert-buffer
 
- insert-buffer code: 
- insert-buffer interactive:    When you can read, but not write. 
- insert-buffer body:           The body has an orand alet.
- if & or:                      Using an ifinstead of anor.
- Insert or:                    How the orexpression works.
- Insert let:                   Two save-excursionexpressions.The Interactive Expression in insert-buffer
 
- Read-only buffer:             When a buffer cannot be modified. 
- b for interactive:            An existing buffer or else its name.
Complete Definition of beginning-of-buffer
 
- Optional Arguments: 
- beginning-of-buffer opt arg:   Example with optional argument. 
- beginning-of-buffer complete:
beginning-of-bufferwith an Argument
 
 
- Disentangle beginning-of-buffer: 
- Large buffer case: 
- Small buffer case:
Narrowing and Widening
 
- Narrowing advantages:         The advantages of narrowing
- save-restriction:             The save-restrictionspecial form.
- what-line:                    The number of the line that point is on. 
- narrow Exercise:
car,cdr,cons: Fundamental Functions
 
 
- Strange Names:                An historical aside: why the strange names? 
- car & cdr:                    Functions for extracting part of a list. 
- cons:                         Constructing a list. 
- nthcdr:                       Calling cdrrepeatedly.
- nth: 
- setcar:                       Changing the first element of a list. 
- setcdr:                       Changing the rest of a list. 
- cons Exercise:
cons
 
 
- Build a list: 
- length:                       How to find the length of a list.
Cutting and Storing Text
 
- Storing Text:                 Text is stored in a list. 
- zap-to-char:                  Cutting out text up to a character. 
- kill-region:                  Cutting text out of a region. 
- Digression into C:            Minor note on C programming language macros. 
- defvar:                       How to give a variable an initial value. 
- copy-region-as-kill:          A definition for copying text. 
- cons & search-fwd Review: 
- search Exercises:
zap-to-char
 
 
- Complete zap-to-char:         The complete implementation. 
- zap-to-char interactive:      A three part interactive expression. 
- zap-to-char body:             A short overview. 
- search-forward:               How to search for a string. 
- progn:                        The prognspecial form.
- Summing up zap-to-char:       Using pointandsearch-forward.kill-region
 
 
- Complete kill-region:         The function definition. 
- condition-case:               Dealing with a problem. 
- delete-and-extract-region:    Doing the work.
Initializing a Variable with defvar
 
- See variable current value: 
- defvar and asterisk:          An old-time convention.
copy-region-as-kill
 
 
- Complete copy-region-as-kill:   The complete function definition. 
- copy-region-as-kill body:     The body of copy-region-as-kill.The Body of copy-region-as-kill
 
- last-command & this-command: 
- kill-append function: 
- kill-new function:
How Lists are Implemented
 
- Lists diagrammed: 
- Symbols as Chest:             Exploring a powerful metaphor. 
- List Exercise:
Yanking Text Back
 
- Kill Ring Overview:           The kill ring is a list. 
- kill-ring-yank-pointer:       The kill-ring-yank-pointervariable.
- yank nthcdr Exercises:
Loops and Recursion
 
- while:                        Causing a stretch of code to repeat. 
- dolist dotimes: 
- Recursion:                    Causing a function to call itself. 
- Looping exercise:
while
 
 
- Looping with while:           Repeat so long as test returns true. 
- Loop Example:                 A whileloop that uses a list.
- print-elements-of-list:       Uses while,car,cdr.
- Incrementing Loop:            A loop with an incrementing counter. 
- Decrementing Loop:            A loop with a decrementing counter.
A Loop with an Incrementing Counter
 
- Incrementing Example:         Counting pebbles in a triangle. 
- Inc Example parts:            The parts of the function definition. 
- Inc Example altogether:       Putting the function definition together.
Loop with a Decrementing Counter
 
- Decrementing Example:         More pebbles on the beach. 
- Dec Example parts:            The parts of the function definition. 
- Dec Example altogether:       Putting the function definition together.
Save your time: dolistanddotimes
 
- dolist: 
- dotimes:
Recursion
 
- Building Robots:              Same model, different serial number ... 
- Recursive Definition Parts:   Walk until you stop ... 
- Recursion with list:          Using a list as the test whether to recurse. 
- Recursive triangle function: 
- Recursion with cond: 
- Recursive Patterns:           Often used templates. 
- No Deferment:                 Don't store up work ... 
- No deferment solution:
Recursion in Place of a Counter
 
- Recursive Example arg of 1 or 2: 
- Recursive Example arg of 3 or 4:
Recursive Patterns
 
- Every: 
- Accumulate: 
- Keep:
Regular Expression Searches
 
- sentence-end:                 The regular expression for sentence-end.
- re-search-forward:            Very similar to search-forward.
- forward-sentence:             A straightforward example of regexp search. 
- forward-paragraph:            A somewhat complex example. 
- etags:                        How to create your own TAGStable.
- Regexp Review: 
- re-search Exercises:
forward-sentence
 
 
- Complete forward-sentence: 
- fwd-sentence while loops:     Two whileloops.
- fwd-sentence re-search:       A regular expression search.
forward-paragraph: a Goldmine of Functions
 
 
- forward-paragraph in brief:   Key parts of the function definition. 
- fwd-para let:                 The let*expression.
- fwd-para while:               The forward motion whileloop.
- fwd-para between paragraphs:   Movement between paragraphs. 
- fwd-para within paragraph:    Movement within paragraphs. 
- fwd-para no fill prefix:      When there is no fill prefix. 
- fwd-para with fill prefix:    When there is a fill prefix. 
- fwd-para summary:             Summary of forward-paragraphcode.Counting: Repetition and Regexps
 
- Why Count Words: 
- count-words-region:           Use a regexp, but find a problem. 
- recursive-count-words:        Start with case of no words in region. 
- Counting Exercise:
The count-words-regionFunction
 
- Design count-words-region:    The definition using a whileloop.
- Whitespace Bug:               The Whitespace Bug in count-words-region.Counting Words in a defun
 
- Divide and Conquer: 
- Words and Symbols:            What to count? 
- Syntax:                       What constitutes a word or symbol? 
- count-words-in-defun:         Very like count-words.
- Several defuns:               Counting several defuns in a file. 
- Find a File:                  Do you want to look at a file? 
- lengths-list-file:            A list of the lengths of many definitions. 
- Several files:                Counting in definitions in different files. 
- Several files recursively:    Recursively counting in different files. 
- Prepare the data:             Prepare the data for display in a graph.
Count Words in defunsin Different Files
 
- lengths-list-many-files:      Return a list of the lengths of defuns. 
- append:                       Attach one list to another.
Prepare the Data for Display in a Graph
 
- Sorting:                      Sorting lists. 
- Files List:                   Making a list of files. 
- Counting function definitions:
Readying a Graph
 
- Columns of a graph: 
- graph-body-print:             How to print the body of a graph. 
- recursive-graph-body-print: 
- Printed Axes: 
- Line Graph Exercise:
Your .emacsFile
 
- Default Configuration: 
- Site-wide Init:               You can write site-wide init files. 
- defcustom:                    Emacs will write code for you. 
- Beginning a .emacs File:      How to write a .emacs file.
- Text and Auto-fill:           Automatically wrap lines. 
- Mail Aliases:                 Use abbreviations for email addresses. 
- Indent Tabs Mode:             Don't use tabs with TeX
- Keybindings:                  Create some personal keybindings. 
- Keymaps:                      More about key binding. 
- Loading Files:                Load (i.e., evaluate) files automatically. 
- Autoload:                     Make functions available. 
- Simple Extension:             Define a function; bind it to a key. 
- X11 Colors:                   Colors in version 19 in X. 
- Miscellaneous: 
- Mode Line:                    How to customize your mode line.
Debugging
 
- debug:                        How to use the built-in debugger. 
- debug-on-entry:               Start debugging when you call a function. 
- debug-on-quit:                Start debugging when you quit with C-g. 
- edebug:                       How to use Edebug, a source level debugger. 
- Debugging Exercises:
Handling the Kill Ring
 
- rotate-yank-pointer:          Move a pointer along a list and around. 
- yank:                         Paste a copy of a clipped element. 
- yank-pop:                     Insert first element pointed to.
The rotate-yank-pointerFunction
 
- Understanding rotate-yk-ptr: 
- rotate-yk-ptr body:           The body of rotate-yank-pointer.The Body of rotate-yank-pointer
 
- Digression concerning error:   How to mislead humans, but not computers. 
- rotate-yk-ptr else-part:      The else-part of the ifexpression.
- Remainder Function:           The remainder, %, function.
- rotate-yk-ptr remainder:      Using %inrotate-yank-pointer.
- kill-rng-yk-ptr last elt:     Pointing to the last element.
yank
 
 
- rotate-yk-ptr arg:            Pass the argument to rotate-yank-pointer.
- rotate-yk-ptr negative arg:   Pass a negative argument.
A Graph with Labelled Axes
 
- Labelled Example: 
- print-graph Varlist:          letexpression inprint-graph.
- print-Y-axis:                 Print a label for the vertical axis. 
- print-X-axis:                 Print a horizontal label. 
- Print Whole Graph:            The function to print a complete graph.
The print-Y-axisFunction
 
- Height of label:              What height for the Y axis? 
- Compute a Remainder:          How to compute the remainder of a division. 
- Y Axis Element:               Construct a line for the Y axis. 
- Y-axis-column:                Generate a list of Y axis labels. 
- print-Y-axis Penultimate:     A not quite final version.
The print-X-axisFunction
 
- Similarities differences:     Much like print-Y-axis, but not exactly.
- X Axis Tic Marks:             Create tic marks for the horizontal axis.
Printing the Whole Graph
 
- The final version:            A few changes. 
- Test print-graph:             Run a short test. 
- Graphing words in defuns:     Executing the final code. 
- lambda:                       How to write an anonymous function. 
- mapcar:                       Apply a function to elements of a list. 
- Another Bug:                  Yet another bug ... most insidious. 
- Final printed graph:          The graph itself!