changeset 68693:f06d0aec15a7

(Format of ChangeLog): New node, split out from ChangeLog. (ChangeLog): Clarifications in the remaining text. (Create Tags Table, Etags Regexps, Select Tags Table): Cleanups. (Find Tag): Add @w. (Tags Search): Explain tag table order here. Simplify grep ref. (List Tags): tags-tag-face is a variable, not a face. (Emerge): Cleanups.
author Richard M. Stallman <rms@gnu.org>
date Wed, 08 Feb 2006 00:00:22 +0000
parents 06780217e0ec
children 6e0262b41466
files man/maintaining.texi
diffstat 1 files changed, 103 insertions(+), 146 deletions(-) [+]
line wrap: on
line diff
--- a/man/maintaining.texi	Tue Feb 07 23:55:42 2006 +0000
+++ b/man/maintaining.texi	Wed Feb 08 00:00:22 2006 +0000
@@ -14,6 +14,7 @@
 
 @menu
 * Change Log::	        Maintaining a change history for your program.
+* Format of ChangeLog:: What the change log file looks like.
 * Tags::	        Go direct to any function in your program in one
 			  command.  Tags remembers which file it is in.
 * Emerge::	        A convenient way of merging two versions of a program.
@@ -22,6 +23,14 @@
 @node Change Log
 @section Change Logs
 
+  A change log file contains a chronological record of when and why you
+have changed a program, consisting of a sequence of entries describing
+individual changes.  Normally it is kept in a file called
+@file{ChangeLog} in the same directory as the file you are editing, or
+one of its parent directories.  A single @file{ChangeLog} file can
+record changes for all the files in its directory and all its
+subdirectories.
+
 @cindex change log
 @kindex C-x 4 a
 @findex add-change-log-entry-other-window
@@ -32,25 +41,49 @@
 parent---that is useful for making log entries for functions that
 have been deleted in the current version.
 
-  A change log file contains a chronological record of when and why you
-have changed a program, consisting of a sequence of entries describing
-individual changes.  Normally it is kept in a file called
-@file{ChangeLog} in the same directory as the file you are editing, or
-one of its parent directories.  A single @file{ChangeLog} file can
-record changes for all the files in its directory and all its
-subdirectories.
+  @kbd{C-x 4 a} visits the change log file and creates a new entry
+unless the most recent entry is for today's date and your name.  It
+also creates a new item for the current file.  For many languages, it
+can even guess the name of the function or other object that was
+changed.
+
+@vindex add-log-keep-changes-together
+  When the variable @code{add-log-keep-changes-together} is
+non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file
+rather than starting a new item.
+
+@vindex add-log-always-start-new-record
+  If @code{add-log-always-start-new-record} is non-@code{nil},
+@kbd{C-x 4 a} always makes a new entry, even if the last entry
+was made by you and on the same date.
 
-  You should put a copyright notice and permission notice at the
-end of the change log file.  Here is an example:
+@vindex change-log-version-info-enabled
+@vindex change-log-version-number-regexp-list
+@cindex file version in change log entries
+  If the value of the variable @code{change-log-version-info-enabled}
+is non-@code{nil}, @kbd{C-x 4 a} adds the file's version number to the
+change log entry.  It finds the version number by searching the first
+ten percent of the file, using regular expressions from the variable
+@code{change-log-version-number-regexp-list}.
 
-@example
-Copyright 1997, 1998 Free Software Foundation, Inc.
-Copying and distribution of this file, with or without modification, are
-permitted provided the copyright notice and this notice are preserved.
-@end example
+@cindex Change Log mode
+@findex change-log-mode
+  The change log file is visited in Change Log mode.  In this major
+mode, each bunch of grouped items counts as one paragraph, and each
+entry is considered a page.  This facilitates editing the entries.
+@kbd{C-j} and auto-fill indent each new line like the previous line;
+this is convenient for entering the contents of an entry.
 
-@noindent
-Of course, you should substitute the proper years and copyright holder.
+@findex change-log-merge
+  You can use the command @kbd{M-x change-log-merge} to merge other
+log files into a buffer in Change Log Mode, preserving the date
+ordering of entries.
+
+  Version control systems are another way to keep track of changes in your
+program and keep a change log.  @xref{Log Buffer}.
+
+@node Format of ChangeLog
+@section Format of ChangeLog
 
   A change log entry starts with a header line that contains the current
 date, your name, and your email address (taken from the variable
@@ -84,90 +117,17 @@
 change, in different places), group them by leaving no blank line
 between them.
 
-  @kbd{C-x 4 a} visits the change log file and creates a new entry
-unless the most recent entry is for today's date and your name.  It
-also creates a new item for the current file.  For many languages, it
-can even guess the name of the function or other object that was
-changed.
-
-@vindex add-log-keep-changes-together
-  When the variable @code{add-log-keep-changes-together} is
-non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file
-rather than starting a new item.
-
-@vindex change-log-version-info-enabled
-@vindex change-log-version-number-regexp-list
-@cindex file version in change log entries
-  If the value of the variable @code{change-log-version-info-enabled}
-is non-@code{nil}, @kbd{C-x 4 a} adds the file's version number to the
-change log entry.  It finds the version number by searching the first
-ten percent of the file, using regular expressions from the variable
-@code{change-log-version-number-regexp-list}.
+  You should put a copyright notice and permission notice at the
+end of the change log file.  Here is an example:
 
-@vindex add-log-always-start-new-record
-  If @code{add-log-always-start-new-record} is non-@code{nil},
-@kbd{C-x 4 a} always makes a new entry, even if the last entry
-was made by you and on the same date.
-
-@cindex Change Log mode
-@findex change-log-mode
-  The change log file is visited in Change Log mode.  In this major
-mode, each bunch of grouped items counts as one paragraph, and each
-entry is considered a page.  This facilitates editing the entries.
-@kbd{C-j} and auto-fill indent each new line like the previous line;
-this is convenient for entering the contents of an entry.
-
-@findex change-log-merge
-  You can use the command @kbd{M-x change-log-merge} to merge other
-log files into a buffer in Change Log Mode, preserving the date
-ordering of entries.
-
-@findex change-log-redate
-@cindex converting change log date style
-  Versions of Emacs before 20.1 used a different format for the time of
-the change log entry:
-
-@smallexample
-Fri May 25 11:23:23 1993 Richard Stallman  <rms@@gnu.org>
-@end smallexample
+@example
+Copyright 1997, 1998 Free Software Foundation, Inc.
+Copying and distribution of this file, with or without modification, are
+permitted provided the copyright notice and this notice are preserved.
+@end example
 
 @noindent
-The @kbd{M-x change-log-redate} command converts all the old-style
-date entries in the change log file visited in the current buffer to
-the new format, to make the file uniform in style.  This is handy when
-entries are contributed by many different people, some of whom use old
-versions of Emacs.
-
-  Version control systems are another way to keep track of changes in your
-program and keep a change log.  @xref{Log Buffer}.
-
-@ignore
-@c This is commented out because the command is specific
-@c to maintenance of Emacs itself.
-
-@node Authors
-@section @file{AUTHORS} files
-@cindex @file{AUTHORS} file
-
-  Programs which have many contributors usually include a file named
-@file{AUTHORS} in their distribution, which lists the individual
-contributions.  Emacs has a special command for maintaining the
-@file{AUTHORS} file that is part of the Emacs distribution.
-
-@findex authors
-  The @kbd{M-x authors} command prompts for the name of the root of the
-Emacs source directory.  It then scans @file{ChangeLog} files and Lisp
-source files under that directory for information about authors of
-individual packages, and people who made changes in source files, and
-puts the information it gleans into a buffer named @samp{*Authors*}.
-You can then edit the contents of that buffer and merge it with the
-existing @file{AUTHORS} file.
-
-  Do not assume that this command finds all the contributors; don't
-assume that a person not listed in the output was not a contributor.
-If you merged in someone's contribution and did not put his name
-in the change log, he won't show up in @kbd{M-x authors} either.
-@end ignore
+Of course, you should substitute the proper years and copyright holder.
 
 @node Tags
 @section Tags Tables
@@ -425,15 +385,15 @@
 a tag, or records it for the wrong file, then Emacs cannot possibly
 find its definition until you update the tags table.  However, if the
 position recorded in the tags table becomes a little bit wrong (due to
-other editing), the only consequence is a slight delay in finding the
+other editing), the worst consequence is a slight delay in finding the
 tag.  Even if the stored position is very far wrong, Emacs will still
-find the tag, after searching most of the file for it.  Even that
-delay is hardly noticeable with today's computers.
+find the tag, after searching most of the file for it.  That delay is
+hardly noticeable with today's computers.
 
-  So you should update a tags table when you define new tags that you want
-to have listed, or when you move tag definitions from one file to another,
-or when changes become substantial.  Normally there is no need to update
-the tags table after each edit, or even every day.
+   Thus, there is no need to update the tags table after each edit.
+You should update a tags table when you define new tags that you want
+to have listed, or when you move tag definitions from one file to
+another, or when changes become substantial.
 
   One tags table can virtually include another.  Specify the included
 tags file name with the @samp{--include=@var{file}} option when
@@ -480,21 +440,21 @@
 standard input and mark the produced tags as belonging to the file
 @var{file}.
 
-  @samp{etags --help} prints the list of the languages @code{etags}
+  @samp{etags --help} outputs the list of the languages @code{etags}
 knows, and the file name rules for guessing the language.  It also prints
 a list of all the available @code{etags} options, together with a short
 explanation.  If followed by one or more @samp{--language=@var{lang}}
-options, prints detailed information about how tags are generated for
+options, it outputs detailed information about how tags are generated for
 @var{lang}.
 
 @node Etags Regexps
 @subsection Etags Regexps
 
   The @samp{--regex} option provides a general way of recognizing tags
-based on regexp matching.  You can freely intermix it with file names.
+based on regexp matching.  You can freely intermix this option with
+file names, and each one applies to the source files that follow it.
 If you specify multiple @samp{--regex} options, all of them are used
-in parallel, but each one applies only to the source files that follow
-it.  The syntax is:
+in parallel.  The syntax is:
 
 @smallexample
 --regex=[@var{@{language@}}]/@var{tagregexp}/[@var{nameregexp}/]@var{modifiers}
@@ -537,8 +497,8 @@
 @end table
 
   The @samp{-R} option cancels all the regexps defined by preceding
-@samp{--regex} options.  It applies to the file names following it, as
-you can see from the following example:
+@samp{--regex} options.  It too applies to the file names following
+it.  Here's an example:
 
 @smallexample
 etags --regex=/@var{reg1}/i voo.doo --regex=/@var{reg2}/m \
@@ -647,30 +607,25 @@
 
 @vindex tags-file-name
 @findex visit-tags-table
-  Emacs has at any time one @dfn{selected} tags table, and all the commands
-for working with tags tables use the selected one.  To select a tags table,
-type @kbd{M-x visit-tags-table}, which reads the tags table file name as an
-argument.  The name @file{TAGS} in the default directory is used as the
-default file name.
+  Emacs has at any time one @dfn{selected} tags table, and all the
+commands for working with tags tables use the selected one.  To select
+a tags table, type @kbd{M-x visit-tags-table}, which reads the tags
+table file name as an argument, with @file{TAGS} in the default
+directory as the default.
 
-  All this command does is store the file name in the variable
-@code{tags-file-name}.  Emacs does not actually read in the tags table
-contents until you try to use them.  Setting this variable yourself is just
-as good as using @code{visit-tags-table}.  The variable's initial value is
-@code{nil}; that value tells all the commands for working with tags tables
-that they must ask for a tags table file name to use.
+  Emacs does not actually read in the tags table contents until you
+try to use them; all @code{visit-tags-table} does is store the file
+name in the variable @code{tags-file-name}, and setting the variable
+yourself is just as good.  The variable's initial value is @code{nil};
+that value tells all the commands for working with tags tables that
+they must ask for a tags table file name to use.
 
   Using @code{visit-tags-table} when a tags table is already loaded
 gives you a choice: you can add the new tags table to the current list
 of tags tables, or start a new list.  The tags commands use all the tags
 tables in the current list.  If you start a new list, the new tags table
 is used @emph{instead} of others.  If you add the new table to the
-current list, it is used @emph{as well as} the others.  When the tags
-commands scan the list of tags tables, they don't always start at the
-beginning of the list; they start with the first tags table (if any)
-that describes the current file, proceed from there to the end of the
-list, and then scan from the beginning of the list until they have
-covered all the tables in the list.
+current list, it is used @emph{as well as} the others.
 
 @vindex tags-table-list
   You can specify a precise list of tags tables by setting the variable
@@ -749,13 +704,13 @@
 @findex find-tag-other-frame
   Like most commands that can switch buffers, @code{find-tag} has a
 variant that displays the new buffer in another window, and one that
-makes a new frame for it.  The former is @kbd{C-x 4 .}, which invokes
-the command @code{find-tag-other-window}.  The latter is @kbd{C-x 5 .},
+makes a new frame for it.  The former is @w{@kbd{C-x 4 .}}, which invokes
+the command @code{find-tag-other-window}.  The latter is @w{@kbd{C-x 5 .}},
 which invokes @code{find-tag-other-frame}.
 
   To move back to places you've found tags recently, use @kbd{C-u -
 M-.}; more generally, @kbd{M-.} with a negative numeric argument.  This
-command can take you to another buffer.  @kbd{C-x 4 .} with a negative
+command can take you to another buffer.  @w{@kbd{C-x 4 .}} with a negative
 argument finds the previous tag location in another window.
 
 @kindex M-*
@@ -781,9 +736,13 @@
 @cindex search and replace in multiple files
 @cindex multiple-file search and replace
 
-  The commands in this section visit and search all the files listed in the
-selected tags table, one by one.  For these commands, the tags table serves
-only to specify a sequence of files to search.
+  The commands in this section visit and search all the files listed
+in the selected tags table, one by one.  For these commands, the tags
+table serves only to specify a sequence of files to search.  These
+commands scan the list of tags tables starting with the first tags
+table (if any) that describes the current file, proceed from there to
+the end of the list, and then scan from the beginning of the list
+until they have covered all the tables in the list.
 
 @table @kbd
 @item M-x tags-search @key{RET} @var{regexp} @key{RET}
@@ -846,9 +805,7 @@
 
   It may have struck you that @code{tags-search} is a lot like
 @code{grep}.  You can also run @code{grep} itself as an inferior of
-Emacs and have Emacs show you the matching lines one by one.  This works
-much like running a compilation; finding the source locations of the
-@code{grep} matches works like finding the compilation errors.
+Emacs and have Emacs show you the matching lines one by one.
 @xref{Grep Searching}.
 
 @node List Tags
@@ -882,9 +839,9 @@
 
 @vindex tags-tag-face
 @vindex tags-apropos-additional-actions
-You can customize the appearance of the output with the face
-@code{tags-tag-face}.  You can display additional output with @kbd{M-x
-tags-apropos} by customizing the variable
+  You can customize the appearance of the output by setting the
+variable @code{tags-tag-face} to a face.  You can display additional
+output with @kbd{M-x tags-apropos} by customizing the variable
 @code{tags-apropos-additional-actions}---see its documentation for
 details.
 
@@ -896,11 +853,11 @@
 @cindex Emerge
 @cindex merging files
 
-It's not unusual for programmers to get their signals crossed and modify
-the same program in two different directions.  To recover from this
-confusion, you need to merge the two versions.  Emerge makes this
-easier.  See also @ref{Comparing Files}, for commands to compare
-in a more manual fashion, and @ref{Top, Ediff,, ediff, The Ediff Manual}.
+  It's not unusual for programmers to get their signals crossed and
+modify the same program in two different directions.  To recover from
+this confusion, you need to merge the two versions.  Emerge makes this
+easier.  See also @ref{Comparing Files}, for other ways to compare
+files, and @ref{Top, Ediff,, ediff, The Ediff Manual}.
 
 @menu
 * Overview of Emerge::	How to start Emerge.  Basic concepts.
@@ -918,7 +875,7 @@
 @node Overview of Emerge
 @subsection Overview of Emerge
 
-To start Emerge, run one of these four commands:
+  To start Emerge, run one of these four commands:
 
 @table @kbd
 @item M-x emerge-files