1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-10 16:20:17 -08:00

Copy descriptions from detailed master menu to menus within body.

This commit is contained in:
Robert J. Chassell 2006-11-09 18:48:11 +00:00
parent 303b49618e
commit d50daf3f43
2 changed files with 201 additions and 188 deletions

View file

@ -455,7 +455,7 @@ Install a Function Definition
Make a Function Interactive
* Interactive multiply-by-seven:: An overview.
* multiply-by-seven in detail:: The interactive version.
* multiply-by-seven in detail:: The interactive version.
@code{let}
@ -589,7 +589,7 @@ Cutting and Storing Text
@code{copy-region-as-kill}
* Complete copy-region-as-kill:: The complete function definition.
* copy-region-as-kill body:: The body of @code{copy-region-as-kill}.
* copy-region-as-kill body:: The body of @code{copy-region-as-kill}.
The Body of @code{copy-region-as-kill}
@ -836,11 +836,11 @@ files, read letters, write books---all these activities are kinds of
editing in the most general sense of the word.)
@menu
* Why::
* On Reading this Text::
* Who You Are::
* 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::
* Note for Novices:: You can read this as a novice.
* Thank You::
@end menu
@ -1093,16 +1093,16 @@ think about functions now; functions are defined in @ref{Making
Errors, , Generate an Error Message}.} Lists are the basis of Lisp.
@menu
* Lisp Lists::
* Run a Program::
* Making Errors::
* Names & Definitions::
* Lisp Interpreter::
* Evaluation::
* Variables::
* Arguments::
* set & setq::
* Summary::
* 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::
@end menu
@ -1132,10 +1132,10 @@ like flowers in a field with a stone wall around them.
@cindex Flowers in a field
@menu
* Numbers Lists::
* Lisp Atoms::
* Whitespace in Lists::
* Typing Lists::
* Numbers Lists:: List have numbers, other lists, in them.
* Lisp Atoms:: Elemental entities.
* Whitespace in Lists:: Formatting lists to be readable.
* Typing Lists:: How GNU Emacs helps you type lists.
@end menu
@node Numbers Lists, Lisp Atoms, Lisp Lists, Lisp Lists
@ -1573,8 +1573,8 @@ and attach them to names, and how to do this without confusing either
yourself or the computer.
@menu
* Complications::
* Byte Compiling::
* Complications:: Variables, Special forms, Lists within.
* Byte Compiling:: Specially processing code for speed.
@end menu
@node Complications, Byte Compiling, Lisp Interpreter, Lisp Interpreter
@ -1645,8 +1645,8 @@ value or amount of; to appraise', according to @cite{Webster's New
Collegiate Dictionary}.
@menu
* How the Interpreter Acts::
* Evaluating Inner Lists::
* How the Interpreter Acts:: Returns and Side Effects...
* Evaluating Inner Lists:: Lists within lists...
@end menu
@node How the Interpreter Acts, Evaluating Inner Lists, Evaluation, Evaluation
@ -1775,8 +1775,9 @@ function definition, and vice-verse.
@menu
* fill-column Example::
* Void Function::
* Void Variable::
* Void Function:: The error message for a symbol
without a function.
* Void Variable:: The error message for a symbol without a value.
@end menu
@node fill-column Example, Void Function, Variables, Variables
@ -1982,11 +1983,14 @@ to it at the same time. By contrast, in Emacs Lisp, a symbol cannot
have two different function definitions at the same time.)}
@menu
* Data types::
* Args as Variable or List::
* Variable Number of Arguments::
* Wrong Type of Argument::
* message::
* 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.
@end menu
@node Data types, Args as Variable or List, Arguments, Arguments
@ -2356,9 +2360,9 @@ The following sections not only describe how @code{set} and @code{setq}
work but also illustrate how arguments are passed.
@menu
* Using set::
* Using setq::
* Counting::
* Using set:: Setting values.
* Using setq:: Setting a quoted value.
* Counting:: Using @code{setq} to count.
@end menu
@node Using set, Using setq, set & setq, set & setq
@ -2628,11 +2632,13 @@ these. In another section, we will study the code of several other
buffer-related functions, to see how they were written.
@menu
* How to Evaluate::
* Buffer Names::
* Getting Buffers::
* Switching Buffers::
* Buffer Size & Locations::
* How to Evaluate:: Typing editing commands or @kbd{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::
@end menu
@ -3047,16 +3053,16 @@ symbol refers to it.)
@menu
* Primitive Functions::
* defun::
* Install::
* Interactive::
* Interactive Options::
* Permanent Installation::
* let::
* if::
* else::
* Truth & Falsehood::
* save-excursion::
* defun:: The @code{defun} special form.
* Install:: Install a function definition.
* Interactive:: Making a function interactive.
* Interactive Options:: Different options for @code{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::
@end menu
@ -3295,7 +3301,7 @@ Emacs. To reload code automatically whenever you start Emacs, see
@menu
* Effect of installation::
* Change a defun::
* Change a defun:: How to change a function definition.
@end menu
@node Effect of installation, Change a defun, Install, Install
@ -3396,8 +3402,8 @@ value returned. If the returned value were displayed in the echo area
each time you typed a key, it would be very distracting.
@menu
* Interactive multiply-by-seven::
* multiply-by-seven in detail::
* Interactive multiply-by-seven:: An overview.
* multiply-by-seven in detail:: The interactive version.
@end menu
@node Interactive multiply-by-seven, multiply-by-seven in detail, Interactive, Interactive
@ -3895,7 +3901,7 @@ such as, ``if it is warm and sunny, then go to the beach!''
@menu
* if in more detail::
* type-of-animal in detail::
* type-of-animal in detail:: An example of an @code{if} expression.
@end menu
@node if in more detail, type-of-animal in detail, if, if
@ -4187,7 +4193,7 @@ symbol (other than @code{nil}) such as @code{flowers}, or a list (so
long as it is not empty), or even a buffer!
@menu
* nil explained::
* nil explained:: @code{nil} has two meanings.
@end menu
@node nil explained, , Truth & Falsehood, Truth & Falsehood
@ -4275,7 +4281,7 @@ purpose is to keep the user from being surprised and disturbed by
unexpected movement of point or mark.
@menu
* Point and mark::
* Point and mark:: A review of various locations.
* Template for save-excursion::
@end menu
@ -4670,11 +4676,13 @@ these definitions. The functions described here are all related to
buffers. Later, we will study other functions.
@menu
* Finding More::
* simplified-beginning-of-buffer::
* mark-whole-buffer::
* append-to-buffer::
* Buffer Related Review::
* Finding More:: How to find more information.
* simplified-beginning-of-buffer:: Shows @code{goto-char},
@code{point-min}, and @code{push-mark}.
* mark-whole-buffer:: Almost the same as @code{beginning-of-buffer}.
* append-to-buffer:: Uses @code{save-excursion} and
@code{insert-buffer-substring}.
* Buffer Related Review:: Review.
* Buffer Exercises::
@end menu
@ -4920,7 +4928,7 @@ h}.
@menu
* mark-whole-buffer overview::
* Body of mark-whole-buffer::
* Body of mark-whole-buffer:: Only three lines of code.
@end menu
@node mark-whole-buffer overview, Body of mark-whole-buffer, mark-whole-buffer, mark-whole-buffer
@ -5056,9 +5064,9 @@ current buffer to a specified buffer.
@menu
* append-to-buffer overview::
* append interactive::
* append-to-buffer body::
* append save-excursion::
* append interactive:: A two part interactive expression.
* append-to-buffer body:: Incorporates a @code{let} expression.
* append save-excursion:: How the @code{save-excursion} works.
@end menu
@node append-to-buffer overview, append interactive, append-to-buffer, append-to-buffer
@ -5572,9 +5580,10 @@ use of an asterisk in an @code{interactive} expression, use of
to which the name refers.
@menu
* copy-to-buffer::
* insert-buffer::
* beginning-of-buffer::
* copy-to-buffer:: With @code{set-buffer}, @code{get-buffer-create}.
* insert-buffer:: Read-only, and with @code{or}.
* beginning-of-buffer:: Shows @code{goto-char},
@code{point-min}, and @code{push-mark}.
* Second Buffer Related Review::
* optional Exercise::
@end menu
@ -5680,11 +5689,11 @@ between the name of an object and the object actually referred to.
@menu
* insert-buffer code::
* insert-buffer interactive::
* insert-buffer body::
* if & or::
* Insert or::
* Insert let::
* insert-buffer interactive:: When you can read, but not write.
* insert-buffer body:: The body has an @code{or} and a @code{let}.
* if & or:: Using an @code{if} instead of an @code{or}.
* Insert or:: How the @code{or} expression works.
* Insert let:: Two @code{save-excursion} expressions.
* New insert-buffer::
@end menu
@ -5743,8 +5752,8 @@ declaration has two parts, an asterisk, @samp{*}, and @samp{bInsert
buffer:@: }.
@menu
* Read-only buffer::
* b for interactive::
* Read-only buffer:: When a buffer cannot be modified.
* b for interactive:: An existing buffer or else its name.
@end menu
@node Read-only buffer, b for interactive, insert-buffer interactive, insert-buffer interactive
@ -6126,7 +6135,7 @@ argument. The use of the argument is optional.
@menu
* Optional Arguments::
* beginning-of-buffer opt arg::
* beginning-of-buffer opt arg:: Example with optional argument.
* beginning-of-buffer complete::
@end menu
@ -6607,9 +6616,9 @@ other parts. Narrowing is normally disabled since it can confuse
novices.
@menu
* Narrowing advantages::
* save-restriction::
* what-line::
* Narrowing advantages:: The advantages of narrowing
* save-restriction:: The @code{save-restriction} special form.
* what-line:: The number of the line that point is on.
* narrow Exercise::
@end menu
@ -6938,13 +6947,13 @@ will see @code{cons} as well as two variants on @code{cdr},
namely, @code{setcdr} and @code{nthcdr}. (@xref{copy-region-as-kill}.)
@menu
* Strange Names::
* car & cdr::
* cons::
* nthcdr::
* Strange Names:: An historical aside: why the strange names?
* car & cdr:: Functions for extracting part of a list.
* cons:: Constructing a list.
* nthcdr:: Calling @code{cdr} repeatedly.
* nth::
* setcar::
* setcdr::
* setcar:: Changing the first element of a list.
* setcdr:: Changing the rest of a list.
* cons Exercise::
@end menu
@ -7126,7 +7135,7 @@ Like @code{car} and @code{cdr}, @code{cons} is non-destructive.
@menu
* Build a list::
* length::
* length:: How to find the length of a list.
@end menu
@node Build a list, length, cons, cons
@ -7607,12 +7616,12 @@ been tempted to replace globally all occurrences of `kill' in the Emacs
sources with `clip' and all occurrences of `killed' with `clipped'.)
@menu
* Storing Text::
* zap-to-char::
* kill-region::
* copy-region-as-kill::
* Digression into C::
* defvar::
* 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.
* copy-region-as-kill:: A definition for copying text.
* Digression into C:: Minor note on C programming language macros.
* defvar:: How to give a variable an initial value.
* cons & search-fwd Review::
* search Exercises::
@end menu
@ -7704,12 +7713,12 @@ that of error handling. We will walk through the function.
But first, let us look at the interactive @code{zap-to-char} function.
@menu
* Complete zap-to-char::
* zap-to-char interactive::
* zap-to-char body::
* search-forward::
* progn::
* Summing up 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 @code{progn} special form.
* Summing up zap-to-char:: Using @code{point} and @code{search-forward}.
@end menu
@node Complete zap-to-char, zap-to-char interactive, zap-to-char, zap-to-char
@ -8066,8 +8075,8 @@ code that does the work when all goes well. The third argument
contains the code that is called in the event of an error.
@menu
* Complete kill-region::
* condition-case::
* Complete kill-region:: The function definition.
* condition-case:: Dealing with a problem.
* Lisp macro::
@end menu
@ -8436,8 +8445,8 @@ hand, if some other command precedes the @code{copy-region-as-kill},
the function copies the text into a separate entry in the kill ring.
@menu
* Complete copy-region-as-kill::
* copy-region-as-kill body::
* Complete copy-region-as-kill:: The complete function definition.
* copy-region-as-kill body:: The body of @code{copy-region-as-kill}.
@end menu
@node Complete copy-region-as-kill, copy-region-as-kill body, copy-region-as-kill, copy-region-as-kill
@ -9663,7 +9672,7 @@ pointed to. Hence, a list is kept as a series of electronic addresses.
@menu
* Lists diagrammed::
* Symbols as Chest::
* Symbols as Chest:: Exploring a powerful metaphor.
* List Exercise::
@end menu
@ -10144,8 +10153,8 @@ list is handled as a ring.)
@menu
* Kill Ring Overview::
* kill-ring-yank-pointer::
* yank nthcdr Exercises::
* kill-ring-yank-pointer:: The kill ring is a list.
* yank nthcdr Exercises:: The @code{kill-ring-yank-pointer} variable.
@end menu
@node Kill Ring Overview, kill-ring-yank-pointer, Yanking, Yanking
@ -10380,9 +10389,9 @@ increase the values of @code{max-specpdl-size} and
15 and 30 times their default value.}.
@menu
* while::
* while:: Causing a stretch of code to repeat.
* dolist dotimes::
* Recursion::
* Recursion:: Causing a function to call itself.
* Looping exercise::
@end menu
@ -10417,12 +10426,12 @@ The template for a @code{while} expression looks like this:
@end smallexample
@menu
* Looping with while::
* Loop Example::
* print-elements-of-list::
* Incrementing Loop::
* Looping with while:: Repeat so long as test returns true.
* Loop Example:: A @code{while} loop that uses a list.
* print-elements-of-list:: Uses @code{while}, @code{car}, @code{cdr}.
* Incrementing Loop:: A loop with an incrementing counter.
* Incrementing Loop Details::
* Decrementing Loop::
* Decrementing Loop:: A loop with a decrementing counter.
@end menu
@node Looping with while, Loop Example, while, while
@ -10688,9 +10697,9 @@ Note that you need to set the initial value of @code{count}; usually it
is set to 1.
@menu
* Incrementing Example::
* Inc Example parts::
* Inc Example altogether::
* Incrementing Example:: Counting pebbles in a triangle.
* Inc Example parts:: The parts of the function definition.
* Inc Example altogether:: Putting the function definition together.
@end menu
@node Incrementing Example, Inc Example parts, Incrementing Loop Details, Incrementing Loop Details
@ -10996,9 +11005,9 @@ The template for a decrementing @code{while} loop looks like this:
@end smallexample
@menu
* Decrementing Example::
* Dec Example parts::
* Dec Example altogether::
* Decrementing Example:: More pebbles on the beach.
* Dec Example parts:: The parts of the function definition.
* Dec Example altogether:: Putting the function definition together.
@end menu
@node Decrementing Example, Dec Example parts, Decrementing Loop, Decrementing Loop
@ -11353,13 +11362,13 @@ different arguments' will become sufficiently different from the first
arguments that the final instance will stop.
@menu
* Building Robots::
* Recursive Definition Parts::
* Recursion with list::
* 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::
* No Deferment::
* Recursive Patterns:: Often used templates.
* No Deferment:: Don't store up work ...
* No deferment solution::
@end menu
@ -12399,11 +12408,11 @@ this chapter. @code{forward-paragraph} is a complex function that
introduces several new features.
@menu
* sentence-end::
* re-search-forward::
* forward-sentence::
* forward-paragraph::
* etags::
* sentence-end:: The regular expression for @code{sentence-end}.
* re-search-forward:: Very similar to @code{search-forward}.
* forward-sentence:: A straightforward example of regexp search.
* forward-paragraph:: A somewhat complex example.
* etags:: How to create your own @file{TAGS} table.
* Regexp Review::
* re-search Exercises::
@end menu
@ -12649,8 +12658,8 @@ bound to the key command @kbd{M-e}.
@menu
* Complete forward-sentence::
* fwd-sentence while loops::
* fwd-sentence re-search::
* fwd-sentence while loops:: Two @code{while} loops.
* fwd-sentence re-search:: A regular expression search.
@end menu
@node Complete forward-sentence, fwd-sentence while loops, forward-sentence, forward-sentence
@ -13108,9 +13117,9 @@ exists, especially when blank lines separate paragraphs.
This is an added complication.
@menu
* forward-paragraph in brief::
* fwd-para let::
* fwd-para while::
* forward-paragraph in brief:: Key parts of the function definition.
* fwd-para let:: The @code{let*} expression.
* fwd-para while:: The forward motion @code{while} loop.
@end menu
@node forward-paragraph in brief, fwd-para let, forward-paragraph, forward-paragraph
@ -13804,8 +13813,8 @@ word count commands using @code{while} loops and recursion.
@menu
* Why Count Words::
* count-words-region::
* recursive-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::
@end menu
@ -13851,8 +13860,8 @@ region. This means that word counting is ideally suited to recursion
or to a @code{while} loop.
@menu
* Design count-words-region::
* Whitespace Bug::
* Design count-words-region:: The definition using a @code{while} loop.
* Whitespace Bug:: The Whitespace Bug in @code{count-words-region}.
@end menu
@node Design count-words-region, Whitespace Bug, count-words-region, count-words-region
@ -14692,15 +14701,15 @@ and this will tell.
@menu
* Divide and Conquer::
* Words and Symbols::
* Syntax::
* count-words-in-defun::
* Several defuns::
* Find a File::
* lengths-list-file::
* Several files::
* Several files recursively::
* Prepare the data::
* Words and Symbols:: What to count?
* Syntax:: What constitutes a word or symbol?
* count-words-in-defun:: Very like @code{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.
@end menu
@node Divide and Conquer, Words and Symbols, Words in a defun, Words in a defun
@ -15366,8 +15375,8 @@ Working on each of a list of files is a repetitious act, so we can use
either a @code{while} loop or recursion.
@menu
* lengths-list-many-files::
* append::
* lengths-list-many-files:: Return a list of the lengths of defuns.
* append:: Attach one list to another.
@end menu
@node lengths-list-many-files, append, Several files, Several files
@ -15603,8 +15612,8 @@ numbers.
@menu
* Data for Display in Detail::
* Sorting::
* Files List::
* Sorting:: Sorting lists.
* Files List:: Making a list of files.
* Counting function definitions::
@end menu
@ -16297,7 +16306,7 @@ the function to label the axes automatically.
@menu
* Columns of a graph::
* graph-body-print::
* graph-body-print:: How to print the body of a graph.
* recursive-graph-body-print::
* Printed Axes::
* Line Graph Exercise::
@ -16956,20 +16965,20 @@ expressions in Emacs Lisp you can change or extend Emacs.
@menu
* Default Configuration::
* Site-wide Init::
* defcustom::
* Beginning a .emacs File::
* Text and Auto-fill::
* Mail Aliases::
* Indent Tabs Mode::
* Keybindings::
* Keymaps::
* Loading Files::
* Autoload::
* Simple Extension::
* X11 Colors::
* 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 @code{.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 X.
* Miscellaneous::
* Mode Line::
* Mode Line:: How to customize your mode line.
@end menu
@node Default Configuration, Site-wide Init, Emacs Initialization, Emacs Initialization
@ -18422,10 +18431,10 @@ Debugging Lisp Programs, elisp, The GNU Emacs Lisp Reference Manual}.
In this chapter, I will walk through a short example of each.
@menu
* debug::
* debug-on-entry::
* debug-on-quit::
* edebug::
* 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 @kbd{C-g}.
* edebug:: How to use Edebug, a source level debugger.
* Debugging Exercises::
@end menu
@ -19149,8 +19158,8 @@ consider the workings of the kill ring.
@menu
* What the Kill Ring Does::
* current-kill::
* yank::
* yank-pop::
* yank:: Paste a copy of a clipped element.
* yank-pop:: Insert element pointed to.
* ring file::
@end menu
@ -19331,7 +19340,7 @@ documentation string. It is @emph{not} interactive.
@menu
* Body of current-kill::
* Digression concerning error::
* Digression concerning error:: How to mislead humans, but not computers.
* Determining the Element::
@end menu
@ -19756,10 +19765,10 @@ body itself.
@menu
* Labelled Example::
* print-graph Varlist::
* print-Y-axis::
* print-X-axis::
* Print Whole Graph::
* print-graph Varlist:: @code{let} expression in @code{print-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.
@end menu
@node Labelled Example, print-graph Varlist, Full Graph, Full Graph
@ -19924,11 +19933,11 @@ construct and insert the appropriate numbers and marks.
@menu
* print-Y-axis in Detail::
* Height of label::
* Compute a Remainder::
* Y Axis Element::
* Y-axis-column::
* print-Y-axis Penultimate::
* 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.
@end menu
@node print-Y-axis in Detail, Height of label, print-Y-axis, print-Y-axis
@ -20380,8 +20389,8 @@ the width of the symbols that you are using to print the body of the
graph without changing the ways the graph is labelled.
@menu
* Similarities differences::
* X Axis Tic Marks::
* Similarities differences:: Much like @code{print-Y-axis}, but not exactly.
* X Axis Tic Marks:: Create tic marks for the horizontal axis.
@end menu
@node Similarities differences, X Axis Tic Marks, print-X-axis, print-X-axis
@ -20729,13 +20738,13 @@ Here is the outline:
@end smallexample
@menu
* The final version::
* Test print-graph::
* Graphing words in defuns::
* lambda::
* mapcar::
* Another Bug::
* Final printed 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 @dots{} most insidious.
* Final printed graph:: The graph itself!
@end menu
@node The final version, Test print-graph, Print Whole Graph, Print Whole Graph