]> code.delx.au - gnu-emacs/commitdiff
Merge from emacs-24; up to 2012-05-08T15:19:18Z!monnier@iro.umontreal.ca
authorGlenn Morris <rgm@gnu.org>
Wed, 17 Oct 2012 03:44:00 +0000 (20:44 -0700)
committerGlenn Morris <rgm@gnu.org>
Wed, 17 Oct 2012 03:44:00 +0000 (20:44 -0700)
1  2 
doc/lispintro/ChangeLog
doc/lispintro/emacs-lisp-intro.texi
lisp/gnus/ChangeLog

diff --combined doc/lispintro/ChangeLog
index 11eacf25c96eb65bd91d176ec66ccb22980900d9,b37426612f11461c754e7c63ec0b0e69d7520bd1..6c524f5a0aef6b07917166a81ea6b4f091ff0c8c
@@@ -1,40 -1,36 +1,45 @@@
 -2012-10-13  Gregor Zattler  <grfz@gmx.de>  (tiny change)
++2012-10-17  Gregor Zattler  <grfz@gmx.de>  (tiny change)
+       * emacs-lisp-intro.texi (Narrowing advantages):
+       Minor update for changed what-line implementation.  (Bug#12629)
 -2012-08-24  Chong Yidong  <cyd@gnu.org>
 +2012-06-21  Glenn Morris  <rgm@gnu.org>
  
 -      * Version 24.2 released.
 +      * Makefile.in: Rename infodir to buildinfodir throughout.  (Bug#11737)
  
 -2012-06-19  Glenn Morris  <rgm@gnu.org>
 +2012-05-29  Glenn Morris  <rgm@gnu.org>
  
 -      * Makefile.in: Rename infodir to buildinfodir throughout.  (Bug#11737)
 +      * emacs-lisp-intro.texi: Nuke hand-written node pointers.
 +      (dolist, dotimes): Fix sectioning.
  
 -2012-06-01  Chong Yidong  <cyd@gnu.org>
 +2012-05-12  Glenn Morris  <rgm@gnu.org>
  
 -      * Version 24.1 released.
 +      * Makefile.in (MKDIR_P): New, set by configure.
 +      (mkinfodir): Use $MKDIR_P.
  
 -2012-05-04  Glenn Morris  <rgm@gnu.org>
 +2012-05-05  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp-intro.texi (Making Errors): Don't mention Emacs 20.
        (Void Function, Wrong Type of Argument, Recursion with list)
        (Simple Extension): Assume a non-ancient Emacs.
        (Void Variable, Switching Buffers): Improve page breaks.
  
 -2012-05-03  Glenn Morris  <rgm@gnu.org>
 -
        * emacs-lisp-intro.texi: Update GNU Press contact details.
  
 -2012-04-28  Glenn Morris  <rgm@gnu.org>
 +2012-05-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (INFO_EXT, INFO_OPTS): New, set by configure.
 +      (info, infoclean): Use $INFO_EXT.
 +      (${infodir}/eintr$(INFO_EXT)): Use $INFO_EXT and $INFO_OPT.
 +      * makefile.w32-in (INFO_EXT, INFO_OPTS): New.
 +      (INFO_TARGETS, clean): Use $INFO_EXT.
 +      ($(infodir)/eintr$(INFO_EXT)): Use $INFO_EXT and $INFO_OPT.
 +
 +2012-05-02  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp-intro.texi (Syntax): Reword to avoid underfull hbox.
  
 -2012-04-07  Glenn Morris  <rgm@gnu.org>
 +2012-04-14  Glenn Morris  <rgm@gnu.org>
  
        * Makefile.in: Replace non-portable use of $< in ordinary rules.
  
        `named' to `selected'.
        (lengths-list-file): Remove extraneous parenthesis from reference.
        (lengths-list-many-files): Explain `expand-file-name' better.
 -      (Files List): Rephrase sentence regarding Lisp sources directory
 +      (Files List): Rephrase sentence regarding Lisp sources directory.
  
  2006-11-04  Robert J. Chassell  <bob@rattlesnake.com>
  
index 04e3e0c8649d3944096788fc4c57dcd8d6e51fc7,c0c7dec47bd2b9a495dced146e4f5f04bfeda8d0..55c3ef4e09ecbc5de7272b474d935266d36b6a5c
@@@ -315,7 -315,7 +315,7 @@@ supports it in developing GNU and promo
  @contents
  
  @ifnottex
 -@node Top, Preface, (dir), (dir)
 +@node Top
  @top An Introduction to Programming in Emacs Lisp
  
  @insertcopying
@@@ -829,7 -829,8 +829,7 @@@ Printing the Whole Grap
  @end detailmenu
  @end menu
  
 -@node Preface, List Processing, Top, Top
 -@comment  node-name,  next,  previous,  up
 +@node Preface
  @unnumbered Preface
  
  Most of the GNU Emacs integrated environment is written in the programming
@@@ -857,8 -858,8 +857,8 @@@ editing in the most general sense of th
  * Thank You::
  @end menu
  
 -@node Why, On Reading this Text, Preface, Preface
  @ifnottex
 +@node Why
  @unnumberedsec Why Study Emacs Lisp?
  @end ifnottex
  
@@@ -872,7 -873,8 +872,7 @@@ Emacs Lisp is designed to get you start
  fundamentals of programming, and more importantly, to show you how you
  can teach yourself to go further.
  
 -@node On Reading this Text, Who You Are, Why, Preface
 -@comment  node-name,  next,  previous,  up
 +@node On Reading this Text
  @unnumberedsec On Reading this Text
  
  All through this document, you will see little sample programs you can
@@@ -922,7 -924,8 +922,7 @@@ Emacs to help you understand what puzzl
  something new.  This self-reliance is not only a pleasure, but an
  advantage.
  
 -@node Who You Are, Lisp History, On Reading this Text, Preface
 -@comment  node-name,  next,  previous,  up
 +@node Who You Are
  @unnumberedsec For Whom This is Written
  
  This text is written as an elementary introduction for people who are
@@@ -984,7 -987,7 +984,7 @@@ quoted above.  And, of course, after yo
  @cite{Introduction}, you will find the @cite{Reference Manual} useful
  when you are writing your own programs.
  
 -@node Lisp History, Note for Novices, Who You Are, Preface
 +@node Lisp History
  @unnumberedsec Lisp History
  @cindex Lisp history
  
@@@ -1001,7 -1004,8 +1001,7 @@@ standard in the 1980s.  However, Emacs 
  Lisp.  (The standard Emacs distribution contains an optional extensions
  file, @file{cl.el}, that adds many Common Lisp features to Emacs Lisp.)
  
 -@node Note for Novices, Thank You, Lisp History, Preface
 -@comment  node-name,  next,  previous,  up
 +@node Note for Novices
  @unnumberedsec A Note for Novices
  
  If you don't know GNU Emacs, you can still read this document
@@@ -1048,7 -1052,8 +1048,7 @@@ A note on terminology:  when I use the 
  referring to the various dialects of Lisp in general, but when I speak
  of Emacs Lisp, I am referring to GNU Emacs Lisp in particular.
  
 -@node Thank You,  , Note for Novices, Preface
 -@comment  node-name,  next,  previous,  up
 +@node Thank You
  @unnumberedsec Thank You
  
  My thanks to all who helped me with this book.  My especial thanks to
@@@ -1094,7 -1099,8 +1094,7 @@@ Robert J. Chassel
  @global@pageno = 1
  @end iftex
  
 -@node List Processing, Practicing Evaluation, Preface, Top
 -@comment  node-name,  next,  previous,  up
 +@node List Processing
  @chapter List Processing
  
  To the untutored eye, Lisp is a strange programming language.  In Lisp
@@@ -1123,7 -1129,8 +1123,7 @@@ Errors, , Generate an Error Message}.
  * Error Message Exercises::
  @end menu
  
 -@node Lisp Lists, Run a Program, List Processing, List Processing
 -@comment  node-name,  next,  previous,  up
 +@node Lisp Lists
  @section Lisp Lists
  @cindex Lisp Lists
  
@@@ -1154,8 -1161,8 +1154,8 @@@ like flowers in a field with a stone wa
  * Typing Lists::                How GNU Emacs helps you type lists.
  @end menu
  
 -@node Numbers Lists, Lisp Atoms, Lisp Lists, Lisp Lists
  @ifnottex
 +@node Numbers Lists
  @unnumberedsubsec Numbers, Lists inside of Lists
  @end ifnottex
  
@@@ -1183,7 -1190,8 +1183,7 @@@ The components of this list are the wor
  list is made up of the words @samp{a}, @samp{list}, @samp{inside},
  @samp{of}, @samp{it}.
  
 -@node Lisp Atoms, Whitespace in Lists, Numbers Lists, Lisp Lists
 -@comment  node-name,  next,  previous,  up
 +@node Lisp Atoms
  @subsection Lisp Atoms
  @cindex Lisp Atoms
  
@@@ -1263,7 -1271,8 +1263,7 @@@ is used for messages that a computer ca
  Strings are a different kind of atom than numbers or symbols and are
  used differently.
  
 -@node Whitespace in Lists, Typing Lists, Lisp Atoms, Lisp Lists
 -@comment  node-name,  next,  previous,  up
 +@node Whitespace in Lists
  @subsection Whitespace in Lists
  @cindex Whitespace in lists
  
@@@ -1303,7 -1312,8 +1303,7 @@@ marks, a symbol looks like a word, and 
  (For certain situations, square brackets, dots and a few other special
  characters may be used; however, we will go quite far without them.)
  
 -@node Typing Lists,  , Whitespace in Lists, Lisp Lists
 -@comment  node-name,  next,  previous,  up
 +@node Typing Lists
  @subsection GNU Emacs Helps You Type Lists
  @cindex Help typing lists
  @cindex Formatting help
@@@ -1325,7 -1335,8 +1325,7 @@@ in Lisp must have its closing parenthes
  parenthesis.  (@xref{Major Modes, , Major Modes, emacs, The GNU Emacs
  Manual}, for more information about Emacs's modes.)
  
 -@node Run a Program, Making Errors, Lisp Lists, List Processing
 -@comment  node-name,  next,  previous,  up
 +@node Run a Program
  @section Run a Program
  @cindex Run a program
  @cindex Program, running one
@@@ -1387,7 -1398,8 +1387,7 @@@ from the humanly readable expression t
  But before discussing this (@pxref{Variables}), we will discuss what the
  Lisp interpreter does when you make an error.
  
 -@node Making Errors, Names & Definitions, Run a Program, List Processing
 -@comment  node-name,  next,  previous,  up
 +@node Making Errors
  @section Generate an Error Message
  @cindex Generate an error message
  @cindex Error message generation
@@@ -1537,7 -1549,8 +1537,7 @@@ The error message can be understood: @s
  definition is void:@: this}.  The symbol (that is, the word
  @samp{this}) lacks instructions for the computer to carry out.
  
 -@node Names & Definitions, Lisp Interpreter, Making Errors, List Processing
 -@comment  node-name,  next,  previous,  up
 +@node Names & Definitions
  @section Symbol Names and Function Definitions
  @cindex Symbol names
  
@@@ -1571,7 -1584,8 +1571,7 @@@ Thus, all the names for functions that 
  @samp{texinfo-} and those for functions that deal with reading mail
  start with @samp{rmail-}.
  
 -@node Lisp Interpreter, Evaluation, Names & Definitions, List Processing
 -@comment  node-name,  next,  previous,  up
 +@node Lisp Interpreter
  @section The Lisp Interpreter
  @cindex Lisp interpreter, what it does
  @cindex Interpreter, what it does
@@@ -1596,8 -1610,8 +1596,8 @@@ yourself or the computer
  * Byte Compiling::              Specially processing code for speed.
  @end menu
  
 -@node Complications, Byte Compiling, Lisp Interpreter, Lisp Interpreter
  @ifnottex
 +@node Complications
  @unnumberedsubsec Complications
  @end ifnottex
  
@@@ -1628,7 -1642,7 +1628,7 @@@ used by the enclosing expression
  Otherwise, the interpreter works left to right, from one expression to
  the next.
  
 -@node Byte Compiling,  , Complications, Lisp Interpreter
 +@node Byte Compiling
  @subsection Byte Compiling
  @cindex Byte compiling
  
@@@ -1651,7 -1665,8 +1651,7 @@@ the topic here.  @xref{Byte Compilation
  The GNU Emacs Lisp Reference Manual}, for a full description of byte
  compilation.
  
 -@node Evaluation, Variables, Lisp Interpreter, List Processing
 -@comment  node-name,  next,  previous,  up
 +@node Evaluation
  @section Evaluation
  @cindex Evaluation
  
@@@ -1667,8 -1682,8 +1667,8 @@@ Collegiate Dictionary}
  * Evaluating Inner Lists::      Lists within lists...
  @end menu
  
 -@node How the Interpreter Acts, Evaluating Inner Lists, Evaluation, Evaluation
  @ifnottex
 +@node How the Interpreter Acts
  @unnumberedsubsec How the Lisp Interpreter Acts
  @end ifnottex
  
@@@ -1694,7 -1709,8 +1694,7 @@@ In summary, evaluating a symbolic expre
  Lisp interpreter to return a value and perhaps carry out a side effect;
  or else produce an error.
  
 -@node Evaluating Inner Lists,  , How the Interpreter Acts, Evaluation
 -@comment  node-name,  next,  previous,  up
 +@node Evaluating Inner Lists
  @subsection Evaluating Inner Lists
  @cindex Inner list evaluation
  @cindex Evaluating inner lists
@@@ -1757,7 -1773,8 +1757,7 @@@ instructions in the function definitio
  symbol by itself is evaluated, something different happens, as we will
  see in the next section.
  
 -@node Variables, Arguments, Evaluation, List Processing
 -@comment  node-name,  next,  previous,  up
 +@node Variables
  @section Variables
  @cindex Variables
  
@@@ -1796,8 -1813,8 +1796,8 @@@ function definition, and vice-verse
  * Void Variable::               The error message for a symbol without a value.
  @end menu
  
 -@node fill-column Example, Void Function, Variables, Variables
  @ifnottex
 +@node fill-column Example
  @unnumberedsubsec @code{fill-column}, an Example Variable
  @end ifnottex
  
@@@ -1834,7 -1851,8 +1834,7 @@@ A symbol can be bound to a value in sev
  Setting the Value of a Variable}, for information about one way to do
  this.
  
 -@node Void Function, Void Variable, fill-column Example, Variables
 -@comment  node-name,  next,  previous,  up
 +@node Void Function
  @subsection Error Message for a Symbol Without a Function
  @cindex Symbol without function error
  @cindex Error for symbol without function
@@@ -1886,7 -1904,8 +1886,7 @@@ Symbol's function definition is void:@
  another key.)
  @end ignore
  
 -@node Void Variable,  , Void Function, Variables
 -@comment  node-name,  next,  previous,  up
 +@node Void Variable
  @subsection Error Message for a Symbol Without a Value
  @cindex Symbol without value error
  @cindex Error for symbol without value
@@@ -1952,7 -1971,8 +1952,7 @@@ Symbol's value as variable is void:@: 
  The meaning is the same as in GNU Emacs 22.
  @end ignore
  
 -@node Arguments, set & setq, Variables, List Processing
 -@comment  node-name,  next,  previous,  up
 +@node Arguments
  @section Arguments
  @cindex Arguments
  @cindex Passing information to functions
@@@ -2005,7 -2025,8 +2005,7 @@@ have two different function definition
  * message::                     A useful function for sending messages.
  @end menu
  
 -@node Data types, Args as Variable or List, Arguments, Arguments
 -@comment  node-name,  next,  previous,  up
 +@node Data types
  @subsection Arguments' Data Types
  @cindex Data types
  @cindex Types of data
@@@ -2059,7 -2080,8 +2059,7 @@@ and extracts a part.  However, @code{su
  a substring from an argument that is a string, not from another type of
  atom such as a number or symbol.
  
 -@node Args as Variable or List, Variable Number of Arguments, Data types, Arguments
 -@comment  node-name,  next,  previous,  up
 +@node Args as Variable or List
  @subsection An Argument as the Value of a Variable or List
  
  An argument can be a symbol that returns a value when it is evaluated.
@@@ -2100,7 -2122,8 +2100,7 @@@ the final string.  The function @code{n
  integer that the addition function returns to a string.
  @code{number-to-string} is also known as @code{int-to-string}.)
  
 -@node Variable Number of Arguments, Wrong Type of Argument, Args as Variable or List, Arguments
 -@comment  node-name,  next,  previous,  up
 +@node Variable Number of Arguments
  @subsection Variable Number of Arguments
  @cindex Variable number of arguments
  @cindex Arguments, variable number of
@@@ -2144,7 -2167,8 +2144,7 @@@ In this set, the functions have three a
  @end group
  @end smallexample
  
 -@node Wrong Type of Argument, message, Variable Number of Arguments, Arguments
 -@comment  node-name,  next,  previous,  up
 +@node Wrong Type of Argument
  @subsection Using the Wrong Type Object as an Argument
  @cindex Wrong type of argument
  @cindex Argument, wrong type of
@@@ -2238,7 -2262,8 +2238,7 @@@ This says, in different words, the sam
  @file{*Backtrace*} buffer.
  @end ignore
  
 -@node message,  , Wrong Type of Argument, Arguments
 -@comment  node-name,  next,  previous,  up
 +@node message
  @subsection The @code{message} Function
  @findex message
  
@@@ -2350,7 -2375,8 +2350,7 @@@ When your fill column is 70 and you eva
  message @code{"He saw 38 red foxes leaping."} appears in your echo
  area.
  
 -@node set & setq, Summary, Arguments, List Processing
 -@comment  node-name,  next,  previous,  up
 +@node set & setq
  @section Setting the Value of a Variable
  @cindex Variable, setting value
  @cindex Setting value of variable
@@@ -2370,7 -2396,8 +2370,7 @@@ work but also illustrate how arguments 
  * Counting::                   Using @code{setq} to count.
  @end menu
  
 -@node Using set, Using setq, set & setq, set & setq
 -@comment  node-name,  next,  previous,  up
 +@node Using set
  @subsection Using @code{set}
  @findex set
  
@@@ -2426,7 -2453,8 +2426,7 @@@ a value after it was evaluated, the @co
  the value that was returned.  There are situations where this is the
  right thing for the function to do; but such situations are rare.)
  
 -@node Using setq, Counting, Using set, set & setq
 -@comment  node-name,  next,  previous,  up
 +@node Using setq
  @subsection Using @code{setq}
  @findex setq
  
@@@ -2486,7 -2514,8 +2486,7 @@@ part of its name.  The name is chosen b
  specifically a list, attached to it; or, expressed another way,
  the symbol is set to ``point'' to the list.
  
 -@node Counting,  , Using setq, set & setq
 -@comment  node-name,  next,  previous,  up
 +@node Counting
  @subsection Counting
  @cindex Counting
  
@@@ -2532,7 -2561,8 +2532,7 @@@ is then returned as the value of the in
  @code{setq} which sets the variable @code{counter} to this new value.
  Thus, the value of the variable, @code{counter}, is changed.
  
 -@node Summary, Error Message Exercises, set & setq, List Processing
 -@comment  node-name,  next,  previous,  up
 +@node Summary
  @section Summary
  
  Learning Lisp is like climbing a hill in which the first part is the
@@@ -2594,7 -2624,8 +2594,7 @@@ an error); in addition, it may also car
  create a side effect.
  @end itemize
  
 -@node Error Message Exercises,  , Summary, List Processing
 -@comment  node-name,  next,  previous,  up
 +@node Error Message Exercises
  @section Exercises
  
  A few simple exercises:
@@@ -2616,7 -2647,8 +2616,7 @@@ Write an expression that prints a messa
  evaluated.
  @end itemize
  
 -@node Practicing Evaluation, Writing Defuns, List Processing, Top
 -@comment  node-name,  next,  previous,  up
 +@node Practicing Evaluation
  @chapter Practicing Evaluation
  @cindex Practicing evaluation
  @cindex Evaluation practice
@@@ -2641,8 -2673,8 +2641,8 @@@ buffer-related functions, to see how th
  * Evaluation Exercise::
  @end menu
  
 -@node How to Evaluate, Buffer Names, Practicing Evaluation, Practicing Evaluation
  @ifnottex
 +@node How to Evaluate
  @unnumberedsec How to Evaluate
  @end ifnottex
  
@@@ -2673,7 -2705,8 +2673,7 @@@ next few sections are important in thei
  functions makes clear the distinction between buffers and files, how to
  switch to a buffer, and how to determine a location within it.
  
 -@node Buffer Names, Getting Buffers, How to Evaluate, Practicing Evaluation
 -@comment  node-name,  next,  previous,  up
 +@node Buffer Names
  @section Buffer Names
  @findex buffer-name
  @findex buffer-file-name
@@@ -2798,7 -2831,8 +2798,7 @@@ you to change the contents of the buffe
  buffer you can edit; and when you write code or documentation (such as
  this book), this feature is very useful.
  
 -@node Getting Buffers, Switching Buffers, Buffer Names, Practicing Evaluation
 -@comment  node-name,  next,  previous,  up
 +@node Getting Buffers
  @section Getting Buffers
  @findex current-buffer
  @findex other-buffer
@@@ -2866,7 -2900,8 +2866,7 @@@ just switched is visible to you in anot
  will choose the most recent buffer that you cannot see; this is a
  subtlety that I often forget.}.
  
 -@node Switching Buffers, Buffer Size & Locations, Getting Buffers, Practicing Evaluation
 -@comment  node-name,  next,  previous,  up
 +@node Switching Buffers
  @section Switching Buffers
  @findex switch-to-buffer
  @findex set-buffer
@@@ -2955,7 -2990,8 +2955,7 @@@ the function as an entity that can do s
  it---just as a plumber is an entity who can fix a leak if you call him
  or her.
  
 -@node Buffer Size & Locations, Evaluation Exercise, Switching Buffers, Practicing Evaluation
 -@comment  node-name,  next,  previous,  up
 +@node Buffer Size & Locations
  @section Buffer Size and the Location of Point
  @cindex Size of buffer
  @cindex Buffer size
@@@ -3022,13 -3058,14 +3022,13 @@@ or a program, to operations on just a p
  function @code{point-max} returns the value of the maximum permissible
  value of point in the current buffer.
  
 -@node Evaluation Exercise,  , Buffer Size & Locations, Practicing Evaluation
 +@node Evaluation Exercise
  @section Exercise
  
  Find a file with which you are working and move towards its middle.
  Find its buffer name, file name, length, and your position in the file.
  
 -@node Writing Defuns, Buffer Walk Through, Practicing Evaluation, Top
 -@comment  node-name,  next,  previous,  up
 +@node Writing Defuns
  @chapter How To Write Function Definitions
  @cindex Definition writing
  @cindex Function definition writing
@@@ -3058,8 -3095,8 +3058,8 @@@ symbol refers to it.
  * defun Exercises::
  @end menu
  
 -@node Primitive Functions, defun, Writing Defuns, Writing Defuns
  @ifnottex
 +@node Primitive Functions
  @unnumberedsec An Aside about Primitive Functions
  @end ifnottex
  @cindex Primitive functions
@@@ -3084,7 -3121,8 +3084,7 @@@ mention the distinction only because i
  unless you investigate, you won't know whether an already-written
  function is written in Emacs Lisp or C.
  
 -@node defun, Install, Primitive Functions, Writing Defuns
 -@comment  node-name,  next,  previous,  up
 +@node defun
  @section The @code{defun} Special Form
  @findex defun
  @cindex Special form of @code{defun}
@@@ -3256,7 -3294,8 +3256,7 @@@ Installing a function is the process th
  definition of the function.  Installation is described in the next
  section.
  
 -@node Install, Interactive, defun, Writing Defuns
 -@comment  node-name,  next,  previous,  up
 +@node Install
  @section Install a Function Definition
  @cindex Install a Function Definition
  @cindex Definition installation
@@@ -3293,8 -3332,8 +3293,8 @@@ Emacs.  To reload code automatically wh
  * Change a defun::              How to change a function definition.
  @end menu
  
 -@node Effect of installation, Change a defun, Install, Install
  @ifnottex
 +@node Effect of installation
  @unnumberedsubsec The effect of installation
  @end ifnottex
  
@@@ -3324,7 -3363,8 +3324,7 @@@ Multiply NUMBER by seven
  @noindent
  (To return to a single window on your screen, type @kbd{C-x 1}.)
  
 -@node Change a defun,  , Effect of installation, Install
 -@comment  node-name,  next,  previous,  up
 +@node Change a defun
  @subsection Change a Function Definition
  @cindex Changing a function definition
  @cindex Function definition, how to change
@@@ -3369,7 -3409,8 +3369,7 @@@ In summary, this is how you write code 
  function; install it; test it; and then make fixes or enhancements and
  install it again.
  
 -@node Interactive, Interactive Options, Install, Writing Defuns
 -@comment  node-name,  next,  previous,  up
 +@node Interactive
  @section Make a Function Interactive
  @cindex Interactive functions
  @findex interactive
@@@ -3393,8 -3434,8 +3393,8 @@@ each time you typed a key, it would be 
  * multiply-by-seven in detail::    The interactive version.
  @end menu
  
 -@node Interactive multiply-by-seven, multiply-by-seven in detail, Interactive, Interactive
  @ifnottex
 +@node Interactive multiply-by-seven
  @unnumberedsubsec An Interactive @code{multiply-by-seven}, An Overview
  @end ifnottex
  
@@@ -3449,7 -3490,8 +3449,7 @@@ A prefix argument is passed to an inter
  typing @kbd{C-u} and then a number, for example, @kbd{C-u 3 M-e} (if you
  type @kbd{C-u} without a number, it defaults to 4).
  
 -@node multiply-by-seven in detail,  , Interactive multiply-by-seven, Interactive
 -@comment  node-name,  next,  previous,  up
 +@node multiply-by-seven in detail
  @subsection An Interactive @code{multiply-by-seven}
  
  Let's look at the use of the special form @code{interactive} and then at
@@@ -3518,7 -3560,8 +3518,7 @@@ expression whose first element is @code
  function, @code{message} prints the text as a side effect without
  quotes.)
  
 -@node Interactive Options, Permanent Installation, Interactive, Writing Defuns
 -@comment  node-name,  next,  previous,  up
 +@node Interactive Options
  @section Different Options for @code{interactive}
  @cindex Options for @code{interactive}
  @cindex Interactive options
@@@ -3596,7 -3639,8 +3596,7 @@@ for an example.  @xref{Using Interactiv
  elisp, The GNU Emacs Lisp Reference Manual}, for a more complete
  explanation about this technique.
  
 -@node Permanent Installation, let, Interactive Options, Writing Defuns
 -@comment  node-name,  next,  previous,  up
 +@node Permanent Installation
  @section Install Code Permanently
  @cindex Install code permanently
  @cindex Permanent code installation
@@@ -3644,7 -3688,8 +3644,7 @@@ the Free Software Foundation, and prope
  others, it may be included in the next release of Emacs.  In large
  part, this is how Emacs has grown over the past years, by donations.
  
 -@node let, if, Permanent Installation, Writing Defuns
 -@comment  node-name,  next,  previous,  up
 +@node let
  @section @code{let}
  @findex let
  
@@@ -3676,8 -3721,8 +3676,8 @@@ and the two are not intended to refer t
  * Uninitialized let Variables::
  @end menu
  
 -@node Prevent confusion, Parts of let Expression, let, let
  @ifnottex
 +@node Prevent confusion
  @unnumberedsubsec @code{let} Prevents Confusion
  @end ifnottex
  
@@@ -3715,7 -3760,8 +3715,7 @@@ meaning `to give practical effect to' (
  Dictionary}).  Since you evaluate an expression to perform an action,
  `execute' has evolved as a synonym to `evaluate'.)
  
 -@node Parts of let Expression, Sample let Expression, Prevent confusion, let
 -@comment  node-name,  next,  previous,  up
 +@node Parts of let Expression
  @subsection The Parts of a @code{let} Expression
  @cindex @code{let} expression, parts of
  @cindex Parts of @code{let} expression
@@@ -3763,7 -3809,8 +3763,7 @@@ the template for the @code{let} express
  @end group
  @end smallexample
  
 -@node Sample let Expression, Uninitialized let Variables, Parts of let Expression, let
 -@comment  node-name,  next,  previous,  up
 +@node Sample let Expression
  @subsection Sample @code{let} Expression
  @cindex Sample @code{let} expression
  @cindex @code{let} expression sample
@@@ -3813,7 -3860,8 +3813,7 @@@ argument, except for @samp{%s}.  In thi
  value of the variable @code{tiger} is printed at the location of the
  second @samp{%s}.
  
 -@node Uninitialized let Variables,  , Sample let Expression, let
 -@comment  node-name,  next,  previous,  up
 +@node Uninitialized let Variables
  @subsection Uninitialized Variables in a @code{let} Statement
  @cindex Uninitialized @code{let} variables
  @cindex @code{let} variables uninitialized
@@@ -3861,7 -3909,8 +3861,7 @@@ number is printed in the message using 
  @samp{%s}.)  The four variables as a group are put into a list to
  delimit them from the body of the @code{let}.
  
 -@node if, else, let, Writing Defuns
 -@comment  node-name,  next,  previous,  up
 +@node if
  @section The @code{if} Special Form
  @findex if
  @cindex Conditional with @code{if}
@@@ -3883,8 -3932,8 +3883,8 @@@ such as, ``if it is warm and sunny, the
  * 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
  @ifnottex
 +@node if in more detail
  @unnumberedsubsec @code{if} in more detail
  @end ifnottex
  
@@@ -3974,7 -4023,8 +3974,7 @@@ following message printed in the echo a
  when you evaluate @code{(type-of-animal 'zebra)} you will see @code{nil}
  printed in the echo area.
  
 -@node type-of-animal in detail,  , if in more detail, if
 -@comment  node-name,  next,  previous,  up
 +@node type-of-animal in detail
  @subsection The @code{type-of-animal} Function in Detail
  
  Let's look at the @code{type-of-animal} function in detail.
@@@ -4061,7 -4111,8 +4061,7 @@@ argument @code{zebra} is passed to @cod
  is not equal to @code{fierce}, so the then-part is not evaluated and
  @code{nil} is returned by the @code{if} expression.
  
 -@node else, Truth & Falsehood, if, Writing Defuns
 -@comment  node-name,  next,  previous,  up
 +@node else
  @section If--then--else Expressions
  @cindex Else
  
@@@ -4149,7 -4200,8 +4149,7 @@@ misleading!  When you write code, you n
  possibility that some such argument will be tested by the @code{if}
  and write your program accordingly.)
  
 -@node Truth & Falsehood, save-excursion, else, Writing Defuns
 -@comment  node-name,  next,  previous,  up
 +@node Truth & Falsehood
  @section Truth and Falsehood in Emacs Lisp
  @cindex Truth and falsehood in Emacs Lisp
  @cindex Falsehood and truth in Emacs Lisp
@@@ -4172,8 -4224,8 +4172,8 @@@ long as it is not empty), or even a buf
  * nil explained::               @code{nil} has two meanings.
  @end menu
  
 -@node nil explained,  , Truth & Falsehood, Truth & Falsehood
  @ifnottex
 +@node nil explained
  @unnumberedsubsec An explanation of @code{nil}
  @end ifnottex
  
@@@ -4236,7 -4288,8 +4236,7 @@@ On the other hand, this function return
  (> 4 5)
  @end smallexample
  
 -@node save-excursion, Review, Truth & Falsehood, Writing Defuns
 -@comment  node-name,  next,  previous,  up
 +@node save-excursion
  @section @code{save-excursion}
  @findex save-excursion
  @cindex Region, what it is
@@@ -4260,8 -4313,8 +4260,8 @@@ unexpected movement of point or mark
  * Template for save-excursion::
  @end menu
  
 -@node Point and mark, Template for save-excursion, save-excursion, save-excursion
  @ifnottex
 +@node Point and mark
  @unnumberedsubsec Point and Mark
  @end ifnottex
  
@@@ -4318,7 -4371,8 +4318,7 @@@ have @code{save-excursion} switch you b
  This is how @code{save-excursion} is used in @code{append-to-buffer}.
  (@xref{append-to-buffer, , The Definition of @code{append-to-buffer}}.)
  
 -@node Template for save-excursion,  , Point and mark, save-excursion
 -@comment  node-name,  next,  previous,  up
 +@node Template for save-excursion
  @subsection Template for a @code{save-excursion} Expression
  
  @need 800
@@@ -4369,7 -4423,8 +4369,7 @@@ within the body of a @code{let} express
  @end group
  @end smallexample
  
 -@node Review, defun Exercises, save-excursion, Writing Defuns
 -@comment  node-name,  next,  previous,  up
 +@node Review
  @section Review
  
  In the last few chapters we have introduced a fair number of functions
@@@ -4622,7 -4677,7 +4622,7 @@@ effect
  @end table
  
  @need 1500
 -@node defun Exercises,  , Review, Writing Defuns
 +@node defun Exercises
  @section Exercises
  
  @itemize @bullet
@@@ -4636,7 -4691,8 +4636,7 @@@ Write a function that tests whether th
  and if so, prints an appropriate message.
  @end itemize
  
 -@node Buffer Walk Through, More Complex, Writing Defuns, Top
 -@comment  node-name,  next,  previous,  up
 +@node Buffer Walk Through
  @chapter A Few Buffer--Related Functions
  
  In this chapter we study in detail several of the functions used in GNU
@@@ -4658,7 -4714,7 +4658,7 @@@ buffers.  Later, we will study other fu
  * Buffer Exercises::
  @end menu
  
 -@node Finding More, simplified-beginning-of-buffer, Buffer Walk Through, Buffer Walk Through
 +@node Finding More
  @section Finding More Information
  
  @findex describe-function, @r{introduced}
@@@ -4754,7 -4810,8 +4754,7 @@@ In @cite{The GNU Emacs Manual}, you wil
  @kbd{C-h p} command lets you search the standard Emacs Lisp libraries
  by topic keywords.''
  
 -@node simplified-beginning-of-buffer, mark-whole-buffer, Finding More, Buffer Walk Through
 -@comment  node-name,  next,  previous,  up
 +@node simplified-beginning-of-buffer
  @section A Simplified @code{beginning-of-buffer} Definition
  @findex simplified-beginning-of-buffer
  
@@@ -4882,7 -4939,8 +4882,7 @@@ the @code{beginning-of-buffer} definiti
  function contains the expression @code{(goto-char (point-max))} in place
  of @code{(goto-char (point-min))}.
  
 -@node mark-whole-buffer, append-to-buffer, simplified-beginning-of-buffer, Buffer Walk Through
 -@comment  node-name,  next,  previous,  up
 +@node mark-whole-buffer
  @section The Definition of @code{mark-whole-buffer}
  @findex mark-whole-buffer
  
@@@ -4901,8 -4959,8 +4901,8 @@@ h}
  * 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
  @ifnottex
 +@node mark-whole-buffer overview
  @unnumberedsubsec An overview of @code{mark-whole-buffer}
  @end ifnottex
  
@@@ -4948,7 -5006,8 +4948,7 @@@ to the @code{simplified-beginning-of-bu
  previous section.
  
  @need 1250
 -@node Body of mark-whole-buffer,  , mark-whole-buffer overview, mark-whole-buffer
 -@comment  node-name,  next,  previous,  up
 +@node Body of mark-whole-buffer
  @subsection Body of @code{mark-whole-buffer}
  
  The body of the @code{mark-whole-buffer} function consists of three
@@@ -5021,7 -5080,8 +5021,7 @@@ result of this, point is placed at the 
  is set at the end of the buffer.  The whole buffer is, therefore, the
  region.
  
 -@node append-to-buffer, Buffer Related Review, mark-whole-buffer, Buffer Walk Through
 -@comment  node-name,  next,  previous,  up
 +@node append-to-buffer
  @section The Definition of @code{append-to-buffer}
  @findex append-to-buffer
  
@@@ -5037,8 -5097,8 +5037,8 @@@ current buffer to a specified buffer
  * append save-excursion::       How the @code{save-excursion} works.
  @end menu
  
 -@node append-to-buffer overview, append interactive, append-to-buffer, append-to-buffer
  @ifnottex
 +@node append-to-buffer overview
  @unnumberedsubsec An Overview of @code{append-to-buffer}
  @end ifnottex
  
@@@ -5118,7 -5178,8 +5118,7 @@@ described in the same order as in the a
  Note that the documentation distinguishes between a buffer and its
  name.  (The function can handle either.)
  
 -@node append interactive, append-to-buffer body, append-to-buffer overview, append-to-buffer
 -@comment  node-name,  next,  previous,  up
 +@node append interactive
  @subsection The @code{append-to-buffer} Interactive Expression
  
  Since the @code{append-to-buffer} function will be used interactively,
@@@ -5186,7 -5247,8 +5186,7 @@@ two arguments that follow the symbol @c
  argument list (that is, @code{start} and @code{end}) to the values of
  point and mark.  That argument worked fine.)
  
 -@node append-to-buffer body, append save-excursion, append interactive, append-to-buffer
 -@comment  node-name,  next,  previous,  up
 +@node append-to-buffer body
  @subsection The Body of @code{append-to-buffer}
  
  @ignore
@@@ -5285,7 -5347,8 +5285,7 @@@ not realize that the first parenthesis 
  boundary of the varlist and the second parenthesis marks the beginning
  of the two-element list, @code{(oldbuf (current-buffer))}.
  
 -@node append save-excursion,  , append-to-buffer body, append-to-buffer
 -@comment  node-name,  next,  previous,  up
 +@node append save-excursion
  @subsection @code{save-excursion} in @code{append-to-buffer}
  
  The body of the @code{let} expression in @code{append-to-buffer}
@@@ -5462,7 -5525,8 +5462,7 @@@ complex function.  It shows how to use 
  buffer.  Many function definitions use @code{let},
  @code{save-excursion}, and @code{set-buffer} this way.
  
 -@node Buffer Related Review, Buffer Exercises, append-to-buffer, Buffer Walk Through
 -@comment  node-name,  next,  previous,  up
 +@node Buffer Related Review
  @section Review
  
  Here is a brief summary of the various functions discussed in this chapter.
@@@ -5514,7 -5578,7 +5514,7 @@@ buffer does not exist
  @end table
  
  @need 1500
 -@node Buffer Exercises,  , Buffer Related Review, Buffer Walk Through
 +@node Buffer Exercises
  @section Exercises
  
  @itemize @bullet
@@@ -5531,7 -5595,8 +5531,7 @@@ Using @code{find-tag}, find the source 
  function.
  @end itemize
  
 -@node More Complex, Narrowing & Widening, Buffer Walk Through, Top
 -@comment  node-name,  next,  previous,  up
 +@node More Complex
  @chapter A Few More Complex Functions
  
  In this chapter, we build on what we have learned in previous chapters
@@@ -5551,7 -5616,8 +5551,7 @@@ to which the name refers
  * optional Exercise::
  @end menu
  
 -@node copy-to-buffer, insert-buffer, More Complex, More Complex
 -@comment  node-name,  next,  previous,  up
 +@node copy-to-buffer
  @section The Definition of @code{copy-to-buffer}
  @findex copy-to-buffer
  
@@@ -5629,7 -5695,8 +5629,7 @@@ In outline, the body of @code{copy-to-b
  @end group
  @end smallexample
  
 -@node insert-buffer, beginning-of-buffer, copy-to-buffer, More Complex
 -@comment  node-name,  next,  previous,  up
 +@node insert-buffer
  @section The Definition of @code{insert-buffer}
  @findex insert-buffer
  
@@@ -5658,8 -5725,8 +5658,8 @@@ between the name of an object and the o
  * New insert-buffer::
  @end menu
  
 -@node insert-buffer code, insert-buffer interactive, insert-buffer, insert-buffer
  @ifnottex
 +@node insert-buffer code
  @unnumberedsubsec The Code for @code{insert-buffer}
  @end ifnottex
  
@@@ -5703,7 -5770,8 +5703,7 @@@ outline of the function
  @end group
  @end smallexample
  
 -@node insert-buffer interactive, insert-buffer body, insert-buffer code, insert-buffer
 -@comment  node-name,  next,  previous,  up
 +@node insert-buffer interactive
  @subsection The Interactive Expression in @code{insert-buffer}
  @findex interactive, @r{example use of}
  
@@@ -5716,7 -5784,8 +5716,7 @@@ buffer:@: }
  * 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
 -@comment  node-name,  next,  previous,  up
 +@node Read-only buffer
  @unnumberedsubsubsec A Read-only Buffer
  @cindex Read-only buffer
  @cindex Asterisk for read-only buffer
@@@ -5730,7 -5799,8 +5730,7 @@@ may beep or blink at you; you will not 
  into current buffer.  The asterisk does not need to be followed by a
  newline to separate it from the next argument.
  
 -@node b for interactive,  , Read-only buffer, insert-buffer interactive
 -@comment  node-name,  next,  previous,  up
 +@node b for interactive
  @unnumberedsubsubsec @samp{b} in an Interactive Expression
  
  The next argument in the interactive expression starts with a lower
@@@ -5750,7 -5820,8 +5750,7 @@@ It uses the @code{barf-if-buffer-read-o
  functions with which we are already familiar and the @code{progn}
  special form with which we are not.  (It will be described later.)
  
 -@node insert-buffer body, if & or, insert-buffer interactive, insert-buffer
 -@comment  node-name,  next,  previous,  up
 +@node insert-buffer body
  @subsection The Body of the @code{insert-buffer} Function
  
  The body of the @code{insert-buffer} function has two major parts: an
@@@ -5785,7 -5856,8 +5785,7 @@@ is first necessary to understand the @c
  Before doing this, let me rewrite this part of the function using
  @code{if} so that you can see what is done in a manner that will be familiar.
  
 -@node if & or, Insert or, insert-buffer body, insert-buffer
 -@comment  node-name,  next,  previous,  up
 +@node if & or
  @subsection @code{insert-buffer} With an @code{if} Instead of an @code{or}
  
  The job to be done is to make sure the value of @code{buffer} is a
@@@ -5865,7 -5937,8 +5865,7 @@@ buffer itself, given its name.  The @co
  @code{buffer} to the value of the buffer itself, replacing its previous
  value (which was the name of the buffer).
  
 -@node Insert or, Insert let, if & or, insert-buffer
 -@comment  node-name,  next,  previous,  up
 +@node Insert or
  @subsection The @code{or} in the Body
  
  The purpose of the @code{or} expression in the @code{insert-buffer}
@@@ -5923,7 -5996,8 +5923,7 @@@ written like this
  (or (holding-on-to-guest) (find-and-take-arm-of-guest))
  @end smallexample
  
 -@node Insert let, New insert-buffer, Insert or, insert-buffer
 -@comment  node-name,  next,  previous,  up
 +@node Insert let
  @subsection The @code{let} Expression in @code{insert-buffer}
  
  After ensuring that the variable @code{buffer} refers to a buffer itself
@@@ -6021,7 -6095,8 +6021,7 @@@ function uses @code{let}, @code{save-ex
  use @code{or}.  All these functions are building blocks that we will
  find and use again and again.
  
 -@node New insert-buffer,  , Insert let, insert-buffer
 -@comment  node-name,  next,  previous,  up
 +@node New insert-buffer
  @subsection New Body for @code{insert-buffer}
  @findex insert-buffer, new version body
  @findex new version body for insert-buffer
@@@ -6059,7 -6134,8 +6059,7 @@@ its last command.  Put another way, th
  exists only to produce a side effect, inserting another buffer, not to
  return any value.
  
 -@node beginning-of-buffer, Second Buffer Related Review, insert-buffer, More Complex
 -@comment  node-name,  next,  previous,  up
 +@node beginning-of-buffer
  @section Complete Definition of @code{beginning-of-buffer}
  @findex beginning-of-buffer
  
@@@ -6091,7 -6167,7 +6091,7 @@@ argument.  The use of the argument is o
  * beginning-of-buffer complete::
  @end menu
  
 -@node Optional Arguments, beginning-of-buffer opt arg, beginning-of-buffer, beginning-of-buffer
 +@node Optional Arguments
  @subsection Optional Arguments
  
  Unless told otherwise, Lisp expects that a function with an argument in
@@@ -6174,7 -6250,7 +6174,7 @@@ simply @code{point-min}, and when this 
  is how we saw the @code{beginning-of-buffer} function in its
  simplified form.
  
 -@node beginning-of-buffer opt arg, beginning-of-buffer complete, Optional Arguments, beginning-of-buffer
 +@node beginning-of-buffer opt arg
  @subsection @code{beginning-of-buffer} with an Argument
  
  When @code{beginning-of-buffer} is called with an argument, an
@@@ -6202,8 -6278,8 +6202,8 @@@ like this
  * Small buffer case::
  @end menu
  
 -@node Disentangle beginning-of-buffer, Large buffer case, beginning-of-buffer opt arg, beginning-of-buffer opt arg
  @ifnottex
 +@node Disentangle beginning-of-buffer
  @unnumberedsubsubsec Disentangle @code{beginning-of-buffer}
  @end ifnottex
  
@@@ -6232,7 -6308,8 +6232,7 @@@ that are far, far larger than ever befo
  
  There are two cases:  if the buffer is large and if it is not.
  
 -@node Large buffer case, Small buffer case, Disentangle beginning-of-buffer, beginning-of-buffer opt arg
 -@comment  node-name,  next,  previous,  up
 +@node Large buffer case
  @unnumberedsubsubsec What happens in a large buffer
  
  In @code{beginning-of-buffer}, the inner @code{if} expression tests
@@@ -6315,7 -6392,8 +6315,7 @@@ is large, the @code{goto-char} expressi
  
  This puts the cursor where we want it.
  
 -@node Small buffer case,  , Large buffer case, beginning-of-buffer opt arg
 -@comment  node-name,  next,  previous,  up
 +@node Small buffer case
  @unnumberedsubsubsec What happens in a small buffer
  
  If the buffer contains fewer than 10,000 characters, a slightly
@@@ -6372,7 -6450,8 +6372,7 @@@ The number that results from all this i
  the cursor is moved to that point.
  
  @need 1500
 -@node beginning-of-buffer complete,  , beginning-of-buffer opt arg, beginning-of-buffer
 -@comment  node-name,  next,  previous,  up
 +@node beginning-of-buffer complete
  @subsection The Complete @code{beginning-of-buffer}
  
  @need 1000
@@@ -6500,7 -6579,8 +6500,7 @@@ beginning of the second line @dots{}  
  intended or whether no one has dealt with the code to avoid this
  happening.
  
 -@node Second Buffer Related Review, optional Exercise, beginning-of-buffer, More Complex
 -@comment  node-name,  next,  previous,  up
 +@node Second Buffer Related Review
  @section Review
  
  Here is a brief summary of some of the topics covered in this chapter.
@@@ -6543,7 -6623,7 +6543,7 @@@ Delete the entire contents of the curre
  Return @code{t} if its argument is a buffer; otherwise return @code{nil}.
  @end table
  
 -@node optional Exercise,  , Second Buffer Related Review, More Complex
 +@node optional Exercise
  @section @code{optional} Argument Exercise
  
  Write an interactive function with an optional argument that tests
@@@ -6552,7 -6632,8 +6552,7 @@@ less than the value of @code{fill-colum
  message.  However, if you do not pass an argument to the function, use
  56 as a default value.
  
 -@node Narrowing & Widening, car cdr & cons, More Complex, Top
 -@comment  node-name,  next,  previous,  up
 +@node Narrowing & Widening
  @chapter Narrowing and Widening
  @cindex Focusing attention (narrowing)
  @cindex Narrowing
@@@ -6570,8 -6651,8 +6570,8 @@@ novices
  * narrow Exercise::
  @end menu
  
 -@node Narrowing advantages, save-restriction, Narrowing & Widening, Narrowing & Widening
  @ifnottex
 +@node Narrowing advantages
  @unnumberedsec The Advantages of Narrowing
  @end ifnottex
  
@@@ -6600,12 -6681,13 +6600,12 @@@ buffer; or conversely, an Emacs Lisp fu
  buffer that has been narrowed.  The @code{what-line} function, for
  example, removes the narrowing from a buffer, if it has any narrowing
  and when it has finished its job, restores the narrowing to what it was.
- On the other hand, the @code{count-lines} function, which is called by
@code{what-line}, uses narrowing to restrict itself to just that portion
+ On the other hand, the @code{count-lines} function
+ uses narrowing to restrict itself to just that portion
  of the buffer in which it is interested and then restores the previous
  situation.
  
 -@node save-restriction, what-line, Narrowing advantages, Narrowing & Widening
 -@comment  node-name,  next,  previous,  up
 +@node save-restriction
  @section The @code{save-restriction} Special Form
  @findex save-restriction
  
@@@ -6722,7 -6804,8 +6722,7 @@@ and the greater of them is not at the s
          (- (buffer-size) (forward-line (buffer-size)))))))
  @end ignore
  
 -@node what-line, narrow Exercise, save-restriction, Narrowing & Widening
 -@comment  node-name,  next,  previous,  up
 +@node what-line
  @section @code{what-line}
  @findex what-line
  @cindex Widening, example of
@@@ -6855,7 -6938,7 +6855,7 @@@ printed in the echo area, the @code{sav
  mark to their original positions; and @code{save-restriction} restores
  the original narrowing, if any.
  
 -@node narrow Exercise,  , what-line, Narrowing & Widening
 +@node narrow Exercise
  @section Exercise with Narrowing
  
  Write a function that will display the first 60 characters of the
@@@ -6878,7 -6961,8 +6878,7 @@@ Manual}.
  Additionally, do you really need @code{goto-char} or @code{point-min}?
  Or can you write the function without them?
  
 -@node car cdr & cons, Cutting & Storing Text, Narrowing & Widening, Top
 -@comment  node-name,  next,  previous,  up
 +@node car cdr & cons
  @chapter @code{car}, @code{cdr}, @code{cons}: Fundamental Functions
  @findex car, @r{introduced}
  @findex cdr, @r{introduced}
@@@ -6902,8 -6986,8 +6902,8 @@@ namely, @code{setcdr} and @code{nthcdr}
  * cons Exercise::
  @end menu
  
 -@node Strange Names, car & cdr, car cdr & cons, car cdr & cons
  @ifnottex
 +@node Strange Names
  @unnumberedsec Strange Names
  @end ifnottex
  
@@@ -6922,7 -7006,8 +6922,7 @@@ functions, the old terms are still in u
  terms are used in the Emacs Lisp source code, we will use them in this
  introduction.
  
 -@node car & cdr, cons, Strange Names, car cdr & cons
 -@comment  node-name,  next,  previous,  up
 +@node car & cdr
  @section @code{car} and @code{cdr}
  
  The @sc{car} of a list is, quite simply, the first item in the list.
@@@ -7044,7 -7129,8 +7044,7 @@@ together or construct a list, but not a
  by array-specific functions.  @xref{Arrays, , Arrays, elisp, The GNU
  Emacs Lisp Reference Manual}.)
  
 -@node cons, nthcdr, car & cdr, car cdr & cons
 -@comment  node-name,  next,  previous,  up
 +@node cons
  @section @code{cons}
  @findex cons, @r{introduced}
  
@@@ -7081,8 -7167,8 +7081,8 @@@ Like @code{car} and @code{cdr}, @code{c
  * length::                      How to find the length of a list.
  @end menu
  
 -@node Build a list, length, cons, cons
  @ifnottex
 +@node Build a list
  @unnumberedsubsec Build a list
  @end ifnottex
  
@@@ -7132,7 -7218,8 +7132,7 @@@ two element list by putting @code{daisy
  and the third example constructs a three element list by putting
  @code{violet} in front of @code{daisy} and @code{buttercup}.
  
 -@node length,  , Build a list, cons
 -@comment  node-name,  next,  previous,  up
 +@node length
  @subsection Find the Length of a List: @code{length}
  @findex length
  
@@@ -7213,7 -7300,8 +7213,7 @@@ In an earlier version
      about subroutines.
  @end ignore
  
 -@node nthcdr, nth, cons, car cdr & cons
 -@comment  node-name,  next,  previous,  up
 +@node nthcdr
  @section @code{nthcdr}
  @findex nthcdr
  
@@@ -7337,7 -7425,8 +7337,7 @@@ and 5
  @end group
  @end smallexample
  
 -@node nth, setcar, nthcdr, car cdr & cons
 -@comment  node-name,  next,  previous,  up
 +@node nth
  @section @code{nth}
  @findex nth
  
@@@ -7389,7 -7478,8 +7389,7 @@@ It is worth mentioning that @code{nth}
  non-destructive.  This is in sharp contrast to the @code{setcar} and
  @code{setcdr} functions.
  
 -@node setcar, setcdr, nth, car cdr & cons
 -@comment  node-name,  next,  previous,  up
 +@node setcar
  @section @code{setcar}
  @findex setcar
  
@@@ -7464,7 -7554,8 +7464,7 @@@ So we can see that @code{setcar} did no
  as @code{cons} would have; it replaced @code{antelope} with
  @code{hippopotamus}; it @emph{changed} the list.
  
 -@node setcdr, cons Exercise, setcar, car cdr & cons
 -@comment  node-name,  next,  previous,  up
 +@node setcdr
  @section @code{setcdr}
  @findex setcdr
  
@@@ -7523,7 -7614,7 +7523,7 @@@ Indeed, the list is changed from @code{
  @code{(horse cat dog)}.  The @sc{cdr} of the list is changed from
  @code{(cow sheep goat)} to @code{(cat dog)}.
  
 -@node cons Exercise,  , setcdr, car cdr & cons
 +@node cons Exercise
  @section Exercise
  
  Construct a list of four birds by evaluating several expressions with
  itself.  Replace the first element of the list of four birds with a
  fish.  Replace the rest of that list with a list of other fish.
  
 -@node Cutting & Storing Text, List Implementation, car cdr & cons, Top
 -@comment  node-name,  next,  previous,  up
 +@node Cutting & Storing Text
  @chapter Cutting and Storing Text
  @cindex Cutting and storing text
  @cindex Storing and cutting text
@@@ -7563,8 -7655,8 +7563,8 @@@ sources with `clip' and all occurrence
  * search Exercises::
  @end menu
  
 -@node Storing Text, zap-to-char, Cutting & Storing Text, Cutting & Storing Text
  @ifnottex
 +@node Storing Text
  @unnumberedsec Storing Text in a List
  @end ifnottex
  
@@@ -7630,7 -7722,8 +7630,7 @@@ climb the foothills
  A subsequent chapter describes how text that is cut from the buffer is
  retrieved.  @xref{Yanking, , Yanking Text Back}.
  
 -@node zap-to-char, kill-region, Storing Text, Cutting & Storing Text
 -@comment  node-name,  next,  previous,  up
 +@node zap-to-char
  @section @code{zap-to-char}
  @findex zap-to-char
  
@@@ -7658,8 -7751,8 +7658,8 @@@ But first, let us look at the interacti
  * 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
  @ifnottex
 +@node Complete zap-to-char
  @unnumberedsubsec The Complete @code{zap-to-char} Implementation
  @end ifnottex
  
@@@ -7719,7 -7812,8 +7719,7 @@@ Goes backward if ARG is negative; erro
  The documentation is thorough.  You do need to know the jargon meaning
  of the word `kill'.
  
 -@node zap-to-char interactive, zap-to-char body, Complete zap-to-char, zap-to-char
 -@comment  node-name,  next,  previous,  up
 +@node zap-to-char interactive
  @subsection The @code{interactive} Expression
  
  @need 800
@@@ -7754,7 -7848,8 +7754,7 @@@ to the kill ring, but does not remove i
  message saying that the buffer is read-only.  Also, the terminal may
  beep or blink at you.
  
 -@node zap-to-char body, search-forward, zap-to-char interactive, zap-to-char
 -@comment  node-name,  next,  previous,  up
 +@node zap-to-char body
  @subsection The Body of @code{zap-to-char}
  
  The body of the @code{zap-to-char} function contains the code that
@@@ -7792,7 -7887,8 +7792,7 @@@ It is easier to understand how @code{pr
  @code{search-forward}, so we will look at @code{search-forward} and
  then at @code{progn}.
  
 -@node search-forward, progn, zap-to-char body, zap-to-char
 -@comment  node-name,  next,  previous,  up
 +@node search-forward
  @subsection The @code{search-forward} Function
  @findex search-forward
  
@@@ -7867,7 -7963,8 +7867,7 @@@ In template form, a @code{search-forwar
  
  We will look at @code{progn} next.
  
 -@node progn, Summing up zap-to-char, search-forward, zap-to-char
 -@comment  node-name,  next,  previous,  up
 +@node progn
  @subsection The @code{progn} Special Form
  @findex progn
  
@@@ -7907,7 -8004,8 +7907,7 @@@ ever a part of the distributed source.
  returned by the @code{progn} expression and is passed to
  @code{kill-region} as @code{kill-region}'s second argument.
  
 -@node Summing up zap-to-char,  , progn, zap-to-char
 -@comment  node-name,  next,  previous,  up
 +@node Summing up zap-to-char
  @subsection Summing up @code{zap-to-char}
  
  Now that we have seen how @code{search-forward} and @code{progn} work,
@@@ -7928,7 -8026,8 +7928,7 @@@ sequence as two additional arguments.  
  a single argument to @code{kill-region} and returns the one value that
  @code{kill-region} needs for its second argument.
  
 -@node kill-region, copy-region-as-kill, zap-to-char, Cutting & Storing Text
 -@comment  node-name,  next,  previous,  up
 +@node kill-region
  @section @code{kill-region}
  @findex kill-region
  
@@@ -8012,8 -8111,8 +8012,8 @@@ contains the code that is called in th
  * Lisp macro::
  @end menu
  
 -@node Complete kill-region, condition-case, kill-region, kill-region
  @ifnottex
 +@node Complete kill-region
  @unnumberedsubsec The Complete @code{kill-region} Definition
  @end ifnottex
  
@@@ -8200,7 -8299,8 +8200,7 @@@ The text is deleted but saved in the ki
  @end smallexample
  @end ignore
  
 -@node condition-case, Lisp macro, Complete kill-region, kill-region
 -@comment  node-name,  next,  previous,  up
 +@node condition-case
  @subsection @code{condition-case}
  @findex condition-case
  
@@@ -8286,7 -8386,8 +8286,7 @@@ this is line 805
  Initializing a Variable with @code{defvar} includes line 8350
  @end ignore
  
 -@node Lisp macro,  , condition-case, kill-region
 -@comment  node-name,  next,  previous,  up
 +@node Lisp macro
  @subsection Lisp macro
  @cindex Macro, lisp
  @cindex Lisp macro
@@@ -8357,7 -8458,8 +8357,7 @@@ whether the previous command was @code{
  concatenates a copy of the newly clipped text to the just previously
  clipped text in the kill ring.
  
 -@node copy-region-as-kill, Digression into C, kill-region, Cutting & Storing Text
 -@comment  node-name,  next,  previous,  up
 +@node copy-region-as-kill
  @section @code{copy-region-as-kill}
  @findex copy-region-as-kill
  @findex nthcdr
@@@ -8378,8 -8480,8 +8378,8 @@@ the function copies the text into a sep
  * 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
  @ifnottex
 +@node Complete copy-region-as-kill
  @unnumberedsubsec The complete @code{copy-region-as-kill} function definition
  @end ifnottex
  
@@@ -8457,7 -8559,8 +8457,7 @@@ if Transient Mark mode is turned on
  
  The body of @code{copy-region-as-kill} merits discussion in detail.
  
 -@node copy-region-as-kill body,  , Complete copy-region-as-kill, copy-region-as-kill
 -@comment  node-name,  next,  previous,  up
 +@node copy-region-as-kill body
  @subsection The Body of @code{copy-region-as-kill}
  
  The @code{copy-region-as-kill} function works in much the same way as
@@@ -8480,8 -8583,8 +8480,8 @@@ previous Emacs command
  * kill-new function::
  @end menu
  
 -@node last-command & this-command, kill-append function, copy-region-as-kill body, copy-region-as-kill body
  @ifnottex
 +@node last-command & this-command
  @unnumberedsubsubsec @code{last-command} and @code{this-command}
  @end ifnottex
  
@@@ -8536,7 -8639,7 +8536,7 @@@ expressions are the same
  If the previous command was @code{kill-region}, then the Emacs Lisp
  interpreter calls the @code{kill-append} function
  
 -@node kill-append function, kill-new function, last-command & this-command, copy-region-as-kill body
 +@node kill-append function
  @unnumberedsubsubsec The @code{kill-append} function
  @findex kill-append
  
@@@ -8668,7 -8771,7 +8668,7 @@@ of the kill ring.  The kill ring is a l
  saved text.  The @code{kill-append} function uses the @code{kill-new}
  function which in turn uses the @code{setcar} function.
  
 -@node kill-new function,  , kill-append function, copy-region-as-kill body
 +@node kill-new function
  @unnumberedsubsubsec The @code{kill-new} function
  @findex kill-new
  
@@@ -9097,7 -9200,8 +9097,7 @@@ delete-and-extract-region is written i
  see Initializing a Variable with @code{defvar}
  @end ignore
  
 -@node Digression into C, defvar, copy-region-as-kill, Cutting & Storing Text
 -@comment  node-name,  next,  previous,  up
 +@node Digression into C
  @section Digression into C
  @findex delete-and-extract-region
  @cindex C, a digression into
@@@ -9262,7 -9366,8 +9262,7 @@@ From the point of view of the person wr
  simple; but hidden underneath is a great deal of complexity to make it
  all work.
  
 -@node defvar, cons & search-fwd Review, Digression into C, Cutting & Storing Text
 -@comment  node-name,  next,  previous,  up
 +@node defvar
  @section Initializing a Variable with @code{defvar}
  @findex defvar
  @cindex Initializing a variable
@@@ -9311,8 -9416,8 +9311,8 @@@ that people customize.  It has more fea
  * defvar and asterisk::
  @end menu
  
 -@node See variable current value, defvar and asterisk, defvar, defvar
  @ifnottex
 +@node See variable current value
  @unnumberedsubsec Seeing the Current Value of a Variable
  @end ifnottex
  
@@@ -9363,7 -9468,7 +9363,7 @@@ like @code{apropos}, print only the fir
  Succeeding lines should not be indented; otherwise they look odd when
  you use @kbd{C-h v} (@code{describe-variable}).
  
 -@node defvar and asterisk,  , See variable current value, defvar
 +@node defvar and asterisk
  @subsection @code{defvar} and an asterisk
  @findex defvar @r{for a user customizable variable}
  @findex defvar @r{with an asterisk}
@@@ -9409,7 -9514,8 +9409,7 @@@ readily.  Fortunately, you can press @k
  The GNU Emacs Manual}.)
  
  @need 1250
 -@node cons & search-fwd Review, search Exercises, defvar, Cutting & Storing Text
 -@comment  node-name,  next,  previous,  up
 +@node cons & search-fwd Review
  @section Review
  
  Here is a brief summary of some recently introduced functions.
@@@ -9558,7 -9664,7 +9558,7 @@@ mark from the buffer and throws it away
  (This is not an interactive command.)
  
  @need 1500
 -@node search Exercises,  , cons & search-fwd Review, Cutting & Storing Text
 +@node search Exercises
  @section Searching Exercises
  
  @itemize @bullet
@@@ -9576,7 -9682,8 +9576,7 @@@ echo area, if any; if the kill ring doe
  print an appropriate message.
  @end itemize
  
 -@node List Implementation, Yanking, Cutting & Storing Text, Top
 -@comment  node-name,  next,  previous,  up
 +@node List Implementation
  @chapter How Lists are Implemented
  @cindex Lists in a computer
  
@@@ -9600,8 -9707,8 +9600,8 @@@ pointed to.  Hence, a list is kept as 
  * List Exercise::
  @end menu
  
 -@node Lists diagrammed, Symbols as Chest, List Implementation, List Implementation
  @ifnottex
 +@node Lists diagrammed
  @unnumberedsec Lists diagrammed
  @end ifnottex
  
@@@ -9940,7 -10047,7 +9940,7 @@@ is the address of the empty list, of @c
  In summary, when a Lisp variable is set to a value, it is provided with
  the address of the list to which the variable refers.
  
 -@node Symbols as Chest, List Exercise, Lists diagrammed, List Implementation
 +@node Symbols as Chest
  @section Symbols as a Chest of Drawers
  @cindex Symbols as a Chest of Drawers
  @cindex Chest of Drawers, metaphor for a symbol
@@@ -10041,7 -10148,7 +10041,7 @@@ Here is a fanciful representation
  @end iftex
  @end ifclear
  
 -@node List Exercise,  , Symbols as Chest, List Implementation
 +@node List Exercise
  @section Exercise
  
  Set @code{flowers} to @code{violet} and @code{buttercup}.  Cons two
@@@ -10049,7 -10156,8 +10049,7 @@@ more flowers on to this list and set th
  @code{more-flowers}.  Set the @sc{car} of @code{flowers} to a fish.
  What does the @code{more-flowers} list now contain?
  
 -@node Yanking, Loops & Recursion, List Implementation, Top
 -@comment  node-name,  next,  previous,  up
 +@node Yanking
  @chapter Yanking Text Back
  @findex yank
  @cindex Text retrieval
@@@ -10080,7 -10188,8 +10080,7 @@@ list is handled as a ring.
  * yank nthcdr Exercises::       The @code{kill-ring-yank-pointer} variable.
  @end menu
  
 -@node Kill Ring Overview, kill-ring-yank-pointer, Yanking, Yanking
 -@comment  node-name,  next,  previous,  up
 +@node Kill Ring Overview
  @section Kill Ring Overview
  @cindex Kill ring overview
  
@@@ -10123,7 -10232,8 +10123,7 @@@ is easier to understand.
  To begin to understand how @code{yank} and @code{yank-pop} work, it is
  first necessary to look at the @code{kill-ring-yank-pointer} variable.
  
 -@node kill-ring-yank-pointer, yank nthcdr Exercises, Kill Ring Overview, Yanking
 -@comment  node-name,  next,  previous,  up
 +@node kill-ring-yank-pointer
  @section The @code{kill-ring-yank-pointer} Variable
  
  @code{kill-ring-yank-pointer} is a variable, just as @code{kill-ring} is
@@@ -10262,7 -10372,7 +10262,7 @@@ yanking point; just return the Nth kil
  @end ignore
  
  @need 1500
 -@node yank nthcdr Exercises,  , kill-ring-yank-pointer, Yanking
 +@node yank nthcdr Exercises
  @section Exercises with @code{yank} and @code{nthcdr}
  
  @itemize @bullet
@@@ -10279,7 -10389,8 +10279,7 @@@ Using @code{nthcdr} and @code{car}, con
  to return the first, second, third, and fourth elements of a list.
  @end itemize
  
 -@node Loops & Recursion, Regexp Search, Yanking, Top
 -@comment  node-name,  next,  previous,  up
 +@node Loops & Recursion
  @chapter Loops and Recursion
  @cindex Loops and recursion
  @cindex Recursion and loops
@@@ -10315,7 -10426,8 +10315,7 @@@ increase the values of @code{max-specpd
  * Looping exercise::
  @end menu
  
 -@node while, dolist dotimes, Loops & Recursion, Loops & Recursion
 -@comment  node-name,  next,  previous,  up
 +@node while
  @section @code{while}
  @cindex Loops
  @findex while
@@@ -10353,8 -10465,8 +10353,8 @@@ The template for a @code{while} express
  * Decrementing Loop::           A loop with a decrementing counter.
  @end menu
  
 -@node Looping with while, Loop Example, while, while
  @ifnottex
 +@node Looping with while
  @unnumberedsubsec Looping with @code{while}
  @end ifnottex
  
@@@ -10387,7 -10499,8 +10387,7 @@@ This makes sense.  It is not the mere a
  but the consequences of what happens when the expressions in the loop
  are repeatedly evaluated.
  
 -@node Loop Example, print-elements-of-list, Looping with while, while
 -@comment  node-name,  next,  previous,  up
 +@node Loop Example
  @subsection A @code{while} Loop and a List
  
  A common way to control a @code{while} loop is to test whether a list
@@@ -10491,7 -10604,7 +10491,7 @@@ This test and use of @code{cdr} can be 
  goes through a list and prints each element of the list on a line of its
  own.
  
 -@node print-elements-of-list, Incrementing Loop, Loop Example, while
 +@node print-elements-of-list
  @subsection An Example: @code{print-elements-of-list}
  @findex print-elements-of-list
  
@@@ -10570,7 -10683,8 +10570,7 @@@ function is printed.  Since the last ex
  @code{while} loop, and since @code{while} loops always return
  @code{nil}, a @code{nil} is printed after the last element of the list.
  
 -@node Incrementing Loop, Incrementing Loop Details, print-elements-of-list, while
 -@comment  node-name,  next,  previous,  up
 +@node Incrementing Loop
  @subsection A Loop with an Incrementing Counter
  
  A loop is not useful unless it stops when it ought.  Besides
@@@ -10580,8 -10694,8 +10580,8 @@@ number of repetitions are complete.  Th
  have a counter---an expression that counts how many times the loop
  repeats itself.
  
 -@node Incrementing Loop Details, Decrementing Loop, Incrementing Loop, while
  @ifnottex
 +@node Incrementing Loop Details
  @unnumberedsubsec Details of an Incrementing Loop
  @end ifnottex
  
@@@ -10619,7 -10733,7 +10619,7 @@@ is set to 1
  * Inc Example altogether::      Putting the function definition together.
  @end menu
  
 -@node Incrementing Example, Inc Example parts, Incrementing Loop Details, Incrementing Loop Details
 +@node Incrementing Example
  @unnumberedsubsubsec  Example with incrementing counter
  
  Suppose you are playing on the beach and decide to make a triangle of
@@@ -10686,7 -10800,7 +10686,7 @@@ row has been added to the total of all 
  complex loop the repetitive action might not be so simple, but it will
  be simpler than doing everything all at once.
  
 -@node Inc Example parts, Inc Example altogether, Incrementing Example, Incrementing Loop Details
 +@node Inc Example parts
  @unnumberedsubsubsec The parts of the function definition
  
  The preceding analysis gives us the bones of our function definition:
@@@ -10780,7 -10894,7 +10780,7 @@@ The built-in Emacs Lisp function @code{
  (setq row-number (1+ row-number))
  @end smallexample
  
 -@node Inc Example altogether,  , Inc Example parts, Incrementing Loop Details
 +@node Inc Example altogether
  @unnumberedsubsubsec Putting the function definition together
  
  We have created the parts for the function definition; now we need to
@@@ -10890,7 -11004,8 +10890,7 @@@ can try it out.  Here are two examples
  The sum of the first four numbers is 10 and the sum of the first seven
  numbers is 28.
  
 -@node Decrementing Loop,  , Incrementing Loop Details, while
 -@comment  node-name,  next,  previous,  up
 +@node Decrementing Loop
  @subsection Loop with a Decrementing Counter
  
  Another common way to write a @code{while} loop is to write the test
@@@ -10926,7 -11041,7 +10926,7 @@@ The template for a decrementing @code{w
  * Dec Example altogether::      Putting the function definition together.
  @end menu
  
 -@node Decrementing Example, Dec Example parts, Decrementing Loop, Decrementing Loop
 +@node Decrementing Example
  @unnumberedsubsubsec Example with decrementing counter
  
  To illustrate a loop with a decrementing counter, we will rewrite the
@@@ -10953,7 -11068,7 +10953,7 @@@ rows, the number of pebbles in the las
  many pebbles are in the preceding row: it is one less than the number in
  the row.
  
 -@node Dec Example parts, Dec Example altogether, Decrementing Example, Decrementing Loop
 +@node Dec Example parts
  @unnumberedsubsubsec The parts of the function definition
  
  We start with three variables: the total number of rows in the
@@@ -11015,7 -11130,7 +11015,7 @@@ the @code{while} loop is simply
  (while (> number-of-pebbles-in-row 0)
  @end smallexample
  
 -@node Dec Example altogether,  , Dec Example parts, Decrementing Loop
 +@node Dec Example altogether
  @unnumberedsubsubsec Putting the function definition together
  
  We can put these expressions together to create a function definition
@@@ -11086,7 -11201,8 +11086,7 @@@ that the test returns false after the l
  number of times.
  @end enumerate
  
 -@node dolist dotimes, Recursion, while, Loops & Recursion
 -@comment  node-name,  next,  previous,  up
 +@node dolist dotimes
  @section Save your time: @code{dolist} and @code{dotimes}
  
  In addition to @code{while}, both @code{dolist} and @code{dotimes}
@@@ -11106,8 -11222,8 +11106,8 @@@ each shorter version of the list to th
  * dotimes::
  @end menu
  
 -@node dolist, dotimes, dolist dotimes, dolist dotimes
 -@unnumberedsubsubsec The @code{dolist} Macro
 +@node dolist
 +@unnumberedsubsec The @code{dolist} Macro
  @findex dolist
  
  Suppose, for example, you want to reverse a list, so that
@@@ -11210,8 -11326,8 +11210,8 @@@ version of the list to @code{element} a
  the expression; and repeats the loop.  The result is returned in
  @code{value}.
  
 -@node dotimes,  , dolist, dolist dotimes
 -@unnumberedsubsubsec The @code{dotimes} Macro
 +@node dotimes
 +@unnumberedsubsec The @code{dotimes} Macro
  @findex dotimes
  
  The @code{dotimes} macro is similar to @code{dolist}, except that it
@@@ -11260,7 -11376,8 +11260,7 @@@ up the number of pebbles in a triangle
  @end group
  @end smallexample
  
 -@node Recursion, Looping exercise, dolist dotimes, Loops & Recursion
 -@comment  node-name,  next,  previous,  up
 +@node Recursion
  @section Recursion
  @cindex Recursion
  
@@@ -11286,7 -11403,8 +11286,7 @@@ arguments that the final instance will 
  * No deferment solution::
  @end menu
  
 -@node Building Robots, Recursive Definition Parts, Recursion, Recursion
 -@comment  node-name,  next,  previous,  up
 +@node Building Robots
  @subsection Building Robots: Extending the Metaphor
  @cindex Building robots
  @cindex Robots, building
@@@ -11323,7 -11441,8 +11323,7 @@@ does the same job as the first, but wit
  It is important that the arguments differ from one instance to the
  next; otherwise, the process will never stop.
  
 -@node Recursive Definition Parts, Recursion with list, Building Robots, Recursion
 -@comment  node-name,  next,  previous,  up
 +@node Recursive Definition Parts
  @subsection The Parts of a Recursive Definition
  @cindex Parts of a Recursive Definition
  @cindex Recursive Definition Parts
@@@ -11387,7 -11506,8 +11387,7 @@@ false when the function should no longe
  The do-again-test is sometimes called the @dfn{stop condition},
  since it stops the repetitions when it tests false.
  
 -@node Recursion with list, Recursive triangle function, Recursive Definition Parts, Recursion
 -@comment  node-name,  next,  previous,  up
 +@node Recursion with list
  @subsection Recursion with a List
  
  The example of a @code{while} loop that printed the elements of a list
  @end smallexample
  
  @need 2000
 -@node Recursive triangle function, Recursion with cond, Recursion with list, Recursion
 -@comment  node-name,  next,  previous,  up
 +@node Recursive triangle function
  @subsection Recursion in Place of a Counter
  @findex triangle-recursively
  
@@@ -11517,8 -11638,8 +11517,8 @@@ its argument
  * Recursive Example arg of 3 or 4::
  @end menu
  
 -@node Recursive Example arg of 1 or 2, Recursive Example arg of 3 or 4, Recursive triangle function, Recursive triangle function
  @ifnottex
 +@node Recursive Example arg of 1 or 2
  @unnumberedsubsubsec An argument of 1 or 2
  @end ifnottex
  
@@@ -11580,7 -11701,7 +11580,7 @@@ returned, which is correct.  A triangl
  pebbles in it.
  @end table
  
 -@node Recursive Example arg of 3 or 4,  , Recursive Example arg of 1 or 2, Recursive triangle function
 +@node Recursive Example arg of 3 or 4
  @unnumberedsubsubsec An argument of 3 or 4
  
  Suppose that @code{triangle-recursively} is called with an argument of
  There is a way around this kind of waiting, which we will discuss in
  @ref{No Deferment, , Recursion without Deferments}.
  
 -@node Recursion with cond, Recursive Patterns, Recursive triangle function, Recursion
 -@comment  node-name,  next,  previous,  up
 +@node Recursion with cond
  @subsection Recursion Example Using @code{cond}
  @findex cond
  
@@@ -11746,7 -11868,8 +11746,7 @@@ equal to 0, it returns 1 if the number 
  number (triangle-using-cond (1- number)))} if the number is greater than
  1.
  
 -@node Recursive Patterns, No Deferment, Recursion with cond, Recursion
 -@comment  node-name,  next,  previous,  up
 +@node Recursive Patterns
  @subsection Recursive Patterns
  @cindex Recursive Patterns
  
@@@ -11760,7 -11883,8 +11760,7 @@@ and this provides a sense of its prima
  * Keep::
  @end menu
  
 -@node Every, Accumulate, Recursive Patterns, Recursive Patterns
 -@comment  node-name,  next,  previous,  up
 +@node Every
  @unnumberedsubsubsec Recursive Pattern: @emph{every}
  @cindex Every, type of recursive pattern
  @cindex Recursive pattern: every
@@@ -11859,7 -11983,8 +11859,7 @@@ But when the list has at least one elem
      @end itemize
  @end itemize
  
 -@node Accumulate, Keep, Every, Recursive Patterns
 -@comment  node-name,  next,  previous,  up
 +@node Accumulate
  @unnumberedsubsubsec Recursive Pattern: @emph{accumulate}
  @cindex Accumulate, type of recursive pattern
  @cindex Recursive pattern: accumulate
@@@ -11910,7 -12035,8 +11910,7 @@@ Here is an example
  @xref{Files List, , Making a List of Files}, for an example of the
  accumulate pattern.
  
 -@node Keep,  , Accumulate, Recursive Patterns
 -@comment  node-name,  next,  previous,  up
 +@node Keep
  @unnumberedsubsubsec Recursive Pattern: @emph{keep}
  @cindex Keep, type of recursive pattern
  @cindex Recursive pattern: keep
@@@ -11979,7 -12105,7 +11979,7 @@@ Here is an example that uses @code{cond
  It goes without saying that you need not use @code{nil} as the test for
  when to stop; and you can, of course, combine these patterns.
  
 -@node No Deferment, No deferment solution, Recursive Patterns, Recursion
 +@node No Deferment
  @subsection Recursion without Deferments
  @cindex Deferment in recursion
  @cindex Recursion without Deferments
@@@ -12062,7 -12188,7 +12062,7 @@@ is being waited on.  This is not a prob
  steps, as in this example.  But it can be a problem when there are
  more steps.
  
 -@node No deferment solution,  , No Deferment, Recursion
 +@node No deferment solution
  @subsection No Deferment Solution
  @cindex No deferment solution
  @cindex Defermentless solution
@@@ -12226,7 -12352,7 +12226,7 @@@ This kind of pattern helps when you ar
  many resources in a computer.
  
  @need 1500
 -@node Looping exercise,  , Recursion, Loops & Recursion
 +@node Looping exercise
  @section Looping Exercise
  
  @itemize @bullet
@@@ -12273,7 -12399,8 +12273,7 @@@ Documentation Format}
  @end iftex
  @end itemize
  
 -@node Regexp Search, Counting Words, Loops & Recursion, Top
 -@comment  node-name,  next,  previous,  up
 +@node Regexp Search
  @chapter Regular Expression Searches
  @cindex Searches, illustrating
  @cindex Regular expression searches
@@@ -12319,7 -12446,8 +12319,7 @@@ introduces several new features
  * re-search Exercises::
  @end menu
  
 -@node sentence-end, re-search-forward, Regexp Search, Regexp Search
 -@comment  node-name,  next,  previous,  up
 +@node sentence-end
  @section The Regular Expression for @code{sentence-end}
  @findex sentence-end
  
@@@ -12470,7 -12598,8 +12470,7 @@@ return between square brackets but her
  @end table
  @end ignore
  
 -@node re-search-forward, forward-sentence, sentence-end, Regexp Search
 -@comment  node-name,  next,  previous,  up
 +@node re-search-forward
  @section The @code{re-search-forward} Function
  @findex re-search-forward
  
@@@ -12544,7 -12673,8 +12544,7 @@@ sentence cannot go beyond a paragraph)
  function will return @code{nil}; and the repeat count will be provided
  by the argument to the @code{forward-sentence} function.
  
 -@node forward-sentence, forward-paragraph, re-search-forward, Regexp Search
 -@comment  node-name,  next,  previous,  up
 +@node forward-sentence
  @section @code{forward-sentence}
  @findex forward-sentence
  
@@@ -12561,8 -12691,8 +12561,8 @@@ bound to the key command @kbd{M-e}
  * fwd-sentence re-search::      A regular expression search.
  @end menu
  
 -@node Complete forward-sentence, fwd-sentence while loops, forward-sentence, forward-sentence
  @ifnottex
 +@node Complete forward-sentence
  @unnumberedsubsec Complete @code{forward-sentence} function definition
  @end ifnottex
  
@@@ -12688,7 -12818,7 +12688,7 @@@ point, from before the search, is used 
  equivalents.  The @code{sentence-end} variable is set by the
  @code{sentence-end} function.
  
 -@node fwd-sentence while loops, fwd-sentence re-search, Complete forward-sentence, forward-sentence
 +@node fwd-sentence while loops
  @unnumberedsubsec The @code{while} loops
  
  Two @code{while} loops follow.  The first @code{while} has a
@@@ -12789,7 -12919,7 +12789,7 @@@ It may seem odd to have what looks lik
  the @code{forward-sentence} function buried here, but this is a common
  way this kind of operation is carried out in Lisp.
  
 -@node fwd-sentence re-search,  , fwd-sentence while loops, forward-sentence
 +@node fwd-sentence re-search
  @unnumberedsubsec The regular expression search
  
  The @code{re-search-forward} function searches for the end of the
@@@ -12837,7 -12967,8 +12837,7 @@@ illustrated by @code{re-search-forward}
  test of an @code{if} expression, is handy.  You will see or write code
  incorporating this pattern often.
  
 -@node forward-paragraph, etags, forward-sentence, Regexp Search
 -@comment  node-name,  next,  previous,  up
 +@node forward-paragraph
  @section @code{forward-paragraph}: a Goldmine of Functions
  @findex forward-paragraph
  
@@@ -13020,8 -13151,8 +13020,8 @@@ This is an added complication
  * fwd-para while::              The forward motion @code{while} loop.
  @end menu
  
 -@node forward-paragraph in brief, fwd-para let, forward-paragraph, forward-paragraph
  @ifnottex
 +@node forward-paragraph in brief
  @unnumberedsubsec Shortened @code{forward-paragraph} function definition
  @end ifnottex
  
@@@ -13060,7 -13191,7 +13060,7 @@@ This case was described earlier.  (@xre
  @code{forward-sentence} function}.)  Now we reach the end of the
  familiar part of this function.
  
 -@node fwd-para let, fwd-para while, forward-paragraph in brief, forward-paragraph
 +@node fwd-para let
  @unnumberedsubsec The @code{let*} expression
  
  The next line of the @code{forward-paragraph} function begins a
@@@ -13192,7 -13323,7 +13192,7 @@@ of the @code{let*} deals with the case 
  negative argument and is therefore moving backwards.  We will skip this
  section.
  
 -@node fwd-para while,  , fwd-para let, forward-paragraph
 +@node fwd-para while
  @unnumberedsubsec The forward motion @code{while} loop
  
  The second part of the body of the @code{let*} deals with forward
@@@ -13465,7 -13596,7 +13465,7 @@@ key; you will be taken directly to the 
  your sources!  Without them, you are like a person who tries to drive
  a car with his eyes shut!)
  
 -@node etags, Regexp Review, forward-paragraph, Regexp Search
 +@node etags
  @section Create Your Own @file{TAGS} File
  @findex etags
  @cindex @file{TAGS} file, create own
@@@ -13589,7 -13720,8 +13589,7 @@@ as well as with some other source packa
  For more information, see @ref{Tags, , Tag Tables, emacs, The GNU Emacs
  Manual}.
  
 -@node Regexp Review, re-search Exercises, etags, Regexp Search
 -@comment  node-name,  next,  previous,  up
 +@node Regexp Review
  @section Review
  
  Here is a brief summary of some recently introduced functions.
@@@ -13680,7 -13812,7 +13680,7 @@@ the buffer is narrowed
  @end table
  
  @need 1500
 -@node re-search Exercises,  , Regexp Review, Regexp Search
 +@node re-search Exercises
  @section Exercises with @code{re-search-forward}
  
  @itemize @bullet
@@@ -13698,7 -13830,7 +13698,7 @@@ The function I use is described in an a
  regexps.  @xref{the-the, , @code{the-the} Duplicated Words Function}.
  @end itemize
  
 -@node Counting Words, Words in a defun, Regexp Search, Top
 +@node Counting Words
  @chapter Counting: Repetition and Regexps
  @cindex Repetition for word counting
  @cindex Regular expressions for word counting
@@@ -13715,8 -13847,8 +13715,8 @@@ word count commands using @code{while} 
  * Counting Exercise::
  @end menu
  
 -@node Why Count Words, @value{COUNT-WORDS}, Counting Words, Counting Words
  @ifnottex
 +@node Why Count Words
  @unnumberedsec Counting words
  @end ifnottex
  
@@@ -13737,7 -13869,8 +13737,7 @@@ There are many ways to implement a comm
  some examples, which you may wish to compare with the standard Emacs
  command, @code{count-words-region}.
  
 -@node @value{COUNT-WORDS}, recursive-count-words, Why Count Words, Counting Words
 -@comment  node-name,  next,  previous,  up
 +@node @value{COUNT-WORDS}
  @section The @code{@value{COUNT-WORDS}} Function
  @findex @value{COUNT-WORDS}
  
@@@ -13762,8 -13895,8 +13762,8 @@@ or to a @code{while} loop
  * Whitespace Bug::              The Whitespace Bug in @code{@value{COUNT-WORDS}}.
  @end menu
  
 -@node Design @value{COUNT-WORDS}, Whitespace Bug, @value{COUNT-WORDS}, @value{COUNT-WORDS}
  @ifnottex
 +@node Design @value{COUNT-WORDS}
  @unnumberedsubsec Designing @code{@value{COUNT-WORDS}}
  @end ifnottex
  
@@@ -13939,7 -14072,8 +13939,7 @@@ table determines which characters thes
  @noindent
  As written, the function works, but not in all circumstances.
  
 -@node Whitespace Bug,  , Design @value{COUNT-WORDS}, @value{COUNT-WORDS}
 -@comment  node-name,  next,  previous,  up
 +@node Whitespace Bug
  @subsection The Whitespace Bug in @code{@value{COUNT-WORDS}}
  
  The @code{@value{COUNT-WORDS}} command described in the preceding
@@@ -14191,7 -14325,8 +14191,7 @@@ Here is what it looks like
  @end group
  @end smallexample
  
 -@node recursive-count-words, Counting Exercise, @value{COUNT-WORDS}, Counting Words
 -@comment  node-name,  next,  previous,  up
 +@node recursive-count-words
  @section Count Words Recursively
  @cindex Count words recursively
  @cindex Recursively counting words
@@@ -14569,14 -14704,14 +14569,14 @@@ determines which characters these are.
  @end group
  @end smallexample
  
 -@node Counting Exercise,  , recursive-count-words, Counting Words
 +@node Counting Exercise
  @section Exercise: Counting Punctuation
  
  Using a @code{while} loop, write a function to count the number of
  punctuation marks in a region---period, comma, semicolon, colon,
  exclamation mark, and question mark.  Do the same using recursion.
  
 -@node Words in a defun, Readying a Graph, Counting Words, Top
 +@node Words in a defun
  @chapter Counting Words in a @code{defun}
  @cindex Counting words in a @code{defun}
  @cindex Word counting in a @code{defun}
@@@ -14609,8 -14744,8 +14609,8 @@@ and this will tell
  * 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
  @ifnottex
 +@node Divide and Conquer
  @unnumberedsec Divide and Conquer
  @end ifnottex
  
@@@ -14647,7 -14782,7 +14647,7 @@@ Fifth, write a function to print the re
  This is quite a project!  But if we take each step slowly, it will not
  be difficult.
  
 -@node Words and Symbols, Syntax, Divide and Conquer, Words in a defun
 +@node Words and Symbols
  @section What to Count?
  @cindex Words and symbols in defun
  
@@@ -14701,7 -14836,7 +14701,7 @@@ that are not word constituents.  What i
  characters' brings us to the issue of syntax, which is worth a section
  of its own.
  
 -@node Syntax, count-words-in-defun, Words and Symbols, Words in a defun
 +@node Syntax
  @section What Constitutes a Word or Symbol?
  @cindex Syntax categories and tables
  
@@@ -14785,7 -14920,7 +14785,7 @@@ Here is the full regular expression
  "\\(\\w\\|\\s_\\)+[^ \t\n]*[ \t\n]*"
  @end smallexample
  
 -@node count-words-in-defun, Several defuns, Syntax, Words in a defun
 +@node count-words-in-defun
  @section The @code{count-words-in-defun} Function
  @cindex Counting words in a @code{defun}
  
@@@ -14979,7 -15114,7 +14979,7 @@@ Success!  The definition has 10 words a
  The next problem is to count the numbers of words and symbols in
  several definitions within a single file.
  
 -@node Several defuns, Find a File, count-words-in-defun, Words in a defun
 +@node Several defuns
  @section Count Several @code{defuns} Within a File
  
  A file such as @file{simple.el} may have a hundred or more function
@@@ -15034,7 -15169,8 +15034,7 @@@ switched back and forth to some other b
  
  Finding a file is a new process that we have not yet discussed.
  
 -@node Find a File, lengths-list-file, Several defuns, Words in a defun
 -@comment  node-name,  next,  previous,  up
 +@node Find a File
  @section Find a File
  @cindex Find a File
  
@@@ -15117,7 -15253,7 +15117,7 @@@ our own expression
  
  The task is easy: use @code{find-file-noselect} and @code{set-buffer}.
  
 -@node lengths-list-file, Several files, Find a File, Words in a defun
 +@node lengths-list-file
  @section @code{lengths-list-file} in Detail
  
  The core of the @code{lengths-list-file} function is a @code{while}
@@@ -15258,7 -15394,7 +15258,7 @@@ earlier one; and my new machine is muc
  Note that the length of the last definition in the file is first in
  the list.
  
 -@node Several files, Several files recursively, lengths-list-file, Words in a defun
 +@node Several files
  @section Count Words in @code{defuns} in Different Files
  
  In the previous section, we created a function that returns a list of
@@@ -15274,8 -15410,8 +15274,8 @@@ either a @code{while} loop or recursion
  * append::                      Attach one list to another.
  @end menu
  
 -@node lengths-list-many-files, append, Several files, Several files
  @ifnottex
 +@node lengths-list-many-files
  @unnumberedsubsec Determine the lengths of @code{defuns}
  @end ifnottex
  
@@@ -15371,7 -15507,7 +15371,7 @@@ The only other new element of this func
  unstudied function @code{append}, which merits a short section for
  itself.
  
 -@node append,  , lengths-list-many-files, Several files
 +@node append
  @subsection The @code{append} Function
  
  @need 800
@@@ -15406,7 -15542,7 +15406,7 @@@ becomes the first element of the new li
  ((1 2 3 4) 5 6 7 8)
  @end smallexample
  
 -@node Several files recursively, Prepare the data, Several files, Words in a defun
 +@node Several files recursively
  @section Recursively Count Words in Different Files
  
  Besides a @code{while} loop, you can work on each of a list of files
@@@ -15489,7 -15625,7 +15489,7 @@@ output we want
  
  The next step is to prepare the data in the list for display in a graph.
  
 -@node Prepare the data,  , Several files recursively, Words in a defun
 +@node Prepare the data
  @section Prepare the Data for Display in a Graph
  
  The @code{recursive-lengths-list-many-files} function returns a list
@@@ -15512,8 -15648,8 +15512,8 @@@ numbers
  * Counting function definitions::
  @end menu
  
 -@node Data for Display in Detail, Sorting, Prepare the data, Prepare the data
  @ifnottex
 +@node Data for Display in Detail
  @unnumberedsubsec The Data for Display in Detail
  @end ifnottex
  
@@@ -15531,7 -15667,7 +15531,7 @@@ inspecting a sorted list, we can discov
  number, and thereby determine the largest and smallest length range
  that we will need.
  
 -@node Sorting, Files List, Data for Display in Detail, Prepare the data
 +@node Sorting
  @subsection Sorting Lists
  @findex sort
  
@@@ -15610,7 -15746,7 +15610,7 @@@ which produces
  quoted, since the expression must be evaluated so as to produce the
  list that is passed to @code{sort}.)
  
 -@node Files List, Counting function definitions, Sorting, Prepare the data
 +@node Files List
  @subsection Making a List of Files
  
  The @code{recursive-lengths-list-many-files} function requires a list
@@@ -15871,7 -16007,7 +15871,7 @@@ like this
    (insert (format "%s" (current-time-string))))
  @end ignore
  
 -@node Counting function definitions,  , Files List, Prepare the data
 +@node Counting function definitions
  @subsection Counting function definitions
  
  Our immediate goal is to generate a list that tells us how many
@@@ -16175,7 -16311,7 +16175,7 @@@ between 120 and 129, and so on.  There 
  of 200 or larger.
  
  @c The next step is to turn this numbers' list into a graph.
 -@node Readying a Graph, Emacs Initialization, Words in a defun, Top
 +@node Readying a Graph
  @chapter Readying a Graph
  @cindex Readying a graph
  @cindex Graph prototype
@@@ -16207,8 -16343,8 +16207,8 @@@ the function to label the axes automati
  * Line Graph Exercise::
  @end menu
  
 -@node Columns of a graph, graph-body-print, Readying a Graph, Readying a Graph
  @ifnottex
 +@node Columns of a graph
  @unnumberedsec Printing the Columns of a Graph
  @end ifnottex
  
@@@ -16580,7 -16716,7 +16580,7 @@@ Now, finally, we come to our first actu
  This prints the body of a graph, not the labels for the vertical and
  horizontal axes, so we can call this @code{graph-body-print}.
  
 -@node graph-body-print, recursive-graph-body-print, Columns of a graph, Readying a Graph
 +@node graph-body-print
  @section The @code{graph-body-print} Function
  @findex graph-body-print
  
@@@ -16739,7 -16875,7 +16739,7 @@@ Emacs will print a graph like this
  @end group
  @end smallexample
  
 -@node recursive-graph-body-print, Printed Axes, graph-body-print, Readying a Graph
 +@node recursive-graph-body-print
  @section The @code{recursive-graph-body-print} Function
  @findex recursive-graph-body-print
  
@@@ -16826,7 -16962,7 +16826,7 @@@ Here is what @code{recursive-graph-body
  Either of these two functions, @code{graph-body-print} or
  @code{recursive-graph-body-print}, create the body of a graph.
  
 -@node Printed Axes, Line Graph Exercise, recursive-graph-body-print, Readying a Graph
 +@node Printed Axes
  @section Need for Printed Axes
  
  A graph needs printed axes, so you can orient yourself.  For a do-once
@@@ -16839,12 -16975,12 +16839,12 @@@ the horizontal and vertical axes.  Sinc
  do not contain much new material, I have placed their description in
  an appendix.  @xref{Full Graph, , A Graph with Labeled Axes}.
  
 -@node Line Graph Exercise,  , Printed Axes, Readying a Graph
 +@node Line Graph Exercise
  @section Exercise
  
  Write a line graph version of the graph printing functions.
  
 -@node Emacs Initialization, Debugging, Readying a Graph, Top
 +@node Emacs Initialization
  @chapter Your @file{.emacs} File
  @cindex @file{.emacs} file
  @cindex Customizing your @file{.emacs} file
@@@ -16876,8 -17012,8 +16876,8 @@@ expressions in Emacs Lisp you can chang
  * Mode Line::                   How to customize your mode line.
  @end menu
  
 -@node Default Configuration, Site-wide Init, Emacs Initialization, Emacs Initialization
  @ifnottex
 +@node Default Configuration
  @unnumberedsec Emacs's Default Configuration
  @end ifnottex
  
@@@ -16923,7 -17059,7 +16923,7 @@@ describes a simple @file{.emacs} file; 
  @ref{Init File, , The Init File, elisp, The GNU Emacs Lisp Reference
  Manual}.
  
 -@node Site-wide Init, defcustom, Default Configuration, Emacs Initialization
 +@node Site-wide Init
  @section Site-wide Initialization Files
  
  @cindex @file{default.el} init file
@@@ -16969,7 -17105,7 +16969,7 @@@ The @file{loaddefs.el} file contains a 
  what to put into your own @file{.emacs} file, or into a site-wide
  initialization file.
  
 -@node defcustom, Beginning a .emacs File, Site-wide Init, Emacs Initialization
 +@node defcustom
  @section Specifying Variables using @code{defcustom}
  @findex defcustom
  
@@@ -17134,7 -17270,7 +17134,7 @@@ intent is that neither programs nor use
  set by @code{defconst}.  (You can change it; the value set is a
  variable; but please do not.)
  
 -@node Beginning a .emacs File, Text and Auto-fill, defcustom, Emacs Initialization
 +@node Beginning a .emacs File
  @section Beginning a @file{.emacs} File
  @cindex @file{.emacs} file, beginning of
  
@@@ -17217,7 -17353,7 +17217,7 @@@ Of course, you don't need to include co
  about Mode help or the conventions for comments---but I was able to
  remember to look here to remind myself.
  
 -@node Text and Auto-fill, Mail Aliases, Beginning a .emacs File, Emacs Initialization
 +@node Text and Auto-fill
  @section Text and Auto Fill Mode
  
  Now we come to the part that `turns on' Text mode and
@@@ -17339,7 -17475,7 +17339,7 @@@ fill commands to insert two spaces afte
  (setq colon-double-space t)
  @end smallexample
  
 -@node Mail Aliases, Indent Tabs Mode, Text and Auto-fill, Emacs Initialization
 +@node Mail Aliases
  @section Mail Aliases
  
  Here is a @code{setq} that `turns on' mail aliases, along with more
@@@ -17373,7 -17509,7 +17373,7 @@@ alias geo george@@foobar.wiz.ed
  When you write a message to George, address it to @samp{geo}; the
  mailer will automatically expand @samp{geo} to the full address.
  
 -@node Indent Tabs Mode, Keybindings, Mail Aliases, Emacs Initialization
 +@node Indent Tabs Mode
  @section Indent Tabs Mode
  @cindex Tabs, preventing
  @findex indent-tabs-mode
@@@ -17411,7 -17547,7 +17411,7 @@@ Files'' in @cite{The GNU Emacs Manual}
  @end iftex
  
  @need 1700
 -@node Keybindings, Keymaps, Indent Tabs Mode, Emacs Initialization
 +@node Keybindings
  @section Some Keybindings
  
  Now for some personal keybindings:
@@@ -17524,7 -17660,7 +17524,7 @@@ window, I prefer the  @code{buffer-menu
  command, which not only lists the buffers,
  but moves point into that window.
  
 -@node Keymaps, Loading Files, Keybindings, Emacs Initialization
 +@node Keymaps
  @section Keymaps
  @cindex Keymaps
  @cindex Rebinding keys
@@@ -17592,7 -17728,7 +17592,7 @@@ You will see numerous @code{define-key
  Manual}, and @ref{Keymaps, , Keymaps, elisp, The GNU Emacs Lisp
  Reference Manual}, for more information about keymaps.
  
 -@node Loading Files, Autoload, Keymaps, Emacs Initialization
 +@node Loading Files
  @section Loading Files
  @cindex Loading files
  @c findex load
@@@ -17684,7 -17820,7 +17684,7 @@@ Another interactive command that does 
  Emacs, emacs, The GNU Emacs Manual}, for information on the
  distinction between @code{load-library} and this command.
  
 -@node Autoload, Simple Extension, Loading Files, Emacs Initialization
 +@node Autoload
  @section Autoloading
  @findex autoload
  
@@@ -17753,7 -17889,7 +17753,7 @@@ documentation is not available.
  @xref{Autoload, , Autoload, elisp, The GNU Emacs Lisp Reference
  Manual}, for more information.
  
 -@node Simple Extension, X11 Colors, Autoload, Emacs Initialization
 +@node Simple Extension
  @section A Simple Extension: @code{line-to-top-of-window}
  @findex line-to-top-of-window
  @cindex Simple extension in @file{.emacs} file
@@@ -17865,7 -18001,7 +17865,7 @@@ emacs -Q - 
  @end group
  @end smallexample
  
 -@node X11 Colors, Miscellaneous, Simple Extension, Emacs Initialization
 +@node X11 Colors
  @section X11 Colors
  
  You can specify colors when you use Emacs with the MIT X Windowing
@@@ -17943,7 -18079,7 +17943,7 @@@ xsetroot -solid Navy -fg white 
  @end smallexample
  
  @need 1700
 -@node Miscellaneous, Mode Line, X11 Colors, Emacs Initialization
 +@node Miscellaneous
  @section Miscellaneous Settings for a @file{.emacs} File
  
  @need 1250
@@@ -18135,7 -18271,7 +18135,7 @@@ xmodmap -e "keysym Alt_L = Meta_L Alt_L
  @end smallexample
  
  @need 1700
 -@node Mode Line,  , Miscellaneous, Emacs Initialization
 +@node Mode Line
  @section A Modified Mode Line
  @vindex mode-line-format
  @cindex Mode line format
@@@ -18298,7 -18434,7 +18298,7 @@@ This will start an Emacs that does @emp
  @file{~/.emacs} initialization file.  A plain, default Emacs.  Nothing
  more.
  
 -@node Debugging, Conclusion, Emacs Initialization, Top
 +@node Debugging
  @chapter Debugging
  @cindex debugging
  
@@@ -18318,7 -18454,7 +18318,7 @@@ In this chapter, I will walk through a 
  * Debugging Exercises::
  @end menu
  
 -@node debug, debug-on-entry, Debugging, Debugging
 +@node debug
  @section @code{debug}
  @findex debug
  
@@@ -18445,7 -18581,7 +18445,7 @@@ Debugger entered--Lisp error: (void-fun
  You can correct the mistake, re-evaluate the function definition, and
  then run your test again.
  
 -@node debug-on-entry, debug-on-quit, debug, Debugging
 +@node debug-on-entry
  @section @code{debug-on-entry}
  @findex debug-on-entry
  
@@@ -18584,7 -18720,7 +18584,7 @@@ M-x cancel-debug-on-entry RET triangle-
  @noindent
  (If you are reading this in Info, cancel @code{debug-on-entry} now.)
  
 -@node debug-on-quit, edebug, debug-on-entry, Debugging
 +@node debug-on-quit
  @section @code{debug-on-quit} and @code{(debug)}
  
  In addition to setting @code{debug-on-error} or calling @code{debug-on-entry},
@@@ -18616,7 -18752,7 +18616,7 @@@ where you want the debugger to start, l
  The @code{debug} function is described in detail in @ref{Debugger, ,
  The Lisp Debugger, elisp, The GNU Emacs Lisp Reference Manual}.
  
 -@node edebug, Debugging Exercises, debug-on-quit, Debugging
 +@node edebug
  @section The @code{edebug} Source Level Debugger
  @cindex Source level debugger
  @findex edebug
@@@ -18759,7 -18895,7 +18759,7 @@@ Edebug is described in @ref{edebug, , E
  Lisp Reference Manual}.
  
  @need 1500
 -@node Debugging Exercises,  , edebug, Debugging
 +@node Debugging Exercises
  @section Debugging Exercises
  
  @itemize @bullet
@@@ -18804,7 -18940,7 +18804,7 @@@ Set a breakpoint, then run Edebug in Tr
  stopping point.
  @end itemize
  
 -@node Conclusion, the-the, Debugging, Top
 +@node Conclusion
  @chapter Conclusion
  
  We have now reached the end of this Introduction.  You have now
@@@ -18924,7 -19060,7 +18924,7 @@@ beginning
  
  @c ================ Appendix ================
  
 -@node the-the, Kill Ring, Conclusion, Top
 +@node the-the
  @appendix The @code{the-the} Function
  @findex the-the
  @cindex Duplicated words function
@@@ -19021,7 -19157,7 +19021,7 @@@ five six seve
  You can substitute the other regular expressions shown above in the
  function definition and try each of them on this list.
  
 -@node Kill Ring, Full Graph, the-the, Top
 +@node Kill Ring
  @appendix Handling the Kill Ring
  @cindex Kill ring handling
  @cindex Handling the kill ring
@@@ -19043,8 -19179,8 +19043,8 @@@ consider the workings of the kill ring
  * ring file::
  @end menu
  
 -@node What the Kill Ring Does, current-kill, Kill Ring, Kill Ring
  @ifnottex
 +@node What the Kill Ring Does
  @unnumberedsec What the Kill Ring Does
  @end ifnottex
  
@@@ -19118,7 -19254,8 +19118,7 @@@ To return to the old value for the leng
  (setq kill-ring-max old-kill-ring-max)
  @end smallexample
  
 -@node current-kill, yank, What the Kill Ring Does, Kill Ring
 -@comment  node-name,  next,  previous,  up
 +@node current-kill
  @appendixsec The @code{current-kill} Function
  @findex current-kill
  
@@@ -19135,8 -19272,8 +19135,8 @@@ and @code{kill-region}.
  * Understanding current-kill::
  @end menu
  
 -@node Code for current-kill, Understanding current-kill, current-kill, current-kill
  @ifnottex
 +@node Code for current-kill
  @unnumberedsubsec The code for @code{current-kill}
  @end ifnottex
  
@@@ -19196,8 -19333,8 +19196,8 @@@ Here is the line in @code{kill-new}, wh
  (setq kill-ring-yank-pointer kill-ring)
  @end smallexample
  
 -@node Understanding current-kill,  , Code for current-kill, current-kill
  @ifnottex
 +@node Understanding current-kill
  @unnumberedsubsec @code{current-kill} in Outline
  @end ifnottex
  
@@@ -19223,8 -19360,8 +19223,8 @@@ documentation string.  It is @emph{not
  * Determining the Element::
  @end menu
  
 -@node Body of current-kill, Digression concerning error, Understanding current-kill, Understanding current-kill
  @ifnottex
 +@node Body of current-kill
  @unnumberedsubsubsec The Body of @code{current-kill}
  @end ifnottex
  
@@@ -19306,8 -19443,8 +19306,8 @@@ current value of @code{kill-ring-yank-p
  list.  Finally, another expression returns the first element of the
  list even if the @code{do-not-move} argument is true.
  
 -@node Digression concerning error, Determining the Element, Body of current-kill, Understanding current-kill
  @ifnottex
 +@node Digression concerning error
  @unnumberedsubsubsec Digression about the word `error'
  @end ifnottex
  
@@@ -19328,8 -19465,8 +19328,8 @@@ environment, is making an error.  This 
  takes the same steps as it does when there is an `error', a term such as
  `cancel' would have a clearer connotation.
  
 -@node Determining the Element,  , Digression concerning error, Understanding current-kill
  @ifnottex
 +@node Determining the Element
  @unnumberedsubsubsec Determining the Element
  @end ifnottex
  
@@@ -19466,7 -19603,8 +19466,7 @@@ them in an argument list (and within ex
  @ref{defun, , The @code{defun} Special Form}.)
  @end ignore
  
 -@node yank, yank-pop, current-kill, Kill Ring
 -@comment  node-name,  next,  previous,  up
 +@node yank
  @appendixsec @code{yank}
  @findex yank
  
@@@ -19551,7 -19689,8 +19551,7 @@@ function.
  
  The last part of the function tells what to do when it succeeds.
  
 -@node yank-pop, ring file, yank, Kill Ring
 -@comment  node-name,  next,  previous,  up
 +@node yank-pop
  @appendixsec @code{yank-pop}
  @findex yank-pop
  
@@@ -19621,7 -19760,8 +19621,7 @@@ positions of point and mark set by the 
  
  There is more, but that is the hardest part.
  
 -@node ring file,  , yank-pop, Kill Ring
 -@comment  node-name,  next,  previous,  up
 +@node ring file
  @appendixsec The @file{ring.el} File
  @cindex @file{ring.el} file
  
@@@ -19630,7 -19770,7 +19630,7 @@@ provides many of the features we just d
  as @code{kill-ring-yank-pointer} do not use this library, possibly
  because they were written earlier.
  
 -@node Full Graph, Free Software and Free Manuals, Kill Ring, Top
 +@node Full Graph
  @appendix A Graph with Labeled Axes
  
  Printed axes help you understand a graph.  They convey scale.  In an
@@@ -19647,8 -19787,8 +19647,8 @@@ body itself
  * Print Whole Graph::           The function to print a complete graph.
  @end menu
  
 -@node Labeled Example, print-graph Varlist, Full Graph, Full Graph
  @ifnottex
 +@node Labeled Example
  @unnumberedsec Labeled Example Graph
  @end ifnottex
  
@@@ -19735,7 -19875,8 +19735,7 @@@ These considerations suggest the follow
  We can work on each part of the @code{print-graph} function definition
  in turn.
  
 -@node print-graph Varlist, print-Y-axis, Labeled Example, Full Graph
 -@comment  node-name,  next,  previous,  up
 +@node print-graph Varlist
  @appendixsec The @code{print-graph} Varlist
  @cindex @code{print-graph} varlist
  
@@@ -19776,7 -19917,8 +19776,7 @@@ in the @code{let} for @code{print-graph
  As we shall see, this expression is not quite right.
  
  @need 2000
 -@node print-Y-axis, print-X-axis, print-graph Varlist, Full Graph
 -@comment  node-name,  next,  previous,  up
 +@node print-Y-axis
  @appendixsec The @code{print-Y-axis} Function
  @cindex Axis, print vertical
  @cindex Y axis printing
@@@ -19814,8 -19956,8 +19814,8 @@@ construct and insert the appropriate nu
  * 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
  @ifnottex
 +@node print-Y-axis in Detail
  @unnumberedsubsec The @code{print-Y-axis} Function in Detail
  @end ifnottex
  
@@@ -19830,8 -19972,8 +19830,8 @@@ the base line (number 1) and then that 
  the fifth line from the bottom and on every line that is a multiple of
  five.
  
 -@node Height of label, Compute a Remainder, print-Y-axis in Detail, print-Y-axis
  @ifnottex
 +@node Height of label
  @unnumberedsubsec What height should the label be?
  @end ifnottex
  
@@@ -19868,7 -20010,7 +19868,7 @@@ language, more reminiscent of the class
  once, with a remainder of two.  However, five goes into ten twice,
  with no remainder: ten is an integral multiple of five.
  
 -@node Compute a Remainder, Y Axis Element, Height of label, print-Y-axis
 +@node Compute a Remainder
  @appendixsubsec Side Trip: Compute a Remainder
  
  @findex % @r{(remainder function)}
@@@ -20002,7 -20144,7 +20002,7 @@@ then the resulting value of  @code{heig
  final value.  @xref{fwd-para let, , The @code{let*} expression}, for
  more about @code{let*}.)
  
 -@node Y Axis Element, Y-axis-column, Compute a Remainder, print-Y-axis
 +@node Y Axis Element
  @appendixsubsec Construct a Y Axis Element
  
  When we print the vertical axis, we want to insert strings such as
@@@ -20108,7 -20250,7 +20108,7 @@@ The @code{number-to-string} function i
  expression, to convert the number to a string that is concatenated
  with the leading spaces and the tic mark.
  
 -@node Y-axis-column, print-Y-axis Penultimate, Y Axis Element, print-Y-axis
 +@node Y-axis-column
  @appendixsubsec Create a Y Axis Column
  
  The preceding functions provide all the tools needed to construct a
@@@ -20155,7 -20297,7 +20155,7 @@@ blank label using the @code{make-string
  consists of the number one followed by a tic mark.
  
  @need 2000
 -@node print-Y-axis Penultimate,  , Y-axis-column, print-Y-axis
 +@node print-Y-axis Penultimate
  @appendixsubsec The Not Quite Final Version of @code{print-Y-axis}
  
  The list constructed by the @code{Y-axis-column} function is passed to
@@@ -20231,7 -20373,7 +20231,7 @@@ Emacs will print labels vertically, th
  thereby getting rid of what might appear as a bug.)
  
  @need 2000
 -@node print-X-axis, Print Whole Graph, print-Y-axis, Full Graph
 +@node print-X-axis
  @appendixsec The @code{print-X-axis} Function
  @cindex Axis, print horizontal
  @cindex X axis printing
@@@ -20267,8 -20409,8 +20267,8 @@@ graph without changing the ways the gra
  * 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
  @ifnottex
 +@node Similarities differences
  @unnumberedsubsec Similarities and differences
  @end ifnottex
  
@@@ -20293,7 -20435,7 +20293,7 @@@ using @code{print-X-axis-tic-line} an
  @code{print-X-axis-numbered-line}.
  @end enumerate
  
 -@node X Axis Tic Marks,  , Similarities differences, print-X-axis
 +@node X Axis Tic Marks
  @appendixsubsec X Axis Tic Marks
  
  The first function should print the X axis tic marks.  We must specify
@@@ -20582,7 -20724,7 +20582,7 @@@ Emacs will print the horizontal axis li
  @end group
  @end smallexample
  
 -@node Print Whole Graph,  , print-X-axis, Full Graph
 +@node Print Whole Graph
  @appendixsec Printing the Whole Graph
  @cindex Printing the whole graph
  @cindex Whole graph printing
@@@ -20621,8 -20763,8 +20621,8 @@@ Here is the outline
  * Final printed graph::         The graph itself!
  @end menu
  
 -@node The final version, Test print-graph, Print Whole Graph, Print Whole Graph
  @ifnottex
 +@node The final version
  @unnumberedsubsec Changes for the Final Version
  @end ifnottex
  
@@@ -20773,7 -20915,7 +20773,7 @@@ each row is five units.
  @end group
  @end smallexample
  
 -@node Test print-graph, Graphing words in defuns, The final version, Print Whole Graph
 +@node Test print-graph
  @appendixsubsec Testing @code{print-graph}
  
  @need 1250
@@@ -20863,7 -21005,7 +20863,7 @@@ The graph looks like this
  feature?  If you think it is a bug, and should be a `1' instead, (or
  even a `0'), you can modify the sources.)
  
 -@node Graphing words in defuns, lambda, Test print-graph, Print Whole Graph
 +@node Graphing words in defuns
  @appendixsubsec Graphing Numbers of Words and Symbols
  
  Now for the graph for which all this code was written: a graph that
@@@ -20951,7 -21093,7 +20951,7 @@@ not yet seen, @code{mapcar} and @code{l
  @end group
  @end smallexample
  
 -@node lambda, mapcar, Graphing words in defuns, Print Whole Graph
 +@node lambda
  @appendixsubsec A @code{lambda} Expression: Useful Anonymity
  @cindex Anonymous function
  @findex lambda
@@@ -21117,7 -21259,7 +21117,7 @@@ divides that number by 50
  Lisp Reference Manual}, for more about @code{lambda}.  Lisp and lambda
  expressions derive from the Lambda Calculus.
  
 -@node mapcar, Another Bug, lambda, Print Whole Graph
 +@node mapcar
  @appendixsubsec The @code{mapcar} Function
  @findex mapcar
  
@@@ -21201,7 -21343,7 +21201,7 @@@ information: many of the higher ranges 
  50 defuns had that many words or symbols---but not necessarily meaning
  that none had that many words or symbols.)
  
 -@node Another Bug, Final printed graph, mapcar, Print Whole Graph
 +@node Another Bug
  @appendixsubsec Another Bug @dots{} Most Insidious
  @cindex Bug, most insidious type
  @cindex Insidious type of bug
@@@ -21898,7 -22040,7 +21898,7 @@@ each column.
  @end ignore
  
  @page
 -@node Final printed graph,  , Another Bug, Print Whole Graph
 +@node Final printed graph
  @appendixsubsec The Printed Graph
  
  When made and installed, you can call the @code{print-graph} command
@@@ -21948,7 -22090,7 +21948,7 @@@ Here is the graph
  @noindent
  The largest group of functions contain 10 -- 19 words and symbols each.
  
 -@node Free Software and Free Manuals, GNU Free Documentation License, Full Graph, Top
 +@node Free Software and Free Manuals
  @appendix Free Software and Free Manuals
  
  @strong{by Richard M. Stallman}
@@@ -22068,13 -22210,14 +22068,13 @@@ Note: The Free Software Foundation main
  that lists free books available from other publishers:@*
  @uref{http://www.gnu.org/doc/other-free-books.html}
  
 -@node GNU Free Documentation License, Index, Free Software and Free Manuals, Top
 +@node GNU Free Documentation License
  @appendix GNU Free Documentation License
  
  @cindex FDL, GNU Free Documentation License
  @include doclicense.texi
  
 -@node Index, About the Author, GNU Free Documentation License, Top
 -@comment  node-name,  next,  previous,  up
 +@node Index
  @unnumbered Index
  
  @ignore
@@@ -22113,7 -22256,7 +22113,7 @@@ MENU ENTRY: NODE NAME
  @end iftex
  
  @ifnottex
 -@node About the Author,  , Index, Top
 +@node About the Author
  @unnumbered About the Author
  @end ifnottex
  
diff --combined lisp/gnus/ChangeLog
index c6b2a4c37a784417b3fbb380c600f5a190025356,27937b238722ad429a19cc256af9c1a34c3bb605..dade2b4bbe5521699da7ad163c8141f70def822b
 -2012-10-09  Kazuhiro Ito  <kzhr@d1.dion.ne.jp>  (tiny change)
++2012-10-17  Kazuhiro Ito  <kzhr@d1.dion.ne.jp>  (tiny change)
+       * starttls.el (starttls-extra-arguments): Doc fix.
 -2012-07-10  Andreas Schwab  <schwab@linux-m68k.org>
 +2012-10-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-insert): \r is also not inserted, so don't try to delete
 +      it.
 +
 +2012-10-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * gnus-notifications.el (gnus-notifications):
 +      Add missing group :version tag.
 +      * gnus-msg.el (gnus-gcc-pre-body-encode-hook)
 +      (gnus-gcc-post-body-encode-hook):
 +      * gnus-sync.el (gnus-sync-lesync-name)
 +      (gnus-sync-lesync-install-topics): Add missing custom :version tags.
 +
 +2012-09-25  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-article-browse-delete-temp-files): Never ask again
 +      a user about whether to delete temp files if once a user answered as n.
 +
 +2012-09-17  Richard Stallman  <rms@gnu.org>
 +
 +      * message.el (message-in-body-p): Don't set mark or modify buffer.
 +
 +      * mml.el (mml-attach-file): Doc fix.
 +      (mml-attach-external, mml-attach-buffer, mml-attach-file):
 +      Set mail-encode-mml when in Mail mode.
 +      Simplify code to set HEAD and move back to HEAD.
 +      (mml-insert-multipart, mml-insert-part):
 +      Set mail-encode-mml when in Mail mode.
 +
 +2012-09-13  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-util.el (gnus-timer--function): New function.
 +
 +      * gnus-art.el (gnus-article-stop-animations): Use it.
 +
 +2012-09-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix glitches caused by addition of psec to timers.
 +      * gnus-art.el (gnus-article-stop-animations): Use timer--function
 +      rather than raw access to timer vector.
 +
 +2012-09-11  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-notifications.el (gnus-notifications): Check for nil values in
 +      ignored addresses check.
 +
 +2012-09-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * qp.el (quoted-printable-decode-region): Inline+CSE+strength-reduction.
 +
 +2012-09-07  Chong Yidong  <cyd@gnu.org>
 +
 +      * gnus-util.el
 +      (gnus-put-text-property-excluding-characters-with-faces): Restore.
 +
 +      * gnus-salt.el (gnus-tree-highlight-node):
 +      * gnus-sum.el (gnus-summary-highlight-line):
 +      * gnus-group.el (gnus-group-highlight-line): Revert use of add-face.
 +
 +2012-09-06  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-util.el: Fix compilation error on XEmacs 21.4.
 +
 +2012-09-06  Juri Linkov  <juri@jurta.org>
 +
 +      * gnus-group.el (gnus-read-ephemeral-gmane-group): Change the naming
 +      scheme for buffer names to be more consistent with other group and
 +      article buffer names in Gnus.
 +
 +2012-09-06  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-util.el
 +      (gnus-put-text-property-excluding-characters-with-faces): Remove.
 +
 +      * gnus-compat.el: Define compat function `add-face' from Wolfgang
 +      Jenkner.
 +
 +      * gnus-group.el (gnus-group-highlight-line): Use combining faces.
 +
 +      * gnus-sum.el (gnus-summary-highlight-line): Ditto.
 +
 +      * gnus-salt.el (gnus-tree-highlight-node): Ditto.
 +
 +2012-09-06  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-score.el (gnus-score-decode-text-parts): Use #' for
 +      mm-text-parts used in labels macro to make it work with XEmacs 21.5.
 +
 +      * gnus-util.el (gnus-string-prefix-p): New function, an alias to
 +      string-prefix-p in Emacs >=23.2.
 +
 +      * nnmaildir.el (nnmaildir--ensure-suffix, nnmaildir--add-flag)
 +      (nnmaildir--remove-flag, nnmaildir--scan): Use gnus-string-match-p
 +      instead of string-match-p.
 +      (nnmaildir--scan): Use gnus-string-prefix-p instead of string-prefix-p.
 +
 +2012-09-06  Kenichi Handa  <handa@gnu.org>
 +
 +      * qp.el (quoted-printable-decode-region): Fix previous change; handle
 +      lowercase a..f.
 +
 +2012-09-05  Magnus Henoch  <magnus.henoch@gmail.com>
 +
 +      * nnmaildir.el (nnmaildir--article-set-flags): Fix compilation error.
 +
 +2012-09-05  Martin Stjernholm  <mast@lysator.liu.se>
 +
 +      * gnus-demon.el (gnus-demon-init): Fixed regression when IDLE is t and
 +      TIME is set.
 +
 +2012-09-05  Juri Linkov  <juri@jurta.org>
 +
 +      * gnus-group.el (gnus-read-ephemeral-bug-group): Allow opening more
 +      than one group at a time (bug#11961).
 +
 +2012-09-05  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-srvr.el (gnus-server-open-server): Don't message on failure:
 +      this hide the real reason with a message giving absolutely no hint.
 +
 +2012-09-05  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-group.el (gnus-group-mark-article-read): Propagate the read mark
 +      to the backend (bug#11804).
 +
 +      * message.el (message-insert-newsgroups): Don't insert newsgroup
 +      duplicates (bug#12275).
 +
 +2012-09-05  John Wiegley  <johnw@newartisans.com>
 +
 +      * gnus.el (gnus-expand-group-parameters): Allow regexp substitutions in
 +      sieve rules.
 +
 +2012-09-05  Jan Tatarik  <jan.tatarik@gmail.com>
 +
 +      * gnus-score.el (gnus-score-decode-text-parts): Use #' for the local
 +      function.
 +
 +      * gnus-logic.el (gnus-advanced-body): Allow scoring on decoded bodies.
 +
 +      * gnus-score.el (gnus-score-decode-text-parts): Ditto.
 +
 +2012-09-05  Magnus Henoch  <magnus.henoch@gmail.com>
 +
 +      * nnmaildir.el: Make nnmaildir understand and write maildir flags.
 +      That is, rename files from "unique:2," to "unique:2,S" for "seen", etc.
 +      This should make nnmaildir more usable with offlineimap.
 +
 +2012-09-03  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-notifications.el (gnus-notifications-notify): Use it.
 +
 +      * gnus-fun.el (gnus-funcall-no-warning): New function to silence
 +      warnings on XEmacs.
 +
 +2012-09-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Better seeds for (random).
 +      * gnus-sync.el (gnus-sync-lesync-setup):
 +      * message.el (message-canlock-generate, message-unique-id):
 +      Change (random t) to (random), now that the latter is more random.
 +
 +2012-08-31  Dave Abrahams  <dave@boostpro.com>
 +
 +      * auth-source.el (auth-sources): Fix macos keychain access.
 +
 +      * gnus-int.el (gnus-request-head): When gnus-override-method is set,
 +      allow the backend `request-head' function to determine the group
 +      name on its own.
 +      (gnus-request-expire-articles): Filter out negative article numbers
 +      during expiry (Bug#11980).
 +
 +      * gnus-range.el (gnus-set-difference): Change gnus-set-difference from
 +      O(N^2) to O(N).  This makes warping into huge groups tolerable.
 +
 +      * gnus-registry.el (gnus-try-warping-via-registry): Don't act as though
 +      you've found the article when you haven't.
 +
 +2012-08-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * gnus-notifications.el (gnus-notifications-action): Avoid CL-ism.
 +
 +2012-08-30  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-notifications.el (gnus-notifications-notify): Use timeout from
 +      `gnus-notifications-timeout'.
 +      (gnus-notifications-timeout): Add.
 +      (gnus-notifications-action): New function.
 +      (gnus-notifications-notify): Add :action using
 +      `gnus-notifications-action'.
 +      (gnus-notifications-id-to-msg): New variable.
 +      (gnus-notifications): Use `gnus-notifications-id-to-msg' to map
 +      notifications id to messages.
 +
 +2012-08-30  Kenichi Handa  <handa@gnu.org>
 +
 +      * qp.el (quoted-printable-decode-region): Decode multiple bytes at
 +      once.
 +
 +2012-08-29  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-notifications.el: New file.
 +      (gnus-notifications-notify): New function.
 +      (gnus-notifications): Use `gnus-notifications-notify'.
 +
 +2012-08-28  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-sum.el (gnus-summary-enter-digest-group): Decode content
 +      transfer encoding first; bind gnus-newsgroup-charset to the charset
 +      that the article specifies (Bug#12209).
 +
 +2012-08-22  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-cus.el (gnus-group-customize): Decode values posting-style holds.
 +      (gnus-group-customize-done): Encode values posting-style holds.
 +
 +      * gnus-msg.el (gnus-summary-resend-message)
 +      (gnus-configure-posting-styles): Decode values posting-style group
 +      parameter holds.
 +
 +2012-08-21  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-msg.el (gnus-summary-resend-message): Honor posting-style for
 +      `name' and `address' in Resent-From header.
 +
 +2012-08-14  Chong Yidong  <cyd@gnu.org>
 +
 +      * gnus-art.el (article-display-face): Handle failure in
 +      gnus-create-image (Bug#11802).
 +
 +2012-08-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * gnus-agent.el (gnus-agent-cat-defaccessor, gnus-agent-cat-groups):
 +      Use defsetf.
 +
 +2012-08-10  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * auth-source.el: (auth-source-plstore-search)
 +      (auth-source-secrets-search): Ignore :require and :type in search spec.
 +
 +2012-08-06  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-demon.el (gnus-demon-add-handler, gnus-demon-remove-handler):
 +      Remove autoload, already handled by gnus.el.
 +
 +2012-08-05  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-demon.el (gnus-demon-add-handler, gnus-demon-remove-handler):
 +      Add autoload.
 +
 +2012-07-31  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus.el (gnus-valid-select-methods): Fix custom type.
 +
 +2012-07-29  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el (auth-sources, auth-source-backend-parse)
 +      (auth-source-macos-keychain-search)
 +      (auth-source-macos-keychain-search-items)
 +      (auth-source-macos-keychain-result-append)
 +      (auth-source-macos-keychain-create): Support Mac OS X Keychains in
 +      auth-source.el through the /usr/bin/security utility.
 +      (auth-sources): Fix syntax error.
 +      (auth-source-macos-keychain-result-append): Fix variable name.
 +      (auth-sources, auth-source-macos-keychain-result-append): More fixes.
 +
 +2012-07-27  Julien Danjou  <julien@danjou.info>
 +
 +      * message.el (fboundp): Add a defalias on `mail-dont-reply-to' for
 +      Emacs < 24.1
 +
 +2012-07-27  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * message.el (message-kill-address): Don't kill last newline.
 +      (message-skip-to-next-address): Don't move to the next header.
 +      (message-fill-field-address): Work properly.
 +
 +2012-07-25  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-art.el (gnus-kill-sticky-article-buffers): Reintroduce.
 +
 +2012-07-25  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * nnimap.el (nnimap-get-responses): Don't remove, still used.
 +
 +2012-07-24  Julien Danjou  <julien@danjou.info>
 +
 +      * mail-source.el (mail-source-movemail-and-remove): Remove, unused.
 +
 +      * nntp.el (nntp-send-nosy-authinfo, nntp-send-authinfo-from-file)
 +      (nntp-async-timer-handler): Remove, unused.
 +
 +      * nnimap.el (nnimap-get-responses): Remove, unused.
 +
 +      * nnheader.el (mail-header-set-extra): Remove, unused.
 +
 +      * mm-view.el (mm-view-sound-file): Remove, unused.
 +
 +      * mm-url.el (mm-url-fetch-simple, mm-url-fetch-form)
 +      (mm-url-encode-multipart-form-data): Remove, unused.
 +
 +      * message.el (message-remove-signature, message-make-host-name)
 +      (message-fill-address): Remove, unused.
 +
 +      * gnus.el (gnus-writable-groups, gnus-group-guess-prefixed-name)
 +      (gnus-group-guess-full-name, gnus-group-guess-prefixed-name): Remove,
 +      unused.
 +
 +      * gnus-uu.el (gnus-uu-find-name-in-shar): Remove, unused.
 +
 +      * gnus-util.el (gnus-extract-address-component-name)
 +      (gnus-extract-address-component-email, gnus-sortable-date)
 +      (gnus-alist-to-hashtable, gnus-hashtable-to-alist)
 +      (gnus-process-live-p): Remove, unused.
 +
 +      * gnus-topic.el (gnus-group-parent-topic): Remove, unused.
 +
 +      * gnus-sum.el (gnus-score-set-default, gnus-article-parent-p)
 +      (gnus-article-read-p, gnus-uncompress-marks): Remove, unused.
 +      (gnus-summary-set-current-mark): Remove obsolete, empty and unused
 +      function.
 +
 +      * gnus-start.el (gnus-kill-newsgroup): Remove unused obsolete function.
 +
 +      * gnus-score.el (gnus-summary-score-crossposting)
 +      (gnus-score-regexp-bad-p): Remove, unused.
 +
 +      * gnus-salt.el (gnus-tree-goto-article): Remove, unused.
 +
 +      * gnus-range.el (gnus-sublist-p): Remove, unused.
 +
 +      * gnus-msg.el (gnus-mail-parse-comma-list, gnus-put-message): Remove,
 +      unused.
 +
 +      * gnus-kill.el (gnus-Newsgroup-kill-file): Remove, unused.
 +
 +      * gnus-int.el (gnus-list-active-group, gnus-request-group-articles)
 +      (gnus-request-associate-buffer): Remove, unused.
 +
 +      * gnus-group.el (gnus-group-set-method-info)
 +      (gnus-group-set-params-info): Remove, unused.
 +
 +      * gnus-fun.el (gnus-shell-command-to-string)
 +      (gnus-shell-command-on-region): Remove, unused.
 +
 +      * gnus-cite.el (gnus-cited-line-p): Remove, unused.
 +
 +      * gnus-art.el (gnus-article-text-type-exists-p)
 +      (article-translate-characters, gnus-article-hide-text-of-type)
 +      (gnus-kill-sticky-article-buffers, gnus-article-maybe-highlight):
 +      Remove, unused.
 +
 +2012-07-23  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * nnir.el ("nnir"): Revert last change, that's premature to merge from
 +      Gnus master.
 +
 +2012-07-22  Andrew Cohen  <cohen@bu.edu>
 +
 +      * nnir.el ("nnir"): Add 'virtual ability to nnir backend.
 +
 +2012-07-21  Julien Danjou  <julien@danjou.info>
 +
 +      * message.el (message-dont-reply-to-names): Replace deprecated
 +      `rmail-dont-reply-to-names' with `mail-dont-reply-to-names'.
 +      (message-get-reply-headers): Ditto.
 +
 +2012-07-18  Julien Danjou  <julien@danjou.info>
 +
 +      * sieve-mode.el (sieve-mode-map): Bind C-c C-c to
 +      `sieve-upload-and-kill'.
 +
 +      * sieve.el (sieve-bury-buffer): Remove function.
 +      (sieve-manage-mode-map): Map "q" to `kill-buffer'.
 +      (sieve-upload-and-kill): New function, mapped to C-c C-c.
 +
 +2012-07-17  Andreas Schwab  <schwab@linux-m68k.org>
  
        * shr.el (shr-expand-url): Handle URL starting with `//'.
  
 -2012-06-10  Toke Høiland-Jørgensen  <toke@toke.dk>  (tiny change)
 +2012-07-17  Toke Høiland-Jørgensen  <toke@toke.dk>  (tiny change)
 +2012-07-13  Chong Yidong  <cyd@gnu.org>
 +
 +      * smime.el (smime-certificate-info): Set buffer-read-only directly,
 +      instead of calling toggle-read-only with a (bogus) argument.
 +
 +2012-07-09  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * gnus-sum.el (gnus-summary-limit-to-author): Use default value instead
 +      of initial input when reading the author to restrict the summary to.
 +
 +2012-07-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-select-newsgroup): Don't assume that the group
 +      buffer exists, which it doesn't if we haven't started Gnus.
 +
 +2012-07-09  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-decode.el (mm-shr):
 +      Allow overriding charset by mm-charset-override-alist.
 +
 +2012-07-03  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-article-view-part):
 +      Toggle subparts of multipart/alternative part.
 +
 +2012-07-02  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-sync.el: Simply require json.
 +
 +      * registry.el: Simply require eieio and eieio-base.
 +
 +2012-06-29  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * tests/gnustest-nntp.el, tests/gnustest-registry.el, tests/: Remove.
 +
 +2012-06-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * shr.el (shr-render-buffer): New command.
 +      (shr-visit-file): Use it.
 +
 +2012-06-27  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * tests/gnustest-nntp.el, tests/gnustest-registry.el:
 +      Set no-byte-compile and no-update-autoloads.
 +
 +2012-06-26  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-decode.el: Add coding cookie for a soft hyphen that mm-shr uses.
 +
 +2012-06-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-art.el (gnus-article-read-summary-keys): Protect against the key
 +      being bound to a lambda form.
 +
 +2012-06-26  Wolfgang Jenkner  <wjenkner@inode.at>
 +
 +      * gnus-picon.el (gnus-picon-properties): New defcustom.
 +      (gnus-picon-create-glyph): Use it.
 +
 +2012-06-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el: Add a iso-8859-1 cookie to make stuff work under other
 +      locales.
 +
 +      * mm-decode.el (mm-display-part): Dissect archives when hitting `RET'
 +      on a handle.
 +
 +      * gnus-sum.el (gnus-summary-limit-to-author): Use the current From
 +      address as the default.
 +
 +      * nnfolder.el (nnfolder-save-buffer): Delete old versions silently.
 +      It makes no sense to query the user about internal files.
 +
 +      * gnus-spec.el: Remove all the byte-compilation stuff, since
 +      benchmarking shows that it doesn't help when entering large summary
 +      buffers.
 +
 +      * gnus-util.el (gnus-byte-code): Remove.
 +
 +      * gnus-spec.el (gnus-update-format-specifications): Remove outdated
 +      grouplens stuff.
 +
 +2012-06-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-msg.el (gnus-msg-mail): Warn the user about Gnus not running
 +      (bug#11514).
 +
 +2012-06-26  Stephen Eglen  <S.J.Eglen@damtp.cam.ac.uk>
 +
 +      * message.el (message-buffers): Return all buffers derived from Message
 +      to make `gnus-dired-attach' work with mu4e.
 +
 +2012-06-26  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * mm-decode.el (mm-inhibit-auto-detect-attachment): New variable.
 +      (mm-dissect-singlepart): Don't guess the MIME type of
 +      application/octet-stream parts if mm-inhibit-auto-detect-attachment is
 +      set.
 +      (mm-dissect-multipart): Bind mm-inhibit-auto-detect-attachment if the
 +      toplevel MIME type is multipart/encrypted.
 +
 +2012-06-26  Wolfgang Jenkner  <wjenkner@inode.at>
 +
 +      * gnus-agent.el (gnus-agent-save-active): Deal with the "groups" format.
 +      In particular, add an optional argument and a docstring.
 +
 +      * gnus-start.el (gnus-groups-to-gnus-format): Use it.
 +
 +      * nntp.el (nntp-finish-retrieve-group-infos): Make `nntp-server-buffer'
 +      current before calling `gnus-groups-to-gnus-format'.
 +      Note that this was already the case for `gnus-active-to-gnus-format'.
 +
 +2012-06-26  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * pop3.el (pop3-wait-for-messages): Fix retrieved data size calculation.
 +
 +2012-06-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mm-decode.el (mm-dissect-buffer): Doc fix.
 +
 +      * gnus-sum.el (gnus-handle-ephemeral-exit):
 +      Avoid creating the group buffer if it doesn't exist.
 +
 +      * gnus-group.el (gnus-group-read-ephemeral-group): If no quit-config
 +      is given, mark the group as ephemeral with the current window conf.
 +
 +      * gnus-sum.el (gnus-set-global-variables): Don't assume that the group
 +      buffer exists, which it doesn't if we haven't started Gnus.
 +      (gnus-summary-exit): Allow quitting when we don't have a group buffer.
 +
 +2012-06-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mml.el (mml-generate-mime):
 +      Allow specifying what the top-level part type is.
 +
 +      * gnus-sum.el (gnus-auto-center-summary):
 +      `scroll-margin' isn't defined on XEmacs.
 +
 +2012-06-26  Philipp Haselwarter  <philipp.haselwarter@gmx.de>  (tiny change)
 +
 +      * gnus-sum.el (gnus-auto-center-summary):
 +      Set default to respect `scroll-margin'.
 +
 +2012-06-26  Elias Oltmanns  <eo@nebensachen.de>  (tiny change)
 +
 +      * gnus-cite.el (gnus-dissect-cited-text): A single line without
 +      citation prefix within a block of cited text should be considered
 +      part of that block *only* if it is a blank line.
 +
 +2012-06-26  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-find-fill-point): Remove unused code; don't break a line
 +      before kinsoku-bol characters nor within kinsoku-eol characters.
 +
 +2012-06-26  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-sync.el (gnus-topic-alist, gnus-group-topic)
 +      (gnus-topic-create-topic, gnus-topic-enter-dribble):
 +      Silence compiler.
 +      (gnus-sync-read): Use mapc instead of mapcar.
 +
 +      * mm-archive.el: Require mm-decode for some macros.
 +      (gnus-recursive-directory-files, mailcap-extension-to-mime):
 +      Silence the byte compiler.
 +      (mm-archive-decoders): New function that returns the value of
 +      the mm-archive-decoders variable.
 +
 +      * mm-decode.el:
 +      Don't require mm-archive; autoload mm-archive functions instead.
 +      (mm-dissect-singlepart): Use the function mm-archive-decoders.
 +
 +      * nnmail.el (mail-send-and-exit): Silence the byte compiler.
 +
 +2012-06-26  Peter Munster  <pmrb@free.fr>
 +
 +      * gnus-demon.el (gnus-demon-timers): Now a plist (function -> timer).
 +      (gnus-demon-cancel): Ditto.
 +      (gnus-demon-run-callback): When function cannot be called due to low
 +      idleness, call it when idleness reaches the expected value, instead
 +      of waiting another timer period.
 +      (gnus-demon-init): Add `time' to arguments of call-back.
 +
 +2012-06-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.el: Register gnus-registry functions.
 +
 +      * gnus-registry.el (gnus-try-warping-via-registry):
 +      Moved here and indent.
 +
 +      * gnus-int.el (gnus-warp-to-article):
 +      Check whether the registry is enabled before warping.
 +
 +2012-06-26  Dave Abrahams  <dave@boostpro.com>
 +
 +      * gnus-sum.el (gnus-summary-insert-subject): Record information
 +      in the registry about each article retrieved.
 +
 +      * gnus-int.el (gnus-select-group-with-message-id): New function.
 +      (gnus-try-warping-via-registry): Ditto.
 +      (gnus-warp-to-article): Fall back on the registry.
 +
 +2012-06-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-fetch-partial-articles): Minor doc string fixup.
 +
 +2012-06-26  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-msg.el (gnus-summary-resend-message-insert-gcc): Assume that
 +      gnus-gcc-self-resent-messages may be a group parameter.
 +      (gnus-summary-resend-message):
 +      Don't encode encoded words in header when Gcc'ing resent message.
 +
 +2012-06-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-insert): Treat non-breaking space just like normal
 +      space.  This seems to produce more pleasing results.
 +      (shr-insert):
 +      Only insert a blank line if we're starting from an image.
 +      (shr-tag-br):
 +      Allow <br> to end lines or to make a single blank line.
 +      (shr-ensure-paragraph): Consider lines with white space to be blank.
 +
 +2012-06-26  Christopher Schmidt  <christopher@ch.ristopher.com>
 +
 +      * gnus-msg.el (gnus-inews-do-gcc): Add gnus-gcc-pre-body-encode-hook
 +      and gnus-gcc-post-body-encode-hook.
 +
 +2012-06-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mm-decode.el (mm-dissect-singlepart):
 +      Guess what the type of application/octet-stream parts really is.
 +
 +      * gnus-sum.el (gnus-propagate-marks): Remove.
 +
 +2012-06-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nntp.el (nntp-coding-system-for-read): Remove.
 +      (nntp-coding-system-for-write): Ditto.
 +      (nntp-open-connection): Just use `binary' directly.
 +
 +2012-06-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * registry.el (registry-usage-test, registry-persistence-test):
 +      Move to tests/gnustest-registry.el.
 +      (registry-make-testable-db, registry-match-test)
 +      (registry-instantiation-test): Move to tests/gnustest-registry.el.
 +
 +      * gnus-registry.el (gnus-registry-misc-test)
 +      (gnus-registry-usage-test): Move to tests/gnustest-registry.el.
 +
 +      * tests/gnustest-registry.el:
 +      New file with the registry and gnus-registry ERT tests.
 +
 +2012-06-26  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-msg.el (gnus-summary-resend-message):
 +      Make gnus-summary-resend-message-insert-gcc be last item in
 +      message-header-setup-hook.
 +
 +2012-06-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnfolder.el (nnfolder-marks-directory, nnfolder-marks-is-evil)
 +      (nnfolder-marks, nnfolder-marks-file-suffix)
 +      (nnfolder-marks-modtime): Remove.
 +      (nnfolder-open-server): Don't use marks.
 +      (nnfolder-request-delete-group): Ditto.
 +      (nnfolder-request-rename-group): Ditto.
 +      (nnfolder-request-set-mark, nnfolder-request-marks)
 +      (nnfolder-group-marks-pathname, nnfolder-marks-changed-p)
 +      (nnfolder-save-marks, nnfolder-open-marks): Remove.
 +
 +      * nnml.el (nnml-marks-is-evil, nnml-marks-file-name, nnml-marks)
 +      (nnml-marks-modtime): Remove.
 +      (nnml-request-delete-group): Don't use marks.
 +      (nnml-request-rename-group): Ditto.
 +      (nnml-request-set-mark, nnml-request-marks, nnml-marks-changed-p)
 +      (nnml-save-marks, nnml-open-marks): Remove.
 +
 +      * nntp.el (nntp-marks-is-evil, nntp-marks-file-name, nntp-marks)
 +      (nntp-marks-modtime, nntp-marks-directory, nntp-request-set-mark)
 +      (nntp-request-marks, nntp-marks-directory, nntp-marks-changed-p)
 +      (nntp-save-marks, nntp-open-marks, nntp-possibly-create-directory)
 +      (nntp-server-to-method-cache): Remove.
 +
 +      * shr.el (shr-rescale-image): Fix wrong merge.
 +
 +2012-06-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-remove-trailing-whitespace):
 +      Really delete the padding on too-wide lines.
 +
 +2012-06-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mm-archive.el (mm-archive-dissect-and-inline): New function.
 +      (mm-archive-dissect-and-inline): Fix up the undisplayer.
 +
 +      * mm-decode.el (mm-display-external): Output the text from
 +      the command in the buffer after the command finished.
 +      This makes text-based commands behave better.
 +
 +2012-06-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (smtpmail-smtp-user): Silence compiler warning.
 +
 +2012-06-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (message-multi-smtp-send-mail): Also allow specifying
 +      the SMTP user name.
 +
 +2012-06-26  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-sum.el (gnus-summary-article-map): Fix typo.
 +
 +2012-06-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (message-multi-smtp-send-mail): New function.
 +      (message-multi-smtp-send-mail): Respect the X-Message-SMTP-Method
 +      header to implement multi-SMTP functionality.
 +
 +      * gnus-agent.el (gnus-agent-send-mail-function): Removed.
 +      (gnus-agentize): Don't set it.
 +      (gnus-agent-send-mail): Don't use it.
 +
 +      * gnus-sum.el (gnus-summary-widget-backward):
 +      New function and keystroke.
 +
 +      * shr.el (shr-put-image): Remove underlines from sliced images.
 +      (shr-zoom-image): Compute the region to be replaced more correctly.
 +
 +2012-06-26  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-msg.el (gnus-gcc-self-resent-messages): New user option.
 +      (gnus-summary-resend-message-insert-gcc): New function.
 +      (gnus-summary-resend-message): Modify message-header-setup-hook and
 +      message-sent-hook to make it work for Gcc.
 +      (gnus-inews-do-gcc): Update the number of unread articles of groups
 +      that messages are Gcc'd to.
 +
 +      * message.el (message-resend): Run message-sent-hook to do Gcc.
 +
 +2012-06-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-registry.el (gnus-registry-fixup-registry):
 +      Move the message to a higher level to silence compilation.
 +
 +      * gnus-art.el (gnus-shr-put-image): Take and pass on a `flags'
 +      parameter to allow controlling the scaling.
 +
 +      * shr.el (shr-zoom-image): New command and keystroke.
 +      (shr-put-image): Take a `size' flag to say how to scale the image.
 +
 +      * mm-archive.el (mm-dissect-archive): Use it to get all file names.
 +      Use recursive deletion.
 +      (mm-dissect-archive): Add support for zip files.
 +
 +      * gnus-util.el (gnus-recursive-directory-files): New function.
 +
 +      * mm-archive.el (mm-archive-list-files): Inline text and image parts.
 +      (mm-archive-decoders): Add tgz support.
 +
 +      * mm-decode.el (mm-shr): Make sure that the HTML ends with a newline.
 +      Otherwise inserting text into the Gnus buffer can look odd.
 +
 +      * gnus-art.el (gnus-mime-inline-part): Slight clean-up.
 +
 +      * mm-archive.el (mm-archive-decoders): Add support for tar.
 +
 +      * gnus.el (gnus-logo-color-alist): Change the colours for Ma Gnus.
 +
 +      * nnmail.el (nnmail-extra-headers): Add Cc to the default.
 +
 +2012-06-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mm-decode.el (mm-dissect-singlepart): Check that the decoder exists.
 +
 +      * mm-archive.el: New file.
 +
 +      * mm-decode.el (mm-dissect-singlepart):
 +      Use it to decode ms-tnef files.
 +
 +      * mm-util.el (mm-find-buffer-file-coding-system): Comment fix.
 +
 +      * message.el (message-goto-*): Make all the `message-goto-*' commands
 +      push the mark before moving point.  This makes it easier to go back
 +      to where you came from after editing whatever you jumped to.
 +
 +2012-06-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-sync.el (gnus-sync-newsrc-groups): Quote normally.
 +      (gnus-sync-lesync-pre-save-group-entry): Remove invalid invlists.
 +      (gnus-sync-lesync-normalize-group-entry): Ignore a few more keys.
 +
 +2012-06-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * spam.el: Move BBDB autoloads.
 +      (spam-exists-in-BBDB-p):
 +      New function to do the BBDB search directly in BBDB 2 and 3.
 +      (spam-check-BBDB): Use it.
 +      (spam-enter-ham-BBDB): Use it.
 +
 +2012-06-26  Peter Munster  <pmrb@free.fr>  (tiny change)
 +
 +      * gnus-group.el (gnus-group-get-new-news):
 +      New parameter `one-level' for scanning exactly one level.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Ditto.
 +
 +2012-06-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-sync.el: More commentary about setup.
 +
 +2012-06-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-sync.el: More commentary about `gnus-sync-read' issues.
 +
 +2012-06-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-sync.el: Improve docs about CouchDB admins.
 +
 +2012-06-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-sync.el (gnus-sync-lesync-setup): Fix salt when user setup is
 +      not needed.  Provide xmlplistread list function to produce XML plist
 +      output for non-Gnus LeSync clients.
 +
 +2012-06-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-sync.el: Add LeSync synchronization backend and logic to read
 +      and save against it.  Group subscriptions, read marks, other marks,
 +      subscription levels, topic names, and topic offsets (the group's
 +      position within the topic) are saved.  This is an experimental
 +      backend and may change significantly.  Load json.el from
 +      the gnus-fallback-lib if it's not available otherwise.
 +      (gnus-sync-save): Don't use `apply-partially' because of XEmacs.
 +
 +2012-06-26  David Engster  <dengste@eml.cc>
 +
 +      * tests/gnustest-nntp.el: New file for simple NNTP testing.
 +
 +2012-06-18  Nelson Ferreira  <nelson.ferreira@ieee.org>  (tiny change)
 +
 +      * gnus-win.el (gnus-configure-frame): Pass an arg to window-dedicated-p.
 +
 +2012-06-17  Toke Høiland-Jørgensen  <toke@toke.dk>  (tiny change)
  
        * nnmaildir.el (nnmaildir-request-expire-articles): Ensure that `time'
        is an integer to avoid later problems.
  
 -2012-06-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +2012-06-17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
        * shr.el: Add a iso-8859-1 cookie to make stuff work under other
        locales.
  
 -2012-05-21  Katsumi Yamaoka  <yamaoka@jpl.org>
 +2012-04-14  Wolfgang Jenkner  <wjenkner@inode.at>
 +
 +      * gnus-agent.el (gnus-agent-retrieve-headers): Recalculate the range of
 +      articles when fetch-old is non-nil (bug#11370).
 +
 +2012-06-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-group.el (gnus-group-get-new-news): Respect
 +      `gnus-group-use-permanent-levels', as documented (bug#11638).
 +
 +2012-06-10  Dave Abrahams  <dave@boostpro.com>
 +
 +      * gnus-int.el (gnus-warp-to-article): Limit registry warping to real
 +      groups (bug#11641).
 +
 +2012-06-07  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-msg.el (gnus-msg-mail): Warn the user about Gnus not running
 +      (bug#11514).
 +
 +2012-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * nntp.el: Stop the `letf' madness.
 +      (nntp--report-1): New var.
 +      (nntp-report): Merge nntp-report-1 into it.
 +      (nntp-with-open-group-function): Set nntp--report-1 instead of modifying
 +      the nntp-report function.
 +
 +      * auth-source.el: Fix comment-style to follow the convention.
 +
 +2012-05-27  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        * gnus-msg.el (gnus-msg-mail): Ensure that gnus-newsgroup-name is
        a string so that Gcc works (bug#11514).
  
 -2012-04-21  Andreas Schwab  <schwab@linux-m68k.org>
 +2012-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * legacy-gnus-agent.el (gnus-agent-unhook-expire-days):
 +      * gnus-demon.el (gnus-demon-init): Don't bother with type-of.
 +
 +2012-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * gnus-win.el (gnus-configure-frame): Don't signal an error when
 +      jumping to *Server* from a dedicated *Group* window.
 +      (gnus-configure-frame): CSE.
 +
 +      * gnus-registry.el: Minor style cleanup.
 +      (gnus-registry--set/remove-mark): New function, extracted from
 +      gnus-registry-install-shortcuts.
 +      (gnus-registry-install-shortcuts): Use it.
 +
 +2012-05-25  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * nnspool.el (news-path): Use eval-and-compile.
 +
 +2012-05-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * nnspool.el (news-directory, news-path, news-inews-program):
 +      Move here from paths.el.  Don't see a need for these to be autoloaded.
 +
 +      * gnus.el (gnus-default-nntp-server): Make it a defcustom.
 +      Merge in doc from paths.el version.  Don't see any need for this to be
 +      autoloaded, or for the warning about users not setting it.
 +
 +2012-05-04  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix minor Y10k bug.
 +      * nnweb.el (nnweb-google-parse-1): Don't assume years have 4 digits.
 +
 +2012-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * nnimap.el (nnimap-open-connection-1): Don't leave an "opening..."
 +      message once it's actually open.
 +
 +2012-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * auth-source.el (auth-source--aput-1, auth-source--aput)
 +      (auth-source--aget): New functions and macros.
 +      Use them instead of aput/aget.
 +
 +2012-04-27  Andreas Schwab  <schwab@linux-m68k.org>
  
        * gnus.el (debbugs-gnu): Don't override existing autoload definition.
  
 -2012-04-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +2012-04-26  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * plstore.el (plstore-called-interactively-p): New compat macro copied
 +      from message.el.
 +      (plstore-mode): Use it.
 +
 +2012-04-26  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * plstore.el: Revive the editing feature.
 +      (plstore-mode): New mode to edit plstore file.
 +      (plstore-mode-toggle-display, plstore-mode-original)
 +      (plstore-mode-decoded): New command.
 +      (plstore--encode, plstore--decode, plstore--write-contents-functions)
 +      (plstore--insert-buffer, plstore--make): New function.
 +      (plstore-open, plstore-save): Simplify by using them.
 +
 +2012-04-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * nndraft.el (nndraft-request-list): Fix declaration.
 +
 +2012-04-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
        * gnus-msg.el (gnus-inews-insert-gcc): Don't do the alist stuff when we
        don't have a current group.
  
 -2012-04-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 -
        * gnus-msg.el (gnus-inews-insert-gcc): Protect against when we don't
        have a group name.
  
        * gnus-start.el (gnus-read-newsrc-el-file): Protect against broken
        .newsrc.el files.
  
 +2012-04-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-msg.el (gnus-summary-cancel-article): See what From header we
 +      would have gotten if we posted to the group, and use that to compare
 +      against the message we want to cancel (bug#10808).
 +
  2012-03-22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
        * auth-source.el (auth-source-netrc-create): Quote tokens that contain
  
  2011-06-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * dgnushack.el: Autoload sha1 on XEmacs.
 -
        * gnus-group.el (gnus-read-ephemeral-emacs-bug-group): Take an optional
        quit window configuration.
  
  2010-11-29  Binjo  <binjo.cn@gmail.com>  (tiny change)
  
        * nnimap.el (nnimap-open-connection-1): w32 open-network-stream doesn't
 -      seem to accept strings-with-numbers as port numbers,
 +      seem to accept strings-with-numbers as port numbers.
  
  2010-11-29  Andrew Cohen  <cohen@andy.bu.edu>
  
  
  2010-11-25  Julien Danjou  <julien@danjou.info>
  
 -      * shr-color.el (shr-color->hexadecimal): Use color-rgb->hex
 +      * shr-color.el (shr-color->hexadecimal): Use color-rgb->hex.
  
        * color.el: Rename from color-lab.el
        (color-rgb->hex): Add.
  
  2004-05-20  Danny Siu  <dsiu@adobe.com>
  
 -      * gnus-sum.el (gnus-summary-recenter): Summery buffer was not auto
 -      centered even when gnus-auto-center-summary is t
 +      * gnus-sum.el (gnus-summary-recenter): Summary buffer was not auto
 +      centered even when gnus-auto-center-summary is t.
  
  2004-05-22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
  
        * gnus.el (gnus-method-to-server): Move defsubst before first use.
  
 -      * gnus-diary.el (gnus-diary-header-schedule): caddr -> car (cddr
 +      * gnus-diary.el (gnus-diary-header-schedule): caddr -> car (cddr.
  
        * gnus-art.el (gnus-article-edit-mode): Define before first
        reference.
  
        * gnus-sum.el (gnus-select-newgroup): Replace inline code with
        gnus-agent-possibly-alter-active.
 -      (gnus-adjust-marked-articles): Faster handling of simple lists
 +      (gnus-adjust-marked-articles): Faster handling of simple lists.
  
  2004-01-21  Jesper Harder  <harder@ifa.au.dk>
  
  
  See ChangeLog.2 for earlier changes.
  
 -  Copyright (C) 2004-2012  Free Software Foundation, Inc.
 +  Copyright (C) 2004-2012 Free Software Foundation, Inc.
  
    This file is part of GNU Emacs.