texi2html-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Texi2html-cvs] texi2html/test info_coverage/Makefile.am info_c...


From: Patrice Dumas
Subject: [Texi2html-cvs] texi2html/test info_coverage/Makefile.am info_c...
Date: Sun, 02 Aug 2009 13:12:08 +0000

CVSROOT:        /cvsroot/texi2html
Module name:    texi2html
Changes by:     Patrice Dumas <pertusus>        09/08/02 13:12:06

Modified files:
        test/info_coverage: Makefile.am Makefile.in def_in_copying.texi 
                            simple_def.texi 
                            star_at_command_in_formats.texi tests.txt 
        test/info_coverage/res/center_flush: center_flush.html 
        test/info_coverage/res_info/commentexample: commentexample.2 
        test/info_coverage/res_info/images_quotes: images_quotes.info 
        test/info_coverage/res_info/long_uref_after_item: 
                                                          
long_uref_after_item.2 
        test/xemacs_manual/res/xemacs: xemacs_1.html 
        test/xemacs_manual/res/xemacs_frame: xemacs_1.html 
        test/coverage  : Makefile.am Makefile.in formatting.texi 
                         tests.txt 
        test/coverage/res/comments: comments.html 
        test/coverage/res/comments_info: comments.info 
        test/coverage/res/formatting: formatting.2 formatting.html 
        test/coverage/res/pass0_macros: pass0_macros.html 
        test/coverage/res/texi_comments: comments.2 
        test/coverage/res/texi_formatting: formatting.2 
                                           formatting.passfirst 
                                           formatting.passtexi 
                                           formatting.texi 
        test/coverage/res/texi_imbrications: imbrications.2 
        test/coverage/res/texi_pass0_macros: pass0_macros.2 
        test/coverage/res_all/comments: comments.txt 
        test/coverage/res_all/comments_info: comments.info 
        test/coverage/res_all/formatting: formatting.2 
        test/coverage/res_all/pass0_macros: pass0_macros.txt 
        test/coverage/res_all/texi_comments: comments.2 
        test/coverage/res_all/texi_formatting: formatting.2 
                                               formatting.passfirst 
                                               formatting.passtexi 
                                               formatting.texi 
        test/coverage/res_all/texi_imbrications: imbrications.2 
        test/coverage/res_all/texi_pass0_macros: pass0_macros.2 
        test/coverage/res_info/comments: comments.info 
        test/coverage/res_info/comments_info: comments.info 
        test/coverage/res_info/formatting: formatting.2 
        test/coverage/res_info/pass0_macros: pass0_macros.info 
        test/coverage/res_info/texi_comments: comments.2 
        test/coverage/res_info/texi_formatting: formatting.2 
                                                formatting.passfirst 
                                                formatting.passtexi 
                                                formatting.texi 
        test/coverage/res_info/texi_imbrications: imbrications.2 
        test/coverage/res_info/texi_pass0_macros: pass0_macros.2 
Added files:
        test/info_coverage: note_in_strong.texi 
        test/info_coverage/res/note_in_strong: note_in_strong.1 
                                               note_in_strong.2 
                                               note_in_strong.html 
        test/info_coverage/res_all/note_in_strong: note_in_strong.1 
                                                   note_in_strong.2 
                                                   note_in_strong.txt 
        test/info_coverage/res_info/note_in_strong: note_in_strong.1 
                                                    note_in_strong.2 
                                                    note_in_strong.info 
        test/xemacs_manual/res/texi_xemacs: xemacs.texi.first 
        test/xemacs_manual/res_all/texi_xemacs: xemacs.texi.first 
        test/xemacs_manual/res_info/texi_xemacs: xemacs.texi.first 
        test/texi2html_manual/res/texi_texi2html: texi2html.texi.first 
        test/texi2html_manual/res_all/texi_texi2html: 
                                                      texi2html.texi.first 
        test/texi2html_manual/res_info/texi_texi2html: 
                                                       texi2html.texi.first 
        test/coverage  : delcomment.texi 
        test/coverage/res/delcomment: delcomment.1 delcomment.2 
                                      delcomment.html 
        test/coverage/res/texi_comments: comments.texi.first 
        test/coverage/res/texi_delcomment: delcomment.2 
                                           delcomment.passfirst 
                                           delcomment.passtexi 
                                           delcomment.texi 
                                           delcomment.texi.first 
        test/coverage/res/texi_float: float.texi.first 
        test/coverage/res/texi_formats_titles: formats_titles.texi.first 
        test/coverage/res/texi_formatting: formatting.texi.first 
        test/coverage/res/texi_imbrications: imbrications.texi.first 
        test/coverage/res/texi_pass0_macros: pass0_macros.texi.first 
        test/coverage/res_all/delcomment: delcomment.1 delcomment.2 
                                          delcomment.txt 
        test/coverage/res_all/texi_comments: comments.texi.first 
        test/coverage/res_all/texi_delcomment: delcomment.2 
                                               delcomment.passfirst 
                                               delcomment.passtexi 
                                               delcomment.texi 
                                               delcomment.texi.first 
        test/coverage/res_all/texi_float: float.texi.first 
        test/coverage/res_all/texi_formats_titles: 
                                                   formats_titles.texi.first 
        test/coverage/res_all/texi_formatting: formatting.texi.first 
        test/coverage/res_all/texi_imbrications: imbrications.texi.first 
        test/coverage/res_all/texi_pass0_macros: pass0_macros.texi.first 
        test/coverage/res_info/delcomment: delcomment.1 delcomment.2 
                                           delcomment.info 
        test/coverage/res_info/texi_comments: comments.texi.first 
        test/coverage/res_info/texi_delcomment: delcomment.2 
                                                delcomment.passfirst 
                                                delcomment.passtexi 
                                                delcomment.texi 
                                                delcomment.texi.first 
        test/coverage/res_info/texi_float: float.texi.first 
        test/coverage/res_info/texi_formats_titles: 
                                                    formats_titles.texi.first 
        test/coverage/res_info/texi_formatting: formatting.texi.first 
        test/coverage/res_info/texi_imbrications: 
                                                  imbrications.texi.first 
        test/coverage/res_info/texi_pass0_macros: 
                                                  pass0_macros.texi.first 

Log message:
                * texi2html.pl, texi2html.init: treat @alias like a normal misc
                commmand.
                Keep @macros definitions in output, treat them as raw 
environments
                that can be nested.
                Warn for deprecated commands.
                * texi2html.init: @syncodeindex and @finalout swallow end of 
line.
                * formats/html.init: Don't double in title when the @top and 
                @settitle are the same.
                * texi2html.pl: add 0x7F as a comment character.
                Still provide the default output with --macro-expand.
                warning if macro with an argument number different than 1 
                is called without a {}.
                Read TEXINFO_OUTPUT_FORMAT in env to determine the output 
format, 
                if not overridden by a command line option.
                More error and warning messages, especially for info.
                Warn for superfluous @node arguments.
                Remove whitespaces after formats, even in last pass.
                * Makefile.am, documentlanguages.pl, 
regenerate_documentlanguages.pl:
                Gather language codes and regions from the iana registery file.
                * formats/info.init: remove last end of line in @image file.txt
                Warn if there is a float or anchor before first node.
                * tests/*: run only once to generate the the texi_* output.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/Makefile.am?cvsroot=texi2html&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/Makefile.in?cvsroot=texi2html&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/def_in_copying.texi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/simple_def.texi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/star_at_command_in_formats.texi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/tests.txt?cvsroot=texi2html&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/note_in_strong.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res/center_flush/center_flush.html?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res/note_in_strong/note_in_strong.1?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res/note_in_strong/note_in_strong.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res/note_in_strong/note_in_strong.html?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res_all/note_in_strong/note_in_strong.1?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res_all/note_in_strong/note_in_strong.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res_all/note_in_strong/note_in_strong.txt?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res_info/commentexample/commentexample.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res_info/images_quotes/images_quotes.info?cvsroot=texi2html&rev=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res_info/long_uref_after_item/long_uref_after_item.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res_info/note_in_strong/note_in_strong.1?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res_info/note_in_strong/note_in_strong.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/info_coverage/res_info/note_in_strong/note_in_strong.info?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/xemacs_manual/res/texi_xemacs/xemacs.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/xemacs_manual/res/xemacs/xemacs_1.html?cvsroot=texi2html&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/xemacs_manual/res/xemacs_frame/xemacs_1.html?cvsroot=texi2html&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/xemacs_manual/res_all/texi_xemacs/xemacs.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/xemacs_manual/res_info/texi_xemacs/xemacs.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/texi2html_manual/res/texi_texi2html/texi2html.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/texi2html_manual/res_all/texi_texi2html/texi2html.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/texi2html_manual/res_info/texi_texi2html/texi2html.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/Makefile.am?cvsroot=texi2html&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/Makefile.in?cvsroot=texi2html&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/formatting.texi?cvsroot=texi2html&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/tests.txt?cvsroot=texi2html&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/delcomment.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/comments/comments.html?cvsroot=texi2html&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/comments_info/comments.info?cvsroot=texi2html&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/delcomment/delcomment.1?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/delcomment/delcomment.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/delcomment/delcomment.html?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/formatting/formatting.2?cvsroot=texi2html&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/formatting/formatting.html?cvsroot=texi2html&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/pass0_macros/pass0_macros.html?cvsroot=texi2html&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_comments/comments.2?cvsroot=texi2html&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_comments/comments.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_delcomment/delcomment.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_delcomment/delcomment.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_delcomment/delcomment.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_delcomment/delcomment.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_delcomment/delcomment.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_float/float.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_formats_titles/formats_titles.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_formatting/formatting.2?cvsroot=texi2html&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_formatting/formatting.passfirst?cvsroot=texi2html&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_formatting/formatting.passtexi?cvsroot=texi2html&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_formatting/formatting.texi?cvsroot=texi2html&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_formatting/formatting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_imbrications/imbrications.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_imbrications/imbrications.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_pass0_macros/pass0_macros.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res/texi_pass0_macros/pass0_macros.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/comments/comments.txt?cvsroot=texi2html&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/comments_info/comments.info?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/delcomment/delcomment.1?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/delcomment/delcomment.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/delcomment/delcomment.txt?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/formatting/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/pass0_macros/pass0_macros.txt?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_comments/comments.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_comments/comments.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_delcomment/delcomment.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_delcomment/delcomment.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_delcomment/delcomment.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_delcomment/delcomment.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_delcomment/delcomment.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_float/float.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_formats_titles/formats_titles.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_formatting/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_formatting/formatting.passfirst?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_formatting/formatting.passtexi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_formatting/formatting.texi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_formatting/formatting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_imbrications/imbrications.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_imbrications/imbrications.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_pass0_macros/pass0_macros.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_all/texi_pass0_macros/pass0_macros.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/comments/comments.info?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/comments_info/comments.info?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/delcomment/delcomment.1?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/delcomment/delcomment.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/delcomment/delcomment.info?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/formatting/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/pass0_macros/pass0_macros.info?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_comments/comments.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_comments/comments.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_delcomment/delcomment.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_delcomment/delcomment.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_delcomment/delcomment.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_delcomment/delcomment.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_delcomment/delcomment.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_float/float.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_formats_titles/formats_titles.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_formatting/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_formatting/formatting.passfirst?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_formatting/formatting.passtexi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_formatting/formatting.texi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_formatting/formatting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_imbrications/imbrications.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_imbrications/imbrications.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_pass0_macros/pass0_macros.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/coverage/res_info/texi_pass0_macros/pass0_macros.texi.first?cvsroot=texi2html&rev=1.1

Patches:
Index: info_coverage/Makefile.am
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/info_coverage/Makefile.am,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- info_coverage/Makefile.am   31 Jul 2009 10:16:46 -0000      1.3
+++ info_coverage/Makefile.am   2 Aug 2009 13:11:58 -0000       1.4
@@ -16,6 +16,7 @@
 html_expanded.texi paragraphindent.texi test_setfilename.texi \
 images_eol.texi simple_2nodes.texi thing_in_menu.texi \
 empty_multitable_in_itemize.texi code.texi kbd.texi \
+note_in_strong.texi \
  f--ile""\.png f--ile""\.txt this_is_a_long_unknown_file.png \
  verb.txt tests.txt res res_all res_info
 

Index: info_coverage/Makefile.in
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/info_coverage/Makefile.in,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- info_coverage/Makefile.in   31 Jul 2009 10:16:46 -0000      1.3
+++ info_coverage/Makefile.in   2 Aug 2009 13:11:58 -0000       1.4
@@ -147,6 +147,7 @@
 html_expanded.texi paragraphindent.texi test_setfilename.texi \
 images_eol.texi simple_2nodes.texi thing_in_menu.texi \
 empty_multitable_in_itemize.texi code.texi kbd.texi \
+note_in_strong.texi \
  f--ile""\.png f--ile""\.txt this_is_a_long_unknown_file.png \
  verb.txt tests.txt res res_all res_info
 

Index: info_coverage/def_in_copying.texi
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/info_coverage/def_in_copying.texi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- info_coverage/def_in_copying.texi   28 Jul 2009 18:42:02 -0000      1.1
+++ info_coverage/def_in_copying.texi   2 Aug 2009 13:11:58 -0000       1.2
@@ -14,11 +14,11 @@
 
 @copying
 In copying
address@hidden
address@hidden
 @end copying
 
 In text
address@hidden
address@hidden
 
 @printindex fn
 

Index: info_coverage/simple_def.texi
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/info_coverage/simple_def.texi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- info_coverage/simple_def.texi       28 Jul 2009 18:42:02 -0000      1.1
+++ info_coverage/simple_def.texi       2 Aug 2009 13:11:58 -0000       1.2
@@ -59,12 +59,12 @@
 @top Test for definition commands
 
 in text
address@hidden
address@hidden
 
 
 @example
 In example
address@hidden
address@hidden
 @end example
 
 @bye

Index: info_coverage/star_at_command_in_formats.texi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/info_coverage/star_at_command_in_formats.texi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- info_coverage/star_at_command_in_formats.texi       28 Jul 2009 18:42:03 
-0000      1.1
+++ info_coverage/star_at_command_in_formats.texi       2 Aug 2009 13:11:58 
-0000       1.2
@@ -22,12 +22,12 @@
 
 @example
 Example
address@hidden
address@hidden
 @end example
 
 @quotation
 Quotation
address@hidden
address@hidden
 @end quotation
 
 @bye

Index: info_coverage/tests.txt
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/info_coverage/tests.txt,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- info_coverage/tests.txt     31 Jul 2009 10:16:46 -0000      1.3
+++ info_coverage/tests.txt     2 Aug 2009 13:11:58 -0000       1.4
@@ -50,3 +50,4 @@
 headings_in_footnote headings_in_footnote.texi
 code code.texi
 kbd kbd.texi
+note_in_strong note_in_strong.texi

Index: info_coverage/res/center_flush/center_flush.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/info_coverage/res/center_flush/center_flush.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- info_coverage/res/center_flush/center_flush.html    28 Jul 2009 18:42:04 
-0000      1.1
+++ info_coverage/res/center_flush/center_flush.html    2 Aug 2009 13:11:58 
-0000       1.2
@@ -45,7 +45,7 @@
 <a name="Element"></a>
 <h1 class="unnumbered">Element</h1>
 
-<p align="center"> centered
+<p align="center">centered
 </p>
 <p align="left">left and
 left2

Index: info_coverage/res_info/commentexample/commentexample.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/info_coverage/res_info/commentexample/commentexample.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- info_coverage/res_info/commentexample/commentexample.2      28 Jul 2009 
18:42:19 -0000      1.1
+++ info_coverage/res_info/commentexample/commentexample.2      2 Aug 2009 
13:11:59 -0000       1.2
@@ -0,0 +1 @@
+Document without nodes.

Index: info_coverage/res_info/images_quotes/images_quotes.info
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/info_coverage/res_info/images_quotes/images_quotes.info,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
Binary files /tmp/cvswl1QAT and /tmp/cvsQ2ytHc differ

Index: info_coverage/res_info/long_uref_after_item/long_uref_after_item.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/info_coverage/res_info/long_uref_after_item/long_uref_after_item.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- info_coverage/res_info/long_uref_after_item/long_uref_after_item.2  28 Jul 
2009 18:42:21 -0000      1.1
+++ info_coverage/res_info/long_uref_after_item/long_uref_after_item.2  2 Aug 
2009 13:11:59 -0000       1.2
@@ -0,0 +1 @@
+Document without nodes.

Index: xemacs_manual/res/xemacs/xemacs_1.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/xemacs_manual/res/xemacs/xemacs_1.html,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- xemacs_manual/res/xemacs/xemacs_1.html      2 Apr 2009 09:22:26 -0000       
1.6
+++ xemacs_manual/res/xemacs/xemacs_1.html      2 Aug 2009 13:12:00 -0000       
1.7
@@ -60,7 +60,7 @@
 </tr></table>
 <a name="GNU-GENERAL-PUBLIC-LICENSE"></a>
 <h1 class="unnumbered">GNU GENERAL PUBLIC LICENSE</h1>
-<p align="center"> Version 1, February 1989
+<p align="center">Version 1, February 1989
 </p><a name="index-license-to-copy-XEmacs"></a>
 <a name="index-General-Public-License"></a>
 
@@ -130,7 +130,7 @@
 <p>  The precise terms and conditions for copying, distribution and
 modification follow.
 </p>
-<p align="center"> TERMS AND CONDITIONS
+<p align="center">TERMS AND CONDITIONS
 </p>
 <ol>
 <li>
@@ -270,7 +270,7 @@
 of preserving the free status of all derivatives of our free software and
 of promoting the sharing and reuse of software generally.
 
-<p align="center"> NO WARRANTY
+<p align="center">NO WARRANTY
 </p>
 </li><li>
 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
@@ -295,7 +295,7 @@
 ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 </li></ol>
 
-<p align="center"> END OF TERMS AND CONDITIONS
+<p align="center">END OF TERMS AND CONDITIONS
 </p>
 
 <hr size="6">

Index: xemacs_manual/res/xemacs_frame/xemacs_1.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/xemacs_manual/res/xemacs_frame/xemacs_1.html,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- xemacs_manual/res/xemacs_frame/xemacs_1.html        2 Apr 2009 09:22:32 
-0000       1.6
+++ xemacs_manual/res/xemacs_frame/xemacs_1.html        2 Aug 2009 13:12:00 
-0000       1.7
@@ -60,7 +60,7 @@
 </tr></table>
 <a name="GNU-GENERAL-PUBLIC-LICENSE"></a>
 <h1 class="unnumbered">GNU GENERAL PUBLIC LICENSE</h1>
-<p align="center"> Version 1, February 1989
+<p align="center">Version 1, February 1989
 </p><a name="index-license-to-copy-XEmacs"></a>
 <a name="index-General-Public-License"></a>
 
@@ -130,7 +130,7 @@
 <p>  The precise terms and conditions for copying, distribution and
 modification follow.
 </p>
-<p align="center"> TERMS AND CONDITIONS
+<p align="center">TERMS AND CONDITIONS
 </p>
 <ol>
 <li>
@@ -270,7 +270,7 @@
 of preserving the free status of all derivatives of our free software and
 of promoting the sharing and reuse of software generally.
 
-<p align="center"> NO WARRANTY
+<p align="center">NO WARRANTY
 </p>
 </li><li>
 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
@@ -295,7 +295,7 @@
 ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 </li></ol>
 
-<p align="center"> END OF TERMS AND CONDITIONS
+<p align="center">END OF TERMS AND CONDITIONS
 </p>
 
 <hr size="6">

Index: coverage/Makefile.am
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/coverage/Makefile.am,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- coverage/Makefile.am        30 Jul 2009 09:54:22 -0000      1.5
+++ coverage/Makefile.am        2 Aug 2009 13:12:01 -0000       1.6
@@ -1,5 +1,5 @@
 EXTRA_DIST = formatting.texi comments.texi pass0_macros.texi float.texi \
- imbrications.texi formats_titles.texi \
+ imbrications.texi formats_titles.texi delcomment.texi \
  f--ile.e--xt f--ile.jpg simplest.texi tests.txt res res_all res_info
 
 DISTCLEANFILES = l2h_tmp_dir.init tests.log tests.out

Index: coverage/Makefile.in
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/coverage/Makefile.in,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- coverage/Makefile.in        30 Jul 2009 09:54:22 -0000      1.10
+++ coverage/Makefile.in        2 Aug 2009 13:12:01 -0000       1.11
@@ -130,7 +130,7 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 EXTRA_DIST = formatting.texi comments.texi pass0_macros.texi float.texi \
- imbrications.texi formats_titles.texi \
+ imbrications.texi formats_titles.texi delcomment.texi \
  f--ile.e--xt f--ile.jpg simplest.texi tests.txt res res_all res_info
 
 DISTCLEANFILES = l2h_tmp_dir.init tests.log tests.out

Index: coverage/formatting.texi
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/coverage/formatting.texi,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- coverage/formatting.texi    29 Aug 2008 15:05:46 -0000      1.3
+++ coverage/formatting.texi    2 Aug 2009 13:12:01 -0000       1.4
@@ -25,7 +25,7 @@
 @author author1 --a with accents in name T@'e@,ca
 @author author2 --a
 In titlepage
address@hidden
address@hidden
 
 Insercopying in titlepage
 @insertcopying

Index: coverage/tests.txt
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/coverage/tests.txt,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- coverage/tests.txt  31 Jul 2009 10:16:46 -0000      1.5
+++ coverage/tests.txt  2 Aug 2009 13:12:01 -0000       1.6
@@ -4,6 +4,7 @@
 texi float.texi
 texi imbrications.texi
 texi formats_titles.texi
+texi delcomment.texi
 comments comments.texi
 formatting formatting.texi address@hidden@internal_links_formatting.txt
 pass0_macros pass0_macros.texi
@@ -12,3 +13,4 @@
 formats_titles formats_titles.texi
 # -debug 255
 comments_info comments.texi -init info.init -U texi2html
+delcomment delcomment.texi

Index: coverage/res/comments/comments.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/comments/comments.html,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- coverage/res/comments/comments.html 27 Apr 2009 18:45:45 -0000      1.10
+++ coverage/res/comments/comments.html 2 Aug 2009 13:12:01 -0000       1.11
@@ -111,13 +111,9 @@
 <h3 class="subheading">command removed</h3>
 
 <p>And now finalout:
-Text line followed by finalout on the same line and another below 
-</p>
-<p>Text line after the finalout followed by a fianlout 
-Text line after the text line followed by the finalout.
+Text line followed by finalout on the same line and another below Text line 
after the finalout followed by a fianlout Text line after the text line 
followed by the finalout.
 </p>
 <p>Test text after finalout
- a word after finalout
 Line after finalout
 </p>
 <p>@page </p><p> @noindent @refill  something

Index: coverage/res/comments_info/comments.info
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/comments_info/comments.info,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- coverage/res/comments_info/comments.info    21 Jun 2009 09:25:40 -0000      
1.6
+++ coverage/res/comments_info/comments.info    2 Aug 2009 13:12:01 -0000       
1.7
@@ -71,12 +71,10 @@
 ---------------
 
 And now finalout: Text line followed by finalout on the same line and
-another below
-
-    Text line after the finalout followed by a fianlout  Text line after
-the text line followed by the finalout.
+another below Text line after the finalout followed by a fianlout Text
+line after the text line followed by the finalout.
 
-    Test text after finalout  a word after finalout Line after finalout
+    Test text after finalout Line after finalout
 
     @page
     @noindent @refill  something
@@ -162,10 +160,10 @@
 
 Tag Table:
 Node: Top78
-Node: node2877
-Node: truc2990
-Node: bidule3228
-Node: bidule23414
+Node: node2848
+Node: truc2961
+Node: bidule3199
+Node: bidule23385
 
 End Tag Table
 

Index: coverage/res/formatting/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/formatting/formatting.2,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- coverage/res/formatting/formatting.2        27 Apr 2009 01:56:41 -0000      
1.6
+++ coverage/res/formatting/formatting.2        2 Aug 2009 13:12:01 -0000       
1.7
@@ -1,3 +1,4 @@
+** @ctrl is obsolete. (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
@@ -7,6 +8,7 @@
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
+** @ctrl is obsolete. (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
@@ -16,6 +18,7 @@
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
+** @ctrl is obsolete. (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
@@ -25,6 +28,7 @@
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
+** @ctrl is obsolete. (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
@@ -39,11 +43,11 @@
 ** no image file for f-ile, (using f-ile.jpg) (l. 18 in @mymacro)
 ** no image file for filejk _" %@, (using filejk _" address@hidden) (l. 18 in 
@mymacro)
 ** TeX requires {} (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 *** '}' without opening '{' before:  (l. 18 in @mymacro)
@@ -66,11 +70,11 @@
 ** no image file for f-ile, (using f-ile.jpg) (l. 28 in @mymacro)
 ** no image file for filejk _" %@, (using filejk _" address@hidden) (l. 28 in 
@mymacro)
 ** TeX requires {} (l. 28 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 28 in @mymacro)
+** Unknown command address@hidden' (l. 28 in @mymacro)
 *** no file argument for @image (l. 28 in @mymacro)
 *** no file argument for @image (l. 28 in @mymacro)
 *** no file argument for @image (l. 28 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 28 in @mymacro)
+** Unknown command address@hidden' (l. 28 in @mymacro)
 ** bullet requires {} (l. 28 in @mymacro)
 ** bullet requires {} (l. 28 in @mymacro)
 *** '}' without opening '{' before:  (l. 28 in @mymacro)
@@ -93,11 +97,11 @@
 ** no image file for f-ile, (using f-ile.jpg) (l. 18 in @mymacro)
 ** no image file for filejk _" %@, (using filejk _" address@hidden) (l. 18 in 
@mymacro)
 ** TeX requires {} (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 *** '}' without opening '{' before:  (l. 18 in @mymacro)
@@ -120,11 +124,11 @@
 ** no image file for f-ile, (using f-ile.jpg) (l. 18 in @mymacro)
 ** no image file for filejk _" %@, (using filejk _" address@hidden) (l. 18 in 
@mymacro)
 ** TeX requires {} (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 *** '}' without opening '{' before:  (l. 18 in @mymacro)
@@ -147,11 +151,11 @@
 ** no image file for f-ile, (using f-ile.jpg) (l. 38 in @mymacro)
 ** no image file for filejk _" %@, (using filejk _" address@hidden) (l. 38 in 
@mymacro)
 ** TeX requires {} (l. 38 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 38 in @mymacro)
+** Unknown command address@hidden' (l. 38 in @mymacro)
 *** no file argument for @image (l. 38 in @mymacro)
 *** no file argument for @image (l. 38 in @mymacro)
 *** no file argument for @image (l. 38 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 38 in @mymacro)
+** Unknown command address@hidden' (l. 38 in @mymacro)
 ** bullet requires {} (l. 38 in @mymacro)
 ** bullet requires {} (l. 38 in @mymacro)
 *** '}' without opening '{' before:  (l. 38 in @mymacro)
@@ -175,11 +179,11 @@
 ** no image file for f-ile, (using f-ile.jpg) (l. 42 in @mymacro)
 ** no image file for filejk _" %@, (using filejk _" address@hidden) (l. 42 in 
@mymacro)
 ** TeX requires {} (l. 42 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 42 in @mymacro)
+** Unknown command address@hidden' (l. 42 in @mymacro)
 *** no file argument for @image (l. 42 in @mymacro)
 *** no file argument for @image (l. 42 in @mymacro)
 *** no file argument for @image (l. 42 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 42 in @mymacro)
+** Unknown command address@hidden' (l. 42 in @mymacro)
 ** bullet requires {} (l. 42 in @mymacro)
 ** bullet requires {} (l. 42 in @mymacro)
 *** '}' without opening '{' before:  (l. 42 in @mymacro)

Index: coverage/res/formatting/formatting.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/formatting/formatting.html,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- coverage/res/formatting/formatting.html     23 May 2009 17:09:44 -0000      
1.24
+++ coverage/res/formatting/formatting.html     2 Aug 2009 13:12:01 -0000       
1.25
@@ -1263,7 +1263,7 @@
 </p>
 <p align="right">f&ndash;lushright
 </p>
-<p align="center"> ce&ndash;ntered line
+<p align="center">ce&ndash;ntered line
 </p>
 <pre class="verbatim">\input texinfo @c -*-texinfo-*-
 
@@ -1957,7 +1957,7 @@
 </p>
 <p align="right">f&ndash;lushright
 </p>
-<p align="center"> ce&ndash;ntered line
+<p align="center">ce&ndash;ntered line
 </p>
 <pre class="verbatim">\input texinfo @c -*-texinfo-*-
 

Index: coverage/res/pass0_macros/pass0_macros.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/pass0_macros/pass0_macros.html,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- coverage/res/pass0_macros/pass0_macros.html 21 Jun 2009 09:25:40 -0000      
1.8
+++ coverage/res/pass0_macros/pass0_macros.html 2 Aug 2009 13:12:02 -0000       
1.9
@@ -76,14 +76,11 @@
 <a name="first-node-chapter"></a>
 <h1 class="chapter">1. first node chapter</h1>
 
-<p>before syncodeindex 
-</p>
+<p>before syncodeindex </p>
 <p>syncodeindex on its line
-</p>
-<p>line following syncodeindex
+line following syncodeindex
 </p>
 <p>One more thing following syncodeindex
-    truc
 line following syncodeindex cp fn   truc
 </p>
 <p>documentlanguage </p>

Index: coverage/res/texi_comments/comments.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/texi_comments/comments.2,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- coverage/res/texi_comments/comments.2       27 Apr 2009 01:56:41 -0000      
1.3
+++ coverage/res/texi_comments/comments.2       2 Aug 2009 13:12:02 -0000       
1.4
@@ -1,4 +1,2 @@
 ** Encoding name unknown: bad (l. 120)
 *** @clickstyle should only accept a macro as argument (l. 212)
-** Encoding name unknown: bad (l. 120)
-*** @clickstyle should only accept a macro as argument (l. 212)

Index: coverage/res/texi_formatting/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/texi_formatting/formatting.2,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- coverage/res/texi_formatting/formatting.2   28 Nov 2008 09:27:53 -0000      
1.2
+++ coverage/res/texi_formatting/formatting.2   2 Aug 2009 13:12:02 -0000       
1.3
@@ -1,3 +1,4 @@
+** @ctrl is obsolete. (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
@@ -7,6 +8,7 @@
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
+** @ctrl is obsolete. (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
@@ -16,6 +18,7 @@
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
+** @ctrl is obsolete. (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
@@ -25,42 +28,7 @@
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
+** @ctrl is obsolete. (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)

Index: coverage/res/texi_formatting/formatting.passfirst
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/texi_formatting/formatting.passfirst,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- coverage/res/texi_formatting/formatting.passfirst   17 May 2009 15:35:20 
-0000      1.9
+++ coverage/res/texi_formatting/formatting.passfirst   2 Aug 2009 13:12:02 
-0000       1.10
@@ -10,6 +10,727 @@
 formatting.texi(,11) * description:chapter2.   Chapter 2
 formatting.texi(,12) @end menu
 formatting.texi(,13) 
+coverage_macro.texi(,1) @macro mymacro
+coverage_macro.texi(,2) 
+coverage_macro.texi(,3) <
+coverage_macro.texi(,4) >
+coverage_macro.texi(,5) "
+coverage_macro.texi(,6) &
+coverage_macro.texi(,7) '
+coverage_macro.texi(,8) `
+coverage_macro.texi(,9) 
+coverage_macro.texi(,10) ``simple-double--three---four----''@*
+coverage_macro.texi(,11) code: @code{``simple-double--three---four----''} @*
+coverage_macro.texi(,12) asis: @asis{``simple-double--three---four----''} @*
+coverage_macro.texi(,13) strong: @strong{``simple-double--three---four----''} 
@*
+coverage_macro.texi(,14) kbd: @kbd{``simple-double--three---four----''} @*
+coverage_macro.texi(,15) 
+coverage_macro.texi(,16) address@hidden@w{}-three---four----'@w{}'@*
+coverage_macro.texi(,17) 
+coverage_macro.texi(,18) @cindex --option
+coverage_macro.texi(,19) @cindex ``
+coverage_macro.texi(,20) @findex ``
+coverage_macro.texi(,21) @findex --foption
+coverage_macro.texi(,22) 
+coverage_macro.texi(,23) @@"u @"u 
+coverage_macro.texi(,24) @@"@address@hidden @"{U} 
+coverage_macro.texi(,25) @@~n @~n
+coverage_macro.texi(,26) @@^a @^a
+coverage_macro.texi(,27) @@'e @'e
+coverage_macro.texi(,28) @@=o @=o
+coverage_macro.texi(,29) @@`i @`i
+coverage_macro.texi(,30) @@'@address@hidden @'{e}
+coverage_macro.texi(,31) @@'@{@@address@hidden@address@hidden @'address@hidden 
+coverage_macro.texi(,32) @@address@hidden@} @dotless{i}
+coverage_macro.texi(,33) @@address@hidden@} @dotless{j}
+coverage_macro.texi(,34) @@address@hidden@@address@hidden @address@hidden 
+coverage_macro.texi(,35) @@address@hidden@} @l{}
+coverage_macro.texi(,36) @@,@{@@'address@hidden @,{@'C}
+coverage_macro.texi(,37) @@,c @,c
+coverage_macro.texi(,38) @@,c@@"u @,c@"u @*
+coverage_macro.texi(,39) 
+coverage_macro.texi(,40) @@* @*
+coverage_macro.texi(,41) @@ followed by a space
+coverage_macro.texi(,42) @ 
+coverage_macro.texi(,43) @@ followed by a tab
+coverage_macro.texi(,44) @     
+coverage_macro.texi(,45) @@ followed by a new line
+coverage_macro.texi(,46) @
+coverage_macro.texi(,47) @code{@@-} @-
+coverage_macro.texi(,48) @code{@@|} @|
+coverage_macro.texi(,49) @code{@@:} @:
+coverage_macro.texi(,50) @code{@@!} @!
+coverage_macro.texi(,51) @code{@@?} @?
+coverage_macro.texi(,52) @code{@@.} @.
+coverage_macro.texi(,53) @code{@@@@} @@
+coverage_macro.texi(,54) @code{@@@}} @}
+coverage_macro.texi(,55) @code{@@@{} @{
+coverage_macro.texi(,56) @code{@@/} @/
+coverage_macro.texi(,57) 
+coverage_macro.texi(,58) foo vs.@: bar. 
+coverage_macro.texi(,59) colon :@:And something else.
+coverage_macro.texi(,60) semi colon ;@:.
+coverage_macro.texi(,61) And ? ?@:.
+coverage_macro.texi(,62) Now ! !@:@@
+coverage_macro.texi(,63) but , ,@:
+coverage_macro.texi(,64) 
+coverage_macro.texi(,65) @@TeX @TeX{}
+coverage_macro.texi(,66) @@LaTeX @LaTeX{}
+coverage_macro.texi(,67) @@bullet @bullet{}
+coverage_macro.texi(,68) @@copyright @copyright{}
+coverage_macro.texi(,69) @@dots @dots{}
+coverage_macro.texi(,70) @@enddots @enddots{}
+coverage_macro.texi(,71) @@equiv @equiv{}
+coverage_macro.texi(,72) @@error @error{}
+coverage_macro.texi(,73) @@expansion @expansion{}
+coverage_macro.texi(,74) @@minus @minus{}
+coverage_macro.texi(,75) @@point @point{}
+coverage_macro.texi(,76) @@print @print{}
+coverage_macro.texi(,77) @@result @result{}
+coverage_macro.texi(,78) @@today @today{}
+coverage_macro.texi(,79) @@aa @aa{}
+coverage_macro.texi(,80) @@AA @AA{}
+coverage_macro.texi(,81) @@ae @ae{}
+coverage_macro.texi(,82) @@oe @oe{}
+coverage_macro.texi(,83) @@AE @AE{}
+coverage_macro.texi(,84) @@OE @OE{}
+coverage_macro.texi(,85) @@o @o{}
+coverage_macro.texi(,86) @@O @O{}
+coverage_macro.texi(,87) @@ss @ss{}
+coverage_macro.texi(,88) @@l @l{}
+coverage_macro.texi(,89) @@L @L{}
+coverage_macro.texi(,90) @@DH @DH{}
+coverage_macro.texi(,91) @@TH @TH{}
+coverage_macro.texi(,92) @@dh @dh{}
+coverage_macro.texi(,93) @@th @th{}
+coverage_macro.texi(,94) @@exclamdown @exclamdown{}
+coverage_macro.texi(,95) @@questiondown @questiondown{}
+coverage_macro.texi(,96) @@pounds @pounds{}
+coverage_macro.texi(,97) @@registeredsymbol @registeredsymbol{}
+coverage_macro.texi(,98) @@ordf @ordf{}
+coverage_macro.texi(,99) @@ordm @ordm{}
+coverage_macro.texi(,100) @@comma @comma{}
+coverage_macro.texi(,101) @@quotedblleft @quotedblleft{}
+coverage_macro.texi(,102) @@quotedblright @quotedblright{}
+coverage_macro.texi(,103) @@quoteleft @quoteleft{}
+coverage_macro.texi(,104) @@quoteright @quoteright{}
+coverage_macro.texi(,105) @@quotedblbase @quotedblbase{}
+coverage_macro.texi(,106) @@quotesinglbase @quotesinglbase{}
+coverage_macro.texi(,107) @@guillemetleft @guillemetleft{}
+coverage_macro.texi(,108) @@guillemetright @guillemetright{}
+coverage_macro.texi(,109) @@guillemotleft @guillemotleft{}
+coverage_macro.texi(,110) @@guillemotright @guillemotright{}
+coverage_macro.texi(,111) @@guilsinglleft @guilsinglleft{}
+coverage_macro.texi(,112) @@guilsinglright @guilsinglright{}
+coverage_macro.texi(,113) @@textdegree @textdegree{}
+coverage_macro.texi(,114) @@euro @euro{}
+coverage_macro.texi(,115) @@arrow @arrow{}
+coverage_macro.texi(,116) @@leq @leq{}
+coverage_macro.texi(,117) @@geq @geq{}
+coverage_macro.texi(,118) 
+coverage_macro.texi(,119) @code{@@address@hidden,an address@hidden 
@acronym{--a,an accronym}
+coverage_macro.texi(,120) @code{@@address@hidden@}} @acronym{--a}
+coverage_macro.texi(,121) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude Autonome @}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
+coverage_macro.texi(,122) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,123) @code{@@address@hidden@}} @asis{--a}
+coverage_macro.texi(,124) @code{@@address@hidden@}} @b{--a}
+coverage_macro.texi(,125) @code{@@address@hidden@}} @cite{--a}
+coverage_macro.texi(,126) @code{@@address@hidden@}} @code{--a}
+coverage_macro.texi(,127) @code{@@address@hidden@}} @command{--a}
+coverage_macro.texi(,128) @code{@@address@hidden@}} @ctrl{--a}
+coverage_macro.texi(,129) @code{@@address@hidden@}} @dfn{--a}
+coverage_macro.texi(,130) @code{@@address@hidden@}} @dmn{--a}
+coverage_macro.texi(,131) @code{@@address@hidden,address@hidden @email{--a,--b}
+coverage_macro.texi(,132) @code{@@address@hidden,address@hidden @email{,--b}
+coverage_macro.texi(,133) @code{@@address@hidden@}} @email{--a}
+coverage_macro.texi(,134) @code{@@address@hidden@}} @emph{--a}
+coverage_macro.texi(,135) @code{@@address@hidden@}} @env{--a}
+coverage_macro.texi(,136) @code{@@address@hidden@}} @file{--a}
+coverage_macro.texi(,137) @code{@@address@hidden@}} @i{--a}
+coverage_macro.texi(,138) @code{@@address@hidden@}} @kbd{--a}
+coverage_macro.texi(,139) @code{@@address@hidden@}} @key{--a}
+coverage_macro.texi(,140) @code{@@address@hidden 
@address@hidden@address@hidden@address@hidden @@address@hidden@address@hidden 
@math{--a {\\frac{1}{2}} @minus{}}
+coverage_macro.texi(,141) @code{@@address@hidden@}} @option{--a}
+coverage_macro.texi(,142) @code{@@address@hidden@}} @r{--a}
+coverage_macro.texi(,143) @code{@@address@hidden@}} @samp{--a}
+coverage_macro.texi(,144) @code{@@address@hidden@}} @sc{--a}
+coverage_macro.texi(,145) @code{@@address@hidden@}} @strong{--a}
+coverage_macro.texi(,146) @code{@@address@hidden@}} @t{--a}
+coverage_macro.texi(,147) @code{@@address@hidden@}} @sansserif{--a}
+coverage_macro.texi(,148) @code{@@address@hidden@}} @titlefont{--a}
+coverage_macro.texi(,149) @code{@@address@hidden@}} @indicateurl{--a}
+coverage_macro.texi(,150) @code{@@address@hidden,address@hidden @uref{--a,--b}
+coverage_macro.texi(,151) @code{@@address@hidden@}} @uref{--a}
+coverage_macro.texi(,152) @code{@@address@hidden,address@hidden @uref{,--b}
+coverage_macro.texi(,153) @code{@@address@hidden,--b,address@hidden 
@uref{--a,--b,--c}
+coverage_macro.texi(,154) @code{@@address@hidden,--b,address@hidden 
@uref{,--b,--c}
+coverage_macro.texi(,155) @code{@@address@hidden,,address@hidden 
@uref{--a,,--c}
+coverage_macro.texi(,156) @code{@@address@hidden,,address@hidden @uref{,,--c}
+coverage_macro.texi(,157) @code{@@address@hidden,address@hidden @url{--a,--b}
+coverage_macro.texi(,158) @code{@@address@hidden,@}} @url{--a,}
+coverage_macro.texi(,159) @code{@@address@hidden,address@hidden @url{,--b}
+coverage_macro.texi(,160) @code{@@address@hidden@}} @var{--a}
+coverage_macro.texi(,161) @code{@@address@hidden:--a:@}} @verb{:--a:}
+coverage_macro.texi(,162) @code{@@address@hidden:a  < & @@ % " --    b:@}} 
@verb{:a  < & @ % " --    b:}
+coverage_macro.texi(,163) @code{@@address@hidden@}} @w{}
+coverage_macro.texi(,164) @code{@@address@hidden@}} @H{a}
+coverage_macro.texi(,165) @code{@@address@hidden@}} @H{--a}
+coverage_macro.texi(,166) @code{@@address@hidden@}} @dotaccent{a}
+coverage_macro.texi(,167) @code{@@address@hidden@}} @dotaccent{--a}
+coverage_macro.texi(,168) @code{@@address@hidden@}} @ringaccent{a}
+coverage_macro.texi(,169) @code{@@address@hidden@}} @ringaccent{--a}
+coverage_macro.texi(,170) @code{@@address@hidden@}} @tieaccent{a}
+coverage_macro.texi(,171) @code{@@address@hidden@}} @tieaccent{--a}
+coverage_macro.texi(,172) @code{@@address@hidden@}} @u{a}
+coverage_macro.texi(,173) @code{@@address@hidden@}} @u{--a}
+coverage_macro.texi(,174) @code{@@address@hidden@}} @ubaraccent{a}
+coverage_macro.texi(,175) @code{@@address@hidden@}} @ubaraccent{--a}
+coverage_macro.texi(,176) @code{@@address@hidden@}} @udotaccent{a}
+coverage_macro.texi(,177) @code{@@address@hidden@}} @udotaccent{--a}
+coverage_macro.texi(,178) @code{@@address@hidden@}} @v{a}
+coverage_macro.texi(,179) @code{@@address@hidden@}} @v{--a}
+coverage_macro.texi(,180) @code{@@,@address@hidden @,{c}
+coverage_macro.texi(,181) @code{@@,@address@hidden @,{--c}
+coverage_macro.texi(,182) @ifset texi2html
+coverage_macro.texi(,183) @code{@@address@hidden@}} @ogonek{a}
+coverage_macro.texi(,184) @code{@@address@hidden@}} @ogonek{--a}
+coverage_macro.texi(,185) @end ifset
+coverage_macro.texi(,186) @code{@@address@hidden address@hidden @footnote{in 
footnote}
+coverage_macro.texi(,187) @code{@@address@hidden address@hidden @footnote{in 
footnote2}
+coverage_macro.texi(,188) 
+coverage_macro.texi(,189) @code{@@address@hidden@}} @image{f--ile}
+coverage_macro.texi(,190) @code{@@address@hidden,address@hidden 
@image{f--ile,l--i}
+coverage_macro.texi(,191) @code{@@address@hidden,,address@hidden 
@image{f--ile,,l--e}
+coverage_macro.texi(,192) @code{@@address@hidden,,,address@hidden 
@image{f--ile,,,alt}
+coverage_macro.texi(,193) @code{@@address@hidden,,,,address@hidden 
@image{f--ile,,,,e--xt}
+coverage_macro.texi(,194) @code{@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
+coverage_macro.texi(,195) @code{@@address@hidden,aze,,address@hidden 
@image{f-ile,aze,,a--lt}
+coverage_macro.texi(,196) 
@code{@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden 
address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+coverage_macro.texi(,197) 
+coverage_macro.texi(,198) @sp 2
+coverage_macro.texi(,199) 
+coverage_macro.texi(,200) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,201) @clickstyle @result
+coverage_macro.texi(,202) After clickstyle @result{}
+coverage_macro.texi(,203) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,204) @clickstyle @arrow
+coverage_macro.texi(,205) 
+coverage_macro.texi(,206) @quotation 
+coverage_macro.texi(,207) A quot---ation
+coverage_macro.texi(,208) @end quotation
+coverage_macro.texi(,209) 
+coverage_macro.texi(,210) @quotation Note
+coverage_macro.texi(,211) A Note
+coverage_macro.texi(,212) @end quotation
+coverage_macro.texi(,213) 
+coverage_macro.texi(,214) @quotation note
+coverage_macro.texi(,215) A note
+coverage_macro.texi(,216) @end quotation
+coverage_macro.texi(,217) 
+coverage_macro.texi(,218) @quotation Caution
+coverage_macro.texi(,219) Caution
+coverage_macro.texi(,220) @end quotation
+coverage_macro.texi(,221) 
+coverage_macro.texi(,222) @quotation Important
+coverage_macro.texi(,223) Important
+coverage_macro.texi(,224) @end quotation
+coverage_macro.texi(,225) 
+coverage_macro.texi(,226) @quotation Tip
+coverage_macro.texi(,227) a Tip
+coverage_macro.texi(,228) @end quotation
+coverage_macro.texi(,229) 
+coverage_macro.texi(,230) @quotation Warning
+coverage_macro.texi(,231) a Warning.
+coverage_macro.texi(,232) @end quotation
+coverage_macro.texi(,233) 
+coverage_macro.texi(,234) @quotation something @'e @TeX{}
+coverage_macro.texi(,235) The something @'e @TeX{} is here.
+coverage_macro.texi(,236) @end quotation
+coverage_macro.texi(,237) 
+coverage_macro.texi(,238) @quotation @@ at the end of line @
+coverage_macro.texi(,239) A @@ at the end of the @@quotation line.
+coverage_macro.texi(,240) @end quotation
+coverage_macro.texi(,241) 
+coverage_macro.texi(,242) @quotation something, other thing
+coverage_macro.texi(,243) something, other thing
+coverage_macro.texi(,244) @end quotation
+coverage_macro.texi(,245) 
+coverage_macro.texi(,246) @quotation Note, the note
+coverage_macro.texi(,247) Note, the note
+coverage_macro.texi(,248) @end quotation
+coverage_macro.texi(,249) 
+coverage_macro.texi(,250) @quotation
+coverage_macro.texi(,251) @end quotation
+coverage_macro.texi(,252) 
+coverage_macro.texi(,253) @quotation Empty
+coverage_macro.texi(,254) @end quotation
+coverage_macro.texi(,255) 
+coverage_macro.texi(,256) @quotation @asis{}
+coverage_macro.texi(,257) @end quotation
+coverage_macro.texi(,258) 
+coverage_macro.texi(,259) @quotation @*
+coverage_macro.texi(,260) @end quotation
+coverage_macro.texi(,261) 
+coverage_macro.texi(,262) @ifset texi2html
+coverage_macro.texi(,263) @smallquotation 
+coverage_macro.texi(,264) A small quot---ation
+coverage_macro.texi(,265) @end smallquotation
+coverage_macro.texi(,266) 
+coverage_macro.texi(,267) @smallquotation Note
+coverage_macro.texi(,268) A small Note
+coverage_macro.texi(,269) @end smallquotation
+coverage_macro.texi(,270) 
+coverage_macro.texi(,271) @smallquotation something, other thing
+coverage_macro.texi(,272) something, other thing
+coverage_macro.texi(,273) @end smallquotation
+coverage_macro.texi(,274) @end ifset
+coverage_macro.texi(,275) 
+coverage_macro.texi(,276) @itemize
+coverage_macro.texi(,277) @item i--temize
+coverage_macro.texi(,278) @end itemize
+coverage_macro.texi(,279) 
+coverage_macro.texi(,280) @itemize +
+coverage_macro.texi(,281) @item i--tem +
+coverage_macro.texi(,282) @end itemize
+coverage_macro.texi(,283) 
+coverage_macro.texi(,284) @itemize @bullet
+coverage_macro.texi(,285) @item b--ullet
+coverage_macro.texi(,286) @end itemize
+coverage_macro.texi(,287) 
+coverage_macro.texi(,288) @itemize @minus
+coverage_macro.texi(,289) @item minu--s
+coverage_macro.texi(,290) @end itemize
+coverage_macro.texi(,291) 
+coverage_macro.texi(,292) @itemize @emph
+coverage_macro.texi(,293) @item e--mph item
+coverage_macro.texi(,294) @end itemize
+coverage_macro.texi(,295) 
+coverage_macro.texi(,296) @itemize @emph{after emph}
+coverage_macro.texi(,297) @c comment in itemize
+coverage_macro.texi(,298) @item e--mph item
+coverage_macro.texi(,299) @end itemize
+coverage_macro.texi(,300) 
+coverage_macro.texi(,301) @itemize @bullet{} a--n itemize line
+coverage_macro.texi(,302) @cindex index entry within itemize
+coverage_macro.texi(,303) @item i--tem 1
+coverage_macro.texi(,304) @item i--tem 2
+coverage_macro.texi(,305) @end itemize
+coverage_macro.texi(,306) 
+coverage_macro.texi(,307) @enumerate
+coverage_macro.texi(,308) @item e--numerate
+coverage_macro.texi(,309) @end enumerate
+coverage_macro.texi(,310) 
+coverage_macro.texi(,311) @multitable @columnfractions 6 7
+coverage_macro.texi(,312) @headitem mu--ltitable headitem @tab another tab
+coverage_macro.texi(,313) @item mu--ltitable item @tab multitable tab
+coverage_macro.texi(,314) @c comment in multitable
+coverage_macro.texi(,315) @item mu--ltitable item 2 @tab multitable tab 2
+coverage_macro.texi(,316) @cindex index entry within multitable
+coverage_macro.texi(,317) @item lone mu--ltitable item
+coverage_macro.texi(,318) @end multitable
+coverage_macro.texi(,319) 
+coverage_macro.texi(,320) @multitable {truc} {bidule}
+coverage_macro.texi(,321) @item truc @tab bidule
+coverage_macro.texi(,322) @end multitable
+coverage_macro.texi(,323) 
+coverage_macro.texi(,324) @example
+coverage_macro.texi(,325) e--xample  some
+coverage_macro.texi(,326)    text
+coverage_macro.texi(,327) @end example
+coverage_macro.texi(,328) 
+coverage_macro.texi(,329) @smallexample
+coverage_macro.texi(,330) s--mallexample
+coverage_macro.texi(,331) @end smallexample
+coverage_macro.texi(,332) 
+coverage_macro.texi(,333) @display 
+coverage_macro.texi(,334) d--isplay
+coverage_macro.texi(,335) @end display
+coverage_macro.texi(,336) 
+coverage_macro.texi(,337) @smalldisplay
+coverage_macro.texi(,338) s--malldisplay
+coverage_macro.texi(,339) @end smalldisplay
+coverage_macro.texi(,340) 
+coverage_macro.texi(,341) @lisp
+coverage_macro.texi(,342) l--isp
+coverage_macro.texi(,343) @end lisp
+coverage_macro.texi(,344) 
+coverage_macro.texi(,345) @smalllisp
+coverage_macro.texi(,346) s--malllisp
+coverage_macro.texi(,347) @end smalllisp
+coverage_macro.texi(,348) 
+coverage_macro.texi(,349) @format
+coverage_macro.texi(,350) f--ormat
+coverage_macro.texi(,351) @end format
+coverage_macro.texi(,352) 
+coverage_macro.texi(,353) @smallformat
+coverage_macro.texi(,354) s--mallformat
+coverage_macro.texi(,355) @end smallformat
+coverage_macro.texi(,356) 
+coverage_macro.texi(,357) @deffn c--ategory d--effn_name a--rguments...
+coverage_macro.texi(,358) d--effn
+coverage_macro.texi(,359) @end deffn
+coverage_macro.texi(,360) 
+coverage_macro.texi(,361) @deffn cate--gory de--ffn_name ar--guments @
+coverage_macro.texi(,362)    more args @* even more so
+coverage_macro.texi(,363) def--fn
+coverage_macro.texi(,364) @end deffn
+coverage_macro.texi(,365)  
+coverage_macro.texi(,366) @deffn fset @var{i} a g
+coverage_macro.texi(,367) @cindex index entry within deffn
+coverage_macro.texi(,368) @deffnx {cmde} truc {}
+coverage_macro.texi(,369) @deffnx Command {log trap} {}
+coverage_macro.texi(,370) @deffnx Command { log trap1} {}  
+coverage_macro.texi(,371) @deffnx Command {log trap2 } {}
+coverage_macro.texi(,372) @deffnx cmde @b{id ule} truc
+coverage_macro.texi(,373) @deffnx cmde2 @b{id @samp{i} ule} truc
+coverage_macro.texi(,374) @deffnx @b{id @samp{i} ule}    
+coverage_macro.texi(,375) @deffnx 
+coverage_macro.texi(,376) @deffnx aaa
+coverage_macro.texi(,377) @deffnx {} {}
+coverage_macro.texi(,378) @deffnx{}
+coverage_macro.texi(,379) @deffnx{} machin
+coverage_macro.texi(,380) @deffnx{} {bidule machin}
+coverage_macro.texi(,381) @deffnx{truc} machin
+coverage_macro.texi(,382) @deffnx{truc} { }
+coverage_macro.texi(,383) @deffnx{truc} followed by a comment
+coverage_macro.texi(,384) @c comment
+coverage_macro.texi(,385) @deffnx{truc}
+coverage_macro.texi(,386) @deffnx{} {}
+coverage_macro.texi(,387) @deffnx {truc} a b c d e @b{f g} {h i}
+coverage_macro.texi(,388) @deffnx {truc} deffnx before end deffn
+coverage_macro.texi(,389) @end deffn
+coverage_macro.texi(,390) 
+coverage_macro.texi(,391) @deffn empty deffn
+coverage_macro.texi(,392) @end deffn
+coverage_macro.texi(,393) 
+coverage_macro.texi(,394) @deffn empty deffn with deffnx
+coverage_macro.texi(,395) @c comment between deffn and deffnx
+coverage_macro.texi(,396) @deffnx empty deffnx
+coverage_macro.texi(,397) @end deffn
+coverage_macro.texi(,398) 
+coverage_macro.texi(,399) @deffn fset @var{i} a g
+coverage_macro.texi(,400) @deffnx {cmde} truc {}
+coverage_macro.texi(,401) @c comment
+coverage_macro.texi(,402) text in def item for second def item
+coverage_macro.texi(,403) @end deffn
+coverage_macro.texi(,404) 
+coverage_macro.texi(,405) @defvr c--ategory d--efvr_name
+coverage_macro.texi(,406) d--efvr
+coverage_macro.texi(,407) @end defvr
+coverage_macro.texi(,408) 
+coverage_macro.texi(,409) @deftypefn c--ategory t--ype d--eftypefn_name 
a--rguments...
+coverage_macro.texi(,410) d--eftypefn
+coverage_macro.texi(,411) @end deftypefn
+coverage_macro.texi(,412) 
+coverage_macro.texi(,413) @deftypeop c--ategory c--lass t--ype 
d--eftypeop_name a--rguments...
+coverage_macro.texi(,414) d--eftypeop
+coverage_macro.texi(,415) @end deftypeop
+coverage_macro.texi(,416) 
+coverage_macro.texi(,417) @deftypevr c--ategory t--ype d--eftypevr_name
+coverage_macro.texi(,418) d--eftypevr
+coverage_macro.texi(,419) @end deftypevr
+coverage_macro.texi(,420) 
+coverage_macro.texi(,421) @defcv c--ategory c--lass d--efcv_name
+coverage_macro.texi(,422) d--efcv
+coverage_macro.texi(,423) @end defcv
+coverage_macro.texi(,424) 
+coverage_macro.texi(,425) @defop c--ategory c--lass d--efop_name a--rguments...
+coverage_macro.texi(,426) d--efop
+coverage_macro.texi(,427) @end defop
+coverage_macro.texi(,428) 
+coverage_macro.texi(,429) @deftp c--ategory d--eftp_name a--ttributes...
+coverage_macro.texi(,430) d--eftp
+coverage_macro.texi(,431) @end deftp
+coverage_macro.texi(,432) 
+coverage_macro.texi(,433) @defun d--efun_name a--rguments...
+coverage_macro.texi(,434) d--efun
+coverage_macro.texi(,435) @end defun
+coverage_macro.texi(,436) 
+coverage_macro.texi(,437) @defmac d--efmac_name a--rguments...
+coverage_macro.texi(,438) d--efmac
+coverage_macro.texi(,439) @end defmac
+coverage_macro.texi(,440) 
+coverage_macro.texi(,441) @defspec d--efspec_name a--rguments...
+coverage_macro.texi(,442) d--efspec
+coverage_macro.texi(,443) @end defspec
+coverage_macro.texi(,444) 
+coverage_macro.texi(,445) @defvar d--efvar_name argvar argvar1
+coverage_macro.texi(,446) d--efvar
+coverage_macro.texi(,447) @end defvar
+coverage_macro.texi(,448) 
+coverage_macro.texi(,449) @defopt d--efopt_name
+coverage_macro.texi(,450) d--efopt
+coverage_macro.texi(,451) @end defopt
+coverage_macro.texi(,452) 
+coverage_macro.texi(,453) @deftypefun t--ype d--eftypefun_name a--rguments...
+coverage_macro.texi(,454) d--eftypefun
+coverage_macro.texi(,455) @end deftypefun
+coverage_macro.texi(,456) 
+coverage_macro.texi(,457) @deftypevar t--ype d--eftypevar_name
+coverage_macro.texi(,458) d--eftypevar
+coverage_macro.texi(,459) @end deftypevar
+coverage_macro.texi(,460) 
+coverage_macro.texi(,461) @defivar c--lass d--efivar_name
+coverage_macro.texi(,462) d--efivar
+coverage_macro.texi(,463) @end defivar
+coverage_macro.texi(,464) 
+coverage_macro.texi(,465) @deftypeivar c--lass t--ype d--eftypeivar_name
+coverage_macro.texi(,466) d--eftypeivar
+coverage_macro.texi(,467) @end deftypeivar
+coverage_macro.texi(,468) 
+coverage_macro.texi(,469) @defmethod c--lass d--efmethod_name a--rguments...
+coverage_macro.texi(,470) d--efmethod
+coverage_macro.texi(,471) @end defmethod
+coverage_macro.texi(,472) 
+coverage_macro.texi(,473) @deftypemethod c--lass t--ype d--eftypemethod_name 
a--rguments...
+coverage_macro.texi(,474) d--eftypemethod
+coverage_macro.texi(,475) @end deftypemethod
+coverage_macro.texi(,476) 
+coverage_macro.texi(,477) @code{@@address@hidden@@@@, cross r---ef name@@@@, 
t---itle@@@@, file n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross 
r---ef name@@, t---itle@@, file n---ame@@, ma---nual@@}.
+coverage_macro.texi(,478) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @ref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,479) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @pxref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,480) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,481) 
+coverage_macro.texi(,482) @code{@@address@hidden@}} @ref{chapter}
+coverage_macro.texi(,483) @code{@@address@hidden@}} @xref{chapter}.
+coverage_macro.texi(,484) @code{@@address@hidden@}} @pxref{chapter}
+coverage_macro.texi(,485) 
@code{@@address@hidden@@address@hidden@address@hidden @address@hidden
+coverage_macro.texi(,486) 
+coverage_macro.texi(,487) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,488) ref, a comma@@address@hidden@} in title, a 
comma@@address@hidden@} in file, a @@address@hidden@} in manual name @}}
+coverage_macro.texi(,489) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,490) ref, a address@hidden in title, a address@hidden in 
file, a @comma{} in manual name }
+coverage_macro.texi(,491) 
+coverage_macro.texi(,492) @code{@@address@hidden,cross ref address@hidden 
@ref{chapter,cross ref name}
+coverage_macro.texi(,493) @code{@@address@hidden,,address@hidden 
@ref{chapter,,title}
+coverage_macro.texi(,494) @code{@@address@hidden,,,file address@hidden 
@ref{chapter,,,file name}
+coverage_macro.texi(,495) @code{@@address@hidden,,,,address@hidden 
@ref{chapter,,,,manual}
+coverage_macro.texi(,496) @code{@@address@hidden,cross ref name,title,@}} 
@ref{chapter,cross ref name,title,}
+coverage_macro.texi(,497) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{chapter,cross ref name,,file name}
+coverage_macro.texi(,498) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{chapter,cross ref name,,,manual}
+coverage_macro.texi(,499) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{chapter,cross ref name,title,file name}
+coverage_macro.texi(,500) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{chapter,cross ref name,title,,manual}
+coverage_macro.texi(,501) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{chapter,cross ref name,title, file name, manual}
+coverage_macro.texi(,502) @code{@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
+coverage_macro.texi(,503) @code{@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
+coverage_macro.texi(,504) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,505) @code{@@address@hidden,,,file name,address@hidden 
@ref{chapter,,,file name,manual}
+coverage_macro.texi(,506) 
+coverage_macro.texi(,507) 
+coverage_macro.texi(,508) @code{@@address@hidden(pman)anode,cross ref 
address@hidden @ref{(pman)anode,cross ref name}
+coverage_macro.texi(,509) @code{@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
+coverage_macro.texi(,510) @code{@@address@hidden(pman)anode,,,file 
address@hidden @ref{(pman)anode,,,file name}
+coverage_macro.texi(,511) @code{@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
+coverage_macro.texi(,512) @code{@@address@hidden(pman)anode,cross ref 
name,title,@}} @ref{(pman)anode,cross ref name,title,}
+coverage_macro.texi(,513) @code{@@address@hidden(pman)anode,cross ref 
name,,file address@hidden @ref{(pman)anode,cross ref name,,file name}
+coverage_macro.texi(,514) @code{@@address@hidden(pman)anode,cross ref 
name,,,address@hidden @ref{(pman)anode,cross ref name,,,manual}
+coverage_macro.texi(,515) @code{@@address@hidden(pman)anode,cross ref 
name,title,file address@hidden @ref{(pman)anode,cross ref name,title,file name}
+coverage_macro.texi(,516) @code{@@address@hidden(pman)anode,cross ref 
name,title,,address@hidden @ref{(pman)anode,cross ref name,title,,manual}
+coverage_macro.texi(,517) @code{@@address@hidden(pman)anode,cross ref 
name,title, file name, address@hidden @ref{(pman)anode,cross ref name,title, 
file name, manual}
+coverage_macro.texi(,518) @code{@@address@hidden(pman)anode,,title,file 
address@hidden @ref{(pman)anode,,title,file name}
+coverage_macro.texi(,519) 
@code{@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
+coverage_macro.texi(,520) @code{@@address@hidden(pman)anode,,title, file name, 
address@hidden @ref{(pman)anode,,title, file name, manual}
+coverage_macro.texi(,521) @code{@@address@hidden(pman)anode,,,file 
name,address@hidden @ref{(pman)anode,,,file name,manual}
+coverage_macro.texi(,522) 
+coverage_macro.texi(,523) 
+coverage_macro.texi(,524) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,525) @code{@@address@hidden@}} @inforef{chapter}
+coverage_macro.texi(,526) @code{@@address@hidden, cross ref address@hidden 
@inforef{chapter, cross ref name}
+coverage_macro.texi(,527) @code{@@address@hidden,,file address@hidden 
@inforef{chapter,,file name}
+coverage_macro.texi(,528) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{node, cross ref name, file name}
+coverage_macro.texi(,529) @code{@@address@hidden@}} @inforef{node}
+coverage_macro.texi(,530) @code{@@address@hidden, cross ref address@hidden 
@inforef{node, cross ref name}
+coverage_macro.texi(,531) @code{@@address@hidden,,file address@hidden 
@inforef{node,,file name}
+coverage_macro.texi(,532) @code{@@address@hidden, cross ref name, file name, 
spurious address@hidden @inforef{chapter, cross ref name, file name, spurious 
arg}
+coverage_macro.texi(,533) 
+coverage_macro.texi(,534) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,535) ref, a comma@@address@hidden@} in address@hidden
+coverage_macro.texi(,536) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,537) ref, a address@hidden in file}
+coverage_macro.texi(,538) 
+coverage_macro.texi(,539) 
+coverage_macro.texi(,540) @table @bullet
+coverage_macro.texi(,541) @c comment in table
+coverage_macro.texi(,542) @item a
+coverage_macro.texi(,543) l--ine
+coverage_macro.texi(,544) @end table
+coverage_macro.texi(,545) 
+coverage_macro.texi(,546) @vtable @asis
+coverage_macro.texi(,547) @item a
+coverage_macro.texi(,548) @c comment between item and itemx
+coverage_macro.texi(,549) @itemx b
+coverage_macro.texi(,550) l--ine
+coverage_macro.texi(,551) @end vtable
+coverage_macro.texi(,552) 
+coverage_macro.texi(,553) @ftable @minus
+coverage_macro.texi(,554) @item a
+coverage_macro.texi(,555) @cindex index entry between item and itemx
+coverage_macro.texi(,556) @itemx b
+coverage_macro.texi(,557) l--ine
+coverage_macro.texi(,558) @end ftable
+coverage_macro.texi(,559) 
+coverage_macro.texi(,560) @cartouche
+coverage_macro.texi(,561) c--artouche
+coverage_macro.texi(,562) @end cartouche
+coverage_macro.texi(,563) 
+coverage_macro.texi(,564) @flushleft
+coverage_macro.texi(,565) f--lushleft
+coverage_macro.texi(,566) @end flushleft
+coverage_macro.texi(,567) 
+coverage_macro.texi(,568) @flushright
+coverage_macro.texi(,569) f--lushright
+coverage_macro.texi(,570) @end flushright
+coverage_macro.texi(,571) 
+coverage_macro.texi(,572) @center ce--ntered line
+coverage_macro.texi(,573) 
+coverage_macro.texi(,574) @verbatiminclude simplest.texi
+coverage_macro.texi(,575) 
+coverage_macro.texi(,576) @verbatim
+coverage_macro.texi(,577) in verbatim ''
+coverage_macro.texi(,578) @end verbatim
+coverage_macro.texi(,579) 
+coverage_macro.texi(,580) @xml
+coverage_macro.texi(,581) <para> xml para </para> ''
+coverage_macro.texi(,582) @end xml
+coverage_macro.texi(,583) 
+coverage_macro.texi(,584) @html
+coverage_macro.texi(,585) html ''
+coverage_macro.texi(,586) @end html
+coverage_macro.texi(,587) 
+coverage_macro.texi(,588) @tex
+coverage_macro.texi(,589) $$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ 
''
+coverage_macro.texi(,590) @end tex
+coverage_macro.texi(,591) 
+coverage_macro.texi(,592) @docbook
+coverage_macro.texi(,593) docbook ''
+coverage_macro.texi(,594) @end docbook
+coverage_macro.texi(,595) 
+coverage_macro.texi(,596) @majorheading majorheading
+coverage_macro.texi(,597) 
+coverage_macro.texi(,598) @chapheading chapheading
+coverage_macro.texi(,599) 
+coverage_macro.texi(,600) @heading heading
+coverage_macro.texi(,601) 
+coverage_macro.texi(,602) @subheading subheading
+coverage_macro.texi(,603) 
+coverage_macro.texi(,604) @subsubheading subsubheading
+coverage_macro.texi(,605) 
+coverage_macro.texi(,606) @c makeinfo cannot handle that
+coverage_macro.texi(,607) @ifset texi2html
+coverage_macro.texi(,608) 
+coverage_macro.texi(,609) @code{@@address@hidden,an accronym 
@@address@hidden@} @@address@hidden@address@hidden @acronym{--a,an accronym 
@comma{} @enddots{}}
+coverage_macro.texi(,610) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
+coverage_macro.texi(,611) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,612) 
+coverage_macro.texi(,613) @code{@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+coverage_macro.texi(,614) 
+coverage_macro.texi(,615) @code{@@address@hidden,,,alt@@address@hidden:jk _" 
%@:@address@hidden @image{f-ile,,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,616) @code{@@address@hidden,aze,az,@@address@hidden:jk _" 
%@@:@} @@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" 
%@:} @b{in b "},e--xt}
+coverage_macro.texi(,617) @code{@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,618) 
+coverage_macro.texi(,619) @set invalid
+coverage_macro.texi(,620) @end ifset
+coverage_macro.texi(,621) 
+coverage_macro.texi(,622) 
+coverage_macro.texi(,623) @c invalid texinfo
+coverage_macro.texi(,624) @ifset invalid
+coverage_macro.texi(,625) 
+coverage_macro.texi(,626) Somehow invalid use of @@,:@*
+coverage_macro.texi(,627) @@, @,
+coverage_macro.texi(,628) @*
+coverage_macro.texi(,629) @@,@@"u @,@"u
+coverage_macro.texi(,630) 
+coverage_macro.texi(,631) Invalid use of @@':@*
+coverage_macro.texi(,632) @@' @'
+coverage_macro.texi(,633) @*
+coverage_macro.texi(,634) @@'@@"u @'@"u
+coverage_macro.texi(,635) 
+coverage_macro.texi(,636) @c only i or j as arg
+coverage_macro.texi(,637) @@address@hidden@} @dotless{truc}
+coverage_macro.texi(,638) @@address@hidden@} @dotless{ij}
+coverage_macro.texi(,639) @code{@@address@hidden@}} @dotless{--a}
+coverage_macro.texi(,640) @code{@@address@hidden@}} @dotless{a}
+coverage_macro.texi(,641) 
+coverage_macro.texi(,642) @c braces missing
+coverage_macro.texi(,643) @@TeX, but without brace @TeX
+coverage_macro.texi(,644) 
+coverage_macro.texi(,645) @c unknown command
+coverage_macro.texi(,646) @code{@@#} @#
+coverage_macro.texi(,647) 
+coverage_macro.texi(,648) @c no arg
+coverage_macro.texi(,649) @code{@@address@hidden@}} @w{--a}
+coverage_macro.texi(,650) 
+coverage_macro.texi(,651) @c no file
+coverage_macro.texi(,652) @code{@@address@hidden,address@hidden @image{,1--xt}
+coverage_macro.texi(,653) @code{@@address@hidden,,address@hidden 
@image{,,2--xt}
+coverage_macro.texi(,654) @code{@@address@hidden,,,address@hidden 
@image{,,,3--xt}
+coverage_macro.texi(,655) 
+coverage_macro.texi(,656) @sp
+coverage_macro.texi(,657) 
+coverage_macro.texi(,658) @c braces missing
+coverage_macro.texi(,659) @itemize @emph after emph
+coverage_macro.texi(,660) @item e--mph item
+coverage_macro.texi(,661) @end itemize
+coverage_macro.texi(,662) 
+coverage_macro.texi(,663) @c braces missing
+coverage_macro.texi(,664) @itemize @bullet a--n itemize line
+coverage_macro.texi(,665) @item i--tem 1
+coverage_macro.texi(,666) @item i--tem 2
+coverage_macro.texi(,667) @end itemize
+coverage_macro.texi(,668) 
+coverage_macro.texi(,669) @c deffnx after deff lines
+coverage_macro.texi(,670) @deffn fun
+coverage_macro.texi(,671) @deffnx truc machin bidule chose and }
+coverage_macro.texi(,672) @deffnx truc machin bidule chose and } after
+coverage_macro.texi(,673) @deffnx truc machin bidule chose and {
+coverage_macro.texi(,674) @deffnx truc machin bidule chose and { and after
+coverage_macro.texi(,675) @deffnx {truc} followed by a comment
+coverage_macro.texi(,676) @c comment
+coverage_macro.texi(,677) Various deff lines
+coverage_macro.texi(,678) @deffnx {truc} after a deff item
+coverage_macro.texi(,679) @end deffn
+coverage_macro.texi(,680) 
+coverage_macro.texi(,681) @c node is non existent, or missing first arg
+coverage_macro.texi(,682) @code{@@address@hidden@}} @ref{node}
+coverage_macro.texi(,683) 
+coverage_macro.texi(,684) @code{@@address@hidden,cross ref address@hidden 
@ref{,cross ref name}
+coverage_macro.texi(,685) @code{@@address@hidden,,address@hidden @ref{,,title}
+coverage_macro.texi(,686) @code{@@address@hidden,,,file address@hidden 
@ref{,,,file name}
+coverage_macro.texi(,687) @code{@@address@hidden,,,,address@hidden 
@ref{,,,,manual}
+coverage_macro.texi(,688) @code{@@address@hidden,cross ref address@hidden 
@ref{node,cross ref name}
+coverage_macro.texi(,689) @code{@@address@hidden,,address@hidden 
@ref{node,,title}
+coverage_macro.texi(,690) @code{@@address@hidden,,,file address@hidden 
@ref{node,,,file name}
+coverage_macro.texi(,691) @code{@@address@hidden,,,,address@hidden 
@ref{node,,,,manual}
+coverage_macro.texi(,692) @code{@@address@hidden,cross ref name,title,@}} 
@ref{node,cross ref name,title,}
+coverage_macro.texi(,693) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{node,cross ref name,,file name}
+coverage_macro.texi(,694) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{node,cross ref name,,,manual}
+coverage_macro.texi(,695) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{node,cross ref name,title,file name}
+coverage_macro.texi(,696) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{node,cross ref name,title,,manual}
+coverage_macro.texi(,697) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{node,cross ref name,title, file name, manual}
+coverage_macro.texi(,698) @code{@@address@hidden,,title,file address@hidden 
@ref{node,,title,file name}
+coverage_macro.texi(,699) @code{@@address@hidden,,title,,address@hidden 
@ref{node,,title,,manual}
+coverage_macro.texi(,700) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,701) @code{@@address@hidden,,title, file name, 
address@hidden @ref{node,,title, file name, manual}
+coverage_macro.texi(,702) @code{@@address@hidden,,,file name,address@hidden 
@ref{node,,,file name,manual}
+coverage_macro.texi(,703) @code{@@address@hidden,cross ref name,title,@}} 
@ref{,cross ref name,title,}
+coverage_macro.texi(,704) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{,cross ref name,,file name}
+coverage_macro.texi(,705) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{,cross ref name,,,manual}
+coverage_macro.texi(,706) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{,cross ref name,title,file name}
+coverage_macro.texi(,707) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{,cross ref name,title,,manual}
+coverage_macro.texi(,708) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{,cross ref name,title, file name, manual}
+coverage_macro.texi(,709) @code{@@address@hidden,,title,file address@hidden 
@ref{,,title,file name}
+coverage_macro.texi(,710) @code{@@address@hidden,,title,,address@hidden 
@ref{,,title,,manual}
+coverage_macro.texi(,711) @code{@@address@hidden,,title, file name, 
address@hidden @ref{,,title, file name, manual}
+coverage_macro.texi(,712) @code{@@address@hidden,,,file name,address@hidden 
@ref{,,,file name,manual}
+coverage_macro.texi(,713) 
+coverage_macro.texi(,714) @code{@@address@hidden,cross ref name @}} 
@inforef{,cross ref name }
+coverage_macro.texi(,715) @code{@@address@hidden,,file address@hidden 
@inforef{,,file name}
+coverage_macro.texi(,716) @code{@@address@hidden,cross ref name, file 
address@hidden @inforef{,cross ref name, file name}
+coverage_macro.texi(,717) @code{@@address@hidden@}} @inforef{}
+coverage_macro.texi(,718) 
+coverage_macro.texi(,719) @end ifset
+coverage_macro.texi(,720) 
+coverage_macro.texi(,721) @end macro
 formatting.texi(,15) 
 formatting.texi(,20) 
 formatting.texi(,33) 

Index: coverage/res/texi_formatting/formatting.passtexi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/texi_formatting/formatting.passtexi,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- coverage/res/texi_formatting/formatting.passtexi    17 May 2009 15:35:20 
-0000      1.9
+++ coverage/res/texi_formatting/formatting.passtexi    2 Aug 2009 13:12:02 
-0000       1.10
@@ -10,6 +10,727 @@
 formatting.texi(,11) * description:chapter2.   Chapter 2
 formatting.texi(,12) @end menu
 formatting.texi(,13) 
+coverage_macro.texi(,1) @macro mymacro
+coverage_macro.texi(,2) 
+coverage_macro.texi(,3) <
+coverage_macro.texi(,4) >
+coverage_macro.texi(,5) "
+coverage_macro.texi(,6) &
+coverage_macro.texi(,7) '
+coverage_macro.texi(,8) `
+coverage_macro.texi(,9) 
+coverage_macro.texi(,10) ``simple-double--three---four----''@*
+coverage_macro.texi(,11) code: @code{``simple-double--three---four----''} @*
+coverage_macro.texi(,12) asis: @asis{``simple-double--three---four----''} @*
+coverage_macro.texi(,13) strong: @strong{``simple-double--three---four----''} 
@*
+coverage_macro.texi(,14) kbd: @kbd{``simple-double--three---four----''} @*
+coverage_macro.texi(,15) 
+coverage_macro.texi(,16) address@hidden@w{}-three---four----'@w{}'@*
+coverage_macro.texi(,17) 
+coverage_macro.texi(,18) @cindex --option
+coverage_macro.texi(,19) @cindex ``
+coverage_macro.texi(,20) @findex ``
+coverage_macro.texi(,21) @findex --foption
+coverage_macro.texi(,22) 
+coverage_macro.texi(,23) @@"u @"u 
+coverage_macro.texi(,24) @@"@address@hidden @"{U} 
+coverage_macro.texi(,25) @@~n @~n
+coverage_macro.texi(,26) @@^a @^a
+coverage_macro.texi(,27) @@'e @'e
+coverage_macro.texi(,28) @@=o @=o
+coverage_macro.texi(,29) @@`i @`i
+coverage_macro.texi(,30) @@'@address@hidden @'{e}
+coverage_macro.texi(,31) @@'@{@@address@hidden@address@hidden @'address@hidden 
+coverage_macro.texi(,32) @@address@hidden@} @dotless{i}
+coverage_macro.texi(,33) @@address@hidden@} @dotless{j}
+coverage_macro.texi(,34) @@address@hidden@@address@hidden @address@hidden 
+coverage_macro.texi(,35) @@address@hidden@} @l{}
+coverage_macro.texi(,36) @@,@{@@'address@hidden @,{@'C}
+coverage_macro.texi(,37) @@,c @,c
+coverage_macro.texi(,38) @@,c@@"u @,c@"u @*
+coverage_macro.texi(,39) 
+coverage_macro.texi(,40) @@* @*
+coverage_macro.texi(,41) @@ followed by a space
+coverage_macro.texi(,42) @ 
+coverage_macro.texi(,43) @@ followed by a tab
+coverage_macro.texi(,44) @     
+coverage_macro.texi(,45) @@ followed by a new line
+coverage_macro.texi(,46) @
+coverage_macro.texi(,47) @code{@@-} @-
+coverage_macro.texi(,48) @code{@@|} @|
+coverage_macro.texi(,49) @code{@@:} @:
+coverage_macro.texi(,50) @code{@@!} @!
+coverage_macro.texi(,51) @code{@@?} @?
+coverage_macro.texi(,52) @code{@@.} @.
+coverage_macro.texi(,53) @code{@@@@} @@
+coverage_macro.texi(,54) @code{@@@}} @}
+coverage_macro.texi(,55) @code{@@@{} @{
+coverage_macro.texi(,56) @code{@@/} @/
+coverage_macro.texi(,57) 
+coverage_macro.texi(,58) foo vs.@: bar. 
+coverage_macro.texi(,59) colon :@:And something else.
+coverage_macro.texi(,60) semi colon ;@:.
+coverage_macro.texi(,61) And ? ?@:.
+coverage_macro.texi(,62) Now ! !@:@@
+coverage_macro.texi(,63) but , ,@:
+coverage_macro.texi(,64) 
+coverage_macro.texi(,65) @@TeX @TeX{}
+coverage_macro.texi(,66) @@LaTeX @LaTeX{}
+coverage_macro.texi(,67) @@bullet @bullet{}
+coverage_macro.texi(,68) @@copyright @copyright{}
+coverage_macro.texi(,69) @@dots @dots{}
+coverage_macro.texi(,70) @@enddots @enddots{}
+coverage_macro.texi(,71) @@equiv @equiv{}
+coverage_macro.texi(,72) @@error @error{}
+coverage_macro.texi(,73) @@expansion @expansion{}
+coverage_macro.texi(,74) @@minus @minus{}
+coverage_macro.texi(,75) @@point @point{}
+coverage_macro.texi(,76) @@print @print{}
+coverage_macro.texi(,77) @@result @result{}
+coverage_macro.texi(,78) @@today @today{}
+coverage_macro.texi(,79) @@aa @aa{}
+coverage_macro.texi(,80) @@AA @AA{}
+coverage_macro.texi(,81) @@ae @ae{}
+coverage_macro.texi(,82) @@oe @oe{}
+coverage_macro.texi(,83) @@AE @AE{}
+coverage_macro.texi(,84) @@OE @OE{}
+coverage_macro.texi(,85) @@o @o{}
+coverage_macro.texi(,86) @@O @O{}
+coverage_macro.texi(,87) @@ss @ss{}
+coverage_macro.texi(,88) @@l @l{}
+coverage_macro.texi(,89) @@L @L{}
+coverage_macro.texi(,90) @@DH @DH{}
+coverage_macro.texi(,91) @@TH @TH{}
+coverage_macro.texi(,92) @@dh @dh{}
+coverage_macro.texi(,93) @@th @th{}
+coverage_macro.texi(,94) @@exclamdown @exclamdown{}
+coverage_macro.texi(,95) @@questiondown @questiondown{}
+coverage_macro.texi(,96) @@pounds @pounds{}
+coverage_macro.texi(,97) @@registeredsymbol @registeredsymbol{}
+coverage_macro.texi(,98) @@ordf @ordf{}
+coverage_macro.texi(,99) @@ordm @ordm{}
+coverage_macro.texi(,100) @@comma @comma{}
+coverage_macro.texi(,101) @@quotedblleft @quotedblleft{}
+coverage_macro.texi(,102) @@quotedblright @quotedblright{}
+coverage_macro.texi(,103) @@quoteleft @quoteleft{}
+coverage_macro.texi(,104) @@quoteright @quoteright{}
+coverage_macro.texi(,105) @@quotedblbase @quotedblbase{}
+coverage_macro.texi(,106) @@quotesinglbase @quotesinglbase{}
+coverage_macro.texi(,107) @@guillemetleft @guillemetleft{}
+coverage_macro.texi(,108) @@guillemetright @guillemetright{}
+coverage_macro.texi(,109) @@guillemotleft @guillemotleft{}
+coverage_macro.texi(,110) @@guillemotright @guillemotright{}
+coverage_macro.texi(,111) @@guilsinglleft @guilsinglleft{}
+coverage_macro.texi(,112) @@guilsinglright @guilsinglright{}
+coverage_macro.texi(,113) @@textdegree @textdegree{}
+coverage_macro.texi(,114) @@euro @euro{}
+coverage_macro.texi(,115) @@arrow @arrow{}
+coverage_macro.texi(,116) @@leq @leq{}
+coverage_macro.texi(,117) @@geq @geq{}
+coverage_macro.texi(,118) 
+coverage_macro.texi(,119) @code{@@address@hidden,an address@hidden 
@acronym{--a,an accronym}
+coverage_macro.texi(,120) @code{@@address@hidden@}} @acronym{--a}
+coverage_macro.texi(,121) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude Autonome @}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
+coverage_macro.texi(,122) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,123) @code{@@address@hidden@}} @asis{--a}
+coverage_macro.texi(,124) @code{@@address@hidden@}} @b{--a}
+coverage_macro.texi(,125) @code{@@address@hidden@}} @cite{--a}
+coverage_macro.texi(,126) @code{@@address@hidden@}} @code{--a}
+coverage_macro.texi(,127) @code{@@address@hidden@}} @command{--a}
+coverage_macro.texi(,128) @code{@@address@hidden@}} @ctrl{--a}
+coverage_macro.texi(,129) @code{@@address@hidden@}} @dfn{--a}
+coverage_macro.texi(,130) @code{@@address@hidden@}} @dmn{--a}
+coverage_macro.texi(,131) @code{@@address@hidden,address@hidden @email{--a,--b}
+coverage_macro.texi(,132) @code{@@address@hidden,address@hidden @email{,--b}
+coverage_macro.texi(,133) @code{@@address@hidden@}} @email{--a}
+coverage_macro.texi(,134) @code{@@address@hidden@}} @emph{--a}
+coverage_macro.texi(,135) @code{@@address@hidden@}} @env{--a}
+coverage_macro.texi(,136) @code{@@address@hidden@}} @file{--a}
+coverage_macro.texi(,137) @code{@@address@hidden@}} @i{--a}
+coverage_macro.texi(,138) @code{@@address@hidden@}} @kbd{--a}
+coverage_macro.texi(,139) @code{@@address@hidden@}} @key{--a}
+coverage_macro.texi(,140) @code{@@address@hidden 
@address@hidden@address@hidden@address@hidden @@address@hidden@address@hidden 
@math{--a {\\frac{1}{2}} @minus{}}
+coverage_macro.texi(,141) @code{@@address@hidden@}} @option{--a}
+coverage_macro.texi(,142) @code{@@address@hidden@}} @r{--a}
+coverage_macro.texi(,143) @code{@@address@hidden@}} @samp{--a}
+coverage_macro.texi(,144) @code{@@address@hidden@}} @sc{--a}
+coverage_macro.texi(,145) @code{@@address@hidden@}} @strong{--a}
+coverage_macro.texi(,146) @code{@@address@hidden@}} @t{--a}
+coverage_macro.texi(,147) @code{@@address@hidden@}} @sansserif{--a}
+coverage_macro.texi(,148) @code{@@address@hidden@}} @titlefont{--a}
+coverage_macro.texi(,149) @code{@@address@hidden@}} @indicateurl{--a}
+coverage_macro.texi(,150) @code{@@address@hidden,address@hidden @uref{--a,--b}
+coverage_macro.texi(,151) @code{@@address@hidden@}} @uref{--a}
+coverage_macro.texi(,152) @code{@@address@hidden,address@hidden @uref{,--b}
+coverage_macro.texi(,153) @code{@@address@hidden,--b,address@hidden 
@uref{--a,--b,--c}
+coverage_macro.texi(,154) @code{@@address@hidden,--b,address@hidden 
@uref{,--b,--c}
+coverage_macro.texi(,155) @code{@@address@hidden,,address@hidden 
@uref{--a,,--c}
+coverage_macro.texi(,156) @code{@@address@hidden,,address@hidden @uref{,,--c}
+coverage_macro.texi(,157) @code{@@address@hidden,address@hidden @url{--a,--b}
+coverage_macro.texi(,158) @code{@@address@hidden,@}} @url{--a,}
+coverage_macro.texi(,159) @code{@@address@hidden,address@hidden @url{,--b}
+coverage_macro.texi(,160) @code{@@address@hidden@}} @var{--a}
+coverage_macro.texi(,161) @code{@@address@hidden:--a:@}} @verb{:--a:}
+coverage_macro.texi(,162) @code{@@address@hidden:a  < & @@ % " --    b:@}} 
@verb{:a  < & @ % " --    b:}
+coverage_macro.texi(,163) @code{@@address@hidden@}} @w{}
+coverage_macro.texi(,164) @code{@@address@hidden@}} @H{a}
+coverage_macro.texi(,165) @code{@@address@hidden@}} @H{--a}
+coverage_macro.texi(,166) @code{@@address@hidden@}} @dotaccent{a}
+coverage_macro.texi(,167) @code{@@address@hidden@}} @dotaccent{--a}
+coverage_macro.texi(,168) @code{@@address@hidden@}} @ringaccent{a}
+coverage_macro.texi(,169) @code{@@address@hidden@}} @ringaccent{--a}
+coverage_macro.texi(,170) @code{@@address@hidden@}} @tieaccent{a}
+coverage_macro.texi(,171) @code{@@address@hidden@}} @tieaccent{--a}
+coverage_macro.texi(,172) @code{@@address@hidden@}} @u{a}
+coverage_macro.texi(,173) @code{@@address@hidden@}} @u{--a}
+coverage_macro.texi(,174) @code{@@address@hidden@}} @ubaraccent{a}
+coverage_macro.texi(,175) @code{@@address@hidden@}} @ubaraccent{--a}
+coverage_macro.texi(,176) @code{@@address@hidden@}} @udotaccent{a}
+coverage_macro.texi(,177) @code{@@address@hidden@}} @udotaccent{--a}
+coverage_macro.texi(,178) @code{@@address@hidden@}} @v{a}
+coverage_macro.texi(,179) @code{@@address@hidden@}} @v{--a}
+coverage_macro.texi(,180) @code{@@,@address@hidden @,{c}
+coverage_macro.texi(,181) @code{@@,@address@hidden @,{--c}
+coverage_macro.texi(,182) @ifset texi2html
+coverage_macro.texi(,183) @code{@@address@hidden@}} @ogonek{a}
+coverage_macro.texi(,184) @code{@@address@hidden@}} @ogonek{--a}
+coverage_macro.texi(,185) @end ifset
+coverage_macro.texi(,186) @code{@@address@hidden address@hidden @footnote{in 
footnote}
+coverage_macro.texi(,187) @code{@@address@hidden address@hidden @footnote{in 
footnote2}
+coverage_macro.texi(,188) 
+coverage_macro.texi(,189) @code{@@address@hidden@}} @image{f--ile}
+coverage_macro.texi(,190) @code{@@address@hidden,address@hidden 
@image{f--ile,l--i}
+coverage_macro.texi(,191) @code{@@address@hidden,,address@hidden 
@image{f--ile,,l--e}
+coverage_macro.texi(,192) @code{@@address@hidden,,,address@hidden 
@image{f--ile,,,alt}
+coverage_macro.texi(,193) @code{@@address@hidden,,,,address@hidden 
@image{f--ile,,,,e--xt}
+coverage_macro.texi(,194) @code{@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
+coverage_macro.texi(,195) @code{@@address@hidden,aze,,address@hidden 
@image{f-ile,aze,,a--lt}
+coverage_macro.texi(,196) 
@code{@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden 
address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+coverage_macro.texi(,197) 
+coverage_macro.texi(,198) @sp 2
+coverage_macro.texi(,199) 
+coverage_macro.texi(,200) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,201) @clickstyle @result
+coverage_macro.texi(,202) After clickstyle @result{}
+coverage_macro.texi(,203) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,204) @clickstyle @arrow
+coverage_macro.texi(,205) 
+coverage_macro.texi(,206) @quotation 
+coverage_macro.texi(,207) A quot---ation
+coverage_macro.texi(,208) @end quotation
+coverage_macro.texi(,209) 
+coverage_macro.texi(,210) @quotation Note
+coverage_macro.texi(,211) A Note
+coverage_macro.texi(,212) @end quotation
+coverage_macro.texi(,213) 
+coverage_macro.texi(,214) @quotation note
+coverage_macro.texi(,215) A note
+coverage_macro.texi(,216) @end quotation
+coverage_macro.texi(,217) 
+coverage_macro.texi(,218) @quotation Caution
+coverage_macro.texi(,219) Caution
+coverage_macro.texi(,220) @end quotation
+coverage_macro.texi(,221) 
+coverage_macro.texi(,222) @quotation Important
+coverage_macro.texi(,223) Important
+coverage_macro.texi(,224) @end quotation
+coverage_macro.texi(,225) 
+coverage_macro.texi(,226) @quotation Tip
+coverage_macro.texi(,227) a Tip
+coverage_macro.texi(,228) @end quotation
+coverage_macro.texi(,229) 
+coverage_macro.texi(,230) @quotation Warning
+coverage_macro.texi(,231) a Warning.
+coverage_macro.texi(,232) @end quotation
+coverage_macro.texi(,233) 
+coverage_macro.texi(,234) @quotation something @'e @TeX{}
+coverage_macro.texi(,235) The something @'e @TeX{} is here.
+coverage_macro.texi(,236) @end quotation
+coverage_macro.texi(,237) 
+coverage_macro.texi(,238) @quotation @@ at the end of line @
+coverage_macro.texi(,239) A @@ at the end of the @@quotation line.
+coverage_macro.texi(,240) @end quotation
+coverage_macro.texi(,241) 
+coverage_macro.texi(,242) @quotation something, other thing
+coverage_macro.texi(,243) something, other thing
+coverage_macro.texi(,244) @end quotation
+coverage_macro.texi(,245) 
+coverage_macro.texi(,246) @quotation Note, the note
+coverage_macro.texi(,247) Note, the note
+coverage_macro.texi(,248) @end quotation
+coverage_macro.texi(,249) 
+coverage_macro.texi(,250) @quotation
+coverage_macro.texi(,251) @end quotation
+coverage_macro.texi(,252) 
+coverage_macro.texi(,253) @quotation Empty
+coverage_macro.texi(,254) @end quotation
+coverage_macro.texi(,255) 
+coverage_macro.texi(,256) @quotation @asis{}
+coverage_macro.texi(,257) @end quotation
+coverage_macro.texi(,258) 
+coverage_macro.texi(,259) @quotation @*
+coverage_macro.texi(,260) @end quotation
+coverage_macro.texi(,261) 
+coverage_macro.texi(,262) @ifset texi2html
+coverage_macro.texi(,263) @smallquotation 
+coverage_macro.texi(,264) A small quot---ation
+coverage_macro.texi(,265) @end smallquotation
+coverage_macro.texi(,266) 
+coverage_macro.texi(,267) @smallquotation Note
+coverage_macro.texi(,268) A small Note
+coverage_macro.texi(,269) @end smallquotation
+coverage_macro.texi(,270) 
+coverage_macro.texi(,271) @smallquotation something, other thing
+coverage_macro.texi(,272) something, other thing
+coverage_macro.texi(,273) @end smallquotation
+coverage_macro.texi(,274) @end ifset
+coverage_macro.texi(,275) 
+coverage_macro.texi(,276) @itemize
+coverage_macro.texi(,277) @item i--temize
+coverage_macro.texi(,278) @end itemize
+coverage_macro.texi(,279) 
+coverage_macro.texi(,280) @itemize +
+coverage_macro.texi(,281) @item i--tem +
+coverage_macro.texi(,282) @end itemize
+coverage_macro.texi(,283) 
+coverage_macro.texi(,284) @itemize @bullet
+coverage_macro.texi(,285) @item b--ullet
+coverage_macro.texi(,286) @end itemize
+coverage_macro.texi(,287) 
+coverage_macro.texi(,288) @itemize @minus
+coverage_macro.texi(,289) @item minu--s
+coverage_macro.texi(,290) @end itemize
+coverage_macro.texi(,291) 
+coverage_macro.texi(,292) @itemize @emph
+coverage_macro.texi(,293) @item e--mph item
+coverage_macro.texi(,294) @end itemize
+coverage_macro.texi(,295) 
+coverage_macro.texi(,296) @itemize @emph{after emph}
+coverage_macro.texi(,297) @c comment in itemize
+coverage_macro.texi(,298) @item e--mph item
+coverage_macro.texi(,299) @end itemize
+coverage_macro.texi(,300) 
+coverage_macro.texi(,301) @itemize @bullet{} a--n itemize line
+coverage_macro.texi(,302) @cindex index entry within itemize
+coverage_macro.texi(,303) @item i--tem 1
+coverage_macro.texi(,304) @item i--tem 2
+coverage_macro.texi(,305) @end itemize
+coverage_macro.texi(,306) 
+coverage_macro.texi(,307) @enumerate
+coverage_macro.texi(,308) @item e--numerate
+coverage_macro.texi(,309) @end enumerate
+coverage_macro.texi(,310) 
+coverage_macro.texi(,311) @multitable @columnfractions 6 7
+coverage_macro.texi(,312) @headitem mu--ltitable headitem @tab another tab
+coverage_macro.texi(,313) @item mu--ltitable item @tab multitable tab
+coverage_macro.texi(,314) @c comment in multitable
+coverage_macro.texi(,315) @item mu--ltitable item 2 @tab multitable tab 2
+coverage_macro.texi(,316) @cindex index entry within multitable
+coverage_macro.texi(,317) @item lone mu--ltitable item
+coverage_macro.texi(,318) @end multitable
+coverage_macro.texi(,319) 
+coverage_macro.texi(,320) @multitable {truc} {bidule}
+coverage_macro.texi(,321) @item truc @tab bidule
+coverage_macro.texi(,322) @end multitable
+coverage_macro.texi(,323) 
+coverage_macro.texi(,324) @example
+coverage_macro.texi(,325) e--xample  some
+coverage_macro.texi(,326)    text
+coverage_macro.texi(,327) @end example
+coverage_macro.texi(,328) 
+coverage_macro.texi(,329) @smallexample
+coverage_macro.texi(,330) s--mallexample
+coverage_macro.texi(,331) @end smallexample
+coverage_macro.texi(,332) 
+coverage_macro.texi(,333) @display 
+coverage_macro.texi(,334) d--isplay
+coverage_macro.texi(,335) @end display
+coverage_macro.texi(,336) 
+coverage_macro.texi(,337) @smalldisplay
+coverage_macro.texi(,338) s--malldisplay
+coverage_macro.texi(,339) @end smalldisplay
+coverage_macro.texi(,340) 
+coverage_macro.texi(,341) @lisp
+coverage_macro.texi(,342) l--isp
+coverage_macro.texi(,343) @end lisp
+coverage_macro.texi(,344) 
+coverage_macro.texi(,345) @smalllisp
+coverage_macro.texi(,346) s--malllisp
+coverage_macro.texi(,347) @end smalllisp
+coverage_macro.texi(,348) 
+coverage_macro.texi(,349) @format
+coverage_macro.texi(,350) f--ormat
+coverage_macro.texi(,351) @end format
+coverage_macro.texi(,352) 
+coverage_macro.texi(,353) @smallformat
+coverage_macro.texi(,354) s--mallformat
+coverage_macro.texi(,355) @end smallformat
+coverage_macro.texi(,356) 
+coverage_macro.texi(,357) @deffn c--ategory d--effn_name a--rguments...
+coverage_macro.texi(,358) d--effn
+coverage_macro.texi(,359) @end deffn
+coverage_macro.texi(,360) 
+coverage_macro.texi(,361) @deffn cate--gory de--ffn_name ar--guments @
+coverage_macro.texi(,362)    more args @* even more so
+coverage_macro.texi(,363) def--fn
+coverage_macro.texi(,364) @end deffn
+coverage_macro.texi(,365)  
+coverage_macro.texi(,366) @deffn fset @var{i} a g
+coverage_macro.texi(,367) @cindex index entry within deffn
+coverage_macro.texi(,368) @deffnx {cmde} truc {}
+coverage_macro.texi(,369) @deffnx Command {log trap} {}
+coverage_macro.texi(,370) @deffnx Command { log trap1} {}  
+coverage_macro.texi(,371) @deffnx Command {log trap2 } {}
+coverage_macro.texi(,372) @deffnx cmde @b{id ule} truc
+coverage_macro.texi(,373) @deffnx cmde2 @b{id @samp{i} ule} truc
+coverage_macro.texi(,374) @deffnx @b{id @samp{i} ule}    
+coverage_macro.texi(,375) @deffnx 
+coverage_macro.texi(,376) @deffnx aaa
+coverage_macro.texi(,377) @deffnx {} {}
+coverage_macro.texi(,378) @deffnx{}
+coverage_macro.texi(,379) @deffnx{} machin
+coverage_macro.texi(,380) @deffnx{} {bidule machin}
+coverage_macro.texi(,381) @deffnx{truc} machin
+coverage_macro.texi(,382) @deffnx{truc} { }
+coverage_macro.texi(,383) @deffnx{truc} followed by a comment
+coverage_macro.texi(,384) @c comment
+coverage_macro.texi(,385) @deffnx{truc}
+coverage_macro.texi(,386) @deffnx{} {}
+coverage_macro.texi(,387) @deffnx {truc} a b c d e @b{f g} {h i}
+coverage_macro.texi(,388) @deffnx {truc} deffnx before end deffn
+coverage_macro.texi(,389) @end deffn
+coverage_macro.texi(,390) 
+coverage_macro.texi(,391) @deffn empty deffn
+coverage_macro.texi(,392) @end deffn
+coverage_macro.texi(,393) 
+coverage_macro.texi(,394) @deffn empty deffn with deffnx
+coverage_macro.texi(,395) @c comment between deffn and deffnx
+coverage_macro.texi(,396) @deffnx empty deffnx
+coverage_macro.texi(,397) @end deffn
+coverage_macro.texi(,398) 
+coverage_macro.texi(,399) @deffn fset @var{i} a g
+coverage_macro.texi(,400) @deffnx {cmde} truc {}
+coverage_macro.texi(,401) @c comment
+coverage_macro.texi(,402) text in def item for second def item
+coverage_macro.texi(,403) @end deffn
+coverage_macro.texi(,404) 
+coverage_macro.texi(,405) @defvr c--ategory d--efvr_name
+coverage_macro.texi(,406) d--efvr
+coverage_macro.texi(,407) @end defvr
+coverage_macro.texi(,408) 
+coverage_macro.texi(,409) @deftypefn c--ategory t--ype d--eftypefn_name 
a--rguments...
+coverage_macro.texi(,410) d--eftypefn
+coverage_macro.texi(,411) @end deftypefn
+coverage_macro.texi(,412) 
+coverage_macro.texi(,413) @deftypeop c--ategory c--lass t--ype 
d--eftypeop_name a--rguments...
+coverage_macro.texi(,414) d--eftypeop
+coverage_macro.texi(,415) @end deftypeop
+coverage_macro.texi(,416) 
+coverage_macro.texi(,417) @deftypevr c--ategory t--ype d--eftypevr_name
+coverage_macro.texi(,418) d--eftypevr
+coverage_macro.texi(,419) @end deftypevr
+coverage_macro.texi(,420) 
+coverage_macro.texi(,421) @defcv c--ategory c--lass d--efcv_name
+coverage_macro.texi(,422) d--efcv
+coverage_macro.texi(,423) @end defcv
+coverage_macro.texi(,424) 
+coverage_macro.texi(,425) @defop c--ategory c--lass d--efop_name a--rguments...
+coverage_macro.texi(,426) d--efop
+coverage_macro.texi(,427) @end defop
+coverage_macro.texi(,428) 
+coverage_macro.texi(,429) @deftp c--ategory d--eftp_name a--ttributes...
+coverage_macro.texi(,430) d--eftp
+coverage_macro.texi(,431) @end deftp
+coverage_macro.texi(,432) 
+coverage_macro.texi(,433) @defun d--efun_name a--rguments...
+coverage_macro.texi(,434) d--efun
+coverage_macro.texi(,435) @end defun
+coverage_macro.texi(,436) 
+coverage_macro.texi(,437) @defmac d--efmac_name a--rguments...
+coverage_macro.texi(,438) d--efmac
+coverage_macro.texi(,439) @end defmac
+coverage_macro.texi(,440) 
+coverage_macro.texi(,441) @defspec d--efspec_name a--rguments...
+coverage_macro.texi(,442) d--efspec
+coverage_macro.texi(,443) @end defspec
+coverage_macro.texi(,444) 
+coverage_macro.texi(,445) @defvar d--efvar_name argvar argvar1
+coverage_macro.texi(,446) d--efvar
+coverage_macro.texi(,447) @end defvar
+coverage_macro.texi(,448) 
+coverage_macro.texi(,449) @defopt d--efopt_name
+coverage_macro.texi(,450) d--efopt
+coverage_macro.texi(,451) @end defopt
+coverage_macro.texi(,452) 
+coverage_macro.texi(,453) @deftypefun t--ype d--eftypefun_name a--rguments...
+coverage_macro.texi(,454) d--eftypefun
+coverage_macro.texi(,455) @end deftypefun
+coverage_macro.texi(,456) 
+coverage_macro.texi(,457) @deftypevar t--ype d--eftypevar_name
+coverage_macro.texi(,458) d--eftypevar
+coverage_macro.texi(,459) @end deftypevar
+coverage_macro.texi(,460) 
+coverage_macro.texi(,461) @defivar c--lass d--efivar_name
+coverage_macro.texi(,462) d--efivar
+coverage_macro.texi(,463) @end defivar
+coverage_macro.texi(,464) 
+coverage_macro.texi(,465) @deftypeivar c--lass t--ype d--eftypeivar_name
+coverage_macro.texi(,466) d--eftypeivar
+coverage_macro.texi(,467) @end deftypeivar
+coverage_macro.texi(,468) 
+coverage_macro.texi(,469) @defmethod c--lass d--efmethod_name a--rguments...
+coverage_macro.texi(,470) d--efmethod
+coverage_macro.texi(,471) @end defmethod
+coverage_macro.texi(,472) 
+coverage_macro.texi(,473) @deftypemethod c--lass t--ype d--eftypemethod_name 
a--rguments...
+coverage_macro.texi(,474) d--eftypemethod
+coverage_macro.texi(,475) @end deftypemethod
+coverage_macro.texi(,476) 
+coverage_macro.texi(,477) @code{@@address@hidden@@@@, cross r---ef name@@@@, 
t---itle@@@@, file n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross 
r---ef name@@, t---itle@@, file n---ame@@, ma---nual@@}.
+coverage_macro.texi(,478) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @ref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,479) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @pxref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,480) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,481) 
+coverage_macro.texi(,482) @code{@@address@hidden@}} @ref{chapter}
+coverage_macro.texi(,483) @code{@@address@hidden@}} @xref{chapter}.
+coverage_macro.texi(,484) @code{@@address@hidden@}} @pxref{chapter}
+coverage_macro.texi(,485) 
@code{@@address@hidden@@address@hidden@address@hidden @address@hidden
+coverage_macro.texi(,486) 
+coverage_macro.texi(,487) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,488) ref, a comma@@address@hidden@} in title, a 
comma@@address@hidden@} in file, a @@address@hidden@} in manual name @}}
+coverage_macro.texi(,489) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,490) ref, a address@hidden in title, a address@hidden in 
file, a @comma{} in manual name }
+coverage_macro.texi(,491) 
+coverage_macro.texi(,492) @code{@@address@hidden,cross ref address@hidden 
@ref{chapter,cross ref name}
+coverage_macro.texi(,493) @code{@@address@hidden,,address@hidden 
@ref{chapter,,title}
+coverage_macro.texi(,494) @code{@@address@hidden,,,file address@hidden 
@ref{chapter,,,file name}
+coverage_macro.texi(,495) @code{@@address@hidden,,,,address@hidden 
@ref{chapter,,,,manual}
+coverage_macro.texi(,496) @code{@@address@hidden,cross ref name,title,@}} 
@ref{chapter,cross ref name,title,}
+coverage_macro.texi(,497) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{chapter,cross ref name,,file name}
+coverage_macro.texi(,498) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{chapter,cross ref name,,,manual}
+coverage_macro.texi(,499) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{chapter,cross ref name,title,file name}
+coverage_macro.texi(,500) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{chapter,cross ref name,title,,manual}
+coverage_macro.texi(,501) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{chapter,cross ref name,title, file name, manual}
+coverage_macro.texi(,502) @code{@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
+coverage_macro.texi(,503) @code{@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
+coverage_macro.texi(,504) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,505) @code{@@address@hidden,,,file name,address@hidden 
@ref{chapter,,,file name,manual}
+coverage_macro.texi(,506) 
+coverage_macro.texi(,507) 
+coverage_macro.texi(,508) @code{@@address@hidden(pman)anode,cross ref 
address@hidden @ref{(pman)anode,cross ref name}
+coverage_macro.texi(,509) @code{@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
+coverage_macro.texi(,510) @code{@@address@hidden(pman)anode,,,file 
address@hidden @ref{(pman)anode,,,file name}
+coverage_macro.texi(,511) @code{@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
+coverage_macro.texi(,512) @code{@@address@hidden(pman)anode,cross ref 
name,title,@}} @ref{(pman)anode,cross ref name,title,}
+coverage_macro.texi(,513) @code{@@address@hidden(pman)anode,cross ref 
name,,file address@hidden @ref{(pman)anode,cross ref name,,file name}
+coverage_macro.texi(,514) @code{@@address@hidden(pman)anode,cross ref 
name,,,address@hidden @ref{(pman)anode,cross ref name,,,manual}
+coverage_macro.texi(,515) @code{@@address@hidden(pman)anode,cross ref 
name,title,file address@hidden @ref{(pman)anode,cross ref name,title,file name}
+coverage_macro.texi(,516) @code{@@address@hidden(pman)anode,cross ref 
name,title,,address@hidden @ref{(pman)anode,cross ref name,title,,manual}
+coverage_macro.texi(,517) @code{@@address@hidden(pman)anode,cross ref 
name,title, file name, address@hidden @ref{(pman)anode,cross ref name,title, 
file name, manual}
+coverage_macro.texi(,518) @code{@@address@hidden(pman)anode,,title,file 
address@hidden @ref{(pman)anode,,title,file name}
+coverage_macro.texi(,519) 
@code{@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
+coverage_macro.texi(,520) @code{@@address@hidden(pman)anode,,title, file name, 
address@hidden @ref{(pman)anode,,title, file name, manual}
+coverage_macro.texi(,521) @code{@@address@hidden(pman)anode,,,file 
name,address@hidden @ref{(pman)anode,,,file name,manual}
+coverage_macro.texi(,522) 
+coverage_macro.texi(,523) 
+coverage_macro.texi(,524) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,525) @code{@@address@hidden@}} @inforef{chapter}
+coverage_macro.texi(,526) @code{@@address@hidden, cross ref address@hidden 
@inforef{chapter, cross ref name}
+coverage_macro.texi(,527) @code{@@address@hidden,,file address@hidden 
@inforef{chapter,,file name}
+coverage_macro.texi(,528) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{node, cross ref name, file name}
+coverage_macro.texi(,529) @code{@@address@hidden@}} @inforef{node}
+coverage_macro.texi(,530) @code{@@address@hidden, cross ref address@hidden 
@inforef{node, cross ref name}
+coverage_macro.texi(,531) @code{@@address@hidden,,file address@hidden 
@inforef{node,,file name}
+coverage_macro.texi(,532) @code{@@address@hidden, cross ref name, file name, 
spurious address@hidden @inforef{chapter, cross ref name, file name, spurious 
arg}
+coverage_macro.texi(,533) 
+coverage_macro.texi(,534) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,535) ref, a comma@@address@hidden@} in address@hidden
+coverage_macro.texi(,536) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,537) ref, a address@hidden in file}
+coverage_macro.texi(,538) 
+coverage_macro.texi(,539) 
+coverage_macro.texi(,540) @table @bullet
+coverage_macro.texi(,541) @c comment in table
+coverage_macro.texi(,542) @item a
+coverage_macro.texi(,543) l--ine
+coverage_macro.texi(,544) @end table
+coverage_macro.texi(,545) 
+coverage_macro.texi(,546) @vtable @asis
+coverage_macro.texi(,547) @item a
+coverage_macro.texi(,548) @c comment between item and itemx
+coverage_macro.texi(,549) @itemx b
+coverage_macro.texi(,550) l--ine
+coverage_macro.texi(,551) @end vtable
+coverage_macro.texi(,552) 
+coverage_macro.texi(,553) @ftable @minus
+coverage_macro.texi(,554) @item a
+coverage_macro.texi(,555) @cindex index entry between item and itemx
+coverage_macro.texi(,556) @itemx b
+coverage_macro.texi(,557) l--ine
+coverage_macro.texi(,558) @end ftable
+coverage_macro.texi(,559) 
+coverage_macro.texi(,560) @cartouche
+coverage_macro.texi(,561) c--artouche
+coverage_macro.texi(,562) @end cartouche
+coverage_macro.texi(,563) 
+coverage_macro.texi(,564) @flushleft
+coverage_macro.texi(,565) f--lushleft
+coverage_macro.texi(,566) @end flushleft
+coverage_macro.texi(,567) 
+coverage_macro.texi(,568) @flushright
+coverage_macro.texi(,569) f--lushright
+coverage_macro.texi(,570) @end flushright
+coverage_macro.texi(,571) 
+coverage_macro.texi(,572) @center ce--ntered line
+coverage_macro.texi(,573) 
+coverage_macro.texi(,574) @verbatiminclude simplest.texi
+coverage_macro.texi(,575) 
+coverage_macro.texi(,576) @verbatim
+coverage_macro.texi(,577) in verbatim ''
+coverage_macro.texi(,578) @end verbatim
+coverage_macro.texi(,579) 
+coverage_macro.texi(,580) @xml
+coverage_macro.texi(,581) <para> xml para </para> ''
+coverage_macro.texi(,582) @end xml
+coverage_macro.texi(,583) 
+coverage_macro.texi(,584) @html
+coverage_macro.texi(,585) html ''
+coverage_macro.texi(,586) @end html
+coverage_macro.texi(,587) 
+coverage_macro.texi(,588) @tex
+coverage_macro.texi(,589) $$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ 
''
+coverage_macro.texi(,590) @end tex
+coverage_macro.texi(,591) 
+coverage_macro.texi(,592) @docbook
+coverage_macro.texi(,593) docbook ''
+coverage_macro.texi(,594) @end docbook
+coverage_macro.texi(,595) 
+coverage_macro.texi(,596) @majorheading majorheading
+coverage_macro.texi(,597) 
+coverage_macro.texi(,598) @chapheading chapheading
+coverage_macro.texi(,599) 
+coverage_macro.texi(,600) @heading heading
+coverage_macro.texi(,601) 
+coverage_macro.texi(,602) @subheading subheading
+coverage_macro.texi(,603) 
+coverage_macro.texi(,604) @subsubheading subsubheading
+coverage_macro.texi(,605) 
+coverage_macro.texi(,606) @c makeinfo cannot handle that
+coverage_macro.texi(,607) @ifset texi2html
+coverage_macro.texi(,608) 
+coverage_macro.texi(,609) @code{@@address@hidden,an accronym 
@@address@hidden@} @@address@hidden@address@hidden @acronym{--a,an accronym 
@comma{} @enddots{}}
+coverage_macro.texi(,610) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
+coverage_macro.texi(,611) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,612) 
+coverage_macro.texi(,613) @code{@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+coverage_macro.texi(,614) 
+coverage_macro.texi(,615) @code{@@address@hidden,,,alt@@address@hidden:jk _" 
%@:@address@hidden @image{f-ile,,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,616) @code{@@address@hidden,aze,az,@@address@hidden:jk _" 
%@@:@} @@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" 
%@:} @b{in b "},e--xt}
+coverage_macro.texi(,617) @code{@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,618) 
+coverage_macro.texi(,619) @set invalid
+coverage_macro.texi(,620) @end ifset
+coverage_macro.texi(,621) 
+coverage_macro.texi(,622) 
+coverage_macro.texi(,623) @c invalid texinfo
+coverage_macro.texi(,624) @ifset invalid
+coverage_macro.texi(,625) 
+coverage_macro.texi(,626) Somehow invalid use of @@,:@*
+coverage_macro.texi(,627) @@, @,
+coverage_macro.texi(,628) @*
+coverage_macro.texi(,629) @@,@@"u @,@"u
+coverage_macro.texi(,630) 
+coverage_macro.texi(,631) Invalid use of @@':@*
+coverage_macro.texi(,632) @@' @'
+coverage_macro.texi(,633) @*
+coverage_macro.texi(,634) @@'@@"u @'@"u
+coverage_macro.texi(,635) 
+coverage_macro.texi(,636) @c only i or j as arg
+coverage_macro.texi(,637) @@address@hidden@} @dotless{truc}
+coverage_macro.texi(,638) @@address@hidden@} @dotless{ij}
+coverage_macro.texi(,639) @code{@@address@hidden@}} @dotless{--a}
+coverage_macro.texi(,640) @code{@@address@hidden@}} @dotless{a}
+coverage_macro.texi(,641) 
+coverage_macro.texi(,642) @c braces missing
+coverage_macro.texi(,643) @@TeX, but without brace @TeX
+coverage_macro.texi(,644) 
+coverage_macro.texi(,645) @c unknown command
+coverage_macro.texi(,646) @code{@@#} @#
+coverage_macro.texi(,647) 
+coverage_macro.texi(,648) @c no arg
+coverage_macro.texi(,649) @code{@@address@hidden@}} @w{--a}
+coverage_macro.texi(,650) 
+coverage_macro.texi(,651) @c no file
+coverage_macro.texi(,652) @code{@@address@hidden,address@hidden @image{,1--xt}
+coverage_macro.texi(,653) @code{@@address@hidden,,address@hidden 
@image{,,2--xt}
+coverage_macro.texi(,654) @code{@@address@hidden,,,address@hidden 
@image{,,,3--xt}
+coverage_macro.texi(,655) 
+coverage_macro.texi(,656) @sp
+coverage_macro.texi(,657) 
+coverage_macro.texi(,658) @c braces missing
+coverage_macro.texi(,659) @itemize @emph after emph
+coverage_macro.texi(,660) @item e--mph item
+coverage_macro.texi(,661) @end itemize
+coverage_macro.texi(,662) 
+coverage_macro.texi(,663) @c braces missing
+coverage_macro.texi(,664) @itemize @bullet a--n itemize line
+coverage_macro.texi(,665) @item i--tem 1
+coverage_macro.texi(,666) @item i--tem 2
+coverage_macro.texi(,667) @end itemize
+coverage_macro.texi(,668) 
+coverage_macro.texi(,669) @c deffnx after deff lines
+coverage_macro.texi(,670) @deffn fun
+coverage_macro.texi(,671) @deffnx truc machin bidule chose and }
+coverage_macro.texi(,672) @deffnx truc machin bidule chose and } after
+coverage_macro.texi(,673) @deffnx truc machin bidule chose and {
+coverage_macro.texi(,674) @deffnx truc machin bidule chose and { and after
+coverage_macro.texi(,675) @deffnx {truc} followed by a comment
+coverage_macro.texi(,676) @c comment
+coverage_macro.texi(,677) Various deff lines
+coverage_macro.texi(,678) @deffnx {truc} after a deff item
+coverage_macro.texi(,679) @end deffn
+coverage_macro.texi(,680) 
+coverage_macro.texi(,681) @c node is non existent, or missing first arg
+coverage_macro.texi(,682) @code{@@address@hidden@}} @ref{node}
+coverage_macro.texi(,683) 
+coverage_macro.texi(,684) @code{@@address@hidden,cross ref address@hidden 
@ref{,cross ref name}
+coverage_macro.texi(,685) @code{@@address@hidden,,address@hidden @ref{,,title}
+coverage_macro.texi(,686) @code{@@address@hidden,,,file address@hidden 
@ref{,,,file name}
+coverage_macro.texi(,687) @code{@@address@hidden,,,,address@hidden 
@ref{,,,,manual}
+coverage_macro.texi(,688) @code{@@address@hidden,cross ref address@hidden 
@ref{node,cross ref name}
+coverage_macro.texi(,689) @code{@@address@hidden,,address@hidden 
@ref{node,,title}
+coverage_macro.texi(,690) @code{@@address@hidden,,,file address@hidden 
@ref{node,,,file name}
+coverage_macro.texi(,691) @code{@@address@hidden,,,,address@hidden 
@ref{node,,,,manual}
+coverage_macro.texi(,692) @code{@@address@hidden,cross ref name,title,@}} 
@ref{node,cross ref name,title,}
+coverage_macro.texi(,693) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{node,cross ref name,,file name}
+coverage_macro.texi(,694) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{node,cross ref name,,,manual}
+coverage_macro.texi(,695) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{node,cross ref name,title,file name}
+coverage_macro.texi(,696) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{node,cross ref name,title,,manual}
+coverage_macro.texi(,697) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{node,cross ref name,title, file name, manual}
+coverage_macro.texi(,698) @code{@@address@hidden,,title,file address@hidden 
@ref{node,,title,file name}
+coverage_macro.texi(,699) @code{@@address@hidden,,title,,address@hidden 
@ref{node,,title,,manual}
+coverage_macro.texi(,700) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,701) @code{@@address@hidden,,title, file name, 
address@hidden @ref{node,,title, file name, manual}
+coverage_macro.texi(,702) @code{@@address@hidden,,,file name,address@hidden 
@ref{node,,,file name,manual}
+coverage_macro.texi(,703) @code{@@address@hidden,cross ref name,title,@}} 
@ref{,cross ref name,title,}
+coverage_macro.texi(,704) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{,cross ref name,,file name}
+coverage_macro.texi(,705) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{,cross ref name,,,manual}
+coverage_macro.texi(,706) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{,cross ref name,title,file name}
+coverage_macro.texi(,707) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{,cross ref name,title,,manual}
+coverage_macro.texi(,708) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{,cross ref name,title, file name, manual}
+coverage_macro.texi(,709) @code{@@address@hidden,,title,file address@hidden 
@ref{,,title,file name}
+coverage_macro.texi(,710) @code{@@address@hidden,,title,,address@hidden 
@ref{,,title,,manual}
+coverage_macro.texi(,711) @code{@@address@hidden,,title, file name, 
address@hidden @ref{,,title, file name, manual}
+coverage_macro.texi(,712) @code{@@address@hidden,,,file name,address@hidden 
@ref{,,,file name,manual}
+coverage_macro.texi(,713) 
+coverage_macro.texi(,714) @code{@@address@hidden,cross ref name @}} 
@inforef{,cross ref name }
+coverage_macro.texi(,715) @code{@@address@hidden,,file address@hidden 
@inforef{,,file name}
+coverage_macro.texi(,716) @code{@@address@hidden,cross ref name, file 
address@hidden @inforef{,cross ref name, file name}
+coverage_macro.texi(,717) @code{@@address@hidden@}} @inforef{}
+coverage_macro.texi(,718) 
+coverage_macro.texi(,719) @end ifset
+coverage_macro.texi(,720) 
+coverage_macro.texi(,721) @end macro
 formatting.texi(,15) 
 formatting.texi(,16) @copying
 formatting.texi(,17) In copying

Index: coverage/res/texi_formatting/formatting.texi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/texi_formatting/formatting.texi,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- coverage/res/texi_formatting/formatting.texi        17 May 2009 15:35:20 
-0000      1.9
+++ coverage/res/texi_formatting/formatting.texi        2 Aug 2009 13:12:02 
-0000       1.10
@@ -11,6 +11,727 @@
 * description:chapter2.   Chapter 2
 @end menu
 
address@hidden mymacro
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden texi2html
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden ifset
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden texi2html
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
address@hidden ifset
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments @
+   more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
address@hidden texi2html
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
address@hidden ifset
+
+
address@hidden invalid texinfo
address@hidden invalid
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
address@hidden ifset
+
address@hidden macro
 
 @copying
 In copying

Index: coverage/res/texi_imbrications/imbrications.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/texi_imbrications/imbrications.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res/texi_imbrications/imbrications.2       18 Aug 2008 18:02:13 
-0000      1.1
+++ coverage/res/texi_imbrications/imbrications.2       2 Aug 2009 13:12:02 
-0000       1.2
@@ -1,4 +1,2 @@
 ** unnumberedsubsec without name (l. 304)
 ** unnumberedsubsec without name (l. 306)
-** unnumberedsubsec without name (l. 304)
-** unnumberedsubsec without name (l. 306)

Index: coverage/res/texi_pass0_macros/pass0_macros.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res/texi_pass0_macros/pass0_macros.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res/texi_pass0_macros/pass0_macros.2       18 Aug 2008 18:02:14 
-0000      1.1
+++ coverage/res/texi_pass0_macros/pass0_macros.2       2 Aug 2009 13:12:02 
-0000       1.2
@@ -1,2 +1 @@
 *** Bad defindex line:  chose    machin  (l. 39)
-*** Bad defindex line:  chose    machin  (l. 39)

Index: coverage/res_all/comments/comments.txt
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_all/comments/comments.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- coverage/res_all/comments/comments.txt      28 Jun 2009 23:45:16 -0000      
1.2
+++ coverage/res_all/comments/comments.txt      2 Aug 2009 13:12:03 -0000       
1.3
@@ -59,13 +59,9 @@
 ---------------
 
 And now finalout:
-Text line followed by finalout on the same line and another below 
-
-Text line after the finalout followed by a fianlout 
-Text line after the text line followed by the finalout.
+Text line followed by finalout on the same line and another below Text line 
after the finalout followed by a fianlout Text line after the text line 
followed by the finalout.
 
 Test text after finalout
- a word after finalout
 Line after finalout
 
 @page  @noindent @refill  something

Index: coverage/res_all/comments_info/comments.info
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_all/comments_info/comments.info,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_all/comments_info/comments.info        21 Jun 2009 09:25:40 
-0000      1.1
+++ coverage/res_all/comments_info/comments.info        2 Aug 2009 13:12:03 
-0000       1.2
@@ -71,12 +71,10 @@
 ---------------
 
 And now finalout: Text line followed by finalout on the same line and
-another below
-
-    Text line after the finalout followed by a fianlout  Text line after
-the text line followed by the finalout.
+another below Text line after the finalout followed by a fianlout Text
+line after the text line followed by the finalout.
 
-    Test text after finalout  a word after finalout Line after finalout
+    Test text after finalout Line after finalout
 
     @page
     @noindent @refill  something
@@ -162,10 +160,10 @@
 
 Tag Table:
 Node: Top78
-Node: node2877
-Node: truc2990
-Node: bidule3228
-Node: bidule23414
+Node: node2848
+Node: truc2961
+Node: bidule3199
+Node: bidule23385
 
 End Tag Table
 

Index: coverage/res_all/formatting/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_all/formatting/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_all/formatting/formatting.2    21 Jun 2009 09:25:40 -0000      
1.1
+++ coverage/res_all/formatting/formatting.2    2 Aug 2009 13:12:03 -0000       
1.2
@@ -1,3 +1,4 @@
+** @ctrl is obsolete. (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
@@ -7,6 +8,7 @@
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
+** @ctrl is obsolete. (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
@@ -16,6 +18,7 @@
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
+** @ctrl is obsolete. (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
@@ -25,6 +28,7 @@
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
+** @ctrl is obsolete. (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
@@ -35,11 +39,11 @@
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** TeX requires {} (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 *** '}' without opening '{' before:  (l. 18 in @mymacro)
@@ -58,11 +62,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 ** TeX requires {} (l. 28 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 28 in @mymacro)
+** Unknown command address@hidden' (l. 28 in @mymacro)
 *** no file argument for @image (l. 28 in @mymacro)
 *** no file argument for @image (l. 28 in @mymacro)
 *** no file argument for @image (l. 28 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 28 in @mymacro)
+** Unknown command address@hidden' (l. 28 in @mymacro)
 ** bullet requires {} (l. 28 in @mymacro)
 ** bullet requires {} (l. 28 in @mymacro)
 *** '}' without opening '{' before:  (l. 28 in @mymacro)
@@ -81,11 +85,11 @@
 *** First argument to @inforef may not be empty (l. 28 in @mymacro)
 *** First argument to @inforef may not be empty (l. 28 in @mymacro)
 ** TeX requires {} (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 *** '}' without opening '{' before:  (l. 18 in @mymacro)
@@ -104,11 +108,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 ** TeX requires {} (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 ** bullet requires {} (l. 18 in @mymacro)
 *** '}' without opening '{' before:  (l. 18 in @mymacro)
@@ -127,11 +131,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 ** TeX requires {} (l. 38 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 38 in @mymacro)
+** Unknown command address@hidden' (l. 38 in @mymacro)
 *** no file argument for @image (l. 38 in @mymacro)
 *** no file argument for @image (l. 38 in @mymacro)
 *** no file argument for @image (l. 38 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 38 in @mymacro)
+** Unknown command address@hidden' (l. 38 in @mymacro)
 ** bullet requires {} (l. 38 in @mymacro)
 ** bullet requires {} (l. 38 in @mymacro)
 *** '}' without opening '{' before:  (l. 38 in @mymacro)
@@ -151,11 +155,11 @@
 *** First argument to @inforef may not be empty (l. 38 in @mymacro)
 *** @center should not appear in another format (l. 42 in @mymacro)
 ** TeX requires {} (l. 42 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 42 in @mymacro)
+** Unknown command address@hidden' (l. 42 in @mymacro)
 *** no file argument for @image (l. 42 in @mymacro)
 *** no file argument for @image (l. 42 in @mymacro)
 *** no file argument for @image (l. 42 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 42 in @mymacro)
+** Unknown command address@hidden' (l. 42 in @mymacro)
 ** bullet requires {} (l. 42 in @mymacro)
 ** bullet requires {} (l. 42 in @mymacro)
 *** '}' without opening '{' before:  (l. 42 in @mymacro)

Index: coverage/res_all/pass0_macros/pass0_macros.txt
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_all/pass0_macros/pass0_macros.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_all/pass0_macros/pass0_macros.txt      21 Jun 2009 09:25:40 
-0000      1.1
+++ coverage/res_all/pass0_macros/pass0_macros.txt      2 Aug 2009 13:12:03 
-0000       1.2
@@ -6,13 +6,10 @@
 ********************
 
 before syncodeindex 
-
 syncodeindex on its line
-
 line following syncodeindex
 
 One more thing following syncodeindex
-    truc
 line following syncodeindex cp fn   truc
 
 documentlanguage 

Index: coverage/res_all/texi_comments/comments.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_all/texi_comments/comments.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_all/texi_comments/comments.2   21 Jun 2009 09:25:40 -0000      
1.1
+++ coverage/res_all/texi_comments/comments.2   2 Aug 2009 13:12:03 -0000       
1.2
@@ -1,4 +1,2 @@
 ** Encoding name unknown: bad (l. 120)
 *** @clickstyle should only accept a macro as argument (l. 212)
-** Encoding name unknown: bad (l. 120)
-*** @clickstyle should only accept a macro as argument (l. 212)

Index: coverage/res_all/texi_formatting/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_all/texi_formatting/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_all/texi_formatting/formatting.2       21 Jun 2009 09:25:41 
-0000      1.1
+++ coverage/res_all/texi_formatting/formatting.2       2 Aug 2009 13:12:03 
-0000       1.2
@@ -1,3 +1,4 @@
+** @ctrl is obsolete. (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
@@ -7,6 +8,7 @@
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
+** @ctrl is obsolete. (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
@@ -16,6 +18,7 @@
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
+** @ctrl is obsolete. (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
@@ -25,42 +28,7 @@
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
+** @ctrl is obsolete. (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)

Index: coverage/res_all/texi_formatting/formatting.passfirst
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_all/texi_formatting/formatting.passfirst,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_all/texi_formatting/formatting.passfirst       21 Jun 2009 
09:25:41 -0000      1.1
+++ coverage/res_all/texi_formatting/formatting.passfirst       2 Aug 2009 
13:12:03 -0000       1.2
@@ -10,6 +10,727 @@
 formatting.texi(,11) * description:chapter2.   Chapter 2
 formatting.texi(,12) @end menu
 formatting.texi(,13) 
+coverage_macro.texi(,1) @macro mymacro
+coverage_macro.texi(,2) 
+coverage_macro.texi(,3) <
+coverage_macro.texi(,4) >
+coverage_macro.texi(,5) "
+coverage_macro.texi(,6) &
+coverage_macro.texi(,7) '
+coverage_macro.texi(,8) `
+coverage_macro.texi(,9) 
+coverage_macro.texi(,10) ``simple-double--three---four----''@*
+coverage_macro.texi(,11) code: @code{``simple-double--three---four----''} @*
+coverage_macro.texi(,12) asis: @asis{``simple-double--three---four----''} @*
+coverage_macro.texi(,13) strong: @strong{``simple-double--three---four----''} 
@*
+coverage_macro.texi(,14) kbd: @kbd{``simple-double--three---four----''} @*
+coverage_macro.texi(,15) 
+coverage_macro.texi(,16) address@hidden@w{}-three---four----'@w{}'@*
+coverage_macro.texi(,17) 
+coverage_macro.texi(,18) @cindex --option
+coverage_macro.texi(,19) @cindex ``
+coverage_macro.texi(,20) @findex ``
+coverage_macro.texi(,21) @findex --foption
+coverage_macro.texi(,22) 
+coverage_macro.texi(,23) @@"u @"u 
+coverage_macro.texi(,24) @@"@address@hidden @"{U} 
+coverage_macro.texi(,25) @@~n @~n
+coverage_macro.texi(,26) @@^a @^a
+coverage_macro.texi(,27) @@'e @'e
+coverage_macro.texi(,28) @@=o @=o
+coverage_macro.texi(,29) @@`i @`i
+coverage_macro.texi(,30) @@'@address@hidden @'{e}
+coverage_macro.texi(,31) @@'@{@@address@hidden@address@hidden @'address@hidden 
+coverage_macro.texi(,32) @@address@hidden@} @dotless{i}
+coverage_macro.texi(,33) @@address@hidden@} @dotless{j}
+coverage_macro.texi(,34) @@address@hidden@@address@hidden @address@hidden 
+coverage_macro.texi(,35) @@address@hidden@} @l{}
+coverage_macro.texi(,36) @@,@{@@'address@hidden @,{@'C}
+coverage_macro.texi(,37) @@,c @,c
+coverage_macro.texi(,38) @@,c@@"u @,c@"u @*
+coverage_macro.texi(,39) 
+coverage_macro.texi(,40) @@* @*
+coverage_macro.texi(,41) @@ followed by a space
+coverage_macro.texi(,42) @ 
+coverage_macro.texi(,43) @@ followed by a tab
+coverage_macro.texi(,44) @     
+coverage_macro.texi(,45) @@ followed by a new line
+coverage_macro.texi(,46) @
+coverage_macro.texi(,47) @code{@@-} @-
+coverage_macro.texi(,48) @code{@@|} @|
+coverage_macro.texi(,49) @code{@@:} @:
+coverage_macro.texi(,50) @code{@@!} @!
+coverage_macro.texi(,51) @code{@@?} @?
+coverage_macro.texi(,52) @code{@@.} @.
+coverage_macro.texi(,53) @code{@@@@} @@
+coverage_macro.texi(,54) @code{@@@}} @}
+coverage_macro.texi(,55) @code{@@@{} @{
+coverage_macro.texi(,56) @code{@@/} @/
+coverage_macro.texi(,57) 
+coverage_macro.texi(,58) foo vs.@: bar. 
+coverage_macro.texi(,59) colon :@:And something else.
+coverage_macro.texi(,60) semi colon ;@:.
+coverage_macro.texi(,61) And ? ?@:.
+coverage_macro.texi(,62) Now ! !@:@@
+coverage_macro.texi(,63) but , ,@:
+coverage_macro.texi(,64) 
+coverage_macro.texi(,65) @@TeX @TeX{}
+coverage_macro.texi(,66) @@LaTeX @LaTeX{}
+coverage_macro.texi(,67) @@bullet @bullet{}
+coverage_macro.texi(,68) @@copyright @copyright{}
+coverage_macro.texi(,69) @@dots @dots{}
+coverage_macro.texi(,70) @@enddots @enddots{}
+coverage_macro.texi(,71) @@equiv @equiv{}
+coverage_macro.texi(,72) @@error @error{}
+coverage_macro.texi(,73) @@expansion @expansion{}
+coverage_macro.texi(,74) @@minus @minus{}
+coverage_macro.texi(,75) @@point @point{}
+coverage_macro.texi(,76) @@print @print{}
+coverage_macro.texi(,77) @@result @result{}
+coverage_macro.texi(,78) @@today @today{}
+coverage_macro.texi(,79) @@aa @aa{}
+coverage_macro.texi(,80) @@AA @AA{}
+coverage_macro.texi(,81) @@ae @ae{}
+coverage_macro.texi(,82) @@oe @oe{}
+coverage_macro.texi(,83) @@AE @AE{}
+coverage_macro.texi(,84) @@OE @OE{}
+coverage_macro.texi(,85) @@o @o{}
+coverage_macro.texi(,86) @@O @O{}
+coverage_macro.texi(,87) @@ss @ss{}
+coverage_macro.texi(,88) @@l @l{}
+coverage_macro.texi(,89) @@L @L{}
+coverage_macro.texi(,90) @@DH @DH{}
+coverage_macro.texi(,91) @@TH @TH{}
+coverage_macro.texi(,92) @@dh @dh{}
+coverage_macro.texi(,93) @@th @th{}
+coverage_macro.texi(,94) @@exclamdown @exclamdown{}
+coverage_macro.texi(,95) @@questiondown @questiondown{}
+coverage_macro.texi(,96) @@pounds @pounds{}
+coverage_macro.texi(,97) @@registeredsymbol @registeredsymbol{}
+coverage_macro.texi(,98) @@ordf @ordf{}
+coverage_macro.texi(,99) @@ordm @ordm{}
+coverage_macro.texi(,100) @@comma @comma{}
+coverage_macro.texi(,101) @@quotedblleft @quotedblleft{}
+coverage_macro.texi(,102) @@quotedblright @quotedblright{}
+coverage_macro.texi(,103) @@quoteleft @quoteleft{}
+coverage_macro.texi(,104) @@quoteright @quoteright{}
+coverage_macro.texi(,105) @@quotedblbase @quotedblbase{}
+coverage_macro.texi(,106) @@quotesinglbase @quotesinglbase{}
+coverage_macro.texi(,107) @@guillemetleft @guillemetleft{}
+coverage_macro.texi(,108) @@guillemetright @guillemetright{}
+coverage_macro.texi(,109) @@guillemotleft @guillemotleft{}
+coverage_macro.texi(,110) @@guillemotright @guillemotright{}
+coverage_macro.texi(,111) @@guilsinglleft @guilsinglleft{}
+coverage_macro.texi(,112) @@guilsinglright @guilsinglright{}
+coverage_macro.texi(,113) @@textdegree @textdegree{}
+coverage_macro.texi(,114) @@euro @euro{}
+coverage_macro.texi(,115) @@arrow @arrow{}
+coverage_macro.texi(,116) @@leq @leq{}
+coverage_macro.texi(,117) @@geq @geq{}
+coverage_macro.texi(,118) 
+coverage_macro.texi(,119) @code{@@address@hidden,an address@hidden 
@acronym{--a,an accronym}
+coverage_macro.texi(,120) @code{@@address@hidden@}} @acronym{--a}
+coverage_macro.texi(,121) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude Autonome @}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
+coverage_macro.texi(,122) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,123) @code{@@address@hidden@}} @asis{--a}
+coverage_macro.texi(,124) @code{@@address@hidden@}} @b{--a}
+coverage_macro.texi(,125) @code{@@address@hidden@}} @cite{--a}
+coverage_macro.texi(,126) @code{@@address@hidden@}} @code{--a}
+coverage_macro.texi(,127) @code{@@address@hidden@}} @command{--a}
+coverage_macro.texi(,128) @code{@@address@hidden@}} @ctrl{--a}
+coverage_macro.texi(,129) @code{@@address@hidden@}} @dfn{--a}
+coverage_macro.texi(,130) @code{@@address@hidden@}} @dmn{--a}
+coverage_macro.texi(,131) @code{@@address@hidden,address@hidden @email{--a,--b}
+coverage_macro.texi(,132) @code{@@address@hidden,address@hidden @email{,--b}
+coverage_macro.texi(,133) @code{@@address@hidden@}} @email{--a}
+coverage_macro.texi(,134) @code{@@address@hidden@}} @emph{--a}
+coverage_macro.texi(,135) @code{@@address@hidden@}} @env{--a}
+coverage_macro.texi(,136) @code{@@address@hidden@}} @file{--a}
+coverage_macro.texi(,137) @code{@@address@hidden@}} @i{--a}
+coverage_macro.texi(,138) @code{@@address@hidden@}} @kbd{--a}
+coverage_macro.texi(,139) @code{@@address@hidden@}} @key{--a}
+coverage_macro.texi(,140) @code{@@address@hidden 
@address@hidden@address@hidden@address@hidden @@address@hidden@address@hidden 
@math{--a {\\frac{1}{2}} @minus{}}
+coverage_macro.texi(,141) @code{@@address@hidden@}} @option{--a}
+coverage_macro.texi(,142) @code{@@address@hidden@}} @r{--a}
+coverage_macro.texi(,143) @code{@@address@hidden@}} @samp{--a}
+coverage_macro.texi(,144) @code{@@address@hidden@}} @sc{--a}
+coverage_macro.texi(,145) @code{@@address@hidden@}} @strong{--a}
+coverage_macro.texi(,146) @code{@@address@hidden@}} @t{--a}
+coverage_macro.texi(,147) @code{@@address@hidden@}} @sansserif{--a}
+coverage_macro.texi(,148) @code{@@address@hidden@}} @titlefont{--a}
+coverage_macro.texi(,149) @code{@@address@hidden@}} @indicateurl{--a}
+coverage_macro.texi(,150) @code{@@address@hidden,address@hidden @uref{--a,--b}
+coverage_macro.texi(,151) @code{@@address@hidden@}} @uref{--a}
+coverage_macro.texi(,152) @code{@@address@hidden,address@hidden @uref{,--b}
+coverage_macro.texi(,153) @code{@@address@hidden,--b,address@hidden 
@uref{--a,--b,--c}
+coverage_macro.texi(,154) @code{@@address@hidden,--b,address@hidden 
@uref{,--b,--c}
+coverage_macro.texi(,155) @code{@@address@hidden,,address@hidden 
@uref{--a,,--c}
+coverage_macro.texi(,156) @code{@@address@hidden,,address@hidden @uref{,,--c}
+coverage_macro.texi(,157) @code{@@address@hidden,address@hidden @url{--a,--b}
+coverage_macro.texi(,158) @code{@@address@hidden,@}} @url{--a,}
+coverage_macro.texi(,159) @code{@@address@hidden,address@hidden @url{,--b}
+coverage_macro.texi(,160) @code{@@address@hidden@}} @var{--a}
+coverage_macro.texi(,161) @code{@@address@hidden:--a:@}} @verb{:--a:}
+coverage_macro.texi(,162) @code{@@address@hidden:a  < & @@ % " --    b:@}} 
@verb{:a  < & @ % " --    b:}
+coverage_macro.texi(,163) @code{@@address@hidden@}} @w{}
+coverage_macro.texi(,164) @code{@@address@hidden@}} @H{a}
+coverage_macro.texi(,165) @code{@@address@hidden@}} @H{--a}
+coverage_macro.texi(,166) @code{@@address@hidden@}} @dotaccent{a}
+coverage_macro.texi(,167) @code{@@address@hidden@}} @dotaccent{--a}
+coverage_macro.texi(,168) @code{@@address@hidden@}} @ringaccent{a}
+coverage_macro.texi(,169) @code{@@address@hidden@}} @ringaccent{--a}
+coverage_macro.texi(,170) @code{@@address@hidden@}} @tieaccent{a}
+coverage_macro.texi(,171) @code{@@address@hidden@}} @tieaccent{--a}
+coverage_macro.texi(,172) @code{@@address@hidden@}} @u{a}
+coverage_macro.texi(,173) @code{@@address@hidden@}} @u{--a}
+coverage_macro.texi(,174) @code{@@address@hidden@}} @ubaraccent{a}
+coverage_macro.texi(,175) @code{@@address@hidden@}} @ubaraccent{--a}
+coverage_macro.texi(,176) @code{@@address@hidden@}} @udotaccent{a}
+coverage_macro.texi(,177) @code{@@address@hidden@}} @udotaccent{--a}
+coverage_macro.texi(,178) @code{@@address@hidden@}} @v{a}
+coverage_macro.texi(,179) @code{@@address@hidden@}} @v{--a}
+coverage_macro.texi(,180) @code{@@,@address@hidden @,{c}
+coverage_macro.texi(,181) @code{@@,@address@hidden @,{--c}
+coverage_macro.texi(,182) @ifset texi2html
+coverage_macro.texi(,183) @code{@@address@hidden@}} @ogonek{a}
+coverage_macro.texi(,184) @code{@@address@hidden@}} @ogonek{--a}
+coverage_macro.texi(,185) @end ifset
+coverage_macro.texi(,186) @code{@@address@hidden address@hidden @footnote{in 
footnote}
+coverage_macro.texi(,187) @code{@@address@hidden address@hidden @footnote{in 
footnote2}
+coverage_macro.texi(,188) 
+coverage_macro.texi(,189) @code{@@address@hidden@}} @image{f--ile}
+coverage_macro.texi(,190) @code{@@address@hidden,address@hidden 
@image{f--ile,l--i}
+coverage_macro.texi(,191) @code{@@address@hidden,,address@hidden 
@image{f--ile,,l--e}
+coverage_macro.texi(,192) @code{@@address@hidden,,,address@hidden 
@image{f--ile,,,alt}
+coverage_macro.texi(,193) @code{@@address@hidden,,,,address@hidden 
@image{f--ile,,,,e--xt}
+coverage_macro.texi(,194) @code{@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
+coverage_macro.texi(,195) @code{@@address@hidden,aze,,address@hidden 
@image{f-ile,aze,,a--lt}
+coverage_macro.texi(,196) 
@code{@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden 
address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+coverage_macro.texi(,197) 
+coverage_macro.texi(,198) @sp 2
+coverage_macro.texi(,199) 
+coverage_macro.texi(,200) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,201) @clickstyle @result
+coverage_macro.texi(,202) After clickstyle @result{}
+coverage_macro.texi(,203) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,204) @clickstyle @arrow
+coverage_macro.texi(,205) 
+coverage_macro.texi(,206) @quotation 
+coverage_macro.texi(,207) A quot---ation
+coverage_macro.texi(,208) @end quotation
+coverage_macro.texi(,209) 
+coverage_macro.texi(,210) @quotation Note
+coverage_macro.texi(,211) A Note
+coverage_macro.texi(,212) @end quotation
+coverage_macro.texi(,213) 
+coverage_macro.texi(,214) @quotation note
+coverage_macro.texi(,215) A note
+coverage_macro.texi(,216) @end quotation
+coverage_macro.texi(,217) 
+coverage_macro.texi(,218) @quotation Caution
+coverage_macro.texi(,219) Caution
+coverage_macro.texi(,220) @end quotation
+coverage_macro.texi(,221) 
+coverage_macro.texi(,222) @quotation Important
+coverage_macro.texi(,223) Important
+coverage_macro.texi(,224) @end quotation
+coverage_macro.texi(,225) 
+coverage_macro.texi(,226) @quotation Tip
+coverage_macro.texi(,227) a Tip
+coverage_macro.texi(,228) @end quotation
+coverage_macro.texi(,229) 
+coverage_macro.texi(,230) @quotation Warning
+coverage_macro.texi(,231) a Warning.
+coverage_macro.texi(,232) @end quotation
+coverage_macro.texi(,233) 
+coverage_macro.texi(,234) @quotation something @'e @TeX{}
+coverage_macro.texi(,235) The something @'e @TeX{} is here.
+coverage_macro.texi(,236) @end quotation
+coverage_macro.texi(,237) 
+coverage_macro.texi(,238) @quotation @@ at the end of line @
+coverage_macro.texi(,239) A @@ at the end of the @@quotation line.
+coverage_macro.texi(,240) @end quotation
+coverage_macro.texi(,241) 
+coverage_macro.texi(,242) @quotation something, other thing
+coverage_macro.texi(,243) something, other thing
+coverage_macro.texi(,244) @end quotation
+coverage_macro.texi(,245) 
+coverage_macro.texi(,246) @quotation Note, the note
+coverage_macro.texi(,247) Note, the note
+coverage_macro.texi(,248) @end quotation
+coverage_macro.texi(,249) 
+coverage_macro.texi(,250) @quotation
+coverage_macro.texi(,251) @end quotation
+coverage_macro.texi(,252) 
+coverage_macro.texi(,253) @quotation Empty
+coverage_macro.texi(,254) @end quotation
+coverage_macro.texi(,255) 
+coverage_macro.texi(,256) @quotation @asis{}
+coverage_macro.texi(,257) @end quotation
+coverage_macro.texi(,258) 
+coverage_macro.texi(,259) @quotation @*
+coverage_macro.texi(,260) @end quotation
+coverage_macro.texi(,261) 
+coverage_macro.texi(,262) @ifset texi2html
+coverage_macro.texi(,263) @smallquotation 
+coverage_macro.texi(,264) A small quot---ation
+coverage_macro.texi(,265) @end smallquotation
+coverage_macro.texi(,266) 
+coverage_macro.texi(,267) @smallquotation Note
+coverage_macro.texi(,268) A small Note
+coverage_macro.texi(,269) @end smallquotation
+coverage_macro.texi(,270) 
+coverage_macro.texi(,271) @smallquotation something, other thing
+coverage_macro.texi(,272) something, other thing
+coverage_macro.texi(,273) @end smallquotation
+coverage_macro.texi(,274) @end ifset
+coverage_macro.texi(,275) 
+coverage_macro.texi(,276) @itemize
+coverage_macro.texi(,277) @item i--temize
+coverage_macro.texi(,278) @end itemize
+coverage_macro.texi(,279) 
+coverage_macro.texi(,280) @itemize +
+coverage_macro.texi(,281) @item i--tem +
+coverage_macro.texi(,282) @end itemize
+coverage_macro.texi(,283) 
+coverage_macro.texi(,284) @itemize @bullet
+coverage_macro.texi(,285) @item b--ullet
+coverage_macro.texi(,286) @end itemize
+coverage_macro.texi(,287) 
+coverage_macro.texi(,288) @itemize @minus
+coverage_macro.texi(,289) @item minu--s
+coverage_macro.texi(,290) @end itemize
+coverage_macro.texi(,291) 
+coverage_macro.texi(,292) @itemize @emph
+coverage_macro.texi(,293) @item e--mph item
+coverage_macro.texi(,294) @end itemize
+coverage_macro.texi(,295) 
+coverage_macro.texi(,296) @itemize @emph{after emph}
+coverage_macro.texi(,297) @c comment in itemize
+coverage_macro.texi(,298) @item e--mph item
+coverage_macro.texi(,299) @end itemize
+coverage_macro.texi(,300) 
+coverage_macro.texi(,301) @itemize @bullet{} a--n itemize line
+coverage_macro.texi(,302) @cindex index entry within itemize
+coverage_macro.texi(,303) @item i--tem 1
+coverage_macro.texi(,304) @item i--tem 2
+coverage_macro.texi(,305) @end itemize
+coverage_macro.texi(,306) 
+coverage_macro.texi(,307) @enumerate
+coverage_macro.texi(,308) @item e--numerate
+coverage_macro.texi(,309) @end enumerate
+coverage_macro.texi(,310) 
+coverage_macro.texi(,311) @multitable @columnfractions 6 7
+coverage_macro.texi(,312) @headitem mu--ltitable headitem @tab another tab
+coverage_macro.texi(,313) @item mu--ltitable item @tab multitable tab
+coverage_macro.texi(,314) @c comment in multitable
+coverage_macro.texi(,315) @item mu--ltitable item 2 @tab multitable tab 2
+coverage_macro.texi(,316) @cindex index entry within multitable
+coverage_macro.texi(,317) @item lone mu--ltitable item
+coverage_macro.texi(,318) @end multitable
+coverage_macro.texi(,319) 
+coverage_macro.texi(,320) @multitable {truc} {bidule}
+coverage_macro.texi(,321) @item truc @tab bidule
+coverage_macro.texi(,322) @end multitable
+coverage_macro.texi(,323) 
+coverage_macro.texi(,324) @example
+coverage_macro.texi(,325) e--xample  some
+coverage_macro.texi(,326)    text
+coverage_macro.texi(,327) @end example
+coverage_macro.texi(,328) 
+coverage_macro.texi(,329) @smallexample
+coverage_macro.texi(,330) s--mallexample
+coverage_macro.texi(,331) @end smallexample
+coverage_macro.texi(,332) 
+coverage_macro.texi(,333) @display 
+coverage_macro.texi(,334) d--isplay
+coverage_macro.texi(,335) @end display
+coverage_macro.texi(,336) 
+coverage_macro.texi(,337) @smalldisplay
+coverage_macro.texi(,338) s--malldisplay
+coverage_macro.texi(,339) @end smalldisplay
+coverage_macro.texi(,340) 
+coverage_macro.texi(,341) @lisp
+coverage_macro.texi(,342) l--isp
+coverage_macro.texi(,343) @end lisp
+coverage_macro.texi(,344) 
+coverage_macro.texi(,345) @smalllisp
+coverage_macro.texi(,346) s--malllisp
+coverage_macro.texi(,347) @end smalllisp
+coverage_macro.texi(,348) 
+coverage_macro.texi(,349) @format
+coverage_macro.texi(,350) f--ormat
+coverage_macro.texi(,351) @end format
+coverage_macro.texi(,352) 
+coverage_macro.texi(,353) @smallformat
+coverage_macro.texi(,354) s--mallformat
+coverage_macro.texi(,355) @end smallformat
+coverage_macro.texi(,356) 
+coverage_macro.texi(,357) @deffn c--ategory d--effn_name a--rguments...
+coverage_macro.texi(,358) d--effn
+coverage_macro.texi(,359) @end deffn
+coverage_macro.texi(,360) 
+coverage_macro.texi(,361) @deffn cate--gory de--ffn_name ar--guments @
+coverage_macro.texi(,362)    more args @* even more so
+coverage_macro.texi(,363) def--fn
+coverage_macro.texi(,364) @end deffn
+coverage_macro.texi(,365)  
+coverage_macro.texi(,366) @deffn fset @var{i} a g
+coverage_macro.texi(,367) @cindex index entry within deffn
+coverage_macro.texi(,368) @deffnx {cmde} truc {}
+coverage_macro.texi(,369) @deffnx Command {log trap} {}
+coverage_macro.texi(,370) @deffnx Command { log trap1} {}  
+coverage_macro.texi(,371) @deffnx Command {log trap2 } {}
+coverage_macro.texi(,372) @deffnx cmde @b{id ule} truc
+coverage_macro.texi(,373) @deffnx cmde2 @b{id @samp{i} ule} truc
+coverage_macro.texi(,374) @deffnx @b{id @samp{i} ule}    
+coverage_macro.texi(,375) @deffnx 
+coverage_macro.texi(,376) @deffnx aaa
+coverage_macro.texi(,377) @deffnx {} {}
+coverage_macro.texi(,378) @deffnx{}
+coverage_macro.texi(,379) @deffnx{} machin
+coverage_macro.texi(,380) @deffnx{} {bidule machin}
+coverage_macro.texi(,381) @deffnx{truc} machin
+coverage_macro.texi(,382) @deffnx{truc} { }
+coverage_macro.texi(,383) @deffnx{truc} followed by a comment
+coverage_macro.texi(,384) @c comment
+coverage_macro.texi(,385) @deffnx{truc}
+coverage_macro.texi(,386) @deffnx{} {}
+coverage_macro.texi(,387) @deffnx {truc} a b c d e @b{f g} {h i}
+coverage_macro.texi(,388) @deffnx {truc} deffnx before end deffn
+coverage_macro.texi(,389) @end deffn
+coverage_macro.texi(,390) 
+coverage_macro.texi(,391) @deffn empty deffn
+coverage_macro.texi(,392) @end deffn
+coverage_macro.texi(,393) 
+coverage_macro.texi(,394) @deffn empty deffn with deffnx
+coverage_macro.texi(,395) @c comment between deffn and deffnx
+coverage_macro.texi(,396) @deffnx empty deffnx
+coverage_macro.texi(,397) @end deffn
+coverage_macro.texi(,398) 
+coverage_macro.texi(,399) @deffn fset @var{i} a g
+coverage_macro.texi(,400) @deffnx {cmde} truc {}
+coverage_macro.texi(,401) @c comment
+coverage_macro.texi(,402) text in def item for second def item
+coverage_macro.texi(,403) @end deffn
+coverage_macro.texi(,404) 
+coverage_macro.texi(,405) @defvr c--ategory d--efvr_name
+coverage_macro.texi(,406) d--efvr
+coverage_macro.texi(,407) @end defvr
+coverage_macro.texi(,408) 
+coverage_macro.texi(,409) @deftypefn c--ategory t--ype d--eftypefn_name 
a--rguments...
+coverage_macro.texi(,410) d--eftypefn
+coverage_macro.texi(,411) @end deftypefn
+coverage_macro.texi(,412) 
+coverage_macro.texi(,413) @deftypeop c--ategory c--lass t--ype 
d--eftypeop_name a--rguments...
+coverage_macro.texi(,414) d--eftypeop
+coverage_macro.texi(,415) @end deftypeop
+coverage_macro.texi(,416) 
+coverage_macro.texi(,417) @deftypevr c--ategory t--ype d--eftypevr_name
+coverage_macro.texi(,418) d--eftypevr
+coverage_macro.texi(,419) @end deftypevr
+coverage_macro.texi(,420) 
+coverage_macro.texi(,421) @defcv c--ategory c--lass d--efcv_name
+coverage_macro.texi(,422) d--efcv
+coverage_macro.texi(,423) @end defcv
+coverage_macro.texi(,424) 
+coverage_macro.texi(,425) @defop c--ategory c--lass d--efop_name a--rguments...
+coverage_macro.texi(,426) d--efop
+coverage_macro.texi(,427) @end defop
+coverage_macro.texi(,428) 
+coverage_macro.texi(,429) @deftp c--ategory d--eftp_name a--ttributes...
+coverage_macro.texi(,430) d--eftp
+coverage_macro.texi(,431) @end deftp
+coverage_macro.texi(,432) 
+coverage_macro.texi(,433) @defun d--efun_name a--rguments...
+coverage_macro.texi(,434) d--efun
+coverage_macro.texi(,435) @end defun
+coverage_macro.texi(,436) 
+coverage_macro.texi(,437) @defmac d--efmac_name a--rguments...
+coverage_macro.texi(,438) d--efmac
+coverage_macro.texi(,439) @end defmac
+coverage_macro.texi(,440) 
+coverage_macro.texi(,441) @defspec d--efspec_name a--rguments...
+coverage_macro.texi(,442) d--efspec
+coverage_macro.texi(,443) @end defspec
+coverage_macro.texi(,444) 
+coverage_macro.texi(,445) @defvar d--efvar_name argvar argvar1
+coverage_macro.texi(,446) d--efvar
+coverage_macro.texi(,447) @end defvar
+coverage_macro.texi(,448) 
+coverage_macro.texi(,449) @defopt d--efopt_name
+coverage_macro.texi(,450) d--efopt
+coverage_macro.texi(,451) @end defopt
+coverage_macro.texi(,452) 
+coverage_macro.texi(,453) @deftypefun t--ype d--eftypefun_name a--rguments...
+coverage_macro.texi(,454) d--eftypefun
+coverage_macro.texi(,455) @end deftypefun
+coverage_macro.texi(,456) 
+coverage_macro.texi(,457) @deftypevar t--ype d--eftypevar_name
+coverage_macro.texi(,458) d--eftypevar
+coverage_macro.texi(,459) @end deftypevar
+coverage_macro.texi(,460) 
+coverage_macro.texi(,461) @defivar c--lass d--efivar_name
+coverage_macro.texi(,462) d--efivar
+coverage_macro.texi(,463) @end defivar
+coverage_macro.texi(,464) 
+coverage_macro.texi(,465) @deftypeivar c--lass t--ype d--eftypeivar_name
+coverage_macro.texi(,466) d--eftypeivar
+coverage_macro.texi(,467) @end deftypeivar
+coverage_macro.texi(,468) 
+coverage_macro.texi(,469) @defmethod c--lass d--efmethod_name a--rguments...
+coverage_macro.texi(,470) d--efmethod
+coverage_macro.texi(,471) @end defmethod
+coverage_macro.texi(,472) 
+coverage_macro.texi(,473) @deftypemethod c--lass t--ype d--eftypemethod_name 
a--rguments...
+coverage_macro.texi(,474) d--eftypemethod
+coverage_macro.texi(,475) @end deftypemethod
+coverage_macro.texi(,476) 
+coverage_macro.texi(,477) @code{@@address@hidden@@@@, cross r---ef name@@@@, 
t---itle@@@@, file n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross 
r---ef name@@, t---itle@@, file n---ame@@, ma---nual@@}.
+coverage_macro.texi(,478) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @ref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,479) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @pxref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,480) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,481) 
+coverage_macro.texi(,482) @code{@@address@hidden@}} @ref{chapter}
+coverage_macro.texi(,483) @code{@@address@hidden@}} @xref{chapter}.
+coverage_macro.texi(,484) @code{@@address@hidden@}} @pxref{chapter}
+coverage_macro.texi(,485) 
@code{@@address@hidden@@address@hidden@address@hidden @address@hidden
+coverage_macro.texi(,486) 
+coverage_macro.texi(,487) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,488) ref, a comma@@address@hidden@} in title, a 
comma@@address@hidden@} in file, a @@address@hidden@} in manual name @}}
+coverage_macro.texi(,489) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,490) ref, a address@hidden in title, a address@hidden in 
file, a @comma{} in manual name }
+coverage_macro.texi(,491) 
+coverage_macro.texi(,492) @code{@@address@hidden,cross ref address@hidden 
@ref{chapter,cross ref name}
+coverage_macro.texi(,493) @code{@@address@hidden,,address@hidden 
@ref{chapter,,title}
+coverage_macro.texi(,494) @code{@@address@hidden,,,file address@hidden 
@ref{chapter,,,file name}
+coverage_macro.texi(,495) @code{@@address@hidden,,,,address@hidden 
@ref{chapter,,,,manual}
+coverage_macro.texi(,496) @code{@@address@hidden,cross ref name,title,@}} 
@ref{chapter,cross ref name,title,}
+coverage_macro.texi(,497) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{chapter,cross ref name,,file name}
+coverage_macro.texi(,498) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{chapter,cross ref name,,,manual}
+coverage_macro.texi(,499) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{chapter,cross ref name,title,file name}
+coverage_macro.texi(,500) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{chapter,cross ref name,title,,manual}
+coverage_macro.texi(,501) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{chapter,cross ref name,title, file name, manual}
+coverage_macro.texi(,502) @code{@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
+coverage_macro.texi(,503) @code{@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
+coverage_macro.texi(,504) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,505) @code{@@address@hidden,,,file name,address@hidden 
@ref{chapter,,,file name,manual}
+coverage_macro.texi(,506) 
+coverage_macro.texi(,507) 
+coverage_macro.texi(,508) @code{@@address@hidden(pman)anode,cross ref 
address@hidden @ref{(pman)anode,cross ref name}
+coverage_macro.texi(,509) @code{@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
+coverage_macro.texi(,510) @code{@@address@hidden(pman)anode,,,file 
address@hidden @ref{(pman)anode,,,file name}
+coverage_macro.texi(,511) @code{@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
+coverage_macro.texi(,512) @code{@@address@hidden(pman)anode,cross ref 
name,title,@}} @ref{(pman)anode,cross ref name,title,}
+coverage_macro.texi(,513) @code{@@address@hidden(pman)anode,cross ref 
name,,file address@hidden @ref{(pman)anode,cross ref name,,file name}
+coverage_macro.texi(,514) @code{@@address@hidden(pman)anode,cross ref 
name,,,address@hidden @ref{(pman)anode,cross ref name,,,manual}
+coverage_macro.texi(,515) @code{@@address@hidden(pman)anode,cross ref 
name,title,file address@hidden @ref{(pman)anode,cross ref name,title,file name}
+coverage_macro.texi(,516) @code{@@address@hidden(pman)anode,cross ref 
name,title,,address@hidden @ref{(pman)anode,cross ref name,title,,manual}
+coverage_macro.texi(,517) @code{@@address@hidden(pman)anode,cross ref 
name,title, file name, address@hidden @ref{(pman)anode,cross ref name,title, 
file name, manual}
+coverage_macro.texi(,518) @code{@@address@hidden(pman)anode,,title,file 
address@hidden @ref{(pman)anode,,title,file name}
+coverage_macro.texi(,519) 
@code{@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
+coverage_macro.texi(,520) @code{@@address@hidden(pman)anode,,title, file name, 
address@hidden @ref{(pman)anode,,title, file name, manual}
+coverage_macro.texi(,521) @code{@@address@hidden(pman)anode,,,file 
name,address@hidden @ref{(pman)anode,,,file name,manual}
+coverage_macro.texi(,522) 
+coverage_macro.texi(,523) 
+coverage_macro.texi(,524) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,525) @code{@@address@hidden@}} @inforef{chapter}
+coverage_macro.texi(,526) @code{@@address@hidden, cross ref address@hidden 
@inforef{chapter, cross ref name}
+coverage_macro.texi(,527) @code{@@address@hidden,,file address@hidden 
@inforef{chapter,,file name}
+coverage_macro.texi(,528) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{node, cross ref name, file name}
+coverage_macro.texi(,529) @code{@@address@hidden@}} @inforef{node}
+coverage_macro.texi(,530) @code{@@address@hidden, cross ref address@hidden 
@inforef{node, cross ref name}
+coverage_macro.texi(,531) @code{@@address@hidden,,file address@hidden 
@inforef{node,,file name}
+coverage_macro.texi(,532) @code{@@address@hidden, cross ref name, file name, 
spurious address@hidden @inforef{chapter, cross ref name, file name, spurious 
arg}
+coverage_macro.texi(,533) 
+coverage_macro.texi(,534) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,535) ref, a comma@@address@hidden@} in address@hidden
+coverage_macro.texi(,536) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,537) ref, a address@hidden in file}
+coverage_macro.texi(,538) 
+coverage_macro.texi(,539) 
+coverage_macro.texi(,540) @table @bullet
+coverage_macro.texi(,541) @c comment in table
+coverage_macro.texi(,542) @item a
+coverage_macro.texi(,543) l--ine
+coverage_macro.texi(,544) @end table
+coverage_macro.texi(,545) 
+coverage_macro.texi(,546) @vtable @asis
+coverage_macro.texi(,547) @item a
+coverage_macro.texi(,548) @c comment between item and itemx
+coverage_macro.texi(,549) @itemx b
+coverage_macro.texi(,550) l--ine
+coverage_macro.texi(,551) @end vtable
+coverage_macro.texi(,552) 
+coverage_macro.texi(,553) @ftable @minus
+coverage_macro.texi(,554) @item a
+coverage_macro.texi(,555) @cindex index entry between item and itemx
+coverage_macro.texi(,556) @itemx b
+coverage_macro.texi(,557) l--ine
+coverage_macro.texi(,558) @end ftable
+coverage_macro.texi(,559) 
+coverage_macro.texi(,560) @cartouche
+coverage_macro.texi(,561) c--artouche
+coverage_macro.texi(,562) @end cartouche
+coverage_macro.texi(,563) 
+coverage_macro.texi(,564) @flushleft
+coverage_macro.texi(,565) f--lushleft
+coverage_macro.texi(,566) @end flushleft
+coverage_macro.texi(,567) 
+coverage_macro.texi(,568) @flushright
+coverage_macro.texi(,569) f--lushright
+coverage_macro.texi(,570) @end flushright
+coverage_macro.texi(,571) 
+coverage_macro.texi(,572) @center ce--ntered line
+coverage_macro.texi(,573) 
+coverage_macro.texi(,574) @verbatiminclude simplest.texi
+coverage_macro.texi(,575) 
+coverage_macro.texi(,576) @verbatim
+coverage_macro.texi(,577) in verbatim ''
+coverage_macro.texi(,578) @end verbatim
+coverage_macro.texi(,579) 
+coverage_macro.texi(,580) @xml
+coverage_macro.texi(,581) <para> xml para </para> ''
+coverage_macro.texi(,582) @end xml
+coverage_macro.texi(,583) 
+coverage_macro.texi(,584) @html
+coverage_macro.texi(,585) html ''
+coverage_macro.texi(,586) @end html
+coverage_macro.texi(,587) 
+coverage_macro.texi(,588) @tex
+coverage_macro.texi(,589) $$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ 
''
+coverage_macro.texi(,590) @end tex
+coverage_macro.texi(,591) 
+coverage_macro.texi(,592) @docbook
+coverage_macro.texi(,593) docbook ''
+coverage_macro.texi(,594) @end docbook
+coverage_macro.texi(,595) 
+coverage_macro.texi(,596) @majorheading majorheading
+coverage_macro.texi(,597) 
+coverage_macro.texi(,598) @chapheading chapheading
+coverage_macro.texi(,599) 
+coverage_macro.texi(,600) @heading heading
+coverage_macro.texi(,601) 
+coverage_macro.texi(,602) @subheading subheading
+coverage_macro.texi(,603) 
+coverage_macro.texi(,604) @subsubheading subsubheading
+coverage_macro.texi(,605) 
+coverage_macro.texi(,606) @c makeinfo cannot handle that
+coverage_macro.texi(,607) @ifset texi2html
+coverage_macro.texi(,608) 
+coverage_macro.texi(,609) @code{@@address@hidden,an accronym 
@@address@hidden@} @@address@hidden@address@hidden @acronym{--a,an accronym 
@comma{} @enddots{}}
+coverage_macro.texi(,610) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
+coverage_macro.texi(,611) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,612) 
+coverage_macro.texi(,613) @code{@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+coverage_macro.texi(,614) 
+coverage_macro.texi(,615) @code{@@address@hidden,,,alt@@address@hidden:jk _" 
%@:@address@hidden @image{f-ile,,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,616) @code{@@address@hidden,aze,az,@@address@hidden:jk _" 
%@@:@} @@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" 
%@:} @b{in b "},e--xt}
+coverage_macro.texi(,617) @code{@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,618) 
+coverage_macro.texi(,619) @set invalid
+coverage_macro.texi(,620) @end ifset
+coverage_macro.texi(,621) 
+coverage_macro.texi(,622) 
+coverage_macro.texi(,623) @c invalid texinfo
+coverage_macro.texi(,624) @ifset invalid
+coverage_macro.texi(,625) 
+coverage_macro.texi(,626) Somehow invalid use of @@,:@*
+coverage_macro.texi(,627) @@, @,
+coverage_macro.texi(,628) @*
+coverage_macro.texi(,629) @@,@@"u @,@"u
+coverage_macro.texi(,630) 
+coverage_macro.texi(,631) Invalid use of @@':@*
+coverage_macro.texi(,632) @@' @'
+coverage_macro.texi(,633) @*
+coverage_macro.texi(,634) @@'@@"u @'@"u
+coverage_macro.texi(,635) 
+coverage_macro.texi(,636) @c only i or j as arg
+coverage_macro.texi(,637) @@address@hidden@} @dotless{truc}
+coverage_macro.texi(,638) @@address@hidden@} @dotless{ij}
+coverage_macro.texi(,639) @code{@@address@hidden@}} @dotless{--a}
+coverage_macro.texi(,640) @code{@@address@hidden@}} @dotless{a}
+coverage_macro.texi(,641) 
+coverage_macro.texi(,642) @c braces missing
+coverage_macro.texi(,643) @@TeX, but without brace @TeX
+coverage_macro.texi(,644) 
+coverage_macro.texi(,645) @c unknown command
+coverage_macro.texi(,646) @code{@@#} @#
+coverage_macro.texi(,647) 
+coverage_macro.texi(,648) @c no arg
+coverage_macro.texi(,649) @code{@@address@hidden@}} @w{--a}
+coverage_macro.texi(,650) 
+coverage_macro.texi(,651) @c no file
+coverage_macro.texi(,652) @code{@@address@hidden,address@hidden @image{,1--xt}
+coverage_macro.texi(,653) @code{@@address@hidden,,address@hidden 
@image{,,2--xt}
+coverage_macro.texi(,654) @code{@@address@hidden,,,address@hidden 
@image{,,,3--xt}
+coverage_macro.texi(,655) 
+coverage_macro.texi(,656) @sp
+coverage_macro.texi(,657) 
+coverage_macro.texi(,658) @c braces missing
+coverage_macro.texi(,659) @itemize @emph after emph
+coverage_macro.texi(,660) @item e--mph item
+coverage_macro.texi(,661) @end itemize
+coverage_macro.texi(,662) 
+coverage_macro.texi(,663) @c braces missing
+coverage_macro.texi(,664) @itemize @bullet a--n itemize line
+coverage_macro.texi(,665) @item i--tem 1
+coverage_macro.texi(,666) @item i--tem 2
+coverage_macro.texi(,667) @end itemize
+coverage_macro.texi(,668) 
+coverage_macro.texi(,669) @c deffnx after deff lines
+coverage_macro.texi(,670) @deffn fun
+coverage_macro.texi(,671) @deffnx truc machin bidule chose and }
+coverage_macro.texi(,672) @deffnx truc machin bidule chose and } after
+coverage_macro.texi(,673) @deffnx truc machin bidule chose and {
+coverage_macro.texi(,674) @deffnx truc machin bidule chose and { and after
+coverage_macro.texi(,675) @deffnx {truc} followed by a comment
+coverage_macro.texi(,676) @c comment
+coverage_macro.texi(,677) Various deff lines
+coverage_macro.texi(,678) @deffnx {truc} after a deff item
+coverage_macro.texi(,679) @end deffn
+coverage_macro.texi(,680) 
+coverage_macro.texi(,681) @c node is non existent, or missing first arg
+coverage_macro.texi(,682) @code{@@address@hidden@}} @ref{node}
+coverage_macro.texi(,683) 
+coverage_macro.texi(,684) @code{@@address@hidden,cross ref address@hidden 
@ref{,cross ref name}
+coverage_macro.texi(,685) @code{@@address@hidden,,address@hidden @ref{,,title}
+coverage_macro.texi(,686) @code{@@address@hidden,,,file address@hidden 
@ref{,,,file name}
+coverage_macro.texi(,687) @code{@@address@hidden,,,,address@hidden 
@ref{,,,,manual}
+coverage_macro.texi(,688) @code{@@address@hidden,cross ref address@hidden 
@ref{node,cross ref name}
+coverage_macro.texi(,689) @code{@@address@hidden,,address@hidden 
@ref{node,,title}
+coverage_macro.texi(,690) @code{@@address@hidden,,,file address@hidden 
@ref{node,,,file name}
+coverage_macro.texi(,691) @code{@@address@hidden,,,,address@hidden 
@ref{node,,,,manual}
+coverage_macro.texi(,692) @code{@@address@hidden,cross ref name,title,@}} 
@ref{node,cross ref name,title,}
+coverage_macro.texi(,693) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{node,cross ref name,,file name}
+coverage_macro.texi(,694) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{node,cross ref name,,,manual}
+coverage_macro.texi(,695) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{node,cross ref name,title,file name}
+coverage_macro.texi(,696) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{node,cross ref name,title,,manual}
+coverage_macro.texi(,697) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{node,cross ref name,title, file name, manual}
+coverage_macro.texi(,698) @code{@@address@hidden,,title,file address@hidden 
@ref{node,,title,file name}
+coverage_macro.texi(,699) @code{@@address@hidden,,title,,address@hidden 
@ref{node,,title,,manual}
+coverage_macro.texi(,700) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,701) @code{@@address@hidden,,title, file name, 
address@hidden @ref{node,,title, file name, manual}
+coverage_macro.texi(,702) @code{@@address@hidden,,,file name,address@hidden 
@ref{node,,,file name,manual}
+coverage_macro.texi(,703) @code{@@address@hidden,cross ref name,title,@}} 
@ref{,cross ref name,title,}
+coverage_macro.texi(,704) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{,cross ref name,,file name}
+coverage_macro.texi(,705) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{,cross ref name,,,manual}
+coverage_macro.texi(,706) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{,cross ref name,title,file name}
+coverage_macro.texi(,707) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{,cross ref name,title,,manual}
+coverage_macro.texi(,708) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{,cross ref name,title, file name, manual}
+coverage_macro.texi(,709) @code{@@address@hidden,,title,file address@hidden 
@ref{,,title,file name}
+coverage_macro.texi(,710) @code{@@address@hidden,,title,,address@hidden 
@ref{,,title,,manual}
+coverage_macro.texi(,711) @code{@@address@hidden,,title, file name, 
address@hidden @ref{,,title, file name, manual}
+coverage_macro.texi(,712) @code{@@address@hidden,,,file name,address@hidden 
@ref{,,,file name,manual}
+coverage_macro.texi(,713) 
+coverage_macro.texi(,714) @code{@@address@hidden,cross ref name @}} 
@inforef{,cross ref name }
+coverage_macro.texi(,715) @code{@@address@hidden,,file address@hidden 
@inforef{,,file name}
+coverage_macro.texi(,716) @code{@@address@hidden,cross ref name, file 
address@hidden @inforef{,cross ref name, file name}
+coverage_macro.texi(,717) @code{@@address@hidden@}} @inforef{}
+coverage_macro.texi(,718) 
+coverage_macro.texi(,719) @end ifset
+coverage_macro.texi(,720) 
+coverage_macro.texi(,721) @end macro
 formatting.texi(,15) 
 formatting.texi(,20) 
 formatting.texi(,33) 

Index: coverage/res_all/texi_formatting/formatting.passtexi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_all/texi_formatting/formatting.passtexi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_all/texi_formatting/formatting.passtexi        21 Jun 2009 
09:25:41 -0000      1.1
+++ coverage/res_all/texi_formatting/formatting.passtexi        2 Aug 2009 
13:12:03 -0000       1.2
@@ -10,6 +10,727 @@
 formatting.texi(,11) * description:chapter2.   Chapter 2
 formatting.texi(,12) @end menu
 formatting.texi(,13) 
+coverage_macro.texi(,1) @macro mymacro
+coverage_macro.texi(,2) 
+coverage_macro.texi(,3) <
+coverage_macro.texi(,4) >
+coverage_macro.texi(,5) "
+coverage_macro.texi(,6) &
+coverage_macro.texi(,7) '
+coverage_macro.texi(,8) `
+coverage_macro.texi(,9) 
+coverage_macro.texi(,10) ``simple-double--three---four----''@*
+coverage_macro.texi(,11) code: @code{``simple-double--three---four----''} @*
+coverage_macro.texi(,12) asis: @asis{``simple-double--three---four----''} @*
+coverage_macro.texi(,13) strong: @strong{``simple-double--three---four----''} 
@*
+coverage_macro.texi(,14) kbd: @kbd{``simple-double--three---four----''} @*
+coverage_macro.texi(,15) 
+coverage_macro.texi(,16) address@hidden@w{}-three---four----'@w{}'@*
+coverage_macro.texi(,17) 
+coverage_macro.texi(,18) @cindex --option
+coverage_macro.texi(,19) @cindex ``
+coverage_macro.texi(,20) @findex ``
+coverage_macro.texi(,21) @findex --foption
+coverage_macro.texi(,22) 
+coverage_macro.texi(,23) @@"u @"u 
+coverage_macro.texi(,24) @@"@address@hidden @"{U} 
+coverage_macro.texi(,25) @@~n @~n
+coverage_macro.texi(,26) @@^a @^a
+coverage_macro.texi(,27) @@'e @'e
+coverage_macro.texi(,28) @@=o @=o
+coverage_macro.texi(,29) @@`i @`i
+coverage_macro.texi(,30) @@'@address@hidden @'{e}
+coverage_macro.texi(,31) @@'@{@@address@hidden@address@hidden @'address@hidden 
+coverage_macro.texi(,32) @@address@hidden@} @dotless{i}
+coverage_macro.texi(,33) @@address@hidden@} @dotless{j}
+coverage_macro.texi(,34) @@address@hidden@@address@hidden @address@hidden 
+coverage_macro.texi(,35) @@address@hidden@} @l{}
+coverage_macro.texi(,36) @@,@{@@'address@hidden @,{@'C}
+coverage_macro.texi(,37) @@,c @,c
+coverage_macro.texi(,38) @@,c@@"u @,c@"u @*
+coverage_macro.texi(,39) 
+coverage_macro.texi(,40) @@* @*
+coverage_macro.texi(,41) @@ followed by a space
+coverage_macro.texi(,42) @ 
+coverage_macro.texi(,43) @@ followed by a tab
+coverage_macro.texi(,44) @     
+coverage_macro.texi(,45) @@ followed by a new line
+coverage_macro.texi(,46) @
+coverage_macro.texi(,47) @code{@@-} @-
+coverage_macro.texi(,48) @code{@@|} @|
+coverage_macro.texi(,49) @code{@@:} @:
+coverage_macro.texi(,50) @code{@@!} @!
+coverage_macro.texi(,51) @code{@@?} @?
+coverage_macro.texi(,52) @code{@@.} @.
+coverage_macro.texi(,53) @code{@@@@} @@
+coverage_macro.texi(,54) @code{@@@}} @}
+coverage_macro.texi(,55) @code{@@@{} @{
+coverage_macro.texi(,56) @code{@@/} @/
+coverage_macro.texi(,57) 
+coverage_macro.texi(,58) foo vs.@: bar. 
+coverage_macro.texi(,59) colon :@:And something else.
+coverage_macro.texi(,60) semi colon ;@:.
+coverage_macro.texi(,61) And ? ?@:.
+coverage_macro.texi(,62) Now ! !@:@@
+coverage_macro.texi(,63) but , ,@:
+coverage_macro.texi(,64) 
+coverage_macro.texi(,65) @@TeX @TeX{}
+coverage_macro.texi(,66) @@LaTeX @LaTeX{}
+coverage_macro.texi(,67) @@bullet @bullet{}
+coverage_macro.texi(,68) @@copyright @copyright{}
+coverage_macro.texi(,69) @@dots @dots{}
+coverage_macro.texi(,70) @@enddots @enddots{}
+coverage_macro.texi(,71) @@equiv @equiv{}
+coverage_macro.texi(,72) @@error @error{}
+coverage_macro.texi(,73) @@expansion @expansion{}
+coverage_macro.texi(,74) @@minus @minus{}
+coverage_macro.texi(,75) @@point @point{}
+coverage_macro.texi(,76) @@print @print{}
+coverage_macro.texi(,77) @@result @result{}
+coverage_macro.texi(,78) @@today @today{}
+coverage_macro.texi(,79) @@aa @aa{}
+coverage_macro.texi(,80) @@AA @AA{}
+coverage_macro.texi(,81) @@ae @ae{}
+coverage_macro.texi(,82) @@oe @oe{}
+coverage_macro.texi(,83) @@AE @AE{}
+coverage_macro.texi(,84) @@OE @OE{}
+coverage_macro.texi(,85) @@o @o{}
+coverage_macro.texi(,86) @@O @O{}
+coverage_macro.texi(,87) @@ss @ss{}
+coverage_macro.texi(,88) @@l @l{}
+coverage_macro.texi(,89) @@L @L{}
+coverage_macro.texi(,90) @@DH @DH{}
+coverage_macro.texi(,91) @@TH @TH{}
+coverage_macro.texi(,92) @@dh @dh{}
+coverage_macro.texi(,93) @@th @th{}
+coverage_macro.texi(,94) @@exclamdown @exclamdown{}
+coverage_macro.texi(,95) @@questiondown @questiondown{}
+coverage_macro.texi(,96) @@pounds @pounds{}
+coverage_macro.texi(,97) @@registeredsymbol @registeredsymbol{}
+coverage_macro.texi(,98) @@ordf @ordf{}
+coverage_macro.texi(,99) @@ordm @ordm{}
+coverage_macro.texi(,100) @@comma @comma{}
+coverage_macro.texi(,101) @@quotedblleft @quotedblleft{}
+coverage_macro.texi(,102) @@quotedblright @quotedblright{}
+coverage_macro.texi(,103) @@quoteleft @quoteleft{}
+coverage_macro.texi(,104) @@quoteright @quoteright{}
+coverage_macro.texi(,105) @@quotedblbase @quotedblbase{}
+coverage_macro.texi(,106) @@quotesinglbase @quotesinglbase{}
+coverage_macro.texi(,107) @@guillemetleft @guillemetleft{}
+coverage_macro.texi(,108) @@guillemetright @guillemetright{}
+coverage_macro.texi(,109) @@guillemotleft @guillemotleft{}
+coverage_macro.texi(,110) @@guillemotright @guillemotright{}
+coverage_macro.texi(,111) @@guilsinglleft @guilsinglleft{}
+coverage_macro.texi(,112) @@guilsinglright @guilsinglright{}
+coverage_macro.texi(,113) @@textdegree @textdegree{}
+coverage_macro.texi(,114) @@euro @euro{}
+coverage_macro.texi(,115) @@arrow @arrow{}
+coverage_macro.texi(,116) @@leq @leq{}
+coverage_macro.texi(,117) @@geq @geq{}
+coverage_macro.texi(,118) 
+coverage_macro.texi(,119) @code{@@address@hidden,an address@hidden 
@acronym{--a,an accronym}
+coverage_macro.texi(,120) @code{@@address@hidden@}} @acronym{--a}
+coverage_macro.texi(,121) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude Autonome @}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
+coverage_macro.texi(,122) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,123) @code{@@address@hidden@}} @asis{--a}
+coverage_macro.texi(,124) @code{@@address@hidden@}} @b{--a}
+coverage_macro.texi(,125) @code{@@address@hidden@}} @cite{--a}
+coverage_macro.texi(,126) @code{@@address@hidden@}} @code{--a}
+coverage_macro.texi(,127) @code{@@address@hidden@}} @command{--a}
+coverage_macro.texi(,128) @code{@@address@hidden@}} @ctrl{--a}
+coverage_macro.texi(,129) @code{@@address@hidden@}} @dfn{--a}
+coverage_macro.texi(,130) @code{@@address@hidden@}} @dmn{--a}
+coverage_macro.texi(,131) @code{@@address@hidden,address@hidden @email{--a,--b}
+coverage_macro.texi(,132) @code{@@address@hidden,address@hidden @email{,--b}
+coverage_macro.texi(,133) @code{@@address@hidden@}} @email{--a}
+coverage_macro.texi(,134) @code{@@address@hidden@}} @emph{--a}
+coverage_macro.texi(,135) @code{@@address@hidden@}} @env{--a}
+coverage_macro.texi(,136) @code{@@address@hidden@}} @file{--a}
+coverage_macro.texi(,137) @code{@@address@hidden@}} @i{--a}
+coverage_macro.texi(,138) @code{@@address@hidden@}} @kbd{--a}
+coverage_macro.texi(,139) @code{@@address@hidden@}} @key{--a}
+coverage_macro.texi(,140) @code{@@address@hidden 
@address@hidden@address@hidden@address@hidden @@address@hidden@address@hidden 
@math{--a {\\frac{1}{2}} @minus{}}
+coverage_macro.texi(,141) @code{@@address@hidden@}} @option{--a}
+coverage_macro.texi(,142) @code{@@address@hidden@}} @r{--a}
+coverage_macro.texi(,143) @code{@@address@hidden@}} @samp{--a}
+coverage_macro.texi(,144) @code{@@address@hidden@}} @sc{--a}
+coverage_macro.texi(,145) @code{@@address@hidden@}} @strong{--a}
+coverage_macro.texi(,146) @code{@@address@hidden@}} @t{--a}
+coverage_macro.texi(,147) @code{@@address@hidden@}} @sansserif{--a}
+coverage_macro.texi(,148) @code{@@address@hidden@}} @titlefont{--a}
+coverage_macro.texi(,149) @code{@@address@hidden@}} @indicateurl{--a}
+coverage_macro.texi(,150) @code{@@address@hidden,address@hidden @uref{--a,--b}
+coverage_macro.texi(,151) @code{@@address@hidden@}} @uref{--a}
+coverage_macro.texi(,152) @code{@@address@hidden,address@hidden @uref{,--b}
+coverage_macro.texi(,153) @code{@@address@hidden,--b,address@hidden 
@uref{--a,--b,--c}
+coverage_macro.texi(,154) @code{@@address@hidden,--b,address@hidden 
@uref{,--b,--c}
+coverage_macro.texi(,155) @code{@@address@hidden,,address@hidden 
@uref{--a,,--c}
+coverage_macro.texi(,156) @code{@@address@hidden,,address@hidden @uref{,,--c}
+coverage_macro.texi(,157) @code{@@address@hidden,address@hidden @url{--a,--b}
+coverage_macro.texi(,158) @code{@@address@hidden,@}} @url{--a,}
+coverage_macro.texi(,159) @code{@@address@hidden,address@hidden @url{,--b}
+coverage_macro.texi(,160) @code{@@address@hidden@}} @var{--a}
+coverage_macro.texi(,161) @code{@@address@hidden:--a:@}} @verb{:--a:}
+coverage_macro.texi(,162) @code{@@address@hidden:a  < & @@ % " --    b:@}} 
@verb{:a  < & @ % " --    b:}
+coverage_macro.texi(,163) @code{@@address@hidden@}} @w{}
+coverage_macro.texi(,164) @code{@@address@hidden@}} @H{a}
+coverage_macro.texi(,165) @code{@@address@hidden@}} @H{--a}
+coverage_macro.texi(,166) @code{@@address@hidden@}} @dotaccent{a}
+coverage_macro.texi(,167) @code{@@address@hidden@}} @dotaccent{--a}
+coverage_macro.texi(,168) @code{@@address@hidden@}} @ringaccent{a}
+coverage_macro.texi(,169) @code{@@address@hidden@}} @ringaccent{--a}
+coverage_macro.texi(,170) @code{@@address@hidden@}} @tieaccent{a}
+coverage_macro.texi(,171) @code{@@address@hidden@}} @tieaccent{--a}
+coverage_macro.texi(,172) @code{@@address@hidden@}} @u{a}
+coverage_macro.texi(,173) @code{@@address@hidden@}} @u{--a}
+coverage_macro.texi(,174) @code{@@address@hidden@}} @ubaraccent{a}
+coverage_macro.texi(,175) @code{@@address@hidden@}} @ubaraccent{--a}
+coverage_macro.texi(,176) @code{@@address@hidden@}} @udotaccent{a}
+coverage_macro.texi(,177) @code{@@address@hidden@}} @udotaccent{--a}
+coverage_macro.texi(,178) @code{@@address@hidden@}} @v{a}
+coverage_macro.texi(,179) @code{@@address@hidden@}} @v{--a}
+coverage_macro.texi(,180) @code{@@,@address@hidden @,{c}
+coverage_macro.texi(,181) @code{@@,@address@hidden @,{--c}
+coverage_macro.texi(,182) @ifset texi2html
+coverage_macro.texi(,183) @code{@@address@hidden@}} @ogonek{a}
+coverage_macro.texi(,184) @code{@@address@hidden@}} @ogonek{--a}
+coverage_macro.texi(,185) @end ifset
+coverage_macro.texi(,186) @code{@@address@hidden address@hidden @footnote{in 
footnote}
+coverage_macro.texi(,187) @code{@@address@hidden address@hidden @footnote{in 
footnote2}
+coverage_macro.texi(,188) 
+coverage_macro.texi(,189) @code{@@address@hidden@}} @image{f--ile}
+coverage_macro.texi(,190) @code{@@address@hidden,address@hidden 
@image{f--ile,l--i}
+coverage_macro.texi(,191) @code{@@address@hidden,,address@hidden 
@image{f--ile,,l--e}
+coverage_macro.texi(,192) @code{@@address@hidden,,,address@hidden 
@image{f--ile,,,alt}
+coverage_macro.texi(,193) @code{@@address@hidden,,,,address@hidden 
@image{f--ile,,,,e--xt}
+coverage_macro.texi(,194) @code{@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
+coverage_macro.texi(,195) @code{@@address@hidden,aze,,address@hidden 
@image{f-ile,aze,,a--lt}
+coverage_macro.texi(,196) 
@code{@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden 
address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+coverage_macro.texi(,197) 
+coverage_macro.texi(,198) @sp 2
+coverage_macro.texi(,199) 
+coverage_macro.texi(,200) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,201) @clickstyle @result
+coverage_macro.texi(,202) After clickstyle @result{}
+coverage_macro.texi(,203) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,204) @clickstyle @arrow
+coverage_macro.texi(,205) 
+coverage_macro.texi(,206) @quotation 
+coverage_macro.texi(,207) A quot---ation
+coverage_macro.texi(,208) @end quotation
+coverage_macro.texi(,209) 
+coverage_macro.texi(,210) @quotation Note
+coverage_macro.texi(,211) A Note
+coverage_macro.texi(,212) @end quotation
+coverage_macro.texi(,213) 
+coverage_macro.texi(,214) @quotation note
+coverage_macro.texi(,215) A note
+coverage_macro.texi(,216) @end quotation
+coverage_macro.texi(,217) 
+coverage_macro.texi(,218) @quotation Caution
+coverage_macro.texi(,219) Caution
+coverage_macro.texi(,220) @end quotation
+coverage_macro.texi(,221) 
+coverage_macro.texi(,222) @quotation Important
+coverage_macro.texi(,223) Important
+coverage_macro.texi(,224) @end quotation
+coverage_macro.texi(,225) 
+coverage_macro.texi(,226) @quotation Tip
+coverage_macro.texi(,227) a Tip
+coverage_macro.texi(,228) @end quotation
+coverage_macro.texi(,229) 
+coverage_macro.texi(,230) @quotation Warning
+coverage_macro.texi(,231) a Warning.
+coverage_macro.texi(,232) @end quotation
+coverage_macro.texi(,233) 
+coverage_macro.texi(,234) @quotation something @'e @TeX{}
+coverage_macro.texi(,235) The something @'e @TeX{} is here.
+coverage_macro.texi(,236) @end quotation
+coverage_macro.texi(,237) 
+coverage_macro.texi(,238) @quotation @@ at the end of line @
+coverage_macro.texi(,239) A @@ at the end of the @@quotation line.
+coverage_macro.texi(,240) @end quotation
+coverage_macro.texi(,241) 
+coverage_macro.texi(,242) @quotation something, other thing
+coverage_macro.texi(,243) something, other thing
+coverage_macro.texi(,244) @end quotation
+coverage_macro.texi(,245) 
+coverage_macro.texi(,246) @quotation Note, the note
+coverage_macro.texi(,247) Note, the note
+coverage_macro.texi(,248) @end quotation
+coverage_macro.texi(,249) 
+coverage_macro.texi(,250) @quotation
+coverage_macro.texi(,251) @end quotation
+coverage_macro.texi(,252) 
+coverage_macro.texi(,253) @quotation Empty
+coverage_macro.texi(,254) @end quotation
+coverage_macro.texi(,255) 
+coverage_macro.texi(,256) @quotation @asis{}
+coverage_macro.texi(,257) @end quotation
+coverage_macro.texi(,258) 
+coverage_macro.texi(,259) @quotation @*
+coverage_macro.texi(,260) @end quotation
+coverage_macro.texi(,261) 
+coverage_macro.texi(,262) @ifset texi2html
+coverage_macro.texi(,263) @smallquotation 
+coverage_macro.texi(,264) A small quot---ation
+coverage_macro.texi(,265) @end smallquotation
+coverage_macro.texi(,266) 
+coverage_macro.texi(,267) @smallquotation Note
+coverage_macro.texi(,268) A small Note
+coverage_macro.texi(,269) @end smallquotation
+coverage_macro.texi(,270) 
+coverage_macro.texi(,271) @smallquotation something, other thing
+coverage_macro.texi(,272) something, other thing
+coverage_macro.texi(,273) @end smallquotation
+coverage_macro.texi(,274) @end ifset
+coverage_macro.texi(,275) 
+coverage_macro.texi(,276) @itemize
+coverage_macro.texi(,277) @item i--temize
+coverage_macro.texi(,278) @end itemize
+coverage_macro.texi(,279) 
+coverage_macro.texi(,280) @itemize +
+coverage_macro.texi(,281) @item i--tem +
+coverage_macro.texi(,282) @end itemize
+coverage_macro.texi(,283) 
+coverage_macro.texi(,284) @itemize @bullet
+coverage_macro.texi(,285) @item b--ullet
+coverage_macro.texi(,286) @end itemize
+coverage_macro.texi(,287) 
+coverage_macro.texi(,288) @itemize @minus
+coverage_macro.texi(,289) @item minu--s
+coverage_macro.texi(,290) @end itemize
+coverage_macro.texi(,291) 
+coverage_macro.texi(,292) @itemize @emph
+coverage_macro.texi(,293) @item e--mph item
+coverage_macro.texi(,294) @end itemize
+coverage_macro.texi(,295) 
+coverage_macro.texi(,296) @itemize @emph{after emph}
+coverage_macro.texi(,297) @c comment in itemize
+coverage_macro.texi(,298) @item e--mph item
+coverage_macro.texi(,299) @end itemize
+coverage_macro.texi(,300) 
+coverage_macro.texi(,301) @itemize @bullet{} a--n itemize line
+coverage_macro.texi(,302) @cindex index entry within itemize
+coverage_macro.texi(,303) @item i--tem 1
+coverage_macro.texi(,304) @item i--tem 2
+coverage_macro.texi(,305) @end itemize
+coverage_macro.texi(,306) 
+coverage_macro.texi(,307) @enumerate
+coverage_macro.texi(,308) @item e--numerate
+coverage_macro.texi(,309) @end enumerate
+coverage_macro.texi(,310) 
+coverage_macro.texi(,311) @multitable @columnfractions 6 7
+coverage_macro.texi(,312) @headitem mu--ltitable headitem @tab another tab
+coverage_macro.texi(,313) @item mu--ltitable item @tab multitable tab
+coverage_macro.texi(,314) @c comment in multitable
+coverage_macro.texi(,315) @item mu--ltitable item 2 @tab multitable tab 2
+coverage_macro.texi(,316) @cindex index entry within multitable
+coverage_macro.texi(,317) @item lone mu--ltitable item
+coverage_macro.texi(,318) @end multitable
+coverage_macro.texi(,319) 
+coverage_macro.texi(,320) @multitable {truc} {bidule}
+coverage_macro.texi(,321) @item truc @tab bidule
+coverage_macro.texi(,322) @end multitable
+coverage_macro.texi(,323) 
+coverage_macro.texi(,324) @example
+coverage_macro.texi(,325) e--xample  some
+coverage_macro.texi(,326)    text
+coverage_macro.texi(,327) @end example
+coverage_macro.texi(,328) 
+coverage_macro.texi(,329) @smallexample
+coverage_macro.texi(,330) s--mallexample
+coverage_macro.texi(,331) @end smallexample
+coverage_macro.texi(,332) 
+coverage_macro.texi(,333) @display 
+coverage_macro.texi(,334) d--isplay
+coverage_macro.texi(,335) @end display
+coverage_macro.texi(,336) 
+coverage_macro.texi(,337) @smalldisplay
+coverage_macro.texi(,338) s--malldisplay
+coverage_macro.texi(,339) @end smalldisplay
+coverage_macro.texi(,340) 
+coverage_macro.texi(,341) @lisp
+coverage_macro.texi(,342) l--isp
+coverage_macro.texi(,343) @end lisp
+coverage_macro.texi(,344) 
+coverage_macro.texi(,345) @smalllisp
+coverage_macro.texi(,346) s--malllisp
+coverage_macro.texi(,347) @end smalllisp
+coverage_macro.texi(,348) 
+coverage_macro.texi(,349) @format
+coverage_macro.texi(,350) f--ormat
+coverage_macro.texi(,351) @end format
+coverage_macro.texi(,352) 
+coverage_macro.texi(,353) @smallformat
+coverage_macro.texi(,354) s--mallformat
+coverage_macro.texi(,355) @end smallformat
+coverage_macro.texi(,356) 
+coverage_macro.texi(,357) @deffn c--ategory d--effn_name a--rguments...
+coverage_macro.texi(,358) d--effn
+coverage_macro.texi(,359) @end deffn
+coverage_macro.texi(,360) 
+coverage_macro.texi(,361) @deffn cate--gory de--ffn_name ar--guments @
+coverage_macro.texi(,362)    more args @* even more so
+coverage_macro.texi(,363) def--fn
+coverage_macro.texi(,364) @end deffn
+coverage_macro.texi(,365)  
+coverage_macro.texi(,366) @deffn fset @var{i} a g
+coverage_macro.texi(,367) @cindex index entry within deffn
+coverage_macro.texi(,368) @deffnx {cmde} truc {}
+coverage_macro.texi(,369) @deffnx Command {log trap} {}
+coverage_macro.texi(,370) @deffnx Command { log trap1} {}  
+coverage_macro.texi(,371) @deffnx Command {log trap2 } {}
+coverage_macro.texi(,372) @deffnx cmde @b{id ule} truc
+coverage_macro.texi(,373) @deffnx cmde2 @b{id @samp{i} ule} truc
+coverage_macro.texi(,374) @deffnx @b{id @samp{i} ule}    
+coverage_macro.texi(,375) @deffnx 
+coverage_macro.texi(,376) @deffnx aaa
+coverage_macro.texi(,377) @deffnx {} {}
+coverage_macro.texi(,378) @deffnx{}
+coverage_macro.texi(,379) @deffnx{} machin
+coverage_macro.texi(,380) @deffnx{} {bidule machin}
+coverage_macro.texi(,381) @deffnx{truc} machin
+coverage_macro.texi(,382) @deffnx{truc} { }
+coverage_macro.texi(,383) @deffnx{truc} followed by a comment
+coverage_macro.texi(,384) @c comment
+coverage_macro.texi(,385) @deffnx{truc}
+coverage_macro.texi(,386) @deffnx{} {}
+coverage_macro.texi(,387) @deffnx {truc} a b c d e @b{f g} {h i}
+coverage_macro.texi(,388) @deffnx {truc} deffnx before end deffn
+coverage_macro.texi(,389) @end deffn
+coverage_macro.texi(,390) 
+coverage_macro.texi(,391) @deffn empty deffn
+coverage_macro.texi(,392) @end deffn
+coverage_macro.texi(,393) 
+coverage_macro.texi(,394) @deffn empty deffn with deffnx
+coverage_macro.texi(,395) @c comment between deffn and deffnx
+coverage_macro.texi(,396) @deffnx empty deffnx
+coverage_macro.texi(,397) @end deffn
+coverage_macro.texi(,398) 
+coverage_macro.texi(,399) @deffn fset @var{i} a g
+coverage_macro.texi(,400) @deffnx {cmde} truc {}
+coverage_macro.texi(,401) @c comment
+coverage_macro.texi(,402) text in def item for second def item
+coverage_macro.texi(,403) @end deffn
+coverage_macro.texi(,404) 
+coverage_macro.texi(,405) @defvr c--ategory d--efvr_name
+coverage_macro.texi(,406) d--efvr
+coverage_macro.texi(,407) @end defvr
+coverage_macro.texi(,408) 
+coverage_macro.texi(,409) @deftypefn c--ategory t--ype d--eftypefn_name 
a--rguments...
+coverage_macro.texi(,410) d--eftypefn
+coverage_macro.texi(,411) @end deftypefn
+coverage_macro.texi(,412) 
+coverage_macro.texi(,413) @deftypeop c--ategory c--lass t--ype 
d--eftypeop_name a--rguments...
+coverage_macro.texi(,414) d--eftypeop
+coverage_macro.texi(,415) @end deftypeop
+coverage_macro.texi(,416) 
+coverage_macro.texi(,417) @deftypevr c--ategory t--ype d--eftypevr_name
+coverage_macro.texi(,418) d--eftypevr
+coverage_macro.texi(,419) @end deftypevr
+coverage_macro.texi(,420) 
+coverage_macro.texi(,421) @defcv c--ategory c--lass d--efcv_name
+coverage_macro.texi(,422) d--efcv
+coverage_macro.texi(,423) @end defcv
+coverage_macro.texi(,424) 
+coverage_macro.texi(,425) @defop c--ategory c--lass d--efop_name a--rguments...
+coverage_macro.texi(,426) d--efop
+coverage_macro.texi(,427) @end defop
+coverage_macro.texi(,428) 
+coverage_macro.texi(,429) @deftp c--ategory d--eftp_name a--ttributes...
+coverage_macro.texi(,430) d--eftp
+coverage_macro.texi(,431) @end deftp
+coverage_macro.texi(,432) 
+coverage_macro.texi(,433) @defun d--efun_name a--rguments...
+coverage_macro.texi(,434) d--efun
+coverage_macro.texi(,435) @end defun
+coverage_macro.texi(,436) 
+coverage_macro.texi(,437) @defmac d--efmac_name a--rguments...
+coverage_macro.texi(,438) d--efmac
+coverage_macro.texi(,439) @end defmac
+coverage_macro.texi(,440) 
+coverage_macro.texi(,441) @defspec d--efspec_name a--rguments...
+coverage_macro.texi(,442) d--efspec
+coverage_macro.texi(,443) @end defspec
+coverage_macro.texi(,444) 
+coverage_macro.texi(,445) @defvar d--efvar_name argvar argvar1
+coverage_macro.texi(,446) d--efvar
+coverage_macro.texi(,447) @end defvar
+coverage_macro.texi(,448) 
+coverage_macro.texi(,449) @defopt d--efopt_name
+coverage_macro.texi(,450) d--efopt
+coverage_macro.texi(,451) @end defopt
+coverage_macro.texi(,452) 
+coverage_macro.texi(,453) @deftypefun t--ype d--eftypefun_name a--rguments...
+coverage_macro.texi(,454) d--eftypefun
+coverage_macro.texi(,455) @end deftypefun
+coverage_macro.texi(,456) 
+coverage_macro.texi(,457) @deftypevar t--ype d--eftypevar_name
+coverage_macro.texi(,458) d--eftypevar
+coverage_macro.texi(,459) @end deftypevar
+coverage_macro.texi(,460) 
+coverage_macro.texi(,461) @defivar c--lass d--efivar_name
+coverage_macro.texi(,462) d--efivar
+coverage_macro.texi(,463) @end defivar
+coverage_macro.texi(,464) 
+coverage_macro.texi(,465) @deftypeivar c--lass t--ype d--eftypeivar_name
+coverage_macro.texi(,466) d--eftypeivar
+coverage_macro.texi(,467) @end deftypeivar
+coverage_macro.texi(,468) 
+coverage_macro.texi(,469) @defmethod c--lass d--efmethod_name a--rguments...
+coverage_macro.texi(,470) d--efmethod
+coverage_macro.texi(,471) @end defmethod
+coverage_macro.texi(,472) 
+coverage_macro.texi(,473) @deftypemethod c--lass t--ype d--eftypemethod_name 
a--rguments...
+coverage_macro.texi(,474) d--eftypemethod
+coverage_macro.texi(,475) @end deftypemethod
+coverage_macro.texi(,476) 
+coverage_macro.texi(,477) @code{@@address@hidden@@@@, cross r---ef name@@@@, 
t---itle@@@@, file n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross 
r---ef name@@, t---itle@@, file n---ame@@, ma---nual@@}.
+coverage_macro.texi(,478) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @ref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,479) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @pxref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,480) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,481) 
+coverage_macro.texi(,482) @code{@@address@hidden@}} @ref{chapter}
+coverage_macro.texi(,483) @code{@@address@hidden@}} @xref{chapter}.
+coverage_macro.texi(,484) @code{@@address@hidden@}} @pxref{chapter}
+coverage_macro.texi(,485) 
@code{@@address@hidden@@address@hidden@address@hidden @address@hidden
+coverage_macro.texi(,486) 
+coverage_macro.texi(,487) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,488) ref, a comma@@address@hidden@} in title, a 
comma@@address@hidden@} in file, a @@address@hidden@} in manual name @}}
+coverage_macro.texi(,489) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,490) ref, a address@hidden in title, a address@hidden in 
file, a @comma{} in manual name }
+coverage_macro.texi(,491) 
+coverage_macro.texi(,492) @code{@@address@hidden,cross ref address@hidden 
@ref{chapter,cross ref name}
+coverage_macro.texi(,493) @code{@@address@hidden,,address@hidden 
@ref{chapter,,title}
+coverage_macro.texi(,494) @code{@@address@hidden,,,file address@hidden 
@ref{chapter,,,file name}
+coverage_macro.texi(,495) @code{@@address@hidden,,,,address@hidden 
@ref{chapter,,,,manual}
+coverage_macro.texi(,496) @code{@@address@hidden,cross ref name,title,@}} 
@ref{chapter,cross ref name,title,}
+coverage_macro.texi(,497) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{chapter,cross ref name,,file name}
+coverage_macro.texi(,498) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{chapter,cross ref name,,,manual}
+coverage_macro.texi(,499) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{chapter,cross ref name,title,file name}
+coverage_macro.texi(,500) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{chapter,cross ref name,title,,manual}
+coverage_macro.texi(,501) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{chapter,cross ref name,title, file name, manual}
+coverage_macro.texi(,502) @code{@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
+coverage_macro.texi(,503) @code{@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
+coverage_macro.texi(,504) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,505) @code{@@address@hidden,,,file name,address@hidden 
@ref{chapter,,,file name,manual}
+coverage_macro.texi(,506) 
+coverage_macro.texi(,507) 
+coverage_macro.texi(,508) @code{@@address@hidden(pman)anode,cross ref 
address@hidden @ref{(pman)anode,cross ref name}
+coverage_macro.texi(,509) @code{@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
+coverage_macro.texi(,510) @code{@@address@hidden(pman)anode,,,file 
address@hidden @ref{(pman)anode,,,file name}
+coverage_macro.texi(,511) @code{@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
+coverage_macro.texi(,512) @code{@@address@hidden(pman)anode,cross ref 
name,title,@}} @ref{(pman)anode,cross ref name,title,}
+coverage_macro.texi(,513) @code{@@address@hidden(pman)anode,cross ref 
name,,file address@hidden @ref{(pman)anode,cross ref name,,file name}
+coverage_macro.texi(,514) @code{@@address@hidden(pman)anode,cross ref 
name,,,address@hidden @ref{(pman)anode,cross ref name,,,manual}
+coverage_macro.texi(,515) @code{@@address@hidden(pman)anode,cross ref 
name,title,file address@hidden @ref{(pman)anode,cross ref name,title,file name}
+coverage_macro.texi(,516) @code{@@address@hidden(pman)anode,cross ref 
name,title,,address@hidden @ref{(pman)anode,cross ref name,title,,manual}
+coverage_macro.texi(,517) @code{@@address@hidden(pman)anode,cross ref 
name,title, file name, address@hidden @ref{(pman)anode,cross ref name,title, 
file name, manual}
+coverage_macro.texi(,518) @code{@@address@hidden(pman)anode,,title,file 
address@hidden @ref{(pman)anode,,title,file name}
+coverage_macro.texi(,519) 
@code{@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
+coverage_macro.texi(,520) @code{@@address@hidden(pman)anode,,title, file name, 
address@hidden @ref{(pman)anode,,title, file name, manual}
+coverage_macro.texi(,521) @code{@@address@hidden(pman)anode,,,file 
name,address@hidden @ref{(pman)anode,,,file name,manual}
+coverage_macro.texi(,522) 
+coverage_macro.texi(,523) 
+coverage_macro.texi(,524) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,525) @code{@@address@hidden@}} @inforef{chapter}
+coverage_macro.texi(,526) @code{@@address@hidden, cross ref address@hidden 
@inforef{chapter, cross ref name}
+coverage_macro.texi(,527) @code{@@address@hidden,,file address@hidden 
@inforef{chapter,,file name}
+coverage_macro.texi(,528) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{node, cross ref name, file name}
+coverage_macro.texi(,529) @code{@@address@hidden@}} @inforef{node}
+coverage_macro.texi(,530) @code{@@address@hidden, cross ref address@hidden 
@inforef{node, cross ref name}
+coverage_macro.texi(,531) @code{@@address@hidden,,file address@hidden 
@inforef{node,,file name}
+coverage_macro.texi(,532) @code{@@address@hidden, cross ref name, file name, 
spurious address@hidden @inforef{chapter, cross ref name, file name, spurious 
arg}
+coverage_macro.texi(,533) 
+coverage_macro.texi(,534) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,535) ref, a comma@@address@hidden@} in address@hidden
+coverage_macro.texi(,536) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,537) ref, a address@hidden in file}
+coverage_macro.texi(,538) 
+coverage_macro.texi(,539) 
+coverage_macro.texi(,540) @table @bullet
+coverage_macro.texi(,541) @c comment in table
+coverage_macro.texi(,542) @item a
+coverage_macro.texi(,543) l--ine
+coverage_macro.texi(,544) @end table
+coverage_macro.texi(,545) 
+coverage_macro.texi(,546) @vtable @asis
+coverage_macro.texi(,547) @item a
+coverage_macro.texi(,548) @c comment between item and itemx
+coverage_macro.texi(,549) @itemx b
+coverage_macro.texi(,550) l--ine
+coverage_macro.texi(,551) @end vtable
+coverage_macro.texi(,552) 
+coverage_macro.texi(,553) @ftable @minus
+coverage_macro.texi(,554) @item a
+coverage_macro.texi(,555) @cindex index entry between item and itemx
+coverage_macro.texi(,556) @itemx b
+coverage_macro.texi(,557) l--ine
+coverage_macro.texi(,558) @end ftable
+coverage_macro.texi(,559) 
+coverage_macro.texi(,560) @cartouche
+coverage_macro.texi(,561) c--artouche
+coverage_macro.texi(,562) @end cartouche
+coverage_macro.texi(,563) 
+coverage_macro.texi(,564) @flushleft
+coverage_macro.texi(,565) f--lushleft
+coverage_macro.texi(,566) @end flushleft
+coverage_macro.texi(,567) 
+coverage_macro.texi(,568) @flushright
+coverage_macro.texi(,569) f--lushright
+coverage_macro.texi(,570) @end flushright
+coverage_macro.texi(,571) 
+coverage_macro.texi(,572) @center ce--ntered line
+coverage_macro.texi(,573) 
+coverage_macro.texi(,574) @verbatiminclude simplest.texi
+coverage_macro.texi(,575) 
+coverage_macro.texi(,576) @verbatim
+coverage_macro.texi(,577) in verbatim ''
+coverage_macro.texi(,578) @end verbatim
+coverage_macro.texi(,579) 
+coverage_macro.texi(,580) @xml
+coverage_macro.texi(,581) <para> xml para </para> ''
+coverage_macro.texi(,582) @end xml
+coverage_macro.texi(,583) 
+coverage_macro.texi(,584) @html
+coverage_macro.texi(,585) html ''
+coverage_macro.texi(,586) @end html
+coverage_macro.texi(,587) 
+coverage_macro.texi(,588) @tex
+coverage_macro.texi(,589) $$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ 
''
+coverage_macro.texi(,590) @end tex
+coverage_macro.texi(,591) 
+coverage_macro.texi(,592) @docbook
+coverage_macro.texi(,593) docbook ''
+coverage_macro.texi(,594) @end docbook
+coverage_macro.texi(,595) 
+coverage_macro.texi(,596) @majorheading majorheading
+coverage_macro.texi(,597) 
+coverage_macro.texi(,598) @chapheading chapheading
+coverage_macro.texi(,599) 
+coverage_macro.texi(,600) @heading heading
+coverage_macro.texi(,601) 
+coverage_macro.texi(,602) @subheading subheading
+coverage_macro.texi(,603) 
+coverage_macro.texi(,604) @subsubheading subsubheading
+coverage_macro.texi(,605) 
+coverage_macro.texi(,606) @c makeinfo cannot handle that
+coverage_macro.texi(,607) @ifset texi2html
+coverage_macro.texi(,608) 
+coverage_macro.texi(,609) @code{@@address@hidden,an accronym 
@@address@hidden@} @@address@hidden@address@hidden @acronym{--a,an accronym 
@comma{} @enddots{}}
+coverage_macro.texi(,610) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
+coverage_macro.texi(,611) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,612) 
+coverage_macro.texi(,613) @code{@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+coverage_macro.texi(,614) 
+coverage_macro.texi(,615) @code{@@address@hidden,,,alt@@address@hidden:jk _" 
%@:@address@hidden @image{f-ile,,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,616) @code{@@address@hidden,aze,az,@@address@hidden:jk _" 
%@@:@} @@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" 
%@:} @b{in b "},e--xt}
+coverage_macro.texi(,617) @code{@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,618) 
+coverage_macro.texi(,619) @set invalid
+coverage_macro.texi(,620) @end ifset
+coverage_macro.texi(,621) 
+coverage_macro.texi(,622) 
+coverage_macro.texi(,623) @c invalid texinfo
+coverage_macro.texi(,624) @ifset invalid
+coverage_macro.texi(,625) 
+coverage_macro.texi(,626) Somehow invalid use of @@,:@*
+coverage_macro.texi(,627) @@, @,
+coverage_macro.texi(,628) @*
+coverage_macro.texi(,629) @@,@@"u @,@"u
+coverage_macro.texi(,630) 
+coverage_macro.texi(,631) Invalid use of @@':@*
+coverage_macro.texi(,632) @@' @'
+coverage_macro.texi(,633) @*
+coverage_macro.texi(,634) @@'@@"u @'@"u
+coverage_macro.texi(,635) 
+coverage_macro.texi(,636) @c only i or j as arg
+coverage_macro.texi(,637) @@address@hidden@} @dotless{truc}
+coverage_macro.texi(,638) @@address@hidden@} @dotless{ij}
+coverage_macro.texi(,639) @code{@@address@hidden@}} @dotless{--a}
+coverage_macro.texi(,640) @code{@@address@hidden@}} @dotless{a}
+coverage_macro.texi(,641) 
+coverage_macro.texi(,642) @c braces missing
+coverage_macro.texi(,643) @@TeX, but without brace @TeX
+coverage_macro.texi(,644) 
+coverage_macro.texi(,645) @c unknown command
+coverage_macro.texi(,646) @code{@@#} @#
+coverage_macro.texi(,647) 
+coverage_macro.texi(,648) @c no arg
+coverage_macro.texi(,649) @code{@@address@hidden@}} @w{--a}
+coverage_macro.texi(,650) 
+coverage_macro.texi(,651) @c no file
+coverage_macro.texi(,652) @code{@@address@hidden,address@hidden @image{,1--xt}
+coverage_macro.texi(,653) @code{@@address@hidden,,address@hidden 
@image{,,2--xt}
+coverage_macro.texi(,654) @code{@@address@hidden,,,address@hidden 
@image{,,,3--xt}
+coverage_macro.texi(,655) 
+coverage_macro.texi(,656) @sp
+coverage_macro.texi(,657) 
+coverage_macro.texi(,658) @c braces missing
+coverage_macro.texi(,659) @itemize @emph after emph
+coverage_macro.texi(,660) @item e--mph item
+coverage_macro.texi(,661) @end itemize
+coverage_macro.texi(,662) 
+coverage_macro.texi(,663) @c braces missing
+coverage_macro.texi(,664) @itemize @bullet a--n itemize line
+coverage_macro.texi(,665) @item i--tem 1
+coverage_macro.texi(,666) @item i--tem 2
+coverage_macro.texi(,667) @end itemize
+coverage_macro.texi(,668) 
+coverage_macro.texi(,669) @c deffnx after deff lines
+coverage_macro.texi(,670) @deffn fun
+coverage_macro.texi(,671) @deffnx truc machin bidule chose and }
+coverage_macro.texi(,672) @deffnx truc machin bidule chose and } after
+coverage_macro.texi(,673) @deffnx truc machin bidule chose and {
+coverage_macro.texi(,674) @deffnx truc machin bidule chose and { and after
+coverage_macro.texi(,675) @deffnx {truc} followed by a comment
+coverage_macro.texi(,676) @c comment
+coverage_macro.texi(,677) Various deff lines
+coverage_macro.texi(,678) @deffnx {truc} after a deff item
+coverage_macro.texi(,679) @end deffn
+coverage_macro.texi(,680) 
+coverage_macro.texi(,681) @c node is non existent, or missing first arg
+coverage_macro.texi(,682) @code{@@address@hidden@}} @ref{node}
+coverage_macro.texi(,683) 
+coverage_macro.texi(,684) @code{@@address@hidden,cross ref address@hidden 
@ref{,cross ref name}
+coverage_macro.texi(,685) @code{@@address@hidden,,address@hidden @ref{,,title}
+coverage_macro.texi(,686) @code{@@address@hidden,,,file address@hidden 
@ref{,,,file name}
+coverage_macro.texi(,687) @code{@@address@hidden,,,,address@hidden 
@ref{,,,,manual}
+coverage_macro.texi(,688) @code{@@address@hidden,cross ref address@hidden 
@ref{node,cross ref name}
+coverage_macro.texi(,689) @code{@@address@hidden,,address@hidden 
@ref{node,,title}
+coverage_macro.texi(,690) @code{@@address@hidden,,,file address@hidden 
@ref{node,,,file name}
+coverage_macro.texi(,691) @code{@@address@hidden,,,,address@hidden 
@ref{node,,,,manual}
+coverage_macro.texi(,692) @code{@@address@hidden,cross ref name,title,@}} 
@ref{node,cross ref name,title,}
+coverage_macro.texi(,693) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{node,cross ref name,,file name}
+coverage_macro.texi(,694) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{node,cross ref name,,,manual}
+coverage_macro.texi(,695) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{node,cross ref name,title,file name}
+coverage_macro.texi(,696) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{node,cross ref name,title,,manual}
+coverage_macro.texi(,697) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{node,cross ref name,title, file name, manual}
+coverage_macro.texi(,698) @code{@@address@hidden,,title,file address@hidden 
@ref{node,,title,file name}
+coverage_macro.texi(,699) @code{@@address@hidden,,title,,address@hidden 
@ref{node,,title,,manual}
+coverage_macro.texi(,700) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,701) @code{@@address@hidden,,title, file name, 
address@hidden @ref{node,,title, file name, manual}
+coverage_macro.texi(,702) @code{@@address@hidden,,,file name,address@hidden 
@ref{node,,,file name,manual}
+coverage_macro.texi(,703) @code{@@address@hidden,cross ref name,title,@}} 
@ref{,cross ref name,title,}
+coverage_macro.texi(,704) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{,cross ref name,,file name}
+coverage_macro.texi(,705) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{,cross ref name,,,manual}
+coverage_macro.texi(,706) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{,cross ref name,title,file name}
+coverage_macro.texi(,707) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{,cross ref name,title,,manual}
+coverage_macro.texi(,708) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{,cross ref name,title, file name, manual}
+coverage_macro.texi(,709) @code{@@address@hidden,,title,file address@hidden 
@ref{,,title,file name}
+coverage_macro.texi(,710) @code{@@address@hidden,,title,,address@hidden 
@ref{,,title,,manual}
+coverage_macro.texi(,711) @code{@@address@hidden,,title, file name, 
address@hidden @ref{,,title, file name, manual}
+coverage_macro.texi(,712) @code{@@address@hidden,,,file name,address@hidden 
@ref{,,,file name,manual}
+coverage_macro.texi(,713) 
+coverage_macro.texi(,714) @code{@@address@hidden,cross ref name @}} 
@inforef{,cross ref name }
+coverage_macro.texi(,715) @code{@@address@hidden,,file address@hidden 
@inforef{,,file name}
+coverage_macro.texi(,716) @code{@@address@hidden,cross ref name, file 
address@hidden @inforef{,cross ref name, file name}
+coverage_macro.texi(,717) @code{@@address@hidden@}} @inforef{}
+coverage_macro.texi(,718) 
+coverage_macro.texi(,719) @end ifset
+coverage_macro.texi(,720) 
+coverage_macro.texi(,721) @end macro
 formatting.texi(,15) 
 formatting.texi(,16) @copying
 formatting.texi(,17) In copying

Index: coverage/res_all/texi_formatting/formatting.texi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_all/texi_formatting/formatting.texi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_all/texi_formatting/formatting.texi    21 Jun 2009 09:25:41 
-0000      1.1
+++ coverage/res_all/texi_formatting/formatting.texi    2 Aug 2009 13:12:03 
-0000       1.2
@@ -11,6 +11,727 @@
 * description:chapter2.   Chapter 2
 @end menu
 
address@hidden mymacro
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden texi2html
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden ifset
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden texi2html
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
address@hidden ifset
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments @
+   more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
address@hidden texi2html
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
address@hidden ifset
+
+
address@hidden invalid texinfo
address@hidden invalid
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
address@hidden ifset
+
address@hidden macro
 
 @copying
 In copying

Index: coverage/res_all/texi_imbrications/imbrications.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_all/texi_imbrications/imbrications.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_all/texi_imbrications/imbrications.2   21 Jun 2009 09:25:41 
-0000      1.1
+++ coverage/res_all/texi_imbrications/imbrications.2   2 Aug 2009 13:12:04 
-0000       1.2
@@ -1,4 +1,2 @@
 ** unnumberedsubsec without name (l. 304)
 ** unnumberedsubsec without name (l. 306)
-** unnumberedsubsec without name (l. 304)
-** unnumberedsubsec without name (l. 306)

Index: coverage/res_all/texi_pass0_macros/pass0_macros.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_all/texi_pass0_macros/pass0_macros.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_all/texi_pass0_macros/pass0_macros.2   21 Jun 2009 09:25:41 
-0000      1.1
+++ coverage/res_all/texi_pass0_macros/pass0_macros.2   2 Aug 2009 13:12:04 
-0000       1.2
@@ -1,2 +1 @@
 *** Bad defindex line:  chose    machin  (l. 39)
-*** Bad defindex line:  chose    machin  (l. 39)

Index: coverage/res_info/comments/comments.info
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_info/comments/comments.info,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_info/comments/comments.info    21 Jun 2009 09:25:41 -0000      
1.1
+++ coverage/res_info/comments/comments.info    2 Aug 2009 13:12:04 -0000       
1.2
@@ -71,12 +71,10 @@
 ---------------
 
 And now finalout: Text line followed by finalout on the same line and
-another below
-
-    Text line after the finalout followed by a fianlout  Text line after
-the text line followed by the finalout.
+another below Text line after the finalout followed by a fianlout Text
+line after the text line followed by the finalout.
 
-    Test text after finalout  a word after finalout Line after finalout
+    Test text after finalout Line after finalout
 
     @page
     @noindent @refill  something
@@ -168,10 +166,10 @@
 
 Tag Table:
 Node: Top78
-Node: node2952
-Node: truc3065
-Node: bidule3303
-Node: bidule23489
+Node: node2923
+Node: truc3036
+Node: bidule3274
+Node: bidule23460
 
 End Tag Table
 

Index: coverage/res_info/comments_info/comments.info
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_info/comments_info/comments.info,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_info/comments_info/comments.info       21 Jun 2009 09:25:41 
-0000      1.1
+++ coverage/res_info/comments_info/comments.info       2 Aug 2009 13:12:04 
-0000       1.2
@@ -71,12 +71,10 @@
 ---------------
 
 And now finalout: Text line followed by finalout on the same line and
-another below
-
-    Text line after the finalout followed by a fianlout  Text line after
-the text line followed by the finalout.
+another below Text line after the finalout followed by a fianlout Text
+line after the text line followed by the finalout.
 
-    Test text after finalout  a word after finalout Line after finalout
+    Test text after finalout Line after finalout
 
     @page
     @noindent @refill  something
@@ -162,10 +160,10 @@
 
 Tag Table:
 Node: Top78
-Node: node2877
-Node: truc2990
-Node: bidule3228
-Node: bidule23414
+Node: node2848
+Node: truc2961
+Node: bidule3199
+Node: bidule23385
 
 End Tag Table
 

Index: coverage/res_info/formatting/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_info/formatting/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_info/formatting/formatting.2   21 Jun 2009 09:25:42 -0000      
1.1
+++ coverage/res_info/formatting/formatting.2   2 Aug 2009 13:12:04 -0000       
1.2
@@ -1,3 +1,4 @@
+** @ctrl is obsolete. (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
@@ -7,6 +8,7 @@
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
+** @ctrl is obsolete. (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
@@ -16,6 +18,7 @@
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
+** @ctrl is obsolete. (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
@@ -25,6 +28,7 @@
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
+** @ctrl is obsolete. (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
@@ -34,6 +38,7 @@
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
+** @ctrl is obsolete. (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
@@ -43,6 +48,7 @@
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
+** @ctrl is obsolete. (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
@@ -57,7 +63,7 @@
 ** Cannot find @image file `f-ile.txt' (l. 18 in @mymacro)
 ** Cannot find @image file `filejk _" address@hidden' (l. 18 in @mymacro)
 ** TeX requires {} (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
@@ -81,7 +87,7 @@
 ** Cannot find @image file `f-ile.txt' (l. 28 in @mymacro)
 ** Cannot find @image file `filejk _" address@hidden' (l. 28 in @mymacro)
 ** TeX requires {} (l. 28 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 28 in @mymacro)
+** Unknown command address@hidden' (l. 28 in @mymacro)
 *** no file argument for @image (l. 28 in @mymacro)
 *** no file argument for @image (l. 28 in @mymacro)
 *** no file argument for @image (l. 28 in @mymacro)
@@ -105,7 +111,7 @@
 ** Cannot find @image file `f-ile.txt' (l. 18 in @mymacro)
 ** Cannot find @image file `filejk _" address@hidden' (l. 18 in @mymacro)
 ** TeX requires {} (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
@@ -129,7 +135,7 @@
 ** Cannot find @image file `f-ile.txt' (l. 18 in @mymacro)
 ** Cannot find @image file `filejk _" address@hidden' (l. 18 in @mymacro)
 ** TeX requires {} (l. 18 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 18 in @mymacro)
+** Unknown command address@hidden' (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
 *** no file argument for @image (l. 18 in @mymacro)
@@ -153,7 +159,7 @@
 ** Cannot find @image file `f-ile.txt' (l. 38 in @mymacro)
 ** Cannot find @image file `filejk _" address@hidden' (l. 38 in @mymacro)
 ** TeX requires {} (l. 38 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 38 in @mymacro)
+** Unknown command address@hidden' (l. 38 in @mymacro)
 *** no file argument for @image (l. 38 in @mymacro)
 *** no file argument for @image (l. 38 in @mymacro)
 *** no file argument for @image (l. 38 in @mymacro)
@@ -178,7 +184,7 @@
 ** Cannot find @image file `f-ile.txt' (l. 42 in @mymacro)
 ** Cannot find @image file `filejk _" address@hidden' (l. 42 in @mymacro)
 ** TeX requires {} (l. 42 in @mymacro)
-** Unknown command address@hidden' (left as is) (l. 42 in @mymacro)
+** Unknown command address@hidden' (l. 42 in @mymacro)
 *** no file argument for @image (l. 42 in @mymacro)
 *** no file argument for @image (l. 42 in @mymacro)
 *** no file argument for @image (l. 42 in @mymacro)

Index: coverage/res_info/pass0_macros/pass0_macros.info
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_info/pass0_macros/pass0_macros.info,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_info/pass0_macros/pass0_macros.info    21 Jun 2009 09:25:42 
-0000      1.1
+++ coverage/res_info/pass0_macros/pass0_macros.info    2 Aug 2009 13:12:04 
-0000       1.2
@@ -19,12 +19,10 @@
 
 before syncodeindex
 
-   syncodeindex on its line
+   syncodeindex on its line line following syncodeindex
 
-   line following syncodeindex
-
-   One more thing following syncodeindex     truc line following
-syncodeindex cp fn   truc
+   One more thing following syncodeindex line following syncodeindex cp
+fn   truc
 
    documentlanguage
 

Index: coverage/res_info/texi_comments/comments.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_info/texi_comments/comments.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_info/texi_comments/comments.2  21 Jun 2009 09:25:42 -0000      
1.1
+++ coverage/res_info/texi_comments/comments.2  2 Aug 2009 13:12:05 -0000       
1.2
@@ -1,4 +1,2 @@
 ** Encoding name unknown: bad (l. 120)
 *** @clickstyle should only accept a macro as argument (l. 212)
-** Encoding name unknown: bad (l. 120)
-*** @clickstyle should only accept a macro as argument (l. 212)

Index: coverage/res_info/texi_formatting/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_info/texi_formatting/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_info/texi_formatting/formatting.2      21 Jun 2009 09:25:42 
-0000      1.1
+++ coverage/res_info/texi_formatting/formatting.2      2 Aug 2009 13:12:05 
-0000       1.2
@@ -1,3 +1,4 @@
+** @ctrl is obsolete. (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
@@ -7,6 +8,7 @@
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
+** @ctrl is obsolete. (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
@@ -16,6 +18,7 @@
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
 ** Empty index entry for @deffn (l. 28 in @mymacro)
+** @ctrl is obsolete. (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
@@ -25,6 +28,7 @@
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
+** @ctrl is obsolete. (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
@@ -34,6 +38,7 @@
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
 ** Empty index entry for @deffn (l. 18 in @mymacro)
+** @ctrl is obsolete. (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
@@ -43,60 +48,7 @@
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
 ** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 42 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 28 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 18 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
-** Empty index entry for @deffn (l. 38 in @mymacro)
+** @ctrl is obsolete. (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 ** Empty index entry for @deffn (l. 42 in @mymacro)

Index: coverage/res_info/texi_formatting/formatting.passfirst
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_info/texi_formatting/formatting.passfirst,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_info/texi_formatting/formatting.passfirst      21 Jun 2009 
09:25:42 -0000      1.1
+++ coverage/res_info/texi_formatting/formatting.passfirst      2 Aug 2009 
13:12:05 -0000       1.2
@@ -10,6 +10,727 @@
 formatting.texi(,11) * description:chapter2.   Chapter 2
 formatting.texi(,12) @end menu
 formatting.texi(,13) 
+coverage_macro.texi(,1) @macro mymacro
+coverage_macro.texi(,2) 
+coverage_macro.texi(,3) <
+coverage_macro.texi(,4) >
+coverage_macro.texi(,5) "
+coverage_macro.texi(,6) &
+coverage_macro.texi(,7) '
+coverage_macro.texi(,8) `
+coverage_macro.texi(,9) 
+coverage_macro.texi(,10) ``simple-double--three---four----''@*
+coverage_macro.texi(,11) code: @code{``simple-double--three---four----''} @*
+coverage_macro.texi(,12) asis: @asis{``simple-double--three---four----''} @*
+coverage_macro.texi(,13) strong: @strong{``simple-double--three---four----''} 
@*
+coverage_macro.texi(,14) kbd: @kbd{``simple-double--three---four----''} @*
+coverage_macro.texi(,15) 
+coverage_macro.texi(,16) address@hidden@w{}-three---four----'@w{}'@*
+coverage_macro.texi(,17) 
+coverage_macro.texi(,18) @cindex --option
+coverage_macro.texi(,19) @cindex ``
+coverage_macro.texi(,20) @findex ``
+coverage_macro.texi(,21) @findex --foption
+coverage_macro.texi(,22) 
+coverage_macro.texi(,23) @@"u @"u 
+coverage_macro.texi(,24) @@"@address@hidden @"{U} 
+coverage_macro.texi(,25) @@~n @~n
+coverage_macro.texi(,26) @@^a @^a
+coverage_macro.texi(,27) @@'e @'e
+coverage_macro.texi(,28) @@=o @=o
+coverage_macro.texi(,29) @@`i @`i
+coverage_macro.texi(,30) @@'@address@hidden @'{e}
+coverage_macro.texi(,31) @@'@{@@address@hidden@address@hidden @'address@hidden 
+coverage_macro.texi(,32) @@address@hidden@} @dotless{i}
+coverage_macro.texi(,33) @@address@hidden@} @dotless{j}
+coverage_macro.texi(,34) @@address@hidden@@address@hidden @address@hidden 
+coverage_macro.texi(,35) @@address@hidden@} @l{}
+coverage_macro.texi(,36) @@,@{@@'address@hidden @,{@'C}
+coverage_macro.texi(,37) @@,c @,c
+coverage_macro.texi(,38) @@,c@@"u @,c@"u @*
+coverage_macro.texi(,39) 
+coverage_macro.texi(,40) @@* @*
+coverage_macro.texi(,41) @@ followed by a space
+coverage_macro.texi(,42) @ 
+coverage_macro.texi(,43) @@ followed by a tab
+coverage_macro.texi(,44) @     
+coverage_macro.texi(,45) @@ followed by a new line
+coverage_macro.texi(,46) @
+coverage_macro.texi(,47) @code{@@-} @-
+coverage_macro.texi(,48) @code{@@|} @|
+coverage_macro.texi(,49) @code{@@:} @:
+coverage_macro.texi(,50) @code{@@!} @!
+coverage_macro.texi(,51) @code{@@?} @?
+coverage_macro.texi(,52) @code{@@.} @.
+coverage_macro.texi(,53) @code{@@@@} @@
+coverage_macro.texi(,54) @code{@@@}} @}
+coverage_macro.texi(,55) @code{@@@{} @{
+coverage_macro.texi(,56) @code{@@/} @/
+coverage_macro.texi(,57) 
+coverage_macro.texi(,58) foo vs.@: bar. 
+coverage_macro.texi(,59) colon :@:And something else.
+coverage_macro.texi(,60) semi colon ;@:.
+coverage_macro.texi(,61) And ? ?@:.
+coverage_macro.texi(,62) Now ! !@:@@
+coverage_macro.texi(,63) but , ,@:
+coverage_macro.texi(,64) 
+coverage_macro.texi(,65) @@TeX @TeX{}
+coverage_macro.texi(,66) @@LaTeX @LaTeX{}
+coverage_macro.texi(,67) @@bullet @bullet{}
+coverage_macro.texi(,68) @@copyright @copyright{}
+coverage_macro.texi(,69) @@dots @dots{}
+coverage_macro.texi(,70) @@enddots @enddots{}
+coverage_macro.texi(,71) @@equiv @equiv{}
+coverage_macro.texi(,72) @@error @error{}
+coverage_macro.texi(,73) @@expansion @expansion{}
+coverage_macro.texi(,74) @@minus @minus{}
+coverage_macro.texi(,75) @@point @point{}
+coverage_macro.texi(,76) @@print @print{}
+coverage_macro.texi(,77) @@result @result{}
+coverage_macro.texi(,78) @@today @today{}
+coverage_macro.texi(,79) @@aa @aa{}
+coverage_macro.texi(,80) @@AA @AA{}
+coverage_macro.texi(,81) @@ae @ae{}
+coverage_macro.texi(,82) @@oe @oe{}
+coverage_macro.texi(,83) @@AE @AE{}
+coverage_macro.texi(,84) @@OE @OE{}
+coverage_macro.texi(,85) @@o @o{}
+coverage_macro.texi(,86) @@O @O{}
+coverage_macro.texi(,87) @@ss @ss{}
+coverage_macro.texi(,88) @@l @l{}
+coverage_macro.texi(,89) @@L @L{}
+coverage_macro.texi(,90) @@DH @DH{}
+coverage_macro.texi(,91) @@TH @TH{}
+coverage_macro.texi(,92) @@dh @dh{}
+coverage_macro.texi(,93) @@th @th{}
+coverage_macro.texi(,94) @@exclamdown @exclamdown{}
+coverage_macro.texi(,95) @@questiondown @questiondown{}
+coverage_macro.texi(,96) @@pounds @pounds{}
+coverage_macro.texi(,97) @@registeredsymbol @registeredsymbol{}
+coverage_macro.texi(,98) @@ordf @ordf{}
+coverage_macro.texi(,99) @@ordm @ordm{}
+coverage_macro.texi(,100) @@comma @comma{}
+coverage_macro.texi(,101) @@quotedblleft @quotedblleft{}
+coverage_macro.texi(,102) @@quotedblright @quotedblright{}
+coverage_macro.texi(,103) @@quoteleft @quoteleft{}
+coverage_macro.texi(,104) @@quoteright @quoteright{}
+coverage_macro.texi(,105) @@quotedblbase @quotedblbase{}
+coverage_macro.texi(,106) @@quotesinglbase @quotesinglbase{}
+coverage_macro.texi(,107) @@guillemetleft @guillemetleft{}
+coverage_macro.texi(,108) @@guillemetright @guillemetright{}
+coverage_macro.texi(,109) @@guillemotleft @guillemotleft{}
+coverage_macro.texi(,110) @@guillemotright @guillemotright{}
+coverage_macro.texi(,111) @@guilsinglleft @guilsinglleft{}
+coverage_macro.texi(,112) @@guilsinglright @guilsinglright{}
+coverage_macro.texi(,113) @@textdegree @textdegree{}
+coverage_macro.texi(,114) @@euro @euro{}
+coverage_macro.texi(,115) @@arrow @arrow{}
+coverage_macro.texi(,116) @@leq @leq{}
+coverage_macro.texi(,117) @@geq @geq{}
+coverage_macro.texi(,118) 
+coverage_macro.texi(,119) @code{@@address@hidden,an address@hidden 
@acronym{--a,an accronym}
+coverage_macro.texi(,120) @code{@@address@hidden@}} @acronym{--a}
+coverage_macro.texi(,121) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude Autonome @}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
+coverage_macro.texi(,122) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,123) @code{@@address@hidden@}} @asis{--a}
+coverage_macro.texi(,124) @code{@@address@hidden@}} @b{--a}
+coverage_macro.texi(,125) @code{@@address@hidden@}} @cite{--a}
+coverage_macro.texi(,126) @code{@@address@hidden@}} @code{--a}
+coverage_macro.texi(,127) @code{@@address@hidden@}} @command{--a}
+coverage_macro.texi(,128) @code{@@address@hidden@}} @ctrl{--a}
+coverage_macro.texi(,129) @code{@@address@hidden@}} @dfn{--a}
+coverage_macro.texi(,130) @code{@@address@hidden@}} @dmn{--a}
+coverage_macro.texi(,131) @code{@@address@hidden,address@hidden @email{--a,--b}
+coverage_macro.texi(,132) @code{@@address@hidden,address@hidden @email{,--b}
+coverage_macro.texi(,133) @code{@@address@hidden@}} @email{--a}
+coverage_macro.texi(,134) @code{@@address@hidden@}} @emph{--a}
+coverage_macro.texi(,135) @code{@@address@hidden@}} @env{--a}
+coverage_macro.texi(,136) @code{@@address@hidden@}} @file{--a}
+coverage_macro.texi(,137) @code{@@address@hidden@}} @i{--a}
+coverage_macro.texi(,138) @code{@@address@hidden@}} @kbd{--a}
+coverage_macro.texi(,139) @code{@@address@hidden@}} @key{--a}
+coverage_macro.texi(,140) @code{@@address@hidden 
@address@hidden@address@hidden@address@hidden @@address@hidden@address@hidden 
@math{--a {\\frac{1}{2}} @minus{}}
+coverage_macro.texi(,141) @code{@@address@hidden@}} @option{--a}
+coverage_macro.texi(,142) @code{@@address@hidden@}} @r{--a}
+coverage_macro.texi(,143) @code{@@address@hidden@}} @samp{--a}
+coverage_macro.texi(,144) @code{@@address@hidden@}} @sc{--a}
+coverage_macro.texi(,145) @code{@@address@hidden@}} @strong{--a}
+coverage_macro.texi(,146) @code{@@address@hidden@}} @t{--a}
+coverage_macro.texi(,147) @code{@@address@hidden@}} @sansserif{--a}
+coverage_macro.texi(,148) @code{@@address@hidden@}} @titlefont{--a}
+coverage_macro.texi(,149) @code{@@address@hidden@}} @indicateurl{--a}
+coverage_macro.texi(,150) @code{@@address@hidden,address@hidden @uref{--a,--b}
+coverage_macro.texi(,151) @code{@@address@hidden@}} @uref{--a}
+coverage_macro.texi(,152) @code{@@address@hidden,address@hidden @uref{,--b}
+coverage_macro.texi(,153) @code{@@address@hidden,--b,address@hidden 
@uref{--a,--b,--c}
+coverage_macro.texi(,154) @code{@@address@hidden,--b,address@hidden 
@uref{,--b,--c}
+coverage_macro.texi(,155) @code{@@address@hidden,,address@hidden 
@uref{--a,,--c}
+coverage_macro.texi(,156) @code{@@address@hidden,,address@hidden @uref{,,--c}
+coverage_macro.texi(,157) @code{@@address@hidden,address@hidden @url{--a,--b}
+coverage_macro.texi(,158) @code{@@address@hidden,@}} @url{--a,}
+coverage_macro.texi(,159) @code{@@address@hidden,address@hidden @url{,--b}
+coverage_macro.texi(,160) @code{@@address@hidden@}} @var{--a}
+coverage_macro.texi(,161) @code{@@address@hidden:--a:@}} @verb{:--a:}
+coverage_macro.texi(,162) @code{@@address@hidden:a  < & @@ % " --    b:@}} 
@verb{:a  < & @ % " --    b:}
+coverage_macro.texi(,163) @code{@@address@hidden@}} @w{}
+coverage_macro.texi(,164) @code{@@address@hidden@}} @H{a}
+coverage_macro.texi(,165) @code{@@address@hidden@}} @H{--a}
+coverage_macro.texi(,166) @code{@@address@hidden@}} @dotaccent{a}
+coverage_macro.texi(,167) @code{@@address@hidden@}} @dotaccent{--a}
+coverage_macro.texi(,168) @code{@@address@hidden@}} @ringaccent{a}
+coverage_macro.texi(,169) @code{@@address@hidden@}} @ringaccent{--a}
+coverage_macro.texi(,170) @code{@@address@hidden@}} @tieaccent{a}
+coverage_macro.texi(,171) @code{@@address@hidden@}} @tieaccent{--a}
+coverage_macro.texi(,172) @code{@@address@hidden@}} @u{a}
+coverage_macro.texi(,173) @code{@@address@hidden@}} @u{--a}
+coverage_macro.texi(,174) @code{@@address@hidden@}} @ubaraccent{a}
+coverage_macro.texi(,175) @code{@@address@hidden@}} @ubaraccent{--a}
+coverage_macro.texi(,176) @code{@@address@hidden@}} @udotaccent{a}
+coverage_macro.texi(,177) @code{@@address@hidden@}} @udotaccent{--a}
+coverage_macro.texi(,178) @code{@@address@hidden@}} @v{a}
+coverage_macro.texi(,179) @code{@@address@hidden@}} @v{--a}
+coverage_macro.texi(,180) @code{@@,@address@hidden @,{c}
+coverage_macro.texi(,181) @code{@@,@address@hidden @,{--c}
+coverage_macro.texi(,182) @ifset texi2html
+coverage_macro.texi(,183) @code{@@address@hidden@}} @ogonek{a}
+coverage_macro.texi(,184) @code{@@address@hidden@}} @ogonek{--a}
+coverage_macro.texi(,185) @end ifset
+coverage_macro.texi(,186) @code{@@address@hidden address@hidden @footnote{in 
footnote}
+coverage_macro.texi(,187) @code{@@address@hidden address@hidden @footnote{in 
footnote2}
+coverage_macro.texi(,188) 
+coverage_macro.texi(,189) @code{@@address@hidden@}} @image{f--ile}
+coverage_macro.texi(,190) @code{@@address@hidden,address@hidden 
@image{f--ile,l--i}
+coverage_macro.texi(,191) @code{@@address@hidden,,address@hidden 
@image{f--ile,,l--e}
+coverage_macro.texi(,192) @code{@@address@hidden,,,address@hidden 
@image{f--ile,,,alt}
+coverage_macro.texi(,193) @code{@@address@hidden,,,,address@hidden 
@image{f--ile,,,,e--xt}
+coverage_macro.texi(,194) @code{@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
+coverage_macro.texi(,195) @code{@@address@hidden,aze,,address@hidden 
@image{f-ile,aze,,a--lt}
+coverage_macro.texi(,196) 
@code{@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden 
address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+coverage_macro.texi(,197) 
+coverage_macro.texi(,198) @sp 2
+coverage_macro.texi(,199) 
+coverage_macro.texi(,200) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,201) @clickstyle @result
+coverage_macro.texi(,202) After clickstyle @result{}
+coverage_macro.texi(,203) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,204) @clickstyle @arrow
+coverage_macro.texi(,205) 
+coverage_macro.texi(,206) @quotation 
+coverage_macro.texi(,207) A quot---ation
+coverage_macro.texi(,208) @end quotation
+coverage_macro.texi(,209) 
+coverage_macro.texi(,210) @quotation Note
+coverage_macro.texi(,211) A Note
+coverage_macro.texi(,212) @end quotation
+coverage_macro.texi(,213) 
+coverage_macro.texi(,214) @quotation note
+coverage_macro.texi(,215) A note
+coverage_macro.texi(,216) @end quotation
+coverage_macro.texi(,217) 
+coverage_macro.texi(,218) @quotation Caution
+coverage_macro.texi(,219) Caution
+coverage_macro.texi(,220) @end quotation
+coverage_macro.texi(,221) 
+coverage_macro.texi(,222) @quotation Important
+coverage_macro.texi(,223) Important
+coverage_macro.texi(,224) @end quotation
+coverage_macro.texi(,225) 
+coverage_macro.texi(,226) @quotation Tip
+coverage_macro.texi(,227) a Tip
+coverage_macro.texi(,228) @end quotation
+coverage_macro.texi(,229) 
+coverage_macro.texi(,230) @quotation Warning
+coverage_macro.texi(,231) a Warning.
+coverage_macro.texi(,232) @end quotation
+coverage_macro.texi(,233) 
+coverage_macro.texi(,234) @quotation something @'e @TeX{}
+coverage_macro.texi(,235) The something @'e @TeX{} is here.
+coverage_macro.texi(,236) @end quotation
+coverage_macro.texi(,237) 
+coverage_macro.texi(,238) @quotation @@ at the end of line @
+coverage_macro.texi(,239) A @@ at the end of the @@quotation line.
+coverage_macro.texi(,240) @end quotation
+coverage_macro.texi(,241) 
+coverage_macro.texi(,242) @quotation something, other thing
+coverage_macro.texi(,243) something, other thing
+coverage_macro.texi(,244) @end quotation
+coverage_macro.texi(,245) 
+coverage_macro.texi(,246) @quotation Note, the note
+coverage_macro.texi(,247) Note, the note
+coverage_macro.texi(,248) @end quotation
+coverage_macro.texi(,249) 
+coverage_macro.texi(,250) @quotation
+coverage_macro.texi(,251) @end quotation
+coverage_macro.texi(,252) 
+coverage_macro.texi(,253) @quotation Empty
+coverage_macro.texi(,254) @end quotation
+coverage_macro.texi(,255) 
+coverage_macro.texi(,256) @quotation @asis{}
+coverage_macro.texi(,257) @end quotation
+coverage_macro.texi(,258) 
+coverage_macro.texi(,259) @quotation @*
+coverage_macro.texi(,260) @end quotation
+coverage_macro.texi(,261) 
+coverage_macro.texi(,262) @ifset texi2html
+coverage_macro.texi(,263) @smallquotation 
+coverage_macro.texi(,264) A small quot---ation
+coverage_macro.texi(,265) @end smallquotation
+coverage_macro.texi(,266) 
+coverage_macro.texi(,267) @smallquotation Note
+coverage_macro.texi(,268) A small Note
+coverage_macro.texi(,269) @end smallquotation
+coverage_macro.texi(,270) 
+coverage_macro.texi(,271) @smallquotation something, other thing
+coverage_macro.texi(,272) something, other thing
+coverage_macro.texi(,273) @end smallquotation
+coverage_macro.texi(,274) @end ifset
+coverage_macro.texi(,275) 
+coverage_macro.texi(,276) @itemize
+coverage_macro.texi(,277) @item i--temize
+coverage_macro.texi(,278) @end itemize
+coverage_macro.texi(,279) 
+coverage_macro.texi(,280) @itemize +
+coverage_macro.texi(,281) @item i--tem +
+coverage_macro.texi(,282) @end itemize
+coverage_macro.texi(,283) 
+coverage_macro.texi(,284) @itemize @bullet
+coverage_macro.texi(,285) @item b--ullet
+coverage_macro.texi(,286) @end itemize
+coverage_macro.texi(,287) 
+coverage_macro.texi(,288) @itemize @minus
+coverage_macro.texi(,289) @item minu--s
+coverage_macro.texi(,290) @end itemize
+coverage_macro.texi(,291) 
+coverage_macro.texi(,292) @itemize @emph
+coverage_macro.texi(,293) @item e--mph item
+coverage_macro.texi(,294) @end itemize
+coverage_macro.texi(,295) 
+coverage_macro.texi(,296) @itemize @emph{after emph}
+coverage_macro.texi(,297) @c comment in itemize
+coverage_macro.texi(,298) @item e--mph item
+coverage_macro.texi(,299) @end itemize
+coverage_macro.texi(,300) 
+coverage_macro.texi(,301) @itemize @bullet{} a--n itemize line
+coverage_macro.texi(,302) @cindex index entry within itemize
+coverage_macro.texi(,303) @item i--tem 1
+coverage_macro.texi(,304) @item i--tem 2
+coverage_macro.texi(,305) @end itemize
+coverage_macro.texi(,306) 
+coverage_macro.texi(,307) @enumerate
+coverage_macro.texi(,308) @item e--numerate
+coverage_macro.texi(,309) @end enumerate
+coverage_macro.texi(,310) 
+coverage_macro.texi(,311) @multitable @columnfractions 6 7
+coverage_macro.texi(,312) @headitem mu--ltitable headitem @tab another tab
+coverage_macro.texi(,313) @item mu--ltitable item @tab multitable tab
+coverage_macro.texi(,314) @c comment in multitable
+coverage_macro.texi(,315) @item mu--ltitable item 2 @tab multitable tab 2
+coverage_macro.texi(,316) @cindex index entry within multitable
+coverage_macro.texi(,317) @item lone mu--ltitable item
+coverage_macro.texi(,318) @end multitable
+coverage_macro.texi(,319) 
+coverage_macro.texi(,320) @multitable {truc} {bidule}
+coverage_macro.texi(,321) @item truc @tab bidule
+coverage_macro.texi(,322) @end multitable
+coverage_macro.texi(,323) 
+coverage_macro.texi(,324) @example
+coverage_macro.texi(,325) e--xample  some
+coverage_macro.texi(,326)    text
+coverage_macro.texi(,327) @end example
+coverage_macro.texi(,328) 
+coverage_macro.texi(,329) @smallexample
+coverage_macro.texi(,330) s--mallexample
+coverage_macro.texi(,331) @end smallexample
+coverage_macro.texi(,332) 
+coverage_macro.texi(,333) @display 
+coverage_macro.texi(,334) d--isplay
+coverage_macro.texi(,335) @end display
+coverage_macro.texi(,336) 
+coverage_macro.texi(,337) @smalldisplay
+coverage_macro.texi(,338) s--malldisplay
+coverage_macro.texi(,339) @end smalldisplay
+coverage_macro.texi(,340) 
+coverage_macro.texi(,341) @lisp
+coverage_macro.texi(,342) l--isp
+coverage_macro.texi(,343) @end lisp
+coverage_macro.texi(,344) 
+coverage_macro.texi(,345) @smalllisp
+coverage_macro.texi(,346) s--malllisp
+coverage_macro.texi(,347) @end smalllisp
+coverage_macro.texi(,348) 
+coverage_macro.texi(,349) @format
+coverage_macro.texi(,350) f--ormat
+coverage_macro.texi(,351) @end format
+coverage_macro.texi(,352) 
+coverage_macro.texi(,353) @smallformat
+coverage_macro.texi(,354) s--mallformat
+coverage_macro.texi(,355) @end smallformat
+coverage_macro.texi(,356) 
+coverage_macro.texi(,357) @deffn c--ategory d--effn_name a--rguments...
+coverage_macro.texi(,358) d--effn
+coverage_macro.texi(,359) @end deffn
+coverage_macro.texi(,360) 
+coverage_macro.texi(,361) @deffn cate--gory de--ffn_name ar--guments @
+coverage_macro.texi(,362)    more args @* even more so
+coverage_macro.texi(,363) def--fn
+coverage_macro.texi(,364) @end deffn
+coverage_macro.texi(,365)  
+coverage_macro.texi(,366) @deffn fset @var{i} a g
+coverage_macro.texi(,367) @cindex index entry within deffn
+coverage_macro.texi(,368) @deffnx {cmde} truc {}
+coverage_macro.texi(,369) @deffnx Command {log trap} {}
+coverage_macro.texi(,370) @deffnx Command { log trap1} {}  
+coverage_macro.texi(,371) @deffnx Command {log trap2 } {}
+coverage_macro.texi(,372) @deffnx cmde @b{id ule} truc
+coverage_macro.texi(,373) @deffnx cmde2 @b{id @samp{i} ule} truc
+coverage_macro.texi(,374) @deffnx @b{id @samp{i} ule}    
+coverage_macro.texi(,375) @deffnx 
+coverage_macro.texi(,376) @deffnx aaa
+coverage_macro.texi(,377) @deffnx {} {}
+coverage_macro.texi(,378) @deffnx{}
+coverage_macro.texi(,379) @deffnx{} machin
+coverage_macro.texi(,380) @deffnx{} {bidule machin}
+coverage_macro.texi(,381) @deffnx{truc} machin
+coverage_macro.texi(,382) @deffnx{truc} { }
+coverage_macro.texi(,383) @deffnx{truc} followed by a comment
+coverage_macro.texi(,384) @c comment
+coverage_macro.texi(,385) @deffnx{truc}
+coverage_macro.texi(,386) @deffnx{} {}
+coverage_macro.texi(,387) @deffnx {truc} a b c d e @b{f g} {h i}
+coverage_macro.texi(,388) @deffnx {truc} deffnx before end deffn
+coverage_macro.texi(,389) @end deffn
+coverage_macro.texi(,390) 
+coverage_macro.texi(,391) @deffn empty deffn
+coverage_macro.texi(,392) @end deffn
+coverage_macro.texi(,393) 
+coverage_macro.texi(,394) @deffn empty deffn with deffnx
+coverage_macro.texi(,395) @c comment between deffn and deffnx
+coverage_macro.texi(,396) @deffnx empty deffnx
+coverage_macro.texi(,397) @end deffn
+coverage_macro.texi(,398) 
+coverage_macro.texi(,399) @deffn fset @var{i} a g
+coverage_macro.texi(,400) @deffnx {cmde} truc {}
+coverage_macro.texi(,401) @c comment
+coverage_macro.texi(,402) text in def item for second def item
+coverage_macro.texi(,403) @end deffn
+coverage_macro.texi(,404) 
+coverage_macro.texi(,405) @defvr c--ategory d--efvr_name
+coverage_macro.texi(,406) d--efvr
+coverage_macro.texi(,407) @end defvr
+coverage_macro.texi(,408) 
+coverage_macro.texi(,409) @deftypefn c--ategory t--ype d--eftypefn_name 
a--rguments...
+coverage_macro.texi(,410) d--eftypefn
+coverage_macro.texi(,411) @end deftypefn
+coverage_macro.texi(,412) 
+coverage_macro.texi(,413) @deftypeop c--ategory c--lass t--ype 
d--eftypeop_name a--rguments...
+coverage_macro.texi(,414) d--eftypeop
+coverage_macro.texi(,415) @end deftypeop
+coverage_macro.texi(,416) 
+coverage_macro.texi(,417) @deftypevr c--ategory t--ype d--eftypevr_name
+coverage_macro.texi(,418) d--eftypevr
+coverage_macro.texi(,419) @end deftypevr
+coverage_macro.texi(,420) 
+coverage_macro.texi(,421) @defcv c--ategory c--lass d--efcv_name
+coverage_macro.texi(,422) d--efcv
+coverage_macro.texi(,423) @end defcv
+coverage_macro.texi(,424) 
+coverage_macro.texi(,425) @defop c--ategory c--lass d--efop_name a--rguments...
+coverage_macro.texi(,426) d--efop
+coverage_macro.texi(,427) @end defop
+coverage_macro.texi(,428) 
+coverage_macro.texi(,429) @deftp c--ategory d--eftp_name a--ttributes...
+coverage_macro.texi(,430) d--eftp
+coverage_macro.texi(,431) @end deftp
+coverage_macro.texi(,432) 
+coverage_macro.texi(,433) @defun d--efun_name a--rguments...
+coverage_macro.texi(,434) d--efun
+coverage_macro.texi(,435) @end defun
+coverage_macro.texi(,436) 
+coverage_macro.texi(,437) @defmac d--efmac_name a--rguments...
+coverage_macro.texi(,438) d--efmac
+coverage_macro.texi(,439) @end defmac
+coverage_macro.texi(,440) 
+coverage_macro.texi(,441) @defspec d--efspec_name a--rguments...
+coverage_macro.texi(,442) d--efspec
+coverage_macro.texi(,443) @end defspec
+coverage_macro.texi(,444) 
+coverage_macro.texi(,445) @defvar d--efvar_name argvar argvar1
+coverage_macro.texi(,446) d--efvar
+coverage_macro.texi(,447) @end defvar
+coverage_macro.texi(,448) 
+coverage_macro.texi(,449) @defopt d--efopt_name
+coverage_macro.texi(,450) d--efopt
+coverage_macro.texi(,451) @end defopt
+coverage_macro.texi(,452) 
+coverage_macro.texi(,453) @deftypefun t--ype d--eftypefun_name a--rguments...
+coverage_macro.texi(,454) d--eftypefun
+coverage_macro.texi(,455) @end deftypefun
+coverage_macro.texi(,456) 
+coverage_macro.texi(,457) @deftypevar t--ype d--eftypevar_name
+coverage_macro.texi(,458) d--eftypevar
+coverage_macro.texi(,459) @end deftypevar
+coverage_macro.texi(,460) 
+coverage_macro.texi(,461) @defivar c--lass d--efivar_name
+coverage_macro.texi(,462) d--efivar
+coverage_macro.texi(,463) @end defivar
+coverage_macro.texi(,464) 
+coverage_macro.texi(,465) @deftypeivar c--lass t--ype d--eftypeivar_name
+coverage_macro.texi(,466) d--eftypeivar
+coverage_macro.texi(,467) @end deftypeivar
+coverage_macro.texi(,468) 
+coverage_macro.texi(,469) @defmethod c--lass d--efmethod_name a--rguments...
+coverage_macro.texi(,470) d--efmethod
+coverage_macro.texi(,471) @end defmethod
+coverage_macro.texi(,472) 
+coverage_macro.texi(,473) @deftypemethod c--lass t--ype d--eftypemethod_name 
a--rguments...
+coverage_macro.texi(,474) d--eftypemethod
+coverage_macro.texi(,475) @end deftypemethod
+coverage_macro.texi(,476) 
+coverage_macro.texi(,477) @code{@@address@hidden@@@@, cross r---ef name@@@@, 
t---itle@@@@, file n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross 
r---ef name@@, t---itle@@, file n---ame@@, ma---nual@@}.
+coverage_macro.texi(,478) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @ref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,479) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @pxref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,480) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,481) 
+coverage_macro.texi(,482) @code{@@address@hidden@}} @ref{chapter}
+coverage_macro.texi(,483) @code{@@address@hidden@}} @xref{chapter}.
+coverage_macro.texi(,484) @code{@@address@hidden@}} @pxref{chapter}
+coverage_macro.texi(,485) 
@code{@@address@hidden@@address@hidden@address@hidden @address@hidden
+coverage_macro.texi(,486) 
+coverage_macro.texi(,487) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,488) ref, a comma@@address@hidden@} in title, a 
comma@@address@hidden@} in file, a @@address@hidden@} in manual name @}}
+coverage_macro.texi(,489) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,490) ref, a address@hidden in title, a address@hidden in 
file, a @comma{} in manual name }
+coverage_macro.texi(,491) 
+coverage_macro.texi(,492) @code{@@address@hidden,cross ref address@hidden 
@ref{chapter,cross ref name}
+coverage_macro.texi(,493) @code{@@address@hidden,,address@hidden 
@ref{chapter,,title}
+coverage_macro.texi(,494) @code{@@address@hidden,,,file address@hidden 
@ref{chapter,,,file name}
+coverage_macro.texi(,495) @code{@@address@hidden,,,,address@hidden 
@ref{chapter,,,,manual}
+coverage_macro.texi(,496) @code{@@address@hidden,cross ref name,title,@}} 
@ref{chapter,cross ref name,title,}
+coverage_macro.texi(,497) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{chapter,cross ref name,,file name}
+coverage_macro.texi(,498) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{chapter,cross ref name,,,manual}
+coverage_macro.texi(,499) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{chapter,cross ref name,title,file name}
+coverage_macro.texi(,500) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{chapter,cross ref name,title,,manual}
+coverage_macro.texi(,501) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{chapter,cross ref name,title, file name, manual}
+coverage_macro.texi(,502) @code{@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
+coverage_macro.texi(,503) @code{@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
+coverage_macro.texi(,504) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,505) @code{@@address@hidden,,,file name,address@hidden 
@ref{chapter,,,file name,manual}
+coverage_macro.texi(,506) 
+coverage_macro.texi(,507) 
+coverage_macro.texi(,508) @code{@@address@hidden(pman)anode,cross ref 
address@hidden @ref{(pman)anode,cross ref name}
+coverage_macro.texi(,509) @code{@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
+coverage_macro.texi(,510) @code{@@address@hidden(pman)anode,,,file 
address@hidden @ref{(pman)anode,,,file name}
+coverage_macro.texi(,511) @code{@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
+coverage_macro.texi(,512) @code{@@address@hidden(pman)anode,cross ref 
name,title,@}} @ref{(pman)anode,cross ref name,title,}
+coverage_macro.texi(,513) @code{@@address@hidden(pman)anode,cross ref 
name,,file address@hidden @ref{(pman)anode,cross ref name,,file name}
+coverage_macro.texi(,514) @code{@@address@hidden(pman)anode,cross ref 
name,,,address@hidden @ref{(pman)anode,cross ref name,,,manual}
+coverage_macro.texi(,515) @code{@@address@hidden(pman)anode,cross ref 
name,title,file address@hidden @ref{(pman)anode,cross ref name,title,file name}
+coverage_macro.texi(,516) @code{@@address@hidden(pman)anode,cross ref 
name,title,,address@hidden @ref{(pman)anode,cross ref name,title,,manual}
+coverage_macro.texi(,517) @code{@@address@hidden(pman)anode,cross ref 
name,title, file name, address@hidden @ref{(pman)anode,cross ref name,title, 
file name, manual}
+coverage_macro.texi(,518) @code{@@address@hidden(pman)anode,,title,file 
address@hidden @ref{(pman)anode,,title,file name}
+coverage_macro.texi(,519) 
@code{@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
+coverage_macro.texi(,520) @code{@@address@hidden(pman)anode,,title, file name, 
address@hidden @ref{(pman)anode,,title, file name, manual}
+coverage_macro.texi(,521) @code{@@address@hidden(pman)anode,,,file 
name,address@hidden @ref{(pman)anode,,,file name,manual}
+coverage_macro.texi(,522) 
+coverage_macro.texi(,523) 
+coverage_macro.texi(,524) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,525) @code{@@address@hidden@}} @inforef{chapter}
+coverage_macro.texi(,526) @code{@@address@hidden, cross ref address@hidden 
@inforef{chapter, cross ref name}
+coverage_macro.texi(,527) @code{@@address@hidden,,file address@hidden 
@inforef{chapter,,file name}
+coverage_macro.texi(,528) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{node, cross ref name, file name}
+coverage_macro.texi(,529) @code{@@address@hidden@}} @inforef{node}
+coverage_macro.texi(,530) @code{@@address@hidden, cross ref address@hidden 
@inforef{node, cross ref name}
+coverage_macro.texi(,531) @code{@@address@hidden,,file address@hidden 
@inforef{node,,file name}
+coverage_macro.texi(,532) @code{@@address@hidden, cross ref name, file name, 
spurious address@hidden @inforef{chapter, cross ref name, file name, spurious 
arg}
+coverage_macro.texi(,533) 
+coverage_macro.texi(,534) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,535) ref, a comma@@address@hidden@} in address@hidden
+coverage_macro.texi(,536) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,537) ref, a address@hidden in file}
+coverage_macro.texi(,538) 
+coverage_macro.texi(,539) 
+coverage_macro.texi(,540) @table @bullet
+coverage_macro.texi(,541) @c comment in table
+coverage_macro.texi(,542) @item a
+coverage_macro.texi(,543) l--ine
+coverage_macro.texi(,544) @end table
+coverage_macro.texi(,545) 
+coverage_macro.texi(,546) @vtable @asis
+coverage_macro.texi(,547) @item a
+coverage_macro.texi(,548) @c comment between item and itemx
+coverage_macro.texi(,549) @itemx b
+coverage_macro.texi(,550) l--ine
+coverage_macro.texi(,551) @end vtable
+coverage_macro.texi(,552) 
+coverage_macro.texi(,553) @ftable @minus
+coverage_macro.texi(,554) @item a
+coverage_macro.texi(,555) @cindex index entry between item and itemx
+coverage_macro.texi(,556) @itemx b
+coverage_macro.texi(,557) l--ine
+coverage_macro.texi(,558) @end ftable
+coverage_macro.texi(,559) 
+coverage_macro.texi(,560) @cartouche
+coverage_macro.texi(,561) c--artouche
+coverage_macro.texi(,562) @end cartouche
+coverage_macro.texi(,563) 
+coverage_macro.texi(,564) @flushleft
+coverage_macro.texi(,565) f--lushleft
+coverage_macro.texi(,566) @end flushleft
+coverage_macro.texi(,567) 
+coverage_macro.texi(,568) @flushright
+coverage_macro.texi(,569) f--lushright
+coverage_macro.texi(,570) @end flushright
+coverage_macro.texi(,571) 
+coverage_macro.texi(,572) @center ce--ntered line
+coverage_macro.texi(,573) 
+coverage_macro.texi(,574) @verbatiminclude simplest.texi
+coverage_macro.texi(,575) 
+coverage_macro.texi(,576) @verbatim
+coverage_macro.texi(,577) in verbatim ''
+coverage_macro.texi(,578) @end verbatim
+coverage_macro.texi(,579) 
+coverage_macro.texi(,580) @xml
+coverage_macro.texi(,581) <para> xml para </para> ''
+coverage_macro.texi(,582) @end xml
+coverage_macro.texi(,583) 
+coverage_macro.texi(,584) @html
+coverage_macro.texi(,585) html ''
+coverage_macro.texi(,586) @end html
+coverage_macro.texi(,587) 
+coverage_macro.texi(,588) @tex
+coverage_macro.texi(,589) $$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ 
''
+coverage_macro.texi(,590) @end tex
+coverage_macro.texi(,591) 
+coverage_macro.texi(,592) @docbook
+coverage_macro.texi(,593) docbook ''
+coverage_macro.texi(,594) @end docbook
+coverage_macro.texi(,595) 
+coverage_macro.texi(,596) @majorheading majorheading
+coverage_macro.texi(,597) 
+coverage_macro.texi(,598) @chapheading chapheading
+coverage_macro.texi(,599) 
+coverage_macro.texi(,600) @heading heading
+coverage_macro.texi(,601) 
+coverage_macro.texi(,602) @subheading subheading
+coverage_macro.texi(,603) 
+coverage_macro.texi(,604) @subsubheading subsubheading
+coverage_macro.texi(,605) 
+coverage_macro.texi(,606) @c makeinfo cannot handle that
+coverage_macro.texi(,607) @ifset texi2html
+coverage_macro.texi(,608) 
+coverage_macro.texi(,609) @code{@@address@hidden,an accronym 
@@address@hidden@} @@address@hidden@address@hidden @acronym{--a,an accronym 
@comma{} @enddots{}}
+coverage_macro.texi(,610) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
+coverage_macro.texi(,611) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,612) 
+coverage_macro.texi(,613) @code{@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+coverage_macro.texi(,614) 
+coverage_macro.texi(,615) @code{@@address@hidden,,,alt@@address@hidden:jk _" 
%@:@address@hidden @image{f-ile,,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,616) @code{@@address@hidden,aze,az,@@address@hidden:jk _" 
%@@:@} @@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" 
%@:} @b{in b "},e--xt}
+coverage_macro.texi(,617) @code{@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,618) 
+coverage_macro.texi(,619) @set invalid
+coverage_macro.texi(,620) @end ifset
+coverage_macro.texi(,621) 
+coverage_macro.texi(,622) 
+coverage_macro.texi(,623) @c invalid texinfo
+coverage_macro.texi(,624) @ifset invalid
+coverage_macro.texi(,625) 
+coverage_macro.texi(,626) Somehow invalid use of @@,:@*
+coverage_macro.texi(,627) @@, @,
+coverage_macro.texi(,628) @*
+coverage_macro.texi(,629) @@,@@"u @,@"u
+coverage_macro.texi(,630) 
+coverage_macro.texi(,631) Invalid use of @@':@*
+coverage_macro.texi(,632) @@' @'
+coverage_macro.texi(,633) @*
+coverage_macro.texi(,634) @@'@@"u @'@"u
+coverage_macro.texi(,635) 
+coverage_macro.texi(,636) @c only i or j as arg
+coverage_macro.texi(,637) @@address@hidden@} @dotless{truc}
+coverage_macro.texi(,638) @@address@hidden@} @dotless{ij}
+coverage_macro.texi(,639) @code{@@address@hidden@}} @dotless{--a}
+coverage_macro.texi(,640) @code{@@address@hidden@}} @dotless{a}
+coverage_macro.texi(,641) 
+coverage_macro.texi(,642) @c braces missing
+coverage_macro.texi(,643) @@TeX, but without brace @TeX
+coverage_macro.texi(,644) 
+coverage_macro.texi(,645) @c unknown command
+coverage_macro.texi(,646) @code{@@#} @#
+coverage_macro.texi(,647) 
+coverage_macro.texi(,648) @c no arg
+coverage_macro.texi(,649) @code{@@address@hidden@}} @w{--a}
+coverage_macro.texi(,650) 
+coverage_macro.texi(,651) @c no file
+coverage_macro.texi(,652) @code{@@address@hidden,address@hidden @image{,1--xt}
+coverage_macro.texi(,653) @code{@@address@hidden,,address@hidden 
@image{,,2--xt}
+coverage_macro.texi(,654) @code{@@address@hidden,,,address@hidden 
@image{,,,3--xt}
+coverage_macro.texi(,655) 
+coverage_macro.texi(,656) @sp
+coverage_macro.texi(,657) 
+coverage_macro.texi(,658) @c braces missing
+coverage_macro.texi(,659) @itemize @emph after emph
+coverage_macro.texi(,660) @item e--mph item
+coverage_macro.texi(,661) @end itemize
+coverage_macro.texi(,662) 
+coverage_macro.texi(,663) @c braces missing
+coverage_macro.texi(,664) @itemize @bullet a--n itemize line
+coverage_macro.texi(,665) @item i--tem 1
+coverage_macro.texi(,666) @item i--tem 2
+coverage_macro.texi(,667) @end itemize
+coverage_macro.texi(,668) 
+coverage_macro.texi(,669) @c deffnx after deff lines
+coverage_macro.texi(,670) @deffn fun
+coverage_macro.texi(,671) @deffnx truc machin bidule chose and }
+coverage_macro.texi(,672) @deffnx truc machin bidule chose and } after
+coverage_macro.texi(,673) @deffnx truc machin bidule chose and {
+coverage_macro.texi(,674) @deffnx truc machin bidule chose and { and after
+coverage_macro.texi(,675) @deffnx {truc} followed by a comment
+coverage_macro.texi(,676) @c comment
+coverage_macro.texi(,677) Various deff lines
+coverage_macro.texi(,678) @deffnx {truc} after a deff item
+coverage_macro.texi(,679) @end deffn
+coverage_macro.texi(,680) 
+coverage_macro.texi(,681) @c node is non existent, or missing first arg
+coverage_macro.texi(,682) @code{@@address@hidden@}} @ref{node}
+coverage_macro.texi(,683) 
+coverage_macro.texi(,684) @code{@@address@hidden,cross ref address@hidden 
@ref{,cross ref name}
+coverage_macro.texi(,685) @code{@@address@hidden,,address@hidden @ref{,,title}
+coverage_macro.texi(,686) @code{@@address@hidden,,,file address@hidden 
@ref{,,,file name}
+coverage_macro.texi(,687) @code{@@address@hidden,,,,address@hidden 
@ref{,,,,manual}
+coverage_macro.texi(,688) @code{@@address@hidden,cross ref address@hidden 
@ref{node,cross ref name}
+coverage_macro.texi(,689) @code{@@address@hidden,,address@hidden 
@ref{node,,title}
+coverage_macro.texi(,690) @code{@@address@hidden,,,file address@hidden 
@ref{node,,,file name}
+coverage_macro.texi(,691) @code{@@address@hidden,,,,address@hidden 
@ref{node,,,,manual}
+coverage_macro.texi(,692) @code{@@address@hidden,cross ref name,title,@}} 
@ref{node,cross ref name,title,}
+coverage_macro.texi(,693) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{node,cross ref name,,file name}
+coverage_macro.texi(,694) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{node,cross ref name,,,manual}
+coverage_macro.texi(,695) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{node,cross ref name,title,file name}
+coverage_macro.texi(,696) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{node,cross ref name,title,,manual}
+coverage_macro.texi(,697) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{node,cross ref name,title, file name, manual}
+coverage_macro.texi(,698) @code{@@address@hidden,,title,file address@hidden 
@ref{node,,title,file name}
+coverage_macro.texi(,699) @code{@@address@hidden,,title,,address@hidden 
@ref{node,,title,,manual}
+coverage_macro.texi(,700) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,701) @code{@@address@hidden,,title, file name, 
address@hidden @ref{node,,title, file name, manual}
+coverage_macro.texi(,702) @code{@@address@hidden,,,file name,address@hidden 
@ref{node,,,file name,manual}
+coverage_macro.texi(,703) @code{@@address@hidden,cross ref name,title,@}} 
@ref{,cross ref name,title,}
+coverage_macro.texi(,704) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{,cross ref name,,file name}
+coverage_macro.texi(,705) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{,cross ref name,,,manual}
+coverage_macro.texi(,706) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{,cross ref name,title,file name}
+coverage_macro.texi(,707) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{,cross ref name,title,,manual}
+coverage_macro.texi(,708) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{,cross ref name,title, file name, manual}
+coverage_macro.texi(,709) @code{@@address@hidden,,title,file address@hidden 
@ref{,,title,file name}
+coverage_macro.texi(,710) @code{@@address@hidden,,title,,address@hidden 
@ref{,,title,,manual}
+coverage_macro.texi(,711) @code{@@address@hidden,,title, file name, 
address@hidden @ref{,,title, file name, manual}
+coverage_macro.texi(,712) @code{@@address@hidden,,,file name,address@hidden 
@ref{,,,file name,manual}
+coverage_macro.texi(,713) 
+coverage_macro.texi(,714) @code{@@address@hidden,cross ref name @}} 
@inforef{,cross ref name }
+coverage_macro.texi(,715) @code{@@address@hidden,,file address@hidden 
@inforef{,,file name}
+coverage_macro.texi(,716) @code{@@address@hidden,cross ref name, file 
address@hidden @inforef{,cross ref name, file name}
+coverage_macro.texi(,717) @code{@@address@hidden@}} @inforef{}
+coverage_macro.texi(,718) 
+coverage_macro.texi(,719) @end ifset
+coverage_macro.texi(,720) 
+coverage_macro.texi(,721) @end macro
 formatting.texi(,15) 
 formatting.texi(,20) 
 formatting.texi(,33) 

Index: coverage/res_info/texi_formatting/formatting.passtexi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_info/texi_formatting/formatting.passtexi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_info/texi_formatting/formatting.passtexi       21 Jun 2009 
09:25:42 -0000      1.1
+++ coverage/res_info/texi_formatting/formatting.passtexi       2 Aug 2009 
13:12:05 -0000       1.2
@@ -10,6 +10,727 @@
 formatting.texi(,11) * description:chapter2.   Chapter 2
 formatting.texi(,12) @end menu
 formatting.texi(,13) 
+coverage_macro.texi(,1) @macro mymacro
+coverage_macro.texi(,2) 
+coverage_macro.texi(,3) <
+coverage_macro.texi(,4) >
+coverage_macro.texi(,5) "
+coverage_macro.texi(,6) &
+coverage_macro.texi(,7) '
+coverage_macro.texi(,8) `
+coverage_macro.texi(,9) 
+coverage_macro.texi(,10) ``simple-double--three---four----''@*
+coverage_macro.texi(,11) code: @code{``simple-double--three---four----''} @*
+coverage_macro.texi(,12) asis: @asis{``simple-double--three---four----''} @*
+coverage_macro.texi(,13) strong: @strong{``simple-double--three---four----''} 
@*
+coverage_macro.texi(,14) kbd: @kbd{``simple-double--three---four----''} @*
+coverage_macro.texi(,15) 
+coverage_macro.texi(,16) address@hidden@w{}-three---four----'@w{}'@*
+coverage_macro.texi(,17) 
+coverage_macro.texi(,18) @cindex --option
+coverage_macro.texi(,19) @cindex ``
+coverage_macro.texi(,20) @findex ``
+coverage_macro.texi(,21) @findex --foption
+coverage_macro.texi(,22) 
+coverage_macro.texi(,23) @@"u @"u 
+coverage_macro.texi(,24) @@"@address@hidden @"{U} 
+coverage_macro.texi(,25) @@~n @~n
+coverage_macro.texi(,26) @@^a @^a
+coverage_macro.texi(,27) @@'e @'e
+coverage_macro.texi(,28) @@=o @=o
+coverage_macro.texi(,29) @@`i @`i
+coverage_macro.texi(,30) @@'@address@hidden @'{e}
+coverage_macro.texi(,31) @@'@{@@address@hidden@address@hidden @'address@hidden 
+coverage_macro.texi(,32) @@address@hidden@} @dotless{i}
+coverage_macro.texi(,33) @@address@hidden@} @dotless{j}
+coverage_macro.texi(,34) @@address@hidden@@address@hidden @address@hidden 
+coverage_macro.texi(,35) @@address@hidden@} @l{}
+coverage_macro.texi(,36) @@,@{@@'address@hidden @,{@'C}
+coverage_macro.texi(,37) @@,c @,c
+coverage_macro.texi(,38) @@,c@@"u @,c@"u @*
+coverage_macro.texi(,39) 
+coverage_macro.texi(,40) @@* @*
+coverage_macro.texi(,41) @@ followed by a space
+coverage_macro.texi(,42) @ 
+coverage_macro.texi(,43) @@ followed by a tab
+coverage_macro.texi(,44) @     
+coverage_macro.texi(,45) @@ followed by a new line
+coverage_macro.texi(,46) @
+coverage_macro.texi(,47) @code{@@-} @-
+coverage_macro.texi(,48) @code{@@|} @|
+coverage_macro.texi(,49) @code{@@:} @:
+coverage_macro.texi(,50) @code{@@!} @!
+coverage_macro.texi(,51) @code{@@?} @?
+coverage_macro.texi(,52) @code{@@.} @.
+coverage_macro.texi(,53) @code{@@@@} @@
+coverage_macro.texi(,54) @code{@@@}} @}
+coverage_macro.texi(,55) @code{@@@{} @{
+coverage_macro.texi(,56) @code{@@/} @/
+coverage_macro.texi(,57) 
+coverage_macro.texi(,58) foo vs.@: bar. 
+coverage_macro.texi(,59) colon :@:And something else.
+coverage_macro.texi(,60) semi colon ;@:.
+coverage_macro.texi(,61) And ? ?@:.
+coverage_macro.texi(,62) Now ! !@:@@
+coverage_macro.texi(,63) but , ,@:
+coverage_macro.texi(,64) 
+coverage_macro.texi(,65) @@TeX @TeX{}
+coverage_macro.texi(,66) @@LaTeX @LaTeX{}
+coverage_macro.texi(,67) @@bullet @bullet{}
+coverage_macro.texi(,68) @@copyright @copyright{}
+coverage_macro.texi(,69) @@dots @dots{}
+coverage_macro.texi(,70) @@enddots @enddots{}
+coverage_macro.texi(,71) @@equiv @equiv{}
+coverage_macro.texi(,72) @@error @error{}
+coverage_macro.texi(,73) @@expansion @expansion{}
+coverage_macro.texi(,74) @@minus @minus{}
+coverage_macro.texi(,75) @@point @point{}
+coverage_macro.texi(,76) @@print @print{}
+coverage_macro.texi(,77) @@result @result{}
+coverage_macro.texi(,78) @@today @today{}
+coverage_macro.texi(,79) @@aa @aa{}
+coverage_macro.texi(,80) @@AA @AA{}
+coverage_macro.texi(,81) @@ae @ae{}
+coverage_macro.texi(,82) @@oe @oe{}
+coverage_macro.texi(,83) @@AE @AE{}
+coverage_macro.texi(,84) @@OE @OE{}
+coverage_macro.texi(,85) @@o @o{}
+coverage_macro.texi(,86) @@O @O{}
+coverage_macro.texi(,87) @@ss @ss{}
+coverage_macro.texi(,88) @@l @l{}
+coverage_macro.texi(,89) @@L @L{}
+coverage_macro.texi(,90) @@DH @DH{}
+coverage_macro.texi(,91) @@TH @TH{}
+coverage_macro.texi(,92) @@dh @dh{}
+coverage_macro.texi(,93) @@th @th{}
+coverage_macro.texi(,94) @@exclamdown @exclamdown{}
+coverage_macro.texi(,95) @@questiondown @questiondown{}
+coverage_macro.texi(,96) @@pounds @pounds{}
+coverage_macro.texi(,97) @@registeredsymbol @registeredsymbol{}
+coverage_macro.texi(,98) @@ordf @ordf{}
+coverage_macro.texi(,99) @@ordm @ordm{}
+coverage_macro.texi(,100) @@comma @comma{}
+coverage_macro.texi(,101) @@quotedblleft @quotedblleft{}
+coverage_macro.texi(,102) @@quotedblright @quotedblright{}
+coverage_macro.texi(,103) @@quoteleft @quoteleft{}
+coverage_macro.texi(,104) @@quoteright @quoteright{}
+coverage_macro.texi(,105) @@quotedblbase @quotedblbase{}
+coverage_macro.texi(,106) @@quotesinglbase @quotesinglbase{}
+coverage_macro.texi(,107) @@guillemetleft @guillemetleft{}
+coverage_macro.texi(,108) @@guillemetright @guillemetright{}
+coverage_macro.texi(,109) @@guillemotleft @guillemotleft{}
+coverage_macro.texi(,110) @@guillemotright @guillemotright{}
+coverage_macro.texi(,111) @@guilsinglleft @guilsinglleft{}
+coverage_macro.texi(,112) @@guilsinglright @guilsinglright{}
+coverage_macro.texi(,113) @@textdegree @textdegree{}
+coverage_macro.texi(,114) @@euro @euro{}
+coverage_macro.texi(,115) @@arrow @arrow{}
+coverage_macro.texi(,116) @@leq @leq{}
+coverage_macro.texi(,117) @@geq @geq{}
+coverage_macro.texi(,118) 
+coverage_macro.texi(,119) @code{@@address@hidden,an address@hidden 
@acronym{--a,an accronym}
+coverage_macro.texi(,120) @code{@@address@hidden@}} @acronym{--a}
+coverage_macro.texi(,121) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude Autonome @}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
+coverage_macro.texi(,122) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,123) @code{@@address@hidden@}} @asis{--a}
+coverage_macro.texi(,124) @code{@@address@hidden@}} @b{--a}
+coverage_macro.texi(,125) @code{@@address@hidden@}} @cite{--a}
+coverage_macro.texi(,126) @code{@@address@hidden@}} @code{--a}
+coverage_macro.texi(,127) @code{@@address@hidden@}} @command{--a}
+coverage_macro.texi(,128) @code{@@address@hidden@}} @ctrl{--a}
+coverage_macro.texi(,129) @code{@@address@hidden@}} @dfn{--a}
+coverage_macro.texi(,130) @code{@@address@hidden@}} @dmn{--a}
+coverage_macro.texi(,131) @code{@@address@hidden,address@hidden @email{--a,--b}
+coverage_macro.texi(,132) @code{@@address@hidden,address@hidden @email{,--b}
+coverage_macro.texi(,133) @code{@@address@hidden@}} @email{--a}
+coverage_macro.texi(,134) @code{@@address@hidden@}} @emph{--a}
+coverage_macro.texi(,135) @code{@@address@hidden@}} @env{--a}
+coverage_macro.texi(,136) @code{@@address@hidden@}} @file{--a}
+coverage_macro.texi(,137) @code{@@address@hidden@}} @i{--a}
+coverage_macro.texi(,138) @code{@@address@hidden@}} @kbd{--a}
+coverage_macro.texi(,139) @code{@@address@hidden@}} @key{--a}
+coverage_macro.texi(,140) @code{@@address@hidden 
@address@hidden@address@hidden@address@hidden @@address@hidden@address@hidden 
@math{--a {\\frac{1}{2}} @minus{}}
+coverage_macro.texi(,141) @code{@@address@hidden@}} @option{--a}
+coverage_macro.texi(,142) @code{@@address@hidden@}} @r{--a}
+coverage_macro.texi(,143) @code{@@address@hidden@}} @samp{--a}
+coverage_macro.texi(,144) @code{@@address@hidden@}} @sc{--a}
+coverage_macro.texi(,145) @code{@@address@hidden@}} @strong{--a}
+coverage_macro.texi(,146) @code{@@address@hidden@}} @t{--a}
+coverage_macro.texi(,147) @code{@@address@hidden@}} @sansserif{--a}
+coverage_macro.texi(,148) @code{@@address@hidden@}} @titlefont{--a}
+coverage_macro.texi(,149) @code{@@address@hidden@}} @indicateurl{--a}
+coverage_macro.texi(,150) @code{@@address@hidden,address@hidden @uref{--a,--b}
+coverage_macro.texi(,151) @code{@@address@hidden@}} @uref{--a}
+coverage_macro.texi(,152) @code{@@address@hidden,address@hidden @uref{,--b}
+coverage_macro.texi(,153) @code{@@address@hidden,--b,address@hidden 
@uref{--a,--b,--c}
+coverage_macro.texi(,154) @code{@@address@hidden,--b,address@hidden 
@uref{,--b,--c}
+coverage_macro.texi(,155) @code{@@address@hidden,,address@hidden 
@uref{--a,,--c}
+coverage_macro.texi(,156) @code{@@address@hidden,,address@hidden @uref{,,--c}
+coverage_macro.texi(,157) @code{@@address@hidden,address@hidden @url{--a,--b}
+coverage_macro.texi(,158) @code{@@address@hidden,@}} @url{--a,}
+coverage_macro.texi(,159) @code{@@address@hidden,address@hidden @url{,--b}
+coverage_macro.texi(,160) @code{@@address@hidden@}} @var{--a}
+coverage_macro.texi(,161) @code{@@address@hidden:--a:@}} @verb{:--a:}
+coverage_macro.texi(,162) @code{@@address@hidden:a  < & @@ % " --    b:@}} 
@verb{:a  < & @ % " --    b:}
+coverage_macro.texi(,163) @code{@@address@hidden@}} @w{}
+coverage_macro.texi(,164) @code{@@address@hidden@}} @H{a}
+coverage_macro.texi(,165) @code{@@address@hidden@}} @H{--a}
+coverage_macro.texi(,166) @code{@@address@hidden@}} @dotaccent{a}
+coverage_macro.texi(,167) @code{@@address@hidden@}} @dotaccent{--a}
+coverage_macro.texi(,168) @code{@@address@hidden@}} @ringaccent{a}
+coverage_macro.texi(,169) @code{@@address@hidden@}} @ringaccent{--a}
+coverage_macro.texi(,170) @code{@@address@hidden@}} @tieaccent{a}
+coverage_macro.texi(,171) @code{@@address@hidden@}} @tieaccent{--a}
+coverage_macro.texi(,172) @code{@@address@hidden@}} @u{a}
+coverage_macro.texi(,173) @code{@@address@hidden@}} @u{--a}
+coverage_macro.texi(,174) @code{@@address@hidden@}} @ubaraccent{a}
+coverage_macro.texi(,175) @code{@@address@hidden@}} @ubaraccent{--a}
+coverage_macro.texi(,176) @code{@@address@hidden@}} @udotaccent{a}
+coverage_macro.texi(,177) @code{@@address@hidden@}} @udotaccent{--a}
+coverage_macro.texi(,178) @code{@@address@hidden@}} @v{a}
+coverage_macro.texi(,179) @code{@@address@hidden@}} @v{--a}
+coverage_macro.texi(,180) @code{@@,@address@hidden @,{c}
+coverage_macro.texi(,181) @code{@@,@address@hidden @,{--c}
+coverage_macro.texi(,182) @ifset texi2html
+coverage_macro.texi(,183) @code{@@address@hidden@}} @ogonek{a}
+coverage_macro.texi(,184) @code{@@address@hidden@}} @ogonek{--a}
+coverage_macro.texi(,185) @end ifset
+coverage_macro.texi(,186) @code{@@address@hidden address@hidden @footnote{in 
footnote}
+coverage_macro.texi(,187) @code{@@address@hidden address@hidden @footnote{in 
footnote2}
+coverage_macro.texi(,188) 
+coverage_macro.texi(,189) @code{@@address@hidden@}} @image{f--ile}
+coverage_macro.texi(,190) @code{@@address@hidden,address@hidden 
@image{f--ile,l--i}
+coverage_macro.texi(,191) @code{@@address@hidden,,address@hidden 
@image{f--ile,,l--e}
+coverage_macro.texi(,192) @code{@@address@hidden,,,address@hidden 
@image{f--ile,,,alt}
+coverage_macro.texi(,193) @code{@@address@hidden,,,,address@hidden 
@image{f--ile,,,,e--xt}
+coverage_macro.texi(,194) @code{@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
+coverage_macro.texi(,195) @code{@@address@hidden,aze,,address@hidden 
@image{f-ile,aze,,a--lt}
+coverage_macro.texi(,196) 
@code{@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden 
address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+coverage_macro.texi(,197) 
+coverage_macro.texi(,198) @sp 2
+coverage_macro.texi(,199) 
+coverage_macro.texi(,200) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,201) @clickstyle @result
+coverage_macro.texi(,202) After clickstyle @result{}
+coverage_macro.texi(,203) @code{@@address@hidden @@address@hidden@} 
address@hidden @clicksequence{click @click{} A}
+coverage_macro.texi(,204) @clickstyle @arrow
+coverage_macro.texi(,205) 
+coverage_macro.texi(,206) @quotation 
+coverage_macro.texi(,207) A quot---ation
+coverage_macro.texi(,208) @end quotation
+coverage_macro.texi(,209) 
+coverage_macro.texi(,210) @quotation Note
+coverage_macro.texi(,211) A Note
+coverage_macro.texi(,212) @end quotation
+coverage_macro.texi(,213) 
+coverage_macro.texi(,214) @quotation note
+coverage_macro.texi(,215) A note
+coverage_macro.texi(,216) @end quotation
+coverage_macro.texi(,217) 
+coverage_macro.texi(,218) @quotation Caution
+coverage_macro.texi(,219) Caution
+coverage_macro.texi(,220) @end quotation
+coverage_macro.texi(,221) 
+coverage_macro.texi(,222) @quotation Important
+coverage_macro.texi(,223) Important
+coverage_macro.texi(,224) @end quotation
+coverage_macro.texi(,225) 
+coverage_macro.texi(,226) @quotation Tip
+coverage_macro.texi(,227) a Tip
+coverage_macro.texi(,228) @end quotation
+coverage_macro.texi(,229) 
+coverage_macro.texi(,230) @quotation Warning
+coverage_macro.texi(,231) a Warning.
+coverage_macro.texi(,232) @end quotation
+coverage_macro.texi(,233) 
+coverage_macro.texi(,234) @quotation something @'e @TeX{}
+coverage_macro.texi(,235) The something @'e @TeX{} is here.
+coverage_macro.texi(,236) @end quotation
+coverage_macro.texi(,237) 
+coverage_macro.texi(,238) @quotation @@ at the end of line @
+coverage_macro.texi(,239) A @@ at the end of the @@quotation line.
+coverage_macro.texi(,240) @end quotation
+coverage_macro.texi(,241) 
+coverage_macro.texi(,242) @quotation something, other thing
+coverage_macro.texi(,243) something, other thing
+coverage_macro.texi(,244) @end quotation
+coverage_macro.texi(,245) 
+coverage_macro.texi(,246) @quotation Note, the note
+coverage_macro.texi(,247) Note, the note
+coverage_macro.texi(,248) @end quotation
+coverage_macro.texi(,249) 
+coverage_macro.texi(,250) @quotation
+coverage_macro.texi(,251) @end quotation
+coverage_macro.texi(,252) 
+coverage_macro.texi(,253) @quotation Empty
+coverage_macro.texi(,254) @end quotation
+coverage_macro.texi(,255) 
+coverage_macro.texi(,256) @quotation @asis{}
+coverage_macro.texi(,257) @end quotation
+coverage_macro.texi(,258) 
+coverage_macro.texi(,259) @quotation @*
+coverage_macro.texi(,260) @end quotation
+coverage_macro.texi(,261) 
+coverage_macro.texi(,262) @ifset texi2html
+coverage_macro.texi(,263) @smallquotation 
+coverage_macro.texi(,264) A small quot---ation
+coverage_macro.texi(,265) @end smallquotation
+coverage_macro.texi(,266) 
+coverage_macro.texi(,267) @smallquotation Note
+coverage_macro.texi(,268) A small Note
+coverage_macro.texi(,269) @end smallquotation
+coverage_macro.texi(,270) 
+coverage_macro.texi(,271) @smallquotation something, other thing
+coverage_macro.texi(,272) something, other thing
+coverage_macro.texi(,273) @end smallquotation
+coverage_macro.texi(,274) @end ifset
+coverage_macro.texi(,275) 
+coverage_macro.texi(,276) @itemize
+coverage_macro.texi(,277) @item i--temize
+coverage_macro.texi(,278) @end itemize
+coverage_macro.texi(,279) 
+coverage_macro.texi(,280) @itemize +
+coverage_macro.texi(,281) @item i--tem +
+coverage_macro.texi(,282) @end itemize
+coverage_macro.texi(,283) 
+coverage_macro.texi(,284) @itemize @bullet
+coverage_macro.texi(,285) @item b--ullet
+coverage_macro.texi(,286) @end itemize
+coverage_macro.texi(,287) 
+coverage_macro.texi(,288) @itemize @minus
+coverage_macro.texi(,289) @item minu--s
+coverage_macro.texi(,290) @end itemize
+coverage_macro.texi(,291) 
+coverage_macro.texi(,292) @itemize @emph
+coverage_macro.texi(,293) @item e--mph item
+coverage_macro.texi(,294) @end itemize
+coverage_macro.texi(,295) 
+coverage_macro.texi(,296) @itemize @emph{after emph}
+coverage_macro.texi(,297) @c comment in itemize
+coverage_macro.texi(,298) @item e--mph item
+coverage_macro.texi(,299) @end itemize
+coverage_macro.texi(,300) 
+coverage_macro.texi(,301) @itemize @bullet{} a--n itemize line
+coverage_macro.texi(,302) @cindex index entry within itemize
+coverage_macro.texi(,303) @item i--tem 1
+coverage_macro.texi(,304) @item i--tem 2
+coverage_macro.texi(,305) @end itemize
+coverage_macro.texi(,306) 
+coverage_macro.texi(,307) @enumerate
+coverage_macro.texi(,308) @item e--numerate
+coverage_macro.texi(,309) @end enumerate
+coverage_macro.texi(,310) 
+coverage_macro.texi(,311) @multitable @columnfractions 6 7
+coverage_macro.texi(,312) @headitem mu--ltitable headitem @tab another tab
+coverage_macro.texi(,313) @item mu--ltitable item @tab multitable tab
+coverage_macro.texi(,314) @c comment in multitable
+coverage_macro.texi(,315) @item mu--ltitable item 2 @tab multitable tab 2
+coverage_macro.texi(,316) @cindex index entry within multitable
+coverage_macro.texi(,317) @item lone mu--ltitable item
+coverage_macro.texi(,318) @end multitable
+coverage_macro.texi(,319) 
+coverage_macro.texi(,320) @multitable {truc} {bidule}
+coverage_macro.texi(,321) @item truc @tab bidule
+coverage_macro.texi(,322) @end multitable
+coverage_macro.texi(,323) 
+coverage_macro.texi(,324) @example
+coverage_macro.texi(,325) e--xample  some
+coverage_macro.texi(,326)    text
+coverage_macro.texi(,327) @end example
+coverage_macro.texi(,328) 
+coverage_macro.texi(,329) @smallexample
+coverage_macro.texi(,330) s--mallexample
+coverage_macro.texi(,331) @end smallexample
+coverage_macro.texi(,332) 
+coverage_macro.texi(,333) @display 
+coverage_macro.texi(,334) d--isplay
+coverage_macro.texi(,335) @end display
+coverage_macro.texi(,336) 
+coverage_macro.texi(,337) @smalldisplay
+coverage_macro.texi(,338) s--malldisplay
+coverage_macro.texi(,339) @end smalldisplay
+coverage_macro.texi(,340) 
+coverage_macro.texi(,341) @lisp
+coverage_macro.texi(,342) l--isp
+coverage_macro.texi(,343) @end lisp
+coverage_macro.texi(,344) 
+coverage_macro.texi(,345) @smalllisp
+coverage_macro.texi(,346) s--malllisp
+coverage_macro.texi(,347) @end smalllisp
+coverage_macro.texi(,348) 
+coverage_macro.texi(,349) @format
+coverage_macro.texi(,350) f--ormat
+coverage_macro.texi(,351) @end format
+coverage_macro.texi(,352) 
+coverage_macro.texi(,353) @smallformat
+coverage_macro.texi(,354) s--mallformat
+coverage_macro.texi(,355) @end smallformat
+coverage_macro.texi(,356) 
+coverage_macro.texi(,357) @deffn c--ategory d--effn_name a--rguments...
+coverage_macro.texi(,358) d--effn
+coverage_macro.texi(,359) @end deffn
+coverage_macro.texi(,360) 
+coverage_macro.texi(,361) @deffn cate--gory de--ffn_name ar--guments @
+coverage_macro.texi(,362)    more args @* even more so
+coverage_macro.texi(,363) def--fn
+coverage_macro.texi(,364) @end deffn
+coverage_macro.texi(,365)  
+coverage_macro.texi(,366) @deffn fset @var{i} a g
+coverage_macro.texi(,367) @cindex index entry within deffn
+coverage_macro.texi(,368) @deffnx {cmde} truc {}
+coverage_macro.texi(,369) @deffnx Command {log trap} {}
+coverage_macro.texi(,370) @deffnx Command { log trap1} {}  
+coverage_macro.texi(,371) @deffnx Command {log trap2 } {}
+coverage_macro.texi(,372) @deffnx cmde @b{id ule} truc
+coverage_macro.texi(,373) @deffnx cmde2 @b{id @samp{i} ule} truc
+coverage_macro.texi(,374) @deffnx @b{id @samp{i} ule}    
+coverage_macro.texi(,375) @deffnx 
+coverage_macro.texi(,376) @deffnx aaa
+coverage_macro.texi(,377) @deffnx {} {}
+coverage_macro.texi(,378) @deffnx{}
+coverage_macro.texi(,379) @deffnx{} machin
+coverage_macro.texi(,380) @deffnx{} {bidule machin}
+coverage_macro.texi(,381) @deffnx{truc} machin
+coverage_macro.texi(,382) @deffnx{truc} { }
+coverage_macro.texi(,383) @deffnx{truc} followed by a comment
+coverage_macro.texi(,384) @c comment
+coverage_macro.texi(,385) @deffnx{truc}
+coverage_macro.texi(,386) @deffnx{} {}
+coverage_macro.texi(,387) @deffnx {truc} a b c d e @b{f g} {h i}
+coverage_macro.texi(,388) @deffnx {truc} deffnx before end deffn
+coverage_macro.texi(,389) @end deffn
+coverage_macro.texi(,390) 
+coverage_macro.texi(,391) @deffn empty deffn
+coverage_macro.texi(,392) @end deffn
+coverage_macro.texi(,393) 
+coverage_macro.texi(,394) @deffn empty deffn with deffnx
+coverage_macro.texi(,395) @c comment between deffn and deffnx
+coverage_macro.texi(,396) @deffnx empty deffnx
+coverage_macro.texi(,397) @end deffn
+coverage_macro.texi(,398) 
+coverage_macro.texi(,399) @deffn fset @var{i} a g
+coverage_macro.texi(,400) @deffnx {cmde} truc {}
+coverage_macro.texi(,401) @c comment
+coverage_macro.texi(,402) text in def item for second def item
+coverage_macro.texi(,403) @end deffn
+coverage_macro.texi(,404) 
+coverage_macro.texi(,405) @defvr c--ategory d--efvr_name
+coverage_macro.texi(,406) d--efvr
+coverage_macro.texi(,407) @end defvr
+coverage_macro.texi(,408) 
+coverage_macro.texi(,409) @deftypefn c--ategory t--ype d--eftypefn_name 
a--rguments...
+coverage_macro.texi(,410) d--eftypefn
+coverage_macro.texi(,411) @end deftypefn
+coverage_macro.texi(,412) 
+coverage_macro.texi(,413) @deftypeop c--ategory c--lass t--ype 
d--eftypeop_name a--rguments...
+coverage_macro.texi(,414) d--eftypeop
+coverage_macro.texi(,415) @end deftypeop
+coverage_macro.texi(,416) 
+coverage_macro.texi(,417) @deftypevr c--ategory t--ype d--eftypevr_name
+coverage_macro.texi(,418) d--eftypevr
+coverage_macro.texi(,419) @end deftypevr
+coverage_macro.texi(,420) 
+coverage_macro.texi(,421) @defcv c--ategory c--lass d--efcv_name
+coverage_macro.texi(,422) d--efcv
+coverage_macro.texi(,423) @end defcv
+coverage_macro.texi(,424) 
+coverage_macro.texi(,425) @defop c--ategory c--lass d--efop_name a--rguments...
+coverage_macro.texi(,426) d--efop
+coverage_macro.texi(,427) @end defop
+coverage_macro.texi(,428) 
+coverage_macro.texi(,429) @deftp c--ategory d--eftp_name a--ttributes...
+coverage_macro.texi(,430) d--eftp
+coverage_macro.texi(,431) @end deftp
+coverage_macro.texi(,432) 
+coverage_macro.texi(,433) @defun d--efun_name a--rguments...
+coverage_macro.texi(,434) d--efun
+coverage_macro.texi(,435) @end defun
+coverage_macro.texi(,436) 
+coverage_macro.texi(,437) @defmac d--efmac_name a--rguments...
+coverage_macro.texi(,438) d--efmac
+coverage_macro.texi(,439) @end defmac
+coverage_macro.texi(,440) 
+coverage_macro.texi(,441) @defspec d--efspec_name a--rguments...
+coverage_macro.texi(,442) d--efspec
+coverage_macro.texi(,443) @end defspec
+coverage_macro.texi(,444) 
+coverage_macro.texi(,445) @defvar d--efvar_name argvar argvar1
+coverage_macro.texi(,446) d--efvar
+coverage_macro.texi(,447) @end defvar
+coverage_macro.texi(,448) 
+coverage_macro.texi(,449) @defopt d--efopt_name
+coverage_macro.texi(,450) d--efopt
+coverage_macro.texi(,451) @end defopt
+coverage_macro.texi(,452) 
+coverage_macro.texi(,453) @deftypefun t--ype d--eftypefun_name a--rguments...
+coverage_macro.texi(,454) d--eftypefun
+coverage_macro.texi(,455) @end deftypefun
+coverage_macro.texi(,456) 
+coverage_macro.texi(,457) @deftypevar t--ype d--eftypevar_name
+coverage_macro.texi(,458) d--eftypevar
+coverage_macro.texi(,459) @end deftypevar
+coverage_macro.texi(,460) 
+coverage_macro.texi(,461) @defivar c--lass d--efivar_name
+coverage_macro.texi(,462) d--efivar
+coverage_macro.texi(,463) @end defivar
+coverage_macro.texi(,464) 
+coverage_macro.texi(,465) @deftypeivar c--lass t--ype d--eftypeivar_name
+coverage_macro.texi(,466) d--eftypeivar
+coverage_macro.texi(,467) @end deftypeivar
+coverage_macro.texi(,468) 
+coverage_macro.texi(,469) @defmethod c--lass d--efmethod_name a--rguments...
+coverage_macro.texi(,470) d--efmethod
+coverage_macro.texi(,471) @end defmethod
+coverage_macro.texi(,472) 
+coverage_macro.texi(,473) @deftypemethod c--lass t--ype d--eftypemethod_name 
a--rguments...
+coverage_macro.texi(,474) d--eftypemethod
+coverage_macro.texi(,475) @end deftypemethod
+coverage_macro.texi(,476) 
+coverage_macro.texi(,477) @code{@@address@hidden@@@@, cross r---ef name@@@@, 
t---itle@@@@, file n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross 
r---ef name@@, t---itle@@, file n---ame@@, ma---nual@@}.
+coverage_macro.texi(,478) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @ref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,479) @code{@@address@hidden, cross ref name, title, file 
name, address@hidden @pxref{chapter, cross ref name, title, file name, manual}
+coverage_macro.texi(,480) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,481) 
+coverage_macro.texi(,482) @code{@@address@hidden@}} @ref{chapter}
+coverage_macro.texi(,483) @code{@@address@hidden@}} @xref{chapter}.
+coverage_macro.texi(,484) @code{@@address@hidden@}} @pxref{chapter}
+coverage_macro.texi(,485) 
@code{@@address@hidden@@address@hidden@address@hidden @address@hidden
+coverage_macro.texi(,486) 
+coverage_macro.texi(,487) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,488) ref, a comma@@address@hidden@} in title, a 
comma@@address@hidden@} in file, a @@address@hidden@} in manual name @}}
+coverage_macro.texi(,489) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,490) ref, a address@hidden in title, a address@hidden in 
file, a @comma{} in manual name }
+coverage_macro.texi(,491) 
+coverage_macro.texi(,492) @code{@@address@hidden,cross ref address@hidden 
@ref{chapter,cross ref name}
+coverage_macro.texi(,493) @code{@@address@hidden,,address@hidden 
@ref{chapter,,title}
+coverage_macro.texi(,494) @code{@@address@hidden,,,file address@hidden 
@ref{chapter,,,file name}
+coverage_macro.texi(,495) @code{@@address@hidden,,,,address@hidden 
@ref{chapter,,,,manual}
+coverage_macro.texi(,496) @code{@@address@hidden,cross ref name,title,@}} 
@ref{chapter,cross ref name,title,}
+coverage_macro.texi(,497) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{chapter,cross ref name,,file name}
+coverage_macro.texi(,498) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{chapter,cross ref name,,,manual}
+coverage_macro.texi(,499) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{chapter,cross ref name,title,file name}
+coverage_macro.texi(,500) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{chapter,cross ref name,title,,manual}
+coverage_macro.texi(,501) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{chapter,cross ref name,title, file name, manual}
+coverage_macro.texi(,502) @code{@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
+coverage_macro.texi(,503) @code{@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
+coverage_macro.texi(,504) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,505) @code{@@address@hidden,,,file name,address@hidden 
@ref{chapter,,,file name,manual}
+coverage_macro.texi(,506) 
+coverage_macro.texi(,507) 
+coverage_macro.texi(,508) @code{@@address@hidden(pman)anode,cross ref 
address@hidden @ref{(pman)anode,cross ref name}
+coverage_macro.texi(,509) @code{@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
+coverage_macro.texi(,510) @code{@@address@hidden(pman)anode,,,file 
address@hidden @ref{(pman)anode,,,file name}
+coverage_macro.texi(,511) @code{@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
+coverage_macro.texi(,512) @code{@@address@hidden(pman)anode,cross ref 
name,title,@}} @ref{(pman)anode,cross ref name,title,}
+coverage_macro.texi(,513) @code{@@address@hidden(pman)anode,cross ref 
name,,file address@hidden @ref{(pman)anode,cross ref name,,file name}
+coverage_macro.texi(,514) @code{@@address@hidden(pman)anode,cross ref 
name,,,address@hidden @ref{(pman)anode,cross ref name,,,manual}
+coverage_macro.texi(,515) @code{@@address@hidden(pman)anode,cross ref 
name,title,file address@hidden @ref{(pman)anode,cross ref name,title,file name}
+coverage_macro.texi(,516) @code{@@address@hidden(pman)anode,cross ref 
name,title,,address@hidden @ref{(pman)anode,cross ref name,title,,manual}
+coverage_macro.texi(,517) @code{@@address@hidden(pman)anode,cross ref 
name,title, file name, address@hidden @ref{(pman)anode,cross ref name,title, 
file name, manual}
+coverage_macro.texi(,518) @code{@@address@hidden(pman)anode,,title,file 
address@hidden @ref{(pman)anode,,title,file name}
+coverage_macro.texi(,519) 
@code{@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
+coverage_macro.texi(,520) @code{@@address@hidden(pman)anode,,title, file name, 
address@hidden @ref{(pman)anode,,title, file name, manual}
+coverage_macro.texi(,521) @code{@@address@hidden(pman)anode,,,file 
name,address@hidden @ref{(pman)anode,,,file name,manual}
+coverage_macro.texi(,522) 
+coverage_macro.texi(,523) 
+coverage_macro.texi(,524) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{chapter, cross ref name, file name}
+coverage_macro.texi(,525) @code{@@address@hidden@}} @inforef{chapter}
+coverage_macro.texi(,526) @code{@@address@hidden, cross ref address@hidden 
@inforef{chapter, cross ref name}
+coverage_macro.texi(,527) @code{@@address@hidden,,file address@hidden 
@inforef{chapter,,file name}
+coverage_macro.texi(,528) @code{@@address@hidden, cross ref name, file 
address@hidden @inforef{node, cross ref name, file name}
+coverage_macro.texi(,529) @code{@@address@hidden@}} @inforef{node}
+coverage_macro.texi(,530) @code{@@address@hidden, cross ref address@hidden 
@inforef{node, cross ref name}
+coverage_macro.texi(,531) @code{@@address@hidden,,file address@hidden 
@inforef{node,,file name}
+coverage_macro.texi(,532) @code{@@address@hidden, cross ref name, file name, 
spurious address@hidden @inforef{chapter, cross ref name, file name, spurious 
arg}
+coverage_macro.texi(,533) 
+coverage_macro.texi(,534) @code{@@address@hidden@@address@hidden@}ion, a 
@@address@hidden@} in cross
+coverage_macro.texi(,535) ref, a comma@@address@hidden@} in address@hidden
+coverage_macro.texi(,536) @address@hidden, a @comma{} in cross
+coverage_macro.texi(,537) ref, a address@hidden in file}
+coverage_macro.texi(,538) 
+coverage_macro.texi(,539) 
+coverage_macro.texi(,540) @table @bullet
+coverage_macro.texi(,541) @c comment in table
+coverage_macro.texi(,542) @item a
+coverage_macro.texi(,543) l--ine
+coverage_macro.texi(,544) @end table
+coverage_macro.texi(,545) 
+coverage_macro.texi(,546) @vtable @asis
+coverage_macro.texi(,547) @item a
+coverage_macro.texi(,548) @c comment between item and itemx
+coverage_macro.texi(,549) @itemx b
+coverage_macro.texi(,550) l--ine
+coverage_macro.texi(,551) @end vtable
+coverage_macro.texi(,552) 
+coverage_macro.texi(,553) @ftable @minus
+coverage_macro.texi(,554) @item a
+coverage_macro.texi(,555) @cindex index entry between item and itemx
+coverage_macro.texi(,556) @itemx b
+coverage_macro.texi(,557) l--ine
+coverage_macro.texi(,558) @end ftable
+coverage_macro.texi(,559) 
+coverage_macro.texi(,560) @cartouche
+coverage_macro.texi(,561) c--artouche
+coverage_macro.texi(,562) @end cartouche
+coverage_macro.texi(,563) 
+coverage_macro.texi(,564) @flushleft
+coverage_macro.texi(,565) f--lushleft
+coverage_macro.texi(,566) @end flushleft
+coverage_macro.texi(,567) 
+coverage_macro.texi(,568) @flushright
+coverage_macro.texi(,569) f--lushright
+coverage_macro.texi(,570) @end flushright
+coverage_macro.texi(,571) 
+coverage_macro.texi(,572) @center ce--ntered line
+coverage_macro.texi(,573) 
+coverage_macro.texi(,574) @verbatiminclude simplest.texi
+coverage_macro.texi(,575) 
+coverage_macro.texi(,576) @verbatim
+coverage_macro.texi(,577) in verbatim ''
+coverage_macro.texi(,578) @end verbatim
+coverage_macro.texi(,579) 
+coverage_macro.texi(,580) @xml
+coverage_macro.texi(,581) <para> xml para </para> ''
+coverage_macro.texi(,582) @end xml
+coverage_macro.texi(,583) 
+coverage_macro.texi(,584) @html
+coverage_macro.texi(,585) html ''
+coverage_macro.texi(,586) @end html
+coverage_macro.texi(,587) 
+coverage_macro.texi(,588) @tex
+coverage_macro.texi(,589) $$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ 
''
+coverage_macro.texi(,590) @end tex
+coverage_macro.texi(,591) 
+coverage_macro.texi(,592) @docbook
+coverage_macro.texi(,593) docbook ''
+coverage_macro.texi(,594) @end docbook
+coverage_macro.texi(,595) 
+coverage_macro.texi(,596) @majorheading majorheading
+coverage_macro.texi(,597) 
+coverage_macro.texi(,598) @chapheading chapheading
+coverage_macro.texi(,599) 
+coverage_macro.texi(,600) @heading heading
+coverage_macro.texi(,601) 
+coverage_macro.texi(,602) @subheading subheading
+coverage_macro.texi(,603) 
+coverage_macro.texi(,604) @subsubheading subsubheading
+coverage_macro.texi(,605) 
+coverage_macro.texi(,606) @c makeinfo cannot handle that
+coverage_macro.texi(,607) @ifset texi2html
+coverage_macro.texi(,608) 
+coverage_macro.texi(,609) @code{@@address@hidden,an accronym 
@@address@hidden@} @@address@hidden@address@hidden @acronym{--a,an accronym 
@comma{} @enddots{}}
+coverage_macro.texi(,610) @code{@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
+coverage_macro.texi(,611) @code{@@address@hidden@@'E--. 
@@address@hidden@address@hidden @abbr{@'E--. @comma{}A.}
+coverage_macro.texi(,612) 
+coverage_macro.texi(,613) @code{@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+coverage_macro.texi(,614) 
+coverage_macro.texi(,615) @code{@@address@hidden,,,alt@@address@hidden:jk _" 
%@:@address@hidden @image{f-ile,,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,616) @code{@@address@hidden,aze,az,@@address@hidden:jk _" 
%@@:@} @@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" 
%@:} @b{in b "},e--xt}
+coverage_macro.texi(,617) @code{@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+coverage_macro.texi(,618) 
+coverage_macro.texi(,619) @set invalid
+coverage_macro.texi(,620) @end ifset
+coverage_macro.texi(,621) 
+coverage_macro.texi(,622) 
+coverage_macro.texi(,623) @c invalid texinfo
+coverage_macro.texi(,624) @ifset invalid
+coverage_macro.texi(,625) 
+coverage_macro.texi(,626) Somehow invalid use of @@,:@*
+coverage_macro.texi(,627) @@, @,
+coverage_macro.texi(,628) @*
+coverage_macro.texi(,629) @@,@@"u @,@"u
+coverage_macro.texi(,630) 
+coverage_macro.texi(,631) Invalid use of @@':@*
+coverage_macro.texi(,632) @@' @'
+coverage_macro.texi(,633) @*
+coverage_macro.texi(,634) @@'@@"u @'@"u
+coverage_macro.texi(,635) 
+coverage_macro.texi(,636) @c only i or j as arg
+coverage_macro.texi(,637) @@address@hidden@} @dotless{truc}
+coverage_macro.texi(,638) @@address@hidden@} @dotless{ij}
+coverage_macro.texi(,639) @code{@@address@hidden@}} @dotless{--a}
+coverage_macro.texi(,640) @code{@@address@hidden@}} @dotless{a}
+coverage_macro.texi(,641) 
+coverage_macro.texi(,642) @c braces missing
+coverage_macro.texi(,643) @@TeX, but without brace @TeX
+coverage_macro.texi(,644) 
+coverage_macro.texi(,645) @c unknown command
+coverage_macro.texi(,646) @code{@@#} @#
+coverage_macro.texi(,647) 
+coverage_macro.texi(,648) @c no arg
+coverage_macro.texi(,649) @code{@@address@hidden@}} @w{--a}
+coverage_macro.texi(,650) 
+coverage_macro.texi(,651) @c no file
+coverage_macro.texi(,652) @code{@@address@hidden,address@hidden @image{,1--xt}
+coverage_macro.texi(,653) @code{@@address@hidden,,address@hidden 
@image{,,2--xt}
+coverage_macro.texi(,654) @code{@@address@hidden,,,address@hidden 
@image{,,,3--xt}
+coverage_macro.texi(,655) 
+coverage_macro.texi(,656) @sp
+coverage_macro.texi(,657) 
+coverage_macro.texi(,658) @c braces missing
+coverage_macro.texi(,659) @itemize @emph after emph
+coverage_macro.texi(,660) @item e--mph item
+coverage_macro.texi(,661) @end itemize
+coverage_macro.texi(,662) 
+coverage_macro.texi(,663) @c braces missing
+coverage_macro.texi(,664) @itemize @bullet a--n itemize line
+coverage_macro.texi(,665) @item i--tem 1
+coverage_macro.texi(,666) @item i--tem 2
+coverage_macro.texi(,667) @end itemize
+coverage_macro.texi(,668) 
+coverage_macro.texi(,669) @c deffnx after deff lines
+coverage_macro.texi(,670) @deffn fun
+coverage_macro.texi(,671) @deffnx truc machin bidule chose and }
+coverage_macro.texi(,672) @deffnx truc machin bidule chose and } after
+coverage_macro.texi(,673) @deffnx truc machin bidule chose and {
+coverage_macro.texi(,674) @deffnx truc machin bidule chose and { and after
+coverage_macro.texi(,675) @deffnx {truc} followed by a comment
+coverage_macro.texi(,676) @c comment
+coverage_macro.texi(,677) Various deff lines
+coverage_macro.texi(,678) @deffnx {truc} after a deff item
+coverage_macro.texi(,679) @end deffn
+coverage_macro.texi(,680) 
+coverage_macro.texi(,681) @c node is non existent, or missing first arg
+coverage_macro.texi(,682) @code{@@address@hidden@}} @ref{node}
+coverage_macro.texi(,683) 
+coverage_macro.texi(,684) @code{@@address@hidden,cross ref address@hidden 
@ref{,cross ref name}
+coverage_macro.texi(,685) @code{@@address@hidden,,address@hidden @ref{,,title}
+coverage_macro.texi(,686) @code{@@address@hidden,,,file address@hidden 
@ref{,,,file name}
+coverage_macro.texi(,687) @code{@@address@hidden,,,,address@hidden 
@ref{,,,,manual}
+coverage_macro.texi(,688) @code{@@address@hidden,cross ref address@hidden 
@ref{node,cross ref name}
+coverage_macro.texi(,689) @code{@@address@hidden,,address@hidden 
@ref{node,,title}
+coverage_macro.texi(,690) @code{@@address@hidden,,,file address@hidden 
@ref{node,,,file name}
+coverage_macro.texi(,691) @code{@@address@hidden,,,,address@hidden 
@ref{node,,,,manual}
+coverage_macro.texi(,692) @code{@@address@hidden,cross ref name,title,@}} 
@ref{node,cross ref name,title,}
+coverage_macro.texi(,693) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{node,cross ref name,,file name}
+coverage_macro.texi(,694) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{node,cross ref name,,,manual}
+coverage_macro.texi(,695) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{node,cross ref name,title,file name}
+coverage_macro.texi(,696) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{node,cross ref name,title,,manual}
+coverage_macro.texi(,697) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{node,cross ref name,title, file name, manual}
+coverage_macro.texi(,698) @code{@@address@hidden,,title,file address@hidden 
@ref{node,,title,file name}
+coverage_macro.texi(,699) @code{@@address@hidden,,title,,address@hidden 
@ref{node,,title,,manual}
+coverage_macro.texi(,700) @code{@@address@hidden,,title, file name, 
address@hidden @ref{chapter,,title, file name, manual}
+coverage_macro.texi(,701) @code{@@address@hidden,,title, file name, 
address@hidden @ref{node,,title, file name, manual}
+coverage_macro.texi(,702) @code{@@address@hidden,,,file name,address@hidden 
@ref{node,,,file name,manual}
+coverage_macro.texi(,703) @code{@@address@hidden,cross ref name,title,@}} 
@ref{,cross ref name,title,}
+coverage_macro.texi(,704) @code{@@address@hidden,cross ref name,,file 
address@hidden @ref{,cross ref name,,file name}
+coverage_macro.texi(,705) @code{@@address@hidden,cross ref 
name,,,address@hidden @ref{,cross ref name,,,manual}
+coverage_macro.texi(,706) @code{@@address@hidden,cross ref name,title,file 
address@hidden @ref{,cross ref name,title,file name}
+coverage_macro.texi(,707) @code{@@address@hidden,cross ref 
name,title,,address@hidden @ref{,cross ref name,title,,manual}
+coverage_macro.texi(,708) @code{@@address@hidden,cross ref name,title, file 
name, address@hidden @ref{,cross ref name,title, file name, manual}
+coverage_macro.texi(,709) @code{@@address@hidden,,title,file address@hidden 
@ref{,,title,file name}
+coverage_macro.texi(,710) @code{@@address@hidden,,title,,address@hidden 
@ref{,,title,,manual}
+coverage_macro.texi(,711) @code{@@address@hidden,,title, file name, 
address@hidden @ref{,,title, file name, manual}
+coverage_macro.texi(,712) @code{@@address@hidden,,,file name,address@hidden 
@ref{,,,file name,manual}
+coverage_macro.texi(,713) 
+coverage_macro.texi(,714) @code{@@address@hidden,cross ref name @}} 
@inforef{,cross ref name }
+coverage_macro.texi(,715) @code{@@address@hidden,,file address@hidden 
@inforef{,,file name}
+coverage_macro.texi(,716) @code{@@address@hidden,cross ref name, file 
address@hidden @inforef{,cross ref name, file name}
+coverage_macro.texi(,717) @code{@@address@hidden@}} @inforef{}
+coverage_macro.texi(,718) 
+coverage_macro.texi(,719) @end ifset
+coverage_macro.texi(,720) 
+coverage_macro.texi(,721) @end macro
 formatting.texi(,15) 
 formatting.texi(,16) @copying
 formatting.texi(,17) In copying

Index: coverage/res_info/texi_formatting/formatting.texi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_info/texi_formatting/formatting.texi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_info/texi_formatting/formatting.texi   21 Jun 2009 09:25:42 
-0000      1.1
+++ coverage/res_info/texi_formatting/formatting.texi   2 Aug 2009 13:12:06 
-0000       1.2
@@ -11,6 +11,727 @@
 * description:chapter2.   Chapter 2
 @end menu
 
address@hidden mymacro
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden texi2html
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden ifset
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden texi2html
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
address@hidden ifset
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments @
+   more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
address@hidden texi2html
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
address@hidden ifset
+
+
address@hidden invalid texinfo
address@hidden invalid
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
address@hidden ifset
+
address@hidden macro
 
 @copying
 In copying

Index: coverage/res_info/texi_imbrications/imbrications.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_info/texi_imbrications/imbrications.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_info/texi_imbrications/imbrications.2  21 Jun 2009 09:25:42 
-0000      1.1
+++ coverage/res_info/texi_imbrications/imbrications.2  2 Aug 2009 13:12:06 
-0000       1.2
@@ -1,4 +1,2 @@
 ** unnumberedsubsec without name (l. 304)
 ** unnumberedsubsec without name (l. 306)
-** unnumberedsubsec without name (l. 304)
-** unnumberedsubsec without name (l. 306)

Index: coverage/res_info/texi_pass0_macros/pass0_macros.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/coverage/res_info/texi_pass0_macros/pass0_macros.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- coverage/res_info/texi_pass0_macros/pass0_macros.2  21 Jun 2009 09:25:43 
-0000      1.1
+++ coverage/res_info/texi_pass0_macros/pass0_macros.2  2 Aug 2009 13:12:06 
-0000       1.2
@@ -1,2 +1 @@
 *** Bad defindex line:  chose    machin  (l. 39)
-*** Bad defindex line:  chose    machin  (l. 39)

Index: info_coverage/note_in_strong.texi
===================================================================
RCS file: info_coverage/note_in_strong.texi
diff -N info_coverage/note_in_strong.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ info_coverage/note_in_strong.texi   2 Aug 2009 13:11:58 -0000       1.1
@@ -0,0 +1,18 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden note_in_strong.info
+
address@hidden Top
address@hidden Element
+
+One @strong{Note}. 
+
+3 @strong{Note a}. 
+
+
+
+2 @strong{note}. 
+
+4 @strong{note b}.
+
address@hidden

Index: info_coverage/res/note_in_strong/note_in_strong.1
===================================================================
RCS file: info_coverage/res/note_in_strong/note_in_strong.1
diff -N info_coverage/res/note_in_strong/note_in_strong.1

Index: info_coverage/res/note_in_strong/note_in_strong.2
===================================================================
RCS file: info_coverage/res/note_in_strong/note_in_strong.2
diff -N info_coverage/res/note_in_strong/note_in_strong.2

Index: info_coverage/res/note_in_strong/note_in_strong.html
===================================================================
RCS file: info_coverage/res/note_in_strong/note_in_strong.html
diff -N info_coverage/res/note_in_strong/note_in_strong.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ info_coverage/res/note_in_strong/note_in_strong.html        2 Aug 2009 
13:11:59 -0000       1.1
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html>
+<!-- Created on a sunny day by texi2html
+texi2html was written by: 
+            Lionel Cons <address@hidden> (original author)
+            Karl Berry  <address@hidden>
+            Olaf Bachmann <address@hidden>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <address@hidden>
+-->
+<head>
+<title>Untitled Document</title>
+
+<meta name="description" content="Untitled Document">
+<meta name="keywords" content="Untitled Document">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" 
vlink="#800080" alink="#FF0000">
+
+<a name="Top"></a>
+<a name="Element"></a>
+<h1 class="unnumbered">Element</h1>
+
+<p>One <strong>Note</strong>. 
+</p>
+<p>3 <strong>Note a</strong>. 
+</p>
+
+
+<p>2 <strong>note</strong>. 
+</p>
+<p>4 <strong>note b</strong>.
+</p>
+<hr size="1">
+<p>
+ <font size="-1">
+  This document was generated by <em>a tester</em> on <em>a sunny day</em> 
using <a href="http://www.nongnu.org/texi2html/";><em>texi2html</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>

Index: info_coverage/res_all/note_in_strong/note_in_strong.1
===================================================================
RCS file: info_coverage/res_all/note_in_strong/note_in_strong.1
diff -N info_coverage/res_all/note_in_strong/note_in_strong.1

Index: info_coverage/res_all/note_in_strong/note_in_strong.2
===================================================================
RCS file: info_coverage/res_all/note_in_strong/note_in_strong.2
diff -N info_coverage/res_all/note_in_strong/note_in_strong.2

Index: info_coverage/res_all/note_in_strong/note_in_strong.txt
===================================================================
RCS file: info_coverage/res_all/note_in_strong/note_in_strong.txt
diff -N info_coverage/res_all/note_in_strong/note_in_strong.txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ info_coverage/res_all/note_in_strong/note_in_strong.txt     2 Aug 2009 
13:11:59 -0000       1.1
@@ -0,0 +1,13 @@
+Element
+*******
+
+One Note. 
+
+3 Note a. 
+
+
+
+2 note. 
+
+4 note b.
+

Index: info_coverage/res_info/note_in_strong/note_in_strong.1
===================================================================
RCS file: info_coverage/res_info/note_in_strong/note_in_strong.1
diff -N info_coverage/res_info/note_in_strong/note_in_strong.1

Index: info_coverage/res_info/note_in_strong/note_in_strong.2
===================================================================
RCS file: info_coverage/res_info/note_in_strong/note_in_strong.2
diff -N info_coverage/res_info/note_in_strong/note_in_strong.2
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ info_coverage/res_info/note_in_strong/note_in_strong.2      2 Aug 2009 
13:11:59 -0000       1.1
@@ -0,0 +1,4 @@
+** @strong{Note...} produces a spurious cross-reference in Info; reword to 
avoid that. (l. 8)
+** @strong{Note...} produces a spurious cross-reference in Info; reword to 
avoid that. (l. 10)
+** @strong{Note...} produces a spurious cross-reference in Info; reword to 
avoid that. (l. 14)
+** @strong{Note...} produces a spurious cross-reference in Info; reword to 
avoid that. (l. 16)

Index: info_coverage/res_info/note_in_strong/note_in_strong.info
===================================================================
RCS file: info_coverage/res_info/note_in_strong/note_in_strong.info
diff -N info_coverage/res_info/note_in_strong/note_in_strong.info
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ info_coverage/res_info/note_in_strong/note_in_strong.info   2 Aug 2009 
13:11:59 -0000       1.1
@@ -0,0 +1,23 @@
+This is note_in_strong.info, produced by makeinfo version 4.13 from
+note_in_strong.texi.
+
+
+File: note_in_strong.info,  Node: Top,  Up: (dir)
+
+Element
+*******
+
+One *Note*.
+
+   3 *Note a*.
+
+   2 *note*.
+
+   4 *note b*.
+
+
+
+Tag Table:
+Node: Top90
+
+End Tag Table

Index: xemacs_manual/res/texi_xemacs/xemacs.texi.first
===================================================================
RCS file: xemacs_manual/res/texi_xemacs/xemacs.texi.first
diff -N xemacs_manual/res/texi_xemacs/xemacs.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ xemacs_manual/res/texi_xemacs/xemacs.texi.first     2 Aug 2009 13:11:59 
-0000       1.1
@@ -0,0 +1,24400 @@
+\input texinfo  @c -*-texinfo-*-
address@hidden xemacs.info
address@hidden  node-name,  next,  previous,  up
+
+
address@hidden XEmacs Editor
address@hidden
+* XEmacs: (xemacs).            XEmacs Editor.
address@hidden direntry
+
+This file documents the XEmacs editor.
+
+Copyright (C) 1985, 1986, 1988 Richard M. Stallman.
+Copyright @copyright{} 1991, 1992, 1993, 1994 Lucid, Inc.
+Copyright @copyright{} 1993, 1994 Sun Microsystems, Inc.
+Copyright @copyright{} 1995 Amdahl Corporation.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that the
+sections entitled ``The GNU Manifesto'', ``Distribution'' and ``GNU
+General Public License'' are included exactly as in the original, and
+provided that the entire resulting derived work is distributed under the
+terms of a permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that the sections entitled ``The GNU Manifesto'',
+``Distribution'' and ``GNU General Public License'' may be included in a
+translation approved by the author instead of in the original English.
address@hidden
address@hidden odd
address@hidden XEmacs User's Manual
address@hidden
address@hidden
address@hidden Top, License,, (dir)
address@hidden The XEmacs Editor
+
+
+XEmacs is the extensible, customizable, self-documenting real-time
+display editor.  This Info file describes how to edit with Emacs
+and some of how to customize it, but not how to extend it.  It
+corresponds to XEmacs version 21.0.
+
+This manual is intended as a detailed reference to XEmacs.  If
+you are looking for an introductory manual, see the New User's
+Guide.
+
address@hidden
+* License::     The GNU General Public License gives you permission
+               to redistribute XEmacs on certain terms; and also
+               explains that there is no warranty.
+* Distrib::     How to get XEmacs.
+* Intro::       An introduction to XEmacs concepts.
+* Glossary::    The glossary.
+* Manifesto::   What's GNU?  Gnu's Not Unix!
+
+Indices, nodes containing large menus
+* Key Index::      An item for each standard XEmacs key sequence.
+* Command Index::  An item for each command name.
+* Variable Index:: An item for each documented variable.
+* Concept Index::  An item for each concept.
+
+Important General Concepts
+* Frame::      How to interpret what you see on the screen.
+* Keystrokes::  Keyboard gestures XEmacs recognizes.
+* Pull-down Menus:: 
+                The XEmacs Pull-down Menus available under X.
+* Entering Emacs::    
+                Starting Emacs from the shell.
+* Exiting::     Stopping or killing XEmacs.
+* Command Switches::  
+                Hairy startup options.
+* Startup Paths::
+                How XEmacs finds Directories and Files.
+* Packages::    How XEmacs organizes its high-level functionality.
+
+Fundamental Editing Commands
+* Basic::       The most basic editing commands.
+* Undo::        Undoing recently made changes in the text.
+* Minibuffer::  Entering arguments that are prompted for.
+* M-x::         Invoking commands by their names.
+* Help::        Commands for asking XEmacs about its commands.
+
+Important Text-Changing Commands
+* Mark::        The mark: how to delimit a ``region'' of text.
+* Mouse Selection:: 
+                Selecting text with the mouse.
+* Additional Mouse Operations::
+                Other operations available from the mouse.
+* Killing::     Killing text.
+* Yanking::     Recovering killed text.  Moving text.
+* Using X Selections::
+                Using primary selection, cut buffers, and highlighted regions.
+* Accumulating Text::
+                Other ways of copying text.
+* Rectangles::  Operating on the text inside a rectangle on the screen.
+* Registers::   Saving a text string or a location in the buffer.
+* Display::     Controlling what text is displayed.
+* Search::      Finding or replacing occurrences of a string.
+* Fixit::       Commands especially useful for fixing typos.
+
+Larger Units of Text
+* Files::       All about handling files.
+* Buffers::     Multiple buffers; editing several files at once.
+* Windows::     Viewing two pieces of text at once.
+* Mule::       Using world scripts.
+
+Advanced Features
+* Major Modes:: Text mode vs. Lisp mode vs. C mode ...
+* Indentation:: Editing the white space at the beginnings of lines.
+* Text::        Commands and modes for editing English.
+* Programs::    Commands and modes for editing programs.
+* Running::     Compiling, running and debugging programs.
+* Abbrevs::     How to define text abbreviations to reduce
+                 the number of characters you must type.
+* Picture::     Editing pictures made up of characters
+                 using the quarter-plane screen model.
+* Sending Mail:: Sending mail in XEmacs.
+* Reading Mail:: Reading mail in XEmacs.
+* Calendar/Diary:: A Calendar and diary facility in XEmacs.
+* Sorting::    Sorting lines, paragraphs or pages within XEmacs.
+* Shell::       Executing shell commands from XEmacs.
+* Narrowing::   Restricting display and editing to a portion
+                 of the buffer.
+* Hardcopy::   Printing buffers or regions.
+* Recursive Edit::
+                A command can allow you to do editing
+                 "within the command".  This is called a
+                 `recursive editing level'.
+* Dissociated Press::  Dissociating text for fun.
+* CONX::              A different kind of dissociation.
+* Amusements::         Various games and hacks.
+* Emulation::         Emulating some other editors with XEmacs.
+* Customization::      Modifying the behavior of XEmacs.
+
+Recovery from Problems.
+* Quitting::    Quitting and aborting.
+* Lossage::     What to do if XEmacs is hung or malfunctioning.
+* Bugs::        How and when to report a bug.
+
+Here are some other nodes which are really inferiors of the ones
+already listed, mentioned here so you can get to them in one step:
+
+ --- The Detailed Node Listing ---
+
+The Organization of the Frame
+
+* Point::              The place in the text where editing commands operate.  
+* Echo Area::           Short messages appear at the bottom of the frame.  
+* Mode Line::          Interpreting the mode line.  
+* XEmacs under X::      Some information on using XEmacs under the X 
+                        Window System. 
+
+Keystrokes
+
+* Intro to Keystrokes::      Keystrokes as building blocks of key sequences.
+* Representing Keystrokes::  Using lists of modifiers and keysyms to
+                             represent keystrokes.
+* Key Sequences::            Combine key strokes into key sequences you can
+                             bind to commands.
+* String Key Sequences::     Available for upward compatibility.
+* Meta Key::                 Using @key{ESC} to represent @key{Meta}
+* Super and Hyper Keys::     Adding modifier keys on certain keyboards.
+* Character Representation:: How characters appear in XEmacs buffers.
+* Commands::                 How commands are bound to key sequences.
+                    
+Pull-down Menus
+
+* File Menu::           Items on the File menu.
+* Edit Menu::           Items on the Edit menu.
+* Apps Menu::          Items on the Apps menu.
+* Options Menu::        Items on the Options menu. 
+* Buffers Menu::        Information about the Buffers menu.
+* Tools Menu::         Items on the Tools menu.
+* Help Menu::           Items on the Help menu. 
+* Menu Customization::  Adding and removing menu items and related
+                        operations.
+
+Packages
+
+* Packages::            Introduction to XEmacs Packages.
+* Package Terminology:: Understanding different kinds of packages.
+* Installing Packages:: How to install packages.
+* Building Packages::   Building packages from sources.
+* Local.rules File::    An important part of building packages.
+* Creating Packages::   The basics.
+* Available Packages::  A brief directory of packaged LISP.
+
+Basic Editing Commands
+
+* Blank Lines::        Commands to make or delete blank lines.
+* Continuation Lines:: Lines too wide for the frame.
+* Position Info::      What page, line, row, or column is point on?
+* Arguments::         Numeric arguments for repeating a command.
+
+The Minibuffer
+
+* File: Minibuffer File.  Entering file names with the minibuffer.
+* Edit: Minibuffer Edit.  How to edit in the minibuffer.
+* Completion::           An abbreviation facility for minibuffer input.
+* Repetition::           Re-executing commands that used the minibuffer.
+
+The Mark and the Region
+
+* Setting Mark::       Commands to set the mark.
+* Using Region::       Summary of ways to operate on contents of the region.
+* Marking Objects::    Commands to put region around textual units.
+* Mark Ring::          Previous mark positions saved so you can go back there.
+
+Yanking
+
+* Kill Ring::       Where killed text is stored.  Basic yanking.
+* Appending Kills:: Several kills in a row all yank together.
+* Earlier Kills::   Yanking something killed some time ago.
+
+Using X Selections
+
+* X Clipboard Selection::      Pasting to the X clipboard.
+* X Selection Commands::       Other operations on the selection.
+* X Cut Buffers::              X cut buffers are available for compatibility.
+* Active Regions::             Using zmacs-style highlighting of the
+                                selected region.
+
+Registers
+
+* Position: RegPos.           Saving positions in registers.
+* Text: RegText.              Saving text in registers.
+* Rectangle: RegRect.         Saving rectangles in registers.
+* Configurations: RegConfig.  Saving window configurations in registers.
+* Files: RegFiles.            File names in registers.
+* Numbers: RegNumbers.        Numbers in registers.
+* Bookmarks::                 Bookmarks are like registers, but persistent.
+
+Controlling the Display
+
+* Scrolling::             Moving text up and down in a window.
+* Horizontal Scrolling::   Moving text left and right in a window.
+* Selective Display::      Hiding lines with lots of indentation.
+* Display Vars::           Information on variables for customizing display.
+
+Searching and Replacement
+
+* Incremental Search::     Search happens as you type the string.
+* Non-Incremental Search:: Specify entire string and then search.
+* Word Search::            Search for sequence of words.
+* Regexp Search::          Search for match for a regexp.
+* Regexps::                Syntax of regular expressions.
+* Search Case::            To ignore case while searching, or not.
+* Replace::                Search, and replace some or all matches.
+* Other Repeating Search:: Operating on all matches for some regexp.
+
+Replacement Commands
+
+* Unconditional Replace::  Replacing all matches for a string.
+* Regexp Replace::         Replacing all matches for a regexp.
+* Replacement and Case::   How replacements preserve case of letters.
+* Query Replace::          How to use querying.
+
+Commands for Fixing Typos
+
+* Kill Errors:: Commands to kill a batch of recently entered text.
+* Transpose::   Exchanging two characters, words, lines, lists...
+* Fixing Case:: Correcting case of last word entered.
+* Spelling::    Apply spelling checker to a word, or a whole file.
+
+File Handling
+
+* File Names::       How to type and edit file name arguments.
+* Visiting::         Visiting a file prepares XEmacs to edit the file.
+* Saving::           Saving makes your changes permanent.
+* Reverting::        Reverting cancels all the changes not saved.
+* Auto Save::        Auto Save periodically protects against loss of data.
+* Version Control::  Version control systems (RCS and SCCS).
+* ListDir::          Listing the contents of a file directory.
+* Comparing Files::  Finding where two files differ.
+* Dired::            ``Editing'' a directory to delete, rename, etc.
+                     the files in it.
+* Misc File Ops::    Other things you can do on files.
+
+Saving Files
+
+* Backup::       How XEmacs saves the old version of your file.
+* Interlocking:: How XEmacs protects against simultaneous editing
+                  of one file by two users.
+
+Backup Files
+
+* Names: Backup Names.         How backup files are named;
+                               Choosing single or numbered backup files.
+* Deletion: Backup Deletion.   XEmacs deletes excess numbered backups.
+* Copying: Backup Copying.     Backups can be made by copying or renaming.
+
+Auto-Saving: Protection Against Disasters
+
+* Files: Auto Save Files.
+* Control: Auto Save Control.
+* Recover::            Recovering text from auto-save files.
+
+Version Control
+
+* Concepts of VC::             Basic version control information;
+                                 checking files in and out.
+* Editing with VC::            Commands for editing a file maintained
+                                 with version control.
+* Variables for Check-in/out:: Variables that affect the commands used
+                                 to check files in or out.
+* Log Entries::                        Logging your changes.
+* Change Logs and VC::         Generating a change log file from log
+                                 entries. 
+* Old Versions::               Examining and comparing old versions.
+* VC Status::                  Commands to view the VC status of files and
+                                 look at log entries.
+* Renaming and VC::            A command to rename both the source and
+                                 master file correctly.
+* Snapshots::                  How to make and use snapshots, a set of
+                                 file versions that can be treated as a unit.
+* Version Headers::            Inserting version control headers into
+                                 working files.
+
+Snapshots
+
+* Making Snapshots::           The snapshot facilities.
+* Snapshot Caveats::           Things to be careful of when using snapshots.
+
+Dired, the Directory Editor
+
+* Enter: Dired Enter.         How to invoke Dired.
+* Edit: Dired Edit.           Editing the Dired buffer.
+* Deletion: Dired Deletion.   Deleting files with Dired.
+* Immed: Dired Immed.         Other file operations through Dired.
+
+Using Multiple Buffers
+
+* Select Buffer::   Creating a new buffer or reselecting an old one.
+* List Buffers::    Getting a list of buffers that exist.
+* Misc Buffer::     Renaming; changing read-onliness; copying text.
+* Kill Buffer::     Killing buffers you no longer need.
+* Several Buffers:: How to go through the list of all buffers
+                     and operate variously on several of them.
+
+Multiple Windows
+
+* Basic Window::     Introduction to XEmacs windows.
+* Split Window::     New windows are made by splitting existing windows.
+* Other Window::     Moving to another window or doing something to it.
+* Pop Up Window::    Finding a file or buffer in another window.
+* Change Window::    Deleting windows and changing their sizes.
+
+Major Modes
+
+* Choosing Modes::     How major modes are specified or chosen.
+
+Indentation
+
+* Indentation Commands:: Various commands and techniques for indentation.
+* Tab Stops::            You can set arbitrary "tab stops" and then
+                         indent to the next tab stop when you want to.
+* Just Spaces::          You can request indentation using just spaces.
+
+Commands for Human Languages
+
+* Text Mode::   The major modes for editing text files.
+* Nroff Mode::  The major mode for editing input to the formatter nroff.
+* TeX Mode::    The major modes for editing input to the formatter TeX.
+* Outline Mode:: The major mode for editing outlines.
+* Words::       Moving over and killing words.
+* Sentences::   Moving over and killing sentences.
+* Paragraphs:: Moving over paragraphs.
+* Pages::      Moving over pages.
+* Filling::     Filling or justifying text
+* Case::        Changing the case of text
+
address@hidden Mode
+
+* Editing: TeX Editing.   Special commands for editing in TeX mode.
+* Printing: TeX Print.    Commands for printing part of a file with TeX.
+
+Outline Mode
+
+* Format: Outline Format.        What the text of an outline looks like.
+* Motion: Outline Motion.        Special commands for moving through outlines.
+* Visibility: Outline Visibility. Commands to control what is visible.
+
+Filling Text
+
+* Auto Fill::    Auto Fill mode breaks long lines automatically.
+* Fill Commands:: Commands to refill paragraphs and center lines.
+* Fill Prefix::   Filling when every line is indented or in a comment, etc.
+
+Editing Programs
+
+* Program Modes::       Major modes for editing programs.
+* Lists::               Expressions with balanced parentheses.
+                         There are editing commands to operate on them.
+* Defuns::              Each program is made up of separate functions.
+                         There are editing commands to operate on them.
+* Grinding::            Adjusting indentation to show the nesting.
+* Matching::            Insertion of a close-delimiter flashes matching open.
+* Comments::            Inserting, filling and aligning comments.
+* Balanced Editing::    Inserting two matching parentheses at once, etc.
+* Lisp Completion::     Completion on symbol names in Lisp code.
+* Documentation::       Getting documentation of functions you plan to call.
+* Change Log::          Maintaining a change history for your program.
+* Tags::                Go directly to any function in your program in one
+                         command.  Tags remembers which file it is in.
+* Fortran::            Fortran mode and its special features.
+* Asm Mode::            Asm mode and its special features.
+
+Indentation for Programs
+
+* Basic Indent::
+* Multi-line Indent::   Commands to reindent many lines at once.
+* Lisp Indent::                Specifying how each Lisp function should be 
indented.
+* C Indent::           Choosing an indentation style for C code.
+
+Tags Tables
+
+* Tag Syntax::         Tag syntax for various types of code and text files.  
+* Create Tags Table::  Creating a tags table with @code{etags}.
+* Select Tags Table::  How to visit a tags table.
+* Find Tag::           Commands to find the definition of a specific tag. 
+* Tags Search::                Using a tags table for searching and replacing.
+* List Tags::          Listing and finding tags defined in a file.
+
+Fortran Mode
+
+* Motion: Fortran Motion.     Moving point by statements or subprograms.
+* Indent: Fortran Indent.     Indentation commands for Fortran.
+* Comments: Fortran Comments. Inserting and aligning comments.
+* Columns: Fortran Columns.   Measuring columns for valid Fortran.
+* Abbrev: Fortran Abbrev.     Built-in abbrevs for Fortran keywords.
+
+Fortran Indentation
+
+* Commands: ForIndent Commands. Commands for indenting Fortran.
+* Numbers:  ForIndent Num.      How line numbers auto-indent.
+* Conv:     ForIndent Conv.     Conventions you must obey to avoid trouble.
+* Vars:     ForIndent Vars.     Variables controlling Fortran indent style.
+
+Compiling and Testing Programs
+
+* Compilation::        Compiling programs in languages other than Lisp
+                        (C, Pascal, etc.)
+* Modes: Lisp Modes.   Various modes for editing Lisp programs, with
+                       different facilities for running the Lisp programs.
+* Libraries: Lisp Libraries.      Creating Lisp programs to run in XEmacs.
+* Eval: Lisp Eval.     Executing a single Lisp expression in XEmacs.
+* Debug: Lisp Debug.   Debugging Lisp programs running in XEmacs.
+* Interaction: Lisp Interaction.  Executing Lisp in an XEmacs buffer.
+* External Lisp::      Communicating through XEmacs with a separate Lisp.
+
+Lisp Libraries
+
+* Loading::            Loading libraries of Lisp code into XEmacs for use.
+* Compiling Libraries:: Compiling a library makes it load and run faster.
+* Mocklisp::           Converting Mocklisp to Lisp so XEmacs can run it.
+
+Abbrevs
+
+* Defining Abbrevs::  Defining an abbrev, so it will expand when typed.
+* Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
+* Editing Abbrevs::   Viewing or editing the entire list of defined abbrevs.
+* Saving Abbrevs::    Saving the entire list of abbrevs for another session.
+* Dynamic Abbrevs::   Abbreviations for words already in the buffer.
+
+Editing Pictures
+
+* Basic Picture::         Basic concepts and simple commands of Picture Mode.
+* Insert in Picture::     Controlling direction of cursor motion
+                           after "self-inserting" characters.
+* Tabs in Picture::       Various features for tab stops and indentation.
+* Rectangles in Picture:: Clearing and superimposing rectangles.
+
+Sending Mail
+
+* Format: Mail Format.    Format of the mail being composed.
+* Headers: Mail Headers.  Details of allowed mail header fields.
+* Mode: Mail Mode.        Special commands for editing mail being composed.
+
+Running Shell Commands from XEmacs
+
+* Single Shell::         How to run one shell command and return.
+* Interactive Shell::    Permanent shell taking input via XEmacs.
+* Shell Mode::           Special XEmacs commands used with permanent shell.
+
+Customization
+
+* Minor Modes::     Each minor mode is one feature you can turn on
+                     independently of any others.
+* Variables::       Many XEmacs commands examine XEmacs variables
+                     to decide what to do; by setting variables,
+                     you can control their functioning.
+* Keyboard Macros:: A keyboard macro records a sequence of keystrokes
+                     to be replayed with a single command.
+* Key Bindings::    The keymaps say what command each key runs.
+                     By changing them, you can "redefine keys".
+* Syntax::          The syntax table controls how words and expressions
+                     are parsed.
+* Init File::       How to write common customizations in the init file.
+* Audible Bell::    Changing how XEmacs sounds the bell. 
+* Faces::           Changing the fonts and colors of a region of text. 
+* X Resources::            X resources controlling various aspects of the
+                     behavior of XEmacs.
+
+Variables
+
+* Examining::           Examining or setting one variable's value.
+* Easy Customization::  Convenient and easy customization of variables.
+* Edit Options::        Examining or editing list of all variables' values.
+* Locals::              Per-buffer values of variables.
+* File Variables::      How files can specify variable values.
+
+Keyboard Macros
+
+* Basic Kbd Macro::     Defining and running keyboard macros.
+* Save Kbd Macro::      Giving keyboard macros names; saving them in files.
+* Kbd Macro Query::     Keyboard macros that do different things each use.
+
+Customizing Key Bindings
+
+* Keymaps::    Definition of the keymap data structure.
+               Names of XEmacs's standard keymaps.
+* Rebinding::  How to redefine one key's meaning conveniently.
+* Disabling::  Disabling a command means confirmation is required
+                before it can be executed.  This is done to protect
+                beginners from surprises.
+
+The Syntax Table
+
+* Entry: Syntax Entry.    What the syntax table records for each character.
+* Change: Syntax Change.  How to change the information.
+
+The Init File
+
+* Init Syntax::     Syntax of constants in Emacs Lisp.
+* Init Examples::   How to do some things with an init file.
+* Terminal Init::   Each terminal type can have an init file.
+
+Dealing with XEmacs Trouble
+
+* Stuck Recursive::    `[...]' in mode line around the parentheses.
+* Screen Garbled::     Garbage on the screen.
+* Text Garbled::       Garbage in the text.
+* Unasked-for Search:: Spontaneous entry to incremental search.
+* Emergency Escape::   Emergency escape---
+                        What to do if XEmacs stops responding.
+* Total Frustration::  When you are at your wits' end.
+
address@hidden menu
+
+
address@hidden  node-name,  next,  previous,  up
address@hidden License, Distrib, Top, Top
address@hidden GNU GENERAL PUBLIC LICENSE
address@hidden Version 1, February 1989
address@hidden license to copy XEmacs
address@hidden General Public License
+
address@hidden
+Copyright @copyright{} 1989 Free Software Foundation, Inc.
+675 Mass Ave, Cambridge, MA 02139, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
address@hidden display
+
address@hidden Preamble
+
+  The license agreements of most software companies try to keep users
+at the mercy of those companies.  By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software---to make sure the software is free for all its users.  The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must tell them their rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
address@hidden TERMS AND CONDITIONS
+
address@hidden
address@hidden
+This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License.  The
+``Program'', below, refers to any such program or work, and a ``work based
+on the Program'' means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications.  Each
+licensee is addressed as ``you''.
+
address@hidden
address@hidden Distribution
+You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program.  You may charge a fee for the physical act of
+transferring a copy.
+
address@hidden
+You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
address@hidden @bullet
address@hidden
+cause the modified files to carry prominent notices stating that
+you changed the files and the date of any change; and
+
address@hidden
+cause the whole of any work that you distribute or publish, that
+in whole or in part contains the Program or any part thereof, either
+with or without modifications, to be licensed at no charge to all
+third parties under the terms of this General Public License (except
+that you may choose to grant warranty protection to some or all
+third parties, at your option).
+
address@hidden
+If the modified program normally reads commands interactively when
+run, you must cause it, when started running for such interactive use
+in the simplest and most usual way, to print or display an
+announcement including an appropriate copyright notice and a notice
+that there is no warranty (or else, saying that you provide a
+warranty) and that users may redistribute the program under these
+conditions, and telling the user how to view a copy of this General
+Public License.
+
address@hidden
+You may charge a fee for the physical act of transferring a
+copy, and you may at your option offer warranty protection in
+exchange for a fee.
address@hidden itemize
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
address@hidden
+You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
address@hidden @bullet
address@hidden
+accompany it with the complete corresponding machine-readable
+source code, which must be distributed under the terms of
+Paragraphs 1 and 2 above; or,
+
address@hidden
+accompany it with a written offer, valid for at least three
+years, to give any third party free (except for a nominal charge
+for the cost of distribution) a complete machine-readable copy of the
+corresponding source code, to be distributed under the terms of
+Paragraphs 1 and 2 above; or,
+
address@hidden
+accompany it with the information you received as to where the
+corresponding source code may be obtained.  (This alternative is
+allowed only for noncommercial distribution and only if you
+received the program in object code or executable form alone.)
address@hidden itemize
+
+Source code for a work means the preferred form of the work for making
+modifications to it.  For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
address@hidden
+You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License.  However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
address@hidden
+By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
address@hidden
+Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions.  You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
address@hidden
address@hidden
+The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of the license which applies to it and ``any
+later version'', you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
address@hidden
+If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
address@hidden NO WARRANTY
+
address@hidden
+BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
address@hidden
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
+LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
+SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE
+WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
address@hidden enumerate
+
address@hidden END OF TERMS AND CONDITIONS
+
address@hidden
address@hidden Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+  To do so, attach the following notices to the program.  It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+``copyright'' line and a pointer to where the full notice is found.
+
address@hidden
address@hidden line to give the program's name and a brief idea of what it 
does.}
+Copyright (C) address@hidden  @var{name of author}
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
address@hidden smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
address@hidden
+Gnomovision version 69, Copyright (C) address@hidden @var{name of author}
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type `show c' for details.
address@hidden smallexample
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than `show w' and `show
+c'; they could even be mouse-clicks or menu items---whatever suits your
+program.
+
address@hidden
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a ``copyright disclaimer'' for the program, if
+necessary.  Here a sample; alter the names:
+
address@hidden
+Yoyodyne, Inc., hereby disclaims all copyright interest in the
+program `Gnomovision' (a program to direct compilers to make passes
+at assemblers) written by James Hacker.
+
address@hidden of Ty Coon}, 1 April 1989
+Ty Coon, President of Vice
address@hidden example
+
+That's all there is to it!
+
address@hidden  node-name,  next,  previous,  up
address@hidden Distrib, Intro, License, Top
address@hidden Distribution
+
+XEmacs is @dfn{free}; this means that everyone is free to use it and
+free to redistribute it on a free basis.  XEmacs is not in the public
+domain; it is copyrighted and there are restrictions on its
+distribution, but these restrictions are designed to permit everything
+that a good cooperating citizen would want to do.  What is not allowed
+is to try to prevent others from further sharing any version of XEmacs
+that they might get from you.  The precise conditions are found in
+the GNU General Public License that comes with XEmacs and also appears
+following this section.
+
+The easiest way to get a copy of XEmacs is from someone else who has it.
+You need not ask for permission to do so, or tell any one else; just copy
+it.
+
+If you have access to the Internet, you can get the latest version of
+XEmacs from the anonymous FTP server @file{ftp.xemacs.org} in the directory
address@hidden/pub/xemacs}.  It can also be found at numerous other archive
+sites around the world; check the file @file{etc/DISTRIB} in an XEmacs
+distribution for the latest known list.
+
+
address@hidden Getting Other Versions of Emacs
+
+The Free Software Foundation's version of Emacs (called @dfn{FSF Emacs}
+in this manual and often referred to as @dfn{GNU Emacs}) is available
+by anonymous FTP from @file{prep.ai.mit.edu}.
+
+Win-Emacs, an older version of XEmacs that runs on Microsoft Windows
+and Windows NT, is available by anonymous FTP from @file{ftp.netcom.com}
+in the directory @file{/pub/pe/pearl}, or from @file{ftp.cica.indiana.edu}
+as the files @file{wemdemo*.zip} in the directory @file{/pub/pc/win3/demo}.
+
address@hidden Intro, Glossary, Distrib, Top
address@hidden Introduction
+
+  You are reading about XEmacs, an incarnation of the advanced,
+self-documenting, customizable, extensible real-time display editor
+Emacs.  XEmacs provides many powerful display and user-interface
+capabilities not found in other Emacsen and is mostly upwardly
+compatible with GNU Emacs from the Free Software Foundation
+(referred to as @dfn{FSF Emacs} in this manual).  XEmacs also
+comes standard with a great number of useful packages.
+
+  We say that XEmacs is a @dfn{display} editor because normally the text
+being edited is visible on the screen and is updated automatically as you
+type.  @xref{Frame,Display}.
+
+  We call XEmacs a @dfn{real-time} editor because the display is updated very
+frequently, usually after each character or pair of characters you
+type.  This minimizes the amount of information you must keep in your
+head as you edit.  @xref{Basic,Real-time,Basic Editing}.
+
+  We call XEmacs advanced because it provides facilities that go beyond
+simple insertion and deletion: filling of text; automatic indentation of
+programs; viewing two or more files at once; and dealing in terms of
+characters, words, lines, sentences, paragraphs, and pages, as well as
+expressions and comments in several different programming languages.  It is
+much easier to type one command meaning ``go to the end of the paragraph''
+than to find that spot with simple cursor keys.
+
+  @dfn{Self-documenting} means that at any time you can type a special
+character, @kbd{Control-h}, to find out what your options are.  You can
+also use @kbd{C-h} to find out what a command does, or to find all the
+commands relevant to a topic.  @xref{Help}.
+
+  @dfn{Customizable} means you can change the definitions of XEmacs
+commands.  For example, if you use a programming language in
+which comments start with @samp{<**} and end with @samp{**>}, you can tell
+the XEmacs comment manipulation commands to use those strings
+(@pxref{Comments}).  Another sort of customization is rearrangement of the
+command set.  For example, you can set up the four basic cursor motion
+commands (up, down, left and right) on keys in a diamond pattern on the
+keyboard if you prefer.  @xref{Customization}.
+
+  @dfn{Extensible} means you can go beyond simple customization and
+write entirely new commands, programs in the Lisp language to be run by
+XEmacs's own Lisp interpreter.  XEmacs is an ``on-line extensible''
+system: it is divided into many functions that call each other.  You can
+redefine any function in the middle of an editing session and replace
+any part of XEmacs without making a separate copy of all of XEmacs.  Most
+of the editing commands of XEmacs are written in Lisp; the few
+exceptions could have been written in Lisp but are written in C for
+efficiency.  Only a programmer can write an extension to XEmacs, but anybody
+can use it afterward.
+
address@hidden Frame, Keystrokes, Concept Index, Top
address@hidden  node-name,  next,  previous,  up
address@hidden The XEmacs Frame
address@hidden frame
address@hidden window
address@hidden buffer
+
address@hidden @asis
address@hidden Frame
+In many environments, such as a tty terminal, an XEmacs frame
+literally takes up the whole screen.  If you are
+running XEmacs in a multi-window system like the X Window System, the
+XEmacs frame takes up one X window.  @xref{XEmacs under X}, for more
address@hidden
+
address@hidden Window
+No matter what environment you are running in, XEmacs allows you to look
+at several buffers at the same time by having several windows be part of
+the frame.  Often, the whole frame is taken up by just one window, but
+you can split the frame into two or more subwindows.  If you are
+running XEmacs under the X window system, that means you can have several
address@hidden windows} inside the X window that contains the XEmacs frame.
+You can even have multiple frames in different X windows, each with
+their own set of subwindows.
address@hidden
address@hidden table
+
+Each XEmacs frame displays a variety of information:
address@hidden @bullet
address@hidden
+The biggest area usually displays the text you are editing.  It may
+consist of one window or of two or more windows if you need to look at two
+buffers a the same time.
address@hidden
+Below each text window's last line is a @dfn{mode line} (@pxref{Mode
+Line}), which describes what is going on in that window.  The mode line
+is in inverse video if the terminal supports that.  If there are several
+XEmacs windows in one frame, each window has its own mode line.
address@hidden
+At the bottom of each XEmacs frame is the @dfn{echo area} or @dfn{minibuffer
+window}(@pxref{Echo Area}).  It is used by XEmacs to exchange information
+with the user.  There is only one echo area per XEmacs frame.
address@hidden
+If you are running XEmacs under a graphical windowing system, a
+menu bar at the top of the frame makes shortcuts to several of the
+commands available (@pxref{Pull-down Menus}).
address@hidden
+Under a graphical windowing system, a
+toolbar at the top of the frame, just under the menu bar if it exists,
+provides ``one-touch'' shortcuts to several commands.  (Not yet
+documented.)
address@hidden
+Under a graphical windowing system, a
+gutter at the top (under the toolbar) and/or bottom of the frame
+provides advanced GUI facilities like tab controls for rapid switching
+among related windows and progress bars for time-consuming operations
+like downloads across the Internet.  Gutters are an experimental feature
+introduced in XEmacs version 21.2.  (Not yet documented.)
address@hidden itemize
+
+  You can subdivide the XEmacs frame into multiple text windows, and use
+each window for a different file (@pxref{Windows}).  Multiple XEmacs
+windows are tiled vertically on the XEmacs frame.  The upper XEmacs window
+is separated from the lower window by its mode line.
+
+  When there are multiple, tiled XEmacs windows on a single XEmacs frame,
+the XEmacs window receiving input from the keyboard has the @dfn{keyboard
+focus} and is called the @dfn{selected window}.  The selected window
+contains the cursor, which indicates the insertion point.  If you are
+working in an environment that permits multiple XEmacs frames, and you
+move the focus from one XEmacs frame into another, the
+selected window is the one that was last selected in that frame.
+
+  The same text can be displayed simultaneously in several XEmacs
+windows, which can be in different XEmacs frames.  If you alter the text
+in an XEmacs buffer by editing it in one XEmacs window, the changes are
+visible in all XEmacs windows containing that buffer.
+
+
address@hidden
+* Point::              The place in the text where editing commands operate.
+* Echo Area::           Short messages appear at the bottom of the frame.
+* Mode Line::          Interpreting the mode line.
+* GUI Components::      Menubar, toolbars, gutters.
+* XEmacs under X::      Some information on using XEmacs under the X
+                        Window System.
+* XEmacs under MS Windows:: Some information on using XEmacs under
+                        Microsoft Windows.
address@hidden menu
+
address@hidden Point, Echo Area, Frame, Frame
address@hidden  node-name,  next,  previous,  up
address@hidden Point
address@hidden point
address@hidden cursor
+
+  When XEmacs is running, the cursor shows the location at which editing
+commands will take effect.  This location is called @dfn{point}.  You
+can use keystrokes or the mouse cursor to move point through the text
+and edit the text at different places.
+
+  While the cursor appears to point @var{at} a character, you should
+think of point as @var{between} two characters: it points @var{before}
+the character on which the cursor appears.  The exception is at the
+end of the line, where the cursor appears after the last character of
+the line.  Where the display is capable, the cursor at the end of the
+line will appear differently from a cursor over whitespace at the end
+of the line.  (In an X Windows frame, the end-of-line cursor is half
+the width of a within-line cursor.)  Sometimes people speak of ``the
+cursor'' when they mean ``point,'' or speak of commands that move
+point as ``cursor motion'' commands.
+
+ Each XEmacs frame has only one cursor.  When output is in progress, the cursor
+must appear where the typing is being done.  This does not mean that
+point is moving.  It is only that XEmacs has no way to show you the
+location of point except when the terminal is idle.
+
+  If you are editing several files in XEmacs, each file has its own point
+location.  A file that is not being displayed remembers where point is.
+Point becomes visible at the correct location when you look at the file again.
+
+  When there are multiple text windows, each window has its own point
+location.  The cursor shows the location of point in the selected
+window.  The visible cursor also shows you which window is selected.  If
+the same buffer appears in more than one window, point can be moved in
+each window independently.
+
+  The term `point' comes from the character @samp{.}, which was the
+command in TECO (the language in which the original Emacs was written)
+for accessing the value now called `point'.
+
address@hidden Echo Area, Mode Line, Point, Frame
address@hidden The Echo Area
address@hidden echo area
+
+  The line at the bottom of the frame (below the mode line) is the
address@hidden area}.  XEmacs uses this area to communicate with the user:
+
address@hidden @bullet
address@hidden
+  @dfn{Echoing} means printing out the characters that the user types.  XEmacs
+never echoes single-character commands.  Multi-character commands are
+echoed only if you pause while typing them: As soon as you pause for more
+than one second in the middle of a command, all the characters of the command
+so far are echoed.  This is intended to @dfn{prompt} you for the rest of
+the command.  Once echoing has started, the rest of the command is echoed
+immediately as you type it.  This behavior is designed to give confident
+users fast response, while giving hesitant users maximum feedback.  You
+can change this behavior by setting a variable (@pxref{Display Vars}).
address@hidden
+  If you issue a command that cannot be executed, XEmacs may print an
address@hidden message} in the echo area.  Error messages are accompanied by
+a beep or by flashing the frame.  Any input you have typed ahead is
+thrown away when an error happens.
address@hidden
+  Some commands print informative messages in the echo area.  These
+messages look similar to error messages, but are not announced with a
+beep and do not throw away input.  Sometimes a message tells you what the
+command has done, when this is not obvious from looking at the text being
+edited.  Sometimes the sole purpose of a command is to print a message
+giving you specific information.  For example, the command @kbd{C-x =} is
+used to print a message describing the character position of point in the
+text and its current column in the window.  Commands that take a long time
+often display messages ending in @samp{...} while they are working, and
+add @samp{done} at the end when they are finished.
address@hidden
+  The echo area is also used to display the @dfn{minibuffer}, a window
+that is used for reading arguments to commands, such as the name of a
+file to be edited.  When the minibuffer is in use, the echo area displays
+with a prompt string that usually ends with a colon.  The cursor
+appears after the prompt.  You can always get out of the minibuffer by
+typing @kbd{C-g}.  @xref{Minibuffer}.
address@hidden itemize
+
address@hidden Mode Line, GUI Components, Echo Area, Frame
address@hidden  node-name,  next,  previous,  up
address@hidden The Mode Line
address@hidden mode line
address@hidden top level
+
+  Each text window's last line is a @dfn{mode line} which describes what is
+going on in that window.  When there is only one text window, the mode line
+appears right above the echo area.  The mode line is in inverse video if
+the terminal supports that, starts and ends with dashes, and contains text
+like @samp{XEmacs:@: @var{something}}.
+
+  If a mode line has something else in place of @samp{XEmacs:@:
address@hidden, the window above it is in a special subsystem
+such as Dired.  The mode line then indicates the status of the
+subsystem.
+
+  Normally, the mode line has the following appearance:
+
address@hidden
address@hidden: @var{buf}      (@var{major} @var{minor})address@hidden
address@hidden example
+
address@hidden
+This gives information about the buffer being displayed in the window: the
+buffer's name, what major and minor modes are in use, whether the buffer's
+text has been changed, and how far down the buffer you are currently
+looking.
+
+  @var{ch} contains two stars (@samp{**}) if the text in the buffer has been
+edited (the buffer is ``modified''), or two dashes (@samp{--}) if the
+buffer has not been edited.  Exception: for a read-only buffer, it is
address@hidden
+
+  @var{buf} is the name of the window's chosen @dfn{buffer}.  The chosen
+buffer in the selected window (the window that the cursor is in) is also
+XEmacs's selected buffer, the buffer in which editing takes place.  When
+we speak of what some command does to ``the buffer'', we mean the
+currently selected buffer.  @xref{Buffers}.
+
+  @var{pos} tells you whether there is additional text above the top of
+the screen or below the bottom.  If your file is small and it is
+completely visible on the screen, @var{pos} is @samp{All}.  Otherwise,
address@hidden is @samp{Top} if you are looking at the beginning of the file,
address@hidden if you are looking at the end of the file, or
address@hidden@var{nn}%}, where @var{nn} is the percentage of the file above the
+top of the address@hidden
+
+  @var{major} is the name of the @dfn{major mode} in effect in the buffer.  At
+any time, each buffer is in one and only one major mode.
+The available major modes include Fundamental mode (the least specialized),
+Text mode, Lisp mode, and C mode.  @xref{Major Modes}, for details
+on how the modes differ and how you select address@hidden
+
+  @var{minor} is a list of some of the @dfn{minor modes} that are turned on
+in the window's chosen buffer.  For example, @samp{Fill} means that Auto
+Fill mode is on.  @code{Abbrev} means that Word Abbrev mode is on.
address@hidden means that Overwrite mode is on.  @xref{Minor Modes}, for more
+information.  @samp{Narrow} means that the buffer being displayed has
+editing restricted to only a portion of its text.  This is not really a
+minor mode, but is like one.  @xref{Narrowing}.  @code{Def} means that a
+keyboard macro is being defined.  @xref{Keyboard Macros}.
+
+  Some buffers display additional information after the minor modes.  For
+example, Rmail buffers display the current message number and the total
+number of messages.  Compilation buffers and Shell mode display the status
+of the subprocess.
+
+  If XEmacs is currently inside a recursive editing level, square
+brackets (@address@hidden) appear around the parentheses that surround
+the modes.  If XEmacs is in one recursive editing level within another,
+double square brackets appear, and so on.  Since information on
+recursive editing applies to XEmacs in general and not to any one buffer,
+the square brackets appear in every mode line on the screen or not in
+any of them.  @xref{Recursive address@hidden
+
address@hidden display-time
+  XEmacs can optionally display the time and system load in all mode lines.
+To enable this feature, type @kbd{M-x display-time}.  The information added
+to the mode line usually appears after the file name, before the mode names
+and their parentheses.  It looks like this:
+
address@hidden
address@hidden:@var{mm}pm @var{l.ll} address@hidden
address@hidden example
+
address@hidden
+(Some fields may be missing if your operating system cannot support them.)
address@hidden and @var{mm} are the hour and minute, followed always by 
@samp{am}
+or @samp{pm}.  @var{l.ll} is the average number of running processes in the
+whole system recently.  @var{d} is an approximate index of the ratio of
+disk activity to CPU activity for all users.
+
+The word @samp{Mail} appears after the load level if there is mail for
+you that you have not read yet.
+
address@hidden mode-line-inverse-video
+  Customization note: the variable @code{mode-line-inverse-video}
+controls whether the mode line is displayed in inverse video (assuming
+the terminal supports it); @code{nil} means no inverse video.  The
+default is @code{t}.  For X frames, simply set the foreground and
+background colors appropriately.
+
address@hidden GUI Components, XEmacs under X, Mode Line, Frame
address@hidden  node-name,  next,  previous,  up
address@hidden GUI Components
+
+When executed in a graphical windowing environment such as the X Window
+System or Microsoft Windows, XEmacs displays several graphical user
+interface components such as scrollbars, menubars, toolbars, and
+gutters.  By default there is a vertical scrollbar at the right of each
+frame, and at the top of the frame there is a menubar, a toolbar, and a
+gutter, in that order.  Gutters can contain any of several widgets, but
+the default configuration puts a set of "notebook tabs" which you can
+use as a shortcut for selecting any of several related buffers in a
+given frame.  Operating the GUI components is "obvious":  click on the
+menubar to pull down a menu, on a button in the toolbar to invoke a
+function, and on a tab in the gutter to switch buffers.
+
address@hidden
+* Menubar Basics::      How XEmacs uses the menubar.
+* Scrollbar Basics::    How XEmacs uses scrollbars.
+* Mode Line Basics::    How XEmacs uses modelines.
+* Toolbar Basics::      How XEmacs uses toolbars.
+* Gutter Basics::       How XEmacs uses gutters.
+* Inhibiting::          What if you don't like GUI?
+* Customizing::         Position, orientation, and appearance of GUI objects.
address@hidden menu
+
address@hidden Menubar Basics, Scrollbar Basics, , GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden The XEmacs Menubar
+
+The XEmacs menubar is intended to be conformant to the usual conventions
+for menubars, although conformance is not yet perfect.  The menu at the
+extreme right is the @samp{Help} menu, which should always be
+available.  It provides access to all the XEmacs help facilities
+available through @kbd{C-h}, as well as samples of various configuration
+files like @samp{~/.Xdefaults} and @samp{~/.emacs}.  At the extreme left
+is the @samp{Files} menu, which provides the usual file reading,
+writing, and printing operations, as well as operations like revert
+buffer from most recent save.  The next menu from the left is the
address@hidden menu, which provides the @samp{Undo} operation as well as
+cutting and pasting, searching, and keyboard macro definition and
+execution.
+
address@hidden #### w3.el and VM should get cross-references here.
+XEmacs provides a very dynamic environment, and the Lisp language makes
+for highly flexible applications.  The menubar reflects this: many menus
+(eg, the @samp{Buffers} menu, @pxref{Buffers Menu}) contain items
+determined by the current state of XEmacs, and most major modes and many
+minor modes add items to menus and even whole menus to the menubar.  In
+fact, some applications like w3.el and VM provide so many menus that
+they define a whole new menubar and add a button that allows convenient
+switching between the ``XEmacs menubar'' and the ``application
+menubar''.  Such applications normally bind themselves to a particular
+frame, and this switching only takes place on frames where such an
+application is active (ie, the current window of the frame is displaying
+a buffer in the appropriate major mode).
+
+Other menus which are typically available are the @samp{Options},
address@hidden, @samp{Buffers}, @samp{Apps}, and @samp{Mule} menus.  For
+detailed descriptions of these menus, @ref{Pull-down Menus}.  (In 21.2
+XEmacsen, the @samp{Mule} menu will be moved under @samp{Options}.)
+
address@hidden Scrollbar Basics, Mode Line Basics, Menubar Basics, GUI 
Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Scrollbars
+
+XEmacs scrollbars provide the usual interface.  Arrow buttons at either
+end allow for line by line scrolling, including autorepeat.  Clicking in
+the scrollbar itself provides scrolling by windowsfull, depending on
+which side of the slider is clicked.  The slider itself may be dragged
+for smooth scrolling.
+
+The position of the slider corresponds to the position of the window in
+the buffer.  In particular, the length of the slider is proportional to
+the fraction of the buffer which appears in the window.
+
+The presence of the scrollbars is under control of the application or
+may be customized by the user.  By default a vertical scrollbar is
+present in all windows (except the minibuffer), and there is no
+horizontal scrollbar.
+
address@hidden Mode Line Basics, Toolbar Basics, Scrollbar Basics, GUI 
Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Mode Lines
+
+When used in a windowing system, the XEmacs modelines can be dragged
+vertically. The effect is to resize the windows above and below the
+modeline (this includes the minibuffer window).
+
+Additionally, a modeline can be dragged horizontally, in which case it
+scrolls its own text. This behavior is not enabled by default because it
+could be considered as disturbing when dragging vertically. When this
+behavior is enabled, the modeline's text can be dragged either in the
+same direction as the mouse, or in the opposite sense, making the
+modeline act as a scrollbar for its own text.
+
+You can select the behavior you want from the @samp{Display} submenu of
+the @samp{Options} menu.
+
address@hidden Toolbar Basics, Gutter Basics, Mode Line Basics, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Toolbars
+
+XEmacs has a default toolbar which provides shortcuts for some of the
+commonly used operations (such as opening files) and applications (such
+as the Info manual reader).  Operations which require arguments will pop
+up dialogs to get them.
+
+The position of the default toolbar can be customized.  Also, several
+toolbars may be present simultaneously (in different positions).  VM,
+for example, provides an application toolbar which shortcuts for
+mail-specific operations like sending, saving, and deleting messages.
+
address@hidden Gutter Basics, Inhibiting, Toolbar Basics, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Gutters
+
+Gutters are the most flexible of the GUI components described in this
+section.  In theory, the other GUI components could be implemented by
+customizing a gutter, but in practice the other components were
+introduced earlier and have their own special implementations.  Gutters
+tend to be more transient than the other components.  Buffer tabs, for
+example, change every time the selected buffer in the frame changes.
+And for progress gauges a gutter to contain the gauge is typically
+created on the fly when needed, then destroyed when the operation whose
+staus is being displayed is completed.
+
+Buffer tabs, having somewhat complex behavior, deserve a closer look.
+By default, a row of buffer tabs is displayed at the top of every frame.
+(The tabs could be placed in the bottom gutter, but would be oriented
+the same way and look rather odd.  The horizontal orientation makes
+putting them in a side gutter utterly impractical.)  The buffer
+displayed in the current window of a frame can be changed to a specific
+buffer by clicking [mouse-1] on the corresponding tab in the gutter.
+
+Each tab contains the name of its buffer.  The tab for the current
+buffer in each frame is displayed in raised relief.  The list of buffers
+chosen for display in the buffer tab row is derived by filtering the
+buffer list (like the @code{Buffers} menu).  The list starts out with
+all existing buffers, with more recently selected buffers coming earlier
+in the list.
+
+Then "uninteresting" buffers, like internal XEmacs buffers, the
address@hidden Log*} buffer, and so on are deleted from the list.  Next,
+the frame's selected buffer is determined.  Buffers with a different
+major mode from the selected buffer are removed from the list.  Finally,
+if the list is too long, the least recently used buffers are deleted
+from the list.  By default up to 6 most recently used buffers with the
+same mode are displayed on tabs in the gutter.
+
address@hidden Inhibiting, Customizing, Gutter Basics, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden Inhibiting Display of GUI Components
+
+Use of GUI facilities is a personal thing.  Almost everyone agrees that
+drawing via keyboard-based "turtle graphics" is acceptable to hardly
+anyone if a mouse is available, but conversely emulating a keyboard with
+a screenful of buttons is a painful experience.  But between those
+extremes the complete novice will require a fair amount of time before
+toolbars and menus become dispensable, but many an "Ancien Haquer" sees
+them as a complete waste of precious frame space that could be filled
+with text.
+
+Display of all of the GUI components created by XEmacs can be inhibited
+through the use of Customize.  Customize can be accessed through
address@hidden | Customize} in the menu bar, or via @kbd{M-x customize}.
+Then navigate through the Customize tree to @samp{Emacs | Environment}.
+Scrollbar and toolbar visibility is controlled via the @samp{Display}
+group, options @samp{Scrollbars visible} and  @samp{Toolbar visible}
+respectively.  Gutter visibility is controlled by group @samp{Gutter},
+option @samp{Visible}.
+
+Or they can be controlled directly by @kbd{M-x customize-variable}, by
+changing the values of the variables @code{menubar-visible-p},
address@hidden, @code{toolbar-visible-p}, or
address@hidden respectively.  (The strange form of
+the last variable is due to the fact that gutters are often used to
+display transient widgets like progress gauges, which you probably don't
+want to inhibit.  It is more likely that you want to inhibit the default
+display of the buffers tab widget, which is what that variable controls.
+This interface is subject to change depending on developer experience
+and user feedback.)
+
+Control of frame configuration can controlled automatically according to
+various parameters such as buffer or frame because these are
address@hidden @ref{Specifiers, , , lispref}.  Using these features
+requires programming in Lisp; Customize is not yet that sophisticated.
+Also, components that appear in various positions and orientations can
+have display suppressed according to position.  @kbd{C-h a visible-p}
+gives a list of variables which can be customized.  E.g., to control the
+visibility of specifically the left-side toolbar only, customize
address@hidden
+
address@hidden Customizing, , Inhibiting, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden Changing the Position, Orientation, and Appearance of GUI 
Components
+
+  #### Not documented yet.
+
address@hidden XEmacs under X, XEmacs under MS Windows, GUI Components, Frame
address@hidden Using XEmacs Under the X Window System
address@hidden  node-name,  next,  previous,  up
+
+XEmacs can be used with the X Window System and a window manager like
+MWM or TWM.  In that case, the X window manager opens, closes, and
+resizes XEmacs frames.  You use the window manager's mouse gestures to
+perform the operations.  Consult your window manager guide or reference
+manual for information on manipulating X windows.
+
+When you are working under X, each X window (that is, each XEmacs frame)
+has a menu bar for mouse-controlled operations (@pxref{Pull-down Menus}).
+
address@hidden multi-frame XEmacs
address@hidden make-frame
+XEmacs under X is also a multi-frame XEmacs.  You can use the @b{New
+Frame} menu item from the @b{File} menu to create a new XEmacs frame in a
+new X window from the same process.  The different frames will share the
+same buffer list, but you can look at different buffers in the different
+frames.
+
address@hidden find-file-other-frame
+The function @code{find-file-other-frame} is just like @code{find-file},
+but creates a new frame to display the buffer in first.  This is
+normally bound to @kbd{C-x 5 C-f}, and is what the @b{Open File, New
+Frame} menu item does.
+
address@hidden switch-to-buffer-other-frame
+The function @code{switch-to-buffer-other-frame} is just like
address@hidden, but creates a new frame to display the buffer
+in first.  This is normally bound to @kbd{C-x 5 b}.
+
address@hidden default-frame-alist
address@hidden default-frame-plist
+You can specify a different default frame size other than the one provided.
+Use the variable @code{default-frame-plist}, which is a plist of default
+values for frame creation other than the first one.  These may be set in
+your init file, like this:
+
address@hidden
+  (setq default-frame-plist '(width 80 height 55))
address@hidden example
+
+This variable has replaced @code{default-frame-alist}, which is
+considered obsolete.
+
address@hidden x-frame-defaults
+For values specific to the first XEmacs frame, you must use X resources.
+The variable @code{x-frame-defaults} takes an alist of default frame
+creation parameters for X window frames.  These override what is
+specified in @file{~/.Xdefaults} but are overridden by the arguments to
+the particular call to @code{x-create-frame}.
+
address@hidden create-frame-hook
+When you create a new frame, the variable @code{create-frame-hook}
+is called with one argument, the frame just created.
+
+If you want to close one or more of the X windows you created using
address@hidden Frame}, use the @b{Delete Frame} menu item from the @b{File} 
menu.
+
address@hidden frame-title-format
address@hidden frame-icon-title-format
+If you are working with multiple frames, some special information
+applies:
address@hidden @bullet
address@hidden
+Two variables, @code{frame-title-format} and
address@hidden determine the title of the frame and
+the title of the icon that results if you shrink the frame.
+
address@hidden auto-lower-frame
address@hidden auto-raise-frame
address@hidden
+The variables @code{auto-lower-frame} and @code{auto-raise-frame}
+position a frame. If true, @code{auto-lower-frame} lowers a frame to
+the bottom when it is no longer selected. If true,
address@hidden raises a frame to the top when it is
+selected. Under X, most ICCCM-compliant window managers will have
+options to do this for you, but these variables are provided in case you
+are using a broken window manager.
+
address@hidden
+There is a new frame/modeline format directive, %S, which expands to
+the name of the current frame (a frame's name is distinct from its
+title; the name is used for resource lookup, among other things, and the
+title is simply what appears above the window.)
address@hidden itemize
+
address@hidden XEmacs under MS Windows, , XEmacs under X, Frame
address@hidden Using XEmacs Under Microsoft Windows
address@hidden  node-name,  next,  previous,  up
+
+Use of XEmacs under MS Windows is not separately documented here, but
+most operations available under the X Window System are also available
+with MS Windows.
+
+Where possible, native MS Windows GUI components and capabilities are
+used in XEmacs.
+
address@hidden Keystrokes, Pull-down Menus, Frame, Top
address@hidden Keystrokes, Key Sequences, and Key Bindings
+
+
address@hidden
+* Intro to Keystrokes::      Keystrokes as building blocks of key sequences.
+* Representing Keystrokes::  Using lists of modifiers and keysyms to
+                             represent keystrokes.
+* Key Sequences::            Combine key strokes into key sequences you can
+                             bind to commands.
+* String Key Sequences::     Available for upward compatibility.
+* Meta Key::                 Using @key{ESC} to represent @key{Meta}
+* Super and Hyper Keys::     Adding modifier keys on certain keyboards.
+* Character Representation:: How characters appear in Emacs buffers.
+* Commands::                 How commands are bound to key sequences.
address@hidden menu
+ 
address@hidden Intro to Keystrokes, Representing Keystrokes, Keystrokes, 
Keystrokes
address@hidden Keystrokes as Building Blocks of Key Sequences
address@hidden character set
address@hidden ASCII
address@hidden keystroke
+
+      Earlier versions of Emacs used only the ASCII character set,
+which defines 128 different character codes.  Some of these codes are
+assigned graphic symbols like @samp{a} and @samp{=}; the rest are
+control characters, such as @kbd{Control-a} (also called @kbd{C-a}).
address@hidden means you hold down the @key{CTRL} key and then press
address@hidden@refill
+
+   Keybindings in XEmacs are not restricted to the set of
+keystrokes that can be represented in ASCII.  XEmacs can tell the
+difference between, for example, @kbd{Control-h}, @kbd{Control-Shift-h},
+and @kbd{Backspace}.
+  
address@hidden modifier key
address@hidden keysym
address@hidden meta key
address@hidden control key
address@hidden hyper key
address@hidden super key
address@hidden shift key
address@hidden button1 
address@hidden button2
address@hidden button3
address@hidden button1up
address@hidden button2up
address@hidden button3up
+
+  A keystroke is like a piano chord: you get it by simultaneously
+striking several keys.  To be more precise, a keystroke consists
+of a possibly empty set of modifiers followed by a single
address@hidden  The set of modifiers is small; it consists of
address@hidden, @kbd{Meta}, @kbd{Super}, @kbd{Hyper}, and @kbd{Shift}.
+
+  The rest of the keys on your keyboard, along with the mouse buttons,
+make up the set of keysyms.  A keysym is usually what is printed on the
+keys on your keyboard.  Here is a table of some of the symbolic names
+for keysyms:
address@hidden @kbd
address@hidden a,b,c...
+alphabetic keys
address@hidden f1,f2...
+function keys
address@hidden button1
+left mouse button
address@hidden button2
+middle mouse button
address@hidden button3
+right mouse button
address@hidden button1up 
+upstroke on the left mouse button
address@hidden button2up
+upstroke on the middle mouse button
address@hidden button3up
+upstroke on the right mouse button
address@hidden return
+Return key
address@hidden table
+
address@hidden keyboard-translate-table
+Use the variable @code{keyboard-translate-table} only if you are on a
+dumb tty, as it cannot handle input that cannot be represented as ASCII.
+The value of this variable is a string used as a translate table for
+keyboard input or @code{nil}.  Each character is looked up in this
+string and the contents used instead.  If the string is of length
address@hidden, character codes @code{N} and up are untranslated.  If you are
+running Emacs under X, you should do the translations with the
address@hidden program instead.
+
+
address@hidden Representing Keystrokes, Key Sequences, Intro to Keystrokes, 
Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Representing Keystrokes
address@hidden hyper key
address@hidden super key
address@hidden read-key-sequence
+
+  XEmacs represents keystrokes as lists. Each list consists of
+an arbitrary combination of modifiers followed by a single keysym at the
+end of the list.  If the keysym corresponds to an ASCII character, you
+can use its character code.  (A keystroke may also be represented by an
+event object, as returned by the @code{read-key-sequence} function;
+non-programmers need not worry about this.)
+
+The following table gives some examples of how to list representations
+for keystrokes.  Each list consists of sets of modifiers followed by
+keysyms:
+
address@hidden @kbd
address@hidden (control a)
+Pressing @key{CTRL} and @kbd{a} simultaneously.
address@hidden (control ?a)
+Another way of writing the keystroke @kbd{C-a}.
address@hidden (control 65)
+Yet another way of writing the keystroke @kbd{C-a}.
address@hidden (break)
+Pressing the @key{BREAK} key.
address@hidden (control meta button2up)
+Release the middle mouse button, while pressing @key{CTRL} and
address@hidden 
address@hidden table
address@hidden shift modifier
+  Note: As you define keystrokes, you can use the @kbd{shift} key only
+as a modifier with characters that do not have a second keysym on the
+same key, such as @kbd{backspace} and @kbd{tab}.  It is an error to
+define a keystroke using the @key{shift} modifier with keysyms such as
address@hidden and @kbd{=}.  The correct forms are @kbd{A} and @kbd{+}.
+
address@hidden Key Sequences, String Key Sequences, Representing Keystrokes, 
Keystrokes
address@hidden Representing Key Sequences
+
+  A @dfn{complete key sequence} is a sequence of keystrokes that Emacs
+understands as a unit.  Key sequences are significant because you can
+bind them to commands.  Note that not all sequences of keystrokes are
+possible key sequences.  In particular, the initial keystrokes in a key
+sequence must make up a @dfn{prefix key sequence}.
+
+  Emacs represents a key sequence as a vector of keystrokes.  Thus, the
+schematic representation of a complete key sequence is as follows:
+
address@hidden
+  [(modifier .. modifier keysym) ... (modifier .. modifier keysym)]
address@hidden example
+
+  Here are some examples of complete key sequences:
+
address@hidden @kbd
address@hidden [(control c) (control a)]
+Typing @kbd{C-c} followed by @kbd{C-a}
address@hidden [(control c) (control 65)]
+Typing @kbd{C-c} followed by @kbd{C-a}. (Using the ASCII code
+for the character `a')@refill
address@hidden [(control c) (break)]
+Typing @kbd{C-c} followed by the @kbd{break} address@hidden
address@hidden table
+
address@hidden C-c
address@hidden C-x
address@hidden C-h
address@hidden ESC
address@hidden prefix key sequence
+
+  A @dfn{prefix key sequence} is the beginning of a series of longer
+sequences that are valid key sequences; adding any single keystroke to
+the end of a prefix results in a valid key sequence.  For example,
address@hidden is standardly defined as a prefix.  Thus there is a
+two-character key sequence starting with @kbd{C-x} for each valid
+keystroke, giving numerous possibilities.  Here are some samples:
+
address@hidden @bullet
address@hidden
address@hidden(control x) (c)]}
address@hidden
address@hidden(control x) (control c)]}
address@hidden itemize
+
+  Adding one character to a prefix key does not have to form a complete
+key.  It could make another, longer prefix.  For example, @kbd{[(control
+x) (\4)]} is itself a prefix that leads to any number of different
+three-character keys, including @kbd{[(control x) (\4) (f)]},
address@hidden(control x) (\4) (b)]} and so on.  It would be possible to define
+one of those three-character sequences as a prefix, creating a series of
+four-character keys, but we did not define any of them this address@hidden
+
+  By contrast, the two-character sequence @kbd{[(control f) (control
+k)]} is not a key, because the @kbd{(control f)} is a complete key
+sequence in itself.  You cannot give @kbd{[(control f (control k)]} an
+independent meaning as a command while @kbd{(control f)} is a complete
+sequence, because Emacs would understand @key{C-f C-k} as two
address@hidden
+
+ The predefined prefix key sequences in Emacs are @kbd{(control c)},
address@hidden(control x)}, @kbd{(control h)}, @kbd{[(control x) (\4)]}, and
address@hidden  You can customize Emacs and could make new prefix keys or
+eliminate the default key sequences.  @xref{Key Bindings}.  For example,
+if you redefine @kbd{(control f)} as a prefix, @kbd{[(control f)
+(control k)]} automatically becomes a valid key sequence (complete,
+unless you define it as a prefix as well).  Conversely, if you remove
+the prefix definition of @kbd{[(control x) (\4)]}, @kbd{[(control x)
+(\4) (f)]} (or @kbd{[(control x) (\4) @var{anything}]}) is no longer a
+valid key sequence.
+
+Note that the above paragraphs uses \4 instead of simply 4, because \4
+is the symbol whose name is "4", and plain 4 is the integer 4, which
+would have been interpreted as the ASCII value.  Another way of
+representing the symbol whose name is "4" is to write ?4, which would be
+interpreted as the number 52, which is the ASCII code for the character
+"4".  We could therefore actually have written 52 directly, but that is
+far less clear.
+
address@hidden String Key Sequences, Meta Key, Key Sequences, Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden  String Key Sequences
+For backward compatibility, you may also represent a key sequence using
+strings.  For example, we have the following equivalent representations:
+
address@hidden @kbd
address@hidden "\C-c\C-c"
address@hidden(control c) (control c)]}
address@hidden "\e\C-c"
address@hidden(meta control c)]}
address@hidden table
+
address@hidden LFD
address@hidden TAB
+
address@hidden Meta Key, Super and Hyper Keys, String Key Sequences, Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Assignment of the @key{META} Key
+ 
address@hidden META
address@hidden ESC
+  Not all terminals have the complete set of modifiers.  
+Terminals that have a @key{Meta} key allow you to type Meta characters
+by just holding that key down.  To type @kbd{Meta-a}, hold down
address@hidden and press @kbd{a}.  On those terminals, the @key{META} key
+works like the @key{SHIFT} key.  Such a key is not always labeled
address@hidden, however, as this function is often a special option for a
+key with some other primary address@hidden
+
+  If there is no @key{META} key, you can still type Meta characters
+using two-character sequences starting with @key{ESC}.  To enter
address@hidden, you could type @address@hidden a}.  To enter @kbd{C-M-a}, you
+would type @kbd{ESC C-a}.  @key{ESC} is allowed on terminals with
+Meta keys, too, in case you have formed a habit of using address@hidden
+
+If you are running under X and do not have a @key{META} key, it 
+is possible to reconfigure some other key to be a @key{META} 
+key.  @xref{Super and Hyper Keys}. @refill
+
address@hidden meta-flag
+  Emacs believes the terminal has a @key{META} key if the variable
address@hidden is address@hidden  Normally this is set automatically
+according to the termcap entry for your terminal type.  However, sometimes
+the termcap entry is wrong, and then it is useful to set this variable
+yourself.  @xref{Variables}, for how to do this.
+
+Note: If you are running under the X window system, the setting of
+the @code{meta-flag} variable is irrelevant. 
+
address@hidden Super and Hyper Keys, Character Representation, Meta Key, 
Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Assignment of the @key{SUPER} and @key{HYPER} Keys
address@hidden hyper key
address@hidden super key
+
+  Most keyboards do not, by default, have @key{SUPER} or @key{HYPER}
+modifier keys.  Under X, you can simulate the @key{SUPER} or
address@hidden key if you want to bind keys to sequences using @kbd{super}
+and @kbd{hyper}.  You can use the @code{xmodmap} program to do this.
+
+  For example, to turn your @key{CAPS-LOCK} key into a @key{SUPER} key,
+do the following:
+
+  Create a file called @code{~/.xmodmap}.  In this file, place the lines
+
address@hidden
+        remove Lock = Caps_Lock
+        keysym Caps_Lock = Super_L
+        add Mod2 = Super_L
address@hidden example
+
+The first line says that the key that is currently called @code{Caps_Lock}
+should no longer behave as a ``lock'' key.  The second line says that
+this should now be called @code{Super_L} instead.  The third line says that 
+the key called @code{Super_L} should be a modifier key, which produces the
address@hidden modifier.
+
+To create a @key{META} or @key{HYPER} key instead of a @key{SUPER} key,
+replace the word @code{Super} above with @code{Meta} or @code{Hyper}.
+
+Just after you start up X, execute the command @code{xmodmap /.xmodmap}.
+You can add this command to the appropriate initialization file to have
+the command executed address@hidden
+
+If you have problems, see the documentation for the @code{xmodmap}
+program.  The X keyboard model is quite complicated, and explaining
+it is beyond the scope of this manual.  However, we reprint the 
+following description from the X Protocol document for your convenience:
+
address@hidden keysyms
address@hidden keycode
+
+ A list of keysyms is associated with each keycode. If that list
+(ignoring trailing @code{NoSymbol} entries) is a single keysym @samp{K},
+then the list is treated as if it were the list 
address@hidden NoSymbol K NoSymbol''}. If the list (ignoring trailing 
address@hidden entries) is a pair of keysyms @samp{K1 K2}, then the 
+list is treated as if it were the list @code{``K1 K2 K1 K2''}. If the 
+list (ignoring trailing @code{NoSymbol} entries) is a triple of keysyms 
address@hidden K2 K3}, then the list is treated as if it were the list 
address@hidden K2 K3 NoSymbol''}.
+
+ The first four elements of the list are split into two groups of 
+keysyms. Group 1 contains the first and second keysyms; Group 2 contains
+third and fourth keysyms. Within each group, if the second element of
+the group is NoSymbol, then the group should be treated as if the second
+element were the same as the first element, except when the first
+element is an alphabetic keysym @samp{K} for which both lowercase and 
+uppercase forms are defined. In that case, the group should be treated 
+as if the first element were the lowercase form of @samp{K} and the second 
+element were the uppercase form of @samp{K}.
+
+ The standard rules for obtaining a keysym from a KeyPress event make use of 
+only the Group 1 and Group 2 keysyms; no interpretation of other keysyms in 
+the list is given here. (That is, the last four keysyms are unused.)
+
+ Which group to use is determined by modifier state. Switching between
+groups is controlled by the keysym named @code{Mode_switch}. Attach that
+keysym to some keycode and attach that keycode to any one of the
+modifiers Mod1 through Mod5. This modifier is called the @dfn{group
+modifier}. For any keycode, Group 1 is used when the group modifier is
+off, and Group 2 is used when the group modifier is on.
+
+ Within a group, which keysym to use is also determined by modifier
+state. The first keysym is used when the @code{Shift} and @code{Lock} 
+modifiers are off. The second keysym is used when the @code{Shift} 
+modifier is on, or when the @code{Lock} modifier is on and the second 
+keysym is uppercase alphabetic, or when the @code{Lock} modifier is on 
+and is interpreted as @code{ShiftLock}. Otherwise, when the @code{Lock} 
+modifier is on and is interpreted as @code{CapsLock}, the state of the 
address@hidden modifier is applied first to select a keysym, 
+but if that keysym is lower-case alphabetic, then the corresponding 
+upper-case keysym is used instead.
+
+ In addition to the above information on keysyms, we also provide the 
+following description of modifier mapping from the InterClient 
+Communications Conventions Manual:
+
address@hidden modifier mapping
+
+ X11 supports 8 modifier bits, of which 3 are pre-assigned to 
address@hidden, @code{Lock}, and @code{Control}. Each modifier bit is 
+controlled by the state of a set of keys, and these sets are specified 
+in a table accessed by @code{GetModifierMapping()} and 
address@hidden()}.
+
+ A client needing to use one of the pre-assigned modifiers should assume
+that the modifier table has been set up correctly to control these
+modifiers. The @code{Lock} modifier should be interpreted as @code{Caps
+Lock} or @code{Shift Lock} according to whether the keycodes in its
+controlling set include @code{XK_Caps_Lock} or @code{XK_Shift_Lock}.
+
+ Clients should determine the meaning of a modifier bit from the keysyms 
+being used to control it.
+
+A client needing to use an extra modifier, for example @code{Meta}, should:
+
address@hidden
address@hidden
+Scan the existing modifier mappings.
+
address@hidden
address@hidden
+If it finds a modifier that contains a keycode whose set of keysyms 
+includes @code{XK_Meta_L} or @code{XK_Meta_R}, it should use that 
+modifier bit.
+
address@hidden
+If there is no existing modifier controlled by @code{XK_Meta_L} or 
address@hidden, it should select an unused modifier bit (one with 
+an empty controlling set) and:
address@hidden enumerate
+
address@hidden
+If there is a keycode with @code{XL_Meta_L} in its set of keysyms, 
+add that keycode to the set for the chosen modifier, and then:
+
address@hidden
address@hidden
+If there is a keycode with @code{XL_Meta_R} in its set of keysyms, 
+add that keycode to the set for the chosen modifier, and then:
+
address@hidden
+If the controlling set is still empty, interact with the user to 
+select one or more keys to be @code{Meta}.
address@hidden enumerate
+
+
address@hidden
+If there are no unused modifier bits, ask the user to take corrective action.
address@hidden enumerate
+
+ This means that the @code{Mod1} modifier does not necessarily mean 
address@hidden, although some applications (such as twm and emacs 18) 
+assume that. Any of the five unassigned modifier bits could mean 
address@hidden; what matters is that a modifier bit is generated by a 
+keycode which is bound to the keysym @code{Meta_L} or @code{Meta_R}.
+
+ Therefore, if you want to make a @key{META} key, the right way 
+is to make the keycode in question generate both a @code{Meta} keysym 
+and some previously-unassigned modifier bit.
+
address@hidden Character Representation, Commands, Super and Hyper Keys, 
Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Representation of Characters
+
+This section briefly discusses how characters are represented in Emacs
+buffers.  @xref{Key Sequences}, for information on representing key
+sequences to create key bindings. 
+
+  ASCII graphic characters in Emacs buffers are displayed with their
+graphics.  @key{LFD} is the same as a newline character; it is displayed
+by starting a new line.  @key{TAB} is displayed by moving to the next
+tab stop column (usually every 8 spaces).  Other control characters are
+displayed as a caret (@samp{^}) followed by the non-control version of
+the character; thus, @kbd{C-a} is displayed as @samp{^A}.  Non-ASCII
+characters 128 and up are displayed with octal escape sequences; thus,
+character code 243 (octal), also called @kbd{M-#} when used as an input
+character, is displayed as @samp{\243}.
+
+The variable @code{ctl-arrow} may be used to alter this behavior.
address@hidden Vars}.
+
address@hidden Commands, , Character Representation, Keystrokes
address@hidden Keys and Commands
+
address@hidden binding
address@hidden customization
address@hidden keymap
address@hidden function
address@hidden command
+  This manual is full of passages that tell you what particular keys do.
+But Emacs does not assign meanings to keys directly.  Instead, Emacs
+assigns meanings to @dfn{functions}, and then gives keys their meanings
+by @dfn{binding} them to functions.
+
+ A function is a Lisp object that can be executed as a program.  Usually
+it is a Lisp symbol that has been given a function definition; every
+symbol has a name, usually made of a few English words separated by
+dashes, such as @code{next-line} or @code{forward-word}.  It also has a
address@hidden, which is a Lisp program.  Only some functions can be the
+bindings of keys; these are functions whose definitions use
address@hidden to specify how to call them interactively.  Such
+functions are called @dfn{commands}, and their names are @dfn{command
+names}.  More information on this subject will appear in the @i{XEmacs
+Lisp Reference Manual}.
+
+  The bindings between keys and functions are recorded in various tables
+called @dfn{keymaps}.  @xref{Key Bindings}, for more information on key
+sequences you can bind commands to.  @xref{Keymaps}, for information on
+creating keymaps.
+
+  When we say  address@hidden moves down vertically one line'' we are
+glossing over a distinction that is irrelevant in ordinary use but is
+vital in understanding how to customize Emacs.  The function
address@hidden is programmed to move down vertically.  @kbd{C-n}
+has this effect @i{because} it is bound to that function.  If you rebind
address@hidden to the function @code{forward-word} then @kbd{C-n} will move
+forward by words instead.  Rebinding keys is a common method of
address@hidden
+
+   The rest of this manual usually ignores this subtlety to keep
+things simple.  To give the customizer the information needed, we often
+state the name of the command that really does the work in parentheses
+after mentioning the key that runs it.  For example, we will say that
+``The command @kbd{C-n} (@code{next-line}) moves point vertically
+down,'' meaning that @code{next-line} is a command that moves vertically
+down and @kbd{C-n} is a key that is standardly bound to it.
+
address@hidden variables
+  While we are on the subject of information for customization only,
+it's a good time to tell you about @dfn{variables}.  Often the
+description of a command will say, ``To change this, set the variable
address@hidden''  A variable is a name used to remember a value.
+Most of the variables documented in this manual exist just to facilitate
+customization: some command or other part of Emacs uses the variable
+and behaves differently depending on its setting.  Until you are interested in
+customizing, you can ignore the information about variables.  When you
+are ready to be interested, read the basic information on variables, and 
+then the information on individual variables will make sense.
address@hidden
+
address@hidden Pull-down Menus, Entering Emacs, Keystrokes, Top
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Pull-down Menus 
+
+If you are running XEmacs under X, a menu bar on top of the
+Emacs frame provides access to pull-down menus of file, edit, and
+help-related commands. The menus provide convenient shortcuts and an
+easy interface for novice users.  They do not provide additions to the
+functionality available via key commands; you can still invoke commands
+from the keyboard as in previous versions of Emacs.
+        
address@hidden @b
address@hidden File
+Perform file and buffer-related operations, such as opening and closing
+files, saving and printing buffers, as well as exiting Emacs.
address@hidden File menu
+
address@hidden Edit
+Perform standard editing operations, such as 
+cutting, copying, pasting, and killing selected text.
address@hidden Edit menu
+
address@hidden #### The Mule menu needs to be documented, but this is not the 
place
address@hidden for it since Ben just moved it.
+
address@hidden Apps
+Access to sub-applications implemented within XEmacs, such as the mail
+reader, the World Wide Web browser, the spell-checker, and the calendar
+program.
address@hidden Apps menu
+
address@hidden Options
+Control various options regarding the way XEmacs works, such as controlling
+which elements of the frame are visible, selecting the fonts to be used for
+text, specifying whether searches are case-sensitive, etc.
address@hidden Options menu
+
address@hidden Buffers
+Present a menu of buffers for selection as well as the option to display
+a buffer list.
address@hidden Buffers menu
+
address@hidden Tools
+Perform various actions designed to automate software development and
+similar technical work, such as searching through many files, compiling
+a program, and comparing or merging two or three files.
address@hidden Tools menu
+
address@hidden Help
+Access to Emacs Info.
address@hidden Help menu
address@hidden table
address@hidden Pull-down Menus
address@hidden menus
+
+There are two ways of selecting an item from a pull-down menu:
+
address@hidden @bullet
address@hidden
+Select an item in the menu bar by moving the cursor over it and click the
+left mouse-button.  Then move the cursor over the menu item you want to choose
+and click left again.
address@hidden
+Select an item in the menu bar by moving the cursor over it and click and
+hold the left mouse-button.  With the mouse-button depressed, move the
+cursor over the menu item you want, then release it to make your selection. 
address@hidden itemize
+
+If a command in the pull-down menu is not applicable in a given
+situation, the command is disabled and its name appears faded.  You
+cannot invoke items that are faded.  For example, many commands on the
address@hidden menu appear faded until you select text on which they are to
+operate; after you select a block of text, edit commands are enabled.
address@hidden Selection}, for information on using the mouse to select
+text.  @xref{Using X Selections}, for related information.
+
+There are also @kbd{M-x} equivalents for each menu item.  To find the
+equivalent for any left-button menu item, do the following:
+
address@hidden
address@hidden
+Type @kbd{C-h k} to get the @code{Describe Key} prompt. 
address@hidden
+Select the menu item and click. 
address@hidden enumerate
+
+Emacs displays the function associated with the menu item in a separate
+window, usually together with some documentation. 
+
address@hidden
+* File Menu::           Items on the File menu.
+* Edit Menu::           Items on the Edit menu.
+* Apps Menu::          Items on the Apps menu.
+* Options Menu::        Items on the Options menu. 
+* Buffers Menu::        Information about the Buffers menu.
+* Tools Menu::         Items on the Tools menu.
+* Help Menu::           Items on the Help menu. 
+* Menu Customization::  Adding and removing menu items and related
+                        operations.
address@hidden menu
+
address@hidden File Menu
address@hidden The File Menu
+
address@hidden File menu
+
+The @b{File} menu bar item contains the items @b{New Frame}, @b{Open
+File...}, @b{Save Buffer}, @b{Save Buffer As...}, @b{Revert Buffer},
address@hidden Buffer}, @b{Delete Frame}, @b{Kill Buffer} and @b{Exit Emacs}
+on the pull-down menu.  If you select a menu item, Emacs executes the
+equivalent command.
+
address@hidden Open File, New Frame... menu item
address@hidden Open File... menu item
address@hidden Insert File... menu item
address@hidden Save Buffer menu item
address@hidden Save Buffer As ... menu item
address@hidden Revert Buffer menu item
address@hidden Kill Buffer menu item
address@hidden Print Buffer menu item
address@hidden New Frame menu item
address@hidden Delete Frame menu item
address@hidden Split Frame
address@hidden Un-split (Keep This)
address@hidden Un-split (Keep Others)
address@hidden Exit Emacs menu item
+
address@hidden @b
address@hidden Open File, New Frame...
+Prompts you for a filename and loads that file into a new buffer in a
+new Emacs frame, that is, a new X window running under the same Emacs
+process.  You can remove the frame using the @b{Delete Frame} menu
+item.  When you remove the last frame, you exit Emacs and are prompted
+for confirmation. @refill
+
address@hidden Open File...
+Prompts you for a filename and loads that file into a new buffer. 
address@hidden File...} is equivalent to the Emacs command @code{find-file} 
(@kbd{C-x
+C-f})address@hidden 
+
address@hidden Insert File...
+Prompts you for a filename and inserts the contents of that file into
+the current buffer.  The file associated with the current buffer is
+not changed by this command.  This is equivalent to the Emacs command
address@hidden (@kbd{C-x i})address@hidden 
+
address@hidden Save Buffer 
+Writes and saves the current Emacs buffer as the latest
+version of the current visited file.  @b{Save Buffer} is equivalent to the
+Emacs command @code{save-buffer} (@kbd{C-x C-s})address@hidden
+
address@hidden Save Buffer As... 
+Writes and saves the current Emacs buffer to the filename you specify.
address@hidden Buffer As...} is equivalent to the Emacs command
address@hidden (@kbd{C-x C-w})address@hidden
+
address@hidden Revert Buffer
+Restores the last saved version of the file to the current buffer.  When
+you edit a buffer containing a text file, you must save the buffer
+before your changes become effective.  Use @b{Revert Buffer} if you do
+not want to keep the changes you have made in the buffer.  @b{Revert
+Buffer} is equivalent to the Emacs command @code{revert-file} (@kbd{M-x
+revert-buffer})address@hidden
+
address@hidden Kill Buffer
+Kills the current buffer, prompting you first if there are unsaved
+changes.  This is roughly equivalent to the Emacs command 
address@hidden (@kbd{C-x k}), except that @code{kill-buffer} 
+prompts for the name of a buffer to kill. @refill
+
address@hidden Print Buffer
+Prints a hardcopy of the current buffer.  Equivalent
+to the Emacs command @code{print-buffer} (@kbd{M-x print-buffer})address@hidden
+
address@hidden New Frame
+Creates a new Emacs frame displaying the @code{*scratch*} buffer.  This
+is like the @b{Open File, New Frame...} menu item, except that it does
+not prompt for or load a address@hidden
+
address@hidden Delete Frame 
+Allows you to close all but one of the frames created by @b{New Frame}.
+If you created several Emacs frames belonging to the same Emacs
+process, you can close all but one of them.  When you attempt to close the
+last frame, Emacs informs you that you are attempting to delete the
+last frame.  You have to choose @b{Exit Emacs} for address@hidden
+
address@hidden Split Frame
+Divides the current window on the current frame into two equal-sized
+windows, both displaying the same buffer.  Equivalent to the Emacs
+command @code{split-window-vertically} (@kbd{C-x 2})address@hidden
+
address@hidden Un-split (Keep This)
+If the frame is divided into multiple windows, this removes all windows
+other than the selected one.  Equivalent to the Emacs command
address@hidden (@kbd{C-x 1})address@hidden
+
address@hidden Un-split (Keep Others)
+If the frame is divided into multiple windows, this removes the
+selected window from the frame, giving the space back to one of the
+other windows.  Equivalent to the Emacs command @code{delete-window}
+(@kbd{C-x 0})address@hidden
+
address@hidden Exit Emacs
+Shuts down (kills) the Emacs process.  Equivalent to the Emacs command
address@hidden (@kbd{C-x C-c}).  Before killing the
+Emacs process, the system asks which unsaved buffers to save by going through
+the list of all buffers in that Emacs address@hidden
address@hidden table
+
address@hidden Edit Menu
address@hidden The Edit Menu
address@hidden Edit menu
+
+The @b{Edit} pull-down menu contains the @b{Undo}, @b{Cut}, @b{Copy},
address@hidden, and @b{Clear} menu items.  When you select a menu item, Emacs
+executes the equivalent command.  Most commands on the @b{Edit} menu
+work on a block of text, the X selection.  They appear faded until you
+select a block of text (activate a region) with the mouse.  @xref{Using
+X Selections}, @pxref{Killing}, and @pxref{Yanking} for more
address@hidden
+
address@hidden  **** zmacs-regions is on by default these days - jwz
address@hidden
address@hidden Note: By default, you can use the @b{Edit} menu items on the 
region between
address@hidden point and the mark as well as regions selected with the mouse. 
To change
address@hidden this behavior, set the variable @code{zmacs-regions} to
address@hidden @code{t}. @xref{Active Regions} for more information.
+
address@hidden Undo menu item
address@hidden Cut menu item
address@hidden Copy menu item
address@hidden Paste menu item
address@hidden Clear menu item
address@hidden Start Macro Recording menu item
address@hidden End Macro Recording menu item
address@hidden Execute Last Macro menu item
address@hidden @b
address@hidden Undo 
+Undoes the previous command.  @b{Undo} is equivalent to
+the Emacs command @code{undo} (@kbd{C-x u})address@hidden
+
address@hidden Cut
+Removes the selected text block from the current buffer, makes it the X
+clipboard selection, and places it in the kill ring.  Before executing
+this command, you have to select a region using Emacs region selection
+commands or with the address@hidden 
+
address@hidden Copy 
+Makes a selected text block the X clipboard selection, and places it in
+the kill ring.  You can select text using one of the Emacs region
+selection commands or by selecting a text region with the address@hidden
+
address@hidden Paste 
+Inserts the current value of the X clipboard selection in the current
+buffer.  Note that this is not necessarily the same as the Emacs
address@hidden command, because the Emacs kill ring and the X clipboard
+selection are not the same thing.  You can paste in text you
+have placed in the clipboard using @b{Copy} or @b{Cut}.  You can also
+use @b{Paste} to insert text that was pasted into the clipboard from other
+applications.
+
address@hidden Clear
+Removes the selected text block from the current buffer but does not
+place it in the kill ring or the X clipboard selection. 
+
address@hidden Start Macro Recording
+After selecting this, Emacs will remember every keystroke you type until
address@hidden Macro Recording} is selected.  This is the same as the Emacs 
+command @code{start-kbd-macro} (@kbd{C-x (}).
+
address@hidden End Macro Recording
+Selecting this tells emacs to stop remembering your keystrokes.  This is
+the same as the Emacs command @code{end-kbd-macro} (@kbd{C-x )}).
+
address@hidden Execute Last Macro
+Selecting this item will cause emacs to re-interpret all of the
+keystrokes which were saved between selections of the @b{Start Macro
+Recording} and @b{End Macro Recording} menu items.  This is the same
+as the Emacs command @code{call-last-kbd-macro} (@kbd{C-x e}).
address@hidden table
+
address@hidden Apps Menu
address@hidden The Apps Menu
address@hidden Apps menu
+
+The @b{Apps} pull-down menu contains the @b{Read Mail (VM)...}, @b{Read
+Mail (MH)...}, @b{Send Mail...}, @b{Usenet News}, @b{Browse the Web},
address@hidden, @b{Spell-Check Buffer} and @b{Emulate VI} menu items,
+and the @b{Calendar} and @b{Games} sub-menus.  When you select a menu
+item, Emacs executes the equivalent command.  For some of the menu
+items, there are sub-menus which you will need to select.
+
address@hidden Options Menu
address@hidden The Options Menu
address@hidden Options menu
+
+The @b{Options} pull-down menu contains the @b{Read Only}, @b{Case 
+Sensitive Search}, @b{Overstrike}, @b{Auto Delete Selection}, 
address@hidden Extended Commands}, @b{Syntax Highlighting}, @b{Paren 
+Highlighting}, @b{Font}, @b{Size}, @b{Weight}, @b{Buffers Menu 
+Length...}, @b{Buffers Sub-Menus} and @b{Save Options} menu items. 
+When you select a menu item, Emacs executes the equivalent command. 
+For some of the menu items, there are sub-menus which you will need 
+to select.
+
address@hidden Read Only menu item
address@hidden Case Sensitive Search menu item
address@hidden Overstrike menu item
address@hidden Auto Delete Selection menu item
address@hidden Teach Extended Commands menu item
address@hidden Syntax Highlighting menu item
address@hidden Paren Highlighting menu item
address@hidden Font menu item
address@hidden Size menu item
address@hidden Weight menu item
address@hidden Buffers Menu Length... menu item
address@hidden Buffers Sub-Menus menu item
address@hidden Save Options
address@hidden @b
address@hidden Read Only
+Selecting this item will cause the buffer to visit the file in a 
+read-only mode. Changes to the file will not be allowed. This is 
+equivalent to the Emacs command @code{toggle-read-only} 
+(@kbd{C-x C-q}).
+
address@hidden Case Sensitive Search
+Selecting this item will cause searches to be case-sensitive. If 
+its not selected then searches will ignore case. This option is 
+local to the buffer.
+
address@hidden Overstrike
+After selecting this item, when you type letters they will replace 
+existing text on a one-to-one basis, rather than pushing it to the 
+right. At the end of a line, such characters extend the line. Before 
+a tab, such characters insert until the tab is filled in. This is the 
+same as Emacs command @code{quoted-insert} (@kbd{C-q}).
+
address@hidden Auto Delete Selection
+Selecting this item will cause automatic deletion of the selected 
+region. The typed text will replace the selection if the selection 
+is active (i.e. if its highlighted). If the option is not selected 
+then the typed text is just inserted at the point.
+
address@hidden Teach Extended Commands
+After you  select this item, any time you execute a command with 
address@hidden has a shorter keybinding, you will be shown the 
+alternate binding before the command executes.
+
address@hidden Syntax Highlighting
+You can customize your init file to include the font-lock mode so that
+when you select this item, the comments will be displayed in one face,
+strings in another, reserved words in another, and so on. @xref{Init
+File}.  When @b{Fonts} is selected, different parts of the program will
+appear in different Fonts. When @b{Colors} is selected, then the program
+will be displayed in different colors. Selecting @b{None} causes the
+program to appear in just one Font and Color. Selecting @b{Less} resets
+the Fonts and Colors to a fast, minimal set of decorations. Selecting
address@hidden resets the Fonts and Colors to a larger set of decorations. For
+example, if @b{Less} is selected (which is the default setting) then you
+might have all comments in green color.  Whereas, if @b{More} is
+selected then a function name in the comments themselves might appear in
+a different Color or address@hidden
+
address@hidden Paren Highlighting
+After selecting @b{Blink} from this item, if you place the cursor 
+on a parenthesis, the matching parenthesis will blink. If you select 
address@hidden and place the cursor on a parenthesis, the whole 
+expression of the parenthesis under the cursor will be highlighted. 
+Selecting @b{None} will turn off the options (regarding @b{Paren 
+Highlighting}) which you had selected address@hidden
+
address@hidden Font
+You can select any Font for your program by choosing from one of the 
+available Fonts.
+
address@hidden Size
+You can select any size ranging from @b{2} to @b{24} by selecting the 
+appropriate address@hidden
+
address@hidden Weight
+You can choose either @b{Bold} or @b{Medium} for the address@hidden
+
address@hidden Buffers Menu Length...
+Prompts you for the number of buffers to display. Then it will display 
+that number of most recently selected buffers.
+
address@hidden Buffers Sub-Menus
+After selection of this item the Buffers menu will contain several 
+commands, as submenus of each buffer line. If this item is unselected, 
+then there are no submenus for each buffer line, the only command 
+available will be selecting that buffer.
+
address@hidden Save Options
+Selecting this item will save the current settings of your Options 
+menu to your init file.  @xref{Init File}.
address@hidden table
+
address@hidden Buffers Menu
address@hidden The Buffers Menu
address@hidden Buffers menu
+The @b{Buffers} menu provides a selection of up to ten buffers and the
+item @b{List All Buffers}, which provides a Buffer List. @xref{List
+Buffers}, for more information.  
+
address@hidden Tools Menu
address@hidden The Tools Menu
address@hidden Tools menu
+
+The @b{Tools} pull-down menu contains the @b{Grep...}, @b{Compile...},
address@hidden Command...}, @b{Shell Command on Region...}, @b{Debug(GDB)...}
+and @b{Debug(DBX)...} menu items, and the @b{Compare}, @b{Merge},
address@hidden Patch} and @b{Tags} sub-menus.  When you select a menu item,
+Emacs executes the equivalent command.  For some of the menu items,
+there are sub-menus which you will need to select.
+
address@hidden Help Menu
address@hidden The Help Menu
address@hidden Help menu
+
+The Help Menu gives you access to Emacs Info and provides a menu
+equivalent for each of the choices you have when using @kbd{C-h}. 
address@hidden, for more information. 
+
+The Help menu also gives access to UNIX online manual pages via the
address@hidden Manual Page} option.  
+
address@hidden Menu Customization
address@hidden Customizing XEmacs Menus
+
+You can customize any of the pull-down menus by adding or removing menu
+items and disabling or enabling existing menu items.
+ 
+The following functions are available: 
address@hidden @kbd
address@hidden add-menu: (@var{menu-path} @var{menu-name} @var{menu-items} 
&optional @var{before})
+Add a menu to the menu bar or one of its submenus.
address@hidden add-menu-item: (@var{menu-path} @var{item-name} @var{function}
address@hidden &optional @var{before})
+Add a menu item to a menu, creating the menu first if necessary.
address@hidden delete-menu-item: (@var{path})
+Remove the menu item defined by @var{path} from the menu hierarchy.
address@hidden disable-menu-item: (@var{path})
+Disable the specified menu item.
address@hidden enable-menu-item: (@var{path})
+Enable the specified previously disabled menu item.
address@hidden relabel-menu-item: (@var{path} @var{new-name})
+Change the string of the menu item specified by @var{path} to
address@hidden
+
address@hidden table
+
address@hidden add-menu
address@hidden adding menus
+Use the function @code{add-menu} to add a new menu or submenu.
+If a menu or submenu of the given name exists already, it is changed.
+
address@hidden identifies the menu under which the new menu should be
+inserted.  It is a list of strings; for example, @code{("File")} names
+the top-level @b{File} menu.  @code{("File" "Foo")} names a hypothetical
+submenu of @b{File}.  If @var{menu-path} is @code{nil}, the menu is
+added to the menu bar itself.
+
address@hidden is the string naming the menu to be added.  
+
address@hidden is a list of menu item descriptions.  Each menu item
+should be a vector of three elements:
+
address@hidden @bullet
address@hidden 
+A string, which is the name of the menu item
address@hidden 
+A symbol naming a command, or a form to evaluate
address@hidden 
address@hidden or @code{nil} to indicate whether the item is selectable
address@hidden itemize
+
+The optional argument @var{before} is the name of the menu before which
+the new menu or submenu should be added.  If the menu is already
+present, it is not moved.
+
address@hidden add-menu-item
address@hidden adding menu items
+The function @code{add-menu-item} adds a menu item to the specified
+menu, creating the menu first if necessary.  If the named item already
+exists, the menu remains unchanged.
+
address@hidden identifies the menu into which the new menu item should
+be inserted.  It is a list of strings; for example, @code{("File")}
+names the top-level @b{File} menu.  @code{("File" "Foo")} names a
+hypothetical submenu of @b{File}.
+
address@hidden is the string naming the menu item to add.
+
address@hidden is the command to invoke when this menu item is selected.
+If it is a symbol, it is invoked with @code{call-interactively}, in the
+same way that functions bound to keys are invoked.  If it is a list, the
+list is simply evaluated.
+
address@hidden controls whether the item is selectable or not.
+It should be @code{t}, @code{nil}, or a form to evaluate to decide.  
+This form will be evaluated just before the menu is displayed, and 
+the menu item will be selectable if that form returns address@hidden
+
+For example, to make the @code{rename-file} command available from the
address@hidden menu, use the following code:
+
address@hidden
+(add-menu-item '("File") "Rename File" 'rename-file t)
address@hidden example
+
+To add a submenu of file management commands using a @b{File Management}
+item, use the following code: 
+
address@hidden
+(add-menu-item '("File" "File Management") "Copy File" 'copy-file t)
+(add-menu-item '("File" "File Management") "Delete File" 'delete-file t)
+(add-menu-item '("File" "File Management") "Rename File" 'rename-file t)
address@hidden example
+
+The optional @var{before} argument is the name of a menu item before
+which the new item should be added.  If the item is already present, it
+is not moved.
+
address@hidden delete-menu-item
address@hidden deleting menu items
+To remove a specified menu item from the menu hierarchy, use
address@hidden
+
address@hidden is a list of strings that identify the position of the menu
+item in the menu hierarchy.  @code{("File" "Save")} means the menu item
+called @b{Save} under the top level @b{File} menu.  @code{("Menu" "Foo"
+"Item")} means the menu item called @b{Item} under the @b{Foo} submenu
+of @b{Menu}.
+
address@hidden disable-menu-item
address@hidden enable-menu-item
address@hidden enabling menu items
address@hidden disabling menu items
+
+To disable a menu item, use @code{disable-menu-item}.  The disabled
+menu item is grayed and can no longer be selected.  To make the
+item selectable again, use @code{enable-menu-item}.
address@hidden and @code{enable-menu-item} both have the
+argument @var{path}.
+
address@hidden relabel-menu-item
address@hidden changing menu items
+To change the string of the specified menu item, use
address@hidden This function also takes the argument @var{path}.
+
address@hidden is the string to which the menu item will be changed.
address@hidden This is part of the XEmacs manual.
address@hidden Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995 Free Software 
Foundation, Inc.
address@hidden See file xemacs.texi for copying conditions.
address@hidden Entering Emacs, Exiting, Pull-down Menus, Top
address@hidden Entering and Exiting Emacs
address@hidden entering XEmacs
address@hidden starting XEmacs
+
+  The usual way to invoke XEmacs is to type @kbd{xemacs @key{RET}} at
+the shell.  XEmacs clears the screen and then displays an initial
+advisory message and copyright notice.  You can begin typing XEmacs
+commands immediately afterward.
+
+  Some operating systems insist on discarding all type-ahead when XEmacs
+starts up; they give XEmacs no way to prevent this.  Therefore, it is
+advisable to wait until XEmacs clears the screen before typing your first
+editing command.
+
+  If you run XEmacs from a shell window under the X Window System, run it
+in the background with @samp{xemacs&}.  This way, XEmacs does not tie up
+the shell window, so you can use that to run other shell commands while
+XEmacs operates its own X windows.  You can begin typing XEmacs commands
+as soon as you direct your keyboard input to the XEmacs frame.
+
address@hidden initial-major-mode
+  Before Emacs reads the first command, you have not had a chance to
+give a command to specify a file to edit.  Since Emacs must always have
+a current buffer for editing, it presents a buffer, by default, a buffer
+named @samp{*scratch*}.  The buffer is in Lisp Interaction mode; you can
+use it to type Lisp expressions and evaluate them, or you can ignore
+that capability and simply doodle.  (You can specify a different major
+mode for this buffer by setting the variable @code{initial-major-mode}
+in your init file.  @xref{Init File}.)
+
+  It is possible to specify files to be visited, Lisp files to be
+loaded, and functions to be called, by giving Emacs arguments in the
+shell command line.  @xref{Command Switches}.  But we don't recommend
+doing this.  The feature exists mainly for compatibility with other
+editors.
+
+  Many other editors are designed to be started afresh each time you
+want to edit.  You edit one file and then exit the editor.  The next
+time you want to edit either another file or the same one, you must run
+the editor again.  With these editors, it makes sense to use a
+command-line argument to say which file to edit.
+
+  But starting a new Emacs each time you want to edit a different file
+does not make sense.  For one thing, this would be annoyingly slow.  For
+another, this would fail to take advantage of Emacs's ability to visit
+more than one file in a single editing session.  And it would lose the
+other accumulated context, such as registers, undo history, and the mark
+ring.
+
+  The recommended way to use XEmacs is to start it only once, just
+after you log in, and do all your editing in the same Emacs session.
+Each time you want to edit a different file, you visit it with the
+existing Emacs, which eventually comes to have many files in it ready
+for editing.  Usually you do not kill the Emacs until you are about to
+log out.  @xref{Files}, for more information on visiting more than one
+file.
+
address@hidden Exiting, Command Switches, Entering Emacs, Top
address@hidden Exiting Emacs
address@hidden exiting
address@hidden killing Emacs
address@hidden suspending
address@hidden leaving Emacs
address@hidden quitting Emacs
address@hidden shrinking XEmacs frame
+
+  There are two commands for exiting Emacs because there are two kinds
+of exiting: @dfn{suspending} Emacs and @dfn{killing} Emacs.
+
+  @dfn{Suspending} means stopping Emacs temporarily and returning
+control to its parent process (usually a shell), allowing you to resume
+editing later in the same Emacs job, with the same buffers, same kill
+ring, same undo history, and so on.  This is the usual way to exit.
+
+  @dfn{Killing} Emacs means destroying the Emacs job.  You can run Emacs
+again later, but you will get a fresh Emacs; there is no way to resume
+the same editing session after it has been killed.
+
address@hidden @kbd
address@hidden C-z
+Suspend Emacs or iconify a frame
+(@code{suspend-emacs-or-iconify-frame}).  If used under the X window
+system, shrink the X window containing the Emacs frame to an icon (see
+below).
address@hidden C-x C-c
+Kill Emacs (@code{save-buffers-kill-emacs}).
address@hidden table
+
+If you use XEmacs under the X window system, @kbd{C-z} shrinks
+the X window containing the Emacs frame to an icon.  The Emacs process
+is stopped temporarily, and control is returned to the window manager.
+If more than one frame is associated with the Emacs process, only the
+frame from which you used @kbd{C-z} is iconified.
+
+To activate the "suspended" Emacs, use the appropriate window manager
+mouse gestures.  Usually left-clicking on the icon reactivates and
+reopens the X window containing the Emacs frame, but the window manager
+you use determines what exactly happens.  To actually kill the Emacs
+process, use @kbd{C-x C-c} or the @b{Exit XEmacs} item on the @b{File}
+menu.
+
address@hidden C-z
address@hidden suspend-emacs
+  To suspend Emacs, type @kbd{C-z} (@code{suspend-emacs}).  This takes
+you back to the shell from which you invoked Emacs.  You can resume
+Emacs with the shell command @samp{%xemacs} in most common shells.
+
+  On systems that do not support suspending programs, @kbd{C-z} starts
+an inferior shell that communicates directly with the terminal.
+Emacs waits until you exit the subshell.  (The way to do that is
+probably with @kbd{C-d} or @samp{exit}, but it depends on which shell
+you use.)  The only way on these systems to get back to the shell from
+which Emacs was run (to log out, for example) is to kill Emacs.
+
+  Suspending also fails if you run Emacs under a shell that doesn't
+support suspending programs, even if the system itself does support it.
+In such a case, you can set the variable @code{cannot-suspend} to a
address@hidden value to force @kbd{C-z} to start an inferior shell.
+(One might also describe Emacs's parent shell as ``inferior'' for
+failing to support job control properly, but that is a matter of taste.)
+
+  When Emacs communicates directly with an X server and creates its own
+dedicated X windows, @kbd{C-z} has a different meaning.  Suspending an
+applications that uses its own X windows is not meaningful or useful.
+Instead, @kbd{C-z} runs the command @code{iconify-or-deiconify-frame},
+which temporarily closes up the selected Emacs frame.
+The way to get back to a shell window is with the window manager.
+
address@hidden C-x C-c
address@hidden save-buffers-kill-emacs
+  To kill Emacs, type @kbd{C-x C-c} (@code{save-buffers-kill-emacs}).  A
+two-character key is used for this to make it harder to type.  Selecting
+the @b{Exit XEmacs} option of the @b{File} menu is an alternate way of
+issuing the command.
+
+Unless a numeric argument is used, this command first offers to save any
+modified file-visiting buffers.  If you do not save all buffers, you are
+asked for reconfirmation with @kbd{yes} before killing Emacs, since any
+changes not saved will be lost forever.  If any subprocesses are still
+running, @kbd{C-x C-c} asks you to confirm killing them, since killing
+Emacs will kill the subprocesses immediately.
+
+  There is no way to restart an Emacs session once you have killed it.
+You can, however, arrange for Emacs to record certain session
+information, such as which files are visited, when you kill it, so that
+the next time you restart Emacs it will try to visit the same files and
+so on.
address@hidden @xref{Saving Emacs Sessions}.
+
+  The operating system usually listens for certain special characters
+whose meaning is to kill or suspend the program you are running.
address@hidden operating system feature is turned off while you are in Emacs.}
+The meanings of @kbd{C-z} and @kbd{C-x C-c} as keys in Emacs were
+inspired by the use of @kbd{C-z} and @kbd{C-c} on several operating
+systems as the characters for stopping or killing a program, but that is
+their only relationship with the operating system.  You can customize
+these keys to run any commands of your choice (@pxref{Keymaps}).
+
address@hidden Command Switches, Startup Paths, Exiting, Top
address@hidden Command Line Switches and Arguments
address@hidden command line arguments
address@hidden arguments (from shell)
+
+  XEmacs supports command line arguments you can use to request
+various actions when invoking Emacs.  The commands are for compatibility
+with other editors and for sophisticated activities.  If you are using
+XEmacs under the X window system, you can also use a number of
+standard Xt command line arguments. Command line arguments are not usually
+needed for editing with Emacs; new users can skip this section.
+
+  Many editors are designed to be started afresh each time you want to
+edit.  You start the editor to edit one file; then exit the editor.  The
+next time you want to edit either another file or the same one, you
+start the editor again.  Under these circumstances, it makes sense to use a
+command line argument to say which file to edit.
+
+  The recommended way to use XEmacs is to start it only once, just
+after you log in, and do all your editing in the same Emacs process.
+Each time you want to edit a file, you visit it using the existing
+Emacs.  Emacs creates a new buffer for each file, and (unless you kill
+some of the buffers) Emacs eventually has many files in it ready for
+editing.  Usually you do not kill the Emacs process until you are about
+to log out.  Since you usually read files by typing commands to Emacs,
+command line arguments for specifying a file when Emacs is started are seldom
+needed.
+
+  Emacs accepts command-line arguments that specify files to visit,
+functions to call, and other activities and operating modes.  If you
+are running XEmacs under the X window system, a number of standard Xt
+command line arguments are available, as well as a few X parameters
+that are XEmacs-specific.
+
+  Options with long names with a single initial hyphen are also
+recognized with the GNU double initial hyphen syntax.  (The reverse
+is not true.)
+
+The following subsections list:
address@hidden @bullet
address@hidden 
+Command line arguments that you can always use
address@hidden 
+Command line arguments that have to appear at the beginning of the
+argument list
address@hidden
+Command line arguments that are only relevant if you are running XEmacs
+under X
address@hidden itemize
+
address@hidden Command Line Arguments for Any Position
+ Command line arguments are processed in the order they appear on the
+command line; however, certain arguments (the ones in the
+second table) must be at the front of the list if they are used.
+
+  Here are the arguments allowed:
+
address@hidden @samp
address@hidden @var{file}
+Visit @var{file} using @code{find-file}.  @xref{Visiting}.
+
address@hidden address@hidden @var{file}
+Visit @var{file} using @code{find-file}, then go to line number
address@hidden in it.
+
address@hidden -load @var{file}
address@hidden -l @var{file}
+Load a file @var{file} of Lisp code with the function @code{load}.
address@hidden Libraries}.
+
address@hidden -funcall @var{function}
address@hidden -f @var{function}
+Call Lisp function @var{function} with no arguments.
+
address@hidden -eval @var{function}
+Interpret the next argument as a Lisp expression, and evaluate it.
+You must be very careful of the shell quoting here.
+
address@hidden -insert @var{file}
address@hidden -i @var{file}
+Insert the contents of @var{file} into the current buffer.  This is like
+what @kbd{M-x insert-buffer} does; @xref{Misc File Ops}.
+
address@hidden -kill
+Exit from Emacs without asking for confirmation.  Always the last
+argument processed, no matter where it appears in the command line.
+
address@hidden -version
address@hidden -V
+Prints version information.  This implies @samp{-batch}.
+
address@hidden
+% xemacs -version
+XEmacs 19.13 of Mon Aug 21 1995 on willow (usg-unix-v) [formerly Lucid Emacs]
address@hidden example
+
address@hidden -help
+Prints a summary of command-line options and then exits.
address@hidden table
+
address@hidden Command Line Arguments (Beginning of Line Only)
+  The following arguments are recognized only at the beginning of the
+command line.  If more than one of them appears, they must appear in the
+order in which they appear in this table.
+
address@hidden @samp
address@hidden --show-dump-id
address@hidden -sd
+Print the ID for the new portable dumper's dump file on the terminal and
+exit.  (Prints an error message and exits if XEmacs was not configured
address@hidden)
+
address@hidden --no-dump-file
address@hidden -nd
+Don't load the dump file.  Roughly equivalent to old temacs.  (Ignored if
+XEmacs was not configured @samp{--pdump}.)
+
address@hidden --terminal @var{file}
address@hidden -t @var{file}
+Use @var{file} instead of the terminal for input and output.  This
+implies the @samp{-nw} option, documented below.
+
address@hidden batch mode
address@hidden -batch
+Run Emacs in @dfn{batch mode}, which means that the text being edited is
+not displayed and the standard Unix interrupt characters such as
address@hidden and @kbd{C-c} continue to have their normal effect.  Emacs in
+batch mode outputs to @code{stderr} only what would normally be printed
+in the echo area under program control.
+
+Batch mode is used for running programs written in Emacs Lisp from shell
+scripts, makefiles, and so on.  Normally the @samp{-l} switch or
address@hidden switch will be used as well, to invoke a Lisp program to do
+the batch processing.
+
address@hidden implies @samp{-q} (do not load an init file).  It also
+causes Emacs to kill itself after all command switches have been
+processed.  In addition, auto-saving is not done except in buffers for
+which it has been explicitly requested.
+
address@hidden --no-windows
address@hidden -nw
+Start up XEmacs in TTY mode (using the TTY XEmacs was started from),
+rather than trying to connect to an X display.  Note that this happens
+automatically if the @samp{DISPLAY} environment variable is not set.
+
address@hidden -debug-init
+Enter the debugger if an error in the init file occurs.
+
address@hidden -debug-paths
+Displays information on how XEmacs constructs the various paths into its
+hierarchy on startup.  (See also @pxref{Startup Paths}.)
+
address@hidden -unmapped
+Do not map the initial frame.  This is useful if you want to start up
+XEmacs as a server (e.g. for gnuserv screens or external client widgets).
+
address@hidden -no-init-file
address@hidden -q
+Do not load your Emacs init file.  @xref{Init File}.
+
address@hidden -no-site-file
+Do not load the site-specific init file @file{lisp/site-start.el}.
+
address@hidden -no-autoloads
+Do not load global symbol files (@file{auto-autoloads}) at startup.
+This implies @samp{-vanilla}. 
+
address@hidden -no-early-packages
+Do not process early packages.  (For more information on startup issues
+concerning the package system, @xref{Startup Paths}.)
+
address@hidden -vanilla
+This is equivalent to @samp{-q -no-site-file -no-early-packages}.
+
address@hidden -user-init-file @var{file}
+Load @var{file} as your Emacs init file instead of
address@hidden/.xemacs/init.el}/@file{~/.emacs}.
+
address@hidden -user-init-directory @var{directory}
+Use @var{directory} as the location of your early package hierarchies
+and the various user-specific initialization files.
+
address@hidden -user @var{user}
address@hidden -u @var{user}
+Equivalent to @samp{-user-init-file address@hidden/.xemacs/init.el
+-user-init-directory address@hidden/.xemacs}, or @samp{-user-init-file
address@hidden/.emacs -user-init-directory address@hidden/.xemacs}, whichever
+init file comes first.  @xref{Init File}.
+
address@hidden table
+
address@hidden command-line-args
+  Note that the init file can get access to the command line argument
+values as the elements of a list in the variable
address@hidden  (The arguments in the second table above will
+already have been processed and will not be in the list.)  The init file
+can override the normal processing of the other arguments by setting
+this variable.
+
+  One way to use command switches is to visit many files automatically:
+
address@hidden
+xemacs *.c
address@hidden example
+
address@hidden
+passes each @code{.c} file as a separate argument to Emacs, so that
+Emacs visits each file (@pxref{Visiting}).
+
+  Here is an advanced example that assumes you have a Lisp program file
+called @file{hack-c-program.el} which, when loaded, performs some useful
+operation on the current buffer, expected to be a C program.
+
address@hidden
+xemacs -batch foo.c -l hack-c-program -f save-buffer -kill > log
address@hidden example
+
address@hidden
+Here Emacs is told to visit @file{foo.c}, load @file{hack-c-program.el}
+(which makes changes in the visited file), save @file{foo.c} (note that
address@hidden is the function that @kbd{C-x C-s} is bound to), and
+then exit to the shell from which the command was executed.  @samp{-batch}
+guarantees there will be no problem redirecting output to @file{log},
+because Emacs will not assume that it has a display terminal to work
+with.
+
address@hidden Command Line Arguments (for XEmacs Under X)
address@hidden frame-title-format
address@hidden frame-icon-title-format
+If you are running XEmacs under X, a number of options are
+available to control color, border, and window title and icon name:
+
address@hidden @samp
address@hidden -title @var{title}
address@hidden -wn @var{title}
address@hidden -T @var{title}
+Use @var{title} as the window title. This sets the
address@hidden variable, which controls the title of the X
+window corresponding to the selected frame.  This is the same format as
address@hidden
+
address@hidden -iconname @var{title}
address@hidden -in @var{title}
+Use @var{title} as the icon name. This sets the
address@hidden variable, which controls the title of
+the icon corresponding to the selected frame.
+
address@hidden -mc @var{color}
+Use @var{color} as the mouse color.
+
address@hidden -cr @var{color}
+Use @var{color} as the text-cursor foreground color.
+
address@hidden -private
+Install a private colormap for XEmacs.
address@hidden table
+
+In addition, XEmacs allows you to use a number of standard Xt
+command line arguments. 
+
address@hidden @samp
+
address@hidden -background @var{color}
address@hidden -bg @var{color}
+Use @var{color} as the background color.
+
address@hidden -bordercolor @var{color}
address@hidden -bd @var{color}
+Use @var{color} as the border color.
+
address@hidden -borderwidth @var{width}
address@hidden -bw @var{width}
+Use @var{width} as the border width.
+
address@hidden -display @var{display}
address@hidden -d @var{display}
+When running under the X window system, create the window containing the
+Emacs frame on the display named @var{display}.
+
address@hidden -foreground @var{color}
address@hidden -fg @var{color}
+Use @var{color} as the foreground color.
+
address@hidden -font @var{name}
address@hidden -fn @var{name}
+Use @var{name} as the default font.
+
address@hidden -geometry @var{spec}
address@hidden -geom @var{spec}
address@hidden -g @var{spec}
+Use the geometry (window size and/or position) specified by @var{spec}.
+
address@hidden -iconic
+Start up iconified.
+
address@hidden -rv
+Bring up Emacs in reverse video.
+
address@hidden -name @var{name}
+Use the resource manager resources specified by @var{name}.
+The default is to use the name of the program (@code{argv[0]}) as
+the resource manager name.
+
address@hidden -xrm
+Read something into the resource database for this invocation of Emacs only.
+
address@hidden table
address@hidden Startup Paths, Packages, Command Switches, Top
address@hidden  node-name,  next,  previous,  up
address@hidden How XEmacs finds Directories and Files
+
address@hidden startup paths
address@hidden directories
+
+XEmacs deals with a multitude of files during operation.  These files
+are spread over many directories, and XEmacs determines the location of
+most of these directories at startup and organizes them into various
+paths.  (A @dfn{path},
address@hidden path
+for the purposes of this section, is simply a list of directories which
+XEmacs searches successively in order to locate a file.)
+
address@hidden XEmacs Directory Hierarchies
address@hidden hierarchies
address@hidden directory hierarchies
+
+Many of the files XEmacs looks for are located within the XEmacs
+installation itself.  However, there are several views of what actually
+constitutes the "XEmacs installation": XEmacs may be run from the
+compilation directory, it may be installed into arbitrary directories,
+spread over several directories unrelated to each other.  Moreover, it
+may subsequently be moved to a different place.  (This last case is not
+as uncommon as it sounds.  Binary kits work this way.)  Consequently,
+XEmacs has quite complex procedures in place to find directories, no
+matter where they may be hidden.
+
+XEmacs will always respect directory options passed to @code{configure}.
+However, if it cannot locate a directory at the configured place, it
+will initiate a search for the directory in any of a number of
address@hidden rooted under a directory which XEmacs assumes contain
+parts of the XEmacs installation; it may locate several such hierarchies
+and search across them.  (Typically, there are just one or two
+hierarchies: the hierarchy where XEmacs was or will be installed, and
+the one where it is being built.)  Such a directory containing a
+hierarchy is called a @dfn{root}.
address@hidden root of a hierarchy
+Whenever this section refers to a directory using the shorthand
address@hidden<root>}, it means that XEmacs searches for it under all
+hierarchies XEmacs was able to scrounge up.  In a
+running XEmacs, the hierarchy roots are stored in the variable
address@hidden
address@hidden emacs-roots
+
address@hidden Package Hierarchies
address@hidden package hierarchies
+
+Many relevant directories and files XEmacs uses are actually not part of
+the core installation.  They are part of any of the many packages
+usually installed on top of an XEmacs installation.  (@xref{Packages}.)
+Hence, they play a prominent role in the various paths XEmacs sets up.
+
+XEmacs locates packages in any of a number of package hierarchies.
+Package hierarchies fall into three groups: @dfn{early}, @dfn{late},
+and @dfn{last},
address@hidden early package hierarchies
address@hidden late package hierarchies
address@hidden last package hierarchies
+according to the relative location at which they show
+up in the various XEmacs paths.  Early package hierarchies are at the
+very front, late ones somewhere in the middle, and last hierarchies are
+(you guessed it) last.
+
+By default, XEmacs expects an early package hierarchy in the
+subdirectory @file{.xemacs/xemacs-packages} of the user's home
+directory.
+
+Moreover, XEmacs expects late hierarchies in the subdirectories
address@hidden, @file{mule-packages}, and @file{xemacs-packages}
+(in that order) of the @file{<root>/lib/xemacs} subdirectory of one of
+the installation hierarchies.  (If you run in-place, these are direct
+subdirectories of the build directory.)  Furthermore, XEmacs will also
+search these subdirectories in the @file{<root>/lib/xemacs-<VERSION>}
+subdirectory and prefer directories found there.
+
+By default, XEmacs does not have a pre-configured last package
+hierarchy.  Last hierarchies are primarily for using package hierarchies
+of outdated versions of XEmacs as a fallback option.  For example, it is
+possible to run XEmacs 21 with the 20.4 package hierarchy as a last
+hierarchy.
+
+It is possible to specify at configure-time the location of the various
+package hierarchies with the @code{--package-path} option to configure.
address@hidden package path
+The early, late, and last components of the package path are separated
+by double instead of single colons.  If all three components are
+present, they locate the early, late, and last package hierarchies
+respectively.  If two components are present, they locate the early and
+late hierarchies.  If only one component is present, it locates the
+late hierarchy.  At run time, the package path may also be specified via
+the @code{EMACSPACKAGEPATH} environment variable.
+
+An XEmacs package is laid out just like a normal installed XEmacs lisp
+directory.  It may have @file{lisp}, @file{etc}, @file{info}, and
address@hidden subdirectories.  XEmacs adds these at appropriate places
+within the various system-wide paths.
+
+There may be any number of package hierarchy directories.
+
address@hidden Directories and Paths
address@hidden paths
+
+Here is a list of the various directories and paths XEmacs tries to
+locate during startup.  XEmacs distinguishes between directories and
+paths specific to @dfn{version}, @dfn{site}, and @dfn{architecture}
+when looking for them.
+
address@hidden @code
address@hidden version-specific
address@hidden version-specific directories
+directories are specific to the version of XEmacs they belong to and
+typically reside under @file{<root>/lib/xemacs-<VERSION>}.
address@hidden site-specific
address@hidden site-specific directories
+directories are independent of the version of XEmacs they belong to and
+typically reside under @file{<root>/lib/xemacs}
address@hidden architecture-specific
address@hidden architecture-specific directories
+directories are specific both to the version of XEmacs and the
+architecture it runs on and typically reside under
address@hidden<root>/lib/xemacs-<VERSION>/<ARCHITECTURE>}.
address@hidden table
+
+During installation, all of these directories may also reside directly
+under @file{<root>}, because that is where they are in the XEmacs tarball.
+
+If XEmacs runs with the @code{-debug-paths} option (@pxref{Command
+Switches}), it will print the values of these variables, hopefully
+aiding in debugging any problems which come up.
+
address@hidden @code
+
address@hidden lisp-directory
address@hidden lisp-directory
+Contains the version-specific location of the Lisp files that come with
+the core distribution of XEmacs.  XEmacs will search it recursively to a
+depth of 1 when setting up @code{load-path}.
+
address@hidden load-path
address@hidden load-path
+Is where XEmacs searches for XEmacs Lisp files with commands like
address@hidden
address@hidden load-library
+It contains the package lisp directories (see further down) and the
+version-specific core Lisp directories.  If the environment variable
address@hidden is set at startup, its directories are prepended to
address@hidden
address@hidden EMACSLOADPATH
+
address@hidden Info-directory-list
address@hidden Info-directory-list
+Contains the location of info files.  (See @ref{(info)}.)  It contains
+the package info directories and the version-specific core
+documentation.  Moreover, XEmacs will add @file{/usr/info},
address@hidden/usr/local/info} as well as the directories of the environment
+variable @code{INFOPATH}
address@hidden INFOPATH
+to @code{Info-directory-list}.
+
address@hidden exec-directory
address@hidden exec-directory
+Is the directory of architecture-dependent files that come with XEmacs,
+especially executable programs intended for XEmacs to invoke.
+
address@hidden exec-path
address@hidden exec-path
+Is the path for executables which XEmacs may want to start.  It contains
+the package executable paths as well as @code{exec-directory}, and the
+directories of the environment variables @code{PATH}
address@hidden PATH
+and @code{EMACSPATH}.
address@hidden EMACSPATH
+
address@hidden doc-directory
address@hidden doc-directory
+Is the directory containing the architecture-specific @file{DOC} file
+that contains documentation for XEmacs' commands.
+
address@hidden data-directory
address@hidden data-directory
+Is the version-specific directory that contains core data files XEmacs uses.
+It may be initialized from the @code{EMACSDATA}
address@hidden EMACSDATA
+environment variable.
+
address@hidden data-directory-list
address@hidden data-directory-list
+Is the path where XEmacs looks for data files.  It contains package data
+directories as well as @code{data-directory}.
+
address@hidden table
+
+
address@hidden This is part of the XEmacs manual.
address@hidden Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software 
Foundation, Inc.
address@hidden See file xemacs.texi for copying conditions.
address@hidden Basic, Undo, Packages, Top
address@hidden Basic Editing Commands
+
address@hidden C-h t
address@hidden help-with-tutorial
+  We now give the basics of how to enter text, make corrections, and
+save the text in a file.  If this material is new to you, you might
+learn it more easily by running the Emacs learn-by-doing tutorial.  To
+use the tutorial, run Emacs and type @kbd{Control-h t}
+(@code{help-with-tutorial}).  You can also use @b{Tutorials} item from
+the @b{Help} menu.
+
+XEmacs comes with many translations of tutorial.  If your XEmacs is with
+MULE and you set up language environment correctly, XEmacs chooses right
+tutorial when available (@pxref{Language Environments}).  If you want
+specific translation, give @kbd{C-h t} a prefix argument, like @kbd{C-u
+C-h t}.
+
+  To clear the screen and redisplay, type @kbd{C-l} (@code{recenter}).
+
address@hidden
+
+* Inserting Text::      Inserting text by simply typing it.
+* Moving Point::        How to move the cursor to the place where you want to
+                         change something.
+* Erasing::            Deleting and killing text.
+* Files: Basic Files.   Visiting, creating, and saving files.
+* Help: Basic Help.     Asking what a character does.
+* Blank Lines::                Commands to make or delete blank lines.
+* Continuation Lines::  Lines too wide for the screen.
+* Position Info::       What page, line, row, or column is point on?
+* Arguments::          Numeric arguments for repeating a command.
address@hidden * Repeating::           A short-cut for repeating the previous 
command.
address@hidden menu
+
address@hidden Inserting Text, Moving Point, , Basic
address@hidden Inserting Text
+
address@hidden insertion
address@hidden point
address@hidden cursor
address@hidden graphic characters
+  To insert printing characters into the text you are editing, just type
+them.  This inserts the characters you type into the buffer at the
+cursor (that is, at @dfn{point}; @pxref{Point}).  The cursor moves
+forward, and any text after the cursor moves forward too.  If the text
+in the buffer is @samp{FOOBAR}, with the cursor before the @samp{B},
+then if you type @kbd{XX}, you get @samp{FOOXXBAR}, with the cursor
+still before the @samp{B}.
+
address@hidden BS
address@hidden deletion
+   To @dfn{delete} text you have just inserted, use @key{BS}.  @key{BS}
+deletes the character @emph{before} the cursor (not the one that the
+cursor is on top of or under; that is the character @var{after} the
+cursor).  The cursor and all characters after it move backwards.
+Therefore, if you type a printing character and then type @key{BS}, they
+cancel out.
+
address@hidden RET
address@hidden newline
+   To end a line and start typing a new one, type @key{RET}.  This
+inserts a newline character in the buffer.  If point is in the middle of
+a line, @key{RET} splits the line.  Typing @key{DEL} when the cursor is
+at the beginning of a line deletes the preceding newline, thus joining
+the line with the preceding line.
+
+  Emacs can split lines automatically when they become too long, if you
+turn on a special minor mode called @dfn{Auto Fill} mode.
address@hidden, for how to use Auto Fill mode.
+
+  If you prefer to have text characters replace (overwrite) existing
+text rather than shove it to the right, you can enable Overwrite mode,
+a minor mode.  @xref{Minor Modes}.
+
address@hidden quoting
address@hidden C-q
address@hidden quoted-insert
+  Direct insertion works for printing characters and @key{SPC}, but other
+characters act as editing commands and do not insert themselves.  If you
+need to insert a control character or a character whose code is above 200
+octal, you must @dfn{quote} it by typing the character @kbd{Control-q}
+(@code{quoted-insert}) first.  (This character's name is normally written
address@hidden for short.)  There are two ways to use @kbd{C-q}:
+
address@hidden @bullet
address@hidden
address@hidden followed by any non-graphic character (even @kbd{C-g})
+inserts that character.
+
address@hidden
address@hidden followed by a sequence of octal digits inserts the character
+with the specified octal character code.  You can use any number of
+octal digits; any non-digit terminates the sequence.  If the terminating
+character is @key{RET}, it serves only to terminate the sequence; any
+other non-digit is itself used as input after terminating the sequence.
+(The use of octal sequences is disabled in ordinary non-binary Overwrite
+mode, to give you a convenient way to insert a digit instead of
+overwriting with it.)
address@hidden itemize
+
address@hidden
+A numeric argument to @kbd{C-q} specifies how many copies of the quoted
+character should be inserted (@pxref{Arguments}).
+
address@hidden backward-or-forward-delete-char
address@hidden newline
address@hidden self-insert
+  Customization information: @key{DEL}, in most modes, runs the command
address@hidden; @key{RET} runs the command
address@hidden, and self-inserting printing characters run the command
address@hidden, which inserts whatever character was typed to invoke
+it.  Some major modes rebind @key{DEL} to other commands.
+
address@hidden Moving Point, Erasing, Inserting Text, Basic
address@hidden Changing the Location of Point
+
address@hidden arrow keys
address@hidden LEFT
address@hidden RIGHT
address@hidden UP
address@hidden DOWN
address@hidden moving point
address@hidden movement
address@hidden cursor motion
address@hidden moving the cursor
+  To do more than insert characters, you have to know how to move point
+(@pxref{Point}).  The simplest way to do this is with arrow keys, or by
+clicking the left mouse button where you want to move to.
+
+  NOTE: Many of the following commands have two versions, one that uses
+the function keys (e.g. @key{LEFT} or @key{END}) and one that doesn't.
+The former versions may only be available on X terminals (i.e. not on
+TTY's), but the latter are available on all terminals.
+
address@hidden C-a
address@hidden C-e
address@hidden C-f
address@hidden C-b
address@hidden C-n
address@hidden C-p
address@hidden C-l
address@hidden C-t
address@hidden C-v
address@hidden M-v
address@hidden M->
address@hidden M-<
address@hidden M-r
address@hidden LEFT
address@hidden RIGHT
address@hidden UP
address@hidden DOWN
address@hidden HOME
address@hidden END
address@hidden PGUP
address@hidden PGDN
address@hidden C-LEFT
address@hidden C-RIGHT
address@hidden C-HOME
address@hidden C-END
address@hidden beginning-of-line
address@hidden end-of-line
address@hidden forward-char
address@hidden backward-char
address@hidden next-line
address@hidden previous-line
address@hidden recenter
address@hidden transpose-chars
address@hidden beginning-of-buffer
address@hidden end-of-buffer
address@hidden goto-char
address@hidden goto-line
address@hidden move-to-window-line
address@hidden @kbd
address@hidden C-a
address@hidden HOME
+Move to the beginning of the line (@code{beginning-of-line}).
address@hidden C-e
address@hidden END
+Move to the end of the line (@code{end-of-line}).
address@hidden C-f
address@hidden RIGHT
+Move forward one character (@code{forward-char}).
address@hidden C-b
address@hidden LEFT
+Move backward one character (@code{backward-char}).
address@hidden M-f
address@hidden C-RIGHT
+Move forward one word (@code{forward-word}).
address@hidden M-b
address@hidden C-LEFT
+Move backward one word (@code{backward-word}).
address@hidden C-n
address@hidden DOWN
+Move down one line, vertically (@code{next-line}).  This command
+attempts to keep the horizontal position unchanged, so if you start in
+the middle of one line, you end in the middle of the next.  When on the
+last line of text, @kbd{C-n} creates a new line and moves onto it.
address@hidden C-p
address@hidden UP
+Move up one line, vertically (@code{previous-line}).
address@hidden C-v
address@hidden PGDN
+Move down one page, vertically (@code{scroll-up}).
address@hidden M-v
address@hidden PGUP
+Move up one page, vertically (@code{scroll-down}).
address@hidden C-l
+Clear the frame and reprint everything (@code{recenter}).  Text moves
+on the frame to bring point to the center of the window.
address@hidden M-r
+Move point to left margin, vertically centered in the window
+(@code{move-to-window-line}).  Text does not move on the screen.
+
+A numeric argument says which screen line to place point on.  It counts
+screen lines down from the top of the window (zero for the top line).  A
+negative argument counts lines from the bottom (@minus{}1 for the bottom
+line).
address@hidden C-t
+Transpose two characters, the ones before and after the cursor
+(@code{transpose-chars}).
address@hidden M-<
address@hidden C-HOME
+Move to the top of the buffer (@code{beginning-of-buffer}).  With
+numeric argument @var{n}, move to @var{n}/10 of the way from the top.
address@hidden, for more information on numeric address@hidden
address@hidden M->
address@hidden C-END
+Move to the end of the buffer (@code{end-of-buffer}).
address@hidden M-x goto-char
+Read a number @var{n} and move point to buffer position @var{n}.
+Position 1 is the beginning of the buffer.
address@hidden M-g
+Read a number @var{n} and move point to line number @var{n}
+(@code{goto-line}).  Line 1 is the beginning of the buffer.
address@hidden @item C-x C-n
address@hidden M-x set-goal-column
address@hidden set-goal-column
+Use the current column of point as the @dfn{semi-permanent goal column} for
address@hidden and @kbd{C-p} (@code{set-goal-column}).  Henceforth, those
+commands always move to this column in each line moved into, or as
+close as possible given the contents of the line.  This goal column remains
+in effect until canceled.
address@hidden @item C-u C-x C-n
address@hidden C-u M-x set-goal-column
+Cancel the goal column.  Henceforth, @kbd{C-n} and @kbd{C-p} once
+again try to avoid changing the horizontal position, as usual.
address@hidden table
+
address@hidden track-eol
+  If you set the variable @code{track-eol} to a address@hidden value,
+then @kbd{C-n} and @kbd{C-p} when at the end of the starting line move
+to the end of another line.  Normally, @code{track-eol} is @code{nil}.
address@hidden, for how to set variables such as @code{track-eol}.
+
address@hidden next-line-add-newlines
+  Normally, @kbd{C-n} on the last line of a buffer appends a newline to
+it.  If the variable @code{next-line-add-newlines} is @code{nil}, then
address@hidden gets an error instead (like @kbd{C-p} on the first line).
+
address@hidden Erasing, Basic Files, Moving Point, Basic
address@hidden Erasing Text
+
address@hidden @kbd
address@hidden @key{DEL}
+Delete the character before or after point
+(@code{backward-or-forward-delete-char}).  You can customize
+this behavior by setting the variable @code{delete-key-deletes-forward}.
address@hidden C-d
+Delete the character after point (@code{delete-char}).
address@hidden C-k
+Kill to the end of the line (@code{kill-line}).
address@hidden M-d
+Kill forward to the end of the next word (@code{kill-word}).
address@hidden address@hidden
+Kill back to the beginning of the previous word
+(@code{backward-kill-word}).
address@hidden table
+
address@hidden killing characters and lines
address@hidden deleting characters and lines
address@hidden erasing characters and lines
+  You already know about the @key{DEL} key which deletes the character
+before point (that is, before the cursor).  Another key, @kbd{Control-d}
+(@kbd{C-d} for short), deletes the character after point (that is, the
+character that the cursor is on).  This shifts the rest of the text on
+the line to the left.  If you type @kbd{C-d} at the end of a line, it
+joins together that line and the next line.
+
+  To erase a larger amount of text, use the @kbd{C-k} key, which kills a
+line at a time.  If you type @kbd{C-k} at the beginning or middle of a
+line, it kills all the text up to the end of the line.  If you type
address@hidden at the end of a line, it joins that line and the next line.
+
+  @xref{Killing}, for more flexible ways of killing text.
+
address@hidden Basic Files, Basic Help, Erasing, Basic
address@hidden Files
+
address@hidden files
+  The commands described above are sufficient for creating and altering
+text in an Emacs buffer; the more advanced Emacs commands just make
+things easier.  But to keep any text permanently you must put it in a
address@hidden  Files are named units of text which are stored by the
+operating system for you to retrieve later by name.  To look at or use
+the contents of a file in any way, including editing the file with
+Emacs, you must specify the file name.
+
+  Consider a file named @file{/usr/rms/foo.c}.  To begin editing
+this file from Emacs, type:
+
address@hidden
+C-x C-f /usr/rms/foo.c @key{RET}
address@hidden example
+
address@hidden
+Here the file name is given as an @dfn{argument} to the command @kbd{C-x
+C-f} (@code{find-file}).  That command uses the @dfn{minibuffer} to
+read the argument, and you type @key{RET} to terminate the argument
+(@pxref{Minibuffer}).
+
+  You can also use the @b{Open...} menu item from the @b{File} menu, then
+type the name of the file to the prompt.
+
+  Emacs obeys the command by @dfn{visiting} the file: creating a buffer,
+copying the contents of the file into the buffer, and then displaying
+the buffer for you to edit.  If you alter the text, you can @dfn{save}
+the new text in the file by typing @kbd{C-x C-s} (@code{save-buffer}) or
+choosing @b{Save Buffer} from the @b{File} menu.  This makes the changes
+permanent by copying the altered buffer contents back into the file
address@hidden/usr/rms/foo.c}.  Until you save, the changes exist only inside
+Emacs, and the file @file{foo.c} is unaltered.
+
+  To create a file, visit the file with @kbd{C-x C-f} as if it already
+existed or choose @b{Open...} from the @b{File} menu and provide the
+name for the new file.  Emacs will create an empty buffer in which you
+can insert the text you want to put in the file.  When you save the
+buffer with @kbd{C-x C-s}, or by choosing @b{Save Buffer} from the
address@hidden menu, the file is created.
+
+  To learn more about using files, @xref{Files}.
+
address@hidden Basic Help, Blank Lines, Basic Files, Basic
address@hidden Help
+
address@hidden getting help with keys
+  If you forget what a key does, you can find out with the Help
+character, which is @kbd{C-h} (or @key{F1}, which is an alias for
address@hidden).  Type @kbd{C-h k} followed by the key you want to know
+about; for example, @kbd{C-h k C-n} tells you all about what @kbd{C-n}
+does.  @kbd{C-h} is a prefix key; @kbd{C-h k} is just one of its
+subcommands (the command @code{describe-key}).  The other subcommands of
address@hidden provide different kinds of help.  Type @kbd{C-h} twice to get
+a description of all the help facilities.  @xref{Help}.
+
address@hidden Blank Lines, Continuation Lines, Basic Help, Basic
address@hidden Blank Lines
+
address@hidden inserting blank lines
address@hidden deleting blank lines
+  Here are special commands and techniques for putting in and taking out
+blank lines.
+
address@hidden widecommands
address@hidden @kbd
address@hidden C-o
+Insert one or more blank lines after the cursor (@code{open-line}).
address@hidden C-x C-o
+Delete all but one of many consecutive blank lines
+(@code{delete-blank-lines}).
address@hidden table
+
address@hidden C-o
address@hidden C-x C-o
address@hidden blank lines
address@hidden open-line
address@hidden delete-blank-lines
+  When you want to insert a new line of text before an existing line, you
+can do it by typing the new line of text, followed by @key{RET}.
+However, it may be easier to see what you are doing if you first make a
+blank line and then insert the desired text into it.  This is easy to do
+using the key @kbd{C-o} (@code{open-line}), which inserts a newline
+after point but leaves point in front of the newline.  After @kbd{C-o},
+type the text for the new line.  @kbd{C-o F O O} has the same effect as
address@hidden@kbd{F O O @key{RET}}}, except for the final location of point.
+
+  You can make several blank lines by typing @kbd{C-o} several times, or
+by giving it a numeric argument to tell it how many blank lines to make.
address@hidden, for how.  If you have a fill prefix, then @kbd{C-o}
+command inserts the fill prefix on the new line, when you use it at the
+beginning of a line.  @xref{Fill Prefix}.
+
+  The easy way to get rid of extra blank lines is with the command
address@hidden C-o} (@code{delete-blank-lines}).  @kbd{C-x C-o} in a run of
+several blank lines deletes all but one of them.  @kbd{C-x C-o} on a
+solitary blank line deletes that blank line.  When point is on a
+nonblank line, @kbd{C-x C-o} deletes any blank lines following that
+nonblank line.
+
address@hidden Continuation Lines, Position Info, Blank Lines, Basic
address@hidden Continuation Lines
+
address@hidden continuation line
address@hidden wrapping
address@hidden line wrapping
+  If you add too many characters to one line without breaking it with
address@hidden, the line will grow to occupy two (or more) lines on the
+screen, with a curved arrow at the extreme right margin of all but the
+last of them.  The curved arrow says that the following screen line is
+not really a distinct line in the text, but just the @dfn{continuation}
+of a line too long to fit the screen.  Continuation is also called
address@hidden wrapping}.
+
+  Sometimes it is nice to have Emacs insert newlines automatically when
+a line gets too long.  Continuation on the screen does not do that.  Use
+Auto Fill mode (@pxref{Filling}) if that's what you want.
+
address@hidden truncate-lines
address@hidden truncation
+  Instead of continuation, long lines can be displayed by @dfn{truncation}.
+This means that all the characters that do not fit in the width of the
+frame or window do not appear at all.  They remain in the buffer,
+temporarily invisible.  Right arrow in the last column (instead of the
+curved arrow) inform you that truncation is in effect.
+
+  Truncation instead of continuation happens whenever horizontal
+scrolling is in use, and optionally in all side-by-side windows
+(@pxref{Windows}).  You can enable truncation for a particular buffer by
+setting the variable @code{truncate-lines} to address@hidden in that
+buffer.  (@xref{Variables}.)  Altering the value of
address@hidden makes it local to the current buffer; until that
+time, the default value is in effect.  The default is initially
address@hidden  @xref{Locals}.
+
+  @xref{Display Vars}, for additional variables that affect how text is
+displayed.
+
address@hidden Position Info, Arguments, Continuation Lines, Basic
address@hidden Cursor Position Information
+
+  If you are accustomed to other display editors, you may be surprised
+that Emacs does not always display the page number or line number of
+point in the mode line.  In Emacs, this information is only rarely
+needed, and a number of commands are available to compute and print it.
+Since text is stored in a way that makes it difficult to compute the
+information, it is not displayed all the time.
+
address@hidden @kbd
address@hidden M-x what-page
+Print page number of point, and line number within page.
address@hidden M-x what-line
+Print line number of point in the buffer.
address@hidden M-x line-number-mode
+Toggle automatic display of current line number.
address@hidden M-=
+Print number of lines and characters in the current region
+(@code{count-lines-region}).  @xref{Mark}, for information about the
+region.
address@hidden C-x =
+Print character code of character after point, character position of
+point, and column of point (@code{what-cursor-position}).
address@hidden table
+
address@hidden what-page
address@hidden what-line
address@hidden line number
address@hidden page number
address@hidden M-=
address@hidden count-lines-region
+
+  There are several commands for printing line numbers:
+
address@hidden @bullet
address@hidden
address@hidden what-line} counts lines from the beginning of the file and
+prints the line number point is on.  The first line of the file is line
+number 1.  You can use these numbers as arguments to @kbd{M-x
+goto-line}.
address@hidden
address@hidden what-page} counts pages from the beginning of the file, and
+counts lines within the page, printing both of them.  @xref{Pages}, for
+the command @kbd{C-x l}, which counts the lines in the current page.
address@hidden
address@hidden (@code{count-lines-region}) prints the number of lines in the
+region (@pxref{Mark}).  @xref{Pages}, for the command @kbd{C-x l} which
+counts the lines in the
address@hidden itemize
+
address@hidden C-x =
address@hidden what-cursor-position
+  The command @kbd{C-x =} (@code{what-cursor-position}) can be used to find out
+the column that the cursor is in, and other miscellaneous information about
+point.  It prints a line in the echo area that looks like this:
+
address@hidden
+Char: c (0143, 99, 0x63)  point=18862 of 24800(76%)  column 53 
address@hidden example
+
address@hidden
+(In fact, this is the output produced when point is before @samp{column
+53} in the example.)
+
+  The four values after @samp{Char:} describe the character that follows
+point, first by showing it and then by giving its character code in
+octal, decimal and hex. 
+
+  @samp{point=} is followed by the position of point expressed as a character
+count.  The front of the buffer counts as position 1, one character later
+as 2, and so on.  The next, larger number is the total number of characters
+in the buffer.  Afterward in parentheses comes the position expressed as a
+percentage of the total size.
+
+  @samp{column} is followed by the horizontal position of point, in
+columns from the left edge of the window.
+
+  If the buffer has been narrowed, making some of the text at the
+beginning and the end temporarily invisible, @kbd{C-x =} prints
+additional text describing the current visible range.  For example, it
+might say:
+
address@hidden
+Char: c (0143, 99, 0x63)  point=19674 of 24575(80%) <19591 - 19703>  column 69 
address@hidden smallexample
+
address@hidden
+where the two extra numbers give the smallest and largest character position
+that point is allowed to assume.  The characters between those two positions
+are the visible ones.  @xref{Narrowing}.
+
+  If point is at the end of the buffer (or the end of the visible part),
address@hidden =} omits any description of the character after point.
+The output looks like
+
address@hidden
+point=563026 of 563025(100%)  column 0
address@hidden smallexample
+
address@hidden Arguments,, Position Info, Basic
address@hidden Numeric Arguments
address@hidden numeric arguments
+
+  In mathematics and computer usage, the word @dfn{argument} means
+``data provided to a function or operation.''  Any Emacs command can be
+given a @dfn{numeric argument} (also called a @dfn{prefix argument}).
+Some commands interpret the argument as a repetition count.  For
+example, giving an argument of ten to the key @kbd{C-f} (the command
address@hidden, move forward one character) moves forward ten
+characters.  With these commands, no argument is equivalent to an
+argument of one.  Negative arguments are allowed.  Often they tell a
+command to move or act  in the opposite direction.
+
address@hidden M-1
address@hidden address@hidden
address@hidden digit-argument
address@hidden negative-argument
+  If your keyboard has a @key{META} key (labelled with a diamond on
+Sun-type keyboards and labelled @samp{Alt} on some other keyboards), the
+easiest way to specify a numeric argument is to type digits and/or a
+minus sign while holding down the @key{META} key.  For example,
address@hidden
+M-5 C-n
address@hidden example
address@hidden
+would move down five lines.  The characters @kbd{Meta-1}, @kbd{Meta-2},
+and so on, as well as @kbd{Meta--}, do this because they are keys bound
+to commands (@code{digit-argument} and @code{negative-argument}) that
+are defined to contribute to an argument for the next command.  Digits
+and @kbd{-} modified with Control, or Control and Meta, also specify
+numeric arguments.
+
address@hidden C-u
address@hidden universal-argument
+  Another way of specifying an argument is to use the @kbd{C-u}
+(@code{universal-argument}) command followed by the digits of the
+argument.  With @kbd{C-u}, you can type the argument digits without
+holding down modifier keys; @kbd{C-u} works on all terminals.  To type a
+negative argument, type a minus sign after @kbd{C-u}.  Just a minus sign
+without digits normally means @minus{}1.
+
+  @kbd{C-u} followed by a character which is neither a digit nor a minus
+sign has the special meaning of ``multiply by four''.  It multiplies the
+argument for the next command by four.  @kbd{C-u} twice multiplies it by
+sixteen.  Thus, @kbd{C-u C-u C-f} moves forward sixteen characters.  This
+is a good way to move forward ``fast'', since it moves about 1/5 of a line
+in the usual size frame.  Other useful combinations are @kbd{C-u C-n},
address@hidden C-u C-n} (move down a good fraction of a frame), @kbd{C-u C-u
+C-o} (make ``a lot'' of blank lines), and @kbd{C-u C-k} (kill four
+lines).
+
+  Some commands care only about whether there is an argument and not about
+its value.  For example, the command @kbd{M-q} (@code{fill-paragraph}) with
+no argument fills text; with an argument, it justifies the text as well.
+(@xref{Filling}, for more information on @kbd{M-q}.)  Just @kbd{C-u} is a
+handy way of providing an argument for such commands.
+
+  Some commands use the value of the argument as a repeat count, but do
+something peculiar when there is no argument.  For example, the command
address@hidden (@code{kill-line}) with argument @var{n} kills @var{n} lines,
+including their terminating newlines.  But @kbd{C-k} with no argument is
+special: it kills the text up to the next newline, or, if point is right at
+the end of the line, it kills the newline itself.  Thus, two @kbd{C-k}
+commands with no arguments can kill a non-blank line, just like @kbd{C-k}
+with an argument of one.  (@xref{Killing}, for more information on
address@hidden)
+
+  A few commands treat a plain @kbd{C-u} differently from an ordinary
+argument.  A few others may treat an argument of just a minus sign
+differently from an argument of @minus{}1.  These unusual cases are
+described when they come up; they are always for reasons of convenience
+of use of the individual command.
+
+  You can use a numeric argument to insert multiple copies of a
+character.  This is straightforward unless the character is a digit; for
+example, @kbd{C-u 6 4 a} inserts 64 copies of the character @samp{a}.
+But this does not work for inserting digits; @kbd{C-u 6 4 1} specifies
+an argument of 641, rather than inserting anything.  To separate the
+digit to insert from the argument, type another @kbd{C-u}; for example,
address@hidden 6 4 C-u 1} does insert 64 copies of the character @samp{1}.
+
+  We use the term ``prefix argument'' as well as ``numeric argument'' to
+emphasize that you type the argument before the command, and to
+distinguish these arguments from minibuffer arguments that come after
+the command.
+
+
address@hidden Undo, Minibuffer, Basic, Top
address@hidden Undoing Changes
address@hidden undo
address@hidden mistakes, correcting
+
+  Emacs allows you to undo all changes you make to the text of a buffer,
+up to a certain amount of change (8000 characters).  Each buffer records
+changes individually, and the undo command always applies to the
+current buffer.  Usually each editing command makes a separate entry
+in the undo records, but some commands such as @code{query-replace}
+make many entries, and very simple commands such as self-inserting
+characters are often grouped to make undoing less tedious.
+
address@hidden @kbd
address@hidden C-x u
+Undo one batch of changes (usually, one command's worth) (@code{undo}).
address@hidden C-_
+The same.
address@hidden table
+
address@hidden C-x u
address@hidden C-_
address@hidden undo
+  The command @kbd{C-x u} or @kbd{C-_} allows you to undo changes.  The
+first time you give this command, it undoes the last change.  Point
+moves to the text affected by the undo, so you can see what was undone.
+
+  Consecutive repetitions of the @kbd{C-_} or @kbd{C-x u} commands undo
+earlier and earlier changes, back to the limit of what has been
+recorded.  If all recorded changes have already been undone, the undo
+command prints an error message and does nothing.
+
+  Any command other than an undo command breaks the sequence of undo
+commands.  Starting at this moment, the previous undo commands are
+considered ordinary changes that can themselves be undone.  Thus, you can
+redo changes you have undone by typing @kbd{C-f} or any other command
+that have no important effect, and then using more undo commands.
+
+  If you notice that a buffer has been modified accidentally, the
+easiest way to recover is to type @kbd{C-_} repeatedly until the stars
+disappear from the front of the mode line.  When that happens, all the
+modifications you made have been canceled.  If you do not remember
+whether you changed the buffer deliberately, type @kbd{C-_} once. When
+you see Emacs undo the last change you made, you probably remember why you
+made it.  If the change was an accident, leave it undone.  If it was
+deliberate, redo the change as described in the preceding paragraph.
+
+  Whenever an undo command makes the stars disappear from the mode line,
+the buffer contents is the same as it was when the file was last read in
+or saved.
+
+  Not all buffers record undo information.  Buffers whose names start with
+spaces don't; these buffers are used internally by Emacs and its extensions
+to hold text that users don't normally look at or edit.  Minibuffers,
+help buffers, and documentation buffers also don't record undo information.
+
+  Emacs can remember at most 8000 or so characters of deleted or
+modified text in any one buffer for reinsertion by the undo command.
+There is also a limit on the number of individual insert, delete, or
+change actions that Emacs can remember.
+
+  There are two keys to run the @code{undo} command, @kbd{C-x u} and
address@hidden, because on some keyboards, it is not obvious how to type
address@hidden @kbd{C-x u} is an alternative you can type in the same
+fashion on any terminal.
+
address@hidden Minibuffer, M-x, Undo, Top
address@hidden The Minibuffer
address@hidden minibuffer
+
+  The @dfn{minibuffer} is the facility used by XEmacs commands to read
+arguments more complicated than a single number.  Minibuffer arguments
+can be file names, buffer names, Lisp function names, XEmacs command
+names, Lisp expressions, and many other things, depending on the command
+reading the argument.  You can use the usual XEmacs editing commands in
+the minibuffer to edit the argument text.
+
address@hidden prompt
+  When the minibuffer is in use, it appears in the echo area, and the
+cursor moves there.  The beginning of the minibuffer line displays a
address@hidden which says what kind of input you should supply and how it
+will be used.  Often this prompt is derived from the name of the command
+that the argument is for.  The prompt normally ends with a colon.
+
address@hidden default argument
+  Sometimes a @dfn{default argument} appears in parentheses after the
+colon; it, too, is part of the prompt.  The default is used as the
+argument value if you enter an empty argument (e.g., by just typing @key{RET}).
+For example, commands that read buffer names always show a default, which
+is the name of the buffer that will be used if you type just @key{RET}.
+
address@hidden C-g
+  The simplest way to enter a minibuffer argument is to type the text
+you want, terminated by @key{RET} which exits the minibuffer.  You can
+cancel the command that wants the argument, and get out of the
+minibuffer, by typing @kbd{C-g}.
+
+  Since the minibuffer uses the screen space of the echo area, it can
+conflict with other ways XEmacs customarily uses the echo area.  Here is
+how XEmacs handles such conflicts:
+
address@hidden @bullet
address@hidden
+If a command gets an error while you are in the minibuffer, this does
+not cancel the minibuffer.  However, the echo area is needed for the
+error message and therefore the minibuffer itself is hidden for a
+while.  It comes back after a few seconds, or as soon as you type
+anything.
+
address@hidden
+If in the minibuffer you use a command whose purpose is to print a
+message in the echo area, such as @kbd{C-x =}, the message is printed
+normally, and the minibuffer is hidden for a while.  It comes back
+after a few seconds, or as soon as you type anything.
+
address@hidden
+Echoing of keystrokes does not take place while the minibuffer is in
+use.
address@hidden itemize
+
address@hidden
+* File: Minibuffer File.  Entering file names with the minibuffer.
+* Edit: Minibuffer Edit.  How to edit in the minibuffer.
+* Completion::           An abbreviation facility for minibuffer input.
+* Minibuffer History::    Reusing recent minibuffer arguments.
+* Repetition::           Re-executing commands that used the minibuffer.
address@hidden menu
+
address@hidden Minibuffer File, Minibuffer Edit, Minibuffer, Minibuffer
address@hidden Minibuffers for File Names
+
+  Sometimes the minibuffer starts out with text in it.  For example, when
+you are supposed to give a file name, the minibuffer starts out containing
+the @dfn{default directory}, which ends with a slash.  This is to inform
+you which directory the file will be found in if you do not specify a
+directory.
+
+  For example, the minibuffer might start out with these contents:
+
address@hidden
+Find File: /u2/emacs/src/
address@hidden example
+
address@hidden
+where @samp{Find File:@: } is the prompt.  Typing @kbd{buffer.c}
+specifies the file @file{/u2/emacs/src/buffer.c}.  To find files in
+nearby directories, use @kbd{..}; thus, if you type
address@hidden/lisp/simple.el}, you will get the file named
address@hidden/u2/emacs/lisp/simple.el}.  Alternatively, you can kill with
address@hidden@key{DEL}} the directory names you don't want (@pxref{Words}).
+
+  If you don't want any of the default, you can kill it with @kbd{C-a
+C-k}.  But you don't need to kill the default; you can simply ignore it.
+Insert an absolute file name, one starting with a slash or a tilde,
+after the default directory.  For example, to specify the file
address@hidden/etc/termcap}, just insert that name, giving these minibuffer
+contents:
+
address@hidden
+Find File: /u2/emacs/src//etc/termcap
address@hidden example
+
address@hidden
address@hidden // in file name
address@hidden double slash in file name
address@hidden slashes repeated in file name
+XEmacs gives a special meaning to a double slash (which is not normally
+a useful thing to write): it means, ``ignore everything before the
+second slash in the pair.''  Thus, @samp{/u2/emacs/src/} is ignored in
+the example above, and you get the file @file{/etc/termcap}.
+
address@hidden insert-default-directory
+If you set @code{insert-default-directory} to @code{nil}, the default
+directory is not inserted in the minibuffer.  This way, the minibuffer
+starts out empty.  But the name you type, if relative, is still
+interpreted with respect to the same default directory.
+
address@hidden Minibuffer Edit, Completion, Minibuffer File, Minibuffer
address@hidden Editing in the Minibuffer
+
+  The minibuffer is an XEmacs buffer (albeit a peculiar one), and the
+usual XEmacs commands are available for editing the text of an argument
+you are entering.
+
+  Since @key{RET} in the minibuffer is defined to exit the minibuffer,
+you can't use it to insert a newline in the minibuffer.  To do that,
+type @kbd{C-o} or @kbd{C-q C-j}.  (Recall that a newline is really the
+character control-J.)
+
+  The minibuffer has its own window which always has space on the screen
+but acts as if it were not there when the minibuffer is not in use.
+When the minibuffer is in use, its window is just like the others; you
+can switch to another window with @kbd{C-x o}, edit text in other
+windows and perhaps even visit more files, before returning to the
+minibuffer to submit the argument.  You can kill text in another window,
+return to the minibuffer window, and then yank the text to use it in the
+argument.  @xref{Windows}.
+
+  There are some restrictions on the use of the minibuffer window,
+however.  You cannot switch buffers in it---the minibuffer and its
+window are permanently attached.  Also, you cannot split or kill the
+minibuffer window. But you can make it taller in the normal fashion with
address@hidden ^}.  If you enable Resize-Minibuffer mode, then the
+minibuffer window expands vertically as necessary to hold the text that
+you put in the minibuffer.  Use @kbd{M-x resize-minibuffer-mode} to
+enable or disable this minor mode (@pxref{Minor Modes}).
+
address@hidden C-M-v
+  If while in the minibuffer you issue a command that displays help text
+of any sort in another window, you can use the @kbd{C-M-v} command while
+in the minibuffer to scroll the help text.  This lasts until you exit
+the minibuffer.  This feature is especially useful if a completing
+minibuffer gives you a list of possible completions.  @xref{Other Window}.
+
address@hidden minibuffer-confirm-incomplete
+If the variable @code{minibuffer-confirm-incomplete} is @code{t}, you
+are asked for confirmation if there is no known completion for the text
+you typed. For example, if you attempted to visit a non-existent file,
+the minibuffer might read:
address@hidden
+        Find File: chocolate_bar.c [no completions, confirm]
address@hidden example
+If you press @kbd{Return} again, that confirms the filename. Otherwise,
+you can continue editing it. 
+
+ XEmacs supports recursive use of the minibuffer.  However, it is easy
+to do this by accident (because of autorepeating keyboards, for example)
+and get confused.  Therefore, most XEmacs commands that use the
+minibuffer refuse to operate if the minibuffer window is selected.  If
+the minibuffer is active but you have switched to a different window,
+recursive use of the minibuffer is allowed---if you know enough to try
+to do this, you probably will not get confused.
+
address@hidden enable-recursive-minibuffers
+  If you set the variable @code{enable-recursive-minibuffers} to a
address@hidden, recursive use of the minibuffer is always allowed.
+
address@hidden Completion, Minibuffer History, Minibuffer Edit, Minibuffer
address@hidden Completion
address@hidden completion
+
+  For certain kinds of arguments, you can use @dfn{completion} to enter
+the argument value.  Completion means that you type part of the
+argument, then XEmacs visibly fills in the rest, or as much as
+can be determined from the part you have typed.
+
+  When completion is available, certain address@hidden, @key{RET}, and
address@hidden rebound to complete the text present in the
+minibuffer into a longer string that it stands for, by matching it
+against a set of @dfn{completion alternatives} provided by the command
+reading the argument.  @kbd{?} is defined to display a list of possible
+completions of what you have inserted.
+
+  For example, when @kbd{M-x} uses the minibuffer to read the name of a
+command, it provides a list of all available XEmacs command names to
+complete against.  The completion keys match the text in the minibuffer
+against all the command names, find any additional name characters
+implied by the ones already present in the minibuffer, and add those
+characters to the ones you have given.  This is what makes it possible
+to type @kbd{M-x inse @key{SPC} b @key{RET}} instead of @kbd{M-x
+insert-buffer @key{RET}} (for example).
+
+  Case is normally significant in completion because it is significant
+in most of the names that you can complete (buffer names, file names and
+command names).  Thus, @samp{fo} does not complete to @samp{Foo}.  When
+you are completing a name in which case does not matter, case may be
+ignored for completion's sake if specified by program.
+
+When a completion list is displayed, the completions will highlight as
+you move the mouse over them.  Clicking the middle mouse button on any 
+highlighted completion will ``select'' it just as if you had typed it in
+and hit @key{RET}.
+
address@hidden
+* Example: Completion Example.
+* Commands: Completion Commands.
+* Strict Completion::
+* Options: Completion Options.
address@hidden menu
+
address@hidden Completion Example, Completion Commands, Completion, Completion
address@hidden Completion Example
+
address@hidden TAB
address@hidden minibuffer-complete
+  A concrete example may help here.  If you type @kbd{M-x au @key{TAB}},
+the @key{TAB} looks for alternatives (in this case, command names) that
+start with @samp{au}.  There are several, including
address@hidden and @code{auto-save-mode}---but they are all the
+same as far as @code{auto}, so the @samp{au} in the minibuffer changes
+to @samp{auto}.
+
+  If you type @key{TAB} again immediately, there are multiple
+possibilities for the very next character---it could be any of
address@hidden no more characters are added; instead, @key{TAB}
+displays a list of all possible completions in another window.
+
+  If you go on to type @kbd{-f @key{TAB}}, this @key{TAB} sees
address@hidden  The only command name starting this way is
address@hidden, so completion fills in the rest of that.  You now
+have @samp{auto-fill-mode} in the minibuffer after typing just @kbd{au
address@hidden f @key{TAB}}.  Note that @key{TAB} has this effect because in
+the minibuffer it is bound to the command @code{minibuffer-complete}
+when completion is available.
+
address@hidden Completion Commands, Strict Completion, Completion Example, 
Completion
address@hidden Completion Commands
+
+  Here is a list of the completion commands defined in the minibuffer
+when completion is available.
+
address@hidden @kbd
address@hidden @key{TAB}
+Complete the text in the minibuffer as much as possible
+(@code{minibuffer-complete}).
address@hidden @key{SPC}
+Complete the minibuffer text, but don't go beyond one word
+(@code{minibuffer-complete-word}).
address@hidden @key{RET}
+Submit the text in the minibuffer as the argument, possibly completing
+first as described below (@code{minibuffer-complete-and-exit}).
address@hidden ?
+Print a list of all possible completions of the text in the minibuffer
+(@code{minibuffer-list-completions}).
address@hidden @key{button2}
+Select the highlighted text under the mouse as a minibuffer response.
+When the minibuffer is being used to prompt the user for a completion,
+any valid completions which are visible on the screen will be highlighted
+when the mouse moves over them.  Clicking @key{button2} will select the
+highlighted completion and exit the minibuffer.  
+(@code{minibuf-select-highlighted-completion}).
address@hidden table
+
address@hidden SPC
address@hidden minibuffer-complete-word
+  @key{SPC} completes much like @key{TAB}, but never goes beyond the
+next hyphen or space.  If you have @samp{auto-f} in the minibuffer and
+type @key{SPC}, it finds that the completion is @samp{auto-fill-mode},
+but it stops completing after @samp{fill-}.  This gives
address@hidden  Another @key{SPC} at this point completes all the
+way to @samp{auto-fill-mode}.  @key{SPC} in the minibuffer when
+completion is available runs the command
address@hidden
+
+  Here are some commands you can use to choose a completion from a
+window that displays a list of completions:
+
address@hidden @kbd
address@hidden mouse-choose-completion
address@hidden button2up
+Clicking mouse button 2 on a completion in the list of possible
+completions chooses that completion (@code{mouse-choose-completion}).
+You normally use this command while point is in the minibuffer; but you
+must click in the list of completions, not in the minibuffer itself.
+
address@hidden switch-to-completions
address@hidden @key{PRIOR}
address@hidden M-v
+Typing @key{PRIOR} or @kbd{M-v}, while in the minibuffer, selects the
+window showing the completion list buffer
+(@code{switch-to-completions}).  This paves the way for using the
+commands below.  (Selecting that window in the usual ways has the same
+effect, but this way is more convenient.)
+
address@hidden choose-completion
address@hidden @key{RET}
+Typing @key{RET} @emph{in the completion list buffer} chooses the
+completion that point is in or next to (@code{choose-completion}).  To
+use this command, you must first switch windows to the window that shows
+the list of completions.
+
address@hidden next-list-mode-item
address@hidden @key{RIGHT}
address@hidden @key{TAB}
address@hidden C-f
+Typing the right-arrow key @key{RIGHT}, @key{TAB} or @kbd{C-f} @emph{in
+the completion list buffer} moves point to the following completion
+(@code{next-list-mode-item}).
+
address@hidden previous-list-mode-item
address@hidden @key{LEFT}
address@hidden C-b
+Typing the left-arrow key @key{LEFT} or @kbd{C-b} @emph{in the
+completion list buffer} moves point toward the beginning of the buffer,
+to the previous completion (@code{previous-list-mode-item}).
address@hidden table
+
address@hidden Strict Completion, Completion Options, Completion Commands, 
Completion
address@hidden Strict Completion
+
+  There are three different ways that @key{RET} can work in completing
+minibuffers, depending on how the argument will be used.
+
address@hidden @bullet
address@hidden
address@hidden completion is used when it is meaningless to give any
+argument except one of the known alternatives.  For example, when
address@hidden k} reads the name of a buffer to kill, it is meaningless to
+give anything but the name of an existing buffer.  In strict
+completion, @key{RET} refuses to exit if the text in the minibuffer
+does not complete to an exact match.
+
address@hidden
address@hidden completion is similar to strict completion, except that
address@hidden exits only if the text was an exact match already, not
+needing completion.  If the text is not an exact match, @key{RET} does
+not exit, but it does complete the text.  If it completes to an exact
+match, a second @key{RET} will exit.
+
+Cautious completion is used for reading file names for files that must
+already exist.
+
address@hidden
address@hidden completion is used when any string whatever is
+meaningful, and the list of completion alternatives is just a guide.
+For example, when @kbd{C-x C-f} reads the name of a file to visit, any
+file name is allowed, in case you want to create a file.  In
+permissive completion, @key{RET} takes the text in the minibuffer
+exactly as given, without completing it.
address@hidden itemize
+
+  The completion commands display a list of all possible completions in
+a window whenever there is more than one possibility for the very next
+character.  Also, typing @kbd{?} explicitly requests such a list.  If
+the list of completions is long, you can scroll it with @kbd{C-M-v}
+(@pxref{Other Window}).
+
address@hidden Completion Options,  , Strict Completion, Completion
address@hidden Completion Options
+
address@hidden completion-ignored-extensions
+  When completion is done on file names, certain file names are usually
+ignored.  The variable @code{completion-ignored-extensions} contains a
+list of strings; a file whose name ends in any of those strings is
+ignored as a possible completion.  The standard value of this variable
+has several elements including @code{".o"}, @code{".elc"}, @code{".dvi"}
+and @code{"~"}.  The effect is that, for example, @samp{foo} can
+complete to @samp{foo.c} even though @samp{foo.o} exists as well.
+However, if @emph{all} the possible completions end in ``ignored''
+strings, then they are not ignored.  Ignored extensions do not apply to
+lists of completions---those always mention all possible completions.
+
address@hidden completion-auto-help
+  If a completion command finds the next character is undetermined, it
+automatically displays a list of all possible completions.  If the variable
address@hidden is set to @code{nil}, this does not happen,
+and you must type @kbd{?} to display the possible completions.
+
address@hidden minibuffer-confirm-incomplete
+If the variable @code{minibuffer-confirm-incomplete} is set to @code{t},
+then in contexts where @code{completing-read} allows answers that are
+not valid completions, an extra @key{RET} must be typed to confirm the
+response.  This is helpful for catching typos.
+
address@hidden Icomplete mode
+  Icomplete mode presents a constantly-updated display that tells you
+what completions are available for the text you've entered so far.  The
+command to enable or disable this minor mode is @kbd{M-x
+icomplete-mode}.
+
address@hidden Minibuffer History, Repetition, Completion, Minibuffer
address@hidden Minibuffer History
address@hidden minibuffer history
address@hidden history of minibuffer input
+
+  Every argument that you enter with the minibuffer is saved on a
address@hidden history list} so that you can use it again later in
+another argument.  Special commands load the text of an earlier argument
+in the minibuffer.  They discard the old minibuffer contents, so you can
+think of them as moving through the history of previous arguments.
+
address@hidden @kbd
address@hidden @key{UP}
address@hidden M-p
+Move to the next earlier argument string saved in the minibuffer history
+(@code{previous-history-element}).
address@hidden @key{DOWN}
address@hidden M-n
+Move to the next later argument string saved in the minibuffer history
+(@code{next-history-element}).
address@hidden M-r @var{regexp} @key{RET}
+Move to an earlier saved argument in the minibuffer history that has a
+match for @var{regexp} (@code{previous-matching-history-element}).
address@hidden M-s @var{regexp} @key{RET}
+Move to a later saved argument in the minibuffer history that has a
+match for @var{regexp} (@code{next-matching-history-element}).
address@hidden table
+
address@hidden M-p @r{(minibuffer history)}
address@hidden M-n @r{(minibuffer history)}
address@hidden next-history-element
address@hidden previous-history-element
+  The simplest way to reuse the saved arguments in the history list is
+to move through the history list one element at a time.  While in the
+minibuffer, use @kbd{M-p} or up-arrow (@code{previous-history-element})
+to ``move to'' the next earlier minibuffer input, and use @kbd{M-n} or
+down-arrow (@code{next-history-element}) to ``move to'' the next later
+input.
+
+  The previous input that you fetch from the history entirely replaces
+the contents of the minibuffer.  To use it as the argument, exit the
+minibuffer as usual with @key{RET}.  You can also edit the text before
+you reuse it; this does not change the history element that you
+``moved'' to, but your new argument does go at the end of the history
+list in its own right.
+
+  For many minibuffer arguments there is a ``default'' value.  In some
+cases, the minibuffer history commands know the default value.  Then you
+can insert the default value into the minibuffer as text by using
address@hidden to move ``into the future'' in the history.
+
address@hidden previous-matching-history-element
address@hidden next-matching-history-element
address@hidden M-r @r{(minibuffer history)}
address@hidden M-s @r{(minibuffer history)}
+  There are also commands to search forward or backward through the
+history; they search for history elements that match a regular
+expression that you specify with the minibuffer.  @kbd{M-r}
+(@code{previous-matching-history-element}) searches older elements in
+the history, while @kbd{M-s} (@code{next-matching-history-element})
+searches newer elements.  By special dispensation, these commands can
+use the minibuffer to read their arguments even though you are already
+in the minibuffer when you issue them.  As with incremental searching,
+an uppercase letter in the regular expression makes the search
+case-sensitive (@pxref{Search Case}).
+
+  All uses of the minibuffer record your input on a history list, but
+there are separate history lists for different kinds of arguments.  For
+example, there is a list for file names, used by all the commands that
+read file names.
+
+  There are several other very specific history lists, including one for
+command names read by @kbd{M-x}, one for buffer names, one for arguments
+of commands like @code{query-replace}, and one for compilation commands
+read by @code{compile}.  Finally, there is one ``miscellaneous'' history
+list that most minibuffer arguments use.
+
address@hidden Do wee need this?
+
address@hidden Repetition,  , Minibuffer History, Minibuffer
address@hidden Repeating Minibuffer Commands
address@hidden command history
address@hidden history of commands
+
+  Every command that uses the minibuffer at least once is recorded on a
+special history list, together with the values of its arguments, so that
+you can repeat the entire command.  In particular, every use of
address@hidden is recorded there, since @kbd{M-x} uses the minibuffer to read
+the command name.
+
address@hidden list-command-history
address@hidden widecommands
address@hidden @kbd
address@hidden C-x @key{ESC} @key{ESC}
+Re-execute a recent minibuffer command (@code{repeat-complex-command}).
address@hidden M-p
+Within @kbd{C-x @key{ESC} @key{ESC}}, move to previous recorded command
+(@code{previous-history-element}).
address@hidden M-n
+Within @kbd{C-x @key{ESC} @key{ESC}}, move to the next (more recent)
+recorded command (@code{next-history-element}).
address@hidden M-x list-command-history
+Display the entire command history, showing all the commands
address@hidden @key{ESC} @key{ESC}} can repeat, most recent first.
address@hidden table
+
address@hidden C-x ESC ESC
address@hidden repeat-complex-command
+  @kbd{C-x @key{ESC} @key{ESC}} is used to re-execute a recent
+minibuffer-using command.  With no argument, it repeats the last such
+command.  A numeric argument specifies which command to repeat; one
+means the last one, and larger numbers specify earlier ones.
+
+  @kbd{C-x @key{ESC} @key{ESC}} works by turning the previous command
+into a Lisp expression and then entering a minibuffer initialized with
+the text for that expression.  If you type just @key{RET}, the command
+is repeated as before.  You can also change the command by editing the
+Lisp expression.  Whatever expression you finally submit is what will be
+executed.  The repeated command is added to the front of the command
+history unless it is identical to the most recently executed command
+already there.
+
+  Even if you don't understand Lisp syntax, it will probably be obvious
+which command is displayed for repetition.  If you do not change the text,
+you can be sure the command will repeat exactly as before.
+
address@hidden M-n
address@hidden M-p
address@hidden next-complex-command
address@hidden previous-complex-command
+  If you are in the minibuffer for @kbd{C-x @key{ESC} @key{ESC}} and the
+command shown to you is not the one you want to repeat, you can move
+around the list of previous commands using @kbd{M-n} and @kbd{M-p}.
address@hidden replaces the contents of the minibuffer with the next earlier
+recorded command, and @kbd{M-n} replaces it with the next later command.
+After finding the desired previous command, you can edit its expression
+and then resubmit it by typing @key{RET}.  Any editing you have done on
+the command to be repeated is lost if you use @kbd{M-n} or @kbd{M-p}.
+
address@hidden and @kbd{M-p} are specially defined within @kbd{C-x @key{ESC}
address@hidden to run the commands @code{previous-history-element} and
address@hidden
+
address@hidden command-history
+  The list of previous commands using the minibuffer is stored as a Lisp
+list in the variable @code{command-history}.  Each element of the list
+is a Lisp expression which describes one command and its arguments.
+Lisp programs can reexecute a command by feeding the corresponding
address@hidden element to @code{eval}.
+
address@hidden M-x, Help, Minibuffer, Top
address@hidden Running Commands by Name
+
+  The Emacs commands that are used often or that must be quick to type are
+bound to keys---short sequences of characters---for convenient use.  Other
+Emacs commands that are used more rarely are not bound to keys; to run
+them, you must refer to them by name.
+
+  A command name consists, by convention, of one or more words,
+separated by hyphens: for example, @code{auto-fill-mode} or
address@hidden  The use of English words makes the command name
+easier to remember than a key made up of obscure characters, even though
+it results in more characters to type.  You can run any command by name,
+even if it can be run by keys as well. 
+
address@hidden M-x
address@hidden minibuffer
+ To run a command by name, start with @kbd{M-x}, then type the
+command name, and finish with @key{RET}.  @kbd{M-x} uses the minibuffer
+to read the command name.  @key{RET} exits the minibuffer and runs the
+command.
+
+  Emacs uses the minibuffer for reading input for many different purposes;
+on this occasion, the string @samp{M-x} is displayed at the beginning of
+the minibuffer as a @dfn{prompt} to remind you that your input should be
+the name of a command to be run.  @xref{Minibuffer}, for full information
+on the features of the minibuffer.
+
+  You can use completion to enter a command name.  For example, to
+invoke the command @code{forward-char}, type:
+
address@hidden
+M-x forward-char @key{RET}
address@hidden example
+or
address@hidden
+M-x fo @key{TAB} c @key{RET}
address@hidden example
+
address@hidden
+After you type in @code{M-x fo TAB} emacs will give you a possible list of 
+completions from which you can choose. Note that @code{forward-char} is the 
+same command that you invoke with the key @kbd{C-f}.  You can call any 
+command (interactively callable function) defined in Emacs by its name 
+using @kbd{M-x} regardless of whether or not any keys are bound to it.
+
+  If you type @kbd{C-g} while Emacs reads the command name, you cancel
+the @kbd{M-x} command and get out of the minibuffer, ending up at top level.
+
+  To pass a numeric argument to a command you are invoking with
address@hidden, specify the numeric argument before the @kbd{M-x}.  @kbd{M-x}
+passes the argument along to the function that it calls.  The argument
+value appears in the prompt while the command name is being read.
+
address@hidden interactive
+You can use the command @code{M-x interactive} to specify a way of
+parsing arguments for interactive use of a function.  For example, write:
+
address@hidden
+  (defun foo (arg) "Doc string" (interactive "p") ...use arg...)
address@hidden example
+
+to make @code{arg} be the prefix argument when @code{foo} is called as a
+command.  The call to @code{interactive} is actually a declaration
+rather than a function; it tells @code{call-interactively} how to read
+arguments to pass to the function.  When actually called, @code{interactive}
+returns @code{nil}.
+
+The argument of @var{interactive} is usually a string containing a code
+letter followed by a prompt.  Some code letters do not use I/O to get
+the argument and do not need prompts.  To prompt for multiple arguments,
+you must provide a code letter, its prompt, a newline, and another code
+letter, and so forth.  If the argument is not a string, it is evaluated 
+to get a list of arguments to pass to the function.  If you do not provide an
+argument to @code{interactive}, no arguments are passed when calling
+interactively.
+
+Available code letters are:
+
address@hidden @code
address@hidden a
+Function name: symbol with a function definition
address@hidden b
+Name of existing buffer
address@hidden B
+Name of buffer, possibly nonexistent
address@hidden c
+Character
address@hidden C
+Command name: symbol with interactive function definition
address@hidden d
+Value of point as number (does not do I/O)
address@hidden D
+Directory name
address@hidden e
+Last mouse event
address@hidden f
+Existing file name
address@hidden F
+Possibly nonexistent file name
address@hidden k
+Key sequence (string)
address@hidden m
+Value of mark as number (does not do I/O)
address@hidden n
+Number read using minibuffer
address@hidden N
+Prefix arg converted to number, or if none, do like code @code{n}
address@hidden p
+Prefix arg converted to number (does not do I/O)
address@hidden P
+Prefix arg in raw form (does not do I/O)
address@hidden r
+Region: point and mark as two numeric arguments, smallest first (does
+not do I/O)
address@hidden s
+Any string
address@hidden S
+Any symbol
address@hidden v
+Variable name: symbol that is @code{user-variable-p}
address@hidden x
+Lisp expression read but not evaluated
address@hidden X
+Lisp expression read and evaluated
address@hidden table
+
+In addition, if the string begins with @samp{*}, an error is
+signaled if the buffer is read-only.  This happens before reading any
+arguments.  If the string begins with @samp{@@}, the window the mouse is
+over is selected before anything else is done.  You may use both
address@hidden@@} and @samp{*}; they are processed in the order that they 
appear.
+
+Normally, when describing a command that is run by name, we omit the
address@hidden that is needed to terminate the name.  Thus we may refer to
address@hidden auto-fill-mode} rather than @kbd{M-x auto-fill-mode} @key{RET}.
+We mention the @key{RET} only when it is necessary to emphasize its
+presence, for example, when describing a sequence of input that contains
+a command name and arguments that follow it.
+
address@hidden execute-extended-command
+  @kbd{M-x} is defined to run the command @code{execute-extended-command},
+which is responsible for reading the name of another command and invoking
+it.
+
address@hidden Help, Mark, M-x, Top
address@hidden Help
address@hidden Help
address@hidden help
address@hidden self-documentation
address@hidden help-command
address@hidden C-h
address@hidden F1
+
+  XEmacs provides extensive help features accessible through a single
+character, @kbd{C-h}.  @kbd{C-h} is a prefix key that is used only for
+documentation-printing commands.  The characters that you can type after
address@hidden are called @dfn{help options}.  One help option is @kbd{C-h};
+that is how you ask for help about using @kbd{C-h}.  To cancel, type
address@hidden  The function key @key{F1} is equivalent to @kbd{C-h}.
+
address@hidden C-h C-h
address@hidden help-for-help
+  @kbd{C-h C-h} (@code{help-for-help}) displays a list of the possible
+help options, and then asks you to type the desired option.  It prompts
+with the string:
+
address@hidden
+A B C F I K L M N P S T V W C-c C-d C-f C-i C-k C-n C-w;  ? for more help:
address@hidden smallexample
+
address@hidden
+You should type one of those characters.
+
+  Typing a third @kbd{C-h} displays a description of what the options mean;
+Emacs still waits for you to type an option.  To cancel, type @kbd{C-g}.
+
+  Most help buffers use a special major mode, Help mode, which lets you
+scroll conveniently with @key{SPC} and @key{DEL} or @key{BS}.
+
address@hidden
+* Help Summary::       Brief list of all Help commands.
+* Key Help::           Asking what a key does in XEmacs.
+* Name Help::          Asking about a command, variable or function name.
+* Apropos::            Asking what pertains to a given topic.
+* Library Keywords::   Finding Lisp libraries by keywords (topics).
+* Help Mode::           Special features of Help mode and Help buffers.
+* Misc Help::          Other help commands.
address@hidden menu
+
address@hidden Help Summary, Key Help, Help, Help
address@hidden Help Summary
+
+  Here is a summary of the defined help commands.
+
address@hidden @kbd
address@hidden C-h a @var{regexp} @key{RET}
+Display a list of functions and variables whose names match @var{regexp}
+(@code{hyper-apropos}).
address@hidden C-h A @var{regexp}
+Show all commands whose names contain matches for @var{regexp}
+(@code{command-apropos}).
address@hidden C-h b
+Display a table of all key bindings currently in effect, with local
+bindings of the current major mode first, followed by all global
+bindings (@code{describe-bindings}).
address@hidden C-h c @var{key}
+Print the name of the command that @var{key} runs
+(@code{describe-key-briefly}).  Here @kbd{c} stands for `character'.  For more
+extensive information on @var{key}, use @kbd{C-h k}.
address@hidden C-h d @var{function} @key{RET}
address@hidden C-h f @var{function} @key{RET}
+Display documentation on the Lisp function named @var{function}
+(@code{describe-function}).  Since commands are Lisp functions,
+a command name may be used.
address@hidden C-h i
+Run Info, the program for browsing documentation files (@code{info}).
+The complete XEmacs manual is available online in Info.
address@hidden C-h k @var{key}
+Display the name and documentation of the command that @var{key} runs
+(@code{describe-key}).
address@hidden C-h l
+Display a description of the last 100 characters you typed
+(@code{view-lossage}).
address@hidden C-h m
+Display documentation of the current major mode (@code{describe-mode}).
address@hidden C-h n
address@hidden C-h C-n
+Display documentation of XEmacs changes, most recent first
+(@code{view-emacs-news}).
address@hidden C-h p
+Find packages by topic keyword (@code{finder-by-keyword}).
address@hidden C-h C-p
+Display a table of all mouse bindings currently in effect now, with
+local bindings of the current major mode first, followed by all global
+bindings (@code{describe-pointer}).
address@hidden C-h s
+Display current contents of the syntax table, plus an explanation of
+what they mean (@code{describe-syntax}).  @xref{Syntax}.
address@hidden C-h t
+Enter the XEmacs interactive tutorial (@code{help-with-tutorial}).
address@hidden C-h v @var{var} @key{RET}
+Display the documentation of the Lisp variable @var{var}
+(@code{describe-variable}).
address@hidden C-h w @var{command} @key{RET}
+Print which keys run the command named @var{command} (@code{where-is}).
address@hidden C-h B @key{RET}
+Display info on how to deal with Beta versions of XEmacs
+(@code{describe-beta}).
address@hidden C-h C @var{group} @key{RET}
+Select customization buffer for @var{group} (@code{customize}).
address@hidden C-h F @key{RET}
+View the local copy of the XEmacs FAQ (@code{xemacs-local-faq}).
address@hidden C-h C-i @var{file} @key{RET}
+Read Info file @var{file} with Info browser (@code{Info-query}).
address@hidden C-h C-c @var{command} @key{RET}
+Look up an Emacs command @var{command} in the Emacs manual in the Info
+system (@code{Info-goto-emacs-command-node}).
address@hidden C-h C-f @var{function} @key{RET}
+Look up an Emacs Lisp function @var{function} in the Elisp manual in the
+Info system (@code{Info-elisp-ref}).
address@hidden table
+
address@hidden Key Help, Name Help, Help Summary, Help
address@hidden Documentation for a Key
+
address@hidden C-h c
address@hidden describe-key-briefly
+  The most basic @kbd{C-h} options are @kbd{C-h c}
+(@code{describe-key-briefly}) and @address@hidden k}} (@code{describe-key}).
address@hidden c @var{key}} prints in the echo area the name of the command
+that @var{key} is bound to.  For example, @kbd{C-h c C-f} prints
address@hidden  Since command names are chosen to describe what
+the commands do, this is a good way to get a very brief description of
+what @var{key} does.
+
address@hidden C-h k
address@hidden describe-key
+  @kbd{C-h k @var{key}} is similar to @kbd{C-h c} but gives more
+information.  It displays the documentation string of the function
address@hidden is bound to as well as its name.  @var{key} is a string or
+vector of events.  When called interactively, @var{key} may also be a menu
+selection.  This information does not usually fit into the echo area, so a
+window is used for the display.
+
+  @kbd{C-h c} and @kbd{C-h k} work for any sort of key sequences,
+including function keys and mouse events.
+
address@hidden Name Help, Apropos, Key Help, Help
address@hidden Help by Command or Variable Name
+
address@hidden C-h f
address@hidden describe-function
address@hidden describe-function-show-arglist
+  @kbd{C-h f} (@code{describe-function}) reads the name of a Lisp
+function using the minibuffer, then displays that function's
+documentation string in a window.  Since commands are Lisp functions,
+you can use the argument @var{function} to get the documentation of a
+command that you know by name.  For example,
+
address@hidden
+C-h f auto-fill-mode @key{RET}
address@hidden example
+
address@hidden
+displays the documentation for @code{auto-fill-mode}. Using @kbd{C-h f}
+is the only way to see the documentation of a command that is not bound
+to any key, that is, a command you would normally call using @kbd{M-x}.
+If the variable @code{describe-function-show-arglist} is @code{t},
address@hidden shows its arglist if the @var{function} is not
+an autoload function.
+
+  @kbd{C-h f} is also useful for Lisp functions that you are planning to
+use in a Lisp program.  For example, if you have just written the
+expression @code{(make-vector len)} and want to make sure you are using
address@hidden properly, type @kbd{C-h f make-vector @key{RET}}.
+Because @kbd{C-h f} allows all function names, not just command names,
+you may find that some of your favorite abbreviations that work in
address@hidden don't work in @kbd{C-h f}.  An abbreviation may be unique
+among command names, yet fail to be unique when other function names are
+allowed.
+
+  The function name for @kbd{C-h f} to describe has a default which is
+used if you type @key{RET} leaving the minibuffer empty.  The default is
+the function called by the innermost Lisp expression in the buffer
+around point, @emph{provided} that is a valid, defined Lisp function
+name.  For example, if point is located following the text
address@hidden(make-vector (car x)}, the innermost list containing point is the
+one that starts with @samp{(make-vector}, so the default is to describe the
+function @code{make-vector}.
+
+  @kbd{C-h f} is often useful just to verify that you have the right
+spelling for the function name.  If @kbd{C-h f} mentions a name from the
+buffer as the default, that name must be defined as a Lisp function.  If
+that is all you want to know, just type @kbd{C-g} to cancel the @kbd{C-h
+f} command, then go on editing.
+
address@hidden C-h w
address@hidden where-is
+  @kbd{C-h w @var{command} @key{RET}} (@code{where-is}) tells you what
+keys are bound to @var{command}.  It prints a list of the keys in the
+echo area. Alternatively, it informs you that a command is not bound to
+any keys, which implies that you must use @kbd{M-x} to call the
+command.
+
address@hidden C-h v
address@hidden describe-variable
+  @kbd{C-h v} (@code{describe-variable}) is like @kbd{C-h f} but
+describes Lisp variables instead of Lisp functions.  Its default is the
+Lisp symbol around or before point, if that is the name of a known Lisp
+variable.  @xref{Variables}.
+
address@hidden Apropos, Library Keywords, Name Help, Help
address@hidden Apropos
+
address@hidden C-h A
address@hidden command-apropos
address@hidden apropos
+
address@hidden @kbd
address@hidden C-h A
+Show only symbols that are names of commands
+(@code{command-apropos}).
+
address@hidden M-x apropos @var{regexp}
+Show all symbols whose names contain matches for @var{regexp}.
address@hidden table
+
+  A more sophisticated sort of question to ask is, ``What are the
+commands for working with files?''  To ask this question, type @kbd{C-h
+a file @key{RET}}, which displays a list of all command names that
+contain @samp{file}, including @code{copy-file}, @code{find-file}, and
+so on.  With each command name appears a brief description of how to use
+the command, and what keys you can currently invoke it with.  For
+example, it would say that you can invoke @code{find-file} by typing
address@hidden C-f}.  The @kbd{A} in @kbd{C-h A} stands for `Apropos';
address@hidden A} runs the command @code{command-apropos}.  This command
+normally checks only commands (interactive functions); if you specify a
+prefix argument, it checks noninteractive functions as well.
+
+  Because @kbd{C-h A} looks only for functions whose names contain the
+string you specify, you must use ingenuity in choosing the string.  If
+you are looking for commands for killing backwards and @kbd{C-h a
+kill-backwards @key{RET}} doesn't reveal any, don't give up.  Try just
address@hidden, or just @kbd{backwards}, or just @kbd{back}.  Be persistent.
+Pretend you are playing Adventure.  Also note that you can use a regular
+expression as the argument, for more flexibility (@pxref{Regexps}).
+
+  Here is a set of arguments to give to @kbd{C-h a} that covers many
+classes of XEmacs commands, since there are strong conventions for
+naming the standard XEmacs commands.  By giving you a feel for the
+naming conventions, this set should also serve to aid you in developing
+a technique for picking @code{apropos} strings.
+
address@hidden
+char, line, word, sentence, paragraph, region, page, sexp, list, defun,
+rect, buffer, frame, window, face, file, dir, register, mode, beginning,
+end, forward, backward, next, previous, up, down, search, goto, kill,
+delete, mark, insert, yank, fill, indent, case, change, set, what, list,
+find, view, describe, default.
address@hidden quotation
+
address@hidden apropos
+  To list all Lisp symbols that contain a match for a regexp, not just
+the ones that are defined as commands, use the command @kbd{M-x apropos}
+instead of @kbd{C-h A}.  This command does not check key bindings by
+default; specify a numeric argument if you want it to check them.
+
address@hidden apropos-documentation
+  The @code{apropos-documentation} command is like @code{apropos} except
+that it searches documentation strings for matches for the specified
+regular expression.
+
address@hidden apropos-value
+  The @code{apropos-value} command is like @code{apropos} except that it
+searches symbols' values for matches for the specified regular
+expression.  This command does not check function definitions or
+property lists by default; specify a numeric argument if you want it to
+check them.
+
address@hidden apropos-do-all
+  If the variable @code{apropos-do-all} is address@hidden, the commands
+above all behave as if they had been given a prefix argument.
+
+  If you want more information about a function definition, variable or
+symbol property listed in the Apropos buffer, you can click on it with
address@hidden or move there and type @key{RET}.
+
address@hidden Library Keywords, Help Mode, Apropos, Help
address@hidden Keyword Search for Lisp Libraries
+
address@hidden C-h p
address@hidden finder-by-keyword
+The @kbd{C-h p} command lets you search the standard Emacs Lisp
+libraries by topic keywords.  Here is a partial list of keywords you can
+use:
+
address@hidden
+abbrev        abbreviation handling, typing shortcuts, macros
+bib           code related to the `bib' bibliography processor
+c             C, C++, and Objective-C language support
+calendar      calendar and time management support
+comm          communications, networking, remote access to files
+data          support for editing files of data
+docs          support for Emacs documentation
+dumped        files preloaded into Emacs
+emulations    emulations of other editors
+extensions    Emacs Lisp language extensions
+faces         support for multiple fonts
+frames        support for Emacs frames and window systems
+games         games, jokes and amusements
+hardware      support for interfacing with exotic hardware
+help          support for on-line help systems
+hypermedia    support for links between text or other media types
+i18n          internationalization and alternate character-set support
+internal      code for Emacs internals, build process, defaults
+languages     specialized modes for editing programming languages
+lisp          Lisp support, including Emacs Lisp
+local         code local to your site
+maint         maintenance aids for the Emacs development group
+mail          modes for electronic-mail handling
+matching      various sorts of searching and matching
+mouse         mouse support
+mule          multi-language extensions
+news          support for netnews reading and posting
+oop           support for object-oriented programming
+outlines      support for hierarchical outlining
+processes     process, subshell, compilation, and job control support
+terminals     support for terminal types
+tex           code related to the TeX formatter
+tools         programming tools
+unix          front-ends/assistants for, or emulators of, UNIX features
+vms           support code for vms
+wp            word processing
address@hidden display
+
address@hidden Help Mode, Misc Help, Library Keywords, Help
address@hidden Help Mode Commands
+
+  Help buffers provide the commands of View mode (@pxref{Misc File
+Ops}), plus a few special commands of their own.
+
address@hidden @kbd
address@hidden @key{SPC}
+Scroll forward.
address@hidden @key{DEL}
address@hidden @key{BS}
+Scroll backward.
address@hidden @item @key{RET}
address@hidden Follow a cross reference at point.
address@hidden @item @key{TAB}
address@hidden Move point forward to the next cross reference.
address@hidden @item address@hidden
address@hidden Move point back to the previous cross reference.
address@hidden @item Mouse-2
address@hidden Follow a cross reference that you click on.
address@hidden table
+
+  When a command name (@pxref{M-x,, Running Commands by Name}) or
+variable name (@pxref{Variables}) appears in the documentation, it
+normally appears inside paired single-quotes.
+
address@hidden Misc Help,  , Help Mode, Help
address@hidden Other Help Commands
+
address@hidden C-h i
address@hidden info
address@hidden Info
address@hidden manuals, on-line
address@hidden on-line manuals
+  @kbd{C-h i} (@code{info}) runs the Info program, which is used for
+browsing through structured documentation files.  The entire XEmacs manual
+is available within Info.  Eventually all the documentation of the GNU
+system will be available.  Type @kbd{h} after entering Info to run
+a tutorial on using Info.
+
+  If you specify a numeric argument, @kbd{C-h i} prompts for the name of
+a documentation file.  This way, you can browse a file which doesn't
+have an entry in the top-level Info menu.  It is also handy when you
+need to get to the documentation quickly, and you know the exact name of
+the file.
+
address@hidden C-h C-f
address@hidden C-h C-k
address@hidden Info-elisp-ref
address@hidden Info-goto-emacs-command-node
+  There are two special help commands for accessing XEmacs documentation
+through Info.  @kbd{C-h C-f @var{function} @key{RET}} enters Info and
+goes straight to the documentation of the XEmacs function
address@hidden  @kbd{C-h C-k @var{key}} enters Info and goes straight
+to the documentation of the key @var{key}.  These two keys run the
+commands @code{Info-elisp-ref} and
address@hidden
+
address@hidden C-h l
address@hidden view-lossage
+  If something surprising happens, and you are not sure what commands you
+typed, use @kbd{C-h l} (@code{view-lossage}).  @kbd{C-h l} prints the last
+100 command characters you typed in.  If you see commands that you don't
+know, you can use @kbd{C-h c} to find out what they do.
+
address@hidden C-h m
address@hidden describe-mode
+  XEmacs has several major modes.  Each mode redefines a few keys and
+makes a few other changes in how editing works.  @kbd{C-h m}
+(@code{describe-mode}) prints documentation on the current major mode,
+which normally describes all the commands that are changed in this mode.
+
address@hidden C-h b
address@hidden describe-bindings
+  @kbd{C-h b} (@code{describe-bindings}) and @kbd{C-h s}
+(@code{describe-syntax}) present information about the current XEmacs
+mode that is not covered by @kbd{C-h m}.  @kbd{C-h b} displays a list of
+all the key bindings currently in effect, with the local bindings of the
+current major mode first, followed by the global bindings (@pxref{Key
+Bindings}).  @kbd{C-h s} displays the contents of the syntax table with
+explanations of each character's syntax (@pxref{Syntax}).
+
+  You can get a similar list for a particular prefix key by typing
address@hidden after the prefix key.  (There are a few prefix keys for which
+this does not work---those that provide their own bindings for
address@hidden  One of these is @key{ESC}, because @address@hidden C-h} is
+actually @kbd{C-M-h}, which marks a defun.)
+
address@hidden C-h F
address@hidden xemacs-local-faq
address@hidden C-h n
address@hidden view-emacs-news
address@hidden C-h t
address@hidden help-with-tutorial
address@hidden C-h C-c
address@hidden describe-copying
address@hidden C-h C-d
address@hidden describe-distribution
address@hidden C-h C-w
address@hidden describe-no-warranty
+  The other @kbd{C-h} options display various files of useful
+information.  @kbd{C-h C-w} (@code{describe-no-warranty}) displays the
+full details on the complete absence of warranty for XEmacs.  @kbd{C-h
+n} (@code{view-emacs-news}) displays the file @file{xemacs/etc/NEWS},
+which contains documentation on XEmacs changes arranged chronologically.
address@hidden F} (@code{xemacs-local-faq}) displays local version of the
+XEmacs frequently-answered-questions-list.  @kbd{C-h t}
+(@code{help-with-tutorial}) displays the learn-by-doing XEmacs
+tutorial. @kbd{C-h C-c} (@code{describe-copying}) displays the file
address@hidden/etc/COPYING}, which tells you the conditions you must obey
+in distributing copies of XEmacs.  @kbd{C-h C-d}
+(@code{describe-distribution}) displays another file named
address@hidden/etc/DISTRIB}, which tells you how you can order a copy of
+the latest version of XEmacs.
+
address@hidden Mark, Mouse Selection, Help, Top
address@hidden Selecting Text
address@hidden mark
address@hidden region
+
+  Many Emacs commands operate on an arbitrary contiguous
+part of the current buffer. You can select text in two ways:
+
address@hidden @bullet
address@hidden
+You use special keys to select text by defining a region between point
+and the mark. 
address@hidden
+If you are running XEmacs under X, you can also select text
+with the mouse. 
address@hidden itemize
+
address@hidden The Mark and the Region
+ To specify the text for a command to operate on, set @dfn{the
+mark} at one end of it, and move point to the other end.  The text
+between point and the mark is called @dfn{the region}.  You can move
+point or the mark to adjust the boundaries of the region.  It doesn't
+matter which one is set first chronologically, or which one comes
+earlier in the text.
+  
+  Once the mark has been set, it remains until it is set again at
+another place.  The mark remains fixed with respect to the preceding
+character if text is inserted or deleted in a buffer.  Each Emacs
+buffer has its own mark; when you return to a buffer that had been
+selected previously, it has the same mark it had before.
+
+  Many commands that insert text, such as @kbd{C-y} (@code{yank}) and
address@hidden insert-buffer}, position the mark at one end of the inserted
+text---the opposite end from where point is positioned, so that the region
+contains the text just inserted.
+
+  Aside from delimiting the region, the mark is useful for marking
+a spot that you may want to go back to.  To make this feature more useful,
+Emacs remembers 16 previous locations of the mark in the @code{mark ring}.
+
address@hidden
+* Setting Mark::       Commands to set the mark.
+* Using Region::       Summary of ways to operate on contents of the region.
+* Marking Objects::    Commands to put region around textual units.
+* Mark Ring::          Previous mark positions saved so you can go back there.
address@hidden menu
+
address@hidden Setting Mark, Using Region, Mark, Mark
address@hidden Setting the Mark
+
+  Here are some commands for setting the mark:
+
address@hidden WideCommands
address@hidden @kbd
address@hidden address@hidden
+Set the mark where point is (@code{set-mark-command}).
address@hidden C-@@
+The same.
address@hidden C-x C-x
+Interchange mark and point (@code{exchange-point-and-mark}).
address@hidden C-<
+Pushes a mark at the beginning of the buffer.
address@hidden C->
+Pushes a mark at the end of the buffer.
address@hidden table
+
+  For example, to convert part of the buffer to all
+upper-case, you can use the @kbd{C-x C-u} (@code{upcase-region})
+command, which operates on the text in the region.  First go to the
+beginning of the text you want to capitalize and type @address@hidden to
+put the mark there, then move to the end, and then type @kbd{C-x C-u} to
+capitalize the selected region.  You can also set the mark at the end of the
+text, move to the beginning, and then type @kbd{C-x C-u}.  Most commands
+that operate on the text in the region have the word @code{region} in
+their names.
+
address@hidden C-SPC
address@hidden set-mark-command
+  The most common way to set the mark is with the @address@hidden
+command (@code{set-mark-command}).  This command sets the mark where
+point is. You can then move point away, leaving the mark behind.  It is
+actually incorrect to speak of the character @address@hidden; there is
+no such character.  When you type @key{SPC} while holding down
address@hidden, you get the character @kbd{C-@@} on most terminals. This
+character is actually bound to @code{set-mark-command}.  But unless you are
+unlucky enough to have a terminal where typing @address@hidden does
+not produce @kbd{C-@@}, you should think of this character as
address@hidden@key{SPC}}.
+
address@hidden C-x C-x
address@hidden exchange-point-and-mark
+  Since terminals have only one cursor, Emacs cannot show you where the
+mark is located. Most people use the mark soon after they set it, before
+they forget where it is. But you can see where the mark is with the
+command @kbd{C-x C-x} (@code{exchange-point-and-mark}) which puts the
+mark where point was and point where the mark was.  The extent of the
+region is unchanged, but the cursor and point are now at the previous
+location of the mark. 
+
address@hidden C-<
address@hidden C->
address@hidden mark-beginning-of-buffer
address@hidden mark-end-of-buffer
+ Another way to set the mark is to push the mark to the beginning of a
+buffer while leaving point at its original location. If you supply an
+argument to @kbd{C-<} (@code{mark-beginning-of-buffer}), the mark is pushed
address@hidden/10 of the way from the true beginning of the buffer. You can
+also set the mark at the end of a buffer with @kbd{C->}
+(@code{mark-end-of-buffer}). It pushes the mark to the end of the buffer, 
+leaving point alone. Supplying an argument to the command pushes the mark
address@hidden/10 of the way from the true end of the buffer.
+
+If you are using XEmacs under the X window system, you can set
+the variable @code{zmacs-regions} to @code{t}. This makes the current
+region (defined by point and mark) highlight and makes it available as
+the X clipboard selection, which means you can use the menu bar items on
+it.  @xref{Active Regions}, for more information.
+ 
+  @kbd{C-x C-x} is also useful when you are satisfied with the location of
+point but want to move the mark; do @kbd{C-x C-x} to put point there and
+then you can move it.  A second use of @kbd{C-x C-x}, if necessary, puts
+the mark at the new location with point back at its original location.
+
address@hidden Using Region, Marking Objects, Setting Mark, Mark
address@hidden Operating on the Region
+
+  Once you have created an active region, you can do many things to
+the text in it:
address@hidden @bullet
address@hidden
+Kill it with @kbd{C-w} (@pxref{Killing}).
address@hidden
+Save it in a register with @kbd{C-x r s} (@pxref{Registers}).
address@hidden
+Save it in a buffer or a file (@pxref{Accumulating Text}).
address@hidden
+Convert case with @kbd{C-x C-l} or @kbd{C-x C-u} @*(@pxref{Case}).
address@hidden
+Evaluate it as Lisp code with @kbd{M-x eval-region} (@pxref{Lisp Eval}).
address@hidden
+Fill it as text with @kbd{M-q} (@pxref{Filling}).
address@hidden
+Print hardcopy with @kbd{M-x print-region} (@pxref{Hardcopy}).
address@hidden
+Indent it with @kbd{C-x @key{TAB}} or @kbd{C-M-\} (@pxref{Indentation}).
address@hidden itemize
+
address@hidden Marking Objects, Mark Ring, Using Region, Mark
address@hidden Commands to Mark Textual Objects
+
+  There are commands for placing point and the mark around a textual
+object such as a word, list, paragraph or page.
+ 
address@hidden @kbd
address@hidden M-@@
+Set mark after end of next word (@code{mark-word}).  This command and
+the following one do not move point.
address@hidden C-M-@@
+Set mark after end of next Lisp expression (@code{mark-sexp}).
address@hidden M-h
+Put region around current paragraph (@code{mark-paragraph}).
address@hidden C-M-h
+Put region around current Lisp defun (@code{mark-defun}).
address@hidden C-x h
+Put region around entire buffer (@code{mark-whole-buffer}).
address@hidden C-x C-p
+Put region around current page (@code{mark-page}).
address@hidden table
+
address@hidden M-@@
address@hidden C-M-@@
address@hidden mark-word
address@hidden mark-sexp
address@hidden@@} (@code{mark-word}) puts the mark at the end of the next word,
+while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the next Lisp
+expression. These characters sometimes save you some typing.
+
address@hidden M-h
address@hidden C-M-h
address@hidden C-x C-p
address@hidden C-x h
address@hidden mark-paragraph
address@hidden mark-defun
address@hidden mark-page
address@hidden mark-whole-buffer
+   A number of commands are available that set both point and mark and
+thus delimit an object in the buffer.  @kbd{M-h} (@code{mark-paragraph})
+moves point to the beginning of the paragraph that surrounds or follows
+point, and puts the mark at the end of that paragraph
+(@pxref{Paragraphs}).  You can then indent, case-convert, or kill the
+whole paragraph.  In the same fashion, @kbd{C-M-h} (@code{mark-defun})
+puts point before and the mark after the current or following defun
+(@pxref{Defuns}).  @kbd{C-x C-p} (@code{mark-page}) puts point before
+the current page (or the next or previous, depending on the argument),
+and mark at the end (@pxref{Pages}).  The mark goes after the
+terminating page delimiter (to include it), while point goes after the
+preceding page delimiter (to exclude it).  Finally, @kbd{C-x h}
+(@code{mark-whole-buffer}) sets up the entire buffer as the region by
+putting point at the beginning and the mark at the end.
+
address@hidden Mark Ring,, Marking Objects, Mark
address@hidden The Mark Ring
+
address@hidden C-u C-SPC
address@hidden mark ring
address@hidden C-u C-@@
+  Aside from delimiting the region, the mark is also useful for marking
+a spot that you may want to go back to.  To make this feature more
+useful, Emacs remembers 16 previous locations of the mark in the
address@hidden ring}.  Most commands that set the mark push the old mark onto
+this ring.  To return to a marked location, use @kbd{C-u address@hidden
+(or @kbd{C-u C-@@}); this is the command @code{set-mark-command} given a
+numeric argument.  The command moves point to where the mark was, and
+restores the mark from the ring of former marks. Repeated use of this
+command moves point to all the old marks on the ring, one by one.
+The marks you have seen go to the end of the ring, so no marks are lost.
+
+  Each buffer has its own mark ring.  All editing commands use the current
+buffer's mark ring.  In particular, @kbd{C-u address@hidden always stays in
+the same buffer.
+
+  Many commands that can move long distances, such as @kbd{M-<}
+(@code{beginning-of-buffer}), start by setting the mark and saving the
+old mark on the mark ring.  This makes it easier for you to move back
+later.  Searches set the mark, unless they do not actually move point.
+When a command sets the mark, @samp{Mark Set} is printed in the
+echo area.
+
address@hidden mark-ring-max
+  The variable @code{mark-ring-max} is the maximum number of entries to
+keep in the mark ring.  If that many entries exist and another entry is
+added, the last entry in the list is discarded.  Repeating @kbd{C-u
address@hidden circulates through the entries that are currently in the
+ring.
+
address@hidden mark-ring
+  The variable @code{mark-ring} holds the mark ring itself, as a list of
+marker objects in the order most recent first.  This variable is local
+in every buffer.
+
address@hidden Mouse Selection, Additional Mouse Operations, Mark, Top
address@hidden  node-name,  next,  previous,  up
address@hidden Selecting Text with the Mouse
address@hidden mouse selection
+
address@hidden pointer shapes
+  If you are using XEmacs under X, you can use the mouse pointer
+to select text. (The normal mouse pointer is an I-beam, the same
+pointer that @code{xterm} uses.)
+
address@hidden modeline-pointer-glyph
address@hidden nontext-pointer-glyph
address@hidden text-pointer-glyph
+The glyph variable @code{text-pointer-glyph} controls the shape of
+the mouse pointer when over text.  You can also control the shape
+of the mouse pointer when over nontext using @code{nontext-pointer-glyph},
+and the shape of the mouse pointer when over the modeline using
address@hidden (Remember, you should use
address@hidden, not @code{setq}, to set one of these
+variables.)
+
address@hidden pointer face
+If you want to get fancy, you can set the foreground and background
+colors of the mouse pointer by setting the @code{pointer} face.
+
+There are two ways to select a region of text with the mouse:
+
+  To select a word in text, double-click with the left mouse button
+while the mouse cursor is over the word.  The word is highlighted when
+selected. On monochrome monitors, a stippled background indicates that a
+region of text has been highlighted. On color monitors, a color
+background indicates highlighted text. You can triple-click to select
+whole lines. 
+
+To select an arbitrary region of text:
+
address@hidden
address@hidden
+Move the mouse cursor over the character at the beginning of the region of
+text you want to select.
address@hidden
+Press and hold the left mouse button. 
address@hidden
+While holding the left mouse button down, drag the cursor to the
+character at the end of the region of text you want to select.
address@hidden
+Release the left mouse button.
address@hidden enumerate
+The selected region of text is highlighted.
+
+  Once a region of text is selected, it becomes the primary X selection
+(@pxref{Using X Selections}) as well as the Emacs selected region. You
+can paste it into other X applications and use the options from the
address@hidden pull-down menu on it.  Since it is also the Emacs region, you
+can use Emacs region commands on it.
+
address@hidden Additional Mouse Operations, Killing, Mouse Selection, Top
address@hidden Additional Mouse Operations
address@hidden mouse operations
+
+XEmacs also provides the following mouse functions.  Most of these are
+not bound to mouse gestures by default, but they are provided for your
+customization pleasure.  For example, if you wanted @kbd{shift-left}
+(that is, holding down the @key{Shift} key and clicking the left mouse
+button) to delete the character at which you are pointing, then you
+could do this:
+
address@hidden
+(global-set-key '(shift button1) 'mouse-del-char)
address@hidden example
+
address@hidden mouse-del-char
address@hidden mouse-delete-window
address@hidden mouse-keep-one-window
address@hidden mouse-kill-line
address@hidden mouse-line-length
address@hidden mouse-scroll
address@hidden mouse-select
address@hidden mouse-select-and-split
address@hidden mouse-set-mark
address@hidden mouse-set-point
address@hidden mouse-track
address@hidden mouse-track-adjust
address@hidden mouse-track-and-copy-to-cutbuffer
address@hidden mouse-track-delete-and-insert
+
address@hidden @kbd
address@hidden mouse-del-char
+Delete the character pointed to by the mouse.
address@hidden mouse-delete-window
+Delete the Emacs window that the mouse is on.
address@hidden mouse-keep-one-window
+Select the Emacs window that the mouse is on, then delete all other
+windows on this frame.
address@hidden mouse-kill-line
+Kill the line pointed to by the mouse.
address@hidden mouse-line-length
+Print the length of the line indicated by the pointer.
address@hidden mouse-scroll
+Scroll point to the mouse position.
address@hidden mouse-select
+Select the Emacs window the mouse is on.
address@hidden mouse-select-and-split
+Select the Emacs window mouse is on, then split it vertically in half.
address@hidden mouse-set-mark
+Select the Emacs window the mouse is on and set the mark at the mouse 
+position.  Display the cursor at that position for a second.
address@hidden mouse-set-point
+Select the Emacs window that the mouse is on and move point to the
+mouse position.
address@hidden mouse-track
+Make a selection with the mouse.   This is the default binding of 
+the left mouse button (@key{button1}).
address@hidden mouse-track-adjust
+Extend the existing selection.  This is the default binding of
address@hidden
address@hidden mouse-track-and-copy-to-cutbuffer
+Make a selection like @code{mouse-track}, but also copy it to the cut buffer.
address@hidden mouse-track-delete-and-insert
+Make a selection with the mouse and insert it at point.  This is the
+default binding of @key{control-shift-button1}.
address@hidden mouse-track-insert
+Make a selection with the mouse and insert it at point.
+This is the default binding of @key{control-button1}.
address@hidden mouse-window-to-region
+Narrow a window to the region between the cursor and the mouse pointer.
address@hidden table
+
+The @kbd{M-x mouse-track} command should be bound to a mouse button.  If
+you click-and-drag, the selection is set to the region between the
+point of the initial click and the point at which you release the
+button.  These positions do not need to be ordered. 
+
+If you click-and-release without moving the mouse, the point is moved,
+and the selection is disowned (there will be no selection owner.)  The
+mark will be set to the previous position of point.
+
+If you double-click, the selection will extend by symbols instead of by
+characters.  If you triple-click, the selection will extend by lines.
+
+If you drag the mouse off the top or bottom of the window, you can
+select pieces of text that are larger than the visible part of the
+buffer; the buffer will scroll as necessary.
+
+The selected text becomes the current X selection, and is also copied to
+the top of the kill ring.  Point will be left at the position at
+which you released the button and the mark will be left at the initial
+click position.  Bind a mouse click to
address@hidden to copy selections to the cut buffer.
+(See also the @code{mouse-track-adjust} command, on @kbd{Shift-button1}.)
+
+The @kbd{M-x mouse-track-adjust} command should be bound to a mouse
+button.  The selection will be enlarged or shrunk so that the point of
+the mouse click is one of its endpoints.  This is only meaningful
+after the @code{mouse-track} command (@key{button1}) has been executed.
+
+The @kbd{M-x mouse-track-delete-and-insert} command is exactly the same
+as the @code{mouse-track} command on @key{button1}, except that point is
+not moved; the selected text is immediately inserted after being
+selected; and the text of the selection is deleted.
+
+The @kbd{M-x mouse-track-insert} command is exactly the same as the
address@hidden command on @key{button1}, except that point is not moved;
+the selected text is immediately inserted after being selected; and the
+selection is immediately disowned afterwards.
+
+
address@hidden Killing, Yanking, Additional Mouse Operations, Top
address@hidden Deletion and Killing
address@hidden delete-char
address@hidden delete-backward-char
+
address@hidden killing
address@hidden cutting
address@hidden deletion
address@hidden C-d
address@hidden DEL
+  Most commands that erase text from the buffer save it. You can get
+the text back if you change your mind, or you can move or copy it to
+other parts of the buffer.  Commands which erase text and save it in the
+kill ring are known as @dfn{kill} commands.  Some other commands erase
+text but do not save it; they are known as @dfn{delete} commands.  (This
+distinction is made only for erasing text in the buffer.)
+
+The commands' names and individual descriptions use the words
address@hidden and @samp{delete} to indicate what they do.  If you perform
+a kill or delete command by mistake, use the @kbd{C-x u} (@code{undo})
+command to undo it (@pxref{Undo}). The delete commands include @kbd{C-d}
+(@code{delete-char}) and @key{DEL} (@code{delete-backward-char}), which
+delete only one character at a time, and those commands that delete only
+spaces or newlines.  Commands that can destroy significant amounts of
+nontrivial data usually address@hidden
+
address@hidden Deletion
+
address@hidden @kbd
address@hidden C-d
+Delete next character (@code{delete-char}).
address@hidden @key{DEL}
+Delete previous character (@code{delete-backward-char}).
address@hidden M-\
+Delete spaces and tabs around point (@code{delete-horizontal-space}).
address@hidden address@hidden
+Delete spaces and tabs around point, leaving one space
+(@code{just-one-space}).
address@hidden C-x C-o
+Delete blank lines around the current line (@code{delete-blank-lines}).
address@hidden M-^
+Join two lines by deleting the intervening newline, and any indentation
+following it (@code{delete-indentation}).
address@hidden table
+
+  The most basic delete commands are @kbd{C-d} (@code{delete-char}) and
address@hidden (@code{delete-backward-char}).  @kbd{C-d} deletes the
+character after point, the one the cursor is ``on top of''.  Point
+doesn't move.  @key{DEL} deletes the character before the cursor, and
+moves point back.  You can delete newlines like any other characters in
+the buffer; deleting a newline joins two lines.  Actually, @kbd{C-d} and
address@hidden aren't always delete commands; if you give them an argument,
+they kill instead, since they can erase more than one character this
+way.
+
address@hidden M-\
address@hidden delete-horizontal-space
address@hidden M-SPC
address@hidden just-one-space
address@hidden C-x C-o
address@hidden delete-blank-lines
address@hidden M-^
address@hidden delete-indentation
+  The other delete commands delete only formatting characters: spaces,
+tabs and newlines.  @kbd{M-\} (@code{delete-horizontal-space}) deletes
+all spaces and tab characters before and after point.
address@hidden@key{SPC}} (@code{just-one-space}) does the same but leaves a
+single space after point, regardless of the number of spaces that
+existed previously (even zero).
+
+  @kbd{C-x C-o} (@code{delete-blank-lines}) deletes all blank lines after
+the current line. If the current line is blank, it deletes all blank lines
+preceding the current line as well as leaving one blank line, the current
+line.  @kbd{M-^} (@code{delete-indentation}) joins the current line and
+the previous line, or, if given an argument, joins the current line and 
+the next line by deleting a newline and all surrounding spaces, possibly
+leaving a single space.  @xref{Indentation,M-^}.
+
address@hidden Killing by Lines
+
address@hidden @kbd
address@hidden C-k
+Kill rest of line or one or more lines (@code{kill-line}).
address@hidden table
+
address@hidden C-k
address@hidden kill-line
+  The simplest kill command is @kbd{C-k}.  If given at the beginning of
+a line, it kills all the text on the line, leaving the line blank.  If
+given on a blank line, the blank line disappears.  As a consequence, a
+line disappears completely if you go to the front of a non-blank line
+and type @kbd{C-k} twice.
+
+  More generally, @kbd{C-k} kills from point up to the end of the line,
+unless it is at the end of a line.  In that case, it kills the newline
+following the line, thus merging the next line into the current one.
+Emacs ignores invisible spaces and tabs at the end of the line when deciding
+which case applies: if point appears to be at the end of the line, you
+can be sure the newline will be killed.
+
+  If you give @kbd{C-k} a positive argument, it kills that many lines
+and the newlines that follow them (however, text on the current line
+before point is not killed).  With a negative argument, @kbd{C-k} kills
+back to a number of line beginnings.  An argument of @minus{}2 means
+kill back to the second line beginning.  If point is at the beginning of
+a line, that line beginning doesn't count, so @kbd{C-u - 2 C-k} with
+point at the front of a line kills the two previous lines.
+
+  @kbd{C-k} with an argument of zero kills all the text before point on the
+current line.
+
address@hidden Other Kill Commands
address@hidden kill-region
address@hidden kill-word
address@hidden backward-kill-word
address@hidden kill-sexp
address@hidden kill-sentence
address@hidden backward-kill-sentence
address@hidden M-d
address@hidden M-DEL
address@hidden C-M-k
address@hidden C-x DEL
address@hidden M-k
address@hidden C-w
+
address@hidden DoubleWideCommands
address@hidden @kbd
address@hidden C-w
+Kill region (from point to the mark) (@code{kill-region}).
address@hidden
address@hidden M-d
+Kill word (@code{kill-word}).
address@hidden address@hidden
+Kill word backwards (@code{backward-kill-word}).
address@hidden C-x @key{DEL}
+Kill back to beginning of sentence (@code{backward-kill-sentence}).
address@hidden
address@hidden M-k
+Kill to end of sentence (@code{kill-sentence}).
address@hidden C-M-k
+Kill sexp (@code{kill-sexp}).  @xref{Lists}.
address@hidden M-z @var{char}
+Kill up to next occurrence of @var{char} (@code{zap-to-char}).
address@hidden table
+
+   @kbd{C-w} (@code{kill-region}) is a very general kill command; it
+kills everything between point and the mark. You can use this command to
+kill any contiguous sequence of characters by first setting the mark at
+one end of a sequence of characters, then going to the other end and
+typing @kbd{C-w}.
+
address@hidden M-z
address@hidden zap-to-char
+  A convenient way of killing is combined with searching: @kbd{M-z}
+(@code{zap-to-char}) reads a character and kills from point up to (but not
+including) the next occurrence of that character in the buffer.  If there
+is no next occurrence, killing goes to the end of the buffer.  A numeric
+argument acts as a repeat count.  A negative argument means to search
+backward and kill text before point.
+
+  Other syntactic units can be killed: words, with @address@hidden and
address@hidden (@pxref{Words}); sexps, with @kbd{C-M-k} (@pxref{Lists}); and
+sentences, with @kbd{C-x @key{DEL}} and @kbd{M-k}
+(@pxref{Sentences})address@hidden
+
address@hidden Yanking, Using X Selections, Killing, Top
address@hidden Yanking
address@hidden moving text
address@hidden copying text
address@hidden kill ring
address@hidden yanking
address@hidden pasting
+
+  @dfn{Yanking} means getting back text which was killed. Some systems
+call this ``pasting''.  The usual way to move or copy text is to kill it
+and then yank it one or more times.
+
address@hidden @kbd
address@hidden C-y
+Yank last killed text (@code{yank}).
address@hidden M-y
+Replace re-inserted killed text with the previously killed text
+(@code{yank-pop}).
address@hidden M-w
+Save region as last killed text without actually killing it
+(@code{copy-region-as-kill}).
address@hidden C-M-w
+Append next kill to last batch of killed text (@code{append-next-kill}).
address@hidden table
+
address@hidden
+* Kill Ring::       Where killed text is stored.  Basic yanking.
+* Appending Kills:: Several kills in a row all yank together.
+* Earlier Kills::   Yanking something killed some time ago.
address@hidden menu
+
address@hidden Kill Ring, Appending Kills, Yanking, Yanking
address@hidden The Kill Ring
+
address@hidden C-y
address@hidden Yank
+  All killed text is recorded in the @dfn{kill ring}, a list of blocks of
+text that have been killed.  There is only one kill ring, used in all
+buffers, so you can kill text in one buffer and yank it in another buffer.
+This is the usual way to move text from one file to another.
+(@xref{Accumulating Text}, for some other ways.)
+
+  If you have two separate Emacs processes, you cannot use the kill ring
+to move text. If you are using XEmacs under X, however, you can
+use the X selection mechanism to move text from one to another.
+
+If you are using XEmacs under X and have one Emacs process with
+multiple frames, they do share the same kill ring.  You can kill or
+copy text in one Emacs frame, then yank it in the other frame
+belonging to the same process.
+
+  The command @kbd{C-y} (@code{yank}) reinserts the text of the most recent
+kill.  It leaves the cursor at the end of the text and sets the mark at
+the beginning of the text.  @xref{Mark}.
+
+  @kbd{C-u C-y} yanks the text, leaves the cursor in front of the text,
+and sets the mark after it, if the argument is with just a @kbd{C-u}.
+Any other argument, including @kbd{C-u} and digits, has different
+results, described below, under ``Yanking Earlier Kills''.
+
address@hidden M-w
address@hidden copy-region-as-kill
+ To copy a block of text, you can also use @kbd{M-w}
+(@code{copy-region-as-kill}), which copies the region into the kill ring
+without removing it from the buffer. @kbd{M-w} is similar to @kbd{C-w}
+followed by @kbd{C-y} but does not mark the buffer as ``modified'' and
+does not actually cut anything.
+
address@hidden Appending Kills, Earlier Kills, Kill Ring, Yanking
address@hidden Appending Kills
+
address@hidden television
+  Normally, each kill command pushes a new block onto the kill ring.
+However, two or more kill commands in a row combine their text into a
+single entry, so that a single @kbd{C-y} yanks it all back. This means
+you don't have to kill all the text you want to yank in one command; you
+can kill line after line, or word after word, until you have killed what
+you want, then get it all back at once using @kbd{C-y}. (Thus we join
+television in leading people to kill thoughtlessly.)
+
+  Commands that kill forward from point add onto the end of the previous
+killed text.  Commands that kill backward from point add onto the
+beginning.  This way, any sequence of mixed forward and backward kill
+commands puts all the killed text into one entry without rearrangement.
+Numeric arguments do not break the sequence of appending kills.  For
+example, suppose the buffer contains:
+
address@hidden
+This is the first
+line of sample text
+and here is the third.
address@hidden example
+
address@hidden
+with point at the beginning of the second line.  If you type @kbd{C-k C-u 2
address@hidden C-k}, the first @kbd{C-k} kills the text @samp{line of sample
+text}, @kbd{C-u 2 address@hidden kills @samp{the first} with the newline that
+followed it, and the second @kbd{C-k} kills the newline after the second
+line.  The result is that the buffer contains @samp{This is and here is the
+third.} and a single kill entry contains @samp{the address@hidden of
+sample address@hidden the killed text, in its original order.
+
address@hidden C-M-w
address@hidden append-next-kill
+  If a kill command is separated from the last kill command by other
+commands (not just numeric arguments), it starts a new entry on the kill
+ring.  To force a kill command to append, first type the command @kbd{C-M-w}
+(@code{append-next-kill}). @kbd{C-M-w} tells the following command,
+if it is a kill command, to append the text it kills to the last killed
+text, instead of starting a new entry.  With @kbd{C-M-w}, you can kill
+several separated pieces of text and accumulate them to be yanked back
+in one address@hidden
+
address@hidden Earlier Kills,, Appending Kills, Yanking
address@hidden Yanking Earlier Kills
+
address@hidden M-y
address@hidden yank-pop
+  To recover killed text that is no longer the most recent kill, you need
+the @kbd{Meta-y} (@code{yank-pop}) command.  You can use @kbd{M-y} only
+after a @kbd{C-y} or another @kbd{M-y}.  It takes the text previously
+yanked and replaces it with the text from an earlier kill.  To recover
+the text of the next-to-the-last kill, first use @kbd{C-y} to recover
+the last kill, then @kbd{M-y} to replace it with the previous
address@hidden
+
+  You can think in terms of a ``last yank'' pointer which points at an item
+in the kill ring.  Each time you kill, the ``last yank'' pointer moves to
+the new item at the front of the ring.  @kbd{C-y} yanks the item
+which the ``last yank'' pointer points to.  @kbd{M-y} moves the ``last
+yank'' pointer to a different item, and the text in the buffer changes to
+match.  Enough @kbd{M-y} commands can move the pointer to any item in the
+ring, so you can get any item into the buffer.  Eventually the pointer
+reaches the end of the ring; the next @kbd{M-y} moves it to the first item
+again.
+
+  Yanking moves the ``last yank'' pointer around the ring, but does not
+change the order of the entries in the ring, which always runs from the
+most recent kill at the front to the oldest one still remembered.
+
+  Use @kbd{M-y} with a numeric argument to advance the ``last
+yank'' pointer by the specified number of items.  A negative argument
+moves the pointer toward the front of the ring; from the front of the
+ring, it moves to the last entry and starts moving forward from there.
+
+  Once the text you are looking for is brought into the buffer, you can
+stop doing @kbd{M-y} commands and the text will stay there. Since the
+text is just a copy of the kill ring item, editing it in the buffer does
+not change what's in the ring.  As long you don't kill additional text,
+the ``last yank'' pointer remains at the same place in the kill ring:
+repeating @kbd{C-y} will yank another copy of the same old kill.
+
+  If you know how many @kbd{M-y} commands it would take to find the
+text you want, you can yank that text in one step using @kbd{C-y} with
+a numeric argument.  @kbd{C-y} with an argument greater than one
+restores the text the specified number of entries back in the kill
+ring.  Thus, @kbd{C-u 2 C-y} gets the next to the last block of killed
+text.  It is equivalent to @kbd{C-y M-y}.  @kbd{C-y} with a numeric
+argument starts counting from the ``last yank'' pointer, and sets the
+``last yank'' pointer to the entry that it yanks.
+
address@hidden kill-ring-max
+  The variable @code{kill-ring-max} controls the length of the kill
+ring; no more than that many blocks of killed text are saved.
+
address@hidden Using X Selections, Accumulating Text, Yanking, Top
address@hidden Using X Selections
address@hidden  node-name,  next,  previous,  up
+
+In the X window system, mouse selections provide a simple mechanism for
+text transfer between different applications.  In a typical X
+application, you can select text by pressing the left mouse button and
+dragging the cursor over the text you want to copy.  The text becomes the
+primary X selection and is highlighted.  The highlighted region is also
+the Emacs selected region.
+
address@hidden @bullet
address@hidden
+Since the region is the primary X selection, you can go to a different X
+application and click the middle mouse button: the text that you selected in
+the previous application is pasted into the current application.
address@hidden
+Since the region is the Emacs selected region, you can use all region
+commands (@kbd{C-w, M-w} etc.) as well as the options of the @b{Edit}
+menu to manipulate the selected text.
address@hidden itemize
+
address@hidden
+* X Clipboard Selection::      Pasting to the X clipboard.
+* X Selection Commands::       Other operations on the selection.
+* X Cut Buffers::              X cut buffers are available for compatibility.
+* Active Regions::             Using zmacs-style highlighting of the
+                                selected region.
address@hidden menu
+
address@hidden X Clipboard Selection, X Selection Commands, Using X Selections, 
Using X Selections
address@hidden  node-name,  next,  previous,  up
address@hidden The Clipboard Selection
address@hidden clipboard selections
+
+There are other kinds of X selections besides the @b{Primary} selection; one
+common one is the @b{Clipboard} selection.  Some applications prefer to
+transfer data using this selection in preference to the @b{Primary}.
+One can transfer text from the @b{Primary} selection to the  @b{Clipboard}
+selection with the @b{Copy} command under the @b{Edit} menu in the menubar.
+
+Usually, the clipboard selection is not visible.  However, if you run the
address@hidden application, the text most recently copied to the clipboard
+(with the @b{Copy} command) is displayed in a window.  Any time new text is
+thus copied, the @file{xclipboard} application makes a copy of it and displays
+it in its window.  The value of the clipboard can survive the lifetime of the
+running Emacs process.  The @code{xclipboard} man page provides more details.
+
+Warning: If you use the @file{xclipboard} application, remember that it
+maintains a list of all things that have been pasted to the clipboard (that
+is, copied with the @b{Copy} command).  If you don't manually delete elements
+from this list by clicking on the @b{Delete} button in the @code{xclipboard}
+window, the clipboard will eventually consume a lot of memory.
+
+In summary, some X applications (such as @file{xterm}) allow one to paste
+text in them from XEmacs in the following way:
+
address@hidden @bullet
address@hidden
+Drag out a region of text in Emacs with the left mouse button,
+making that text be the @b{Primary} selection.
+
address@hidden
+Click the middle button in the other application, pasting the @b{Primary}
+selection. 
address@hidden itemize
+
+With some other applications (notably, the OpenWindows and Motif tools) you
+must use this method instead:
+
address@hidden @bullet
address@hidden
+Drag out a region of text in Emacs with the left mouse button,
+making that text be the @b{Primary} selection.
+
address@hidden
+Copy the selected text to the @b{Clipboard} selection by selecting the
address@hidden menu item from the @b{Edit} menu, or by hitting the @b{Copy}
+key on your keyboard.
+
address@hidden
+Paste the text in the other application by selecting @b{Paste} from its
+menu, or by hitting the @b{Paste} key on your keyboard.
address@hidden itemize
+
+
address@hidden X Selection Commands, X Cut Buffers, X Clipboard Selection, 
Using X Selections
address@hidden Miscellaneous X Selection Commands
address@hidden  node-name,  next,  previous,  up
address@hidden cut buffers
address@hidden primary selections
+
address@hidden x-copy-primary-selection
address@hidden x-delete-primary-selection
address@hidden x-insert-selection
address@hidden x-kill-primary-selection
address@hidden x-mouse-kill
address@hidden x-own-secondary-selection
address@hidden x-own-selection
address@hidden x-set-point-and-insert-selection
address@hidden @kbd
address@hidden M-x x-copy-primary-selection
+Copy the primary selection to both the kill ring and the Clipboard.
address@hidden M-x x-insert-selection
+Insert the current selection into the buffer at point.
address@hidden M-x x-delete-primary-selection
+Deletes the text in the primary selection without copying it to the kill
+ring or the Clipboard.
address@hidden M-x x-kill-primary-selection
+Deletes the text in the primary selection and copies it to 
+both the kill ring and the Clipboard.
address@hidden M-x x-mouse-kill
+Kill the text between point and the mouse and copy it to 
+the clipboard and to the cut buffer.
address@hidden M-x x-own-secondary-selection
+Make a secondary X selection of the given argument. 
address@hidden M-x x-own-selection
+Make a primary X selection of the given argument.  
address@hidden M-x x-set-point-and-insert-selection
+Set point where clicked and insert the primary selection or the
+cut buffer.
address@hidden table
+
address@hidden X Cut Buffers, Active Regions, X Selection Commands, Using X 
Selections
address@hidden X Cut Buffers
address@hidden  node-name,  next,  previous,  up
+
+X cut buffers are a different, older way of transferring text between
+applications.  XEmacs supports cut buffers for compatibility
+with older programs, even though selections are now the preferred way of
+transferring text.
+
+X has a concept of applications "owning" selections.  When you select
+text by clicking and dragging inside an application, the application
+tells the X server that it owns the selection.  When another
+application asks the X server for the value of the selection, the X
+server requests the information from the owner. When you use
+selections, the selection data is not actually transferred unless
+someone wants it; the act of making a selection doesn't transfer data.
+Cut buffers are different: when you "own" a cut buffer, the data is
+actually transferred to the X server immediately, and survives the
+lifetime of the application.
+
+Any time a region of text becomes the primary selection in Emacs,
+Emacs also copies that text to the cut buffer.  This makes it possible
+to copy text from an XEmacs buffer and paste it into an older,
+non-selection-based application (such as Emacs 18).
+
+Note: Older versions of Emacs could not access the X selections, only
+the X cut buffers.
+
address@hidden Active Regions, , X Cut Buffers, Using X Selections
address@hidden Active Regions
address@hidden  node-name,  next,  previous,  up
address@hidden active regions
+
+  By default, both the text you select in an Emacs buffer using the
+click-and-drag mechanism and text you select by setting point and the
+mark is highlighted. You can use Emacs region commands as well as the
address@hidden and @b{Copy} commands on the highlighted region you selected
+with the mouse.
+
+If you prefer, you can make a distinction between text selected with the
+mouse and text selected with point and the mark by setting the variable
address@hidden to @code{nil}.  In that case:
+
address@hidden @bullet
address@hidden
+The text selected with the mouse becomes both the X selection and the
+Emacs selected region. You can use menu-bar commands as well as Emacs
+region commands on it. 
address@hidden
+The text selected with point and the mark is not highlighted. You can
+only use Emacs region commands on it, not the menu-bar items. 
address@hidden itemize
+
+  Active regions originally come from Zmacs, the Lisp Machine editor.
+The idea behind them is that commands can only operate on a region when
+the region is in an "active" state.  Put simply, you can only operate on
+a region that is highlighted.
+
address@hidden zmacs-regions
+The variable @code{zmacs-regions} checks whether LISPM-style active
+regions should be used.  This means that commands that operate on the
+region (the area between point and the mark) only work while
+the region is in the active state, which is indicated by highlighting.
+Most commands causes the region to not be in the active state;
+for example, @kbd{C-w} only works immediately after activating the
+region.
+
+More specifically:
address@hidden @bullet
address@hidden
+Commands that operate on the region only work if the region is active.
address@hidden
+Only a very small set of commands causes the region to become active---
+those commands whose semantics are to mark an area, such as @code{mark-defun}.
address@hidden
+The region is deactivated after each command that is executed, except that
+motion commands do not change whether the region is active or not.
address@hidden itemize 
+
address@hidden (@kbd{C-SPC}) pushes a mark and activates the
+region.  Moving the cursor with normal motion commands (@kbd{C-n},
address@hidden, etc.) will cause the region between point and the
+recently-pushed mark to be highlighted.  It will remain highlighted
+until some non-motion command is executed.
+
address@hidden (@kbd{C-x C-x}) activates the region.
+So if you mark a region and execute a command that operates on it, you
+can reactivate the same region with @kbd{C-x C-x} (or perhaps @kbd{C-x
+C-x C-x C-x}) to operate on it again.
+
+Generally, commands that push marks as a means of navigation, such as
address@hidden (@kbd{M-<}) and @code{end-of-buffer}
+(@kbd{M->}), do not activate the region.  However, commands that push
+marks as a means of marking an area of text, such as @code{mark-defun}
+(@kbd{M-C-h}), @code{mark-word} (@kbd{M-@@}), and @code{mark-whole-buffer}
+(@kbd{C-x h}), do activate the region.
+
+When @code{zmacs-regions} is @code{t}, there is no distinction between
+the primary X selection and the active region selected by point and the
+mark.  To see this, set the mark (@key{C-SPC}) and move the cursor
+with any cursor-motion command: the region between point and mark is
+highlighted, and you can watch it grow and shrink as you move the
+cursor.
+
+Any other commands besides cursor-motion commands (such as inserting or
+deleting text) will cause the region to no longer be active; it will no
+longer be highlighted, and will no longer be the primary selection.
+Region can be explicitly deactivated with @kbd{C-g}.
+
+Commands that require a region (such as @kbd{C-w}) signal an error if
+the region is not active.  Certain commands cause the region to be in
+its active state.  The most common ones are @code{push-mark}
+(@key{C-SPC}) and @code{exchange-point-and-mark} (@kbd{C-x C-x}).
+
address@hidden zmacs-region-stays
+When @code{zmacs-regions} is @code{t}, programs can be non-intrusive
+on the state of the region by setting the variable @code{zmacs-region-stays}
+to a address@hidden value.  If you are writing a new Emacs command that
+is conceptually a ``motion'' command and should not interfere with the
+current highlightedness of the region, then you may set this variable.
+It is reset to @code{nil} after each user command is executed.
+
address@hidden zmacs-activate-region
+When @code{zmacs-regions} is @code{t}, programs can make the region between
+point and mark go into the active (highlighted) state by using the
+function @code{zmacs-activate-region}. Only a small number of commands
+should ever do this. 
+
address@hidden zmacs-deactivate-region
+When @code{zmacs-regions} is @code{t}, programs can deactivate the region
+between point and the mark by using @code{zmacs-deactivate-region}.
+Note: you should not have to call this function; the command loop calls
+it when appropriate. 
+
address@hidden Accumulating Text, Rectangles, Using X Selections, Top
address@hidden Accumulating Text
address@hidden append-to-buffer
address@hidden prepend-to-buffer
address@hidden copy-to-buffer
address@hidden append-to-file
address@hidden copying text
address@hidden accumulating text
+
+  Usually you copy or move text by killing it and yanking it, but there are
+other ways that are useful for copying one block of text in many places, or
+for copying many scattered blocks of text into one place.
+
+  If you like, you can accumulate blocks of text from scattered
+locations either into a buffer or into a file.  The relevant commands
+are described here.  You can also use Emacs registers for storing and
+accumulating text.  @xref{Registers}.
+
address@hidden @kbd
address@hidden M-x append-to-buffer
+Append region to contents of specified buffer (@code{append-to-buffer}).
address@hidden M-x prepend-to-buffer
+Prepend region to contents of specified buffer.
address@hidden M-x copy-to-buffer
+Copy region into specified buffer, deleting that buffer's old contents.
address@hidden M-x insert-buffer
+Insert contents of specified buffer into current buffer at point.
address@hidden M-x append-to-file
+Append region to the end of the contents of specified file.
address@hidden table
+
+  To accumulate text into a buffer, use the command @kbd{M-x
+append-to-buffer}, which inserts a copy of the region into the buffer
address@hidden, at the location of point in that buffer.  If there is
+no buffer with the given name, one is created.
+
+  If you append text to a buffer that has been used for editing, the
+copied text goes to the place where point is.  Point in that buffer is
+left at the end of the copied text, so successive uses of
address@hidden accumulate the text in the specified buffer in
+the same order as they were copied.  Strictly speaking, this command does
+not always append to the text already in the buffer; but if this command
+is the only command used to alter a buffer, it does always append to the
+existing text because point is always at the end.
+
+  @kbd{M-x prepend-to-buffer} is similar to @code{append-to-buffer}, but
+point in the other buffer is left before the copied text, so successive
+prependings add text in reverse order.  @kbd{M-x copy-to-buffer} is
+similar, except that any existing text in the other buffer is deleted,
+so the buffer is left containing just the text newly copied into it.
+
+  You can retrieve the accumulated text from that buffer with @kbd{M-x
+insert-buffer}, which takes @var{buffername} as an argument.  It inserts
+a copy of the text in buffer @var{buffername} into the selected buffer.
+You could alternatively select the other buffer for editing, perhaps moving
+text from it by killing or with @code{append-to-buffer}.  @xref{Buffers}, for
+background information on buffers.
+
+  Instead of accumulating text within Emacs in a buffer, you can append
+text directly into a file with @kbd{M-x append-to-file}, which takes
address@hidden as an argument.  It adds the text of the region to the
+end of the specified file.  The file is changed immediately on disk.
+This command is normally used with files that are @i{not} being visited
+in Emacs.  Using it on a file that Emacs is visiting can produce
+confusing results, because the file's text inside Emacs does not change
+while the file itself changes.
+
address@hidden Rectangles, Registers, Accumulating Text, Top
address@hidden Rectangles
address@hidden rectangles
+
+  The rectangle commands affect rectangular areas of text: all
+characters between a certain pair of columns, in a certain range of lines.
+Commands are provided to kill rectangles, yank killed rectangles, clear
+them out, or delete them.  Rectangle commands are useful with text in
+multicolumnar formats, like code with comments at the right,
+or for changing text into or out of such formats.
+
+  To specify the rectangle a command should work on, put the mark at one
+corner and point at the opposite corner.  The specified rectangle is
+called the @dfn{region-rectangle} because it is controlled about the
+same way the region is controlled.  Remember that a given
+combination of point and mark values can be interpreted either as
+specifying a region or as specifying a rectangle; it is up to the
+command that uses them to choose the interpretation.
+
address@hidden @kbd
address@hidden M-x delete-rectangle
+Delete the text of the region-rectangle, moving any following text on
+each line leftward to the left edge of the region-rectangle.
address@hidden M-x kill-rectangle
+Similar, but also save the contents of the region-rectangle as the
+``last killed rectangle''.
address@hidden M-x yank-rectangle
+Yank the last killed rectangle with its upper left corner at point.
address@hidden M-x open-rectangle
+Insert blank space to fill the space of the region-rectangle.
+The previous contents of the region-rectangle are pushed rightward.
address@hidden M-x clear-rectangle
+Clear the region-rectangle by replacing its contents with spaces.
address@hidden table
+
+  The rectangle operations fall into two classes: commands deleting and
+moving rectangles, and commands for blank rectangles.
+
address@hidden delete-rectangle
address@hidden kill-rectangle
+  There are two ways to get rid of the text in a rectangle: you can discard
+the text (delete it) or save it as the ``last killed'' rectangle.  The
+commands for these two ways are @kbd{M-x delete-rectangle} and @kbd{M-x
+kill-rectangle}.  In either case, the portion of each line that falls inside
+the rectangle's boundaries is deleted, causing following text (if any) on
+the line to move left.
+
+  Note that ``killing'' a rectangle is not killing in the usual sense; the
+rectangle is not stored in the kill ring, but in a special place that
+only records the most recently killed rectangle (that is, does not
+append to a killed rectangle).  Different yank commands
+have to be used and only one rectangle is stored, because yanking
+a rectangle is quite different from yanking linear text and yank-popping
+commands are difficult to make sense of.
+
+  Inserting a rectangle is the opposite of deleting one.  You specify
+where to put the upper left corner by putting point there.  The
+rectangle's first line is inserted at point, the rectangle's second line
+is inserted at a point one line vertically down, and so on.  The number
+of lines affected is determined by the height of the saved rectangle.
+
address@hidden yank-rectangle
+  To insert the last killed rectangle, type @kbd{M-x yank-rectangle}.
+This can be used to convert single-column lists into double-column
+lists; kill the second half of the list as a rectangle and then
+yank it beside the first line of the list.
+
address@hidden open-rectangle
address@hidden clear-rectangle
+  There are two commands for working with blank rectangles: @kbd{M-x
+clear-rectangle} erases existing text, and @kbd{M-x open-rectangle}
+inserts a blank rectangle.  Clearing a rectangle is equivalent to
+deleting it and then inserting a blank rectangle of the same size.
+
+  Rectangles can also be copied into and out of registers.
address@hidden,,Rectangle Registers}.
+
address@hidden Registers, Display, Rectangles, Top
address@hidden Registers
address@hidden registers
+
+  XEmacs @dfn{registers} are places in which you can save text or
+positions for later use.  Once you save text or a rectangle in a
+register, you can copy it into the buffer once or many times; a position
+saved in a register is used by moving point to that position.
+Rectangles can also be copied into and out of registers
+(@pxref{Rectangles}).
+
address@hidden view-register
+  Each register has a name which is a single character.  A register can
+store a piece of text, a rectangle, a position, a window configuration,
+or a file name, but only one thing at any given time.  Whatever you
+store in a register remains there until you store something else in that
+register.  To see what a register @var{r} contains, use @kbd{M-x
+view-register}.
+
address@hidden @kbd
address@hidden M-x view-register @key{RET} @var{r}
+Display a description of what register @var{r} contains.
address@hidden table
+
address@hidden view-register
+  @kbd{M-x view-register} reads a register name as an argument and then
+displays the contents of the specified register.
+
address@hidden
+* Position: RegPos.           Saving positions in registers.
+* Text: RegText.              Saving text in registers.
+* Rectangle: RegRect.         Saving rectangles in registers.
+* Configurations: RegConfig.  Saving window configurations in registers.
+* Files: RegFiles.            File names in registers.
+* Numbers: RegNumbers.        Numbers in registers.
+* Bookmarks::                 Bookmarks are like registers, but persistent.
address@hidden menu
+
address@hidden RegPos, RegText, Registers, Registers
address@hidden Saving Positions in Registers
+
+  Saving a position records a place in a buffer so that you can move
+back there later.  Moving to a saved position switches to that buffer
+and moves point to that place in it.
+
address@hidden @kbd
address@hidden C-x r @key{SPC} @var{r}
+Save position of point in register @var{r} (@code{point-to-register}).
address@hidden C-x r j @var{r}
+Jump to the position saved in register @var{r} (@code{jump-to-register}).
address@hidden table
+
address@hidden C-x r SPC
address@hidden point-to-register
+  To save the current position of point in a register, choose a name
address@hidden and type @kbd{C-x r @key{SPC} @var{r}}.  The register @var{r}
+retains the position thus saved until you store something else in that
+register.
+
address@hidden C-x r j
address@hidden jump-to-register
+  The command @kbd{C-x r j @var{r}} moves point to the position recorded
+in register @var{r}.  The register is not affected; it continues to
+record the same location.  You can jump to the same position using the
+same register as often as you want.
+
+  If you use @kbd{C-x r j} to go to a saved position, but the buffer it
+was saved from has been killed, @kbd{C-x r j} tries to create the buffer
+again by visiting the same file.  Of course, this works only for buffers
+that were visiting files.
+
address@hidden RegText, RegRect, RegPos, Registers
address@hidden Saving Text in Registers
+
+  When you want to insert a copy of the same piece of text many times, it
+can be impractical to use the kill ring, since each subsequent kill moves
+the piece of text further down on the ring.  It becomes hard to keep
+track of the argument needed to retrieve the same text with @kbd{C-y}.  An
+alternative is to store the text in a register with @kbd{C-x r s}
+(@code{copy-to-register}) and then retrieve it with @kbd{C-x r i}
+(@code{insert-register}).
+
address@hidden @kbd
address@hidden C-x r s @var{r}
+Copy region into register @var{r} (@code{copy-to-register}).
address@hidden C-x r g @var{r}
address@hidden C-x r i @var{r}
+Insert text contents of register @var{r} (@code{insert-register}).
address@hidden table
+
address@hidden C-x r s
address@hidden C-x r g
address@hidden C-x r i
address@hidden copy-to-register
address@hidden insert-register
+  @kbd{C-x r s @var{r}} stores a copy of the text of the region into the
+register named @var{r}.  Given a numeric argument, @kbd{C-x r s @var{r}}
+deletes the text from the buffer as well.
+
+  @kbd{C-x r i @var{r}} inserts the text from register @var{r} in the buffer.
+By default it leaves point before the text and places the mark after
+it. With a numeric argument (@kbd{C-u}), it puts point after the text
+and the mark before it.
+
address@hidden RegRect, RegConfig, RegText, Registers
address@hidden Saving Rectangles in Registers
address@hidden rectangle
+
+  A register can contain a rectangle instead of lines of text.  The rectangle
+is represented as a list of strings.  @xref{Rectangles}, for basic
+information on rectangles and how to specify rectangles in a buffer.
+
address@hidden @kbd
address@hidden copy-rectangle-to-register
address@hidden C-x r r
address@hidden C-x r r @var{r}
+Copy the region-rectangle into register @var{r}
+(@code{copy-rectangle-to-register}).  With a numeric argument, delete it
+as well.
address@hidden C-x r g @var{r}
address@hidden C-x r i @var{r}
+Insert the rectangle stored in register @var{r} (if it contains a
+rectangle) (@code{insert-register}).
address@hidden table
+
+  The @kbd{C-x r i @var{r}} command inserts linear text if the register
+  contains
+that, or inserts a rectangle if the register contains one.
+
+  See also the command @code{sort-columns}, which you can think of
+as sorting a rectangle.  @xref{Sorting}.
+
address@hidden RegConfig, RegNumbers, RegRect, Registers
address@hidden Saving Window Configurations in Registers
+
address@hidden window-configuration-to-register
address@hidden frame-configuration-to-register
address@hidden C-x r w
address@hidden @kindex C-x r f
+  You can save the window configuration of the selected frame in a
+register, or even the configuration of all windows in all frames, and
+restore the configuration later.
+
address@hidden @kbd
address@hidden C-x r w @var{r}
+Save the state of the selected frame's windows in register @var{r}
+(@code{window-configuration-to-register}).
address@hidden @item C-x r f @var{r}
address@hidden M-x frame-configuration-to-register @key{RET} @var{r}
+Save the state of all frames, including all their windows, in register
address@hidden (@code{frame-configuration-to-register}).
address@hidden table
+
+  Use @kbd{C-x r j @var{r}} to restore a window or frame configuration.
+This is the same command used to restore a cursor position.  When you
+restore a frame configuration, any existing frames not included in the
+configuration become invisible.  If you wish to delete these frames
+instead, use @kbd{C-u C-x r j @var{r}}.
+
address@hidden RegNumbers, RegFiles, RegConfig, Registers
address@hidden Keeping Numbers in Registers
+
+  There are commands to store a number in a register, to insert
+the number in the buffer in decimal, and to increment it.  These commands
+can be useful in keyboard macros (@pxref{Keyboard Macros}).
+
address@hidden @kbd
address@hidden C-u @var{number} C-x r n @var{reg}
address@hidden C-x r n
address@hidden number-to-register
+Store @var{number} into register @var{reg} (@code{number-to-register}).
address@hidden C-u @var{number} C-x r + @var{reg}
address@hidden C-x r +
address@hidden increment-register
+Increment the number in register @var{reg} by @var{number}
+(@code{increment-register}).
address@hidden C-x r g @var{reg}
+Insert the number from register @var{reg} into the buffer.
address@hidden table
+
+  @kbd{C-x r g} is the same command used to insert any other
+sort of register contents into the buffer.
+
address@hidden RegFiles, Bookmarks, RegNumbers, Registers
address@hidden Keeping File Names in Registers
+
+  If you visit certain file names frequently, you can visit them more
+conveniently if you put their names in registers.  Here's the Lisp code
+used to put a file name in a register:
+
address@hidden
+(set-register address@hidden '(file . @var{name}))
address@hidden smallexample
+
address@hidden 3000
address@hidden
+For example,
+
address@hidden
+(set-register ?z '(file . "/usr/src/xemacs/src/ChangeLog"))
address@hidden smallexample
+
address@hidden
+puts the file name shown in register @samp{z}.
+
+  To visit the file whose name is in register @var{r}, type @kbd{C-x r j
address@hidden  (This is the same command used to jump to a position or
+restore a frame configuration.)
+
address@hidden Bookmarks,  , RegFiles, Registers
address@hidden Bookmarks
address@hidden bookmarks
+
+  @dfn{Bookmarks} are somewhat like registers in that they record
+positions you can jump to.  Unlike registers, they have long names, and
+they persist automatically from one Emacs session to the next.  The
+prototypical use of bookmarks is to record ``where you were reading'' in
+various files.
+
+  Note: bookmark.el is distributed in edit-utils package.  You need to
+install that to use bookmark facility (@pxref{Packages}).
+
address@hidden @kbd
address@hidden C-x r m @key{RET}
+Set the bookmark for the visited file, at point.
+
address@hidden C-x r m @var{bookmark} @key{RET}
address@hidden bookmark-set
+Set the bookmark named @var{bookmark} at point (@code{bookmark-set}).
+
address@hidden C-x r b @var{bookmark} @key{RET}
address@hidden bookmark-jump
+Jump to the bookmark named @var{bookmark} (@code{bookmark-jump}).
+
address@hidden C-x r l
address@hidden list-bookmarks
+List all bookmarks (@code{list-bookmarks}).
+
address@hidden M-x bookmark-save
address@hidden bookmark-save
+Save all the current bookmark values in the default bookmark file.
address@hidden table
+
address@hidden C-x r m
address@hidden bookmark-set
address@hidden C-x r b
address@hidden bookmark-jump
+  The prototypical use for bookmarks is to record one current position
+in each of several files.  So the command @kbd{C-x r m}, which sets a
+bookmark, uses the visited file name as the default for the bookmark
+name.  If you name each bookmark after the file it points to, then you
+can conveniently revisit any of those files with @kbd{C-x r b}, and move
+to the position of the bookmark at the same time.
+
address@hidden C-x r l
+  To display a list of all your bookmarks in a separate buffer, type
address@hidden r l} (@code{list-bookmarks}).  If you switch to that buffer,
+you can use it to edit your bookmark definitions or annotate the
+bookmarks.  Type @kbd{C-h m} in that buffer for more information about
+its special editing commands.
+
+  When you kill XEmacs, XEmacs offers to save your bookmark values in
+your default bookmark file, @file{~/.emacs.bmk}, if you have changed any
+bookmark values.  You can also save the bookmarks at any time with the
address@hidden bookmark-save} command.  The bookmark commands load your
+default bookmark file automatically.  This saving and loading is how
+bookmarks persist from one XEmacs session to the next.
+
address@hidden bookmark-save-flag
+  If you set the variable @code{bookmark-save-flag} to 1, then each
+command that sets a bookmark will also save your bookmarks; this way,
+you don't lose any bookmark values even if XEmacs crashes.  (The value,
+if a number, says how many bookmark modifications should go by between
+saving.)
+
address@hidden bookmark-search-size
+  Bookmark position values are saved with surrounding context, so that
address@hidden can find the proper position even if the file is
+modified slightly.  The variable @code{bookmark-search-size} says how
+many characters of context to record, on each side of the bookmark's
+position.
+
+  Here are some additional commands for working with bookmarks:
+
address@hidden @kbd
address@hidden M-x bookmark-load @key{RET} @var{filename} @key{RET}
address@hidden bookmark-load
+Load a file named @var{filename} that contains a list of bookmark
+values.  You can use this command, as well as @code{bookmark-write}, to
+work with other files of bookmark values in addition to your default
+bookmark file.
+
address@hidden M-x bookmark-write @key{RET} @var{filename} @key{RET}
address@hidden bookmark-write
+Save all the current bookmark values in the file @var{filename}.
+
address@hidden M-x bookmark-delete @key{RET} @var{bookmark} @key{RET}
address@hidden bookmark-delete
+Delete the bookmark named @var{bookmark}.
+
address@hidden M-x bookmark-insert-location @key{RET} @var{bookmark} @key{RET}
address@hidden bookmark-insert-location
+Insert in the buffer the name of the file that bookmark @var{bookmark}
+points to.
+
address@hidden M-x bookmark-insert @key{RET} @var{bookmark} @key{RET}
address@hidden bookmark-insert
+Insert in the buffer the @emph{contents} of the file that bookmark
address@hidden points to.
address@hidden table
+
address@hidden Display, Search, Registers, Top
address@hidden Controlling the Display
+
+  Since only part of a large buffer fits in the window, XEmacs tries to show
+the part that is likely to be interesting.  The display control commands
+allow you to specify which part of the text you want to see.
+
address@hidden @kbd
address@hidden C-l
+Clear frame and redisplay, scrolling the selected window to center
+point vertically within it (@code{recenter}).
address@hidden C-v
address@hidden pgdn
address@hidden next
+Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
+On most X keyboards, you can get this functionality using the key
+labelled @samp{Page Down}, which generates either @kbd{next} or @kbd{pgdn}.
address@hidden M-v
address@hidden pgup
address@hidden prior
+Scroll backward (@code{scroll-down}).  On most X keyboards, you can get
+this functionality using the key labelled @samp{Page Up}, which
+generates either @kbd{prior} or @kbd{pgup}.
address@hidden @var{arg} C-l
+Scroll so point is on line @var{arg} (@code{recenter}).
address@hidden C-x <
address@hidden C-pgdn
address@hidden C-next
+Scroll text in current window to the left (@code{scroll-left}).
address@hidden C-x >
address@hidden C-pgup
address@hidden C-prior
+Scroll to the right (@code{scroll-right}).
address@hidden C-x $
+Make deeply indented lines invisible (@code{set-selective-display}).
address@hidden table
+
address@hidden
+* Scrolling::             Moving text up and down in a window.
+* Horizontal Scrolling::   Moving text left and right in a window.
+* Selective Display::      Hiding lines with lots of indentation.
+* Display Vars::           Information on variables for customizing display.
address@hidden menu
+
address@hidden Scrolling, Horizontal Scrolling, Display, Display
address@hidden Scrolling
+
+  If a buffer contains text that is too large to fit entirely within the
+window that is displaying the buffer, XEmacs shows a contiguous section of
+the text.  The section shown always contains point.
+
address@hidden scrolling
+  @dfn{Scrolling} means moving text up or down in the window so that
+different parts of the text are visible.  Scrolling forward means that text
+moves up, and new text appears at the bottom.  Scrolling backward moves
+text down and new text appears at the top.
+
+  Scrolling happens automatically if you move point past the bottom or top
+of the window.  You can also explicitly request scrolling with the commands
+in this section.
+
address@hidden @kbd
address@hidden C-l
+Clear frame and redisplay, scrolling the selected window to center
+point vertically within it (@code{recenter}).
address@hidden C-v
address@hidden pgdn
address@hidden next
+Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
address@hidden M-v
address@hidden pgup
address@hidden prior
+Scroll backward (@code{scroll-down}).
address@hidden @var{arg} C-l
+Scroll so point is on line @var{arg} (@code{recenter}).
address@hidden table
+
address@hidden C-l
address@hidden recenter
+  The most basic scrolling command is @kbd{C-l} (@code{recenter}) with no
+argument.  It clears the entire frame and redisplays all windows.  In
+addition, it scrolls the selected window so that point is halfway down
+from the top of the window.
+
address@hidden C-v
address@hidden M-v
address@hidden pgup
address@hidden pgdn
address@hidden next
address@hidden prior
address@hidden scroll-up
address@hidden scroll-down
+  The scrolling commands @kbd{C-v} and @kbd{M-v} let you move all the text
+in the window up or down a few lines.  @kbd{C-v} (@code{scroll-up}) with an
+argument shows you that many more lines at the bottom of the window, moving
+the text and point up together as @kbd{C-l} might.  @kbd{C-v} with a
+negative argument shows you more lines at the top of the window.
address@hidden (@code{scroll-down}) is like @kbd{C-v}, but moves in the
+opposite address@hidden
+
address@hidden next-screen-context-lines
+  To read the buffer a windowful at a time, use @kbd{C-v} with no
+argument.  @kbd{C-v} takes the last two lines at the bottom of the
+window and puts them at the top, followed by nearly a whole windowful of
+lines not previously visible.  Point moves to the new top of the window
+if it was in the text scrolled off the top.  @kbd{M-v} with no argument
+moves backward with similar overlap.  The number of lines of overlap
+across a @kbd{C-v} or @kbd{M-v} is controlled by the variable
address@hidden; by default, it is two.
+
+  Another way to scroll is using @kbd{C-l} with a numeric argument.
address@hidden does not clear the frame when given an argument; it only
+scrolls the selected window.  With a positive argument @var{n}, @kbd{C-l}
+repositions text to put point @var{n} lines down from the top.  An
+argument of zero puts point on the very top line.  Point does not move
+with respect to the text; rather, the text and point move rigidly on the
+frame.  @kbd{C-l} with a negative argument puts point that many lines
+from the bottom of the window.  For example, @kbd{C-u - 1 C-l} puts
+point on the bottom line, and @kbd{C-u - 5 C-l} puts it five lines from
+the bottom.  Just @kbd{C-u} as argument, as in @kbd{C-u C-l}, scrolls
+point to the center of the frame.
+
address@hidden scroll-step
+  Scrolling happens automatically if point has moved out of the visible
+portion of the text when it is time to display.  Usually scrolling is
+done  to put point vertically centered within the window.  However, if
+the variable @code{scroll-step} has a non-zero value, an attempt is made to
+scroll the buffer by that many lines; if that is enough to bring point back
+into visibility, that is what happens.
+
+  Scrolling happens automatically if point has moved out of the visible
+portion of the text when it is time to display.  Usually scrolling is
+done  to put point vertically centered within the window.  However, if
+the variable @code{scroll-step} has a non-zero value, an attempt is made to
+scroll the buffer by that many lines; if that is enough to bring point back
+into visibility, that is what happens.
+
address@hidden scroll-conservatively
+  If you set @code{scroll-step} to a small value because you want to use 
+arrow keys to scroll the screen without recentering, the redisplay
+preemption will likely make XEmacs keep recentering the screen when
+scrolling fast, regardless of @code{scroll-step}.  To prevent this, set
address@hidden to a small value, which will have the
+result of overriding the redisplay preemption.
+
address@hidden Horizontal Scrolling,, Scrolling, Display
address@hidden Horizontal Scrolling
+
address@hidden @kbd
address@hidden C-x <
+Scroll text in current window to the left (@code{scroll-left}).
address@hidden C-x >
+Scroll to the right (@code{scroll-right}).
address@hidden table
+
address@hidden C-x <
address@hidden C-x >
address@hidden scroll-left
address@hidden scroll-right
address@hidden horizontal scrolling
+  The text in a window can also be scrolled horizontally.  This means that
+each line of text is shifted sideways in the window, and one or more
+characters at the beginning of each line are not displayed at all.  When a
+window has been scrolled horizontally in this way, text lines are truncated
+rather than continued (@pxref{Continuation Lines}), with a @samp{$} appearing
+in the first column when there is text truncated to the left, and in the
+last column when there is text truncated to the right.
+
+  The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected
+window to the left by @var{n} columns with argument @var{n}.  With no
+argument, it scrolls by almost the full width of the window (two columns
+less, to be precise).  @kbd{C-x >} (@code{scroll-right}) scrolls
+similarly to the right.  The window cannot be scrolled any farther to
+the right once it is displaying normally (with each line starting at the
+window's left margin); attempting to do so has no effect.
+
address@hidden Selective Display, Display Vars, Display, Display
address@hidden Selective Display
address@hidden set-selective-display
address@hidden C-x $
+
+  XEmacs can hide lines indented more than a certain number
+of columns (you specify how many columns).  This allows you  to get an
+overview of a part of a program.
+
+  To hide lines, type @kbd{C-x $} (@code{set-selective-display}) with a
+numeric argument @var{n}.  (@xref{Arguments}, for information on giving
+the argument.)  Lines with at least @var{n} columns of indentation
+disappear from the screen.  The only indication of their presence are
+three dots (@address@hidden), which appear at the end of each visible
+line that is followed by one or more invisible address@hidden
+
+  The invisible lines are still present in the buffer, and most editing
+commands see them as usual, so it is very easy to put point in the middle
+of invisible text.  When this happens, the cursor appears at the end of the
+previous line, after the three dots.  If point is at the end of the visible
+line, before the newline that ends it, the cursor appears before the three
+dots.
+
+  The commands @kbd{C-n} and @kbd{C-p} move across the invisible lines
+as if they were not there.
+
+  To make everything visible again, type @kbd{C-x $} with no argument.
+
address@hidden Display Vars,, Selective Display, Display
address@hidden Variables Controlling Display
+
+  This section contains information for customization only.  Beginning
+users should skip it.
+
address@hidden no-redraw-on-reenter
+  When you reenter XEmacs after suspending, XEmacs normally clears the
+screen and redraws the entire display.  On some terminals with more than
+one page of memory, it is possible to arrange the termcap entry so that
+the @samp{ti} and @samp{te} strings (output to the terminal when XEmacs
+is entered and exited, respectively) switch between pages of memory so
+as to use one page for XEmacs and another page for other output.  In that
+case, you might want to set the variable @code{no-redraw-on-reenter} to
address@hidden so that XEmacs will assume, when resumed, that the screen
+page it is using still contains what XEmacs last wrote there.
+
address@hidden echo-keystrokes
+  The variable @code{echo-keystrokes} controls the echoing of multi-character
+keys; its value is the number of seconds of pause required to cause echoing
+to start, or zero, meaning don't echo at all.  @xref{Echo Area}.
+
address@hidden ctl-arrow
+  If the variable @code{ctl-arrow} is @code{nil}, control characters in the
+buffer are displayed with octal escape sequences, all except newline and
+tab.  If its value is @code{t}, then control characters will be printed 
+with an up-arrow, for example @kbd{^A}.  
+
+If its value is not @code{t} and not @code{nil}, then characters whose
+code is greater than 160 (that is, the space character (32) with its
+high bit set) will be assumed to be printable, and will be displayed
+without alteration.  This is the default when running under X Windows,
+since XEmacs assumes an ISO/8859-1 character set (also known as
+``Latin1'').  The @code{ctl-arrow} variable may also be set to an
+integer, in which case all characters whose codes are greater than or
+equal to that value will be assumed to be printable.
+
+Altering the value of @code{ctl-arrow} makes it local to the current
+buffer; until that time, the default value is in effect.  @xref{Locals}.
+
address@hidden tab-width
+  Normally, a tab character in the buffer is displayed as whitespace which
+extends to the next display tab stop position, and display tab stops come
+at intervals equal to eight spaces.  The number of spaces per tab is
+controlled by the variable @code{tab-width}, which is made local by
+changing it, just like @code{ctl-arrow}.  Note that how the tab character
+in the buffer is displayed has nothing to do with the definition of
address@hidden as a command.
+
address@hidden selective-display-ellipses
+  If you set the variable @code{selective-display-ellipses} to @code{nil},
+the three dots at the end of a line that precedes invisible
+lines do not appear.  There is no visible indication of the invisible lines.
+This variable becomes local automatically when set.
+
address@hidden Search, Fixit, Display, Top
address@hidden Searching and Replacement
address@hidden searching
+
+  Like other editors, Emacs has commands for searching for occurrences of
+a string.  The principal search command is unusual in that it is
address@hidden: it begins to search before you have finished typing the
+search string.  There are also non-incremental search commands more like
+those of other editors.
+
+  Besides the usual @code{replace-string} command that finds all
+occurrences of one string and replaces them with another, Emacs has a fancy
+replacement command called @code{query-replace} which asks interactively
+which occurrences to replace.
+
address@hidden
+* Incremental Search::     Search happens as you type the string.
+* Non-Incremental Search:: Specify entire string and then search.
+* Word Search::            Search for sequence of words.
+* Regexp Search::          Search for match for a regexp.
+* Regexps::                Syntax of regular expressions.
+* Search Case::            To ignore case while searching, or not.
+* Replace::                Search, and replace some or all matches.
+* Other Repeating Search:: Operating on all matches for some regexp.
address@hidden menu
+
address@hidden Incremental Search, Non-Incremental Search, Search, Search
address@hidden Incremental Search
+
+  An incremental search begins searching as soon as you type the first
+character of the search string.  As you type in the search string, Emacs
+shows you where the string (as you have typed it so far) is found.
+When you have typed enough characters to identify the place you want, you
+can stop.  Depending on what you do next, you may or may not need to
+terminate the search explicitly with a @key{RET}.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-s
+Incremental search forward (@code{isearch-forward}).
address@hidden C-r
+Incremental search backward (@code{isearch-backward}).
address@hidden table
+
address@hidden C-s
address@hidden C-r
address@hidden isearch-forward
address@hidden isearch-backward
+  @kbd{C-s} starts an incremental search.  @kbd{C-s} reads characters from
+the keyboard and positions the cursor at the first occurrence of the
+characters that you have typed.  If you type @kbd{C-s} and then @kbd{F},
+the cursor moves right after the first @samp{F}.  Type an @kbd{O}, and see
+the cursor move to after the first @samp{FO}.  After another @kbd{O}, the
+cursor is after the first @samp{FOO} after the place where you started the
+search.  Meanwhile, the search string @samp{FOO} has been echoed in the
+echo address@hidden
+
+  The echo area display ends with three dots when actual searching is going
+on.  When search is waiting for more input, the three dots are removed.
+(On slow terminals, the three dots are not displayed.)
+
+  If you make a mistake in typing the search string, you can erase
+characters with @key{DEL}.  Each @key{DEL} cancels the last character of the
+search string.  This does not happen until Emacs is ready to read another
+input character; first it must either find, or fail to find, the character
+you want to erase.  If you do not want to wait for this to happen, use
address@hidden as described address@hidden
+
+  When you are satisfied with the place you have reached, you can type
address@hidden (or @key{C-m}), which stops searching, leaving the cursor where 
+the search brought it.  Any command not specially meaningful in searches also
+stops the search and is then executed.  Thus, typing @kbd{C-a} exits the
+search and then moves to the beginning of the line.  @key{RET} is necessary
+only if the next command you want to type is a printing character,
address@hidden, @key{ESC}, or another control character that is special
+within searches (@kbd{C-q}, @kbd{C-w}, @kbd{C-r}, @kbd{C-s}, or @kbd{C-y}).
+
+  Sometimes you search for @samp{FOO} and find it, but were actually
+looking for a different occurrence of it.  To move to the next occurrence
+of the search string, type another @kbd{C-s}.  Do this as often as
+necessary.  If you overshoot, you can cancel some @kbd{C-s}
+characters with @key{DEL}.
+
+  After you exit a search, you can search for the same string again by
+typing just @kbd{C-s C-s}: the first @kbd{C-s} is the key that invokes
+incremental search, and the second @kbd{C-s} means ``search again''.
+
+  If the specified string is not found at all, the echo area displays
+the text @samp{Failing I-Search}.  The cursor is after the place where
+Emacs found as much of your string as it could.  Thus, if you search for
address@hidden, and there is no @samp{FOOT}, the cursor may be after the
address@hidden in @samp{FOOL}.  At this point there are several things you
+can do.  If you mistyped the search string, correct it.  If you like the
+place you have found, you can type @key{RET} or some other Emacs command
+to ``accept what the search offered''.  Or you can type @kbd{C-g}, which
+removes from the search string the characters that could not be found
+(the @samp{T} in @samp{FOOT}), leaving those that were found (the
address@hidden in @samp{FOOT}).  A second @kbd{C-g} at that point cancels
+the search entirely, returning point to where it was when the search
+started.
+
+  If a search is failing and you ask to repeat it by typing another
address@hidden, it starts again from the beginning of the buffer.  Repeating
+a failing backward search with @kbd{C-r} starts again from the end.  This
+is called @dfn{wrapping around}.  @samp{Wrapped} appears in the search
+prompt once this has happened.
+
address@hidden quitting (in search)
+  The @kbd{C-g} ``quit'' character does special things during searches;
+just what it does depends on the status of the search.  If the search has
+found what you specified and is waiting for input, @kbd{C-g} cancels the
+entire search.  The cursor moves back to where you started the search.  If
address@hidden is typed when there are characters in the search string that have
+not been found---because Emacs is still searching for them, or because it
+has failed to find them---then the search string characters which have not
+been found are discarded from the search string.  The
+search is now successful and waiting for more input, so a second @kbd{C-g}
+cancels the entire search.
+
+  To search for a control character such as @kbd{C-s} or @key{DEL} or
address@hidden, you must quote it by typing @kbd{C-q} first.  This function
+of @kbd{C-q} is analogous to its meaning as an Emacs command: it causes
+the following character to be treated the way a graphic character would
+normally be treated in the same context.
+
+ To search backwards, you can use @kbd{C-r} instead of @kbd{C-s} to
+start the search; @kbd{C-r} is the key that runs the command
+(@code{isearch-backward}) to search backward.  You can also use
address@hidden to change from searching forward to searching backwards.  Do
+this if a search fails because the place you started was too far down in the
+file.  Repeated @kbd{C-r} keeps looking for more occurrences backwards.
address@hidden starts going forward again.  You can cancel @kbd{C-r} in a
+search with @key{DEL}.
+
+  The characters @kbd{C-y} and @kbd{C-w} can be used in incremental search
+to grab text from the buffer into the search string.  This makes it
+convenient to search for another occurrence of text at point.  @kbd{C-w}
+copies the word after point as part of the search string, advancing
+point over that word.  Another @kbd{C-s} to repeat the search will then
+search for a string including that word.  @kbd{C-y} is similar to @kbd{C-w}
+but copies the rest of the current line into the search string.
+
+  The characters @kbd{M-p} and @kbd{M-n} can be used in an incremental
+search to recall things which you have searched for in the past.  A
+list of the last 16 things you have searched for is retained, and 
address@hidden and @kbd{M-n} let you cycle through that ring.
+
+The character @address@hidden does completion on the elements in 
+the search history ring.  For example, if you know that you have
+recently searched for the string @code{POTATOE}, you could type
address@hidden P O address@hidden  If you had searched for other strings
+beginning with @code{PO} then you would be shown a list of them, and
+would need to type more to select one. 
+
+  You can change any of the special characters in incremental search via
+the normal keybinding mechanism: simply add a binding to the 
address@hidden  For example, to make the character
address@hidden mean ``search backwards'' while in isearch-mode, do this:
+
address@hidden
+(define-key isearch-mode-map "\C-b" 'isearch-repeat-backward)
address@hidden example
+
+These are the default bindings of isearch-mode:
+
address@hidden isearch-delete-char
address@hidden isearch-exit
address@hidden isearch-quote-char
address@hidden isearch-repeat-forward
address@hidden isearch-repeat-backward
address@hidden isearch-yank-line
address@hidden isearch-yank-word
address@hidden isearch-abort
address@hidden isearch-ring-retreat
address@hidden isearch-ring-advance
address@hidden isearch-complete
+
address@hidden DEL (isearch-mode)
address@hidden RET (isearch-mode)
address@hidden C-q (isearch-mode)
address@hidden C-s (isearch-mode)
address@hidden C-r (isearch-mode)
address@hidden C-y (isearch-mode)
address@hidden C-w (isearch-mode)
address@hidden C-g (isearch-mode)
address@hidden M-p (isearch-mode)
address@hidden M-n (isearch-mode)
address@hidden M-TAB (isearch-mode)
+
address@hidden @kbd
address@hidden DEL
+Delete a character from the incremental search string 
(@code{isearch-delete-char}).
address@hidden RET
+Exit incremental search (@code{isearch-exit}).
address@hidden C-q
+Quote special characters for incremental search (@code{isearch-quote-char}).
address@hidden C-s
+Repeat incremental search forward (@code{isearch-repeat-forward}).
address@hidden C-r
+Repeat incremental search backward (@code{isearch-repeat-backward}).
address@hidden C-y
+Pull rest of line from buffer into search string (@code{isearch-yank-line}).
address@hidden C-w
+Pull next word from buffer into search string (@code{isearch-yank-word}).
address@hidden C-g
+Cancels input back to what has been found successfully, or aborts the 
+isearch (@code{isearch-abort}).
address@hidden M-p
+Recall the previous element in the isearch history ring 
+(@code{isearch-ring-retreat}).
address@hidden M-n
+Recall the next element in the isearch history ring 
+(@code{isearch-ring-advance}).
address@hidden address@hidden
+Do completion on the elements in the isearch history ring 
+(@code{isearch-complete}).
+
address@hidden table
+
+Any other character which is normally inserted into a buffer when typed
+is automatically added to the search string in isearch-mode.
+
address@hidden Slow Terminal Incremental Search
+
+  Incremental search on a slow terminal uses a modified style of display
+that is designed to take less time.  Instead of redisplaying the buffer at
+each place the search gets to, it creates a new single-line window and uses
+that to display the line the search has found.  The single-line window
+appears as soon as point gets outside of the text that is already
+on the screen.
+
+  When the search is terminated, the single-line window is removed.  Only
+at this time the window in which the search was done is redisplayed to show
+its new value of point.
+
+  The three dots at the end of the search string, normally used to indicate
+that searching is going on, are not displayed in slow style display.
+
address@hidden search-slow-speed
+  The slow terminal style of display is used when the terminal baud rate is
+less than or equal to the value of the variable @code{search-slow-speed},
+initially 1200.
+
address@hidden search-slow-window-lines
+  The number of lines to use in slow terminal search display is controlled
+by the variable @code{search-slow-window-lines}.  Its normal value is 1.
+
address@hidden Non-Incremental Search, Word Search, Incremental Search, Search
address@hidden Non-Incremental Search
address@hidden non-incremental search
+
+  Emacs also has conventional non-incremental search commands, which require
+you type the entire search string before searching begins.
+
address@hidden @kbd
address@hidden C-s @key{RET} @var{string} @key{RET}
+Search for @var{string}.
address@hidden C-r @key{RET} @var{string} @key{RET}
+Search backward for @var{string}.
address@hidden table
+
+  To do a non-incremental search, first type @kbd{C-s @key{RET}}
+(or @kbd{C-s C-m}).  This enters the minibuffer to read the search string.
+Terminate the string with @key{RET} to start the search.  If the string
+is not found, the search command gets an error.
+
+ By default, @kbd{C-s} invokes incremental search, but if you give it an
+empty argument, which would otherwise be useless, it invokes non-incremental
+search.  Therefore, @kbd{C-s @key{RET}} invokes non-incremental search. 
address@hidden @key{RET}} also works this way.
+
address@hidden search-forward
address@hidden search-backward
+  Forward and backward non-incremental searches are implemented by the
+commands @code{search-forward} and @code{search-backward}.  You can bind
+these commands to keys.  The reason that incremental
+search is programmed to invoke them as well is that @kbd{C-s @key{RET}}
+is the traditional sequence of characters used in Emacs to invoke
+non-incremental search.
+
+ Non-incremental searches performed using @kbd{C-s @key{RET}} do
+not call @code{search-forward} right away.  They first check
+if the next character is @kbd{C-w}, which requests a word search.
address@hidden Search}.
+
address@hidden Word Search, Regexp Search, Non-Incremental Search, Search
address@hidden Word Search
address@hidden word search
+
+  Word search looks for a sequence of words without regard to how the
+words are separated.  More precisely, you type a string of many words,
+using single spaces to separate them, and the string is found even if
+there are multiple spaces, newlines or other punctuation between the words.
+
+  Word search is useful in editing documents formatted by text formatters.
+If you edit while looking at the printed, formatted version, you can't tell
+where the line breaks are in the source file.  Word search, allows you
+to search  without having to know the line breaks.
+
address@hidden @kbd
address@hidden C-s @key{RET} C-w @var{words} @key{RET}
+Search for @var{words}, ignoring differences in punctuation.
address@hidden C-r @key{RET} C-w @var{words} @key{RET}
+Search backward for @var{words}, ignoring differences in punctuation.
address@hidden table
+
+  Word search is a special case of non-incremental search.  It is invoked
+with @kbd{C-s @key{RET} C-w} followed by the search string, which
+must always be terminated with another @key{RET}.  Being non-incremental, this
+search does not start until the argument is terminated.  It works by
+constructing a regular expression and searching for that.  @xref{Regexp
+Search}.
+
+ You can do a backward word search with @kbd{C-r @key{RET} C-w}.
+
address@hidden word-search-forward
address@hidden word-search-backward
+  Forward and backward word searches are implemented by the commands
address@hidden and @code{word-search-backward}.  You can
+bind these commands to keys.  The reason that incremental
+search is programmed to invoke them as well is that @kbd{C-s @key{RET} C-w}
+is the traditional Emacs sequence of keys for word search.
+
address@hidden Regexp Search, Regexps, Word Search, Search
address@hidden Regular Expression Search
address@hidden regular expression
address@hidden regexp
+
+  A @dfn{regular expression} (@dfn{regexp}, for short) is a pattern that
+denotes a (possibly infinite) set of strings.  Searching for matches
+for a regexp is a powerful operation that editors on Unix systems have
+traditionally offered.
+
+ To gain a thorough understanding of regular expressions and how to use
+them to best advantage, we recommend that you study @cite{Mastering
+Regular Expressions, by Jeffrey E.F. Friedl, O'Reilly and Associates,
+1997}. (It's known as the "Hip Owls" book, because of the picture on its
+cover.)  You might also read the manuals to @ref{(gawk)Top},
address@hidden(ed)Top}, @cite{sed}, @cite{grep}, @ref{(perl)Top},
address@hidden(regex)Top}, @ref{(rx)Top}, @cite{pcre}, and @ref{(flex)Top}, 
which
+also make good use of regular expressions.
+
+ The XEmacs regular expression syntax most closely resembles that of
address@hidden, or @cite{grep}, the GNU versions of which all utilize the GNU
address@hidden library.  XEmacs' version of @cite{regex} has recently been
+extended with some Perl--like capabilities, described in the next
+section.
+
+ In XEmacs, you can search for the next match for a regexp either
+incrementally or not.
+
address@hidden M-C-s
address@hidden M-C-r
address@hidden isearch-forward-regexp
address@hidden isearch-backward-regexp
+  Incremental search for a regexp is done by typing @kbd{M-C-s}
+(@code{isearch-forward-regexp}).  This command reads a search string
+incrementally just like @kbd{C-s}, but it treats the search string as a
+regexp rather than looking for an exact match against the text in the
+buffer.  Each time you add text to the search string, you make the regexp
+longer, and the new regexp is searched for.  A reverse regexp search command
address@hidden also exists, bound to @kbd{M-C-r}.
+
+  All of the control characters that do special things within an ordinary
+incremental search have the same functionality in incremental regexp search.
+Typing @kbd{C-s} or @kbd{C-r} immediately after starting a search
+retrieves the last incremental search regexp used:
+incremental regexp and non-regexp searches have independent defaults.
+
address@hidden re-search-forward
address@hidden re-search-backward
+  Non-incremental search for a regexp is done by the functions
address@hidden and @code{re-search-backward}.  You can invoke
+them with @kbd{M-x} or bind them to keys.  You can also call
address@hidden by way of incremental regexp search with
address@hidden @key{RET}}; similarly for @code{re-search-backward} with
address@hidden @key{RET}}.
+
address@hidden Regexps, Search Case, Regexp Search, Search
address@hidden Syntax of Regular Expressions
+
+  Regular expressions have a syntax in which a few characters are
+special constructs and the rest are @dfn{ordinary}.  An ordinary
+character is a simple regular expression that matches that character and
+nothing else.  The special characters are @samp{.}, @samp{*}, @samp{+},
address@hidden, @samp{[}, @samp{]}, @samp{^}, @samp{$}, and @samp{\}; no new
+special characters will be defined in the future.  Any other character
+appearing in a regular expression is ordinary, unless a @samp{\}
+precedes it.
+
+For example, @samp{f} is not a special character, so it is ordinary, and
+therefore @samp{f} is a regular expression that matches the string
address@hidden and no other string.  (It does @emph{not} match the string
address@hidden)  Likewise, @samp{o} is a regular expression that matches
+only @address@hidden
+
+Any two regular expressions @var{a} and @var{b} can be concatenated.  The
+result is a regular expression that matches a string if @var{a} matches
+some amount of the beginning of that string and @var{b} matches the rest of
+the address@hidden
+
+As a simple example, we can concatenate the regular expressions @samp{f}
+and @samp{o} to get the regular expression @samp{fo}, which matches only
+the string @samp{fo}.  Still trivial.  To do something more powerful, you
+need to use one of the special characters.  Here is a list of them:
+
address@hidden 1200
address@hidden @kbd
address@hidden .@: @r{(Period)}
address@hidden @samp{.} in regexp
+is a special character that matches any single character except a newline.
+Using concatenation, we can make regular expressions like @samp{a.b}, which
+matches any three-character string that begins with @samp{a} and ends with
address@hidden@refill
+
address@hidden *
address@hidden @samp{*} in regexp
+is not a construct by itself; it is a quantifying suffix operator that
+means to repeat the preceding regular expression as many times as
+possible.  In @samp{fo*}, the @samp{*} applies to the @samp{o}, so
address@hidden matches one @samp{f} followed by any number of @samp{o}s.
+The case of zero @samp{o}s is allowed: @samp{fo*} does match
address@hidden@refill
+
address@hidden always applies to the @emph{smallest} possible preceding
+expression.  Thus, @samp{fo*} has a repeating @samp{o}, not a
+repeating @address@hidden
+
+The matcher processes a @samp{*} construct by matching, immediately, as
+many repetitions as can be found; it is "greedy".  Then it continues
+with the rest of the pattern.  If that fails, backtracking occurs,
+discarding some of the matches of the @samp{*}-modified construct in
+case that makes it possible to match the rest of the pattern.  For
+example, in matching @samp{ca*ar} against the string @samp{caaar}, the
address@hidden first tries to match all three @samp{a}s; but the rest of the
+pattern is @samp{ar} and there is only @samp{r} left to match, so this
+try fails.  The next alternative is for @samp{a*} to match only two
address@hidden  With this choice, the rest of the regexp matches
address@hidden
+
+Nested repetition operators can be extremely slow if they specify
+backtracking loops.  For example, it could take hours for the regular
+expression @samp{\(x+y*\)*a} to match the sequence
address@hidden  The slowness is because
+Emacs must try each imaginable way of grouping the 35 @samp{x}'s before
+concluding that none of them can work.  To make sure your regular
+expressions run fast, check nested repetitions carefully.
+
address@hidden +
address@hidden @samp{+} in regexp
+is a quantifying suffix operator similar to @samp{*} except that the
+preceding expression must match at least once.  It is also "greedy".
+So, for example, @samp{ca+r} matches the strings @samp{car} and
address@hidden but not the string @samp{cr}, whereas @samp{ca*r} matches
+all three strings.
+
address@hidden ?
address@hidden @samp{?} in regexp
+is a quantifying suffix operator similar to @samp{*}, except that the
+preceding expression can match either once or not at all.  For example,
address@hidden matches @samp{car} or @samp{cr}, but does not match anything
+else.
+
address@hidden *?
address@hidden @samp{*?} in regexp
+works just like @samp{*}, except that rather than matching the longest
+match, it matches the shortest match.  @samp{*?} is known as a
address@hidden quantifier, a regexp construct borrowed from Perl.
address@hidden Did perl get this from somewhere?  What's the real history of *? 
?
+
+This construct is very useful for when you want to match the text inside
+a pair of delimiters.  For instance, @samp{/\*.*?\*/} will match C
+comments in a string.  This could not easily be achieved without the use
+of a non-greedy quantifier.
+
+This construct has not been available prior to XEmacs 20.4.  It is not
+available in FSF Emacs.
+
address@hidden +?
address@hidden @samp{+?} in regexp
+is the non-greedy version of @samp{+}.
+
address@hidden ??
address@hidden @samp{??} in regexp
+is the non-greedy version of @samp{?}.
+
address@hidden address@hidden,address@hidden
address@hidden Note the spacing after the close brace is deliberate.
address@hidden @address@hidden,address@hidden }in regexp
+serves as an interval quantifier, analogous to @samp{*} or @samp{+}, but
+specifies that the expression must match at least @var{n} times, but no
+more than @var{m} times.  This syntax is supported by most Unix regexp
+utilities, and has been introduced to XEmacs for the version 20.3.
+
+Unfortunately, the non-greedy version of this quantifier does not exist
+currently, although it does in Perl.
+
address@hidden [ @dots{} ]
address@hidden character set (in regexp)
address@hidden @samp{[} in regexp
address@hidden @samp{]} in regexp
address@hidden begins a @dfn{character set}, which is terminated by a
address@hidden  In the simplest case, the characters between the two brackets
+form the set.  Thus, @samp{[ad]} matches either one @samp{a} or one
address@hidden, and @samp{[ad]*} matches any string composed of just @samp{a}s
+and @samp{d}s (including the empty string), from which it follows that
address@hidden matches @samp{cr}, @samp{car}, @samp{cdr},
address@hidden, address@hidden
+
+The usual regular expression special characters are not special inside a
+character set.  A completely different set of special characters exists
+inside character sets: @samp{]}, @samp{-} and @address@hidden
+
address@hidden is used for ranges of characters.  To write a range, write two
+characters with a @samp{-} between them.  Thus, @samp{[a-z]} matches any
+lower case letter.  Ranges may be intermixed freely with individual
+characters, as in @samp{[a-z$%.]}, which matches any lower case letter
+or @samp{$}, @samp{%}, or a address@hidden
+
+To include a @samp{]} in a character set, make it the first character.
+For example, @samp{[]a]} matches @samp{]} or @samp{a}.  To include a
address@hidden, write @samp{-} as the first character in the set, or put it
+immediately after a range.  (You can replace one individual character
address@hidden with the range @address@hidden@var{c}} to make a place to put the
address@hidden)  There is no way to write a set containing just @samp{-} and
address@hidden
+
+To include @samp{^} in a set, put it anywhere but at the beginning of
+the set.
+
address@hidden [^ @dots{} ]
address@hidden @samp{^} in regexp
address@hidden begins a @dfn{complement character set}, which matches any
+character except the ones specified.  Thus, @samp{[^a-z0-9A-Z]}
+matches all characters @emph{except} letters and address@hidden
+
address@hidden is not special in a character set unless it is the first
+character.  The character following the @samp{^} is treated as if it
+were first (thus, @samp{-} and @samp{]} are not special there).
+
+Note that a complement character set can match a newline, unless
+newline is mentioned as one of the characters not to match.
+
address@hidden ^
address@hidden @samp{^} in regexp
address@hidden beginning of line in regexp
+is a special character that matches the empty string, but only at the
+beginning of a line in the text being matched.  Otherwise it fails to
+match anything.  Thus, @samp{^foo} matches a @samp{foo} that occurs at
+the beginning of a line.
+
+When matching a string instead of a buffer, @samp{^} matches at the
+beginning of the string or after a newline character @samp{\n}.
+
address@hidden $
address@hidden @samp{$} in regexp
+is similar to @samp{^} but matches only at the end of a line.  Thus,
address@hidden matches a string of one @samp{x} or more at the end of a line.
+
+When matching a string instead of a buffer, @samp{$} matches at the end
+of the string or before a newline character @samp{\n}.
+
address@hidden \
address@hidden @samp{\} in regexp
+has two functions: it quotes the special characters (including
address@hidden), and it introduces additional special constructs.
+
+Because @samp{\} quotes special characters, @samp{\$} is a regular
+expression that matches only @samp{$}, and @samp{\[} is a regular
+expression that matches only @samp{[}, and so on.
+
address@hidden Removed a paragraph here in lispref about doubling backslashes 
inside
address@hidden of Lisp strings.
+
address@hidden table
+
address@hidden note:} For historical compatibility, special characters
+are treated as ordinary ones if they are in contexts where their special
+meanings make no sense.  For example, @samp{*foo} treats @samp{*} as
+ordinary since there is no preceding expression on which the @samp{*}
+can act.  It is poor practice to depend on this behavior; quote the
+special character anyway, regardless of where it address@hidden
+
+For the most part, @samp{\} followed by any character matches only
+that character.  However, there are several exceptions: characters
+that, when preceded by @samp{\}, are special constructs.  Such
+characters are always ordinary when encountered on their own.  Here
+is a table of @samp{\} constructs:
+
address@hidden @kbd
address@hidden \|
address@hidden @samp{|} in regexp
address@hidden regexp alternative
+specifies an alternative.
+Two regular expressions @var{a} and @var{b} with @samp{\|} in
+between form an expression that matches anything that either @var{a} or
address@hidden address@hidden
+
+Thus, @samp{foo\|bar} matches either @samp{foo} or @samp{bar}
+but no other address@hidden
+
address@hidden|} applies to the largest possible surrounding expressions.  Only 
a
+surrounding @samp{\( @dots{} \)} grouping can limit the grouping power of
address@hidden|address@hidden
+
+Full backtracking capability exists to handle multiple uses of @samp{\|}.
+
address@hidden \( @dots{} \)
address@hidden @samp{(} in regexp
address@hidden @samp{)} in regexp
address@hidden regexp grouping
+is a grouping construct that serves three purposes:
+
address@hidden
address@hidden
+To enclose a set of @samp{\|} alternatives for other operations.
+Thus, @samp{\(foo\|bar\)x} matches either @samp{foox} or @samp{barx}.
+
address@hidden
+To enclose an expression for a suffix operator such as @samp{*} to act
+on.  Thus, @samp{ba\(na\)*} matches @samp{bananana}, etc., with any
+(zero or more) number of @samp{na} address@hidden
+
address@hidden
+To record a matched substring for future reference.
address@hidden enumerate
+
+This last application is not a consequence of the idea of a
+parenthetical grouping; it is a separate feature that happens to be
+assigned as a second meaning to the same @samp{\( @dots{} \)} construct
+because there is no conflict in practice between the two meanings.
+Here is an explanation of this feature:
+
address@hidden address@hidden
+matches the same text that matched the @var{digit}th occurrence of a
address@hidden( @dots{} \)} construct.
+
+In other words, after the end of a @samp{\( @dots{} \)} construct.  the
+matcher remembers the beginning and end of the text matched by that
+construct.  Then, later on in the regular expression, you can use
address@hidden followed by @var{digit} to match that same text, whatever it
+may have been.
+
+The strings matching the first nine @samp{\( @dots{} \)} constructs
+appearing in a regular expression are assigned numbers 1 through 9 in
+the order that the open parentheses appear in the regular expression.
+So you can use @samp{\1} through @samp{\9} to refer to the text matched
+by the corresponding @samp{\( @dots{} \)} constructs.
+
+For example, @samp{\(.*\)\1} matches any newline-free string that is
+composed of two identical halves.  The @samp{\(.*\)} matches the first
+half, which may be anything, but the @samp{\1} that follows must match
+the same exact text.
+
address@hidden \(?: @dots{} \)
address@hidden @samp{\(?:} in regexp
address@hidden regexp grouping
+is called a @dfn{shy} grouping operator, and it is used just like
address@hidden( @dots{} \)}, except that it does not cause the matched
+substring to be recorded for future reference.
+
+This is useful when you need a lot of grouping @samp{\( @dots{} \)}
+constructs, but only want to remember one or two -- or if you have
+more than nine groupings and need to use backreferences to refer to
+the groupings at the end.
+
+Using @samp{\(?: @dots{} \)} rather than @samp{\( @dots{} \)} when you
+don't need the captured substrings ought to speed up your programs some,
+since it shortens the code path followed by the regular expression
+engine, as well as the amount of memory allocation and string copying it
+must do.  The actual performance gain to be observed has not been
+measured or quantified as of this writing.
address@hidden This is used to good advantage by the font-locking code, and by
address@hidden `regexp-opt.el'.
+
+The shy grouping operator has been borrowed from Perl, and has not been
+available prior to XEmacs 20.3, nor is it available in FSF Emacs.
+
address@hidden \w
address@hidden @samp{\w} in regexp
+matches any word-constituent character.  The editor syntax table
+determines which characters these are.  @xref{Syntax}.
+
address@hidden \W
address@hidden @samp{\W} in regexp
+matches any character that is not a word constituent.
+
address@hidden address@hidden
address@hidden @samp{\s} in regexp
+matches any character whose syntax is @var{code}.  Here @var{code} is a
+character that represents a syntax code: thus, @samp{w} for word
+constituent, @samp{-} for whitespace, @samp{(} for open parenthesis,
+etc.  @xref{Syntax}, for a list of syntax codes and the characters that
+stand for them.
+
address@hidden address@hidden
address@hidden @samp{\S} in regexp
+matches any character whose syntax is not @var{code}.
address@hidden table
+
+  The following regular expression constructs match the empty string---that is,
+they don't use up any characters---but whether they match depends on the
+context.
+
address@hidden @kbd
address@hidden \`
address@hidden @samp{\`} in regexp
+matches the empty string, but only at the beginning
+of the buffer or string being matched against.
+
address@hidden \'
address@hidden @samp{\'} in regexp
+matches the empty string, but only at the end of
+the buffer or string being matched against.
+
address@hidden \=
address@hidden @samp{\=} in regexp
+matches the empty string, but only at point.
+(This construct is not defined when matching against a string.)
+
address@hidden \b
address@hidden @samp{\b} in regexp
+matches the empty string, but only at the beginning or
+end of a word.  Thus, @samp{\bfoo\b} matches any occurrence of
address@hidden as a separate word.  @samp{\bballs?\b} matches
address@hidden or @samp{balls} as a separate address@hidden
+
address@hidden \B
address@hidden @samp{\B} in regexp
+matches the empty string, but @emph{not} at the beginning or
+end of a word.
+
address@hidden \<
address@hidden @samp{\<} in regexp
+matches the empty string, but only at the beginning of a word.
+
address@hidden \>
address@hidden @samp{\>} in regexp
+matches the empty string, but only at the end of a word.
address@hidden table
+
+  Here is a complicated regexp used by Emacs to recognize the end of a
+sentence together with any whitespace that follows.  It is given in Lisp
+syntax to enable you to distinguish the spaces from the tab characters.  In
+Lisp syntax, the string constant begins and ends with a double-quote.
address@hidden"} stands for a double-quote as part of the regexp, @samp{\\} for 
a
+backslash as part of the regexp, @samp{\t} for a tab and @samp{\n} for a
+newline.
+
address@hidden
+"[.?!][]\"')]*\\($\\|\t\\|  \\)[ \t\n]*"
address@hidden example
+
address@hidden
+This regexp contains four parts: a character set matching
+period, @samp{?} or @samp{!}; a character set matching close-brackets,
+quotes or parentheses, repeated any number of times; an alternative in
+backslash-parentheses that matches end-of-line, a tab or two spaces; and
+a character set matching whitespace characters, repeated any number of
+times.
+
address@hidden Search Case, Replace, Regexps, Search
address@hidden Searching and Case
+
address@hidden case-fold-search
+  All searches in Emacs normally ignore the case of the text they
+are searching through; if you specify searching for @samp{FOO},
address@hidden and @samp{foo} are also considered a match.  Regexps, and in
+particular character sets, are included: @samp{[aB]} matches @samp{a}
+or @samp{A} or @samp{b} or @address@hidden
+
+  If you want a case-sensitive search, set the variable
address@hidden to @code{nil}.  Then all letters must match
+exactly, including case. @code{case-fold-search} is a per-buffer
+variable; altering it affects only the current buffer, but
+there is a default value which you can change as well.  @xref{Locals}. 
+You can also use @b{Case Sensitive Search} from the @b{Options} menu 
+on your screen.
+
address@hidden Replace, Other Repeating Search, Search Case, Search
address@hidden Replacement Commands
address@hidden replacement
address@hidden string substitution
address@hidden global substitution
+
+  Global search-and-replace operations are not needed as often in Emacs as
+they are in other editors, but they are available.  In addition to the
+simple @code{replace-string} command which is like that found in most
+editors, there is a @code{query-replace} command which asks you, for each
+occurrence of a pattern, whether to replace it.
+
+  The replace commands all replace one string (or regexp) with one
+replacement string.  It is possible to perform several replacements in
+parallel using the command @code{expand-region-abbrevs}.  @xref{Expanding
+Abbrevs}.
+
address@hidden
+* Unconditional Replace::  Replacing all matches for a string.
+* Regexp Replace::         Replacing all matches for a regexp.
+* Replacement and Case::   How replacements preserve case of letters.
+* Query Replace::          How to use querying.
address@hidden menu
+
address@hidden Unconditional Replace, Regexp Replace, Replace, Replace
address@hidden Unconditional Replacement
address@hidden replace-string
address@hidden replace-regexp
+
address@hidden @kbd
address@hidden M-x replace-string @key{RET} @var{string} @key{RET} 
@var{newstring} @key{RET}
+Replace every occurrence of @var{string} with @var{newstring}.
address@hidden M-x replace-regexp @key{RET} @var{regexp} @key{RET} 
@var{newstring} @key{RET}
+Replace every match for @var{regexp} with @var{newstring}.
address@hidden table
+
+  To replace every instance of @samp{foo} after point with @samp{bar},
+use the command @kbd{M-x replace-string} with the two arguments
address@hidden and @samp{bar}.  Replacement occurs only after point: if you
+want to cover the whole buffer you must go to the beginning first.  By
+default, all occurrences up to the end of the buffer are replaced.  To
+limit replacement to part of the buffer, narrow to that part of the
+buffer before doing the replacement (@pxref{Narrowing}).
+
+  When @code{replace-string} exits, point is left at the last occurrence
+replaced.  The value of point when the @code{replace-string} command was
+issued is remembered on the mark ring; @kbd{C-u address@hidden moves back
+there.
+
+  A numeric argument restricts replacement to matches that are surrounded
+by word boundaries.
+
address@hidden Regexp Replace, Replacement and Case, Unconditional Replace, 
Replace
address@hidden Regexp Replacement
+
+  @code{replace-string} replaces exact matches for a single string.  The
+similar command @code{replace-regexp} replaces any match for a specified
+pattern.
+
+  In @code{replace-regexp}, the @var{newstring} need not be constant.  It
+can refer to all or part of what is matched by the @var{regexp}.  @samp{\&}
+in @var{newstring} stands for the entire text being replaced.
address@hidden@var{d}} in @var{newstring}, where @var{d} is a digit, stands for
+whatever matched the @var{d}'th parenthesized grouping in @var{regexp}.
+For example,@refill
+
address@hidden
+M-x replace-regexp @key{RET} c[ad]+r @key{RET} \&-safe @key{RET}
address@hidden example
+
address@hidden
+would replace (for example) @samp{cadr} with @samp{cadr-safe} and @samp{cddr}
+with @samp{cddr-safe}.
+
address@hidden
+M-x replace-regexp @key{RET} \(c[ad]+r\)-safe @key{RET} \1 @key{RET}
address@hidden example
+
address@hidden
+would perform exactly the opposite replacements.  To include a @samp{\}
+in the text to replace with, you must give @samp{\\}.
+
address@hidden Replacement and Case, Query Replace, Regexp Replace, Replace
address@hidden Replace Commands and Case
+
address@hidden case-replace
address@hidden case-fold-search
+  If the arguments to a replace command are in lower case, the command
+preserves case when it makes a replacement.  Thus, the following command:
+
address@hidden
+M-x replace-string @key{RET} foo @key{RET} bar @key{RET}
address@hidden example
+
address@hidden
+replaces a lower-case @samp{foo} with a lower case @samp{bar}, @samp{FOO}
+with @samp{BAR}, and @samp{Foo} with @samp{Bar}.  If upper-case letters are
+used in the second argument, they remain upper-case every time that
+argument is inserted.  If upper-case letters are used in the first
+argument, the second argument is always substituted exactly as given, with
+no case conversion.  Likewise, if the variable @code{case-replace} is set
+to @code{nil}, replacement is done without case conversion.  If
address@hidden is set to @code{nil}, case is significant in
+matching occurrences of @samp{foo} to replace; also, case conversion of the
+replacement string is not done.
+
address@hidden Query Replace,, Replacement and Case, Replace
address@hidden Query Replace
address@hidden query replace
+
address@hidden @kbd
address@hidden M-% @var{string} @key{RET} @var{newstring} @key{RET}
address@hidden M-x query-replace @key{RET} @var{string} @key{RET} 
@var{newstring} @key{RET}
+Replace some occurrences of @var{string} with @var{newstring}.
address@hidden M-x query-replace-regexp @key{RET} @var{regexp} @key{RET} 
@var{newstring} @key{RET}
+Replace some matches for @var{regexp} with @var{newstring}.
address@hidden table
+
address@hidden M-%
address@hidden query-replace
+  If you want to change only some of the occurrences of @samp{foo} to
address@hidden, not all of them, you can use @code{query-replace} instead of
address@hidden  This command finds occurrences of @samp{foo} one by one,
+displays each occurrence, and asks you whether to replace it.  A numeric
+argument to @code{query-replace} tells it to consider only occurrences
+that are bounded by word-delimiter address@hidden
+
address@hidden query-replace-regexp
+  Aside from querying, @code{query-replace} works just like
address@hidden, and @code{query-replace-regexp} works
+just like @address@hidden
+
+  The things you can type when you are shown an occurrence of @var{string}
+or a match for @var{regexp} are:
+
address@hidden SPC (query-replace)
address@hidden DEL (query-replace)
address@hidden , (query-replace)
address@hidden ESC (query-replace)
address@hidden . (query-replace)
address@hidden ! (query-replace)
address@hidden ^ (query-replace)
address@hidden C-r (query-replace)
address@hidden C-w (query-replace)
address@hidden C-l (query-replace)
+
address@hidden WideCommands
address@hidden @kbd
address@hidden @key{SPC}
+to replace the occurrence with @var{newstring}.  This preserves case, just
+like @code{replace-string}, provided @code{case-replace} is address@hidden,
+as it normally address@hidden
+
address@hidden @key{DEL}
+to skip to the next occurrence without replacing this one.
+
address@hidden , @r{(Comma)}
+to replace this occurrence and display the result.  You are then
+prompted for another input character.  However, since the replacement has
+already been made, @key{DEL} and @key{SPC} are equivalent.  At this
+point, you can type @kbd{C-r} (see below) to alter the replaced text.  To
+undo the replacement, you can type @kbd{C-x u}. 
+This exits the @code{query-replace}.  If you want to do further
+replacement you must use @kbd{C-x @key{ESC} @key{ESC}} to restart 
(@pxref{Repetition}).
+
address@hidden @key{ESC}
+to exit without doing any more replacements.
+
address@hidden .@: @r{(Period)}
+to replace this occurrence and then exit.
+
address@hidden !
+to replace all remaining occurrences without asking again.
+
address@hidden ^
+to go back to the location of the previous occurrence (or what used to
+be an occurrence), in case you changed it by mistake.  This works by
+popping the mark ring.  Only one @kbd{^} in a row is allowed, because
+only one previous replacement location is kept during @code{query-replace}.
+
address@hidden C-r
+to enter a recursive editing level, in case the occurrence needs to be
+edited rather than just replaced with @var{newstring}.  When you are
+done, exit the recursive editing level with @kbd{C-M-c} and the next
+occurrence will be displayed.  @xref{Recursive Edit}.
+
address@hidden C-w
+to delete the occurrence, and then enter a recursive editing level as
+in @kbd{C-r}.  Use the recursive edit to insert text to replace the
+deleted occurrence of @var{string}.  When done, exit the recursive
+editing level with @kbd{C-M-c} and the next occurrence will be
+displayed.
+
address@hidden C-l
+to redisplay the screen and then give another answer.
+
address@hidden C-h
+to display a message summarizing these options, then give another
+answer.
address@hidden table
+
+  If you type any other character, Emacs exits the @code{query-replace}, and
+executes the character as a command.  To restart the @code{query-replace},
+use @kbd{C-x @key{ESC} @key{ESC}}, which repeats the @code{query-replace} 
because it
+used the minibuffer to read its arguments.  @xref{Repetition, C-x ESC ESC}.
+
address@hidden Other Repeating Search,, Replace, Search
address@hidden Other Search-and-Loop Commands
+
+  Here are some other commands that find matches for a regular expression.
+They all operate from point to the end of the buffer.
+
address@hidden list-matching-lines
address@hidden occur
address@hidden count-matches
address@hidden delete-non-matching-lines
address@hidden delete-matching-lines
address@hidden grosscommands
address@hidden @kbd
address@hidden M-x occur
+Print each line that follows point and contains a match for the
+specified regexp.  A numeric argument specifies the number of context
+lines to print before and after each matching line; the default is
+none.
+
address@hidden C-c C-c (Occur mode)
+The buffer @samp{*Occur*} containing the output serves as a menu for
+finding occurrences in their original context.  Find an occurrence
+as listed in @samp{*Occur*}, position point there, and type @kbd{C-c
+C-c}; this switches to the buffer that was searched and moves point to
+the original of the same occurrence.
+
address@hidden M-x list-matching-lines
+Synonym for @kbd{M-x occur}.
+
address@hidden M-x count-matches
+Print the number of matches following point for the specified regexp.
+
address@hidden M-x delete-non-matching-lines
+Delete each line that follows point and does not contain a match for
+the specified regexp.
+
address@hidden M-x delete-matching-lines
+Delete each line that follows point and contains a match for the
+specified regexp.
address@hidden table
+
address@hidden Fixit, Files, Search, Top
address@hidden Commands for Fixing Typos
address@hidden typos
address@hidden mistakes, correcting
+
+  This chapter describes commands that are especially useful when you
+catch a mistake in your text just after you have made it, or when you 
+change your mind while composing text on line.
+
address@hidden
+* Kill Errors:: Commands to kill a batch of recently entered text.
+* Transpose::   Exchanging two characters, words, lines, lists...
+* Fixing Case:: Correcting case of last word entered.
+* Spelling::    Apply spelling checker to a word, or a whole file.
address@hidden menu
+
address@hidden Kill Errors, Transpose, Fixit, Fixit
address@hidden Killing Your Mistakes
+
address@hidden @kbd
address@hidden @key{DEL}
+Delete last character (@code{delete-backward-char}).
address@hidden address@hidden
+Kill last word (@code{backward-kill-word}).
address@hidden C-x @key{DEL}
+Kill to beginning of sentence (@code{backward-kill-sentence}).
address@hidden table
+
address@hidden DEL
address@hidden delete-backward-char
+  The @key{DEL} character (@code{delete-backward-char}) is the most
+important correction command.  When used among graphic (self-inserting)
+characters, it can be thought of as canceling the last character typed.
+
address@hidden M-DEL
address@hidden C-x DEL
address@hidden backward-kill-word
address@hidden backward-kill-sentence
+  When your mistake is longer than a couple of characters, it might be more
+convenient to use @address@hidden or @kbd{C-x @key{DEL}}.
address@hidden@key{DEL}} kills back to the start of the last word, and @kbd{C-x
address@hidden kills back to the start of the last sentence.  @kbd{C-x
address@hidden is particularly useful when you are thinking of what to write as
+you type it, in case you change your mind about phrasing.
address@hidden@key{DEL}} and @kbd{C-x @key{DEL}} save the killed text for
address@hidden and @kbd{M-y} to retrieve.  @address@hidden
+
+  @address@hidden is often useful even when you have typed only a few
+characters wrong, if you know you are confused in your typing and aren't
+sure exactly what you typed.  At such a time, you cannot correct with
address@hidden except by looking at the screen to see what you did.  It requires
+less thought to kill the whole word and start over.
+
address@hidden Transpose, Fixing Case, Kill Errors, Fixit
address@hidden Transposing Text
+
address@hidden @kbd
address@hidden C-t
+Transpose two characters (@code{transpose-chars}).
address@hidden M-t
+Transpose two words (@code{transpose-words}).
address@hidden C-M-t
+Transpose two balanced expressions (@code{transpose-sexps}).
address@hidden C-x C-t
+Transpose two lines (@code{transpose-lines}).
address@hidden table
+
address@hidden transposition
address@hidden C-t
address@hidden transpose-chars
+  The common error of transposing two adjacent characters can be fixed
+with the @kbd{C-t} command (@code{transpose-chars}).  Normally,
address@hidden transposes the two characters on either side of point.  When
+given at the end of a line, @kbd{C-t} transposes the last two characters
+on the line, rather than transposing the last character of the line with
+the newline, which would be useless.  If you catch a
+transposition error right away, you can fix it with just @kbd{C-t}.
+If you catch the error later,  move the cursor back to between
+the two transposed characters.  If you transposed a space with the last
+character of the word before it, the word motion commands are a good way
+of getting there.  Otherwise, a reverse search (@kbd{C-r}) is often the
+best way.  @xref{Search}.
+
address@hidden C-x C-t
address@hidden transpose-lines
address@hidden M-t
address@hidden transpose-words
address@hidden C-M-t
address@hidden transpose-sexps
+  @kbd{Meta-t} (@code{transpose-words}) transposes the word before point
+with the word after point.  It moves point forward over a word, dragging
+the word preceding or containing point forward as well.  The punctuation
+characters between the words do not move.  For example, @address@hidden, BAR}}
+transposes into @address@hidden, FOO}} rather than @address@hidden FOO,}}.
+
+  @kbd{C-M-t} (@code{transpose-sexps}) is a similar command for transposing
+two expressions (@pxref{Lists}), and @kbd{C-x C-t} (@code{transpose-lines})
+exchanges lines.  It works like @kbd{M-t} but in determines the
+division of the text into syntactic units differently.
+
+  A numeric argument to a transpose command serves as a repeat count: it
+tells the transpose command to move the character (word, sexp, line) before
+or containing point across several other characters (words, sexps, lines).
+For example, @kbd{C-u 3 C-t} moves the character before point forward
+across three other characters.  This is equivalent to repeating @kbd{C-t}
+three times.  @kbd{C-u - 4 M-t} moves the word before point backward across
+four words.  @kbd{C-u - C-M-t} would cancel the effect of plain
address@hidden@refill
+
+  A numeric argument of zero transposes the character (word, sexp, line)
+ending after point with the one ending after the mark (otherwise a
+command with a repeat count of zero would do nothing).
+
address@hidden Fixing Case, Spelling, Transpose, Fixit
address@hidden Case Conversion
+
address@hidden @kbd
address@hidden M-- M-l
+Convert last word to lower case.  Note that @kbd{Meta--} is ``Meta-minus.''
address@hidden M-- M-u
+Convert last word to all upper case.
address@hidden M-- M-c
+Convert last word to lower case with capital initial.
address@hidden table
+
address@hidden downcase-word
address@hidden upcase-word
address@hidden capitalize-word
address@hidden address@hidden M-l
address@hidden address@hidden M-u
address@hidden address@hidden M-c
address@hidden case conversion
address@hidden words
+  A  common error is to type words in the wrong case.  Because of this,
+the word case-conversion commands @kbd{M-l}, @kbd{M-u}, and @kbd{M-c} do
+not move the cursor when used with a negative argument.
+As soon as you see you have mistyped the last word, you can simply
+case-convert it and continue typing.  @address@hidden
+
address@hidden Spelling,, Fixing Case, Fixit
address@hidden Checking and Correcting Spelling
address@hidden spelling
+
address@hidden doublewidecommands
address@hidden @kbd
address@hidden M-$
+Check and correct spelling of word (@code{spell-word}).
address@hidden M-x spell-buffer
+Check and correct spelling of each word in the buffer.
address@hidden M-x spell-region
+Check and correct spelling of each word in the region.
address@hidden M-x spell-string
+Check spelling of specified word.
address@hidden table
+
address@hidden M-$
address@hidden spell-word
+  To check the spelling of the word before point, and optionally correct
+it, use the command @kbd{M-$} (@code{spell-word}).  This command runs an
+inferior process containing the @code{spell} program to see whether the
+word is correct English.  If it is not, it asks you to edit the word (in
+the minibuffer) into a corrected spelling, and then performs a
address@hidden to substitute the corrected spelling for the old
+one throughout the buffer.
+
+  If you exit the minibuffer without altering the original spelling, it
+means you do not want to do anything to that word.  In that case, the
address@hidden is not done.
+
address@hidden spell-buffer
+  @kbd{M-x spell-buffer} checks each word in the buffer the same way that
address@hidden does, doing a @code{query-replace} for
+every incorrect word if address@hidden
+
address@hidden spell-region
+  @kbd{M-x spell-region} is similar to @code{spell-buffer} but operates
+only on the region, not the entire buffer.
+
address@hidden spell-string
+  @kbd{M-x spell-string} reads a string as an argument and checks
+whether that is a correctly spelled English word.  It prints a message
+giving the answer in the echo area.
+
address@hidden Files, Buffers, Fixit, Top
address@hidden File Handling
address@hidden files
+
+  The basic unit of stored data in Unix is the @dfn{file}.  To edit a file,
+you must tell Emacs to examine the file and prepare a buffer containing a
+copy of the file's text.  This is called @dfn{visiting} the file.  Editing
+commands apply directly to text in the buffer; that is, to the copy inside
+Emacs.  Your changes appear in the file itself only when you @dfn{save} the
+buffer back into the file.
+
address@hidden files, remote
address@hidden remote files
+  Emacs is also able to handle ``remote files'' which are stored on
+other hosts.  Not only is Emacs somewhat aware of the special issues
+involved with network file systems, but it can also use FTP and ssh (or
+rsh) to make local copies of the files, and refresh them on the remote
+host automatically when you save the buffer.  The FTP interface is
+provided by the standard @samp{efs} package @ref{Top, EFS, , efs}.  The
+ssh/rsh interface is provided by the optional @samp{tramp} package
address@hidden, TRAMP, , tramp}.  These packages attempt to implement all of
+the operations described below, making remote file use transparent
+(except for unavoidable network delays).
+
+  In addition to visiting and saving files, Emacs can delete, copy, rename,
+and append to files, and operate on file directories.
+
address@hidden
+* File Names::       How to type and edit file name arguments.
+* Visiting::         Visiting a file prepares Emacs to edit the file.
+* Saving::           Saving makes your changes permanent.
+* Reverting::        Reverting cancels all the changes not saved.
+* Auto Save::        Auto Save periodically protects against loss of data.
+* Version Control::  Version control systems (RCS and SCCS).
+* ListDir::          Listing the contents of a file directory.
+* Comparing Files::  Finding where two files differ.
+* Dired::            ``Editing'' a directory to delete, rename, etc.
+                     the files in it.
+* Misc File Ops::    Other things you can do on files.
address@hidden menu
+
address@hidden File Names, Visiting, Files, Files
address@hidden File Names
address@hidden file names
+
+  Most Emacs commands that operate on a file require you to specify the
+file name.  (Saving and reverting are exceptions; the buffer knows which
+file name to use for them.)  File names are specified in the minibuffer
+(@pxref{Minibuffer}).  @dfn{Completion} is available, to make it easier to
+specify long file names.  @xref{Completion}.
+
+  There is always a @dfn{default file name} which is used if you
+enter an empty argument by typing just @key{RET}.  Normally the default
+file name is the name of the file visited in the current buffer; this
+makes it easy to operate on that file with any of the Emacs file
+commands.
+
+The syntax for accessing remote files unfortunately varies depending on
+the method used.  The syntax for using FTP is
address@hidden/@var{user}@@@var{remote-host}:@var{path-on-remote-host}}.  The
+syntax for using ssh is
address@hidden/address@hidden@@@address@hidden
+
+  In both cases the @address@hidden@@} portion is optional (it defaults
+to your local user name).  @var{path-on-remote-host} may use the
address@hidden notation to indicate @var{user}'s home directory on the remote
+host.  The default file name will reflect the remote host information.
+
address@hidden default-directory
+  Each buffer has a default directory, normally the same as the
+directory of the file visited in that buffer.  When Emacs reads a file
+name, the default directory is used if you do not specify a directory.
+If you specify a directory in a relative fashion, with a name that does
+not start with a slash, it is interpreted with respect to the default
+directory.  The default directory of the current buffer is kept in the
+variable @code{default-directory}, which has a separate value in every
+buffer.  The value of the variable should end with a slash.
+
+  For example, if the default file name is @file{/u/rms/gnu/gnu.tasks} then
+the default directory is @file{/u/rms/gnu/}.  If you type just @samp{foo},
+which does not specify a directory, it is short for @file{/u/rms/gnu/foo}.
address@hidden/.login} would stand for @file{/u/rms/.login}.  @samp{new/foo}
+would stand for the filename @file{/u/rms/gnu/new/foo}.
+
+  When visiting a remote file via EFS or TRAMP, the remote directory
+becomes the default directory (@pxref{Visiting}) for that buffer, just
+as a local directory would.
+
address@hidden default-directory-alist
+The variable @code{default-directory-alist} takes an alist of major
+modes and their opinions on @code{default-directory} as a Lisp
+expression to evaluate.  A resulting value of @code{nil} is ignored in
+favor of @code{default-directory}.
+
address@hidden make-directory
address@hidden remove-directory
address@hidden creating directories
address@hidden removing directories
+You can create a new directory with the function @code{make-directory},
+which takes as an argument a file name string. The current directory is
+displayed in the minibuffer when the function is called; you can delete
+the old directory name and supply a new directory name. For example, if
+the current directory is @file{/u/rms/gnu}, you can delete @file{gnu}
+and type @file{oryx} and @key{RET} to create @file{/u/rms/oryx}.
+Removing a directory is similar to creating one.  To remove a directory,
+use @code{remove-directory}; it takes one argument, a file name string.
+
+  The command @kbd{M-x pwd} prints the current buffer's default directory,
+and the command @kbd{M-x cd} sets it (to a value read using the
+minibuffer).  A buffer's default directory changes only when the @code{cd}
+command is used.  A file-visiting buffer's default directory is initialized
+to the directory of the file that is visited there.  If a buffer is created
+with @kbd{C-x b}, its default directory is copied from that of the
+buffer that was current at the time.
+
address@hidden insert-default-directory
+  The default directory name actually appears in the minibuffer when the
+minibuffer becomes active to read a file name.  This serves two
+purposes: it shows you what the default is, so that you can type a
+relative file name and know with certainty what it will mean, and it
+allows you to edit the default to specify a different directory.  To
+inhibit the insertion of the default directory, set the variable
address@hidden to @code{nil}.
+
+  Note that it is legitimate to type an absolute file name after you
+enter the minibuffer, ignoring the presence of the default directory
+name.  The final minibuffer contents may look invalid, but that is not
+so.  @xref{Minibuffer File}.
+
+  @samp{$} in a file name is used to substitute environment variables.  For
+example, if you have used the shell command @samp{setenv FOO rms/hacks} to
+set up an environment variable named @samp{FOO}, then you can use
address@hidden/u/$FOO/test.c} or @file{/u/address@hidden@}/test.c} as an 
abbreviation for
address@hidden/u/rms/hacks/test.c}.  The environment variable name consists of 
all
+the alphanumeric characters after the @samp{$}; alternatively, it may be
+enclosed in braces after the @samp{$}.  Note that the @samp{setenv} command
+affects Emacs only if done before Emacs is started.
+
+  To access a file with @samp{$} in its name, type @samp{$$}.  This pair
+is converted to a single @samp{$} at the same time variable substitution
+is performed for single @samp{$}.  The Lisp function that performs the
+substitution is called @code{substitute-in-file-name}.  The substitution
+is performed only on filenames read as such using the minibuffer.
+
address@hidden Visiting, Saving, File Names, Files
address@hidden Visiting Files
address@hidden visiting files
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x C-f
+Visit a file (@code{find-file}).
address@hidden C-x C-v
+Visit a different file instead of the one visited last
+(@code{find-alternate-file}).
address@hidden C-x 4 C-f
+Visit a file, in another window (@code{find-file-other-window}).  Don't
+change this window.
address@hidden C-x 5 C-f
+Visit a file, in another frame (@code{find-file-other-frame}).  Don't
+change this window or frame.
address@hidden table
+
address@hidden files
address@hidden visiting
address@hidden saving
+  @dfn{Visiting} a file means copying its contents into an Emacs buffer
+so you can edit it.  Emacs creates a new buffer for each file you
+visit.  We say that the buffer is visiting the file that it was created
+to hold.  Emacs constructs the buffer name from the file name by
+throwing away the directory and keeping just the file name.  For example,
+a file named @file{/usr/rms/emacs.tex} is displayed in a buffer named
address@hidden  If a buffer with that name exists, a unique
+name is constructed by appending @samp{<2>}, @samp{<3>},and so on, using
+the lowest number that makes a name that is not already in use.
+
+  Each window's mode line shows the name of the buffer that is being displayed
+in that window, so you can always tell what buffer you are editing.
+
+  The changes you make with Emacs are made in the Emacs buffer.  They do
+not take effect in the file that you visit, or any other permanent
+place, until you @dfn{save} the buffer.  Saving the buffer means that
+Emacs writes the current contents of the buffer into its visited file.
address@hidden
+
address@hidden modified (buffer)
+  If a buffer contains changes that have not been saved, the buffer is said
+to be @dfn{modified}.  This is important because it implies that some
+changes will be lost if the buffer is not saved.  The mode line displays
+two stars near the left margin if the buffer is modified.
+
address@hidden C-x 5 C-f
address@hidden find-file
address@hidden find-file-other-frame
+  To visit a file, use the command @kbd{C-x C-f} (@code{find-file}).  Follow
+the command with the name of the file you wish to visit, terminated by a
address@hidden  If you are using XEmacs under X, you can also use the
address@hidden command from the @b{File} menu bar item. 
+
+  The file name is read using the minibuffer (@pxref{Minibuffer}), with
+defaulting and completion in the standard manner (@pxref{File Names}).
+While in the minibuffer, you can abort @kbd{C-x C-f} by typing @kbd{C-g}.
+
+  @kbd{C-x C-f} has completed successfully when text appears on the
+screen and a new buffer name appears in the mode line.  If the specified
+file does not exist and could not be created or cannot be read, an error
+results.  The error message is printed in the echo area, and includes
+the name of the file that Emacs was trying to visit.
+
+  If you visit a file that is already in Emacs, @kbd{C-x C-f} does not make
+another copy.  It selects the existing buffer containing that file.
+However, before doing so, it checks that the file itself has not changed
+since you visited or saved it last.  If the file has changed, Emacs
+prints a warning message.  @xref{Interlocking,,Simultaneous Editing}.
+
address@hidden find-this-file
+You can switch to a specific file called out in the current buffer by
+calling the function @code{find-this-file}. By providing a prefix
+argument, this function calls @code{filename-at-point} and switches to a
+buffer visiting the file @var{filename}. It creates one if none already
+exists. You can use this function to edit the file mentioned in the
+buffer you are working in or to test if the file exists. You can do that
+by using the minibuffer completion after snatching the all or part of
+the filename.
+
address@hidden find-file-use-truenames
address@hidden buffer-file-name
+If the variable @code{find-file-use-truenames}'s value is
address@hidden, a buffer's visited filename will always be traced back
+to the real file. The filename will never be a symbolic link, and there
+will never be a symbolic link anywhere in its directory path. In other
+words, the @code{buffer-file-name} and @code{buffer-file-truename} will
+be equal.
+
address@hidden find-file-compare-truenames
address@hidden buffer-file-truename
+If the variable @code{find-file-compare-truenames} value is
address@hidden, the @code{find-file} command will check the
address@hidden of all visited files when deciding whether a
+given file is already in a buffer, instead of just
address@hidden  If you attempt to visit another file which is
+a symbolic link to a file that is already in a buffer, the existing
+buffer will be found instead of a newly created one.  This works if any
+component of the pathname (including a non-terminal component) is a
+symbolic link as well, but doesn't work with hard links (nothing does).
+
address@hidden creating files
+   If you want to create a file, just visit it.  Emacs prints
address@hidden(New File)} in the echo area, but in other respects behaves as if 
you
+had visited an existing empty file.  If you make any changes and save them,
+the file is created.
+
address@hidden C-x C-v
address@hidden find-alternate-file
+  If you visit a nonexistent file unintentionally (because you typed the
+wrong file name), use the @kbd{C-x C-v} (@code{find-alternate-file})
+command to visit the file you wanted.  @kbd{C-x C-v} is similar to @kbd{C-x
+C-f}, but it kills the current buffer (after first offering to save it if
+it is modified).  @kbd{C-x C-v} is allowed even if the current buffer
+is not visiting a file.
+
address@hidden find-file-run-dired
+  If the file you specify is actually a directory, Dired is called on
+that directory (@pxref{Dired}).  To inhibit this, set the variable
address@hidden to @code{nil}; then it is an error to try to
+visit a directory.
+
address@hidden C-x 4 f
address@hidden find-file-other-window
+  @kbd{C-x 4 f} (@code{find-file-other-window}) is like @kbd{C-x C-f}
+except that the buffer containing the specified file is selected in another
+window.  The window that was selected before @kbd{C-x 4 f} continues to
+show the same buffer it was already showing.  If you use this command when
+only one window is being displayed, that window is split in two, with one
+window showing the same buffer as before, and the other one showing the
+newly requested file.  @xref{Windows}.
+
address@hidden C-x 5 C-f
address@hidden find-file-other-frame
address@hidden 5 C-f} (@code{find-file-other-frame}) is like @kbd{C-x C-f}
+except that it creates a new frame in which the file is displayed.
+
address@hidden find-this-file-other-window
+ Use the function @code{find-this-file-other-window} to edit a file
+mentioned in the buffer you are editing or to test if that file exists.
+To do this, use the minibuffer completion after snatching the part or
+all of the filename. By providing a prefix argument, the function calls
address@hidden and switches you to a buffer visiting the file
address@hidden in another window. The function creates a buffer if none
+already exists. This function is similar to @code{find-file-other-window}.
+
address@hidden find-file-hooks
address@hidden find-file-not-found-hooks
+  There are two hook variables that allow extensions to modify the
+operation of visiting files.  Visiting a file that does not exist runs the
+functions in the list @code{find-file-not-found-hooks}; the value of this
+variable is expected to be a list of functions which are
+called one by one until one of them returns address@hidden  Any visiting
+of a file, whether extant or not, expects @code{find-file-hooks} to
+contain list of functions and calls them all, one by one.  In both cases
+the functions receive no arguments.  Visiting a nonexistent file
+runs the @code{find-file-not-found-hooks} first.
+
address@hidden Saving, Reverting, Visiting, Files
address@hidden Saving Files
+
+  @dfn{Saving} a buffer in Emacs means writing its contents back into the file
+that was visited in the buffer.
+
address@hidden @kbd
address@hidden C-x C-s
+Save the current buffer in its visited file (@code{save-buffer}).
address@hidden C-x s
+Save any or all buffers in their visited files (@code{save-some-buffers}).
address@hidden M-~
+Forget that the current buffer has been changed (@code{not-modified}).
address@hidden C-x C-w
+Save the current buffer in a specified file, and record that file as
+the one visited in the buffer (@code{write-file}).
address@hidden M-x set-visited-file-name
+Change file the name under which the current buffer will be saved.
address@hidden table
+
address@hidden C-x C-s
address@hidden save-buffer
+  To save a file and make your changes permanent, type
address@hidden C-s} (@code{save-buffer}).  After saving is finished, @kbd{C-x 
C-s}
+prints a message such as:
+
address@hidden
+Wrote /u/rms/gnu/gnu.tasks
address@hidden example
+
address@hidden
+If the selected buffer is not modified (no changes have been made in it
+since the buffer was created or last saved), Emacs does not save it
+because it would have no effect.  Instead, @kbd{C-x C-s} prints a message
+in the echo area saying:
+
address@hidden
+(No changes need to be saved)
address@hidden example
+
address@hidden C-x s
address@hidden save-some-buffers
+  The command @kbd{C-x s} (@code{save-some-buffers}) can save any or all
+modified buffers.  First it asks, for each modified buffer, whether to
+save it.  The questions should be answered with @kbd{y} or @kbd{n}.
address@hidden C-c}, the key that kills Emacs, invokes
address@hidden and therefore asks the same questions.
+
address@hidden M-~
address@hidden not-modified
+  If you have changed a buffer and do not want the changes to be saved,
+you should take some action to prevent it.  Otherwise, you are liable to
+save it by mistake each time you use @code{save-some-buffers} or a
+related command.  One thing you can do is type @kbd{M-~}
+(@code{not-modified}), which removes the indication that the buffer
+is modified.  If you do this, none of the save commands will believe
+that the buffer needs to be saved.  (@samp{~} is often used as a
+mathematical symbol for `not'; thus @kbd{Meta-~} is `not', metafied.)
+You could also use @code{set-visited-file-name} (see below) to mark the
+buffer as visiting a different file name, not in use for
+anything important. 
+
+You can also undo all the changes made since the file was visited or
+saved, by reading the text from the file again.  This is called
address@hidden  @xref{Reverting}.  Alternatively, you can undo all the
+changes by repeating the undo command @kbd{C-x u}; but this only works
+if you have not made more changes than the undo mechanism can remember.
+
address@hidden set-visited-file-name
+  @kbd{M-x set-visited-file-name} alters the name of the file that the
+current buffer is visiting.  It prompts you for the new file name in the
+minibuffer.  You can also use @code{set-visited-file-name} on a buffer
+that is not visiting a file.  The buffer's name is changed to correspond
+to the file it is now visiting unless the new name is already used by a
+different buffer; in that case, the buffer name is not changed.
address@hidden does not save the buffer in the newly
+visited file; it just alters the records inside Emacs so that it will
+save the buffer in that file.  It also marks the buffer as ``modified''
+so that @kbd{C-x C-s} @i{will} save.
+
address@hidden C-x C-w
address@hidden write-file
+  If you wish to mark a buffer as visiting a different file and save it
+right away, use @kbd{C-x C-w} (@code{write-file}).  It is precisely
+equivalent to @code{set-visited-file-name} followed by @kbd{C-x C-s}.
address@hidden C-s} used on a buffer that is not visiting  a file has the
+same effect as @kbd{C-x C-w}; that is, it reads a file name, marks the
+buffer as visiting that file, and saves it there.  The default file name in
+a buffer that is not visiting a file is made by combining the buffer name
+with the buffer's default directory.
+
+  If Emacs is about to save a file and sees that the date of the latest
+version on disk does not match what Emacs last read or wrote, Emacs
+notifies you of this fact, because it probably indicates a problem caused
+by simultaneous editing and requires your immediate attention.
address@hidden,, Simultaneous Editing}.
+
address@hidden require-final-newline
+  If the variable @code{require-final-newline} is address@hidden, Emacs
+puts a newline at the end of any file that doesn't already end in one,
+every time a file is saved or written.
+
address@hidden write-file-hooks
address@hidden after-save-hook
+  Use the hook variable @code{write-file-hooks} to implement other ways
+to write files, and specify things to be done before files are written.  The
+value of this variable should be a list of Lisp functions.  When a file
+is to be written, the functions in the list are called, one by one, with
+no arguments.  If one of them returns a address@hidden value, Emacs
+takes this to mean that the file has been written in some suitable
+fashion; the rest of the functions are not called, and normal writing is
+not done. Use the hook variable @code{after-save-hook} to list
+all the functions to be called after writing out a buffer to a file.
+
address@hidden
+* Backup::       How Emacs saves the old version of your file.
+* Interlocking:: How Emacs protects against simultaneous editing
+                  of one file by two users.
address@hidden menu
+
address@hidden Backup, Interlocking, Saving, Saving
address@hidden Backup Files
address@hidden backup file
address@hidden make-backup-files
+
+  Because Unix does not provide version numbers in file names, rewriting a
+file in Unix automatically destroys all record of what the file used to
+contain.  Thus, saving a file from Emacs throws away the old contents of
+the file---or it would, except that Emacs carefully copies the old contents
+to another file, called the @dfn{backup} file, before actually saving.
+(Make sure that the variable @code{make-backup-files} is address@hidden
+Backup files are not written if this variable is @code{nil}).
+
+  At your option, Emacs can keep either a single backup file or a series of
+numbered backup files for each file you edit.
+
+  Emacs makes a backup for a file only the first time a file is saved
+from one buffer.  No matter how many times you save a file, its backup file
+continues to contain the contents from before the file was visited.
+Normally this means that the backup file contains the contents from before
+the current editing session; however, if you kill the buffer and then visit
+the file again, a new backup file is made by the next save.
+
address@hidden
+* Names: Backup Names.         How backup files are named;
+                               Choosing single or numbered backup files.
+* Deletion: Backup Deletion.   Emacs deletes excess numbered backups.
+* Copying: Backup Copying.     Backups can be made by copying or renaming.
address@hidden menu
+
address@hidden Backup Names, Backup Deletion, Backup, Backup
address@hidden Single or Numbered Backups
+
+  If you choose to have a single backup file (the default),
+the backup file's name is constructed by appending @samp{~} to the
+file name being edited; thus, the backup file for @file{eval.c} is
address@hidden
+
+  If you choose to have a series of numbered backup files, backup file
+names are made by appending @samp{.~}, the number, and another @samp{~} to
+the original file name.  Thus, the backup files of @file{eval.c} would be
+called @file{eval.c.~1~}, @file{eval.c.~2~}, and so on, through names
+like @file{eval.c.~259~} and beyond.
+
+  If protection stops you from writing backup files under the usual names,
+the backup file is written as @file{%backup%~} in your home directory.
+Only one such file can exist, so only the most recently made backup is
+available.
+
address@hidden version-control
+  The choice of single backup or numbered backups is controlled by the
+variable @code{version-control}.  Its possible values are:
+
address@hidden @code
address@hidden t
+Make numbered backups.
address@hidden nil
+Make numbered backups for files that have numbered backups already.
+Otherwise, make single backups.
address@hidden never
+Never make numbered backups; always make single backups.
address@hidden table
+
address@hidden
address@hidden may be set locally in an individual buffer to
+control the making of backups for that buffer's file.  For example,
+Rmail mode locally sets @code{version-control} to @code{never} to make sure
+that there is only one backup for an Rmail file.  @xref{Locals}.
+
address@hidden Backup Deletion, Backup Copying, Backup Names, Backup
address@hidden Automatic Deletion of Backups
+
address@hidden kept-old-versions
address@hidden kept-new-versions
+  To prevent unlimited consumption of disk space, Emacs can delete numbered
+backup versions automatically.  Generally Emacs keeps the first few backups
+and the latest few backups, deleting any in between.  This happens every
+time a new backup is made.  The two variables that control the deletion are
address@hidden and @code{kept-new-versions}.  Their values are, respectively
+the number of oldest (lowest-numbered) backups to keep and the number of
+newest (highest-numbered) ones to keep, each time a new backup is made.
+The values are used just after a new backup version is made;
+that newly made backup is included in the count in @code{kept-new-versions}.
+By default, both variables are 2.
+
address@hidden delete-old-versions
+  If @code{delete-old-versions} is address@hidden,  excess
+middle versions are deleted without notification.  If it is @code{nil}, the
+default, you are asked whether the excess middle versions should
+really be deleted.
+
+  You can also use Dired's @kbd{.} (Period) command to delete old versions.
address@hidden
+
address@hidden Backup Copying,  , Backup Deletion, Backup
address@hidden Copying vs.@: Renaming
+
+  You can make backup files by copying the old file or by renaming it.
+This makes a difference when the old file has multiple names.  If you
+rename the old file into the backup file, the alternate names
+become names for the backup file.  If you copy the old file instead,
+the alternate names remain names for the file that you are editing,
+and the contents accessed by those names will be the new contents.
+
+  How you make a backup file may also affect the file's owner
+and group.  If you use copying, they do not change.  If renaming is used,
+you become the file's owner, and the file's group becomes the default
+(different operating systems have different defaults for the group).
+
+  Having the owner change is usually a good idea, because then the owner
+is always the person who last edited the file.  Occasionally there is a 
+file whose owner should not change.  Since most files should change
+owners, it is a good idea to use local variable lists to set 
address@hidden for the special cases where the 
+owner should not change (@pxref{File Variables}).
+
address@hidden backup-by-copying
address@hidden backup-by-copying-when-linked
address@hidden backup-by-copying-when-mismatch
+  Three variables control the choice of renaming or copying.
+Normally, renaming is done.  If the variable @code{backup-by-copying} is
address@hidden, copying is used.  Otherwise, if the variable
address@hidden is address@hidden, copying is
+done for files that have multiple names, but renaming may still be done when
+the file being edited has only one name.  If the variable
address@hidden is address@hidden, copying is
+done if renaming would cause the file's owner or group to change.  @refill
+
address@hidden Interlocking,  , Backup, Saving
address@hidden Protection Against Simultaneous Editing
+
address@hidden file dates
address@hidden simultaneous editing
+  Simultaneous editing occurs when two users visit the same file, both
+make changes, and both save their changes.  If no one was informed that
+this was happening, and you saved first, you would later find that your
+changes were lost.  On some systems, Emacs notices immediately when the
+second user starts to change a file already being edited, and issues a
+warning.  When this is not possible, or if the second user has started
+to change the file despite the warning, Emacs checks when the file is
+saved, and issues a second warning when a user is about to overwrite a
+file containing another user's changes.  If you are the user editing the
+file, you can take corrective action at this point and prevent actual
+loss of work.
+
address@hidden ask-user-about-lock
+  When you make the first modification in an Emacs buffer that is visiting
+a file, Emacs records that you have locked the file.  (It does this by
+writing another file in a directory reserved for this purpose.)  The lock
+is removed when you save the changes.  The idea is that the file is locked
+whenever the buffer is modified.  If you begin to modify the buffer while
+the visited file is locked by someone else, this constitutes a collision,
+and Emacs asks you what to do.  It does this by calling the Lisp function
address@hidden, which you can redefine to customize what it
+does.  The standard definition of this function asks you a
+question and accepts three possible answers:
+
address@hidden @kbd
address@hidden s
+Steal the lock.  Whoever was already changing the file loses the lock,
+and you get the lock.
address@hidden p
+Proceed.  Go ahead and edit the file despite its being locked by someone else.
address@hidden q
+Quit.  This causes an error (@code{file-locked}) and the modification you
+were trying to make in the buffer does not actually take place.
address@hidden table
+
+  Note that locking works on the basis of a file name; if a file has
+multiple names, Emacs does not realize that the two names are the same file
+and cannot prevent two users from editing it simultaneously under different
+names.  However, basing locking on names means that Emacs can interlock the
+editing of new files that do not really exist until they are saved.
+
+  Some systems are not configured to allow Emacs to make locks.  On
+these systems, Emacs cannot detect trouble in advance, but it can still
+detect it in time to prevent you from overwriting someone else's changes.
+
+  Every time Emacs saves a buffer, it first checks the last-modification
+date of the existing file on disk to see that it has not changed since the
+file was last visited or saved.  If the date does not match, it implies
+that changes were made in the file in some other way, and these changes are
+about to be lost if Emacs actually does save.  To prevent this, Emacs
+prints a warning message and asks for confirmation before saving.
+Occasionally you will know why the file was changed and know that it does
+not matter; then you can answer @kbd{yes} and proceed.  Otherwise, you should
+cancel the save with @kbd{C-g} and investigate the situation.
+
+  The first thing you should do when notified that simultaneous editing
+has already taken place is to list the directory with @kbd{C-u C-x C-d}
+(@pxref{ListDir,,Directory Listing}).  This will show the file's current
+author.  You should attempt to contact that person and ask him not to
+continue editing.  Often the next step is to save the contents of your
+Emacs buffer under a different name, and use @code{diff} to compare the
+two address@hidden
+
+  Simultaneous editing checks are also made when you visit a file that
+is already visited with @kbd{C-x C-f} and when you start to modify a
+file.  This is not strictly necessary, but it is useful to find out
+about such a problem as early as possible, when corrective action takes
+less work.
+
address@hidden set-default-file-modes
address@hidden file protection
+Another way to protect your file is to set the read, write, and
+executable permissions for the file. Use the function
address@hidden to set the UNIX @code{umask} value to the
address@hidden argument. The @code{umask} value is the default protection
+mode for new files.
+
address@hidden Reverting, Auto Save, Saving, Files
address@hidden Reverting a Buffer
address@hidden revert-buffer
address@hidden drastic changes
+
+  If you have made extensive changes to a file and then change your mind
+about them, you can get rid of all changes by reading in the previous
+version of the file.  To do this, use @kbd{M-x revert-buffer}, which
+operates on the current buffer.  Since reverting a buffer can result in
+very extensive changes, you must confirm it with @kbd{yes}.
+
+  You may request that @code{revert-buffer} check for an auto-save file
+that is more recent than the visited file by providing a prefix
+argument.  If a recent auto-save file exists, @code{revert-buffer}
+offers to read the auto-save file instead of the visited file
+(@pxref{Auto Save}).  Emacs asks you about the auto-save file before the
+request for confirmation of the @kbd{revert-buffer} operation, and
+demands @kbd{y} or @kbd{n} as an answer.  If you have started to type
address@hidden to confirm the revert operation, the @kbd{y} will answer the
+question about using the auto-save file, but the @kbd{es} will not be
+valid confirmation for the reversion.  This gives you a chance to cancel
+the operation with @kbd{C-g} and try again with the answers you really
+intend.
+
+  @code{revert-buffer} preserves the value of point (in characters from
+the beginning of the file).  If the file was edited only slightly, you
+will be at approximately the same piece of text after reverting as
+before.  If you have made more extensive changes, after reversion point
+may be in a totally different context than your last edits before
+reversion.
+
+A buffer reverted from its visited file is marked ``not modified'' until
+you make a change.  The buffer's modes will also be recalculated, by
address@hidden
+
+  Some kinds of buffers whose contents reflect data bases other than files,
+such as Dired buffers, can also be reverted.  For them, reverting means
+refreshing their contents from the appropriate data.  Buffers created
+randomly with @kbd{C-x b} cannot be reverted; @code{revert-buffer}
+reports an error when asked to do so.
+
address@hidden Auto Save, Version Control, Reverting, Files
address@hidden Auto-Saving: Protection Against Disasters
address@hidden Auto-Save mode
address@hidden crashes
+
+  Emacs saves all the visited files from time to time (based on counting
+your keystrokes) without being asked.  This is called @dfn{auto-saving}.
+It prevents you from losing more than a limited amount of work if the
+system crashes.
+
+  When Emacs determines it is time for auto-saving, each buffer is
+considered and is auto-saved if auto-saving is turned on for it and it has
+changed since the last time it was auto-saved.  If any auto-saving is
+done, the message @samp{Auto-saving...} is displayed in the echo area until
+auto-saving is finished.  Errors occurring during auto-saving are caught
+so that they do not interfere with the execution of commands you have been
+typing.
+
address@hidden
+* Files: Auto Save Files.
+* Control: Auto Save Control.
+* Recover::            Recovering text from auto-save files.
address@hidden menu
+
address@hidden Auto Save Files, Auto Save Control, Auto Save, Auto Save
address@hidden Auto-Save Files
+
+  Auto-saving does not normally write to the files you visited, because
+it can be undesirable to save a program that is in an inconsistent
+state when you have made only half of a planned change.  Instead, auto-saving
+is done in a different file called the @dfn{auto-save file}, and the
+visited file is changed only when you save explicitly, for example, 
+with @kbd{C-x C-s}.
+
+  Normally, the name of the auto-save file is generated by appending
address@hidden to the front and back of the visited file name.  Thus, a buffer
+visiting file @file{foo.c} would be auto-saved in a file @file{#foo.c#}.
+Most buffers that are not visiting files are auto-saved only if you
+request it explicitly; when they are auto-saved, the auto-save file name
+is generated by appending @samp{#%} to the front and @samp{#} to the
+back of buffer name.  For example, the @samp{*mail*} buffer in which you
+compose messages to be sent is auto-saved in a file named
address@hidden  Names of auto-save files are generated this way
+unless you customize the functions @code{make-auto-save-file-name} and
address@hidden to do something different.  The file name
+to be used for auto-saving a buffer is calculated at the time auto-saving is
+turned on in that buffer.
+
address@hidden auto-save-visited-file-name
+  If you want auto-saving to be done in the visited file, set the variable
address@hidden to be address@hidden  In this mode,
+there is really no difference between auto-saving and explicit saving.
+
address@hidden delete-auto-save-files
+  Emacs deletes a buffer's auto-save file when you explicitly save the
+buffer.  To inhibit the deletion, set the variable
address@hidden to @code{nil}.  Changing the visited file
+name with @kbd{C-x C-w} or @code{set-visited-file-name} renames any
+auto-save file to correspond to the new visited name.
+
address@hidden Auto Save Control, Recover, Auto Save Files, Auto Save
address@hidden Controlling Auto-Saving
+
address@hidden auto-save-default
address@hidden auto-save-mode
+  Each time you visit a file, auto-saving is turned on for that file's
+buffer if the variable @code{auto-save-default} is address@hidden (but
+not in batch mode; @pxref{Entering Emacs}).  The default for this
+variable is @code{t}, so Emacs auto-saves buffers that visit files by
+default.  You can use the command @kbd{M-x auto-save-mode} to turn
+auto-saving for a buffer on or off.  Like other minor mode commands,
address@hidden auto-save-mode} turns auto-saving on with a positive argument,
+off with a zero or negative argument; with no argument, it toggles.
+
address@hidden auto-save-interval
address@hidden do-auto-save
+  Emacs performs auto-saving periodically based on counting how many
+characters you have typed since the last time auto-saving happened.  The
+variable @code{auto-save-interval} specifies the number of characters
+between auto-saves.  By default, it is 300.  Emacs also auto-saves
+whenever you call the function @code{do-auto-save}.
+
+  Emacs also does auto-saving whenever it gets a fatal error.  This
+includes killing the Emacs job with a shell command such as @code{kill
+-emacs}, or disconnecting a phone line or network connection.
+
address@hidden auto-save-timeout
+You can set the number of seconds of idle time before an auto-save is
+done. Setting the value of the variable @code{auto-save-timeout} to zero or 
address@hidden will  disable auto-saving due to idleness.
+
+The actual amount of idle time between auto-saves is logarithmically
+related to the size of the current buffer.  This variable is the number
+of seconds after which an auto-save will happen when the current buffer
+is 50k or less; the timeout will be 2 1/4 times this in a 200k buffer, 3
+3/4 times this in a 1000k buffer, and 4 1/2 times this in a 2000k
+buffer.
+
+For this variable to have any effect, you must do @code{(require 'timer)}.
+
address@hidden Recover,  , Auto Save Control, Auto Save
address@hidden Recovering Data from Auto-Saves
+
address@hidden recover-file
+  If you want to use the contents of an auto-save file to recover from a
+loss of data, use the command @kbd{M-x recover-file @key{RET} @var{file}
address@hidden  Emacs visits @var{file} and then (after your confirmation)
+restores the contents from the auto-save file @address@hidden  You
+can then save the file with @kbd{C-x C-s} to put the recovered text into
address@hidden itself.  For example, to recover file @file{foo.c} from its
+auto-save file @file{#foo.c#}, do:@refill
+
address@hidden
+M-x recover-file @key{RET} foo.c @key{RET}
+C-x C-s
address@hidden example
+
+  Before asking for confirmation, @kbd{M-x recover-file} displays a
+directory listing describing the specified file and the auto-save file,
+so you can compare their sizes and dates.  If the auto-save file
+is older, @kbd{M-x recover-file} does not offer to read it.
+
+  Auto-saving is disabled by @kbd{M-x recover-file} because using
+this command implies that the auto-save file contains valuable data
+from a past session.  If you save the data in the visited file and
+then go on to make new changes, turn auto-saving back on
+with @kbd{M-x auto-save-mode}.
+
address@hidden Version Control, ListDir, Auto Save, Files
address@hidden Version Control
address@hidden version control
+
+  @dfn{Version control systems} are packages that can record multiple
+versions of a source file, usually storing the unchanged parts of the
+file just once.  Version control systems also record history information
+such as the creation time of each version, who created it, and a 
+description of what was changed in that version.
+
+  The GNU project recommends the version control system known as RCS,
+which is free software and available from the Free Software Foundation.
+Emacs supports use of either RCS or SCCS (a proprietary, but widely
+used, version control system that is not quite as powerful as RCS)
+through a facility called VC.  The same Emacs commands work with either
+RCS or SCCS, so you hardly have to know which one of them you are
+using.
+
address@hidden
+* Concepts of VC::              Basic version control information;
+                                  checking files in and out.
+* Editing with VC::             Commands for editing a file maintained
+                                  with version control.
+* Variables for Check-in/out::  Variables that affect the commands used
+                                  to check files in or out.
+* Log Entries::                 Logging your changes.
+* Change Logs and VC::          Generating a change log file from log
+                                  entries. 
+* Old Versions::                Examining and comparing old versions.
+* VC Status::                   Commands to view the VC status of files and
+                                  look at log entries.
+* Renaming and VC::             A command to rename both the source and
+                                  master file correctly.
+* Snapshots::                   How to make and use snapshots, a set of
+                                  file versions that can be treated as a unit.
+* Version Headers::             Inserting version control headers into
+                                  working files.
address@hidden menu
+
address@hidden Concepts of VC, Editing with VC, Version Control, Version Control
address@hidden Concepts of Version Control
+
address@hidden RCS
address@hidden SCCS
address@hidden master file
address@hidden registered file
address@hidden work file
+   When a file is under version control, we also say that it is
address@hidden in the version control system.  Each registered file
+has a corresponding @dfn{master file} which represents the file's
+present state plus its change history, so that you can reconstruct from
+it either the current version or any specified earlier version.  Usually
+the master file also records a @dfn{log entry} for each version describing
+what was changed in that version.
+
+  The file that is maintained under version control is sometimes called
+the @dfn{work file} corresponding to its master file.
+
address@hidden checking out files
address@hidden checking in files
address@hidden locking and version control
+   To examine a file, you @dfn{check it out}.  This extracts a version
+of the source file (typically, the most recent) from the master file.
+If you want to edit the file, you must check it out @dfn{locked}.  Only
+one user can do this at a time for any given source file.  (This kind 
+of locking is completely unrelated to the locking that Emacs uses to
+detect simultaneous editing of a file.)
+
+  When you are done with your editing, you must @dfn{check in} the new
+version.  This records the new version in the master file, and unlocks
+the source file so that other people can lock it and thus modify it.
+
+  Checkin and checkout are the basic operations of version control.  You
+can do both of them with a single Emacs command: @address@hidden C-q}}
+(@code{vc-toggle-read-only}).
+
+  A @dfn{snapshot} is a coherent collection of versions of the various
+files that make up a program.  @xref{Snapshots}.
+
address@hidden Editing with VC, Variables for Check-in/out, Concepts of VC, 
Version Control
address@hidden Editing with Version Control
+
+  When you visit a file that is maintained using version control, the
+mode line displays @samp{RCS} or @samp{SCCS} to inform you that version
+control is in use, and also (in case you care) which low-level system
+the file is actually stored in.  Normally, such a source file is
+read-only, and the mode line indicates this with @samp{%%}.  With RCS,
+the mode line also indicates the number of the head version, which is
+normally also the version you are looking at.
+
+  These are the commands for editing a file maintained with
+version control:
+
address@hidden @kbd
address@hidden C-x C-q
+Check the visited file in or out.
+
address@hidden C-x v u
+Revert the buffer and the file to the last checked in version.
+
address@hidden C-x v c
+Remove the last-entered change from the master for the visited file.
+This undoes your last check-in.
+
address@hidden C-x v i
+Register the visited file in version control.
address@hidden table
+
address@hidden
+(@kbd{C-x v} is the prefix key for version control commands; all of these
+commands except for @kbd{C-x C-q} start with @kbd{C-x v}.)
+
address@hidden C-x C-q @r{(version control)}
+  When you want to modify a file maintained with version control, type
address@hidden C-q} (@code{vc-toggle-read-only}).  This @dfn{checks out} the
+file, and tells RCS or SCCS to lock the file.  This means making the
+file writable for you (but not for anyone else).
+
address@hidden log entry
+  When you are finished editing the file, type @kbd{C-x C-q} again.
+When used on a file that is checked out, this command checks the file
+in.  But check-in does not start immediately; first, you must enter the
address@hidden entry}---a description of the changes in the new version.
address@hidden C-q} pops up a buffer for you to enter this in.  When you are
+finished typing in the log entry, type @kbd{C-c C-c} to terminate it; this is
+when actual check-in takes place.
+
+  Once you have checked in your changes, the file is unlocked, so that
+other users can lock it and modify it.
+
address@hidden vc-make-backup-files
+  Emacs does not save backup files for source files that are maintained
+with version control.  If you want to make backup files despite version
+control, set the variable @code{vc-make-backup-files} to a
address@hidden value.
+
address@hidden vc-keep-workfiles
+  Normally the work file exists all the time, whether it is locked or
+not.  If you set @code{vc-keep-workfiles} to @code{nil}, then checking
+in a new version with @kbd{C-x C-q} deletes the work file; but any
+attempt to visit the file with Emacs creates it again.
+
+  It is not impossible to lock a file that someone else has locked.  If
+you try to check out a file that is locked, @kbd{C-x C-q} asks you
+whether you want to ``steal the lock.''  If you say yes, the file
+becomes locked by you, but a message is sent to the person who had
+formerly locked the file, to inform him of what has happened.  The mode
+line indicates that a file is locked by someone else by displaying the
+login name of that person, before the version number.
+
address@hidden C-x v u
address@hidden vc-revert-buffer
+  If you want to discard your current set of changes and revert to the
+last version checked in, use @kbd{C-x v u} (@code{vc-revert-buffer}).
+This cancels your last check-out, leaving the file unlocked.  If you want
+to make a different set of changes, you must first check the file out
+again.  @kbd{C-x v u} requires confirmation, unless it sees that 
+you haven't made any changes since the last checked-in version.
+
+  @kbd{C-x v u} is also the command to use if you lock a file and then
+don't actually change it.
+
address@hidden C-x v c
address@hidden vc-cancel-version
+  You can cancel a change after checking it in, with @kbd{C-x v c}
+(@code{vc-cancel-version}).  This command discards all record of the
+most recent checked in version, so be careful about using it.  It
+requires confirmation with @kbd{yes}.  By default, @kbd{C-x v c} reverts
+your workfile and buffer to the previous version (the one that precedes
+the version that is deleted), but you can prevent the reversion by
+giving the command a prefix argument.  Then the buffer does not change.
+
+  This command with a prefix argument is useful when you have checked in
+a change and then discover a trivial error in it; you can cancel the
+erroneous check-in, fix the error, and repeat the check-in.
+
+  Be careful when invoking @kbd{C-x v c}, as it is easy to throw away a
+lot of work with it.  To help you be careful, this command always
+requires confirmation with @samp{yes}.
+
address@hidden C-x v i
address@hidden vc-register
address@hidden vc-default-back-end
+  You can register the visited file for version control using
address@hidden@kbd{C-x v i}} (@code{vc-register}).  If the variable
address@hidden is address@hidden, it specifies which
+version control system to use; otherwise, this uses RCS if it is
+installed on your system and SCCS if not.  After @kbd{C-x v i},
+the file is unlocked and read-only.  Type @kbd{C-x C-q} if you wish to
+edit it.
+
+  By default, the initial version number is 1.1.  If you want to use a
+different number, give @kbd{C-x v i} a prefix argument; then it reads
+the initial version number using the minibuffer.
+
address@hidden vc-initial-comment
+  If @code{vc-initial-comment} is address@hidden, @kbd{C-x v i} reads
+an initial comment (much like a log entry) to describe the purpose of
+this source file.
+
address@hidden C-u C-x v v
address@hidden vc-next-action
+  To specify the version number for a subsequent checkin, use the
+command @kbd{C-u C-x v v}.  @kbd{C-x v v} (@code{vc-next-action}) is the
+command that @kbd{C-x C-q} uses to do the ``real work'' when the visited
+file uses version control.  When used for checkin, and given a prefix
+argument, it reads the version number with the minibuffer.
+
address@hidden Variables for Check-in/out, Log Entries, Editing with VC, 
Version Control
address@hidden Variables Affecting Check-in and Check-out
address@hidden There is no need to tell users about vc-master-templates.
+
address@hidden vc-suppress-confirm
+  If @code{vc-suppress-confirm} is address@hidden, then @kbd{C-x C-q}
+and @kbd{C-x v i} can save the current buffer without asking, and
address@hidden v u} also operates without asking for confirmation.
+(This variable does not affect @kbd{C-x v c}; that is so drastic
+that it should always ask for confirmation.)
+
address@hidden vc-command-messages
+  VC mode does much of its work by running the shell commands for RCS
+and SCCS.  If @code{vc-command-messages} is address@hidden, VC displays
+messages to indicate which shell commands it runs, and additional
+messages when the commands finish.
+
+  Normally, VC assumes that it can deduce the locked/unlocked state of
+files by looking at the file permissions of the work file; this is
+fast.  However, if the @file{RCS} or @file{SCCS} subdirectory is
+actually a symbolic link, then VC does not trust the file permissions to
+reflect this status.
+
address@hidden vc-mistrust-permissions
+You can specify the criterion for whether to trust the file permissions
+by setting the variable @code{vc-mistrust-permissions}.  Its value may
+be @code{t} (always mistrust the file permissions and check the master
+file), @code{nil} (always trust the file permissions), or a function of
+one argument which makes the decision.  The argument is the directory
+name of the @file{RCS} or @file{SCCS} subdirectory.  A address@hidden
+value from the function says to mistrust the file permissions.
+
+  If you find that the file permissions of work files are changed
+erroneously, set @code{vc-mistrust-permissions} to @code{t}.  Then VC
+always checks the master file to determine the file's status.
+
address@hidden vc-path
+  You can specify additional directories to search for version control
+programs by setting the variable @code{vc-path}.  These directories
+are searched before the usual search path.  The proper result usually
+happens automatically.
+
address@hidden Log Entries, Change Logs and VC, Variables for Check-in/out, 
Version Control
address@hidden Log Entries
+
+  When you're editing an initial comment or log entry for inclusion in a
+master file, finish your entry by typing @kbd{C-c C-c}.
+
address@hidden @kbd
address@hidden C-c C-c
+Finish the comment edit normally (@code{vc-finish-logentry}).
+This finishes check-in.
address@hidden table
+
+  To abort check-in, just don't type @kbd{C-c C-c} in that buffer.  You
+can switch buffers and do other editing.  As long as you don't try to
+check in another file, the entry you were editing remains in its
+buffer, and you can go back to that buffer at any time to complete the
+check-in.
+
+  If you change several source files for the same reason, it is often
+convenient to specify the same log entry for many of the files.  To do
+this, use the history of previous log entries.  The commands @kbd{M-n},
address@hidden, @kbd{M-s} and @kbd{M-r} for doing this work just like the
+minibuffer history commands (except that these versions are used outside
+the minibuffer).
+
address@hidden vc-log-mode-hook
+  Each time you check in a file, the log entry buffer is put into VC Log
+mode, which involves running two hooks: @code{text-mode-hook} and
address@hidden
+
address@hidden Change Logs and VC, Old Versions, Log Entries, Version Control
address@hidden Change Logs and VC
+
+  If you use RCS for a program and also maintain a change log file for
+it (@pxref{Change Log}), you can generate change log entries
+automatically from the version control log entries:
+
address@hidden @kbd
address@hidden C-x v a
address@hidden C-x v a
address@hidden vc-update-change-log
+Visit the current directory's change log file and create new entries for
+versions checked in since the most recent entry in the change log file
+(@code{vc-update-change-log}).
+
+This command works with RCS only; it does not work with SCCS.
address@hidden table
+
+  For example, suppose the first line of @file{ChangeLog} is dated 10
+April 1992, and that the only check-in since then was by Nathaniel
+Bowditch to @file{rcs2log} on 8 May 1992 with log text @samp{Ignore log
+messages that start with `#'.}.  Then @kbd{C-x v a} visits
address@hidden and inserts text like this:
+
address@hidden
address@hidden
+Fri May  8 21:45:00 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * rcs2log: Ignore log messages that start with `#'.
address@hidden group
address@hidden smallexample
+
address@hidden
+You can then edit the new change log entry further as you wish.
+
+  Normally, the log entry for file @file{foo} is displayed as @samp{*
+foo: @var{text of log entry}}.  The @samp{:} after @file{foo} is omitted
+if the text of the log entry starts with @address@hidden(@var{functionname}):
+}}.  For example, if the log entry for @file{vc.el} is
address@hidden(vc-do-command): Check call-process status.}, then the text in
address@hidden looks like this:
+
address@hidden
address@hidden
+Wed May  6 10:53:00 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * vc.el (vc-do-command): Check call-process status.
address@hidden group
address@hidden smallexample
+
+  When @kbd{C-x v a} adds several change log entries at once, it groups
+related log entries together if they all are checked in by the same
+author at nearly the same time.  If the log entries for several such
+files all have the same text, it coalesces them into a single entry.
+For example, suppose the most recent checkins have the following log
+entries:
+
address@hidden
address@hidden For @file{vc.texinfo}:
+Fix expansion typos.
address@hidden For @file{vc.el}:
+Don't call expand-file-name.
address@hidden For @file{vc-hooks.el}:
+Don't call expand-file-name.
address@hidden example
+
+  They appear like this in @file{ChangeLog}:
+
address@hidden
address@hidden
+Wed Apr  1 08:57:59 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * vc.texinfo: Fix expansion typos.
+
+        * vc.el, vc-hooks.el: Don't call expand-file-name.
address@hidden group
address@hidden smallexample
+
+  Normally, @kbd{C-x v a} separates log entries by a blank line, but you
+can mark several related log entries to be clumped together (without an
+intervening blank line) by starting the text of each related log entry
+with a label of the form @address@hidden@address@hidden@} }}.  The label
+itself is not copied to @file{ChangeLog}.  For example, suppose the log
+entries are:
+
address@hidden
address@hidden For @file{vc.texinfo}:
address@hidden@} Fix expansion typos.
address@hidden For @file{vc.el}:
address@hidden@} Don't call expand-file-name.
address@hidden For @file{vc-hooks.el}:
address@hidden@} Don't call expand-file-name.
address@hidden example
+
address@hidden
+Then the text in @file{ChangeLog} looks like this:
+
address@hidden
address@hidden
+Wed Apr  1 08:57:59 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * vc.texinfo: Fix expansion typos.
+        * vc.el, vc-hooks.el: Don't call expand-file-name.
address@hidden group
address@hidden smallexample
+
+  A log entry whose text begins with @samp{#} is not copied to
address@hidden  For example, if you merely fix some misspellings in
+comments, you can log the change with an entry beginning with @samp{#}
+to avoid putting such trivia into @file{ChangeLog}.
+
address@hidden Old Versions, VC Status, Change Logs and VC, Version Control
address@hidden Examining And Comparing Old Versions
+
address@hidden @kbd
address@hidden C-x v ~ @var{version} @key{RET}
+Examine version @var{version} of the visited file, in a buffer of its
+own (@code{vc-version-other-window}).
+
address@hidden C-x v =
+Compare the current buffer contents with the latest checked-in version
+of the file.
+
address@hidden C-u C-x v = @var{file} @key{RET} @var{oldvers} @key{RET} 
@var{newvers} @key{RET}
+Compare the specified two versions of @var{file}.
address@hidden table
+
address@hidden vc-version-other-window
address@hidden C-x v ~
+  You can examine any version of a file by first visiting it, and then
+using @kbd{C-x v ~ @var{version} @key{RET}}
+(@code{vc-version-other-window}).  This puts the text of version
address@hidden in a file named @address@hidden@var{version}~},
+then visits it in a separate window.
+
address@hidden vc-diff
address@hidden C-x v =
+  To compare two versions of a file, use the command @kbd{C-x v =}
+(@code{vc-diff}).
+
+  Plain @kbd{C-x v =} compares the current buffer contents (saving them
+in the file if necessary) with the last checked-in version of the file.
+With a prefix argument, @kbd{C-x v =} reads a file name and two version
+numbers, then compares those versions of the specified file.
+
+  If you supply a directory name instead of the name of a work file,
+this command compares the two specified versions of all registered files
+in that directory and its subdirectories.  You can also specify a
+snapshot name (@pxref{Snapshots}) instead of one or both version
+numbers.
+
+  You can specify a checked-in version by its number; you can specify
+the most recent checked-in version with an empty version number.
+
+  This command works by running the @code{vcdiff} utility, getting the
+options from the variable @code{diff-switches}.  It displays the output
+in a special buffer in another window.  Unlike the @kbd{M-x diff}
+command, @kbd{C-x v =} does not try to find the changes in the old and
+new versions.  This is because one or both versions normally do not
+exist as files.  They exist only in the records of the master file.
address@hidden Files}, for more information about @kbd{M-x diff}.
+
address@hidden VC Status, Renaming and VC, Old Versions, Version Control
address@hidden VC Status Commands
+
address@hidden C-x v l
address@hidden vc-print-log
+  To view the detailed version control status and history of a file,
+type @kbd{C-x v l} (@code{vc-print-log}).  It displays the history of
+changes to the current file, including the text of the log entries.  The
+output appears in a separate window.
+
address@hidden C-x v d
address@hidden vc-directory
+  When you are working on a large program, it's often useful to find all
+the files that are currently locked, or all the files maintained in
+version control at all.  You can use @kbd{C-x v d} (@code{vc-directory})
+to show all the locked files in or beneath the current directory.  This
+includes all files that are locked by any user.  @kbd{C-u C-x v d} lists
+all files in or beneath the current directory that are maintained with
+version control.
+
+  The list of files is displayed as a buffer that uses an augmented
+Dired mode.  The names of the users locking various files are shown (in
+parentheses) in place of the owner and group.  All the normal Dired
+commands work in this buffer.  Most interactive VC commands work also,
+and apply to the file name on the current line.
+
+  The @kbd{C-x v v} command (@code{vc-next-action}), when used in the
+augmented Dired buffer, operates on all the marked files (or the file on
+the current line).  If it operates on more than one file, it handles
+each file according to its current state; thus, it may check out one
+file and check in another (because it is already checked out).  If it
+has to check in any files, it reads a single log entry, then uses that
+text for all the files being checked in.  This can be convenient for
+registering or checking in several files at once, as part of the same
+change.
+
address@hidden Renaming and VC, Snapshots, VC Status, Version Control
address@hidden Renaming VC Work Files and Master Files
+
address@hidden vc-rename-file
+  When you rename a registered file, you must also rename its master
+file correspondingly to get proper results.  Use @code{vc-rename-file}
+to rename the source file as you specify, and rename its master file
+accordingly.  It also updates any snapshots (@pxref{Snapshots}) that
+mention the file, so that they use the new name; despite this, the
+snapshot thus modified may not completely work (@pxref{Snapshot
+Caveats}).
+
+  You cannot use @code{vc-rename-file} on a file that is locked by
+someone else.
+
address@hidden Snapshots, Version Headers, Renaming and VC, Version Control
address@hidden Snapshots
address@hidden snapshots and version control
+
+  A @dfn{snapshot} is a named set of file versions (one for each
+registered file) that you can treat as a unit.  One important kind of
+snapshot is a @dfn{release}, a (theoretically) stable version of the
+system that is ready for distribution to users.
+
address@hidden
+* Making Snapshots::           The snapshot facilities.
+* Snapshot Caveats::           Things to be careful of when using snapshots.
address@hidden menu
+
address@hidden Making Snapshots, Snapshot Caveats, Snapshots, Snapshots
address@hidden Making and Using Snapshots
+
+  There are two basic commands for snapshots; one makes a
+snapshot with a given name, the other retrieves a named snapshot.
+
address@hidden @code
address@hidden C-x v s
address@hidden vc-create-snapshot
address@hidden C-x v s @var{name} @key{RET}
+Define the last saved versions of every registered file in or under the
+current directory as a snapshot named @var{name}
+(@code{vc-create-snapshot}).
+
address@hidden C-x v r
address@hidden vc-retrieve-snapshot
address@hidden C-x v r @var{name} @key{RET}
+Check out all registered files at or below the current directory level
+using whatever versions correspond to the snapshot @var{name}
+(@code{vc-retrieve-snapshot}).
+
+This command reports an error if any files are locked at or below the
+current directory, without changing anything; this is to avoid
+overwriting work in progress.
address@hidden table
+
+  A snapshot uses a very small amount of resources---just enough to record
+the list of file names and which version belongs to the snapshot.  Thus,
+you need not hesitate to create snapshots whenever they are useful.
+
+  You can give a snapshot name as an argument to @kbd{C-x v =} or
address@hidden v ~} (@pxref{Old Versions}).  Thus, you can use it to compare a
+snapshot against the current files, or two snapshots against each other,
+or a snapshot against a named version.
+
address@hidden Snapshot Caveats,  , Making Snapshots, Snapshots
address@hidden Snapshot Caveats
+
address@hidden named configurations (RCS)
+  VC's snapshot facilities are modeled on RCS's named-configuration
+support.  They use RCS's native facilities for this, so under VC
+snapshots made using RCS are visible even when you bypass VC.
+
address@hidden worded verbosely to avoid overfull hbox.
+  For SCCS, VC implements snapshots itself.  The files it uses contain
+name/file/version-number triples.  These snapshots are visible only
+through VC.
+
+  A snapshot is a set of checked-in versions.  So make sure that all the
+files are checked in and not locked when you make a snapshot.
+
+  File renaming and deletion can create some difficulties with snapshots.
+This is not a VC-specific problem, but a general design issue in version
+control systems that no one has solved very well yet.
+
+  If you rename a registered file, you need to rename its master along
+with it (the command @code{vc-rename-file} does this automatically).  If
+you are using SCCS, you must also update the records of the snapshot, to
+mention the file by its new name (@code{vc-rename-file} does this,
+too).  An old snapshot that refers to a master file that no longer
+exists under the recorded name is invalid; VC can no longer retrieve
+it.  It would be beyond the scope of this manual to explain enough about
+RCS and SCCS to explain how to update the snapshots by hand.
+
+  Using @code{vc-rename-file} makes the snapshot remain valid for
+retrieval, but it does not solve all problems.  For example, some of the
+files in the program probably refer to others by name.  At the very
+least, the makefile probably mentions the file that you renamed.  If you
+retrieve an old snapshot, the renamed file is retrieved under its new
+name, which is not the name that the makefile expects.  So the program
+won't really work as retrieved.
+
address@hidden Version Headers,  , Snapshots, Version Control
address@hidden Inserting Version Control Headers
+
+   Sometimes it is convenient to put version identification strings
+directly into working files.  Certain special strings called
address@hidden headers} are replaced in each successive version by the
+number of that version.
+
address@hidden C-x v h
address@hidden vc-insert-headers
+  You can use the @kbd{C-x v h} command (@code{vc-insert-headers}) to
+insert a suitable header string.
+
address@hidden @kbd
address@hidden C-x v h
+Insert headers in a file for use with your version-control system.
address@hidden table
+
address@hidden vc-header-alist
+  The default header string is @samp{\$Id\$} for RCS and @samp{\%W\%}
+for SCCS. (The actual strings inserted do not have the backslashes
+in them.  They were placed in the Info source file so that the
+strings don't get interpreted as version-control headers when the
+Info source files are maintained under version control.) You can
+specify other headers to insert by setting the variable
address@hidden  Its value is a list of elements of the form
address@hidden(@var{program} . @var{string})} where @var{program} is @code{RCS}
+or @code{SCCS} and @var{string} is the string to use.
+
+  Instead of a single string, you can specify a list of strings; then
+each string in the list is inserted as a separate header on a line of
+its own.
+
+  It is often necessary to use ``superfluous'' backslashes when writing
+the strings that you put in this variable.  This is to prevent the
+string in the constant from being interpreted as a header itself if the
+Emacs Lisp file containing it is maintained with version control.
+
address@hidden vc-comment-alist
+  Each header is inserted surrounded by tabs, inside comment delimiters,
+on a new line at the start of the buffer.  Normally the ordinary comment
+start and comment end strings of the current mode are used, but for
+certain modes, there are special comment delimiters for this purpose;
+the variable @code{vc-comment-alist} specifies them.  Each element of
+this list has the form @code{(@var{mode} @var{starter} @var{ender})}.
+
address@hidden vc-static-header-alist
+  The variable @code{vc-static-header-alist} specifies further strings
+to add based on the name of the buffer.  Its value should be a list of
+elements of the form @code{(@var{regexp} . @var{format})}.  Whenever
address@hidden matches the buffer name, @var{format} is inserted as part
+of the header.  A header line is inserted for each element that matches
+the buffer name, and for each string specified by
address@hidden  The header line is made by processing the
+string from @code{vc-header-alist} with the format taken from the
+element.  The default value for @code{vc-static-header-alist} is:
+
address@hidden
address@hidden
+(("\\.c$" .
+  "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n\
+#endif /* lint */\n"))
address@hidden group
address@hidden example
+
address@hidden
+which specifies insertion of a string of this form:
+
address@hidden
address@hidden
+
+#ifndef lint
+static char vcid[] = "@var{string}";
+#endif /* lint */
address@hidden group
address@hidden example
+
address@hidden ListDir, Comparing Files, Version Control, Files
address@hidden Listing a File Directory
+
address@hidden file directory
address@hidden directory listing
+  Files are organized by Unix into @dfn{directories}.  A @dfn{directory
+listing} is a list of all the files in a directory.  Emacs provides
+directory listings in brief format (file names only) and verbose format
+(sizes, dates, and authors included).
+
address@hidden @kbd
address@hidden C-x C-d @var{dir-or-pattern}
+Print a brief directory listing (@code{list-directory}).
address@hidden C-u C-x C-d @var{dir-or-pattern}
+Print a verbose directory listing.
address@hidden table
+
address@hidden list-directory
address@hidden C-x C-d
+  To print a directory listing, use @kbd{C-x C-d}
+(@code{list-directory}).  This command prompts in the minibuffer for a
+file name which is either a  directory to be listed or pattern
+containing wildcards for the files to be listed.  For example,
+
address@hidden
+C-x C-d /u2/emacs/etc @key{RET}
address@hidden example
+
address@hidden
+lists all the files in directory @file{/u2/emacs/etc}.  An example of
+specifying a file name pattern is:
+
address@hidden
+C-x C-d /u2/emacs/src/*.c @key{RET}
address@hidden example
+
+  Normally, @kbd{C-x C-d} prints a brief directory listing containing just
+file names.  A numeric argument (regardless of value) tells it to print a
+verbose listing (like @code{ls -l}).
+
address@hidden list-directory-brief-switches
address@hidden list-directory-verbose-switches
+  Emacs obtains the text of a directory listing by running @code{ls} in
+an inferior process.  Two Emacs variables control the switches passed to
address@hidden: @code{list-directory-brief-switches} is a string giving the
+switches to use in brief listings (@code{"-CF"} by default).
address@hidden is a string giving the switches
+to use in a verbose listing (@code{"-l"} by default).
+
+The variable @code{directory-abbrev-alist} is an alist of abbreviations
+for file directories.  The list consists of elements of the form
address@hidden(FROM .  TO)}, each meaning to replace @code{FROM} with @code{TO}
+when it appears in a directory name.  This replacement is done when
+setting up the default directory of a newly visited file.  Every @code{FROM}
+string should start with address@hidden'.
+
+Use this feature when you have directories which you normally refer to
+via absolute symbolic links.  Make @code{TO} the name of the link, and
address@hidden the name it is linked to.
+
address@hidden Comparing Files, Dired, ListDir, Files
address@hidden Comparing Files
address@hidden comparing files
+
address@hidden diff
address@hidden diff-switches
+  The command @kbd{M-x diff} compares two files, displaying the
+differences in an Emacs buffer named @samp{*Diff*}.  It works by running
+the @code{diff} program, using options taken from the variable
address@hidden, whose value should be a string.
+
+  The buffer @samp{*Diff*} has Compilation mode as its major mode, so
+you can use @kbd{C-x `} to visit successive changed locations in the two
+source files.  You can also move to a particular hunk of changes and
+type @kbd{C-c C-c} to find the corresponding source location.  You can
+also use the other special commands of Compilation mode: @key{SPC} and
address@hidden for scrolling, and @kbd{M-p} and @kbd{M-n} for cursor motion.
address@hidden
+
address@hidden diff-backup
+  The command @kbd{M-x diff-backup} compares a specified file with its most
+recent backup.  If you specify the name of a backup file,
address@hidden compares it with the source file that it is a backup
+of.
+
address@hidden compare-windows
address@hidden comparing files
+  The command @kbd{M-x compare-windows} compares the text in the current
+window with that in the next window.  Comparison starts at point in each
+window.  Point moves forward in each window, a character at a time in each
+window, until the next characters in the two windows are different.  Then
+the command is finished.  For more information about windows in Emacs,
address@hidden
+
address@hidden compare-ignore-case
+  With a numeric argument, @code{compare-windows} ignores changes in
+whitespace.  If the variable @code{compare-ignore-case} is
address@hidden, it ignores differences in case as well.
+
address@hidden Dired, Misc File Ops, Comparing Files, Files
address@hidden Dired, the Directory Editor
address@hidden Dired
address@hidden deletion (of files)
+
+  Dired makes it easy to delete or visit many of the files in a single
+directory at once.  It creates an Emacs buffer containing a listing of the
+directory.  You can use the normal Emacs commands to move around in this
+buffer and special Dired commands to operate on the files.
+
address@hidden
+* Enter: Dired Enter.         How to invoke Dired.
+* Edit: Dired Edit.           Editing the Dired buffer.
+* Deletion: Dired Deletion.   Deleting files with Dired.
+* Immed: Dired Immed.         Other file operations through Dired.
address@hidden menu
+
address@hidden Dired Enter, Dired Edit, Dired, Dired
address@hidden Entering Dired
+
address@hidden dired
address@hidden C-x d
address@hidden dired-listing-switches
+  To invoke dired, type @kbd{C-x d} or @kbd{M-x dired}.  The command reads a
+directory name or wildcard file name pattern as a minibuffer argument just
+like the @code{list-directory} command, @kbd{C-x C-d}.  Where @code{dired}
+differs from @code{list-directory} is in naming the buffer after the
+directory name or the wildcard pattern used for the listing, and putting
+the buffer into Dired mode so that the special commands of Dired are
+available in it.  The variable @code{dired-listing-switches} is a string
+used as an argument to @code{ls} in making the directory; this string
address@hidden contain @samp{-l}.
+
address@hidden dired-other-window
address@hidden C-x 4 d
+  To display the Dired buffer in another window rather than in the selected
+window, use @kbd{C-x 4 d} (@code{dired-other-window)} instead of @kbd{C-x d}.
+
address@hidden Dired Edit, Dired Deletion, Dired Enter, Dired
address@hidden Editing in Dired
+
+  Once the Dired buffer exists, you can switch freely between it and other
+Emacs buffers.  Whenever the Dired buffer is selected, certain special
+commands are provided that operate on files that are listed.  The Dired
+buffer is ``read-only'', and inserting text in it is not useful, so
+ordinary printing characters such as @kbd{d} and @kbd{x} are used for Dired
+commands.  Most Dired commands operate on the file described by the line
+that point is on.  Some commands perform operations immediately; others
+``flag'' a file to be operated on later.
+
+  Most Dired commands that operate on the current line's file also treat a
+numeric argument as a repeat count, meaning to act on the files of the
+next few lines.  A negative argument means to operate on the files of the
+preceding lines, and leave point on the first of those lines.
+
+  All the usual Emacs cursor motion commands are available in Dired
+buffers.  Some special purpose commands are also provided.  The keys
address@hidden and @kbd{C-p} are redefined so that they try to position
+the cursor at the beginning of the filename on the line, rather than
+at the beginning of the line.
+
+  For extra convenience, @key{SPC} and @kbd{n} in Dired are equivalent to
address@hidden  @kbd{p} is equivalent to @kbd{C-p}.  Moving by lines is done so
+often in Dired that it deserves to be easy to type.  @key{DEL} (move up and
+unflag) is often useful simply for moving address@hidden
+
+  The @kbd{g} command in Dired runs @code{revert-buffer} to reinitialize
+the buffer from the actual disk directory and show any changes made in the
+directory by programs other than Dired.  All deletion flags in the Dired
+buffer are lost when this is done.
+
address@hidden Dired Deletion, Dired Immed, Dired Edit, Dired
address@hidden Deleting Files With Dired
+
+  The primary use of Dired is to flag files for deletion and then delete
+them.
+
address@hidden @kbd
address@hidden d
+Flag this file for deletion.
address@hidden u
+Remove deletion-flag on this line.
address@hidden @key{DEL}
+Remove deletion-flag on previous line, moving point to that line.
address@hidden x
+Delete the files that are flagged for deletion.
address@hidden #
+Flag all auto-save files (files whose names start and end with @samp{#})
+for deletion (@pxref{Auto Save}).
address@hidden ~
+Flag all backup files (files whose names end with @samp{~}) for deletion
+(@pxref{Backup}).
address@hidden .@: @r{(Period)}
+Flag excess numeric backup files for deletion.  The oldest and newest
+few backup files of any one file are exempt; the middle ones are flagged.
address@hidden table
+
+  You can flag a file for deletion by moving to the line describing the
+file and typing @kbd{d} or @kbd{C-d}.  The deletion flag is visible as a
address@hidden at the beginning of the line.  Point is moved to the beginning of
+the next line, so that repeated @kbd{d} commands flag successive files.
+
+  The files are flagged for deletion rather than deleted immediately to
+avoid the danger of deleting a file accidentally.  Until you direct Dired
+to delete the flagged files, you can remove deletion flags using the
+commands @kbd{u} and @key{DEL}.  @kbd{u} works just like @kbd{d}, but
+removes flags rather than making flags.  @key{DEL} moves upward, removing
+flags; it is like @kbd{u} with numeric argument automatically negated.
+
+  To delete the flagged files, type @kbd{x}.  This command first displays a
+list of all the file names flagged for deletion, and requests confirmation
+with @kbd{yes}.  Once you confirm, all the flagged files are deleted, and their
+lines are deleted from the text of the Dired buffer.  The shortened Dired
+buffer remains selected.  If you answer @kbd{no} or quit with @kbd{C-g}, you
+return immediately to Dired, with the deletion flags still present and no
+files actually deleted.
+
+  The @kbd{#}, @kbd{~}, and @kbd{.} commands flag many files for
+deletion, based on their names.  These commands are useful precisely
+because they do not actually delete any files; you can remove the
+deletion flags from any flagged files that you really wish to address@hidden
+
+  @kbd{#} flags for deletion all files that appear to have been made by
+auto-saving (that is, files whose names begin and end with @samp{#}).
address@hidden flags for deletion all files that appear to have been made as
+backups for files that were edited (that is, files whose names end with
address@hidden).
+
address@hidden dired-kept-versions
+  @kbd{.} (Period) flags just some of the backup files for deletion: only
+numeric backups that are not among the oldest few nor the newest few
+backups of any one file.  Normally @code{dired-kept-versions} (not
address@hidden; that applies only when saving) specifies the
+number of newest versions of each file to keep, and
address@hidden specifies the number of oldest versions to keep.
+Period with a positive numeric argument, as in @kbd{C-u 3 .}, specifies the
+number of newest versions to keep, overriding @code{dired-kept-versions}.
+A negative numeric argument overrides @code{kept-old-versions}, using minus
+the value of the argument to specify the number of oldest versions of each
+file to address@hidden
+
address@hidden Dired Immed,  , Dired Deletion, Dired
address@hidden Immediate File Operations in Dired
+
+  Some file operations in Dired take place immediately when they are
+requested.
+
address@hidden @kbd
address@hidden C
+Copies the file described on the current line.  You must supply a file name
+to copy to, using the minibuffer.
address@hidden f
+Visits the file described on the current line.  It is just like typing
address@hidden C-f} and supplying that file name.  If the file on this line is a
+subdirectory, @kbd{f} actually causes Dired to be invoked on that
+subdirectory.  @xref{Visiting}.
address@hidden o
+Like @kbd{f}, but uses another window to display the file's buffer.  The
+Dired buffer remains visible in the first window.  This is like using
address@hidden 4 C-f} to visit the file.  @xref{Windows}.
address@hidden R
+Renames the file described on the current line.  You must supply a file
+name to rename to, using the minibuffer.
address@hidden v
+Views the file described on this line using @kbd{M-x view-file}.  Viewing a
+file is like visiting it, but is slanted toward moving around in the file
+conveniently and does not allow changing the file.  @xref{Misc File
+Ops,View File}.  Viewing a file that is a directory runs Dired on that
address@hidden
address@hidden table
+
address@hidden Misc File Ops,  , Dired, Files
address@hidden Miscellaneous File Operations
+
+  Emacs has commands for performing many other operations on files.
+All operate on one file; they do not accept wildcard file names.
+
address@hidden add-name-to-file
+  You can use the command @kbd{M-x add-name-to-file} to add a name to an
+existing file without removing the old name.  The new name must belong
+on the file system that the file is on.
+
address@hidden append-to-file
+  @kbd{M-x append-to-file} adds the text of the region to the end of the
+specified file.
+
address@hidden copy-file
address@hidden copying files
+  @kbd{M-x copy-file} reads the file @var{old} and writes a new file
+named @var{new} with the same contents.  Confirmation is required if a
+file named @var{new} already exists, because copying overwrites the old
+contents of the file @var{new}.
+
address@hidden delete-file
address@hidden deletion (of files)
+  @kbd{M-x delete-file} deletes a specified file, like the @code{rm}
+command in the shell.  If you are deleting many files in one directory, it
+may be more convenient to use Dired (@pxref{Dired}).
+
address@hidden insert-file
+  @kbd{M-x insert-file} inserts a copy of the contents of a specified
+file into the current buffer at point, leaving point unchanged before the
+contents and the mark after them.  @xref{Mark}.
+
address@hidden make-symbolic-link
+  @kbd{M-x make-symbolic-link} reads two file names @var{old} and
address@hidden, and then creates a symbolic link named @var{linkname}
+and pointing at @var{old}.  Future attempts to open file
address@hidden will then refer to the file named @var{old} at the time
+the opening is done, or will result in an error if the name @var{old} is
+not in use at that time.  Confirmation is required if you create the
+link while @var{linkname} is in use.  Note that not all systems support
+symbolic links.
+
address@hidden rename-file
+  @kbd{M-x rename-file} reads two file names @var{old} and @var{new} using
+the minibuffer, then renames file @var{old} as @var{new}.  If a file named
address@hidden already exists, you must confirm with @kbd{yes} or renaming is 
not
+done; this is because renaming causes the previous meaning of the 
+name @var{new} to be lost.  If @var{old} and @var{new} are on different 
+file systems, the file @var{old} is copied and deleted.
+
address@hidden view-file
address@hidden viewing
+  @kbd{M-x view-file} allows you to scan or read a file by sequential
+screenfuls.  It reads a file name argument using the minibuffer.  After
+reading the file into an Emacs buffer, @code{view-file} reads and displays
+one windowful.  You can then type @key{SPC} to scroll forward one window,
+or @key{DEL} to scroll backward.  Various other commands are provided for
+moving around in the file, but none for changing it; type @kbd{C-h} while
+viewing a file for a list of them.  Most commands are the default Emacs
+cursor motion commands.  To exit from viewing, type @kbd{C-c}.
+
address@hidden Buffers, Windows, Files, Top
address@hidden Using Multiple Buffers
+
address@hidden buffers
+  Text you are editing in Emacs resides in an object called a
address@hidden  Each time you visit a file, Emacs creates a buffer to
+hold the file's text.  Each time you invoke Dired, Emacs creates a buffer
+to hold the directory listing.  If you send a message with @kbd{C-x m},
+a buffer named @samp{*mail*} is used to hold the text of the message.
+When you ask for a command's documentation, it appears in a buffer
+called @samp{*Help*}.
+
address@hidden selected buffer
address@hidden current buffer
+  At any time, one and only one buffer is @dfn{selected}.  It is also
+called the @dfn{current buffer}.  Saying a command operates on ``the
+buffer'' really means that the command operates on the selected
+buffer, as most commands do.
+
+  When Emacs creates multiple windows, each window has a chosen buffer which
+is displayed there, but at any time only one of the windows is selected and
+its chosen buffer is the selected buffer.  Each window's mode line displays
+the name of the buffer the window is displaying (@pxref{Windows}).
+
+  Each buffer has a name which can be of any length but is
+case-sensitive.  You can select a buffer using its name.  Most
+buffers are created when you visit files; their names are derived from
+the files' names.  You can also create an empty buffer with any name you
+want.  A newly started Emacs has a buffer named @samp{*scratch*} which
+you can use for evaluating Lisp expressions in Emacs.
+
+  Each buffer records what file it is visiting, whether it is
+modified, and what major mode and minor modes are in effect in it
+(@pxref{Major Modes}).  Any Emacs variable can be made @dfn{local to} a
+particular buffer, meaning its value in that buffer can be different from
+the value in other buffers.  @xref{Locals}.
+
address@hidden
+* Select Buffer::   Creating a new buffer or reselecting an old one.
+* List Buffers::    Getting a list of buffers that exist.
+* Misc Buffer::     Renaming; changing read-onliness; copying text.
+* Kill Buffer::     Killing buffers you no longer need.
+* Several Buffers:: How to go through the list of all buffers
+                     and operate variously on several of them.
address@hidden menu
+
address@hidden Select Buffer, List Buffers, Buffers, Buffers
address@hidden Creating and Selecting Buffers
address@hidden changing buffers
address@hidden switching buffers
+
address@hidden @kbd
address@hidden C-x b @var{buffer} @key{RET}
+Select or create a buffer named @var{buffer} (@code{switch-to-buffer}).
address@hidden C-x 4 b @var{buffer} @key{RET}
+Similar, but select a buffer named @var{buffer} in another window
+(@code{switch-to-buffer-other-window}).
address@hidden M-x switch-to-other-buffer @var{n}
+Switch to the previous buffer.
address@hidden table
+
address@hidden C-x 4 b
address@hidden C-x 5 b
address@hidden switch-to-buffer-other-window
address@hidden C-x b
address@hidden switch-to-buffer
address@hidden switch-to-buffer-other-frame
+  To select a buffer named @var{bufname}, type @kbd{C-x b @var{bufname}
address@hidden  This is the command @code{switch-to-buffer} with argument
address@hidden  You can use completion on an abbreviation for the buffer
+name you want (@pxref{Completion}).  An empty argument to @kbd{C-x b}
+specifies the most recently selected buffer that is not displayed in any
address@hidden
+
+  Most buffers are created when you visit files, or use Emacs commands
+that display text.  You can also create a buffer explicitly by typing
address@hidden b @var{bufname} @key{RET}}, which creates a new, empty buffer
+that is not visiting any file, and selects it for editing.  The new
+buffer's major mode is determined by the value of
address@hidden (@pxref{Major Modes}).  Buffers not visiting
+files are usually used for making notes to yourself.  If you try to save
+one, you are asked for the file name to use.
+
+ The function @code{switch-to-buffer-other-frame} is similar to
address@hidden except that it creates a new frame in which to
+display the selected buffer.
+
address@hidden switch-to-other-buffer
+Use @kbd{M-x switch-to-other-buffer} to visit the previous buffer. If
+you supply a positive integer @var{n}, the @var{n}th most recent buffer
+is displayed. If you supply an argument of 0, the current buffer is
+moved to the bottom of the buffer stack.
+
+  Note that you can also use @kbd{C-x C-f} and any other command for
+visiting a file to switch buffers.  @xref{Visiting}.
+
address@hidden List Buffers, Misc Buffer, Select Buffer, Buffers
address@hidden Listing Existing Buffers
+
address@hidden @kbd
address@hidden C-x C-b
+List the existing buffers (@code{list-buffers}).
address@hidden table
+
address@hidden C-x C-b
address@hidden list-buffers
+  To print a list of all existing buffers, type @kbd{C-x C-b}.  Each
+line in the list shows one buffer's name, major mode, and visited file.
+A @samp{*} at the beginning of a line indicates the buffer has been
+``modified''.  If several buffers are modified, it may be time to save
+some with @kbd{C-x s} (@pxref{Saving}).  A @samp{%} indicates a read-only
+buffer.  A @samp{.} marks the selected buffer.  Here is an example of a
+buffer list:@refill
+
address@hidden
+ MR Buffer         Size  Mode           File
+ -- ------         ----  ----           ----
+.*  emacs.tex      383402 Texinfo       /u2/emacs/man/emacs.tex
+    *Help*         1287  Fundamental    
+    files.el       23076 Emacs-Lisp     /u2/emacs/lisp/files.el
+  % RMAIL          64042 RMAIL          /u/rms/RMAIL
+ *% man            747   Dired          /u2/emacs/man/
+    net.emacs      343885 Fundamental   /u/rms/net.emacs
+    fileio.c       27691 C              /u2/emacs/src/fileio.c
+    NEWS           67340 Text           /u2/emacs/etc/NEWS
+    *scratch*      0     Lisp Interaction
address@hidden smallexample
+
address@hidden
+Note that the buffer @samp{*Help*} was made by a help request; it is not
+visiting any file.  The buffer @code{man} was made by Dired on the
+directory @file{/u2/emacs/man/}.
+
+As you move the mouse over the @samp{*Buffer List*} buffer, the lines
+are highlighted.  This visual cue indicates that clicking the right
+mouse button (@code{button3}) will pop up a menu of commands on the
+buffer represented by this line.  This menu duplicates most of those
+commands which are bound to keys in the @samp{*Buffer List*} buffer.
+
address@hidden Misc Buffer, Kill Buffer, List Buffers, Buffers
address@hidden Miscellaneous Buffer Operations
+
address@hidden @kbd
address@hidden C-x C-q
+Toggle read-only status of buffer (@code{toggle-read-only}).
address@hidden M-x rename-buffer
+Change the name of the current buffer.
address@hidden M-x view-buffer
+Scroll through a buffer.
address@hidden table
+
address@hidden read-only buffer
address@hidden C-x C-q
address@hidden toggle-read-only
address@hidden buffer-read-only
+  A buffer can be @dfn{read-only}, which means that commands to change
+its text are not allowed.  Normally, read-only buffers are created by
+subsystems such as Dired and Rmail that have special commands to operate
+on the text.  Emacs also creates a read-only buffer if you
+visit a file that is protected.  To make changes in a read-only buffer,
+use the command @kbd{C-x C-q} (@code{toggle-read-only}).  It makes a
+read-only buffer writable, and makes a writable buffer read-only.  This
+works by setting the variable @code{buffer-read-only}, which has a local
+value in each buffer and makes a buffer read-only if its value is
address@hidden
+
address@hidden rename-buffer
+  @kbd{M-x rename-buffer} changes the name of the current buffer,
+prompting for the new name in the minibuffer.  There is no default.  If you
+specify a name that is used by a different buffer, an error is signalled and
+renaming is not done.
+
address@hidden view-buffer
+  @kbd{M-x view-buffer} is similar to @kbd{M-x view-file} (@pxref{Misc
+File Ops}), but it examines an already existing Emacs buffer.  View mode
+provides convenient commands for scrolling through the buffer but not
+for changing it.  When you exit View mode, the resulting value of point
+remains in effect.
+
+To copy text from one buffer to another, use the commands @kbd{M-x
+append-to-buffer} and @kbd{M-x insert-buffer}.  @xref{Accumulating
address@hidden
+
address@hidden Kill Buffer, Several Buffers, Misc Buffer, Buffers
address@hidden Killing Buffers
+
+  After using Emacs for a while, you may accumulate a large number of
+buffers and may want to eliminate the ones you no
+longer need.  There are several commands for doing this.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x k
+Kill a buffer, specified by name (@code{kill-buffer}).
address@hidden M-x kill-some-buffers
+Offer to kill each buffer, one by one.
address@hidden table
+
address@hidden kill-buffer
address@hidden kill-some-buffers
address@hidden C-x k
+ 
+  @kbd{C-x k} (@code{kill-buffer}) kills one buffer, whose name you
+specify in the minibuffer.  If you type just @key{RET} in the
+minibuffer, the default, killing the current buffer, is used.  If the
+current buffer is killed, the buffer that has been selected recently but
+does not appear in any window now is selected.  If the buffer being
+killed contains unsaved changes, you are asked to confirm with @kbd{yes}
+before the buffer is killed.
+
+  The command @kbd{M-x kill-some-buffers} asks about each buffer, one by
+one.  An answer of @kbd{y} means to kill the buffer.  Killing the current
+buffer or a buffer containing unsaved changes selects a new buffer or asks
+for confirmation just like @code{kill-buffer}.
+
address@hidden Several Buffers,, Kill Buffer, Buffers
address@hidden Operating on Several Buffers
address@hidden buffer menu
+
+  The @dfn{buffer-menu} facility is like a ``Dired for buffers''; it allows
+you to request operations on various Emacs buffers by editing a
+buffer containing a list of them.  You can save buffers, kill them
+(here called @dfn{deleting} them, for consistency with Dired), or display
+them.
+
address@hidden @kbd
address@hidden M-x buffer-menu
+Begin editing a buffer listing all Emacs buffers.
address@hidden table
+
address@hidden buffer-menu
+  The command @code{buffer-menu} writes a list of all Emacs buffers into
+the buffer @samp{*Buffer List*}, and selects that buffer in Buffer Menu
+mode.  The buffer is read-only.  You can only change it using the special
+commands described in this section.  Most of the commands are graphic
+characters.  You can use  Emacs cursor motion commands in the
address@hidden List*} buffer.  If the cursor is on a line describing a
+buffer, the following  special commands apply to that buffer:
+
address@hidden @kbd
address@hidden d
+Request to delete (kill) the buffer, then move down.  A @samp{D} before
+the buffer name on a line indicates a deletion request.  Requested
+deletions actually take place when you use the @kbd{x} command.
address@hidden k
+Synonym for @kbd{d}.
address@hidden C-d
+Like @kbd{d} but move up afterwards instead of down.
address@hidden s
+Request to save the buffer.  An @samp{S} before the buffer name on a line
+indicates the request.  Requested saves actually take place when you use
+the @kbd{x} command.  You can request both saving and deletion for the
+same buffer.
address@hidden ~
+Mark buffer ``unmodified''.  The command @kbd{~} does this
+immediately when typed.
address@hidden x
+Perform previously requested deletions and saves.
address@hidden u
+Remove any request made for the current line, and move down.
address@hidden @key{DEL}
+Move to previous line and remove any request made for that line.
address@hidden table
+
+  All commands that add or remove flags to request later operations
+also move down a line.  They accept a numeric argument as a repeat count,
+unless otherwise specified.
+
+  There are also special commands to use the buffer list to select another
+buffer, and to specify one or more other buffers for display in additional
+windows.
+
address@hidden @kbd
address@hidden 1
+Select the buffer in a full-frame window.  This command takes effect
+immediately.
address@hidden 2
+Immediately set up two windows, with this buffer in one and the
+buffer selected before @samp{*Buffer List*} in the other.
address@hidden f
+Immediately select the buffer in place of the @samp{*Buffer List*} buffer.
address@hidden o
+Immediately select the buffer in another window as if by @kbd{C-x 4 b},
+leaving @samp{*Buffer List*} visible.
address@hidden q
+Immediately select this buffer, and display any buffers previously
+flagged with the @kbd{m} command in other windows.  If there are no 
+buffers flagged with @kbd{m}, this command is equivalent to @kbd{1}.
address@hidden m
+Flag this buffer to be displayed in another window if the @kbd{q}
+command is used.  The request shows as a @samp{>} at the beginning of
+the line.  The same buffer may not have both a delete request and a
+display request.
address@hidden table
+
+ Going back between a @code{buffer-menu} buffer and other Emacs buffers is
+easy.  You can, for example, switch from the @samp{*Buffer List*}
+buffer to another Emacs buffer, and edit there.  You can then reselect the
address@hidden buffer and perform operations already
+requested, or you can kill that buffer or pay no further attention to it.
+ All that @code{buffer-menu} does directly is create and select a
+suitable buffer, and turn on Buffer Menu mode.  All the other
+capabilities of the buffer menu are implemented by special commands
+provided in Buffer Menu mode.  
+
+  The only difference between @code{buffer-menu} and @code{list-buffers} is
+that @code{buffer-menu} selects the @samp{*Buffer List*} buffer and
address@hidden does not.  If you run @code{list-buffers} (that is,
+type @kbd{C-x C-b}) and select the buffer list manually, you can use all
+the commands described here.
+
address@hidden Windows, Mule, Buffers, Top
address@hidden Multiple Windows
address@hidden windows
+
+  Emacs can split the frame into two or many windows, which can display
+parts of different buffers or different parts of one buffer.  If you are
+running XEmacs under X, that means you can have the X window that contains
+the Emacs frame have multiple subwindows.
+
address@hidden
+* Basic Window::     Introduction to Emacs windows.
+* Split Window::     New windows are made by splitting existing windows.
+* Other Window::     Moving to another window or doing something to it.
+* Pop Up Window::    Finding a file or buffer in another window.
+* Change Window::    Deleting windows and changing their sizes.
address@hidden menu
+
address@hidden Basic Window, Split Window, Windows, Windows
address@hidden Concepts of Emacs Windows
+
+  When Emacs displays multiple windows, each window has one Emacs
+buffer designated for display.  The same buffer may appear in more
+than one window; if it does, any changes in its text are displayed in all
+the windows that display it.  Windows showing the same buffer can
+show different parts of it, because each window has its own value of point.
+
address@hidden selected window
+  At any time, one  window is the @dfn{selected window}; the buffer
+ displayed by that window is the current buffer.  The cursor
+shows the location of point in that window.  Each other window has a
+location of point as well, but since the terminal has only one cursor, it
+cannot show the location of point in the other windows.
+
+  Commands to move point affect the value of point for the selected Emacs
+window only.  They do not change the value of point in any other Emacs
+window, including those showing the same buffer.  The same is true for commands
+such as @kbd{C-x b} to change the selected buffer in the selected window;
+they do not affect other windows at all.  However, there are other commands
+such as @kbd{C-x 4 b} that select a different window and switch buffers in
+it.  Also, all commands that display information in a window, including
+(for example) @kbd{C-h f} (@code{describe-function}) and @kbd{C-x C-b}
+(@code{list-buffers}), work by switching buffers in a non-selected window
+without affecting the selected window.
+
+  Each window has its own mode line, which displays the buffer name,
+modification status, and major and minor modes of the buffer that is
+displayed in the window.  @xref{Mode Line}, for details on the mode
+line.
+
address@hidden Split Window, Other Window, Basic Window, Windows
address@hidden Splitting Windows
+
address@hidden @kbd
address@hidden C-x 2
+Split the selected window into two windows, one above the other
+(@code{split-window-vertically}).
address@hidden C-x 3
+Split the selected window into two windows positioned side by side
+(@code{split-window-horizontally}).
address@hidden C-x 6
+Save the current window configuration in register @var{reg} (a letter).
address@hidden C-x 7
+Restore (make current) the window configuration in register
address@hidden (a letter).  Use with a register previously set with @kbd{C-x 6}.
address@hidden table
+
address@hidden C-x 2
address@hidden split-window-vertically
+  The command @kbd{C-x 2} (@code{split-window-vertically}) breaks the
+selected window into two windows, one above the other.  Both windows
+start out displaying the same buffer, with the same value of point.  By
+default each of the two windows gets half the height of the window that
+was split.  A numeric argument specifies how many lines to give to the
+top window.
+
address@hidden C-x 3
address@hidden split-window-horizontally
+  @kbd{C-x 3} (@code{split-window-horizontally}) breaks the selected
+window into two side-by-side windows.  A numeric argument specifies how
+many columns to give the one on the left.  A line of vertical bars
+separates the two windows.  Windows that are not the full width of the
+frame have truncated mode lines which do not always appear in inverse
+video, because Emacs display routines cannot display a region of inverse
+video that is only part of a line on the screen.
+
address@hidden truncate-partial-width-windows
+  When a window is less than the full width, many text lines are too
+long to fit.  Continuing all those lines might be confusing.  Set the
+variable @code{truncate-partial-width-windows} to address@hidden to
+force truncation in all windows less than the full width of the frame,
+independent of the buffer and its value for @code{truncate-lines}.
address@hidden address@hidden
+
+  Horizontal scrolling is often used in side-by-side windows.
address@hidden
+
address@hidden jump-to-register
address@hidden window-configuration-to-register
+You can resize a window and store that configuration in a register by
+supplying a @var{register} argument to @code{window-configuration-to-register}
+(@kbd{C-x 6}). To return to the window configuration established with
address@hidden, use @code{jump-to-register}
+(@kbd{C-x j}).
+
address@hidden Other Window, Pop Up Window, Split Window, Windows
address@hidden Using Other Windows
+
address@hidden @kbd
address@hidden C-x o
+Select another window (@code{other-window}).  That is the letter `o', not zero.
address@hidden M-C-v
+Scroll the next window (@code{scroll-other-window}).
address@hidden M-x compare-windows
+Find the next place where the text in the selected window does not match
+the text in the next window.
address@hidden M-x other-window-any-frame @var{n}
+Select the @var{n}th different window on any frame.
address@hidden table
+
address@hidden C-x o
address@hidden other-window
+  To select a different window, use @kbd{C-x o} (@code{other-window}).
+That is an `o', for `other', not a zero.  When there are more than
+two windows, the command moves through all the windows in a cyclic
+order, generally top to bottom and left to right.  From the rightmost
+and bottommost window, it goes back to the one at the upper left corner.
+A numeric argument, @var{n}, moves several steps in the cyclic order of
+windows. A negative numeric argument moves around the cycle in the
+opposite order.  If the optional second argument @var{which-frames} is
address@hidden, the function cycles through all frames.  When the
+minibuffer is active, the minibuffer is the last window in the cycle;
+you can switch from the minibuffer window to one of the other windows,
+and later switch back and finish supplying the minibuffer argument that
+is requested.  @xref{Minibuffer Edit}.
+
address@hidden other-window-any-frame
+ The command @kbd{M-x other-window-any-frame} also selects the window
address@hidden steps away in the cyclic order.  However, unlike 
@code{other-window},
+this command selects a window on the next or previous frame instead of
+wrapping around to the top or bottom of the current frame, when there
+are no more windows.
+
address@hidden C-M-v
address@hidden scroll-other-window
+  The usual scrolling commands (@pxref{Display}) apply to the selected
+window only.  @kbd{M-C-v} (@code{scroll-other-window}) scrolls the
+window that @kbd{C-x o} would select.  Like @kbd{C-v}, it takes positive
+and negative arguments.
+
address@hidden compare-windows
+  The command @kbd{M-x compare-windows} compares the text in the current
+window with the text in the next window.  Comparison starts at point in each
+window.  Point moves forward in each window, a character at a time,
+until the next set of characters in the two windows are different.  Then the
+command is finished.
+
+A prefix argument @var{ignore-whitespace} means ignore changes in
+whitespace.  The variable @code{compare-windows-whitespace} controls how
+whitespace is skipped.
+
+If @code{compare-ignore-case} is address@hidden, changes in case are
+also ignored.
+
address@hidden Pop Up Window, Change Window, Other Window, Windows
address@hidden Displaying in Another Window
+
address@hidden C-x 4
+  @kbd{C-x 4} is a prefix key for commands that select another window
+(splitting the window if there is only one) and select a buffer in that
+window.  Different @kbd{C-x 4} commands have different ways of finding the
+buffer to select.
+
address@hidden switch-to-buffer-other-window
address@hidden find-file-other-window
address@hidden find-tag-other-window
address@hidden dired-other-window
address@hidden mail-other-window
address@hidden @kbd
address@hidden C-x 4 b @var{bufname} @key{RET}
+Select buffer @var{bufname} in another window.  This runs
address@hidden
address@hidden C-x 4 f @var{filename} @key{RET}
+Visit file @var{filename} and select its buffer in another window.  This
+runs @code{find-file-other-window}.  @xref{Visiting}.
address@hidden C-x 4 d @var{directory} @key{RET}
+Select a Dired buffer for directory @var{directory} in another window.
+This runs @code{dired-other-window}.  @xref{Dired}.
address@hidden C-x 4 m
+Start composing a mail message in another window.  This runs
address@hidden, and its same-window version is @kbd{C-x m}
+(@pxref{Sending Mail}).
address@hidden C-x 4 .
+Find a tag in the current tag table in another window.  This runs
address@hidden, the multiple-window variant of @kbd{M-.}
+(@pxref{Tags}).
address@hidden table
+
address@hidden display-buffer-function
+If the variable @code{display-buffer-function} is address@hidden, its value is
+the function to call to handle @code{display-buffer}. It receives two
+arguments, the buffer and a flag that if address@hidden means that the
+currently selected window is not acceptable. Commands such as
address@hidden and @code{find-file-other-window}
+work using this function.
+
address@hidden Change Window,, Pop Up Window, Windows
address@hidden Deleting and Rearranging Windows
+
address@hidden @kbd
address@hidden C-x 0
+Get rid of the selected window (@code{delete-window}).  That is a zero.
+If there is more than one Emacs frame, deleting the sole remaining
+window on that frame deletes the frame as well. If the current frame
+is the only frame, it is not deleted.
address@hidden C-x 1
+Get rid of all windows except the selected one
+(@code{delete-other-windows}).
address@hidden C-x ^
+Make the selected window taller, at the expense of the other(s)
address@hidden(@code{enlarge-window}).
address@hidden C-x @}
+Make the selected window wider (@code{enlarge-window-horizontally}).
address@hidden table
+
address@hidden C-x 0
address@hidden delete-window
+  To delete a window, type @kbd{C-x 0} (@code{delete-window}).  (That is a
+zero.)  The space occupied by the deleted window is distributed among the
+other active windows (but not the minibuffer window, even if that is active
+at the time).  Once a window is deleted, its attributes are forgotten;
+there is no automatic way to make another window of the same shape or
+showing the same buffer.  The buffer continues to exist, and you can
+select it in any window with @kbd{C-x b}.
+
address@hidden C-x 1
address@hidden delete-other-windows
+  @kbd{C-x 1} (@code{delete-other-windows}) is more powerful than @kbd{C-x 0};
+it deletes all the windows except the selected one (and the minibuffer).
+The selected window expands to use the whole frame except for the echo
+area.
+
address@hidden C-x ^
address@hidden enlarge-window
address@hidden C-x @}
address@hidden enlarge-window-horizontally
address@hidden window-min-height
address@hidden window-min-width
+  To readjust the division of space among existing windows, use @kbd{C-x
+^} (@code{enlarge-window}).  It makes the currently selected window
+longer by one line or as many lines as a numeric argument specifies.
+With a negative argument, it makes the selected window smaller.
address@hidden @}} (@code{enlarge-window-horizontally}) makes the selected
+window wider by the specified number of columns.  The extra screen space
+given to a window comes from one of its neighbors, if that is possible;
+otherwise, all the competing windows are shrunk in the same proportion.
+If this makes some windows too small, those windows are deleted and their
+space is divided up.   Minimum window size is specified by the variables
address@hidden and @code{window-min-width}.
+
+You can also resize windows within a frame by clicking the left mouse
+button on a modeline, and dragging.
+
+Clicking the right button on a mode line pops up a menu of common window
+manager operations.  This menu contains the following options:
+
address@hidden Windows menu
address@hidden Pull-down Menus
address@hidden menus
address@hidden @b
address@hidden Delete Window
+Remove the window above this modeline from the frame.
+
address@hidden Delete Other Windows
+Delete all windows on the frame except for the one above this modeline.
+
address@hidden Split Window
+Split the window above the mode line in half, creating another window.
+
address@hidden Split Window Horizontally
+Split the window above the mode line in half horizontally, so that there
+will be two windows side-by-side.
+
address@hidden Balance Windows
+Readjust the sizes of all windows on the frame until all windows have
+roughly the same number of lines.
address@hidden table
address@hidden This is part of the Emacs manual.
address@hidden Copyright (C) 1997 Free Software Foundation, Inc.
address@hidden See file emacs.texi for copying conditions.
address@hidden Mule, Major Modes, Windows, Top
address@hidden World Scripts Support
address@hidden MULE
address@hidden international scripts
address@hidden multibyte characters
address@hidden encoding of characters
+
address@hidden Chinese
address@hidden Greek
address@hidden IPA
address@hidden Japanese
address@hidden Korean
address@hidden Cyrillic
address@hidden Russian
+  If you compile XEmacs with Mule option, it supports a wide variety of
+world scripts, including Latin script, as well as Arabic script,
+Simplified Chinese script (for mainland of China), Traditional Chinese
+script (for Taiwan and Hong-Kong), Greek script, Hebrew script, IPA
+symbols, Japanese scripts (Hiragana, Katakana and Kanji), Korean scripts
+(Hangul and Hanja) and Cyrillic script (for Byelorussian, Bulgarian,
+Russian, Serbian and Ukrainian).  These features have been merged from
+the modified version of Emacs known as MULE (for ``MULti-lingual
+Enhancement to GNU Emacs'').
+
address@hidden
+* Mule Intro::              Basic concepts of Mule.
+* Language Environments::   Setting things up for the language you use.
+* Input Methods::           Entering text characters not on your keyboard.
+* Select Input Method::     Specifying your choice of input methods.
+* Mule and Fonts::          Additional font-related issues
+* Coding Systems::          Character set conversion when you read and
+                              write files, and so on.
+* Recognize Coding::        How XEmacs figures out which conversion to use.
+* Specify Coding::          Various ways to choose which conversion to use.
address@hidden menu
+
address@hidden Mule Intro, Language Environments, Mule, Mule
address@hidden What is Mule?
+
+Mule is the MUltiLingual Extension to XEmacs.  It provides facilities
+not only for handling text written in many different languages, but in
+fact multilingual texts containing several languages in the same buffer.
+This goes beyond the simple facilities offered by Unicode for
+representation of multilingual text.  Mule also supports input methods,
+composing display using fonts in various different encodings, changing
+character syntax and other editing facilities to correspond to local
+language usage, and more.
+
+The most obvious problem is that of the different character coding
+systems used by different languages.  ASCII supplies all the characters
+needed for most computer programming languages and US English (it lacks
+the currency symbol for British English), but other Western European
+languages (French, Spanish, German) require more than 96 code positions
+for accented characters.  In fact, even with 8 bits to represent 96 more
+character (including accented characters and symbols such as currency
+symbols), some languages' alphabets remain incomplete (Croatian,
+Polish).  (The 64 "missing characters" are reserved for control
+characters.)  Furthermore, many European languages have their own
+alphabets, which must conflict with the accented characters since the
+ASCII characters are needed for computer interaction (error and log
+messages are typically in ASCII).
+
+For economy of space, historical practice has been for each language to
+establish its own encoding for the characters it needs.  This allows
+most European languages to represented with one octet (byte) per
+character.  However, many Asian languages have thousands of characters
+and require two or more octets per character.  For multilingual
+purposes, the ISO 2022 standard establishes escape codes that allow
+switching encodings in midstream.  (It's also ISO 2022 that establishes
+the standard that code points 0-31 and 128-159 are control codes.)
+
+However, this is error-prone and complex for internal processing.  For
+this reason XEmacs uses an internal coding system which can encode all
+of the world's scripts.  Unfortunately, for historical reasons, this
+code is not Unicode, although we are moving in that direction.
+
+XEmacs translates between the internal character encoding and various
+other coding systems when reading and writing files, when exchanging
+data with subprocesses, and (in some cases) in the @kbd{C-q} command
+(see below).  The internal encoding is never visible to the user in a
+production XEmacs, but unfortunately the process cannot be completely
+transparent to the user.  This is because the same ranges of octets may
+represent 1-octet ISO-8859-1 (which is satisfactory for most Western
+European use prior to the introduction of the Euro currency), 1-octet
+ISO-8859-15 (which substitutes the Euro for the rarely used "generic
+currency" symbol), 1-octet ISO-8859-5 (Cyrillic), or multioctet EUC-JP
+(Japanese).  There's no way to tell without being able to read!
+
+A number of heuristics are incorporated in Mule for automatic
+recognition, there are facilities for the user to set defaults, and
+where necessary (rarely, we hope) to set coding systems directly.
+
address@hidden C-h h
address@hidden view-hello-file
+  The command @kbd{C-h h} (@code{view-hello-file}) displays the file
address@hidden/HELLO}, which shows how to say ``hello'' in many languages.
+This illustrates various scripts.
+
+  Keyboards, even in the countries where these character sets are used,
+generally don't have keys for all the characters in them.  So XEmacs
+supports various @dfn{input methods}, typically one for each script or
+language, to make it convenient to type them.
+
address@hidden C-x RET
+  The prefix key @kbd{C-x @key{RET}} is used for commands that pertain
+to world scripts, coding systems, and input methods.
+
+
address@hidden Language Environments, Input Methods, Mule Intro, Mule
address@hidden Language Environments
address@hidden language environments
+
+  All supported character sets are supported in XEmacs buffers if it is
+compiled with Mule; there is no need to select a particular language in
+order to display its characters in an XEmacs buffer.  However, it is
+important to select a @dfn{language environment} in order to set various
+defaults.  The language environment really represents a choice of
+preferred script (more or less) rather that a choice of language.
+
+  The language environment controls which coding systems to recognize
+when reading text (@pxref{Recognize Coding}).  This applies to files,
+incoming mail, netnews, and any other text you read into XEmacs.  It may
+also specify the default coding system to use when you create a file.
+Each language environment also specifies a default input method.
+
address@hidden set-language-environment
+  The command to select a language environment is @kbd{M-x
+set-language-environment}.  It makes no difference which buffer is
+current when you use this command, because the effects apply globally to
+the XEmacs session.  The supported language environments include:
+
address@hidden
+ASCII, Chinese-BIG5, Chinese-GB, Croatian, Cyrillic-ALT, Cyrillic-ISO, 
+Cyrillic-KOI8, Cyrillic-Win, Czech, English, Ethiopic, French, German,
+Greek, Hebrew, IPA, Japanese, Korean, Latin-1, Latin-2, Latin-3, Latin-4,
+Latin-5, Norwegian, Polish, Romanian, Slovenian, Thai-XTIS, Vietnamese.
address@hidden quotation
+
+  Some operating systems let you specify the language you are using by
+setting locale environment variables.  XEmacs handles one common special
+case of this: if your locale name for character types contains the
+string @address@hidden, XEmacs automatically selects the
+corresponding language environment.
+
address@hidden C-h L
address@hidden describe-language-environment
+  To display information about the effects of a certain language
+environment @var{lang-env}, use the command @kbd{C-h L @var{lang-env}
address@hidden (@code{describe-language-environment}).  This tells you which
+languages this language environment is useful for, and lists the
+character sets, coding systems, and input methods that go with it.  It
+also shows some sample text to illustrate scripts used in this language
+environment.  By default, this command describes the chosen language
+environment.
+
address@hidden Input Methods, Select Input Method, Language Environments, Mule
address@hidden Input Methods
+
address@hidden input methods
+  An @dfn{input method} is a kind of character conversion designed
+specifically for interactive input.  In XEmacs, typically each language
+has its own input method; sometimes several languages which use the same
+characters can share one input method.  A few languages support several
+input methods.
+
+  The simplest kind of input method works by mapping ASCII letters into
+another alphabet.  This is how the Greek and Russian input methods work.
+
+  A more powerful technique is composition: converting sequences of
+characters into one letter.  Many European input methods use composition
+to produce a single non-ASCII letter from a sequence that consists of a
+letter followed by accent characters.  For example, some methods convert
+the sequence @kbd{'a} into a single accented letter.
+
+  The input methods for syllabic scripts typically use mapping followed
+by composition.  The input methods for Thai and Korean work this way.
+First, letters are mapped into symbols for particular sounds or tone
+marks; then, sequences of these which make up a whole syllable are
+mapped into one syllable sign.
+
+  Chinese and Japanese require more complex methods.  In Chinese input
+methods, first you enter the phonetic spelling of a Chinese word (in
+input method @code{chinese-py}, among others), or a sequence of portions
+of the character (input methods @code{chinese-4corner} and
address@hidden, and others).  Since one phonetic spelling typically
+corresponds to many different Chinese characters, you must select one of
+the alternatives using special XEmacs commands.  Keys such as @kbd{C-f},
address@hidden, @kbd{C-n}, @kbd{C-p}, and digits have special definitions in
+this situation, used for selecting among the alternatives.  @key{TAB}
+displays a buffer showing all the possibilities.
+
+   In Japanese input methods, first you input a whole word using
+phonetic spelling; then, after the word is in the buffer, XEmacs
+converts it into one or more characters using a large dictionary.  One
+phonetic spelling corresponds to many differently written Japanese
+words, so you must select one of them; use @kbd{C-n} and @kbd{C-p} to
+cycle through the alternatives.
+
+  Sometimes it is useful to cut off input method processing so that the
+characters you have just entered will not combine with subsequent
+characters.  For example, in input method @code{latin-1-postfix}, the
+sequence @kbd{e '} combines to form an @samp{e} with an accent.  What if
+you want to enter them as separate characters?
+
+  One way is to type the accent twice; that is a special feature for
+entering the separate letter and accent.  For example, @kbd{e ' '} gives
+you the two characters @samp{e'}.  Another way is to type another letter
+after the @kbd{e}---something that won't combine with that---and
+immediately delete it.  For example, you could type @kbd{e e @key{DEL}
+'} to get separate @samp{e} and @samp{'}.
+
+  Another method, more general but not quite as easy to type, is to use
address@hidden C-\} between two characters to stop them from combining.  This
+is the command @kbd{C-\} (@code{toggle-input-method}) used twice.
address@hidden Input Method}.
+
+  @kbd{C-\ C-\} is especially useful inside an incremental search,
+because stops waiting for more characters to combine, and starts
+searching for what you have already entered.
+
address@hidden input-method-verbose-flag
address@hidden input-method-highlight-flag
+  The variables @code{input-method-highlight-flag} and
address@hidden control how input methods explain what
+is happening.  If @code{input-method-highlight-flag} is address@hidden,
+the partial sequence is highlighted in the buffer.  If
address@hidden is address@hidden, the list of possible
+characters to type next is displayed in the echo area (but not when you
+are in the minibuffer).
+
address@hidden Select Input Method, Mule and Fonts, Input Methods, Mule
address@hidden Selecting an Input Method
+
address@hidden @kbd
address@hidden C-\
+Enable or disable use of the selected input method.
+
address@hidden C-x @key{RET} C-\ @var{method} @key{RET}
+Select a new input method for the current buffer.
+
address@hidden C-h I @var{method} @key{RET}
address@hidden C-h C-\ @var{method} @key{RET}
address@hidden describe-input-method
address@hidden C-h I
address@hidden C-h C-\
+Describe the input method @var{method} (@code{describe-input-method}).
+By default, it describes the current input method (if any).
+
address@hidden M-x list-input-methods
+Display a list of all the supported input methods.
address@hidden table
+
address@hidden select-input-method
address@hidden current-input-method
address@hidden C-x RET C-\
+  To choose an input method for the current buffer, use @kbd{C-x
address@hidden C-\} (@code{select-input-method}).  This command reads the
+input method name with the minibuffer; the name normally starts with the
+language environment that it is meant to be used with.  The variable
address@hidden records which input method is selected.
+  
address@hidden toggle-input-method
address@hidden C-\
+  Input methods use various sequences of ASCII characters to stand for
+non-ASCII characters.  Sometimes it is useful to turn off the input
+method temporarily.  To do this, type @kbd{C-\}
+(@code{toggle-input-method}).  To reenable the input method, type
address@hidden again.
+
+  If you type @kbd{C-\} and you have not yet selected an input method,
+it prompts for you to specify one.  This has the same effect as using
address@hidden @key{RET} C-\} to specify an input method.
+
address@hidden default-input-method
+  Selecting a language environment specifies a default input method for
+use in various buffers.  When you have a default input method, you can
+select it in the current buffer by typing @kbd{C-\}.  The variable
address@hidden specifies the default input method
+(@code{nil} means there is none).
+
address@hidden quail-set-keyboard-layout
+  Some input methods for alphabetic scripts work by (in effect)
+remapping the keyboard to emulate various keyboard layouts commonly used
+for those scripts.  How to do this remapping properly depends on your
+actual keyboard layout.  To specify which layout your keyboard has, use
+the command @kbd{M-x quail-set-keyboard-layout}.
+
address@hidden list-input-methods
+  To display a list of all the supported input methods, type @kbd{M-x
+list-input-methods}.  The list gives information about each input
+method, including the string that stands for it in the mode line.
+
address@hidden Mule and Fonts, Coding Systems, Select Input Method, Mule
address@hidden Mule and Fonts
address@hidden fonts
address@hidden font registry
address@hidden font encoding
address@hidden CCL programs
+
+(This section is X11-specific.)
+
+Text in XEmacs buffers is displayed using various faces.  In addition to
+specifying properties of a face, such as font and color, there are some
+additional properties of Mule charsets that are used in text.
+
+There is currently two properties of a charset that could be adjusted by
+user: font registry and so called @dfn{ccl-program}.
+
+Font registry is a regular expression matching the font registry field
+for this character set.  For example, both the @code{ascii} and
address@hidden@code{latin-iso8859-1}} charsets use the registry 
@code{"ISO8859-1"}.
+This field is used to choose an appropriate font when the user gives a
+general font specification such as @address@hidden,
+i.e. a 14-point upright medium-weight Courier font.
+
+You can set font registry for a charset using
address@hidden function in one of your startup files.  This
+function takes two arguments: character set (as a symbol) and font
+registry (as a string).
+
address@hidden }g., for Cyrillic texts Mule uses @address@hidden
+charset with @samp{"ISO8859-5"} as a default registry, and we want to
+use @samp{"koi8-r"} instead, because fonts in that encoding are
+installed on our system.  Use:
+
address@hidden
+(set-charset-registry 'cyrillic-iso8859-5 "koi8-r")
address@hidden example
+
+(Please note that you probably also want to set font registry for
address@hidden charset so that mixed English/Cyrillic texts be displayed
+using the same font.)
+
+"CCL-programs" are a little special-purpose scripts defined within
+XEmacs or in some package.  Those scripts allow XEmacs to use fonts that
+are in different encoding from the encoding that is used by Mule for
+text in buffer.  Returning to the above example, we need to somehow tell
+XEmacs that we have different encodings of fonts and text and so it
+needs to convert characters between those encodings when displaying.
+That's what @samp{set-charset-ccl-program} function is used for.  There
+are quite a few various CCL programs defined within XEmacs, and there is
+no comprehensive list of them, so you currently have to consult sources.
address@hidden FIXME: there must be a list of CCL programs
+
+We know that there is a CCL program called @samp{ccl-encode-koi8-r-font}
+that is used exactly for needed purpose: to convert characters between
address@hidden encoding and @samp{koi8-r}.  Use:
+
address@hidden
+(set-charset-ccl-program 'cyrillic-iso8859-5 'ccl-encode-koi8-r-font)
address@hidden example
+
+There are several more uses for CCL programs, not related to fonts, but
+those uses are not described here.
+
+
address@hidden Coding Systems, Recognize Coding, Mule and Fonts, Mule
address@hidden Coding Systems
address@hidden coding systems
+
+  Users of various languages have established many more-or-less standard
+coding systems for representing them.  XEmacs does not use these coding
+systems internally; instead, it converts from various coding systems to
+its own system when reading data, and converts the internal coding
+system to other coding systems when writing data.  Conversion is
+possible in reading or writing files, in sending or receiving from the
+terminal, and in exchanging data with subprocesses.
+
+  XEmacs assigns a name to each coding system.  Most coding systems are
+used for one language, and the name of the coding system starts with the
+language name.  Some coding systems are used for several languages;
+their names usually start with @samp{iso}.  There are also special
+coding systems @code{binary} and @code{no-conversion} which do not
+convert printing characters at all.
+
+  In addition to converting various representations of non-ASCII
+characters, a coding system can perform end-of-line conversion.  XEmacs
+handles three different conventions for how to separate lines in a file:
+newline, carriage-return linefeed, and just carriage-return.
+
address@hidden @kbd
address@hidden C-h C @var{coding} @key{RET}
+Describe coding system @var{coding}.
+
address@hidden C-h C @key{RET}
+Describe the coding systems currently in use.
+
address@hidden M-x list-coding-systems
+Display a list of all the supported coding systems.
+
address@hidden C-u M-x list-coding-systems
+Display comprehensive list of specific details of all supported coding
+systems.
address@hidden table
+
address@hidden C-x @key{RET} C
address@hidden describe-coding-system
+  The command @kbd{C-x RET C} (@code{describe-coding-system}) displays
+information about particular coding systems.  You can specify a coding
+system name as argument; alternatively, with an empty argument, it
+describes the coding systems currently selected for various purposes,
+both in the current buffer and as the defaults, and the priority list
+for recognizing coding systems (@pxref{Recognize Coding}).
+
address@hidden list-coding-systems
+  To display a list of all the supported coding systems, type @kbd{M-x
+list-coding-systems}.  The list gives information about each coding
+system, including the letter that stands for it in the mode line
+(@pxref{Mode Line}).
+
+  Each of the coding systems that appear in this list---except for
address@hidden, which means no conversion of any kind---specifies how and
+whether to convert printing characters, but leaves the choice of
+end-of-line conversion to be decided based on the contents of each file.
+For example, if the file appears to use carriage-return linefeed between
+lines, that end-of-line conversion will be used.
+
+  Each of the listed coding systems has three variants which specify
+exactly what to do for end-of-line conversion:
+
address@hidden @code
address@hidden @dots{}-unix
+Don't do any end-of-line conversion; assume the file uses
+newline to separate lines.  (This is the convention normally used
+on Unix and GNU systems.)
+
address@hidden @dots{}-dos
+Assume the file uses carriage-return linefeed to separate lines,
+and do the appropriate conversion.  (This is the convention normally used
+on Microsoft systems.)
+
address@hidden @dots{}-mac
+Assume the file uses carriage-return to separate lines, and do the
+appropriate conversion.  (This is the convention normally used on the
+Macintosh system.)
address@hidden table
+
+  These variant coding systems are omitted from the
address@hidden display for brevity, since they are entirely
+predictable.  For example, the coding system @code{iso-8859-1} has
+variants @code{iso-8859-1-unix}, @code{iso-8859-1-dos} and
address@hidden
+
+  In contrast, the coding system @code{binary} specifies no character
+code conversion at all---none for non-Latin-1 byte values and none for
+end of line.  This is useful for reading or writing binary files, tar
+files, and other files that must be examined verbatim.
+
+  The easiest way to edit a file with no conversion of any kind is with
+the @kbd{M-x find-file-literally} command.  This uses @code{binary}, and
+also suppresses other XEmacs features that might convert the file
+contents before you see them.  @xref{Visiting}.
+
+  The coding system @code{no-conversion} means that the file contains
+non-Latin-1 characters stored with the internal XEmacs encoding.  It
+handles end-of-line conversion based on the data encountered, and has
+the usual three variants to specify the kind of end-of-line conversion.
+
+
address@hidden Recognize Coding, Specify Coding, Coding Systems, Mule
address@hidden Recognizing Coding Systems
+
address@hidden #### This section is out of date.  The following 
set-*-coding-system
address@hidden functions are known:
+
address@hidden set-buffer-file-coding-system 
address@hidden set-buffer-file-coding-system-for-read
address@hidden set-buffer-process-coding-system
address@hidden set-console-tty-coding-system 
address@hidden set-console-tty-input-coding-system
address@hidden set-console-tty-output-coding-system
address@hidden set-default-buffer-file-coding-system
address@hidden set-default-coding-systems    
address@hidden set-default-file-coding-system
address@hidden set-file-coding-system        
address@hidden set-file-coding-system-for-read
address@hidden set-keyboard-coding-system    
address@hidden set-pathname-coding-system    
address@hidden set-process-coding-system     
address@hidden set-process-input-coding-system
address@hidden set-process-output-coding-system
address@hidden set-terminal-coding-system    
+
address@hidden Some are marked as broken.  Agenda: (1) Update this section using
address@hidden docstrings.  Note that they may be inaccurate.  (2) Correct the
address@hidden documentation here, updating docstrings at the same time.
+
address@hidden Document this.
+
address@hidden set-language-environment-coding-systems
+
address@hidden What are these?
+
address@hidden dontusethis-set-value-file-name-coding-system-handler
address@hidden dontusethis-set-value-keyboard-coding-system-handler
address@hidden dontusethis-set-value-terminal-coding-system-handler
+
+  Most of the time, XEmacs can recognize which coding system to use for
+any given file--once you have specified your preferences.
+
+  Some coding systems can be recognized or distinguished by which byte
+sequences appear in the data.  However, there are coding systems that
+cannot be distinguished, not even potentially.  For example, there is no
+way to distinguish between Latin-1 and Latin-2; they use the same byte
+values with different meanings.
+
+  XEmacs handles this situation by means of a priority list of coding
+systems.  Whenever XEmacs reads a file, if you do not specify the coding
+system to use, XEmacs checks the data against each coding system,
+starting with the first in priority and working down the list, until it
+finds a coding system that fits the data.  Then it converts the file
+contents assuming that they are represented in this coding system.
+
+  The priority list of coding systems depends on the selected language
+environment (@pxref{Language Environments}).  For example, if you use
+French, you probably want XEmacs to prefer Latin-1 to Latin-2; if you
+use Czech, you probably want Latin-2 to be preferred.  This is one of
+the reasons to specify a language environment.
+
address@hidden prefer-coding-system
+  However, you can alter the priority list in detail with the command
address@hidden prefer-coding-system}.  This command reads the name of a coding
+system from the minibuffer, and adds it to the front of the priority
+list, so that it is preferred to all others.  If you use this command
+several times, each use adds one element to the front of the priority
+list.
+
address@hidden file-coding-system-alist
+  Sometimes a file name indicates which coding system to use for the
+file.  The variable @code{file-coding-system-alist} specifies this
+correspondence.  There is a special function
address@hidden for adding elements to this list.  For
+example, to read and write all @samp{.txt} using the coding system
address@hidden, you can execute this Lisp expression:
+
address@hidden
+(modify-coding-system-alist 'file "\\.txt\\'" 'china-iso-8bit)
address@hidden smallexample
+
address@hidden
+The first argument should be @code{file}, the second argument should be
+a regular expression that determines which files this applies to, and
+the third argument says which coding system to use for these files.
+
address@hidden coding
+  You can specify the coding system for a particular file using the
address@hidden@dots{}-*-} construct at the beginning of a file, or a local
+variables list at the end (@pxref{File Variables}).  You do this by
+defining a value for the ``variable'' named @code{coding}.  XEmacs does
+not really have a variable @code{coding}; instead of setting a variable,
+it uses the specified coding system for the file.  For example,
address@hidden: C; coding: iso-8859-1;-*-} specifies use of the
+iso-8859-1 coding system, as well as C mode.
+
address@hidden buffer-file-coding-system
+  Once XEmacs has chosen a coding system for a buffer, it stores that
+coding system in @code{buffer-file-coding-system} and uses that coding
+system, by default, for operations that write from this buffer into a
+file.  This includes the commands @code{save-buffer} and
address@hidden  If you want to write files from this buffer using
+a different coding system, you can specify a different coding system for
+the buffer using @code{set-buffer-file-coding-system} (@pxref{Specify
+Coding}).
+
+
address@hidden Specify Coding,  , Recognize Coding, Mule
address@hidden Specifying a Coding System
+
+  In cases where XEmacs does not automatically choose the right coding
+system, you can use these commands to specify one:
+
address@hidden @kbd
address@hidden C-x @key{RET} f @var{coding} @key{RET}
+Use coding system @var{coding} for the visited file
+in the current buffer.
+
address@hidden C-x @key{RET} c @var{coding} @key{RET}
+Specify coding system @var{coding} for the immediately following
+command.
+
address@hidden C-x @key{RET} k @var{coding} @key{RET}
+Use coding system @var{coding} for keyboard input.  (This feature is
+non-functional and is temporarily disabled.)
+
address@hidden C-x @key{RET} t @var{coding} @key{RET}
+Use coding system @var{coding} for terminal output.
+
address@hidden C-x @key{RET} p @var{coding} @key{RET}
+Use coding system @var{coding} for subprocess input and output
+in the current buffer.
address@hidden table
+
address@hidden C-x RET f
address@hidden set-buffer-file-coding-system
+  The command @kbd{C-x RET f} (@code{set-buffer-file-coding-system})
+specifies the file coding system for the current buffer---in other
+words, which coding system to use when saving or rereading the visited
+file.  You specify which coding system using the minibuffer.  Since this
+command applies to a file you have already visited, it affects only the
+way the file is saved.
+
address@hidden C-x RET c
address@hidden universal-coding-system-argument
+  Another way to specify the coding system for a file is when you visit
+the file.  First use the command @kbd{C-x @key{RET} c}
+(@code{universal-coding-system-argument}); this command uses the
+minibuffer to read a coding system name.  After you exit the minibuffer,
+the specified coding system is used for @emph{the immediately following
+command}.
+
+  So if the immediately following command is @kbd{C-x C-f}, for example,
+it reads the file using that coding system (and records the coding
+system for when the file is saved).  Or if the immediately following
+command is @kbd{C-x C-w}, it writes the file using that coding system.
+Other file commands affected by a specified coding system include
address@hidden C-i} and @kbd{C-x C-v}, as well as the other-window variants of
address@hidden C-f}.
+
+  In addition, if you run some file input commands with the precedent
address@hidden, you can specify coding system to read from minibuffer.  So if
+the immediately following command is @kbd{C-x C-f}, for example, it
+reads the file using that coding system (and records the coding system
+for when the file is saved).  Other file commands affected by a
+specified coding system include @kbd{C-x C-i} and @kbd{C-x C-v}, as well
+as the other-window variants of @kbd{C-x C-f}.
+
address@hidden default-buffer-file-coding-system
+  The variable @code{default-buffer-file-coding-system} specifies the
+choice of coding system to use when you create a new file.  It applies
+when you find a new file, and when you create a buffer and then save it
+in a file.  Selecting a language environment typically sets this
+variable to a good choice of default coding system for that language
+environment.
+
address@hidden C-x RET t
address@hidden set-terminal-coding-system
+  The command @kbd{C-x @key{RET} t} (@code{set-terminal-coding-system})
+specifies the coding system for terminal output.  If you specify a
+character code for terminal output, all characters output to the
+terminal are translated into that coding system.
+
+  This feature is useful for certain character-only terminals built to
+support specific languages or character sets---for example, European
+terminals that support one of the ISO Latin character sets.
+
+  By default, output to the terminal is not translated at all.
+
address@hidden C-x RET k
address@hidden set-keyboard-coding-system
+  The command @kbd{C-x @key{RET} k} (@code{set-keyboard-coding-system})
+specifies the coding system for keyboard input.  Character-code
+translation of keyboard input is useful for terminals with keys that
+send non-ASCII graphic characters---for example, some terminals designed
+for ISO Latin-1 or subsets of it.
+
+  By default, keyboard input is not translated at all.
+
+  There is a similarity between using a coding system translation for
+keyboard input, and using an input method: both define sequences of
+keyboard input that translate into single characters.  However, input
+methods are designed to be convenient for interactive use by humans, and
+the sequences that are translated are typically sequences of ASCII
+printing characters.  Coding systems typically translate sequences of
+non-graphic characters.
+
+(This feature is non-functional and is temporarily disabled.)
+
address@hidden C-x RET p
address@hidden set-buffer-process-coding-system
+  The command @kbd{C-x @key{RET} p} (@code{set-buffer-process-coding-system})
+specifies the coding system for input and output to a subprocess.  This
+command applies to the current buffer; normally, each subprocess has its
+own buffer, and thus you can use this command to specify translation to
+and from a particular subprocess by giving the command in the
+corresponding buffer.
+
+  By default, process input and output are not translated at all.
+
address@hidden file-name-coding-system
+  The variable @code{file-name-coding-system} specifies a coding system
+to use for encoding file names.  If you set the variable to a coding
+system name (as a Lisp symbol or a string), XEmacs encodes file names
+using that coding system for all file operations.  This makes it
+possible to use non-Latin-1 characters in file names---or, at least,
+those non-Latin-1 characters which the specified coding system can
+encode.  By default, this variable is @code{nil}, which implies that you
+cannot use non-Latin-1 characters in file names.
+
address@hidden Major Modes, Indentation, Mule, Top
address@hidden Major Modes
address@hidden major modes
address@hidden TAB
address@hidden DEL
address@hidden LFD
+
+  Emacs has many different @dfn{major modes}, each of which customizes
+Emacs for editing text of a particular sort.  The major modes are mutually
+exclusive;  at any time, each buffer has one major mode.  The mode line
+normally contains the name of the current major mode in parentheses.
address@hidden Line}.
+
+  The least specialized major mode is called @dfn{Fundamental mode}.  This
+mode has no mode-specific redefinitions or variable settings.  Each
+Emacs command behaves in its most general manner, and each option is in its
+default state.  For editing any specific type of text, such as Lisp code or
+English text, you should switch to the appropriate major mode, such as Lisp
+mode or Text mode.
+
+  Selecting a major mode changes the meanings of a few keys to become
+more specifically adapted to the language being edited.  @key{TAB},
address@hidden, and @key{LFD} are changed frequently.  In addition, commands
+which handle comments use the mode to determine how to delimit comments.
+Many major modes redefine the syntactical properties of characters
+appearing in the buffer.  @xref{Syntax}.
+
+  The major modes fall into three major groups.  Lisp mode (which has
+several variants), C mode, and Muddle mode are for specific programming
+languages.  Text mode, Nroff mode, @TeX{} mode, and Outline mode are for
+editing English text.  The remaining major modes are not intended for use
+on users' files; they are used in buffers created by Emacs for specific
+purposes and include Dired mode for buffers made by Dired (@pxref{Dired}),
+Mail mode for buffers made by @kbd{C-x m} (@pxref{Sending Mail}), and Shell
+mode for buffers used for communicating with an inferior shell process
+(@pxref{Interactive Shell}).
+
+  Most programming language major modes specify that only blank lines
+separate paragraphs.  This is so that the paragraph commands remain useful.
address@hidden  They also cause Auto Fill mode to use the definition of
address@hidden to indent the new lines it creates.  This is because most lines
+in a program are usually indented.  @xref{Indentation}.
+
address@hidden
+* Choosing Modes::     How major modes are specified or chosen.
address@hidden menu
+
address@hidden Choosing Modes,,Major Modes,Major Modes
address@hidden Choosing Major Modes
+
+  You can select a major mode explicitly for the current buffer, but
+most of the time Emacs determines which mode to use based on the file
+name or some text in the file.
+
+  Use a @kbd{M-x} command to explicitly select a new major mode.  Add
address@hidden to the name of a major mode to get the name of a command to
+select that mode.  For example, to enter Lisp mode, execute @kbd{M-x
+lisp-mode}.
+
address@hidden auto-mode-alist
+  When you visit a file, Emacs usually chooses the right major mode
+based on the file's name.  For example, files whose names end in
address@hidden are edited in C mode.  The variable @code{auto-mode-alist}
+controls the correspondence between file names and major mode.  Its value
+is a list in which each element has the form:
+
address@hidden
+(@var{regexp} . @var{mode-function})
address@hidden example
+
address@hidden
+For example, one element normally found in the list has the form
address@hidden(@t{"\\.c$"} . c-mode)}. It is responsible for selecting C mode
+for files whose names end in @file{.c}.  (Note that @samp{\\} is needed in
+Lisp syntax to include a @samp{\} in the string, which is needed to
+suppress the special meaning of @samp{.} in regexps.)  The only practical
+way to change this variable is with Lisp code.
+
+  You can specify which major mode should be used for editing a certain
+file by a special sort of text in the first non-blank line of the file.
+The mode name should appear in this line both preceded and followed by
address@hidden  Other text may appear on the line as well.  For example,
+
address@hidden
+;-*-Lisp-*-
address@hidden example
+
address@hidden
+tells Emacs to use Lisp mode.  Note how the semicolon is used to make Lisp
+treat this line as a comment.  Such an explicit specification overrides any
+default mode based on the file name.
+
+  Another format of mode specification is:
+
address@hidden
+-*-Mode: @var{modename};-*-
address@hidden example
+
address@hidden
+which allows other things besides the major mode name to be specified.
+However, Emacs does not look for anything except the mode name.
+
+The major mode can also be specified in a local variables list.
address@hidden Variables}.
+
address@hidden default-major-mode
+  When you visit a file that does not specify a major mode to use, or
+when you create a new buffer with @kbd{C-x b}, Emacs uses the major mode
+specified by the variable @code{default-major-mode}.  Normally this
+value is the symbol @code{fundamental-mode}, which specifies Fundamental
+mode.  If @code{default-major-mode} is @code{nil}, the major mode is
+taken from the previously selected buffer.
+
address@hidden Indentation, Text, Major Modes, Top
address@hidden Indentation
address@hidden indentation
+
address@hidden WideCommands
address@hidden @kbd
address@hidden @key{TAB}
+Indent current line ``appropriately'' in a mode-dependent fashion.
address@hidden @key{LFD}
+Perform @key{RET} followed by @key{TAB} (@code{newline-and-indent}).
address@hidden M-^
+Merge two lines (@code{delete-indentation}).  This would cancel out
+the effect of @key{LFD}.
address@hidden C-M-o
+Split line at point; text on the line after point becomes a new line
+indented to the same column that it now starts in (@code{split-line}).
address@hidden M-m
+Move (forward or back) to the first non-blank character on the current
+line (@code{back-to-indentation}).
address@hidden C-M-\
+Indent several lines to same column (@code{indent-region}).
address@hidden C-x @key{TAB}
+Shift block of lines rigidly right or left (@code{indent-rigidly}).
address@hidden M-i
+Indent from point to the next prespecified tab stop column
+(@code{tab-to-tab-stop}).
address@hidden M-x indent-relative
+Indent from point to under an indentation point in the previous line.
address@hidden table
+
address@hidden TAB
address@hidden indentation
+  Most programming languages have some indentation convention.  For Lisp
+code, lines are indented according to their nesting in parentheses.  The
+same general idea is used for C code, though details differ.
+
+   Use the @key{TAB} command to indent a line whatever the language.
+Each major mode defines this command to perform indentation appropriate
+for the particular language.  In Lisp mode, @key{TAB} aligns a line
+according to its depth in parentheses.  No matter where in the line you
+are when you type @key{TAB}, it aligns the line as a whole.  In C mode,
address@hidden implements a subtle and sophisticated indentation style that
+knows about many aspects of C syntax.
+
address@hidden TAB
+  In Text mode, @key{TAB} runs the command @code{tab-to-tab-stop}, which
+indents to the next tab stop column.  You can set the tab stops with
address@hidden edit-tab-stops}.
+
address@hidden
+* Indentation Commands:: Various commands and techniques for indentation.
+* Tab Stops::            You can set arbitrary "tab stops" and then
+                         indent to the next tab stop when you want to.
+* Just Spaces::          You can request indentation using just spaces.
address@hidden menu
+
address@hidden Indentation Commands, Tab Stops, Indentation, Indentation
address@hidden Indentation Commands and Techniques
address@hidden ??? Explain what Emacs has instead of space-indent-flag.
+
+  If you just want to insert a tab character in the buffer, you can type
address@hidden @key{TAB}}.
+
address@hidden M-m
address@hidden back-to-indentation
+  To move over the indentation on a line, type @kbd{Meta-m}
+(@code{back-to-indentation}).  This command, given anywhere on a line,
+positions point at the first non-blank character on the line.
+
+  To insert an indented line before the current line, type @kbd{C-a C-o
address@hidden  To make an indented line after the current line, use
address@hidden @key{LFD}}.
+
address@hidden C-M-o
address@hidden split-line
+  @kbd{C-M-o} (@code{split-line}) moves the text from point to the end of
+the line vertically down, so that the current line becomes two lines.
address@hidden first moves point forward over any spaces and tabs.  Then it
+inserts after point a newline and enough indentation to reach the same
+column point is on.  Point remains before the inserted newline; in this
+regard, @kbd{C-M-o} resembles @kbd{C-o}.
+
address@hidden M-\
address@hidden M-^
address@hidden delete-horizontal-space
address@hidden delete-indentation
+  To join two lines cleanly, use the @kbd{Meta-^}
+(@code{delete-indentation}) command to delete the indentation at the
+front of the current line, and the line boundary as well.  Empty spaces
+are replaced by a single space, or by no space if at the beginning of a
+line, before a close parenthesis, or after an open parenthesis.  
+To delete just the indentation of a line, go to the beginning of the 
+line and use @kbd{Meta-\} (@code{delete-horizontal-space}), which 
+deletes all spaces and tabs around the cursor.
+
address@hidden C-M-\
address@hidden C-x TAB
address@hidden indent-region
address@hidden indent-rigidly
+  There are also commands for changing the indentation of several lines at
+once.  @kbd{Control-Meta-\} (@code{indent-region}) gives each line which
+begins in the region the ``usual'' indentation by invoking @key{TAB} at the
+beginning of the line.  A numeric argument specifies the column to indent
+to.  Each line is shifted left or right so that its first non-blank
+character appears in that column.  @kbd{C-x @key{TAB}}
+(@code{indent-rigidly}) moves all the lines in the region right by its
+argument (left, for negative arguments).  The whole group of lines moves
+rigidly sideways, which is how the command gets its address@hidden
+
address@hidden indent-relative
+  @kbd{M-x indent-relative} indents at point based on the previous line
+(actually, the last non-empty line.)  It inserts whitespace at point, moving
+point, until it is underneath an indentation point in the previous line.
+An indentation point is the end of a sequence of whitespace or the end of
+the line.  If point is farther right than any indentation point in the
+previous line, the whitespace before point is deleted and the first
+indentation point then applicable is used.  If no indentation point is
+applicable even then, @code{tab-to-tab-stop} is run (see next section).
+
+  @code{indent-relative} is the definition of @key{TAB} in Indented Text
+mode.  @xref{Text}.
+
address@hidden Tab Stops, Just Spaces, Indentation Commands, Indentation
address@hidden Tab Stops
+
address@hidden M-i
address@hidden tab-to-tab-stop
+  For typing in tables, you can use Text mode's definition of @key{TAB},
address@hidden  This command inserts indentation before point,
+enough to reach the next tab stop column.  Even if you are not in Text mode,
+this function is associated with @kbd{M-i} anyway.
+
address@hidden edit-tab-stops
address@hidden edit-tab-stops-note-changes
address@hidden C-c C-c (Edit Tab Stops)
address@hidden tab-stop-list
+  You can arbitrarily set the tab stops used by @kbd{M-i}.  They are
+stored as a list of column-numbers in increasing order in the variable
address@hidden
+
+  The convenient way to set the tab stops is using @kbd{M-x edit-tab-stops},
+which creates and selects a buffer containing a description of the tab stop
+settings.  You can edit this buffer to specify different tab stops, and
+then type @kbd{C-c C-c} to make those new tab stops take effect.  In the
+tab stop buffer, @kbd{C-c C-c} runs the function
address@hidden rather than the default
address@hidden  @code{edit-tab-stops} records which buffer was current
+when you invoked it, and stores the tab stops in that buffer.  Normally
+all buffers share the same tab stops and changing them in one buffer
+affects all.  If you make @code{tab-stop-list} local in one
+buffer @code{edit-tab-stops} in that buffer edits only the local
+settings.
+
+  Below is the text representing ordinary tab stops every eight columns:
+
address@hidden
+        :       :       :       :       :       :
+0         1         2         3         4
+0123456789012345678901234567890123456789012345678
+To install changes, type C-c C-c
address@hidden example
+
+  The first line contains a colon at each tab stop.  The remaining lines
+help you see where the colons are and tell you what to do.
+
+  Note that the tab stops that control @code{tab-to-tab-stop} have nothing
+to do with displaying tab characters in the buffer.  @xref{Display Vars},
+for more information on that.
+
address@hidden Just Spaces,, Tab Stops, Indentation
address@hidden Tabs vs. Spaces
+
address@hidden indent-tabs-mode
+  Emacs normally uses both tabs and spaces to indent lines.  If you prefer,
+all indentation can be made from spaces only.  To request this, set
address@hidden to @code{nil}.  This is a per-buffer variable;
+altering the variable affects only the current buffer, but there is a
+default value which you can change as well.  @xref{Locals}.
+
address@hidden tabify
address@hidden untabify
+  There are also commands to convert tabs to spaces or vice versa, always
+preserving the columns of all non-blank text.  @kbd{M-x tabify} scans the
+region for sequences of spaces, and converts sequences of at least three
+spaces to tabs if that is possible without changing indentation.  @kbd{M-x
+untabify} changes all tabs in the region to corresponding numbers of spaces.
+
address@hidden Text, Programs, Indentation, Top
address@hidden Commands for Human Languages
address@hidden text
+
+  The term @dfn{text} has two widespread meanings in our area of the
+computer field.  One is data that is a sequence of characters.  In this
+sense of the word any file that you edit with Emacs is text.  The other
+meaning is more restrictive: a sequence of characters in a human
+language for humans to read (possibly after processing by a text
+formatter), as opposed to a program or commands for a program.
+
+  Human languages have syntactic and stylistic conventions that editor
+commands should support or use to advantage: conventions involving
+words, sentences, paragraphs, and capital letters.  This chapter describes
+Emacs commands for all these things.  There are also commands for
address@hidden, or rearranging paragraphs into lines of approximately equal
+length.  The commands for moving over and killing words, sentences,
+and paragraphs, while intended primarily for editing text, are also often
+useful for editing programs.
+
+  Emacs has several major modes for editing human language text.
+If a file contains plain text, use Text mode, which customizes
+Emacs in small ways for the syntactic conventions of text.  For text which
+contains embedded commands for text formatters, Emacs has other major modes,
+each for a particular text formatter.  Thus, for input to @TeX{}, you can
+use @TeX{} mode; for input to nroff, Nroff mode.
+
address@hidden
+* Text Mode::   The major modes for editing text files.
+* Nroff Mode::  The major mode for editing input to the formatter nroff.
+* TeX Mode::    The major modes for editing input to the formatter TeX.
+* Outline Mode:: The major mode for editing outlines.
+* Words::       Moving over and killing words.
+* Sentences::   Moving over and killing sentences.
+* Paragraphs:: Moving over paragraphs.
+* Pages::      Moving over pages.
+* Filling::     Filling or justifying text
+* Case::        Changing the case of text
address@hidden menu
+
address@hidden Text Mode, Words, Text, Text
address@hidden Text Mode
+
address@hidden tab-to-tab-stop
address@hidden edit-tab-stops
address@hidden Text mode
address@hidden TAB
address@hidden text-mode
+  You should use Text mode---rather than Fundamental or Lisp mode---to
+edit files of text in a human language.  Invoke @kbd{M-x text-mode} to
+enter Text mode.  In Text mode, @key{TAB} runs the function
address@hidden, which allows you to use arbitrary tab stops set
+with @kbd{M-x edit-tab-stops} (@pxref{Tab Stops}).  Features concerned
+with comments in programs are turned off unless they are explicitly invoked.
+The syntax table is changed so that periods are not considered part of a
+word, while apostrophes, backspaces and underlines are.
+
address@hidden indented-text-mode
+  A similar variant mode is Indented Text mode, intended for editing
+text in which most lines are indented.  This mode defines @key{TAB} to
+run @code{indent-relative} (@pxref{Indentation}), and makes Auto Fill
+indent the lines it creates.  As a result, a line made by Auto Filling,
+or by @key{LFD}, is normally indented just like the previous line.  Use
address@hidden indented-text-mode} to select this mode.
+
address@hidden text-mode-hook
+  Entering Text mode or Indented Text mode calls the value of the
+variable @code{text-mode-hook} with no arguments, if that value exists
+and is not @code{nil}.  This value is also called when modes related to
+Text mode are entered; this includes Nroff mode, @TeX{} mode, Outline
+mode, and Mail mode.  Your hook can look at the value of
address@hidden to see which of these modes is actually being entered.
+
+  Two modes similar to Text mode are of use for editing text that is to
+be passed through a text formatter before achieving its final readable form.
+
address@hidden
+* Nroff Mode::  The major mode for editing input to the formatter nroff.
+* TeX Mode::    The major modes for editing input to the formatter TeX.
+
+
+  Another similar mode is used for editing outlines.  It allows you
+to view the text at various levels of detail.  You can view either
+the outline headings alone or both headings and text; you can also
+hide some of the headings at lower levels from view to make the high
+level structure more visible.
+
+
+* Outline Mode:: The major mode for editing outlines.
address@hidden menu
+
address@hidden Nroff Mode, TeX Mode, Text Mode, Text Mode
address@hidden Nroff Mode
+
address@hidden nroff
address@hidden nroff-mode
+  Nroff mode is a mode like Text mode but modified to handle nroff
+commands present in the text.  Invoke @kbd{M-x nroff-mode} to enter this
+mode.  Nroff mode differs from Text mode in only a few ways.  All nroff
+command lines are considered paragraph separators, so that filling never
+garbles the nroff commands.  Pages are separated by @samp{.bp} commands.
+Comments start with backslash-doublequote.  There are also three special
+commands that are not available in Text mode:
+
address@hidden forward-text-line
address@hidden backward-text-line
address@hidden count-text-lines
address@hidden M-n
address@hidden M-p
address@hidden M-?
address@hidden @kbd
address@hidden M-n
+Move to the beginning of the next line that isn't an nroff command
+(@code{forward-text-line}).  An argument is a repeat count.
address@hidden M-p
+Like @kbd{M-n} but move up (@code{backward-text-line}).
address@hidden M-?
+Prints in the echo area the number of text lines (lines that are not
+nroff commands) in the region (@code{count-text-lines}).
address@hidden table
+
address@hidden electric-nroff-mode
+  The other feature of Nroff mode is Electric Nroff newline mode.  
+This is a minor mode that you can turn on or off with
address@hidden electric-nroff-mode} (@pxref{Minor Modes}).  When the mode is
+on and you use @key{RET} to end a line containing an nroff command
+that opens a kind of grouping, Emacs automatically inserts the matching
+nroff command to close that grouping on the following line.  For
+example, if you are at the beginning of a line and type @kbd{.@:(b
address@hidden, the matching command @samp{.)b} will be inserted on a new
+line following point.
+
address@hidden nroff-mode-hook
+  Entering Nroff mode calls the value of the variable
address@hidden with no arguments, if that value exists and is not
address@hidden; then it does the same with the variable
address@hidden
+
address@hidden TeX Mode, Outline Mode, Nroff Mode, Text Mode
address@hidden @TeX{} Mode
address@hidden TeX
address@hidden LaTeX
address@hidden TeX-mode
address@hidden tex-mode
address@hidden plain-tex-mode
address@hidden LaTeX-mode
address@hidden plain-TeX-mode
address@hidden latex-mode
+
+  @TeX{} is a powerful text formatter written by Donald Knuth; like GNU
+Emacs, it is free.  address@hidden is a simplified input format for @TeX{},
+implemented by @TeX{} macros.  It is part of @address@hidden
+
+  Emacs has a special @TeX{} mode for editing @TeX{} input files.
+It provides facilities for checking the balance of delimiters and for
+invoking @TeX{} on all or part of the file.
+
+  @TeX{} mode has two variants, Plain @TeX{} mode and address@hidden mode,
+which are two distinct major modes that differ only slightly.  These
+modes are designed for editing the two different input formats.  The
+command @kbd{M-x tex-mode} looks at the contents of a buffer to
+determine whether it appears to be address@hidden input or not; it then
+selects the appropriate mode.  If it can't tell which is right (e.g.,
+the buffer is empty), the variable @code{tex-default-mode} controls
+which mode is used.
+
+  The commands @kbd{M-x plain-tex-mode} and @kbd{M-x latex-mode}
+explicitly select one of the variants of @TeX{} mode.  Use these
+commands when @kbd{M-x tex-mode} does not guess address@hidden
+
address@hidden
+* Editing: TeX Editing.   Special commands for editing in TeX mode.
+* Printing: TeX Print.    Commands for printing part of a file with TeX.
address@hidden menu
+
+  @TeX{} for Unix systems can be obtained from the University of Washington
+for a distribution fee.
+
+  To order a full distribution, send $140.00 for a 1/2 inch
+9-track tape, $165.00 for two 4-track 1/4 inch cartridge tapes
+(foreign sites $150.00, for 1/2 inch, $175.00 for 1/4 inch, to cover
+the extra postage) payable to the University of Washington to:
+
address@hidden
+The Director
+Northwest Computer Support Group,  DW-10
+University of Washington
+Seattle, Washington 98195
address@hidden display
+
address@hidden
+Purchase orders are acceptable, but there is an extra charge of
+$10.00 to pay for processing charges. (The total cost comes to $150 
+for domestic sites, $175 for foreign sites).
+
+  The normal distribution is a tar tape, blocked 20, 1600 bpi, on an
+industry standard 2400 foot half-inch reel.  The physical format for
+the 1/4 inch streamer cartridges uses QIC-11, 8000 bpi, 4-track
+serpentine recording for the SUN.  Also, SystemV tapes can be written
+in cpio format, blocked 5120 bytes, ASCII headers.
+
address@hidden TeX Editing,TeX Print,TeX Mode,TeX Mode
address@hidden @TeX{} Editing Commands
+
+  Here are the special commands provided in @TeX{} mode for editing the
+text of the file.
+
address@hidden @kbd
address@hidden "
+Insert, according to context, either @samp{``} or @samp{"} or
address@hidden''} (@code{TeX-insert-quote}).
address@hidden @key{LFD}
+Insert a paragraph break (two newlines) and check the previous
+paragraph for unbalanced braces or dollar signs
+(@address@hidden).
address@hidden M-x validate-tex-buffer
+Check each paragraph in the buffer for unbalanced braces or dollar signs.
address@hidden C-c @{
+Insert @address@hidden@}} and position point between them 
(@code{tex-insert-braces}).
address@hidden C-c @}
+Move forward past the next unmatched close brace (@code{up-list}).
address@hidden C-c C-e
+Close a block for address@hidden (@code{tex-close-latex-block}).
address@hidden table
+
address@hidden tex-insert-quote
address@hidden " (TeX mode)
+  In @TeX{}, the character @samp{"} is not normally used; you use @samp{``}
+to start a quotation and @samp{''} to end one.  @TeX{} mode defines the key
address@hidden"} to insert @samp{``} after whitespace or an open brace, @samp{"}
+after a backslash, or @samp{''} otherwise.  This is done by the command
address@hidden  If you need the character @samp{"} itself in
+unusual contexts, use @kbd{C-q} to insert it.  Also, @kbd{"} with a
+numeric argument always inserts that number of @samp{"} characters.
+
+  In @TeX{} mode, @samp{$} has a special syntax code which attempts to
+understand the way @TeX{} math mode delimiters match.  When you insert a
address@hidden that is meant to exit math mode, the position of the matching
address@hidden that entered math mode is displayed for a second.  This is the
+same feature that displays the open brace that matches a close brace that
+is inserted.  However, there is no way to tell whether a @samp{$} enters
+math mode or leaves it; so when you insert a @samp{$} that enters math
+mode, the previous @samp{$} position is shown as if it were a match, even
+though they are actually unrelated.
+
address@hidden tex-insert-braces
address@hidden C-c @{ (TeX mode)
address@hidden up-list
address@hidden C-c @} (TeX mode)
+  If you prefer to keep braces balanced at all times, you can use @kbd{C-c @{}
+(@code{tex-insert-braces}) to insert a pair of braces.  It leaves point
+between the two braces so you can insert the text that belongs inside.
+Afterward, use the command @kbd{C-c @}} (@code{up-list}) to move forward
+past the close brace.
+
address@hidden validate-tex-buffer
address@hidden tex-terminate-paragraph
address@hidden LFD (TeX mode)
+  There are two commands for checking the matching of braces.  @key{LFD}
+(@code{tex-terminate-paragraph}) checks the paragraph before point, and
+inserts two newlines to start a new paragraph.  It prints a message in the
+echo area if any mismatch is found.  @kbd{M-x validate-tex-buffer} checks
+the entire buffer, paragraph by paragraph.  When it finds a paragraph that
+contains a mismatch, it displays point at the beginning of the paragraph
+for a few seconds and pushes a mark at that spot.  Scanning continues
+until the whole buffer has been checked or until you type another key.
+The positions of the last several paragraphs with mismatches can be
+found in the mark ring (@pxref{Mark Ring}).
+
+  Note that square brackets and parentheses, not just braces, are
+matched in @TeX{} mode.  This is wrong if you want to  check @TeX{} syntax.
+However, parentheses and square brackets are likely to be used in text as
+matching delimiters and it is useful for the various motion commands and
+automatic match display to work with them.
+
address@hidden tex-close-latex-block
address@hidden C-c C-f (LaTeX mode)
+  In address@hidden input, @samp{\begin} and @samp{\end} commands must balance.
+After you insert a @samp{\begin}, use @kbd{C-c C-f}
+(@code{tex-close-latex-block}) to insert automatically a matching
address@hidden (on a new line following the @samp{\begin}).  A blank line is
+inserted between the two, and point is left address@hidden
+
address@hidden TeX Print,,TeX Editing,TeX Mode
address@hidden @TeX{} Printing Commands
+
+  You can invoke @TeX{} as an inferior of Emacs on either the entire
+contents of the buffer or just a region at a time.  Running @TeX{} in
+this way on just one chapter is a good way to see what your changes
+look like without taking the time to format the entire file.
+
address@hidden @kbd
address@hidden C-c C-r
+Invoke @TeX{} on the current region, plus the buffer's header
+(@code{tex-region}).
address@hidden C-c C-b
+Invoke @TeX{} on the entire current buffer (@code{tex-buffer}).
address@hidden C-c C-l
+Recenter the window showing output from the inferior @TeX{} so that
+the last line can be seen (@code{tex-recenter-output-buffer}).
address@hidden C-c C-k
+Kill the inferior @TeX{} (@code{tex-kill-job}).
address@hidden C-c C-p
+Print the output from the last @kbd{C-c C-r} or @kbd{C-c C-b} command
+(@code{tex-print}).
address@hidden C-c C-q
+Show the printer queue (@code{tex-show-print-queue}).
address@hidden table
+
address@hidden tex-buffer
address@hidden C-c C-b (TeX mode)
address@hidden tex-print
address@hidden C-c C-p (TeX mode)
address@hidden tex-show-print-queue
address@hidden C-c C-q (TeX mode)
+  You can pass the current buffer through an inferior @TeX{} using
address@hidden C-b} (@code{tex-buffer}).  The formatted output appears in a file
+in @file{/tmp}; to print it, type @kbd{C-c C-p} (@code{tex-print}).
+Afterward use @kbd{C-c C-q} (@code{tex-show-print-queue}) to view the
+progress of your output towards being printed.
+
address@hidden tex-kill-job
address@hidden C-c C-k (TeX mode)
address@hidden tex-recenter-output-buffer
address@hidden C-c C-l (TeX mode)
+  The console output from @TeX{}, including any error messages, appears in a
+buffer called @samp{*TeX-shell*}.  If @TeX{} gets an error, you can switch
+to this buffer and feed it input (this works as in Shell mode;
address@hidden Shell}).  Without switching to this buffer, you can scroll
+it so that its last line is visible by typing @kbd{C-c C-l}.
+
+  Type @kbd{C-c C-k} (@code{tex-kill-job}) to kill the @TeX{} process if
+you see that its output is no longer useful.  Using @kbd{C-c C-b} or
address@hidden C-r} also kills any @TeX{} process still address@hidden
+
address@hidden tex-region
address@hidden C-c C-r (TeX mode)
+  You can pass an arbitrary region through an inferior @TeX{} by typing
address@hidden C-r} (@code{tex-region}).  This is tricky, however, because
+most files of @TeX{} input contain commands at the beginning to set
+parameters and define macros.  Without them, no later part of the file
+will format correctly.  To solve this problem, @kbd{C-c C-r} allows you
+to designate a part of the file as containing essential commands; it is
+included before the specified region as part of the input to @TeX{}.
+The designated part of the file is called the @dfn{header}.
+
address@hidden header (TeX mode)
+  To indicate the bounds of the header in Plain @TeX{} mode, insert two
+special strings in the file: @samp{%**start of header} before the
+header, and @samp{%**end of header} after it.  Each string must appear
+entirely on one line, but there may be other text on the line before or
+after.  The lines containing the two strings are included in the header.
+If @samp{%**start of header} does not appear within the first 100 lines of
+the buffer, @kbd{C-c C-r} assumes there is no header.
+
+  In address@hidden mode, the header begins with @samp{\documentstyle} and ends
+with @address@hidden@address@hidden  These are commands that address@hidden 
requires
+you to use, so you don't need to do anything special to identify the
+header.
+
address@hidden TeX-mode-hook
address@hidden LaTeX-mode-hook
address@hidden plain-TeX-mode-hook
+  When you enter either kind of @TeX{} mode, Emacs calls with no
+arguments the value of the variable @code{text-mode-hook}, if that value
+exists and is not @code{nil}.  Emacs then calls the variable
address@hidden and either @code{plain-TeX-mode-hook} or
address@hidden under the same conditions.
+
address@hidden Outline Mode,, TeX Mode, Text Mode
address@hidden Outline Mode
address@hidden outlines
address@hidden selective display
address@hidden invisible lines
+
+  Outline mode is a major mode similar to Text mode but intended for editing
+outlines.  It allows you to make parts of the text temporarily invisible
+so that you can see just the overall structure of the outline.  Type
address@hidden outline-mode} to turn on Outline mode in the current buffer.
+
address@hidden outline-mode-hook
+  When you enter Outline mode, Emacs calls with no arguments the value
+of the variable @code{text-mode-hook}, if that value exists and is not
address@hidden; then it does the same with the variable
address@hidden
+
+  When a line is invisible in outline mode, it does not appear on the
+screen.  The screen appears exactly as if the invisible line
+were deleted, except that an ellipsis (three periods in a row) appears
+at the end of the previous visible line (only one ellipsis no matter
+how many invisible lines follow).
+
+  All editing commands treat the text of the invisible line as part of the
+previous visible line.  For example, @kbd{C-n} moves onto the next visible
+line.  Killing an entire visible line, including its terminating newline,
+really kills all the following invisible lines as well; yanking
+everything back yanks the invisible lines and they remain invisible.
+
address@hidden
+* Format: Outline Format.        What the text of an outline looks like.
+* Motion: Outline Motion.        Special commands for moving through outlines.
+* Visibility: Outline Visibility. Commands to control what is visible.
address@hidden menu
+
address@hidden Outline Format,Outline Motion,Outline Mode, Outline Mode
address@hidden Format of Outlines
+
address@hidden heading lines (Outline mode)
address@hidden body lines (Outline mode)
+  Outline mode assumes that the lines in the buffer are of two types:
address@hidden lines} and @dfn{body lines}.  A heading line represents a
+topic in the outline.  Heading lines start with one or more stars; the
+number of stars determines the depth of the heading in the outline
+structure.  Thus, a heading line with one star is a major topic; all the
+heading lines with two stars between it and the next one-star heading
+are its subtopics; and so on.  Any line that is not a heading line is a
+body line.  Body lines belong to the preceding heading line.  Here is an
+example:
+
address@hidden
+* Food
+
+This is the body,
+which says something about the topic of food.
+
+** Delicious Food
+
+This is the body of the second-level header.
+
+** Distasteful Food
+
+This could have
+a body too, with
+several lines.
+
+*** Dormitory Food
+
+* Shelter
+
+A second first-level topic with its header line.
address@hidden example
+
+  A heading line together with all following body lines is called
+collectively an @dfn{entry}.  A heading line together with all following
+deeper heading lines and their body lines is called a @dfn{subtree}.
+
address@hidden outline-regexp
+ You can customize the criterion for distinguishing heading lines by
+setting the variable @code{outline-regexp}.  Any line whose beginning
+has a match for this regexp is considered a heading line.  Matches that
+start within a line (not at the beginning) do not count.  The length of
+the matching text determines the level of the heading; longer matches
+make a more deeply nested level.  Thus, for example, if a text formatter
+has commands @samp{@@chapter}, @samp{@@section} and @samp{@@subsection}
+to divide the document into chapters and sections, you can make those
+lines count as heading lines by setting @code{outline-regexp} to
address@hidden"@@chap\\|@@\\(sub\\)*section"}.  Note the trick: the two words
address@hidden and @samp{section} are the same length, but by defining
+the regexp to match only @samp{chap} we ensure that the length of the
+text matched on a chapter heading is shorter, so that Outline mode will
+know that sections are contained in chapters.  This works as long as no
+other command starts with @samp{@@chap}.
+
+  Outline mode makes a line invisible by changing the newline before it
+into an ASCII Control-M (code 015).  Most editing commands that work on
+lines treat an invisible line as part of the previous line because,
+strictly speaking, it @i{is} part of that line, since there is no longer a
+newline in between.  When you save the file in Outline mode, Control-M
+characters are saved as newlines, so the invisible lines become ordinary
+lines in the file.  Saving does not change the visibility status of a
+line inside Emacs.
+
address@hidden Outline Motion,Outline Visibility,Outline Format,Outline Mode
address@hidden Outline Motion Commands
+
+   Some special commands in Outline mode move backward and forward to
+heading lines.
+
address@hidden @kbd
address@hidden C-c C-n
+Move point to the next visible heading line
+(@code{outline-next-visible-heading}).
address@hidden C-c C-p
+Move point to the previous visible heading line @*
+(@code{outline-previous-visible-heading}).
address@hidden C-c C-f
+Move point to the next visible heading line at the same level
+as the one point is on (@code{outline-forward-same-level}).
address@hidden C-c C-b
+Move point to the previous visible heading line at the same level
+(@code{outline-backward-same-level}).
address@hidden C-c C-u
+Move point up to a lower-level (more inclusive) visible heading line
+(@code{outline-up-heading}).
address@hidden table
+
address@hidden outline-next-visible-heading
address@hidden outline-previous-visible-heading
address@hidden C-c C-n (Outline mode)
address@hidden C-c C-p (Outline mode)
+  @kbd{C-c C-n} (@code{next-visible-heading}) moves down to the next
+heading line.  @kbd{C-c C-p} (@code{previous-visible-heading}) moves
+similarly backward.  Both accept numeric arguments as repeat counts.  The
+names emphasize that invisible headings are skipped, but this is not really
+a special feature.  All editing commands that look for lines ignore the
+invisible lines address@hidden
+
address@hidden outline-up-heading
address@hidden outline-forward-same-level
address@hidden outline-backward-same-level
address@hidden C-c C-f (Outline mode)
address@hidden C-c C-b (Outline mode)
address@hidden C-c C-u (Outline mode)
+  More advanced motion commands understand the levels of headings.
+The commands @kbd{C-c C-f} (@code{outline-forward-same-level}) and
address@hidden C-b} (@code{outline-backward-same-level}) move from one
+heading line to another visible heading at the same depth in
+the outline.  @kbd{C-c C-u} (@code{outline-up-heading}) moves
+backward to another heading that is less deeply nested.
+
address@hidden Outline Visibility,,Outline Motion,Outline Mode
address@hidden Outline Visibility Commands
+
+  The other special commands of outline mode are used to make lines visible
+or invisible.  Their names all start with @code{hide} or @code{show}.
+Most of them exist as pairs of opposites.  They are not undoable; instead,
+you can undo right past them.  Making lines visible or invisible is simply
+not recorded by the undo mechanism.
+
address@hidden @kbd
address@hidden M-x hide-body
+Make all body lines in the buffer invisible.
address@hidden M-x show-all
+Make all lines in the buffer visible.
address@hidden C-c C-d
+Make everything under this heading invisible, not including this
+heading itself (@code{hide-subtree}).
address@hidden C-c C-s
+Make everything under this heading visible, including body,
+subheadings, and their bodies (@code{show-subtree}).
address@hidden M-x hide-leaves
+Make the body of this heading line, and of all its subheadings,
+invisible.
address@hidden M-x show-branches
+Make all subheadings of this heading line, at all levels, visible.
address@hidden C-c C-i
+Make immediate subheadings (one level down) of this heading line
+visible (@code{show-children}).
address@hidden M-x hide-entry
+Make this heading line's body invisible.
address@hidden M-x show-entry
+Make this heading line's body visible.
address@hidden table
+
address@hidden hide-entry
address@hidden show-entry
+  Two commands that are exact opposites are @kbd{M-x hide-entry} and
address@hidden show-entry}.  They are used with point on a heading line, and
+apply only to the body lines of that heading.  The subtopics and their
+bodies are not affected.
+
address@hidden hide-subtree
address@hidden show-subtree
address@hidden C-c C-d (Outline mode)
address@hidden C-c C-h (Outline mode)
address@hidden subtree (Outline mode)
+  Two more powerful opposites are @kbd{C-c C-d} (@code{hide-subtree}) and
address@hidden C-s} (@code{show-subtree}).  Both should be used when point is
+on a heading line, and both apply to all the lines of that heading's
address@hidden: its body, all its subheadings, both direct and indirect, and
+all of their bodies.  In other words, the subtree contains everything
+following this heading line, up to and not including the next heading of
+the same or higher address@hidden
+
address@hidden hide-leaves
address@hidden show-branches
+  Intermediate between a visible subtree and an invisible one is having
+all the subheadings visible but none of the body.  There are two commands
+for doing this, one that hides the bodies and one that
+makes the subheadings visible.  They are @kbd{M-x hide-leaves} and
address@hidden show-branches}.
+
address@hidden C-c C-i (Outline mode)
address@hidden show-children
+  A little weaker than @code{show-branches} is @kbd{C-c C-i}
+(@code{show-children}).  It makes just the direct subheadings
+visible---those one level down.  Deeper subheadings remain
address@hidden
+
address@hidden hide-body
address@hidden show-all
+  Two commands have a blanket effect on the whole file.  @kbd{M-x
+hide-body} makes all body lines invisible, so that you see just the
+outline structure.  @kbd{M-x show-all} makes all lines visible.  You can
+think of these commands as a pair of opposites even though @kbd{M-x
+show-all} applies to more than just body lines.
+
address@hidden selective-display-ellipses
+You can turn off the use of ellipses at the ends of visible lines by
+setting @code{selective-display-ellipses} to @code{nil}.  The result is
+no visible indication of the presence of invisible lines.
+
address@hidden Words, Sentences, Text Mode, Text
address@hidden Words
address@hidden words
address@hidden Meta
+
+  Emacs has commands for moving over or operating on words.  By convention,
+the keys for them are all @kbd{Meta-} characters.
+
address@hidden widecommands
address@hidden @kbd
address@hidden M-f
+Move forward over a word (@code{forward-word}).
address@hidden M-b
+Move backward over a word (@code{backward-word}).
address@hidden M-d
+Kill up to the end of a word (@code{kill-word}).
address@hidden address@hidden
+Kill back to the beginning of a word (@code{backward-kill-word}).
address@hidden M-@@
+Mark the end of the next word (@code{mark-word}).
address@hidden M-t
+Transpose two words;  drag a word forward
+or backward across other words (@code{transpose-words}).
address@hidden table
+
+  Notice how these keys form a series that parallels the
+character-based @kbd{C-f}, @kbd{C-b}, @kbd{C-d}, @kbd{C-t} and
address@hidden  @kbd{M-@@} is related to @kbd{C-@@}, which is an alias for
address@hidden@address@hidden
+
address@hidden M-f
address@hidden M-b
address@hidden forward-word
address@hidden backward-word
+  The commands @kbd{Meta-f} (@code{forward-word}) and @kbd{Meta-b}
+(@code{backward-word}) move forward and backward over words.  They are
+analogous to @kbd{Control-f} and @kbd{Control-b}, which move over single
+characters.  Like their @kbd{Control-} analogues, @kbd{Meta-f} and
address@hidden move several words if given an argument.  @kbd{Meta-f} with a
+negative argument moves backward, and @kbd{Meta-b} with a negative argument
+moves forward.  Forward motion stops after the last letter of the
+word, while backward motion stops before the first address@hidden
+
address@hidden M-d
address@hidden kill-word
+  @kbd{Meta-d} (@code{kill-word}) kills the word after point.  To be
+precise, it kills everything from point to the place @kbd{Meta-f} would
+move to.  Thus, if point is in the middle of a word, @kbd{Meta-d} kills
+just the part after point.  If some punctuation comes between point and the
+next word, it is killed along with the word.  (To kill only the
+next word but not the punctuation before it, simply type @kbd{Meta-f} to get
+to the end and kill the word backwards with @address@hidden)
address@hidden takes arguments just like @kbd{Meta-f}.
+
address@hidden backward-kill-word
address@hidden M-DEL
+  @address@hidden (@code{backward-kill-word}) kills the word before
+point.  It kills everything from point back to where @kbd{Meta-b} would
+move to.  If point is after the space in @address@hidden, BAR}}, then
address@hidden@samp{FOO, }} is killed.   To kill just @samp{FOO}, type
address@hidden Meta-d} instead of @address@hidden
+
address@hidden transposition
address@hidden M-t
address@hidden transpose-words
+  @kbd{Meta-t} (@code{transpose-words}) exchanges the word before or
+containing point with the following word.  The delimiter characters
+between the words do not move.  For example, transposing @address@hidden,
+BAR}} results in @address@hidden, FOO}} rather than @address@hidden FOO,}}.
address@hidden, for more on transposition and on arguments to
+transposition commands.
+
address@hidden M-@@
address@hidden mark-word
+  To operate on the next @var{n} words with an operation which applies
+between point and mark, you can either set the mark at point and then move
+over the words, or you can use the command @kbd{Meta-@@} (@code{mark-word})
+which does not move point but sets the mark where @kbd{Meta-f} would move
+to.  It can be given arguments just like @kbd{Meta-f}.
+
address@hidden syntax table
+  The word commands' understanding of syntax is completely controlled by
+the syntax table.  For example, any character can be declared to be a word
+delimiter.  @xref{Syntax}.
+
address@hidden Sentences, Paragraphs, Words, Text
address@hidden Sentences
address@hidden sentences
+
+  The Emacs commands for manipulating sentences and paragraphs are mostly
+on @kbd{Meta-} keys, and therefore are like the word-handling commands.
+
address@hidden @kbd
address@hidden M-a
+Move back to the beginning of the sentence (@code{backward-sentence}).
address@hidden M-e
+Move forward to the end of the sentence (@code{forward-sentence}).
address@hidden M-k
+Kill forward to the end of the sentence (@code{kill-sentence}).
address@hidden C-x @key{DEL}
+Kill back to the beginning of the sentence @*(@code{backward-kill-sentence}).
address@hidden table
+
address@hidden M-a
address@hidden M-e
address@hidden backward-sentence
address@hidden forward-sentence
+  The commands @kbd{Meta-a} and @kbd{Meta-e} (@code{backward-sentence}
+and @code{forward-sentence}) move to the beginning and end of the
+current sentence, respectively.  They resemble @kbd{Control-a} and
address@hidden, which move to the beginning and end of a line.  Unlike
+their counterparts, @kbd{Meta-a} and @kbd{Meta-e} move over successive
+sentences if repeated or given numeric arguments.  Emacs assumes
+the typist's convention is followed, and thus considers a sentence to
+end wherever there is a @samp{.}, @samp{?}, or @samp{!} followed by the
+end of a line or two spaces, with any number of @samp{)}, @samp{]},
address@hidden'}, or @samp{"} characters allowed in between.  A sentence also
+begins or ends wherever a paragraph begins or address@hidden
+
+  Neither @kbd{M-a} nor @kbd{M-e} moves past the newline or spaces beyond
+the sentence edge at which it is stopping.
+
address@hidden M-k
address@hidden C-x DEL
address@hidden kill-sentence
address@hidden backward-kill-sentence
+ @kbd{M-a} and @kbd{M-e} have a corresponding kill command, just like
address@hidden and @kbd{C-e} have @kbd{C-k}.  The command is  @kbd{M-k}
+(@code{kill-sentence}) which kills from point to the end of the
+sentence.  With minus one as an argument it kills back to the beginning
+of the sentence.  Larger arguments serve as repeat address@hidden
+
+  There is a special command, @kbd{C-x @key{DEL}}
+(@code{backward-kill-sentence}), for killing back to the beginning of a
+sentence, which is useful when you change your mind in the middle of
+composing address@hidden
+
address@hidden sentence-end
+  The variable @code{sentence-end} controls recognition of the end of a
+sentence.  It is a regexp that matches the last few characters of a
+sentence, together with the whitespace following the sentence.  Its
+normal value is:
+
address@hidden
+"[.?!][]\"')]*\\($\\|\t\\|  \\)[ \t\n]*"
address@hidden example
+
address@hidden
+This example is explained in the section on regexps.  @xref{Regexps}.
+
address@hidden Paragraphs, Pages, Sentences, Text
address@hidden Paragraphs
address@hidden paragraphs
address@hidden address@hidden
address@hidden address@hidden
address@hidden backward-paragraph
address@hidden forward-paragraph
+
+  The Emacs commands for manipulating paragraphs are also @kbd{Meta-}
+keys.
+
address@hidden @kbd
address@hidden address@hidden
+Move back to previous paragraph beginning @*(@code{backward-paragraph}).
address@hidden address@hidden
+Move forward to next paragraph end (@code{forward-paragraph}).
address@hidden M-h
+Put point and mark around this or next paragraph (@code{mark-paragraph}).
address@hidden table
+
+  @address@hidden moves to the beginning of the current or previous paragraph,
+while @address@hidden moves to the end of the current or next paragraph.
+Blank lines and text formatter command lines separate paragraphs and are
+not part of any paragraph.  An indented line starts a new paragraph.
+
+  In major modes for programs (as opposed to Text mode), paragraphs begin
+and end only at blank lines.  As a result, the paragraph commands continue to
+be useful even though there are no paragraphs per se.
+
+  When there is a fill prefix, paragraphs are delimited by all lines
+which don't start with the fill prefix.  @xref{Filling}.
+
address@hidden M-h
address@hidden mark-paragraph
+   To operate on a paragraph, you can use the command
address@hidden (@code{mark-paragraph}) to set the region around it.  This
+command puts point at the beginning and mark at the end of the paragraph
+point was in.  If point is between paragraphs (in a run of blank lines or
+at a boundary), the paragraph following point is surrounded by point and
+mark.  If there are blank lines preceding the first line of the paragraph,
+one of the blank lines is included in the region.  Thus, for example,
address@hidden C-w} kills the paragraph around or after point.
+
address@hidden paragraph-start
address@hidden paragraph-separate
+  The precise definition of a paragraph boundary is controlled by the
+variables @code{paragraph-separate} and @code{paragraph-start}.  The value
+of @code{paragraph-start} is a regexp that matches any line that
+either starts or separates paragraphs.  The value of
address@hidden is another regexp that  matches only lines
+that separate paragraphs without being part of any paragraph.  Lines that
+start a new paragraph and are contained in it must match both regexps.  For
+example, normally @code{paragraph-start} is @code{"^[ @address@hidden@t{\}f]"}
+and @code{paragraph-separate} is @code{"^[ @address@hidden"address@hidden
+
+  Normally it is desirable for page boundaries to separate paragraphs.
+The default values of these variables recognize the usual separator for
+pages.
+
address@hidden Pages, Filling, Paragraphs, Text
address@hidden Pages
+
address@hidden pages
address@hidden formfeed
+  Files are often thought of as divided into @dfn{pages} by the
address@hidden character (ASCII Control-L, octal code 014).  For
+example, if a file is printed on a line printer, each ``page'' of the
+file starts on a new page of paper.  Emacs treats a page-separator
+character just like any other character.  It can be inserted with
address@hidden C-l} or deleted with @key{DEL}.  You are free to
+paginate your file or not.  However, since pages are often meaningful
+divisions of the file, commands are provided to move over them and
+operate on them.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x [
+Move point to previous page boundary (@code{backward-page}).
address@hidden C-x ]
+Move point to next page boundary (@code{forward-page}).
address@hidden C-x C-p
+Put point and mark around this page (or another page) (@code{mark-page}).
address@hidden C-x l
+Count the lines in this page (@code{count-lines-page}).
address@hidden table
+
address@hidden C-x [
address@hidden C-x ]
address@hidden forward-page
address@hidden backward-page
+  The @kbd{C-x [} (@code{backward-page}) command moves point to
+immediately after the previous page delimiter.  If point is already
+right after a page delimiter, the command skips that one and stops at
+the previous one.  A numeric argument serves as a repeat count.  The
address@hidden ]} (@code{forward-page}) command moves forward past the next
+page delimiter.
+
address@hidden C-x C-p
address@hidden mark-page
+  The @kbd{C-x C-p} command (@code{mark-page}) puts point at the beginning
+of the current page and the mark at the end.  The page delimiter at the end
+is included (the mark follows it).  The page delimiter at the front is
+excluded (point follows it).  You can follow this command  by @kbd{C-w} to
+kill a page you want to move elsewhere.  If you insert the page after a page
+delimiter, at a place where @kbd{C-x ]} or @kbd{C-x [} would take you,
+the page will be properly delimited before and after once again.
+
+  A numeric argument to @kbd{C-x C-p} is used to specify which page to go
+to, relative to the current one.  Zero means the current page.  One means
+the next page, and @minus{}1 means the previous one.
+
address@hidden C-x l
address@hidden count-lines-page
+  The @kbd{C-x l} command (@code{count-lines-page}) can help you decide
+where to break a page in two.  It prints the total number of lines in
+the current page in the echo area, then divides the lines into those
+preceding the current line and those following it, for example
+
address@hidden
+Page has 96 (72+25) lines
address@hidden example
+
address@hidden
+  Notice that the sum is off by one; this is correct if point is not at the
+beginning of a line.
+
address@hidden page-delimiter
+  The variable @code{page-delimiter} should have as its value a regexp that
+matches the beginning of a line that separates pages.  This defines
+where pages begin.  The normal value of this variable is 
@code{"address@hidden"},
+which matches a formfeed character at the beginning of a line.
+
address@hidden Filling, Case, Pages, Text
address@hidden Filling Text
address@hidden filling
+
+  If you use Auto Fill mode, Emacs @dfn{fills} text (breaks it up into
+lines that fit in a specified width) as you insert it.  When you alter
+existing text it is often no longer be properly filled afterwards and
+you can use explicit commands for filling.
+
address@hidden
+* Auto Fill::    Auto Fill mode breaks long lines automatically.
+* Fill Commands:: Commands to refill paragraphs and center lines.
+* Fill Prefix::   Filling when every line is indented or in a comment, etc.
address@hidden menu
+
address@hidden Auto Fill, Fill Commands, Filling, Filling
address@hidden Auto Fill Mode
+
address@hidden Auto Fill mode
+
+  @dfn{Auto Fill} mode is a minor mode in which lines are broken
+automatically when they become too wide.  Breaking happens only when
+you type a @key{SPC} or @key{RET}.
+
address@hidden @kbd
address@hidden M-x auto-fill-mode
+Enable or disable Auto Fill mode.
address@hidden @key{SPC}
address@hidden @key{RET}
+In Auto Fill mode, break lines when appropriate.
address@hidden table
+
address@hidden auto-fill-mode
+  @kbd{M-x auto-fill-mode} turns Auto Fill mode on if it was off, or off
+if it was on.  With a positive numeric argument the command always turns
+Auto Fill mode on, and with a negative argument it always turns it off.
+The presence of the word @samp{Fill} in the mode line, inside the
+parentheses, indicates that Auto Fill mode is in effect.  Auto Fill mode
+is a minor mode; you can turn it on or off for each buffer individually.
address@hidden Modes}.
+
+  In Auto Fill mode, lines are broken automatically at spaces when they get
+longer than desired.  Line breaking and rearrangement takes place
+only when you type @key{SPC} or @key{RET}.  To insert a space
+or newline without permitting line-breaking, type @kbd{C-q @key{SPC}} or
address@hidden @key{LFD}} (recall that a newline is really a linefeed).
address@hidden inserts a newline without line breaking.
+
+  Auto Fill mode works well with Lisp mode: when it makes a new line in
+Lisp mode, it indents that line with @key{TAB}.  If a line ending in a
+Lisp comment gets too long, the text of the comment is split into two
+comment lines.  Optionally, new comment delimiters are inserted at the
+end of the first line and the beginning of the second, so that each line
+is a separate comment.  The variable @code{comment-multi-line} controls
+the choice (@pxref{Comments}).
+
+  Auto Fill mode does not refill entire paragraphs.  It can break lines but
+cannot merge lines.  Editing in the middle of a paragraph can result in
+a paragraph that is not correctly filled.  The easiest way to make the
+paragraph properly filled again is using an explicit fill commands.
+
+  Many users like Auto Fill mode and want to use it in all text files.
+The section on init files explains how you can arrange this
+permanently for yourself.  @xref{Init File}.
+
address@hidden Fill Commands, Fill Prefix, Auto Fill, Filling
address@hidden Explicit Fill Commands
+
address@hidden @kbd
address@hidden M-q
+Fill current paragraph (@code{fill-paragraph}).
address@hidden M-g
+Fill each paragraph in the region (@code{fill-region}).
address@hidden C-x f
+Set the fill column (@code{set-fill-column}).
address@hidden M-x fill-region-as-paragraph
+Fill the region, considering it as one paragraph.
address@hidden M-s
+Center a line.
address@hidden table
+
address@hidden M-q
address@hidden fill-paragraph
+  To refill a paragraph, use the command @kbd{Meta-q}
+(@code{fill-paragraph}).  It causes the paragraph containing point, or
+the one after point if point is between paragraphs, to be refilled.  All
+line breaks are removed, and new ones are inserted where necessary.
address@hidden can be undone with @kbd{C-_}.  @address@hidden
+
address@hidden M-g
address@hidden fill-region
+  To refill many paragraphs, use @kbd{M-g} (@code{fill-region}), which
+divides the region into paragraphs and fills each of them.
+
address@hidden fill-region-as-paragraph
+  @kbd{Meta-q} and @kbd{Meta-g} use the same criteria as @kbd{Meta-h} for
+finding paragraph boundaries (@pxref{Paragraphs}).  For more control, you
+can use @kbd{M-x fill-region-as-paragraph}, which refills everything
+between point and mark.  This command recognizes only blank lines as
+paragraph address@hidden
+
address@hidden justification
+  A numeric argument to @kbd{M-g} or @kbd{M-q} causes it to
address@hidden the text as well as filling it.  Extra spaces are inserted
+to make the right margin line up exactly at the fill column.  To remove
+the extra spaces, use @kbd{M-q} or @kbd{M-g} with no address@hidden
+
address@hidden auto-fill-inhibit-regexp
+The variable @code{auto-fill-inhibit-regexp} takes as a value a regexp to
+match lines that should not be auto-filled.
+
address@hidden M-s
address@hidden centering
address@hidden center-line
+  The command @kbd{Meta-s} (@code{center-line}) centers the current line
+within the current fill column.  With an argument, it centers several lines
+individually and moves past them.
+
address@hidden fill-column
+  The maximum line width for filling is in the variable
address@hidden  Altering the value of @code{fill-column} makes it
+local to the current buffer; until then, the default value---initially
+70---is in effect. @xref{Locals}.
+
address@hidden C-x f
address@hidden set-fill-column
+  The easiest way to set @code{fill-column} is to use the command @kbd{C-x
+f} (@code{set-fill-column}).  With no argument, it sets @code{fill-column}
+to the current horizontal position of point.  With a numeric argument, it
+uses that number as the new fill column.
+
address@hidden Fill Prefix,, Fill Commands, Filling
address@hidden The Fill Prefix
+
address@hidden fill prefix
+  To fill a paragraph in which each line starts with a special marker
+(which might be a few spaces, giving an indented paragraph), use the
address@hidden prefix} feature.  The fill prefix is a string which is not
+included in filling.  Emacs expects every line to start with a fill
+prefix.
+
address@hidden @kbd
address@hidden C-x .
+Set the fill prefix (@code{set-fill-prefix}).
address@hidden M-q
+Fill a paragraph using current fill prefix (@code{fill-paragraph}).
address@hidden M-x fill-individual-paragraphs
+Fill the region, considering each change of indentation as starting a
+new paragraph.
address@hidden table
+
address@hidden C-x .
address@hidden set-fill-prefix
+  To specify a fill prefix, move to a line that starts with the desired
+prefix, put point at the end of the prefix, and give the command
address@hidden@kbd{C-x .}}@: (@code{set-fill-prefix}).  That's a period after 
the
address@hidden  To turn off the fill prefix, specify an empty prefix: type
address@hidden@kbd{C-x .}}@: with point at the beginning of a address@hidden
+
+  When a fill prefix is in effect, the fill commands remove the fill
+prefix from each line before filling and insert it on each line after
+filling.  Auto Fill mode also inserts the fill prefix inserted on new
+lines it creates.  Lines that do not start with the fill prefix are
+considered to start paragraphs, both in @kbd{M-q} and the paragraph
+commands; this is just right if you are using paragraphs with hanging
+indentation (every line indented except the first one).  Lines which are
+blank or indented once the prefix is removed also separate or start
+paragraphs; this is what you want if you are writing multi-paragraph
+comments with a comment delimiter on each line.
+
address@hidden fill-prefix
+  The fill prefix is stored in the variable @code{fill-prefix}.  Its value
+is a string, or @code{nil} when there is no fill prefix.  This is a
+per-buffer variable; altering the variable affects only the current buffer,
+but there is a default value which you can change as well.  @xref{Locals}.
+
address@hidden fill-individual-paragraphs
+  Another way to use fill prefixes is through @kbd{M-x
+fill-individual-paragraphs}.  This function divides the region into groups
+of consecutive lines with the same amount and kind of indentation and fills
+each group as a paragraph, using its indentation as a fill prefix.
+
address@hidden Case,, Filling, Text
address@hidden Case Conversion Commands
address@hidden case conversion
+
+  Emacs has commands for converting either a single word or any arbitrary
+range of text to upper case or to lower case.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden M-l
+Convert following word to lower case (@code{downcase-word}).
address@hidden M-u
+Convert following word to upper case (@code{upcase-word}).
address@hidden M-c
+Capitalize the following word (@code{capitalize-word}).
address@hidden C-x C-l
+Convert region to lower case (@code{downcase-region}).
address@hidden C-x C-u
+Convert region to upper case (@code{upcase-region}).
address@hidden table
+
address@hidden M-l
address@hidden M-u
address@hidden M-c
address@hidden words
address@hidden downcase-word
address@hidden upcase-word
address@hidden capitalize-word
+  The word conversion commands are used most frequently.  @kbd{Meta-l}
+(@code{downcase-word}) converts the word after point to lower case,
+moving past it.  Thus, repeating @kbd{Meta-l} converts successive words.
address@hidden (@code{upcase-word}) converts to all capitals instead,
+while @kbd{Meta-c} (@code{capitalize-word}) puts the first letter of the
+word into upper case and the rest into lower case.  The word conversion
+commands convert several words at once if given an argument.  They are
+especially convenient for converting a large amount of text from all
+upper case to mixed case: you can move through the text using
address@hidden, @kbd{M-u}, or @kbd{M-c} on each word as appropriate,
+occasionally using @kbd{M-f} instead to skip a word.
+
+  When given a negative argument, the word case conversion commands apply
+to the appropriate number of words before point, but do not move point.
+This is convenient when you have just typed a word in the wrong case: you
+can give the case conversion command and continue typing.
+
+  If a word case conversion command is given in the middle of a word, it
+applies only to the part of the word which follows point.  This is just
+like what @kbd{Meta-d} (@code{kill-word}) does.  With a negative argument,
+case conversion applies only to the part of the word before point.
+
address@hidden C-x C-l
address@hidden C-x C-u
address@hidden region
address@hidden downcase-region
address@hidden upcase-region
+  The other case conversion commands are @kbd{C-x C-u}
+(@code{upcase-region}) and @kbd{C-x C-l} (@code{downcase-region}), which
+convert everything between point and mark to the specified case.  Point and
+mark do not address@hidden
+
address@hidden Programs, Running, Text, Top
address@hidden Editing Programs
address@hidden Lisp
address@hidden C
+
+  Emacs has many commands designed to understand the syntax of programming
+languages such as Lisp and C.  These commands can:
+
address@hidden @bullet
address@hidden
+Move over or kill balanced expressions or @dfn{sexps} (@pxref{Lists}).
address@hidden
+Move over or mark top-level balanced expressions (@dfn{defuns}, in Lisp;
+functions, in C).
address@hidden
+Show how parentheses balance (@pxref{Matching}).
address@hidden
+Insert, kill, or align comments (@pxref{Comments}).
address@hidden
+Follow the usual indentation conventions of the language
+(@pxref{Grinding}).
address@hidden itemize
+
+  The commands available for words, sentences, and paragraphs are useful in
+editing code even though their canonical application is for editing human
+language text.  Most symbols contain words (@pxref{Words}); sentences can
+be found in strings and comments (@pxref{Sentences}).  Paragraphs per se
+are not present in code, but the paragraph commands are useful anyway,
+because Lisp mode and C mode define paragraphs to begin and end at blank
+lines (@pxref{Paragraphs}).  Judicious use of blank lines to make the
+program clearer also provides interesting chunks of text for the
+paragraph commands to work on.
+
+  The selective display feature is useful for looking at the overall
+structure of a function (@pxref{Selective Display}).  This feature causes
+only the lines that are indented less than a specified amount to appear
+on the screen.
+
address@hidden
+* Program Modes::       Major modes for editing programs.
+* Lists::               Expressions with balanced parentheses.
+                         There are editing commands to operate on them.
+* Defuns::              Each program is made up of separate functions.
+                         There are editing commands to operate on them.
+* Grinding::            Adjusting indentation to show the nesting.
+* Matching::            Insertion of a close-delimiter flashes matching open.
+* Comments::            Inserting, filling and aligning comments.
+* Balanced Editing::    Inserting two matching parentheses at once, etc.
+* Lisp Completion::     Completion on symbol names in Lisp code.
+* Documentation::       Getting documentation of functions you plan to call.
+* Change Log::          Maintaining a change history for your program.
+* Tags::                Go direct to any function in your program in one
+                         command.  Tags remembers which file it is in.
+* Fortran::            Fortran mode and its special features.
+* Asm Mode::            Asm mode and its special features.
address@hidden menu
+
address@hidden Program Modes, Lists, Programs, Programs
address@hidden Major Modes for Programming Languages
+
address@hidden Lisp mode
address@hidden C mode
address@hidden Scheme mode
+  Emacs has several major modes for the programming languages Lisp, Scheme (a
+variant of Lisp), C, Fortran, and Muddle.  Ideally, a major mode should be
+implemented for each programming language you might want to edit with
+Emacs; but often the mode for one language can serve for other
+syntactically similar languages.  The language modes that exist are those
+that someone decided to take the trouble to write.
+
+  There are several variants of Lisp mode, which differ in the way they
+interface to Lisp execution.  @xref{Lisp Modes}.
+
+  Each of the programming language modes defines the @key{TAB} key to run
+an indentation function that knows the indentation conventions of that
+language and updates the current line's indentation accordingly.  For
+example, in C mode @key{TAB} is bound to @code{c-indent-line}.  @key{LFD}
+is normally defined to do @key{RET} followed by @key{TAB}; thus it, too,
+indents in a mode-specific fashion.
+
address@hidden DEL
address@hidden backward-delete-char-untabify
+  In most programming languages, indentation is likely to vary from line to
+line.  So the major modes for those languages rebind @key{DEL} to treat a
+tab as if it were the equivalent number of spaces (using the command
address@hidden).  This makes it possible to rub out
+indentation one column at a time without worrying whether it is made up of
+spaces or tabs.  In these modes, use @kbd{C-b C-d} to delete a tab
+character before point. 
+
+  Programming language modes define paragraphs to be separated only by
+blank lines, so that the paragraph commands remain useful.  Auto Fill mode,
+if enabled in a programming language major mode, indents the new lines
+which it creates.
+
address@hidden mode hook
address@hidden c-mode-hook
address@hidden lisp-mode-hook
address@hidden emacs-lisp-mode-hook
address@hidden lisp-interaction-mode-hook
address@hidden scheme-mode-hook
address@hidden muddle-mode-hook
+  Turning on a major mode calls a user-supplied function called the
address@hidden hook}, which is the value of a Lisp variable.  For example,
+turning on C mode calls the value of the variable @code{c-mode-hook} if
+that value exists and is address@hidden  Mode hook variables for other
+programming language modes include @code{lisp-mode-hook},
address@hidden, @code{lisp-interaction-mode-hook},
address@hidden, and @code{muddle-mode-hook}.  The mode hook
+function receives no address@hidden
+
address@hidden Lists, Defuns, Program Modes, Programs
address@hidden Lists and Sexps
+
address@hidden Control-Meta
+  By convention, Emacs keys for dealing with balanced expressions are
+usually @kbd{Control-Meta-} characters.  They tend to be analogous in
+function to their @kbd{Control-} and @kbd{Meta-} equivalents.  These commands
+are usually thought of as pertaining to expressions in programming
+languages, but can be useful with any language in which some sort of
+parentheses exist (including English).
+
address@hidden list
address@hidden sexp
address@hidden expression
+  The commands fall into two classes.  Some commands deal only with
address@hidden (parenthetical groupings).  They see nothing except
+parentheses, brackets, braces (depending on what must balance in the
+language you are working with), and escape characters that might be used
+to quote those.
+
+  The other commands deal with expressions or @dfn{sexps}.  The word `sexp'
+is derived from @dfn{s-expression}, the term for a symbolic expression in
+Lisp.  In Emacs, the notion of `sexp' is not limited to Lisp.  It
+refers to an expression in the language  your program is written in.
+Each programming language has its own major mode, which customizes the
+syntax tables so that expressions in that language count as sexps.
+
+  Sexps typically include symbols, numbers, and string constants, as well
+as anything contained in parentheses, brackets, or braces.
+
+  In languages that use prefix and infix operators, such as C, it is not
+possible for all expressions to be sexps.  For example, C mode does not
+recognize @samp{foo + bar} as an sexp, even though it @i{is} a C expression;
+it recognizes @samp{foo} as one sexp and @samp{bar} as another, with the
address@hidden as punctuation between them.  This is a fundamental ambiguity:
+both @samp{foo + bar} and @samp{foo} are legitimate choices for the sexp to
+move over if point is at the @samp{f}.  Note that @samp{(foo + bar)} is a
+sexp in C mode.
+
+  Some languages have obscure forms of syntax for expressions that nobody
+has bothered to make Emacs understand properly.
+
address@hidden doublewidecommands
address@hidden @kbd
address@hidden C-M-f
+Move forward over an sexp (@code{forward-sexp}).
address@hidden C-M-b
+Move backward over an sexp (@code{backward-sexp}).
address@hidden C-M-k
+Kill sexp forward (@code{kill-sexp}).
address@hidden C-M-u
+Move up and backward in list structure (@code{backward-up-list}).
address@hidden C-M-d
+Move down and forward in list structure (@code{down-list}).
address@hidden C-M-n
+Move forward over a list (@code{forward-list}).
address@hidden C-M-p
+Move backward over a list (@code{backward-list}).
address@hidden C-M-t
+Transpose expressions (@code{transpose-sexps}).
address@hidden C-M-@@
+Put mark after following expression (@code{mark-sexp}).
address@hidden table
+
address@hidden C-M-f
address@hidden C-M-b
address@hidden forward-sexp
address@hidden backward-sexp
+  To move forward over an sexp, use @kbd{C-M-f} (@code{forward-sexp}).  If
+the first significant character after point is an opening delimiter
+(@samp{(} in Lisp; @samp{(}, @samp{[}, or @address@hidden in C), @kbd{C-M-f}
+moves past the matching closing delimiter.  If the character begins a
+symbol, string, or number, @kbd{C-M-f} moves over that.  If the character
+after point is a closing delimiter, @kbd{C-M-f} just moves past it.  (This
+last is not really moving across an sexp; it is an exception which is
+included in the definition of @kbd{C-M-f} because it is as useful a
+behavior as anyone can think of for that situation.)@refill
+
+  The command @kbd{C-M-b} (@code{backward-sexp}) moves backward over a
+sexp.  The detailed rules are like those above for @kbd{C-M-f}, but with
+directions reversed.  If there are any prefix characters (single quote,
+back quote, and comma, in Lisp) preceding the sexp, @kbd{C-M-b} moves back
+over them as well.
+
+  @kbd{C-M-f} or @kbd{C-M-b} with an argument repeats that operation the
+specified number of times; with a negative argument, it moves in the
+opposite direction.
+
+In languages such as C where the comment-terminator can be recognized,
+the sexp commands move across comments as if they were whitespace.  In
+Lisp and other languages where comments run until the end of a line, it
+is very difficult to ignore comments when parsing backwards; therefore,
+in such languages the sexp commands treat the text of comments as if it
+were code.
+
address@hidden C-M-k
address@hidden kill-sexp
+  Killing an sexp at a time can be done with @kbd{C-M-k} (@code{kill-sexp}).
address@hidden kills the characters that @kbd{C-M-f} would move over.
+
address@hidden C-M-n
address@hidden C-M-p
address@hidden forward-list
address@hidden backward-list
+  The @dfn{list commands}, @kbd{C-M-n} (@code{forward-list}) and
address@hidden (@code{backward-list}), move over lists like the sexp
+commands but skip over any number of other kinds of sexps (symbols,
+strings, etc).  In some situations, these commands are useful because
+they usually ignore comments, since the comments usually do not contain
+any address@hidden
+
address@hidden C-M-u
address@hidden C-M-d
address@hidden backward-up-list
address@hidden down-list
+  @kbd{C-M-n} and @kbd{C-M-p} stay at the same level in parentheses, when
+that is possible.  To move @i{up} one (or @var{n}) levels, use @kbd{C-M-u}
+(@code{backward-up-list}).
address@hidden moves backward up past one unmatched opening delimiter.  A
+positive argument serves as a repeat count; a negative argument reverses
+direction of motion and also requests repetition, so it moves forward and
+up one or more address@hidden
+
+  To move @i{down} in list structure, use @kbd{C-M-d}
+(@code{down-list}).  In Lisp mode, where @samp{(} is the only opening
+delimiter, this is nearly the same as searching for a @samp{(}.  An
+argument specifies the number of levels of parentheses to go down.
+
address@hidden transposition
address@hidden C-M-t
address@hidden transpose-sexps
address@hidden (@code{transpose-sexps}) drags the previous sexp across
+the next one.  An argument serves as a repeat count, and a negative
+argument drags backwards (thus canceling out the effect of @kbd{C-M-t} with
+a positive argument).  An argument of zero, rather than doing nothing,
+transposes the sexps ending after point and the mark.
+
address@hidden C-M-@@
address@hidden mark-sexp
+  To make the region be the next sexp in the buffer, use @kbd{C-M-@@}
+(@code{mark-sexp}) which sets the mark at the same place that
address@hidden would move to.  @kbd{C-M-@@} takes arguments like
address@hidden  In particular, a negative argument is useful for putting
+the mark at the beginning of the previous sexp.
+
+  The list and sexp commands' understanding of syntax is completely
+controlled by the syntax table.  Any character can, for example, be
+declared to be an opening delimiter and act like an open parenthesis.
address@hidden
+
address@hidden Defuns, Grinding, Lists, Programs
address@hidden Defuns
address@hidden defuns
+
+  In Emacs, a parenthetical grouping at the top level in the buffer is
+called a @dfn{defun}.  The name derives from the fact that most
+top-level lists in Lisp are instances of the special form
address@hidden, but Emacs calls any top-level parenthetical
+grouping counts a defun regardless of its contents or
+the programming language.  For example, in C, the body of a
+function definition is a defun.
+
address@hidden doublewidecommands
address@hidden @kbd
address@hidden C-M-a
+Move to beginning of current or preceding defun
+(@code{beginning-of-defun}).
address@hidden C-M-e
+Move to end of current or following defun (@code{end-of-defun}).
address@hidden C-M-h
+Put region around whole current or following defun (@code{mark-defun}).
address@hidden table
+
address@hidden C-M-a
address@hidden C-M-e
address@hidden C-M-h
address@hidden beginning-of-defun
address@hidden end-of-defun
address@hidden mark-defun
+  The commands to move to the beginning and end of the current defun are
address@hidden (@code{beginning-of-defun}) and @kbd{C-M-e} 
(@code{end-of-defun}).
+
+   To operate on the current defun, use @kbd{C-M-h} (@code{mark-defun})
+which puts point at the beginning and the mark at the end of the current
+or next defun.  This is the easiest way to prepare for moving the defun
+to a different place.  In C mode, @kbd{C-M-h} runs the function
address@hidden, which is almost the same as @code{mark-defun},
+but which backs up over the argument declarations, function name, and
+returned data type so that the entire C function is inside the region.
+
address@hidden compile-defun
+To compile and evaluate the current defun, use @kbd{M-x compile-defun}. 
+This function prints the results in the minibuffer. If you include an 
+argument, it inserts the value in the current buffer after the defun.
+
+  Emacs assumes that any open-parenthesis found in the leftmost column is
+the start of a defun.  Therefore, @i{never put an open-parenthesis at the
+left margin in a Lisp file unless it is the start of a top level list.
+Never put an open-brace or other opening delimiter at the beginning of a
+line of C code unless it starts the body of a function.}  The most likely
+problem case is when you want an opening delimiter at the start of a line
+inside a string.  To avoid trouble, put an escape character (@samp{\} in C
+and Emacs Lisp, @samp{/} in some other Lisp dialects) before the opening
+delimiter.  It will not affect the contents of the string.
+
+  The original Emacs found defuns by moving upward a
+level of parentheses until there were no more levels to go up.  This
+required scanning back to the beginning of the buffer for every
+function.  To speed this up, Emacs was changed to assume
+that any @samp{(} (or other character assigned the syntactic class of
+opening-delimiter) at the left margin is the start of a defun.  This
+heuristic is nearly always right; however, it mandates the convention 
+described above.
+
address@hidden Grinding, Matching, Defuns, Programs
address@hidden Indentation for Programs
address@hidden indentation
address@hidden grinding
+
+  The best way to keep a program properly indented (``ground'') is to
+use Emacs to re-indent it as you change the program.  Emacs has commands
+to indent properly either a single line, a specified number of lines, or
+all of the lines inside a single parenthetical grouping.
+
address@hidden
+* Basic Indent::
+* Multi-line Indent::   Commands to reindent many lines at once.
+* Lisp Indent::                Specifying how each Lisp function should be 
indented.
+* C Indent::           Choosing an indentation style for C code.
address@hidden menu
+
address@hidden Basic Indent, Multi-line Indent, Grinding, Grinding
address@hidden Basic Program Indentation Commands
+
address@hidden WideCommands
address@hidden @kbd
address@hidden @key{TAB}
+Adjust indentation of current line.
address@hidden @key{LFD}
+Equivalent to @key{RET} followed by @key{TAB} (@code{newline-and-indent}).
address@hidden table
+
address@hidden TAB
address@hidden c-indent-line
address@hidden lisp-indent-line
+  The basic indentation command is @key{TAB}, which gives the current
+line the correct indentation as determined from the previous lines.  The
+function that @key{TAB} runs depends on the major mode; it is
address@hidden in Lisp mode, @code{c-indent-line} in C mode,
+etc.  These functions understand different syntaxes for different
+languages, but they all do about the same thing.  @key{TAB} in any
+programming language major mode inserts or deletes whitespace at the
+beginning of the current line, independent of where point is in the
+line.  If point is inside the whitespace at the beginning of the line,
address@hidden leaves it at the end of that whitespace; otherwise, @key{TAB}
+leaves point fixed with respect to the characters around it.
+
+  Use @kbd{C-q @key{TAB}} to insert a tab at point.
+
address@hidden LFD
address@hidden newline-and-indent
+  When entering a large amount of new code, use @key{LFD}
+(@code{newline-and-indent}), which is equivalent to a @key{RET} followed
+by a @key{TAB}.  @key{LFD} creates a blank line, then gives it the
+appropriate indentation.
+
+  @key{TAB} indents the second and following lines of the body of a
+parenthetical grouping each under the preceding one; therefore, if you
+alter one line's indentation to be nonstandard, the lines below tend
+to follow it.  This is the right behavior in cases where the standard
+result of @key{TAB} does not look good.
+
+  Remember that Emacs assumes that an open-parenthesis, open-brace, or
+other opening delimiter at the left margin (including the indentation
+routines) is the start of a function.  You should therefore never have
+an opening delimiter in column zero that is not the beginning of a
+function, not even inside a string.  This restriction is vital for
+making the indentation commands fast. @xref{Defuns}, for more
+information on this behavior.
+
address@hidden Multi-line Indent, Lisp Indent, Basic Indent, Grinding
address@hidden Indenting Several Lines
+
+  Several commands are available to re-indent several lines of code
+which have been altered or moved to a different level in a list
+structure.
+
+
address@hidden @kbd
address@hidden C-M-q
+Re-indent all the lines within one list (@code{indent-sexp}).
address@hidden C-u @key{TAB}
+Shift an entire list rigidly sideways so that its first line
+is properly indented.
address@hidden C-M-\
+Re-indent all lines in the region (@code{indent-region}).
address@hidden table
+
address@hidden C-M-q
address@hidden indent-sexp
address@hidden indent-c-exp
+ To re-indent the contents of a single list, position point before the
+beginning of it and type @kbd{C-M-q}. This key is bound to
address@hidden in Lisp mode, @code{indent-c-exp} in C mode, and
+bound to other suitable functions in other modes.  The indentation of
+the line the sexp starts on is not changed; therefore, only the relative
+indentation within the list, and not its position, is changed.  To
+correct the position as well, type a @key{TAB} before @kbd{C-M-q}.
+
address@hidden C-u TAB
+  If the relative indentation within a list is correct but the
+indentation of its beginning is not, go to the line on which the list
+begins and type @kbd{C-u @key{TAB}}.  When you give @key{TAB} a numeric
+argument, it moves all the lines in the group, starting on the current
+line, sideways the same amount that the current line moves.  The command
+does not move lines that start inside strings, or C
+preprocessor lines when in C mode.
+
address@hidden C-M-\
address@hidden indent-region
+  Another way to specify a range to be re-indented is with point and
+mark.  The command @kbd{C-M-\} (@code{indent-region}) applies @key{TAB}
+to every line whose first character is between point and mark.
+
address@hidden Lisp Indent, C Indent, Multi-line Indent, Grinding
address@hidden Customizing Lisp Indentation
address@hidden customization
+
+  The indentation pattern for a Lisp expression can depend on the function
+called by the expression.  For each Lisp function, you can choose among
+several predefined patterns of indentation, or define an arbitrary one with
+a Lisp program.
+
+  The standard pattern of indentation is as follows: the second line of the
+expression is indented under the first argument, if that is on the same
+line as the beginning of the expression; otherwise, the second line is
+indented underneath the function name.  Each following line is indented
+under the previous line whose nesting depth is the same.
+
address@hidden lisp-indent-offset
+  If the variable @code{lisp-indent-offset} is address@hidden, it overrides
+the usual indentation pattern for the second line of an expression, so that
+such lines are always indented @code{lisp-indent-offset} more columns than
+the containing list.
+
address@hidden lisp-body-indention
+  Certain functions override the standard pattern.  Functions
+whose names start with @code{def} always indent the second line by
address@hidden extra columns beyond the open-parenthesis
+starting the expression.
+
+  Individual functions can override the standard pattern in various
+ways, according to the @code{lisp-indent-function} property of the
+function name.  (Note: @code{lisp-indent-function} was formerly called
address@hidden).  There are four possibilities for this
+property:
+
address@hidden @asis
address@hidden @code{nil}
+This is the same as no property; the standard indentation pattern is used.
address@hidden @code{defun}
+The pattern used for function names that start with @code{def} is used for
+this function also.
address@hidden a number, @var{number}
+The first @var{number} arguments of the function are
address@hidden arguments; the rest are considered the @dfn{body}
+of the expression.  A line in the expression is indented according to
+whether the first argument on it is distinguished or not.  If the
+argument is part of the body, the line is indented @code{lisp-body-indent}
+more columns than the open-parenthesis starting the containing
+expression.  If the argument is distinguished and is either the first
+or second argument, it is indented @i{twice} that many extra columns.
+If the argument is distinguished and not the first or second argument,
+the standard pattern is followed for that line.
address@hidden a symbol, @var{symbol}
address@hidden should be a function name; that function is called to
+calculate the indentation of a line within this expression.  The
+function receives two arguments:
address@hidden @asis
address@hidden @var{state}
+The value returned by @code{parse-partial-sexp} (a Lisp primitive for
+indentation and nesting computation) when it parses up to the
+beginning of this line.
address@hidden @var{pos}
+The position at which the line being indented begins.
address@hidden table
address@hidden
+It should return either a number, which is the number of columns of
+indentation for that line, or a list whose first element is such a
+number.  The difference between returning a number and returning a list
+is that a number says that all following lines at the same nesting level
+should be indented just like this one; a list says that following lines
+might call for different indentations.  This makes a difference when the
+indentation is computed by @kbd{C-M-q}; if the value is a number,
address@hidden need not recalculate indentation for the following lines
+until the end of the list.
address@hidden table
+
address@hidden C Indent,  , Lisp Indent, Grinding
address@hidden Customizing C Indentation
+
+  Two variables control which commands perform C indentation and when.
+
address@hidden c-auto-newline
+  If @code{c-auto-newline} is address@hidden, newlines are inserted both
+before and after braces that you insert and after colons and semicolons.
+Correct C indentation is done on all the lines that are made this way.
+
address@hidden c-tab-always-indent
+  If @code{c-tab-always-indent} is address@hidden, the @key{TAB} command
+in C mode does indentation only if point is at the left margin or within
+the line's indentation.  If there is non-whitespace to the left of point,
address@hidden just inserts a tab character in the buffer.  Normally,
+this variable is @code{nil}, and @key{TAB} always reindents the current line.
+
+  C does not have anything analogous to particular function names for which
+special forms of indentation are desirable.  However, it has a different
+need for customization facilities: many different styles of C indentation
+are in common use.
+
+  There are six variables you can set to control the style that Emacs C
+mode will use.
+
address@hidden @code
address@hidden c-indent-level
+Indentation of C statements within surrounding block.  The surrounding
+block's indentation is the indentation of the line on which the
+open-brace appears.
address@hidden c-continued-statement-offset
+Extra indentation given to a substatement, such as the then-clause of
+an @code{if} or body of a @code{while}.
address@hidden c-brace-offset
+Extra indentation for lines that start with an open brace.
address@hidden c-brace-imaginary-offset
+An open brace following other text is treated as if it were this far
+to the right of the start of its line.
address@hidden c-argdecl-indent
+Indentation level of declarations of C function arguments.
address@hidden c-label-offset
+Extra indentation for a line that is a label, case, or default.
address@hidden table
+
address@hidden c-indent-level
+  The variable @code{c-indent-level} controls the indentation for C
+statements with respect to the surrounding block.  In the example:
+
address@hidden
+    @{
+      foo ();
address@hidden example
+
address@hidden
+the difference in indentation between the lines is @code{c-indent-level}.
+Its standard value is 2.
+
+If the open-brace beginning the compound statement is not at the beginning
+of its line, the @code{c-indent-level} is added to the indentation of the
+line, not the column of the open-brace.  For example,
+
address@hidden
+if (losing) @{
+  do_this ();
address@hidden example
+
address@hidden
+One popular indentation style is that which results from setting
address@hidden to 8 and putting open-braces at the end of a line
+in this way.  Another popular style prefers to put the open-brace on a
+separate line.
+
address@hidden c-brace-imaginary-offset
+  In fact, the value of the variable @code{c-brace-imaginary-offset} is
+also added to the indentation of such a statement.  Normally this variable
+is zero.  Think of this variable as the imaginary position of the open
+brace, relative to the first non-blank character on the line.  By setting
+the variable to 4 and @code{c-indent-level} to 0, you can get this style:
+
address@hidden
+if (x == y) @{
+    do_it ();
+    @}
address@hidden example
+
+  When @code{c-indent-level} is zero, the statements inside most braces
+line up exactly under the open brace.  An exception are braces in column
+zero, like those surrounding a function's body.  The statements inside
+those braces are not placed at column zero.  Instead,
address@hidden and @code{c-continued-statement-offset} (see
+below) are added to produce a typical offset between brace levels, and
+the statements are indented that far.
+
address@hidden c-continued-statement-offset
+  @code{c-continued-statement-offset} controls the extra indentation for
+a line that starts within a statement (but not within parentheses or
+brackets).  These lines are usually statements inside other statements,
+like the then-clauses of @code{if} statements and the bodies of
address@hidden statements.  The @code{c-continued-statement-offset}
+parameter determines the difference in indentation between the two lines in:
+
address@hidden
+if (x == y)
+  do_it ();
address@hidden example
+
address@hidden
+The default value for @code{c-continued-statement-offset} is 2.  Some
+popular indentation styles correspond to a value of zero for
address@hidden
+
address@hidden c-brace-offset
+  @code{c-brace-offset} is the extra indentation given to a line that
+starts with an open-brace.  Its standard value is zero;
+compare:
+
address@hidden
+if (x == y)
+  @{
address@hidden example
+
address@hidden
+with:
+
address@hidden
+if (x == y)
+  do_it ();
address@hidden example
+
address@hidden
+If you set @code{c-brace-offset} to 4, the first example becomes:
+
address@hidden
+if (x == y)
+      @{
address@hidden example
+
address@hidden c-argdecl-indent
+  @code{c-argdecl-indent} controls the indentation of declarations of the
+arguments of a C function.  It is absolute: argument declarations receive
+exactly @code{c-argdecl-indent} spaces.  The standard value is 5 and
+results in code like this:
+
address@hidden
+char *
+index (string, char)
+     char *string;
+     int char;
address@hidden example
+
address@hidden c-label-offset
+  @code{c-label-offset} is the extra indentation given to a line that
+contains a label, a case statement, or a @code{default:} statement.  Its
+standard value is @minus{}2 and results in code like this:
+
address@hidden
+switch (c)
+  @{
+  case 'x':
address@hidden example
+
address@hidden
+If @code{c-label-offset} were zero, the same code would be indented as:
+
address@hidden
+switch (c)
+  @{
+    case 'x':
address@hidden example
+
address@hidden
+This example assumes that the other variables above also have their
+default values. 
+
+Using the indentation style produced by the default settings of the
+variables just discussed and putting open braces on separate lines
+produces clear and readable files.  For an example, look at any of the C
+source files of XEmacs.
+
address@hidden Matching, Comments, Grinding, Programs
address@hidden Automatic Display of Matching Parentheses
address@hidden matching parentheses
address@hidden parentheses
+
+  The Emacs parenthesis-matching feature shows you automatically how
+parentheses match in the text.  Whenever a self-inserting character that
+is a closing delimiter is typed, the cursor moves momentarily to the
+location of the matching opening delimiter, provided that is visible on
+the screen.  If it is not on the screen, some text starting with that
+opening delimiter is displayed in the echo area.  Either way, you see
+the grouping you are closing off. 
+
+  In Lisp, automatic matching applies only to parentheses.  In C, it
+also applies to braces and brackets.  Emacs knows which characters to regard
+as matching delimiters based on the syntax table set by the major
+mode.  @xref{Syntax}.
+
+  If the opening delimiter and closing delimiter are mismatched---as
+in @samp{[x)}---the echo area displays a warning message.  The
+correct matches are specified in the syntax table.
+
address@hidden blink-matching-paren
address@hidden blink-matching-paren-distance
+  Two variables control parenthesis matching displays.
address@hidden turns the feature on or off. The default is 
address@hidden (match display is on); @code{nil} turns it off.
address@hidden specifies how many characters back
+Emacs searches to find a matching opening delimiter.  If the match is
+not found in the specified region, scanning stops, and nothing is
+displayed.  This prevents wasting lots of time scanning when there is no
+match.  The default is 4000.
+
address@hidden Comments, Balanced Editing, Matching, Programs
address@hidden Manipulating Comments
address@hidden comments
address@hidden M-;
address@hidden indentation
address@hidden indent-for-comment
+
+  The comment commands insert, kill and align comments.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden M-;
+Insert or align comment (@code{indent-for-comment}).
address@hidden C-x ;
+Set comment column (@code{set-comment-column}).
address@hidden C-u - C-x ;
+Kill comment on current line (@code{kill-comment}).
address@hidden address@hidden
+Like @key{RET} followed by inserting and aligning a comment
+(@code{indent-new-comment-line}).
address@hidden table
+
+  The command that creates a comment is @kbd{Meta-;}
+(@code{indent-for-comment}).  If there is no comment already on the
+line, a new comment is created and aligned at a specific column called
+the @dfn{comment column}.  Emacs creates the comment by inserting the
+string at the value of @code{comment-start}; see below.  Point is left
+after that string.  If the text of the line extends past the comment
+column, indentation is done to a suitable boundary (usually, at least
+one space is inserted).  If the major mode has specified a string to
+terminate comments, that string is inserted after point, to keep the
+syntax valid.
+
+  You can also use @kbd{Meta-;} to align an existing comment.  If a line
+already contains the string that starts comments, @kbd{M-;} just moves
+point after it and re-indents it to the conventional place.  Exception:
+comments starting in column 0 are not moved.
+
+  Some major modes have special rules for indenting certain kinds of
+comments in certain contexts.  For example, in Lisp code, comments which
+start with two semicolons are indented as if they were lines of code,
+instead of at the comment column.  Comments which start with three
+semicolons are supposed to start at the left margin.  Emacs understands
+these conventions by indenting a double-semicolon comment using @key{TAB}
+and by not changing the indentation of a triple-semicolon comment at all.
+
address@hidden
+;; This function is just an example.
+;;; Here either two or three semicolons are appropriate.
+(defun foo (x)
+;;; And now, the first part of the function:
+  ;; The following line adds one.
+  (1+ x))           ; This line adds one.
address@hidden example
+
+  In C code, a comment preceded on its line by nothing but whitespace
+is indented like a line of code.
+
+  Even when an existing comment is properly aligned, @kbd{M-;} is still
+useful for moving directly to the start of the comment.
+
address@hidden C-u - C-x ;
address@hidden kill-comment
+  @kbd{C-u - C-x ;} (@code{kill-comment}) kills the comment on the
+current line, if there is one.  The indentation before the start of the
+comment is killed as well.  If there does not appear to be a comment in
+the line, nothing happens.  To reinsert the comment on another line,
+move to the end of that line, type first @kbd{C-y}, and then @kbd{M-;}
+to realign the comment.  Note that @kbd{C-u - C-x ;} is not a distinct
+key; it is @kbd{C-x ;} (@code{set-comment-column}) with a negative
+argument.  That command is programmed to call @code{kill-comment} when
+called with a negative argument.  However, @code{kill-comment} is a
+valid command which you could bind directly to a key if you wanted to.
+
address@hidden Multiple Lines of Comments
+
address@hidden M-LFD
address@hidden blank lines
address@hidden Auto Fill mode
address@hidden indent-new-comment-line
+  If you are typing a comment and want to continue it on another line,
+use the command @address@hidden (@code{indent-new-comment-line}),
+which terminates the comment you are typing, creates a new blank line
+afterward, and begins a new comment indented under the old one.  If
+Auto Fill mode is on and you go past the fill column while typing, the 
+comment is continued in just this fashion.  If point is
+not at the end of the line when you type @address@hidden, the text on
+the rest of the line becomes part of the new comment line.
+
address@hidden Options Controlling Comments
+
address@hidden comment-column
address@hidden C-x ;
address@hidden set-comment-column
+  The comment column is stored in the variable @code{comment-column}.  You
+can explicitly set it to a number.  Alternatively, the command @kbd{C-x ;}
+(@code{set-comment-column}) sets the comment column to the column point is
+at.  @kbd{C-u C-x ;} sets the comment column to match the last comment
+before point in the buffer, and then calls @kbd{Meta-;} to align the
+current line's comment under the previous one.  Note that @kbd{C-u - C-x ;}
+runs the function @code{kill-comment} as described above.
+
+  @code{comment-column} is a per-buffer variable; altering the variable
+affects only the current buffer.  You can also change the default value.
address@hidden  Many major modes initialize this variable
+for the current buffer.
+
address@hidden comment-start-skip
+  The comment commands recognize comments based on the regular expression
+that is the value of the variable @code{comment-start-skip}.  This regexp
+should not match the null string.  It may match more than the comment
+starting delimiter in the strictest sense of the word; for example, in C
+mode the value of the variable is @address@hidden"/\\*+ *"}}, which matches 
extra
+stars and spaces after the @samp{/*} itself.  (Note that @samp{\\} is
+needed in Lisp syntax to include a @samp{\} in the string, which is needed
+to deny the first star its special meaning in regexp syntax.  @xref{Regexps}.)
+
address@hidden comment-start
address@hidden comment-end
+  When a comment command makes a new comment, it inserts the value of
address@hidden to begin it.  The value of @code{comment-end} is
+inserted after point and will follow the text you will insert
+into the comment.  In C mode, @code{comment-start} has the value
address@hidden@code{"/* "}} and @code{comment-end} has the value 
@address@hidden" */"}}.
+
address@hidden comment-multi-line
+  @code{comment-multi-line} controls how @address@hidden
+(@code{indent-new-comment-line}) behaves when used inside a comment.  If
address@hidden is @code{nil}, as it normally is, then
address@hidden@key{LFD}} terminates the comment on the starting line and starts
+a new comment on the new following line.  If @code{comment-multi-line}
+is not @code{nil}, then @address@hidden sets up the new following line
+as part of the same comment that was found on the starting line.  This
+is done by not inserting a terminator on the old line and not inserting
+a starter on the new line.  In languages where multi-line comments are legal,
+the value you choose for this variable is a matter of taste.
+
address@hidden comment-indent-hook
+  The variable @code{comment-indent-hook} should contain a function that
+is called to compute the indentation for a newly inserted comment or for
+aligning an existing comment.  Major modes set this variable differently.
+The function is called with no arguments, but with point at the
+beginning of the comment, or at the end of a line if a new comment is to
+be inserted.  The function should return the column in which the comment
+ought to start.  For example, in Lisp mode, the indent hook function
+bases its decision on the number of semicolons that begin an existing
+comment and on the code in the preceding lines.
+
address@hidden Balanced Editing, Lisp Completion, Comments, Programs
address@hidden Editing Without Unbalanced Parentheses
+
address@hidden @kbd
address@hidden M-(
+Put parentheses around next sexp(s) (@code{insert-parentheses}).
address@hidden M-)
+Move past next close parenthesis and re-indent
+(@code{move-over-close-and-reindent}).
address@hidden table
+
address@hidden M-(
address@hidden M-)
address@hidden insert-parentheses
address@hidden move-over-close-and-reindent
+  The commands @kbd{M-(} (@code{insert-parentheses}) and @kbd{M-)}
+(@code{move-over-close-and-reindent}) are designed to facilitate a style of
+editing which keeps parentheses balanced at all times.  @kbd{M-(} inserts a
+pair of parentheses, either together as in @samp{()}, or, if given an
+argument, around the next several sexps, and leaves point after the open
+parenthesis.  Instead of typing @kbd{( F O O )}, you can type @kbd{M-( F O
+O}, which has the same effect except for leaving the cursor before the
+close parenthesis.  You can then type @kbd{M-)}, which moves past the
+close parenthesis, deletes any indentation preceding it (in this example
+there is none), and indents with @key{LFD} after it.
+
address@hidden Lisp Completion, Documentation, Balanced Editing, Programs
address@hidden Completion for Lisp Symbols
address@hidden completion (symbol names)
+
+   Completion usually happens in the minibuffer.  An exception is
+completion for Lisp symbol names, which is available in all buffers.
+
address@hidden M-TAB
address@hidden lisp-complete-symbol
+  The command @address@hidden (@code{lisp-complete-symbol}) takes the
+partial Lisp symbol before point to be an abbreviation, and compares it
+against all non-trivial Lisp symbols currently known to Emacs.  Any
+additional characters that they all have in common are inserted at point.
+Non-trivial symbols are those that have function definitions, values, or
+properties.
+
+  If there is an open-parenthesis immediately before the beginning of
+the partial symbol, only symbols with function definitions are considered
+as completions.
+
+  If the partial name in the buffer has more than one possible completion
+and they have no additional characters in common, a list of all possible
+completions is displayed in another window.
+
address@hidden Documentation, Change Log, Lisp Completion, Programs
address@hidden Documentation Commands
+
address@hidden C-h f
address@hidden describe-function
address@hidden C-h v
address@hidden describe-variable
+  As you edit Lisp code to be run in Emacs, you can use the commands
address@hidden f} (@code{describe-function}) and @kbd{C-h v}
+(@code{describe-variable}) to print documentation of functions and
+variables you want to call.  These commands use the minibuffer to
+read the name of a function or variable to document, and display the
+documentation in a window.
+
+  For extra convenience, these commands provide default arguments based on
+the code in the neighborhood of point.  @kbd{C-h f} sets the default to the
+function called in the innermost list containing point.  @kbd{C-h v} uses
+the symbol name around or adjacent to point as its default.
+
address@hidden manual-entry
+  The @kbd{M-x manual-entry} command gives you access to documentation
+on Unix commands, system calls, and libraries.  The command reads a
+topic as an argument, and displays the Unix manual page for that topic. 
address@hidden always searches all 8 sections of the
+manual and concatenates all the entries it finds.  For example,
+the topic @samp{termcap} finds the description of the termcap library
+from section 3, followed by the description of the termcap data base
+from section 5.
+
address@hidden Change Log, Tags, Documentation, Programs
address@hidden Change Logs
+
address@hidden change log
address@hidden add-change-log-entry
+  The Emacs command @kbd{M-x add-change-log-entry} helps you keep a record
+of when and why you have changed a program.  It assumes that you have a
+file in which you write a chronological sequence of entries describing
+individual changes.  The default is to store the change entries in a file
+called @file{ChangeLog} in the same directory as the file you are editing.
+The same @file{ChangeLog} file therefore records changes for all the files
+in a directory.
+
+  A change log entry starts with a header line that contains your name
+and the current date.  Except for these header lines, every line in the
+change log starts with a tab.  One entry can describe several changes;
+each change starts with a line starting with a tab and a star.  @kbd{M-x
+add-change-log-entry} visits the change log file and creates a new entry
+unless the most recent entry is for today's date and your name.  In
+either case, it adds a new line to start the description of another
+change just after the header line of the entry.  When @kbd{M-x
+add-change-log-entry} is finished, all is prepared for you to edit in
+the description of what you changed and how.  You must then save the
+change log file yourself.
+
+  The change log file is always visited in Indented Text mode, which means
+that @key{LFD} and auto-filling indent each new line like the previous
+line.  This is convenient for entering the contents of an entry, which must
+be indented.  @xref{Text Mode}.
+
+  Here is an example of the formatting conventions used in the change log
+for Emacs:
+
address@hidden
+Wed Jun 26 19:29:32 1985  Richard M. Stallman  (rms at mit-prep)
+
+        * xdisp.c (try_window_id):
+        If C-k is done at end of next-to-last line,
+        this fn updates window_end_vpos and cannot leave
+        window_end_pos nonnegative (it is zero, in fact).
+        If display is preempted before lines are output,
+        this is inconsistent.  Fix by setting
+        blank_end_of_window to nonzero.
+
+Tue Jun 25 05:25:33 1985  Richard M. Stallman  (rms at mit-prep)
+
+        * cmds.c (Fnewline):
+        Call the auto fill hook if appropriate.
+
+        * xdisp.c (try_window_id):
+        If point is found by compute_motion after xp, record that
+        permanently.  If display_text_line sets point position wrong
+        (case where line is killed, point is at eob and that line is
+        not displayed), set it again in final compute_motion.
address@hidden smallexample
+
address@hidden Tags, Fortran, Change Log, Programs
address@hidden Tags Tables
address@hidden tags table
+
+  A @dfn{tags table} is a description of how a multi-file program is
+broken up into files.  It lists the names of the component files and the
+names and positions of the functions (or other named subunits) in each
+file.  Grouping the related files makes it possible to search or replace
+through all the files with one command.  Recording the function names
+and positions makes possible the @kbd{M-.} command which finds the
+definition of a function by looking up which of the files it is in.
+
+  Tags tables are stored in files called @dfn{tags table files}.  The
+conventional name for a tags table file is @file{TAGS}.
+
+  Each entry in the tags table records the name of one tag, the name of the
+file that the tag is defined in (implicitly), and the position in that file
+of the tag's definition.
+
+  Just what names from the described files are recorded in the tags table
+depends on the programming language of the described file.  They
+normally include all functions and subroutines, and may also include
+global variables, data types, and anything else convenient.  Each name
+recorded is called a @dfn{tag}.
+
address@hidden C++ class browser, tags
address@hidden tags, C++
address@hidden class browser, C++
address@hidden Ebrowse
+The Ebrowse is a separate facility tailored for C++, with tags and a
+class browser.  @xref{Top,,, ebrowse, Ebrowse User's Manual}.
+
address@hidden
+* Tag Syntax::         Tag syntax for various types of code and text files.
+* Create Tags Table::  Creating a tags table with @code{etags}.
+* Etags Regexps::       Create arbitrary tags using regular expressions.
+* Select Tags Table::  How to visit a tags table.
+* Find Tag::           Commands to find the definition of a specific tag.
+* Tags Search::                Using a tags table for searching and replacing.
+* List Tags::          Listing and finding tags defined in a file.
address@hidden menu
+
address@hidden Tag Syntax
address@hidden Source File Tag Syntax
+
+  Here is how tag syntax is defined for the most popular languages:
+
address@hidden @bullet
address@hidden
+In C code, any C function or typedef is a tag, and so are definitions of
address@hidden, @code{union} and @code{enum}.  You can tag function
+declarations and external variables in addition to function definitions
+by giving the @samp{--declarations} option to @code{etags}.
address@hidden macro definitions and @code{enum} constants are also
+tags, unless you specify @samp{--no-defines} when making the tags table.
+Similarly, global variables are tags, unless you specify
address@hidden  Use of @samp{--no-globals} and @samp{--no-defines}
+can make the tags table file much smaller.
+
address@hidden
+In C++ code, in addition to all the tag constructs of C code, member
+functions are also recognized, and optionally member variables if you
+use the @samp{--members} option.  Tags for variables and functions in
+classes are named @address@hidden::@var{variable}} and
address@hidden@var{class}::@var{function}}.  @code{operator} functions tags are
+named, for example @samp{operator+}.
+
address@hidden
+In Java code, tags include all the constructs recognized in C++, plus
+the @code{interface}, @code{extends} and @code{implements} constructs.
+Tags for variables and functions in classes are named
address@hidden@address@hidden and @address@hidden@var{function}}.
+
address@hidden
+In address@hidden text, the argument of any of the commands @code{\chapter},
address@hidden, @code{\subsection}, @code{\subsubsection},
address@hidden, @code{\label}, @code{\ref}, @code{\cite}, @code{\bibitem},
address@hidden, @code{\appendix}, @code{\entry}, or @code{\index}, is a
address@hidden
+
+Other commands can make tags as well, if you specify them in the
+environment variable @code{TEXTAGS} before invoking @code{etags}.  The
+value of this environment variable should be a colon-separated list of
+command names.  For example,
+
address@hidden
+TEXTAGS="def:newcommand:newenvironment"
+export TEXTAGS
address@hidden example
+
address@hidden
+specifies (using Bourne shell syntax) that the commands @samp{\def},
address@hidden and @samp{\newenvironment} also define tags.
+
address@hidden
+In Lisp code, any function defined with @code{defun}, any variable
+defined with @code{defvar} or @code{defconst}, and in general the first
+argument of any expression that starts with @samp{(def} in column zero, is
+a tag.
+
address@hidden
+In Scheme code, tags include anything defined with @code{def} or with a
+construct whose name starts with @samp{def}.  They also include variables
+set with @code{set!} at top level in the file.
address@hidden itemize
+
+  Several other languages are also supported:
+
address@hidden @bullet
+
address@hidden
+In Ada code, functions, procedures, packages, tasks, and types are
+tags.  Use the @samp{--packages-only} option to create tags for
+packages only.
+
+With Ada, it is possible to have the same name used for different
+entity kinds (e.g.@: the same name for a procedure and a function).  Also,
+for things like packages, procedures and functions, there is the spec
+(i.e.@: the interface) and the body (i.e.@: the implementation).  To
+facilitate the choice to the user, a tag value is appended with a
+qualifier:
+
address@hidden @asis
address@hidden function
+ @kbd{/f}
address@hidden procedure
+ @kbd{/p}
address@hidden package spec
+ @kbd{/s}
address@hidden package body
+ @kbd{/b}
address@hidden type
+ @kbd{/t}
address@hidden task
+ @kbd{/k}
address@hidden table
+
+So, as an example, @kbd{M-x find-tag bidule/b} will go directly to the
+body of the package @var{bidule} while @kbd{M-x find-tag bidule} will
+just search for any tag @var{bidule}.
+
address@hidden
+In assembler code, labels appearing at the beginning of a line,
+followed by a colon, are tags.
+
address@hidden
+In Bison or Yacc input files, each rule defines as a tag the nonterminal
+it constructs.  The portions of the file that contain C code are parsed
+as C code.
+
address@hidden
+In Cobol code, tags are paragraph names; that is, any word starting in
+column 8 and followed by a period.
+
address@hidden
+In Erlang code, the tags are the functions, records, and macros defined
+in the file.
+
address@hidden
+In Fortran code, functions, subroutines and blockdata are tags.
+
address@hidden
+In makefiles, targets are tags.
+
address@hidden
+In Objective C code, tags include Objective C definitions for classes,
+class categories, methods, and protocols.
+
address@hidden
+In Pascal code, the tags are the functions and procedures defined in
+the file.
+
address@hidden
+In Perl code, the tags are the procedures defined by the @code{sub},
address@hidden and @code{local} keywords.  Use @samp{--globals} if you want
+to tag global variables.
+
address@hidden
+In PostScript code, the tags are the functions.
+
address@hidden
+In Prolog code, a tag name appears at the left margin.
+
address@hidden
+In Python code, @code{def} or @code{class} at the beginning of a line
+generate a tag.
address@hidden itemize
+
+  You can also generate tags based on regexp matching (@pxref{Etags
+Regexps}) to handle other formats and languages.
+
address@hidden Create Tags Table
address@hidden Creating Tags Tables
address@hidden @code{etags} program
+
+  The @code{etags} program is used to create a tags table file.  It knows
+the syntax of several languages, as described in
address@hidden Syntax}.
+Here is how to run @code{etags}:
+
address@hidden
+etags @address@hidden
address@hidden example
+
address@hidden
+The @code{etags} program reads the specified files, and writes a tags
+table named @file{TAGS} in the current working directory.  You can
+intermix compressed and plain text source file names.  @code{etags}
+knows about the most common compression formats, and does the right
+thing.  So you can compress all your source files and have @code{etags}
+look for compressed versions of its file name arguments, if it does not
+find uncompressed versions.  Under MS-DOS, @code{etags} also looks for
+file names like @samp{mycode.cgz} if it is given @samp{mycode.c} on the
+command line and @samp{mycode.c} does not exist.
+
+  @code{etags} recognizes the language used in an input file based on
+its file name and contents.  You can specify the language with the
address@hidden@var{name}} option, described below.
+
+  If the tags table data become outdated due to changes in the files
+described in the table, the way to update the tags table is the same way it
+was made in the first place.  It is not necessary to do this often.
+
+  If the tags table fails to record a tag, or records it for the wrong
+file, then Emacs cannot possibly find its definition.  However, if the
+position recorded in the tags table becomes a little bit wrong (due to
+some editing in the file that the tag definition is in), the only
+consequence is a slight delay in finding the tag.  Even if the stored
+position is very wrong, Emacs will still find the tag, but it must
+search the entire file for it.
+
+  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.
+
+  One tags table can effectively include another.  Specify the included
+tags file name with the @address@hidden option when creating
+the file that is to include it.  The latter file then acts as if it
+contained all the files specified in the included file, as well as the
+files it directly contains.
+
+  If you specify the source files with relative file names when you run
address@hidden, the tags file will contain file names relative to the
+directory where the tags file was initially written.  This way, you can
+move an entire directory tree containing both the tags file and the
+source files, and the tags file will still refer correctly to the source
+files.
+
+  If you specify absolute file names as arguments to @code{etags}, then
+the tags file will contain absolute file names.  This way, the tags file
+will still refer to the same files even if you move it, as long as the
+source files remain in the same place.  Absolute file names start with
address@hidden/}, or with @address@hidden:/} on MS-DOS and MS-Windows.
+
+  When you want to make a tags table from a great number of files, you
+may have problems listing them on the command line, because some systems
+have a limit on its length.  The simplest way to circumvent this limit
+is to tell @code{etags} to read the file names from its standard input,
+by typing a dash in place of the file names, like this:
+
address@hidden
+find . -name "*.[chCH]" -print | etags -
address@hidden smallexample
+
+  Use the option @address@hidden to specify the language
+explicitly.  You can intermix these options with file names; each one
+applies to the file names that follow it.  Specify
address@hidden to tell @code{etags} to resume guessing the
+language from the file names and file contents.  Specify
address@hidden to turn off language-specific processing
+entirely; then @code{etags} recognizes tags by regexp matching alone
+(@pxref{Etags Regexps}).
+
+  @samp{etags --help} prints 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.
+
address@hidden Etags Regexps
address@hidden 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.
+Each @samp{--regex} option adds to the preceding ones, and applies only
+to the following files.  The syntax is:
+
address@hidden
+--regex=/@var{tagregexp}[/@var{nameregexp}]/
address@hidden smallexample
+
address@hidden
+where @var{tagregexp} is used to match the lines to tag.  It is always
+anchored, that is, it behaves as if preceded by @samp{^}.  If you want
+to account for indentation, just match any initial number of blanks by
+beginning your regular expression with @samp{[ \t]*}.  In the regular
+expressions, @samp{\} quotes the next character, and @samp{\t} stands
+for the tab character.  Note that @code{etags} does not handle the other
+C escape sequences for special characters.
+
address@hidden interval operator (in regexps)
+  The syntax of regular expressions in @code{etags} is the same as in
+Emacs, augmented with the @dfn{interval operator}, which works as in
address@hidden and @code{ed}.  The syntax of an interval operator is
address@hidden@address@hidden,@address@hidden, and its meaning is to match the 
preceding
+expression at least @var{m} times and up to @var{n} times.
+
+  You should not match more characters with @var{tagregexp} than that
+needed to recognize what you want to tag.  If the match is such that
+more characters than needed are unavoidably matched by @var{tagregexp}
+(as will usually be the case), you should add a @var{nameregexp}, to
+pick out just the tag.  This will enable Emacs to find tags more
+accurately and to do completion on tag names more reliably.  You can
+find some examples below.
+
+  The option @samp{--ignore-case-regex} (or @samp{-c}) is like
address@hidden, except that the regular expression provided will be
+matched without regard to case, which is appropriate for various
+programming languages.
+
+  The @samp{-R} option deletes all the regexps defined with
address@hidden options.  It applies to the file names following it, as
+you can see from the following example:
+
address@hidden
+etags --regex=/@var{reg1}/ voo.doo --regex=/@var{reg2}/ \
+    bar.ber -R --lang=lisp los.er
address@hidden smallexample
+
address@hidden
+Here @code{etags} chooses the parsing language for @file{voo.doo} and
address@hidden according to their contents.  @code{etags} also uses
address@hidden to recognize additional tags in @file{voo.doo}, and both
address@hidden and @var{reg2} to recognize additional tags in
address@hidden  @code{etags} uses the Lisp tags rules, and no regexp
+matching, to recognize tags in @file{los.er}.
+
+  A regular expression can be bound to a given language, by prepending
+it with @address@hidden@}}.  When you do this, @code{etags} will use the
+regular expression only for files of that language.  @samp{etags --help}
+prints the list of languages recognised by @code{etags}.  The following
+example tags the @code{DEFVAR} macros in the Emacs source files.
address@hidden applies this regular expression to C files only:
+
address@hidden
+--regex='@address@hidden/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/'
address@hidden smallexample
+
address@hidden
+This feature is particularly useful when storing a list of regular
+expressions in a file.  The following option syntax instructs
address@hidden to read two files of regular expressions.  The regular
+expressions contained in the second file are matched without regard to
+case.
+
address@hidden
+--regex=@@first-file --ignore-case-regex=@@second-file
address@hidden smallexample
+
address@hidden
+A regex file contains one regular expressions per line.  Empty lines,
+and lines beginning with space or tab are ignored.  When the first
+character in a line is @samp{@@}, @code{etags} assumes that the rest of
+the line is the name of a file of regular expressions.  This means that
+such files can be nested.  All the other lines are taken to be regular
+expressions.  For example, one can create a file called
address@hidden with the following contents (the first line in the
+file is a comment):
+
address@hidden
+        -- This is for GNU Emacs source files
address@hidden@}/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/\1/
address@hidden smallexample
+
address@hidden
+and then use it like this:
+
address@hidden
+etags --regex=@@emacs.tags *.[ch] */*.[ch]
address@hidden smallexample
+
+  Here are some more examples.  The regexps are quoted to protect them
+from shell interpretation.
+
address@hidden @bullet
+
address@hidden
+Tag Octave files:
+
address@hidden
+etags --language=none \
+      --regex='/[ \t]*function.*=[ \t]*\([^ \t]*\)[ \t]*(/\1/' \
+      --regex='/###key \(.*\)/\1/' \
+      --regex='/[ \t]*global[ \t].*/' \
+      *.m
address@hidden smallexample
+
address@hidden
+Note that tags are not generated for scripts so that you have to add a
+line by yourself of the form `###key <script-name>' if you want to jump
+to it.
+
address@hidden
+Tag Tcl files:
+
address@hidden
+etags --language=none --regex='/proc[ \t]+\([^ \t]+\)/\1/' *.tcl
address@hidden smallexample
+
address@hidden
+Tag VHDL files:
+
address@hidden
+--language=none \
+--regex='/[ \t]*\(ARCHITECTURE\|CONFIGURATION\) +[^ ]* +OF/' \
+--regex='/[ \t]*\(ATTRIBUTE\|ENTITY\|FUNCTION\|PACKAGE\
+\( BODY\)?\|PROCEDURE\|PROCESS\|TYPE\)[ \t]+\([^ \t(]+\)/\3/'
address@hidden smallexample
address@hidden itemize
+
address@hidden Select Tags Table, Find Tag, Etags Regexps, Tags
address@hidden Selecting a Tags Table
+
address@hidden tag-table-alist
+   At any time Emacs has one @dfn{selected} tags table, and all the commands
+for working with tags tables use the selected one.  To select a tags table,
+use the variable @code{tag-table-alist}.
+
+The value of @code{tag-table-alist} is a list that determines which
address@hidden files should be active for a given buffer.  This is not
+really an association list, in that all elements are checked.  The car
+of each element of this list is a pattern against which the buffers file
+name is compared; if it matches, then the cdr of the list should be the
+name of the tags table to use.  If more than one element of this list
+matches the buffers file name, all of the associated tags tables are
+used.  Earlier ones are searched first.
+
+If the car of elements of this list are strings, they are treated
+as regular-expressions against which the file is compared (like the
address@hidden).  If they are not strings, they are evaluated.
+If they evaluate to address@hidden, the current buffer is considered to
+match.
+
+If the cdr of the elements of this list are strings, they are
+assumed to name a tags file.  If they name a directory, the string
address@hidden is appended to them to get the file name.  If they are not 
+strings, they are evaluated and must return an appropriate string.
+
+For example:
+
address@hidden
+  (setq tag-table-alist
+        '(("/usr/src/public/perl/" . "/usr/src/public/perl/perl-3.0/")
+          ("\\.el$" . "/usr/local/emacs/src/")
+          ("/jbw/gnu/" . "/usr15/degree/stud/jbw/gnu/")
+          ("" . "/usr/local/emacs/src/")
+          ))
address@hidden example
+
+The example defines the tags table alist in the following way:
+ 
address@hidden @bullet
address@hidden
+Anything in the directory @file{/usr/src/public/perl/} 
+should use the @file{TAGS} file @file{/usr/src/public/perl/perl-3.0/TAGS}. 
address@hidden
+Files ending in @file{.el} should use the @file{TAGS} file
address@hidden/usr/local/emacs/src/TAGS}. 
address@hidden
+Anything in or below the directory @file{/jbw/gnu/} should use the 
address@hidden file @file{/usr15/degree/stud/jbw/gnu/TAGS}.  
address@hidden itemize
+
+If you had a file called @file{/usr/jbw/foo.el}, it would use both
address@hidden files, @* @file{/usr/local/emacs/src/TAGS} and
address@hidden/usr15/degree/stud/jbw/gnu/TAGS} (in that order), because it
+matches both patterns.
+
+If the buffer-local variable @code{buffer-tag-table} is set, it names a
+tags table that is searched before all others when @code{find-tag} is
+executed from this buffer.
+
+If there is a file called @file{TAGS} in the same directory as the file
+in question, then that tags file will always be used as well (after the
address@hidden but before the tables specified by this list).
+
+If the variable @code{tags-file-name} is set, the @file{TAGS} file it names
+will apply to all buffers (for backwards compatibility.)  It is searched
+first.
+
address@hidden tags-always-build-completion-table
+If the value of the variable @code{tags-always-build-completion-table}
+is @code{t}, the tags file will always be added to the completion table
+without asking first, regardless of the size of the tags file.
+
address@hidden tags-file-name
address@hidden visit-tags-table
+The function @kbd{M-x visit-tags-table}, is largely made obsolete by
+the variable @code{tag-table-alist}, tells tags commands to use the tags
+table file @var{file} first.  The @var{file} should be the name of a
+file created with the @code{etags} program.  A directory name is also
+acceptable; it means the file @file{TAGS} in that directory.  The
+function only stores the file name you provide in the variable
address@hidden  Emacs does not actually read in the tags table
+contents until you try to use them.  You can set the variable explicitly
+instead of using @code{visit-tags-table}.  The value of the variable
address@hidden is the name of the tags table used by all buffers.
+This is for backward compatibility, and is largely supplanted by the
+variable @code{tag-table-alist}.
+ 
address@hidden Find Tag, Tags Search, Select Tags Table, Tags
address@hidden Finding a Tag
+
+  The most important thing that a tags table enables you to do is to find
+the definition of a specific tag.
+
address@hidden @kbd
address@hidden M-.@: @var{tag &optional other-window}
+Find first definition of @var{tag} (@code{find-tag}).
address@hidden C-u M-.
+Find next alternate definition of last tag specified.
address@hidden C-x 4 . @var{tag}
+Find first definition of @var{tag}, but display it in another window
+(@code{find-tag-other-window}).
address@hidden table
+
address@hidden M-.
address@hidden find-tag
+  @kbd{M-.}@: (@code{find-tag}) is the command to find the definition of
+a specified tag.  It searches through the tags table for that tag, as a
+string, then uses the tags table information to determine the file in
+which the definition is used and the approximate character position of
+the definition in the file.  Then @code{find-tag} visits the file,
+moves point to the approximate character position, and starts searching
+ever-increasing distances away for the text that should appear at
+the beginning of the definition.
+
+  If an empty argument is given (by typing @key{RET}), the sexp in the
+buffer before or around point is used as the name of the tag to find.
address@hidden, for information on sexps.
+
+  The argument to @code{find-tag} need not be the whole tag name; it can
+be a substring of a tag name.  However, there can be many tag names
+containing the substring you specify.  Since @code{find-tag} works by
+searching the text of the tags table, it finds the first tag in the table
+that the specified substring appears in.  To find other tags that match
+the substring, give @code{find-tag} a numeric argument, as in @kbd{C-u
+M-.}.  This does not read a tag name, but continues searching the tag
+table's text for another tag containing the same substring last used.
+If your keyboard has a real @key{META} key, @kbd{M-0 M-.}@: is an easier
+alternative to @kbd{C-u M-.}.
+
+If the optional second argument @var{other-window} is address@hidden, it uses
+another window to display the tag.
+Multiple active tags tables and completion are supported.
+
+Variables of note include the following:
+
address@hidden tag-table-alist
address@hidden tags-file-name
address@hidden tags-build-completion-table
address@hidden buffer-tag-table
address@hidden make-tags-files-invisible
address@hidden tag-mark-stack-max
+
address@hidden @kbd
address@hidden tag-table-alist
+Controls which tables apply to which buffers.
address@hidden tags-file-name
+Stores a default tags table.
address@hidden tags-build-completion-table
+Controls completion behavior.
address@hidden buffer-tag-table
+Specifies a buffer-local table.
address@hidden make-tags-files-invisible
+Sets whether tags tables should be very hidden.
address@hidden tag-mark-stack-max
+Specifies how many tags-based hops to remember.
address@hidden table
+
address@hidden C-x 4 .
address@hidden find-tag-other-window
+  Like most commands that can switch buffers, @code{find-tag} has another
+similar command that displays the new buffer in another window.  @kbd{C-x 4
+.}@: invokes the function @code{find-tag-other-window}.  (This key sequence
+ends with a period.)
+
+  Emacs comes with a tags table file @file{TAGS} (in the directory
+containing Lisp libraries) that includes all the Lisp libraries and all
+the C sources of Emacs.  By specifying this file with @code{visit-tags-table}
+and then using @kbd{M-.}@: you can quickly look at the source of any Emacs
+function.
+
address@hidden Tags Search, List Tags, Find Tag, Tags
address@hidden Searching and Replacing with Tags Tables
+
+  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.  A related command is
address@hidden grep} (@pxref{Compilation}).
+
address@hidden @kbd
address@hidden M-x tags-search @key{RET} @var{regexp} @key{RET}
+Search for @var{regexp} through the files in the selected tags
+table.
address@hidden M-x tags-query-replace @key{RET} @var{regexp} @key{RET} 
@var{replacement} @key{RET}
+Perform a @code{query-replace-regexp} on each file in the selected tags table.
address@hidden M-,
+Restart one of the commands above, from the current location of point
+(@code{tags-loop-continue}).
address@hidden table
+
address@hidden tags-search
+  @kbd{M-x tags-search} reads a regexp using the minibuffer, then
+searches for matches in all the files in the selected tags table, one
+file at a time.  It displays the name of the file being searched so you
+can follow its progress.  As soon as it finds an occurrence,
address@hidden returns.
+
address@hidden M-,
address@hidden tags-loop-continue
+  Having found one match, you probably want to find all the rest.  To find
+one more match, type @kbd{M-,} (@code{tags-loop-continue}) to resume the
address@hidden  This searches the rest of the current buffer, followed
+by the remaining files of the tags address@hidden
+
address@hidden tags-query-replace
+  @kbd{M-x tags-query-replace} performs a single
address@hidden through all the files in the tags table.  It
+reads a regexp to search for and a string to replace with, just like
+ordinary @kbd{M-x query-replace-regexp}.  It searches much like @kbd{M-x
+tags-search}, but repeatedly, processing matches according to your
+input.  @xref{Replace}, for more information on query replace.
+
+  It is possible to get through all the files in the tags table with a
+single invocation of @kbd{M-x tags-query-replace}.  But often it is
+useful to exit temporarily, which you can do with any input event that
+has no special query replace meaning.  You can resume the query replace
+subsequently by typing @kbd{M-,}; this command resumes the last tags
+search or replace command that you did.
+
+  The commands in this section carry out much broader searches than the
address@hidden family.  The @code{find-tag} commands search only for
+definitions of tags that match your substring or regexp.  The commands
address@hidden and @code{tags-query-replace} find every occurrence
+of the regexp, as ordinary search commands and replace commands do in
+the current buffer.
+
+  These commands create buffers only temporarily for the files that they
+have to search (those which are not already visited in Emacs buffers).
+Buffers in which no match is found are quickly killed; the others
+continue to exist.
+
+  It may have struck you that @code{tags-search} is a lot like
address@hidden  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
address@hidden matches works like finding the compilation errors.
address@hidden
+
+  If you wish to process all the files in a selected tags table, but
address@hidden tags-search} and @kbd{M-x tags-query-replace} are not giving
+you the desired result, you can use @kbd{M-x next-file}.
+
address@hidden @kbd
address@hidden C-u M-x next-file
+With a numeric argument, regardless of its value, visit the first
+file in the tags table and prepare to advance sequentially by files.
address@hidden M-x next-file
+Visit the next file in the selected tags table.
address@hidden table
+
address@hidden List Tags,  , Tags Search, Tags
address@hidden Tags Table Inquiries
+
address@hidden @kbd
address@hidden M-x list-tags
+Display a list of the tags defined in a specific program file.
address@hidden M-x tags-apropos
+Display a list of all tags matching a specified regexp.
address@hidden table
+
address@hidden list-tags
+  @kbd{M-x list-tags} reads the name of one of the files described by the
+selected tags table, and displays a list of all the tags defined in that
+file.  The ``file name'' argument is really just a string to compare
+against the names recorded in the tags table; it is read as a string rather
+than a file name.  Therefore, completion and defaulting are not
+available, and you must enter the string the same way it appears in the tag
+table.  Do not include a directory as part of the file name unless the file
+name recorded in the tags table contains that directory.
+
address@hidden tags-apropos
+  @kbd{M-x tags-apropos} is like @code{apropos} for tags.  It reads a regexp,
+then finds all the tags in the selected tags table whose entries match that
+regexp, and displays the tag names found.
+
address@hidden Fortran, Asm Mode, Tags, Programs
address@hidden Fortran Mode
address@hidden Fortran mode
+
+  Fortran mode provides special motion commands for Fortran statements and
+subprograms, and indentation commands that understand Fortran conventions
+of nesting, line numbers, and continuation statements.
+
+  Special commands for comments are provided because Fortran comments are
+unlike those of other languages.
+
+  Built-in abbrevs optionally save typing when you insert Fortran keywords.
+
address@hidden fortran-mode
+  Use @kbd{M-x fortran-mode} to switch to this major mode.  Doing so calls
+the value of @code{fortran-mode-hook} as a function of no arguments if
+that variable has a address@hidden value.
+
address@hidden
+* Motion: Fortran Motion.     Moving point by statements or subprograms.
+* Indent: Fortran Indent.     Indentation commands for Fortran.
+* Comments: Fortran Comments. Inserting and aligning comments.
+* Columns: Fortran Columns.   Measuring columns for valid Fortran.
+* Abbrev: Fortran Abbrev.     Built-in abbrevs for Fortran keywords.
address@hidden menu
+
+  Fortran mode was contributed by Michael Prange.
+
address@hidden Fortran Motion, Fortran Indent, Fortran, Fortran
address@hidden Motion Commands
+
+  Fortran mode provides special commands to move by subprograms (functions
+and subroutines) and by statements.  There is also a command to put the
+region around one subprogram, which is convenient for killing it or moving it.
+
address@hidden C-M-a (Fortran mode)
address@hidden C-M-e (Fortran mode)
address@hidden C-M-h (Fortran mode)
address@hidden C-c C-p (Fortran mode)
address@hidden C-c C-n (Fortran mode)
address@hidden beginning-of-fortran-subprogram
address@hidden end-of-fortran-subprogram
address@hidden mark-fortran-subprogram
address@hidden fortran-previous-statement
address@hidden fortran-next-statement
+
address@hidden @kbd
address@hidden C-M-a
+Move to beginning of address@hidden
+(@code{beginning-of-fortran-subprogram}).
address@hidden C-M-e
+Move to end of subprogram (@code{end-of-fortran-subprogram}).
address@hidden C-M-h
+Put point at beginning of subprogram and mark at end
+(@code{mark-fortran-subprogram}).
address@hidden C-c C-n
+Move to beginning of current or next statement
+(@address@hidden).
address@hidden C-c C-p
+Move to beginning of current or previous statement
+(@address@hidden).
address@hidden table
+
address@hidden Fortran Indent, Fortran Comments, Fortran Motion, Fortran
address@hidden Fortran Indentation
+
+  Special commands and features are available for indenting Fortran
+code.  They make sure various syntactic entities (line numbers, comment line
+indicators, and continuation line flags) appear in the columns that are
+required for standard Fortran.
+
address@hidden
+* Commands: ForIndent Commands. Commands for indenting Fortran.
+* Numbers:  ForIndent Num.      How line numbers auto-indent.
+* Conv:     ForIndent Conv.     Conventions you must obey to avoid trouble.
+* Vars:     ForIndent Vars.     Variables controlling Fortran indent style.
address@hidden menu
+
address@hidden ForIndent Commands, ForIndent Num, Fortran Indent, Fortran Indent
address@hidden Fortran Indentation Commands
+
address@hidden @kbd
address@hidden @key{TAB}
+Indent the current line (@code{fortran-indent-line}).
address@hidden address@hidden
+Break the current line and set up a continuation line.
address@hidden C-M-q
+Indent all the lines of the subprogram point is in
+(@code{fortran-indent-subprogram}).
address@hidden table
+
address@hidden fortran-indent-line
+  @key{TAB} is redefined by Fortran mode to reindent the current line for
+Fortran (@code{fortran-indent-line}).  Line numbers and continuation
+markers are indented to their required columns, and the body of the
+statement is independently indented, based on its nesting in the program.
+
address@hidden C-M-q (Fortran mode)
address@hidden fortran-indent-subprogram
+  The key @kbd{C-M-q} is redefined as @code{fortran-indent-subprogram}, a
+command that reindents all the lines of the Fortran subprogram (function or
+subroutine) containing point.
+
address@hidden M-LFD (Fortran mode)
address@hidden fortran-split-line
+  The key @address@hidden is redefined as @code{fortran-split-line}, a
+command to split a line in the appropriate fashion for Fortran.  In a
+non-comment line, the second half becomes a continuation line and is
+indented accordingly.  In a comment line, both halves become separate
+comment lines.
+
address@hidden ForIndent Num, ForIndent Conv, ForIndent Commands, Fortran Indent
address@hidden Line Numbers and Continuation
+
+  If a number is the first non-whitespace in the line, it is assumed to be
+a line number and is moved to columns 0 through 4.  (Columns are always
+counted from 0 in XEmacs.)  If the text on the line starts with the
+conventional Fortran continuation marker @samp{$}, it is moved to column 5.
+If the text begins with any non whitespace character in column 5, it is
+assumed to be an unconventional continuation marker and remains in column
+5.
+
address@hidden fortran-line-number-indent
+  Line numbers of four digits or less are normally indented one space.
+This amount is controlled by the variable @code{fortran-line-number-indent},
+which is the maximum indentation a line number can have.  Line numbers
+are indented to right-justify them to end in column 4 unless that would
+require more than the maximum indentation.  The default value of the
+variable is 1.
+
address@hidden fortran-electric-line-number
+  Simply inserting a line number is enough to indent it according to these
+rules.  As each digit is inserted, the indentation is recomputed.  To turn
+off this feature, set the variable @code{fortran-electric-line-number} to
address@hidden  Then inserting line numbers is like inserting anything else.
+
address@hidden ForIndent Conv, ForIndent Vars, ForIndent Num, Fortran Indent
address@hidden Syntactic Conventions
+
+  Fortran mode assumes that you follow certain conventions that simplify
+the task of understanding a Fortran program well enough to indent it
+properly:
+
address@hidden fortran-continuation-char
address@hidden @bullet
address@hidden
+Two nested @samp{do} loops never share a @samp{continue} statement.
+
address@hidden
+The same character appears in column 5 of all continuation lines.  It
+is the value of the variable @code{fortran-continuation-char}.
+By default, this character is @samp{$}.
address@hidden itemize
+
address@hidden
+If you fail to follow these conventions, the indentation commands may
+indent some lines unaesthetically.  However, a correct Fortran program will
+retain its meaning when reindented even if the conventions are not
+followed.
+
address@hidden ForIndent Vars,  , ForIndent Conv, Fortran Indent
address@hidden Variables for Fortran Indentation
+
address@hidden fortran-do-indent
address@hidden fortran-if-indent
address@hidden fortran-continuation-indent
address@hidden fortran-check-all-num-for-matching-do
address@hidden fortran-minimum-statement-indent
+  Several additional variables control how Fortran indentation works.
+
address@hidden @code
address@hidden fortran-do-indent
+Extra indentation within each level of @samp{do} statement (the default is 3).
+
address@hidden fortran-if-indent
+Extra indentation within each level of @samp{if} statement (the default is 3).
+
address@hidden fortran-continuation-indent
+Extra indentation for bodies of continuation lines (the default is 5).
+
address@hidden fortran-check-all-num-for-matching-do
+If this is @code{nil}, indentation assumes that each @samp{do}
+statement ends on a @samp{continue} statement.  Therefore, when
+computing indentation for a statement other than @samp{continue}, it
+can save time by not checking for a @samp{do} statement ending there.
+If this is address@hidden, indenting any numbered statement must check
+for a @samp{do} that ends there.  The default is @code{nil}.
+
address@hidden fortran-minimum-statement-indent
+Minimum indentation for Fortran statements.  For standard Fortran,
+this is 6.  Statement bodies are always indented at least this much.
address@hidden table
+
address@hidden Fortran Comments, Fortran Columns, Fortran Indent, Fortran
address@hidden Comments
+
+  The usual Emacs comment commands assume that a comment can follow a line
+of code.  In Fortran, the standard comment syntax requires an entire line
+to be just a comment.  Therefore, Fortran mode replaces the standard Emacs
+comment commands and defines some new variables.
+
+  Fortran mode can also handle a non-standard comment syntax where comments
+start with @samp{!} and can follow other text.  Because only some Fortran
+compilers accept this syntax, Fortran mode will not insert such comments
+unless you have specified to do so in advance by setting the variable
address@hidden to @samp{"!"} (@pxref{Variables}).
+
address@hidden @kbd
address@hidden M-;
+Align comment or insert new comment (@code{fortran-comment-indent}).
+
address@hidden C-x ;
+Applies to nonstandard @samp{!} comments only.
+
address@hidden C-c ;
+Turn all lines of the region into comments, or (with arg)
+turn them back into real code (@code{fortran-comment-region}).
address@hidden table
+
+  @kbd{M-;} in Fortran mode is redefined as the command
address@hidden  Like the usual @kbd{M-;} command,
+it recognizes an existing comment and aligns its text appropriately.
+If there is no existing comment, a comment is inserted and aligned.
+
+Inserting and aligning comments is not the same in Fortran mode as in
+other modes.  When a new comment must be inserted, a full-line comment is
+inserted if the current line is blank.  On a non-blank line, a
+non-standard @samp{!} comment is inserted if you previously specified
+you wanted to use them.  Otherwise a full-line comment is inserted on a
+new line before the current line.
+
+  Non-standard @samp{!} comments are aligned like comments in other
+languages, but full-line comments are aligned differently.  In a
+standard full-line comment, the comment delimiter itself must always
+appear in column zero.  What can be aligned is the text within the
+comment.  You can choose from three styles of alignment by setting the
+variable @code{fortran-comment-indent-style} to one of these values:
+
address@hidden fortran-comment-indent-style
address@hidden fortran-comment-line-column
address@hidden @code
address@hidden fixed
+The text is aligned at a fixed column, which is the value of
address@hidden  This is the default.
address@hidden relative
+The text is aligned as if it were a line of code, but with an
+additional @code{fortran-comment-line-column} columns of indentation.
address@hidden nil
+Text in full-line columns is not moved automatically.
address@hidden table
+
address@hidden fortran-comment-indent-char
+  You can also specify the character to be used to indent within
+full-line comments by setting the variable @code{fortran-comment-indent-char}
+to the character you want to use.
+
address@hidden comment-line-start
address@hidden comment-line-start-skip
+  Fortran mode introduces two variables @code{comment-line-start} and
address@hidden, which do for full-line comments what
address@hidden and @code{comment-start-skip} do for
+ordinary text-following comments.  Normally these are set properly by
+Fortran mode, so you do not need to change them.
+
+  The normal Emacs comment command @kbd{C-x ;} has not been redefined.
+It can therefore be used if you use @samp{!} comments, but is useless in
+Fortran mode otherwise. 
+
address@hidden C-c ; (Fortran mode)
address@hidden fortran-comment-region
address@hidden fortran-comment-region
+  The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
+lines of the region into comments by inserting the string @samp{C$$$} at
+the front of each one.  With a numeric arg, the region is turned back into
+live code by deleting @samp{C$$$} from the front of each line.  You can
+control the string used for the comments by setting the variable
address@hidden  Note that here we have an example of a
+command and a variable with the same name; the two uses of the name never
+conflict because in Lisp and in Emacs it is always clear from the context
+which one is referred to.
+
address@hidden Fortran Columns, Fortran Abbrev, Fortran Comments, Fortran
address@hidden Columns
+
address@hidden @kbd
address@hidden C-c C-r
+Displays a ``column ruler'' momentarily above the current line
+(@code{fortran-column-ruler}).
address@hidden C-c C-w
+Splits the current window horizontally so that it is 72 columns wide.
+This may help you avoid going over that limit (@code{fortran-window-create}).
address@hidden table
+
address@hidden C-c C-r (Fortran mode)
address@hidden fortran-column-ruler
+  The command @kbd{C-c C-r} (@code{fortran-column-ruler}) shows a column
+ruler above the current line.  The comment ruler consists of two lines
+of text that show you the locations of columns with special significance
+in Fortran programs.  Square brackets show the limits of the columns for
+line numbers, and curly brackets show the limits of the columns for the
+statement body.  Column numbers appear above them.
+
+  Note that the column numbers count from zero, as always in XEmacs.  As
+a result, the numbers may not be those you are familiar with; but the
+actual positions in the line are standard Fortran.
+
+  The text used to display the column ruler is the value of the variable
address@hidden  By changing this variable, you can change
+the display.
+
address@hidden C-c C-w (Fortran mode)
address@hidden fortran-window-create
+  For even more help, use @kbd{C-c C-w} (@code{fortran-window-create}), a
+command which splits the current window horizontally, resulting in a window 72
+columns wide.  When you edit in this window, you can immediately see
+when a line gets too wide to be correct Fortran.
+
address@hidden Fortran Abbrev,  , Fortran Columns, Fortran
address@hidden Fortran Keyword Abbrevs
+
+  Fortran mode provides many built-in abbrevs for common keywords and
+declarations.  These are the same sort of abbrevs that you can define
+yourself.  To use them, you must turn on Abbrev mode.  @pxref{Abbrevs}.
+
+  The built-in abbrevs are unusual in one way: they all start with a
+semicolon.  You cannot normally use semicolon in an abbrev, but Fortran
+mode makes this possible by changing the syntax of semicolon to ``word
+constituent''.
+
+  For example, one built-in Fortran abbrev is @samp{;c} for
address@hidden  If you insert @samp{;c} and then insert a punctuation
+character such as a space or a newline, the @samp{;c} changes
+automatically to @samp{continue}, provided Abbrev mode is address@hidden
+
+  Type @samp{;?} or @samp{;C-h} to display a list of all built-in
+Fortran abbrevs and what they stand for.
+
address@hidden Asm Mode,  , Fortran, Programs
address@hidden Asm Mode
+
address@hidden Asm mode
+Asm mode is a major mode for editing files of assembler code.  It
+defines these commands:
+
address@hidden @kbd
address@hidden @key{TAB}
address@hidden
address@hidden @key{LFD}
+Insert a newline and then indent using @code{tab-to-tab-stop}.
address@hidden :
+Insert a colon and then remove the indentation from before the label
+preceding colon.  Then do @code{tab-to-tab-stop}.
address@hidden ;
+Insert or align a comment.
address@hidden table
+
+  The variable @code{asm-comment-char} specifies which character
+starts comments in assembler syntax.
+
address@hidden Running, Abbrevs, Programs, Top
address@hidden Compiling and Testing Programs
+
+  The previous chapter discusses the Emacs commands that are useful for
+making changes in programs.  This chapter deals with commands that assist
+in the larger process of developing and maintaining programs.
+
address@hidden
+* Compilation::        Compiling programs in languages other than Lisp
+                        (C, Pascal, etc.)
+* Modes: Lisp Modes.   Various modes for editing Lisp programs, with
+                       different facilities for running the Lisp programs.
+* Libraries: Lisp Libraries.      Creating Lisp programs to run in Emacs.
+* Eval: Lisp Eval.     Executing a single Lisp expression in Emacs.
+* Debug: Lisp Debug.   Debugging Lisp programs running in Emacs.
+* Interaction: Lisp Interaction.  Executing Lisp in an Emacs buffer.
+* External Lisp::      Communicating through Emacs with a separate Lisp.
address@hidden menu
+
address@hidden Compilation, Lisp Modes, Running, Running
address@hidden Running ``make'', or Compilers Generally
address@hidden inferior process
address@hidden make
address@hidden compilation errors
address@hidden error log
+
+  Emacs can run compilers for non-interactive languages like C and
+Fortran as inferior processes, feeding the error log into an Emacs buffer.
+It can also parse the error messages and visit the files in which errors
+are found, moving point to the line where the error occurred.
+
address@hidden @kbd
address@hidden M-x compile
+Run a compiler asynchronously under Emacs, with error messages to
address@hidden buffer.
address@hidden M-x grep
+Run @code{grep} asynchronously under Emacs, with matching lines
+listed in the buffer named @samp{*compilation*}.
address@hidden M-x kill-compilation
+Kill the process made by the @code{M-x compile} command.
address@hidden M-x kill-grep
+Kill the running compilation or @code{grep} subprocess.
address@hidden C-x `
+Visit the next compiler error message or @code{grep} match.
address@hidden table
+
address@hidden compile
+  To run @code{make} or another compiler, type @kbd{M-x compile}.  This
+command reads a shell command line using the minibuffer, then executes
+the specified command line in an inferior shell with output going to the
+buffer named @samp{*compilation*}.  By default, the current buffer's
+default directory is used as the working directory for the execution of
+the command; therefore, the makefile comes from this directory.
+
address@hidden compile-command
+  When the shell command line is read, the minibuffer appears containing a
+default command line (the command you used the last time you typed
address@hidden compile}).  If you type just @key{RET}, the same command line is 
used
+again.  The first @kbd{M-x compile} provides @code{make -k} as the default.
+The default is taken from the variable @code{compile-command}; if the
+appropriate compilation command for a file is something other than
address@hidden -k}, it can be useful to have the file specify a local value for
address@hidden (@pxref{File Variables}).
+
address@hidden compiling files
+  When you start a compilation, the buffer @samp{*compilation*} is
+displayed in another window but not selected.  Its mode line displays
+the word @samp{run} or @samp{exit} in the parentheses to tell you whether
+compilation is finished.  You do not have to keep this buffer visible;
+compilation continues in any case.
+
address@hidden kill-compilation
+  To kill the compilation process, type @kbd{M-x kill-compilation}.  The mode
+line of the @samp{*compilation*} buffer changes to say @samp{signal}
+instead of @samp{run}.  Starting a new compilation also kills any
+running compilation, as only one can occur at any time.  Starting a new
+compilation prompts for confirmation before actually killing a
+compilation that is address@hidden
+
address@hidden C-x `
address@hidden next-error
+  To parse the compiler error messages, type @kbd{C-x `}
+(@code{next-error}).  The character following @kbd{C-x} is the grave
+accent, not the single quote.  The command displays the buffer
address@hidden in one window and the buffer in which the next
+error occurred in another window.  Point in that buffer is moved to the
+line where the error was found.  The corresponding error message is
+scrolled to the top of the window in which @samp{*compilation*} is
+displayed.
+
+  The first time you use @kbd{C-x `} after the start of a compilation, it
+parses all the error messages, visits all the files that have error
+messages, and creates markers pointing at the lines the error messages
+refer to.  It then moves to the first error message location.  Subsequent
+uses of @kbd{C-x `} advance down the data set up by the first use.  When
+the preparsed error messages are exhausted, the next @kbd{C-x `} checks for
+any more error messages that have come in; this is useful if you start
+editing compiler errors while compilation is still going on.  If no
+additional error messages have come in, @kbd{C-x `} reports an error.
+
+  @kbd{C-u C-x `} discards the preparsed error message data and parses the
address@hidden buffer again, then displays the first error.
+This way, you can process the same set of errors again.
+
+  Instead of running a compiler, you can run @code{grep} and see the
+lines on which matches were found.  To do this, type @kbd{M-x grep} with
+an argument line that contains the same arguments you would give to
address@hidden: a @code{grep}-style regexp (usually in single quotes to
+quote the shell's special characters) followed by filenames, which may
+use wildcard characters.  The output from @code{grep} goes in the
address@hidden buffer.  You can use @kbd{C-x `} to find the lines that
+match as if they were compilation errors.
+
+  Note: a shell is used to run the compile command, but the shell is not
+run in interactive mode.  In particular, this means that the shell starts
+up with no prompt.  If you find your usual shell prompt making an
+unsightly appearance in the @samp{*compilation*} buffer, it means you
+have made a mistake in your shell's initialization file (@file{.cshrc}
+or @file{.shrc} or @dots{}) by setting the prompt unconditionally.  The
+shell initialization file should set the prompt only if there already is
+a prompt.  Here's how to do it in @code{csh}:
+
address@hidden
+if ($?prompt) set prompt = ...
address@hidden example
+
address@hidden Lisp Modes, Lisp Libraries, Compilation, Running
address@hidden Major Modes for Lisp
+
+  Emacs has four different major modes for Lisp.  They are the same in
+terms of editing commands, but differ in the commands for executing Lisp
+expressions.
+
address@hidden @asis
address@hidden Emacs-Lisp mode
+The mode for editing source files of programs to run in Emacs Lisp.
+This mode defines @kbd{C-M-x} to evaluate the current defun.
address@hidden Libraries}.
address@hidden Lisp Interaction mode
+The mode for an interactive session with Emacs Lisp.  It defines
address@hidden to evaluate the sexp before point and insert its value in the
+buffer.  @xref{Lisp Interaction}.
address@hidden Lisp mode
+The mode for editing source files of programs that run in other dialects
+of Lisp than Emacs Lisp.  This mode defines @kbd{C-M-x} to send the
+current defun to an inferior Lisp process.  @xref{External Lisp}.
address@hidden Inferior Lisp mode
+The mode for an interactive session with an inferior Lisp process.
+This mode combines the special features of Lisp mode and Shell mode
+(@pxref{Shell Mode}).
address@hidden Scheme mode
+Like Lisp mode but for Scheme programs.
address@hidden Inferior Scheme mode
+The mode for an interactive session with an inferior Scheme process.
address@hidden table
+
address@hidden Lisp Libraries, Lisp Eval, Lisp Modes, Running
address@hidden Libraries of Lisp Code for Emacs
address@hidden libraries
address@hidden loading Lisp code
+
+  Lisp code for Emacs editing commands is stored in files whose names
+conventionally end in @file{.el}.  This ending tells Emacs to edit them in
+Emacs-Lisp mode (@pxref{Lisp Modes}).
+
address@hidden
+* Loading::            Loading libraries of Lisp code into Emacs for use.
+* Compiling Libraries:: Compiling a library makes it load and run faster.
+* Mocklisp::           Converting Mocklisp to Lisp so XEmacs can run it.
address@hidden menu
+
address@hidden Loading, Compiling Libraries, Lisp Libraries, Lisp Libraries
address@hidden Loading Libraries
+
address@hidden @kbd
address@hidden M-x load-file @var{file}
+Load the file @var{file} of Lisp code.
address@hidden M-x load-library @var{library}
+Load the library named @var{library}.
address@hidden M-x locate-library @var{library} &optional @var{nosuffix}
+Show the full path name of Emacs library @var{library}.
address@hidden table
+
address@hidden load-file
+  To execute a file of Emacs Lisp, use @kbd{M-x load-file}.  This
+command reads the file name you provide in the minibuffer, then executes
+the contents of that file as Lisp code.  It is not necessary to visit
+the file first; in fact, this command reads the file as found on
+disk, not the text in an Emacs buffer.
+
address@hidden load
address@hidden load-library
+  Once a file of Lisp code is installed in the Emacs Lisp library
+directories, users can load it using @kbd{M-x load-library}.  Programs can
+load it by calling @code{load-library}, or with @code{load}, a more primitive
+function that is similar but accepts some additional arguments.
+
+  @kbd{M-x load-library} differs from @kbd{M-x load-file} in that it
+searches a sequence of directories and tries three file names in each
+directory.  The three names are: first, the specified name with @file{.elc}
+appended; second, the name with @file{.el} appended; third, the specified
+name alone.  A @file{.elc} file would be the result of compiling the Lisp
+file into byte code;  if possible, it is loaded in preference to the Lisp
+file itself because the compiled file loads and runs faster.
+
address@hidden loading libraries
+  Because the argument to @code{load-library} is usually not in itself
+a valid file name, file name completion is not available.  In fact, when
+using this command, you usually do not know exactly what file name
+will be used.
+
address@hidden load-path
+  The sequence of directories searched by @kbd{M-x load-library} is
+specified by the variable @code{load-path}, a list of strings that are
+directory names.  The elements of this list may not begin with "@samp{~}",
+so you must call @code{expand-file-name} on them before adding them to
+the list.  The default value of the list contains the directory where
+the Lisp code for Emacs itself is stored.  If you have libraries of your
+own, put them in a single directory and add that directory to
address@hidden  @code{nil} in this list stands for the current
+default directory, but it is probably not a good idea to put @code{nil}
+in the list.  If you start wishing that @code{nil} were in the list, you
+should probably use @kbd{M-x load-file} for this case.
+
+The variable is initialized by the @b{EMACSLOADPATH} environment
+variable. If no value is specified, the variable takes the default value
+specified in the file @file{paths.h} when Emacs was built. If a path
+isn't specified in @file{paths.h}, a default value is obtained from the
+file system, near the directory in which the Emacs executable resides.
+
address@hidden locate-library
+ Like @kbd{M-x load-library}, @kbd{M-x locate-library} searches the 
+directories in @code{load-path} to find the file that @kbd{M-x load-library}
+would load.  If the optional second argument @var{nosuffix} is
address@hidden, the suffixes @file{.elc} or @file{.el} are not added to
+the specified name @var{library} (like calling @code{load} instead of
address@hidden).
+
address@hidden autoload
+   You often do not have to give any command to load a library, because the
+commands defined in the library are set up to @dfn{autoload} that library.
+Running any of those commands causes @code{load} to be called to load the
+library; this replaces the autoload definitions with the real ones from the
+library.
+
+  If autoloading a file does not finish, either because of an error or
+because of a @kbd{C-g} quit, all function definitions made by the file
+are undone automatically.  So are any calls to @code{provide}.  As a
+consequence, the entire file is loaded a second time if you use one of
+the autoloadable commands again.  This prevents problems when the
+command is no longer autoloading but is working incorrectly because the file
+was only partially loaded.  Function definitions are undone only for
+autoloading; explicit calls to @code{load} do not undo anything if
+loading is not completed.
+
address@hidden after-load-alist
+The variable @code{after-load-alist} takes an alist of expressions to be
+evaluated when particular files are loaded.  Each element has the form
address@hidden(@var{filename} forms...)}.  When @code{load} is run and the 
filename
+argument is @var{filename}, the forms in the corresponding element are
+executed at the end of loading.
+
address@hidden must match exactly.  Normally @var{filename} is the
+name of a library, with no directory specified, since that is how load
+is normally called.  An error in @code{forms} does not undo the load, but
+it does prevent execution of the rest of the @code{forms}.
+
address@hidden Compiling Libraries, Mocklisp, Loading, Lisp Libraries
address@hidden Compiling Libraries
+
address@hidden byte code
+  Emacs Lisp code can be compiled into byte-code which loads faster,
+takes up less space when loaded, and executes faster.
+
address@hidden @kbd
address@hidden M-x batch-byte-compile
+Run byte-compile-file on the files remaining on the command line.
address@hidden M-x byte-compile-buffer &optional @var{buffer}
+Byte-compile and evaluate contents of @var{buffer} (default is current 
+buffer).
address@hidden M-x byte-compile-file
+Compile a file of Lisp code named @var{filename} into a file of byte code.
address@hidden M-x byte-compile-and-load-file @var{filename}
+Compile a file of Lisp code named @var{filename} into a file of byte
+code and load it.
address@hidden M-x byte-recompile-directory @var{directory}
+Recompile every @file{.el} file in @var{directory} that needs recompilation.
address@hidden M-x disassemble
+Print disassembled code for @var{object} on (optional) @var{stream}.
address@hidden make-obsolete
address@hidden M-x make-obsolete @var{function new} 
+Make the byte-compiler warn that @var{function} is obsolete and @var{new} 
+should be used instead.
address@hidden table
+
address@hidden byte-compile-file
address@hidden byte-compile-and-load-file
address@hidden byte-compile-buffer
+ @kbd{byte-compile-file} creates a byte-code compiled file from an
+Emacs-Lisp source file.  The default argument for this function is the
+file visited in the current buffer.  The function reads the specified
+file, compiles it into byte code, and writes an output file whose name
+is made by appending @file{c} to the input file name.  Thus, the file
address@hidden would be compiled into @file{rmail.elc}. To compile a
+file of Lisp code named @var{filename} into a file of byte code and
+then load it, use @code{byte-compile-and-load-file}. To compile and
+evaluate Lisp code in a given buffer, use @code{byte-compile-buffer}.
+
address@hidden byte-recompile-directory
+  To recompile all changed Lisp files in a directory, use @kbd{M-x
+byte-recompile-directory}.  Specify just the directory name as an argument.
+Each @file{.el} file that has been byte-compiled before is byte-compiled
+again if it has changed since the previous compilation.  A numeric argument
+to this command tells it to offer to compile each @file{.el} file that has
+not been compiled yet.  You must answer @kbd{y} or @kbd{n} to each
+offer.
+
address@hidden batch-byte-compile
+  You can use the function @code{batch-byte-compile} to invoke Emacs
+non-interactively from the shell to do byte compilation.  When you use
+this function, the files to be compiled are specified with command-line
+arguments.  Use a shell command of the form:
+
address@hidden
+emacs -batch -f batch-byte-compile @var{files}...
address@hidden example
+
+  Directory names may also be given as arguments; in that case,
address@hidden is invoked on each such directory.
address@hidden uses all remaining command-line arguments as
+file or directory names, then kills the Emacs process.
+
address@hidden disassemble
+  @kbd{M-x disassemble} explains the result of byte compilation.  Its
+argument is a function name.  It displays the byte-compiled code in a help
+window in symbolic form, one instruction per line.  If the instruction
+refers to a variable or constant, that is shown, too.
+
address@hidden Mocklisp,,Compiling Libraries,Lisp Libraries
address@hidden Converting Mocklisp to Lisp
+
address@hidden mocklisp
address@hidden convert-mocklisp-buffer
+  XEmacs can run Mocklisp files by converting them to Emacs Lisp first.
+To convert a Mocklisp file, visit it and then type @kbd{M-x
+convert-mocklisp-buffer}.  Then save the resulting buffer of Lisp file in a
+file whose name ends in @file{.el} and use the new file as a Lisp library.
+
+  You cannot currently byte-compile converted Mocklisp code.
+The reason is that converted Mocklisp code uses some special Lisp features
+to deal with Mocklisp's incompatible ideas of how arguments are evaluated
+and which values signify ``true'' or ``false''.
+
address@hidden Lisp Eval, Lisp Debug, Lisp Libraries, Running
address@hidden Evaluating Emacs-Lisp Expressions
address@hidden Emacs-Lisp mode
+
address@hidden emacs-lisp-mode
+  Lisp programs intended to be run in Emacs should be edited in
+Emacs-Lisp mode; this will happen automatically for file names ending in
address@hidden  By contrast, Lisp mode itself should be used for editing
+Lisp programs intended for other Lisp systems.  Emacs-Lisp mode can be
+selected with the command @kbd{M-x emacs-lisp-mode}.
+
+  For testing of Lisp programs to run in Emacs, it is useful to be able
+to evaluate part of the program as it is found in the Emacs buffer.  For
+example, if you change the text of a Lisp function definition and then
+evaluate the definition, Emacs installs the change for future calls to the
+function.  Evaluation of Lisp expressions is also useful in any kind of
+editing task for invoking non-interactive functions (functions that are
+not commands).
+
address@hidden @kbd
address@hidden M-:
+Read a Lisp expression in the minibuffer, evaluate it, and print the
+value in the minibuffer (@code{eval-expression}).
address@hidden C-x C-e
+Evaluate the Lisp expression before point, and print the value in the
+minibuffer (@code{eval-last-sexp}).
address@hidden C-M-x
+Evaluate the defun containing point or after point, and print the value in
+the minibuffer (@code{eval-defun}).
address@hidden M-x eval-region
+Evaluate all the Lisp expressions in the region.
address@hidden M-x eval-current-buffer
+Evaluate all the Lisp expressions in the buffer.
address@hidden table
+
address@hidden M-:
address@hidden eval-expression
+  @kbd{M-:} (@code{eval-expression}) is the most basic command
+for evaluating a Lisp expression interactively.  It reads the expression
+using the minibuffer, so you can execute any expression on a buffer
+regardless of what the buffer contains.  When evaluation is complete,
+the current buffer is once again the buffer that was current when
address@hidden:} was typed.
+
address@hidden C-M-x
address@hidden eval-defun
+  In Emacs-Lisp mode, the key @kbd{C-M-x} is bound to the function
address@hidden, which parses the defun containing point or following point
+as a Lisp expression and evaluates it.  The value is printed in the echo
+area.  This command is convenient for installing in the Lisp environment
+changes that you have just made in the text of a function definition.
+
address@hidden C-x C-e
address@hidden eval-last-sexp
+  The command @kbd{C-x C-e} (@code{eval-last-sexp}) performs a similar job
+but is available in all major modes, not just Emacs-Lisp mode.  It finds
+the sexp before point, reads it as a Lisp expression, evaluates it, and
+prints the value in the echo area.  It is sometimes useful to type in an
+expression and then, with point still after it, type @kbd{C-x C-e}.
+
+  If @kbd{C-M-x} or @kbd{C-x C-e} are given a numeric argument, they
+print the value by inserting it into the current buffer at point, rather
+than in the echo area.  The argument value does not matter.
+
address@hidden eval-region
address@hidden eval-current-buffer
+  The most general command for evaluating Lisp expressions from a buffer
+is @code{eval-region}.  @kbd{M-x eval-region} parses the text of the
+region as one or more Lisp expressions, evaluating them one by one.
address@hidden eval-current-buffer} is similar, but it evaluates the entire
+buffer.  This is a reasonable way to install the contents of a file of
+Lisp code that you are just ready to test.  After finding and fixing a
+bug, use @kbd{C-M-x} on each function that you change, to keep the Lisp
+world in step with the source file.
+
address@hidden Lisp Debug, Lisp Interaction, Lisp Eval, Running
address@hidden The Emacs-Lisp Debugger
address@hidden debugger
+
address@hidden debug-on-error
address@hidden debug-on-quit
+  XEmacs contains a debugger for Lisp programs executing inside it.
+This debugger is normally not used; many commands frequently get Lisp
+errors when invoked in inappropriate contexts (such as @kbd{C-f} at the
+end of the buffer) and it would be unpleasant to enter a special
+debugging mode in this case.  When you want to make Lisp errors invoke
+the debugger, you must set the variable @code{debug-on-error} to
address@hidden  Quitting with @kbd{C-g} is not considered an error, and
address@hidden has no effect on the handling of @kbd{C-g}.
+However, if you set @code{debug-on-quit} to be address@hidden, @kbd{C-g} will
+invoke the debugger.  This can be useful for debugging an infinite loop;
+type @kbd{C-g} once the loop has had time to reach its steady state.
address@hidden has no effect on address@hidden
+
address@hidden debug-on-entry
address@hidden cancel-debug-on-entry
address@hidden debug
+  You can make Emacs enter the debugger when a specified function
+is called or at a particular place in Lisp code.  Use @kbd{M-x
+debug-on-entry} with argument @var{fun-name} to have Emacs enter the
+debugger as soon as @var{fun-name} is called. Use
address@hidden cancel-debug-on-entry} to make the function stop entering the
+debugger when called.  (Redefining the function also does this.)  To enter
+the debugger from some other place in Lisp code, you must insert the
+expression @code{(debug)} there and install the changed code with
address@hidden  @xref{Lisp address@hidden
+
+  When the debugger is entered, it displays the previously selected buffer
+in one window and a buffer named @samp{*Backtrace*} in another window.  The
+backtrace buffer contains one line for each level of Lisp function
+execution currently going on.  At the beginning of the buffer is a message
+describing the reason that the debugger was invoked, for example, an
+error message if it was invoked due to an error.
+
+  The backtrace buffer is read-only and is in Backtrace mode, a special
+major mode in which letters are defined as debugger commands.  The
+usual Emacs editing commands are available; you can switch windows to
+examine the buffer that was being edited at the time of the error, and
+you can switch buffers, visit files, and perform any other editing
+operations.  However, the debugger is a recursive editing level
+(@pxref{Recursive Edit}); it is a good idea to return to the backtrace
+buffer and explicitly exit the debugger when you don't want to use it any
+more.  Exiting the debugger kills the backtrace buffer.
+
address@hidden current stack frame
+  The contents of the backtrace buffer show you the functions that are
+executing and the arguments that were given to them.  It also allows you
+to specify a stack frame by moving point to the line describing that
+frame.  The frame whose line point is on is considered the @dfn{current
+frame}.  Some of the debugger commands operate on the current frame.
+Debugger commands are mainly used for stepping through code one
+expression at a time.  Here is a list of them:
+
address@hidden @kbd
address@hidden c
+Exit the debugger and continue execution.  In most cases, execution of
+the program continues as if the debugger had never been entered (aside
+from the effect of any variables or data structures you may have changed
+while inside the debugger).  This includes entry to the debugger due to
+function entry or exit, explicit invocation, and quitting or certain
+errors.  Most errors cannot be continued; trying to continue an error usually
+causes the same error to occur again.
address@hidden d
+Continue execution, but enter the debugger the next time a Lisp
+function is called.  This allows you to step through the
+subexpressions of an expression, and see what the subexpressions do and
+what values they compute.
+
+When you enter the debugger this way, Emacs flags the stack frame for the
+function call from which you entered.  The same function is then called
+when you exit the frame.  To cancel this flag, use @kbd{u}.
address@hidden b
+Set up to enter the debugger when the current frame is exited.  Frames
+that invoke the debugger on exit are flagged with stars.
address@hidden u
+Don't enter the debugger when the current frame is exited.  This
+cancels a @kbd{b} command on a frame.
address@hidden e
+Read a Lisp expression in the minibuffer, evaluate it, and print the
+value in the echo area.  This is equivalent to the command @kbd{M-:}.
address@hidden q
+Terminate the program being debugged; return to top-level Emacs
+command execution.
+
+If the debugger was entered due to a @kbd{C-g} but you really want
+to quit, not to debug, use the @kbd{q} command.
address@hidden r
+Return a value from the debugger.  The value is computed by reading an
+expression with the minibuffer and evaluating it.
+
+The value returned by the debugger makes a difference when the debugger
+was invoked due to exit from a Lisp call frame (as requested with @kbd{b});
+then the value specified in the @kbd{r} command is used as the value of
+that frame.
+
+The debugger's return value also matters with many errors.  For example,
address@hidden errors will use the debugger's return value
+instead of the invalid argument; @code{no-catch} errors will use the
+debugger value as a throw tag instead of the tag that was not found.
+If an error was signaled by calling the Lisp function @code{signal},
+the debugger's return value is returned as the value of @code{signal}.
address@hidden table
+
address@hidden Lisp Interaction, External Lisp, Lisp Debug, Running
address@hidden Lisp Interaction Buffers
+
+  The buffer @samp{*scratch*}, which is selected when Emacs starts up, is
+provided for evaluating Lisp expressions interactively inside Emacs.  Both
+the expressions you evaluate and their output goes in the buffer.
+
+  The @samp{*scratch*} buffer's major mode is Lisp Interaction mode, which
+is the same as Emacs-Lisp mode except for one command, @key{LFD}.  In
+Emacs-Lisp mode, @key{LFD} is an indentation command.  In Lisp
+Interaction mode, @key{LFD} is bound to @code{eval-print-last-sexp}.  This
+function reads the Lisp expression before point, evaluates it, and inserts
+the value in printed representation before point.
+
+ The way to use the @samp{*scratch*} buffer is to insert Lisp
+expressions at the end, ending each one with @key{LFD} so that it will
+be evaluated.  The result is a complete typescript of the expressions
+you have evaluated and their values.
+
address@hidden lisp-interaction-mode
+  The rationale for this feature is that Emacs must have a buffer when it
+starts up, but that buffer is not useful for editing files since a new
+buffer is made for every file that you visit.  The Lisp interpreter
+typescript is the most useful thing I can think of for the initial buffer
+to do.  @kbd{M-x lisp-interaction-mode} will put any buffer in Lisp
+Interaction mode.
+
address@hidden External Lisp,, Lisp Interaction, Running
address@hidden Running an External Lisp
+
+  Emacs has facilities for running programs in other Lisp systems.  You can
+run a Lisp process as an inferior of Emacs, and pass expressions to it to
+be evaluated.  You can also pass changed function definitions directly from
+the Emacs buffers in which you edit the Lisp programs to the inferior Lisp
+process.
+
address@hidden run-lisp
+  To run an inferior Lisp process, type @kbd{M-x run-lisp}.  This runs the
+program named @code{lisp}, the same program you would run by typing
address@hidden as a shell command, with both input and output going through an
+Emacs buffer named @samp{*lisp*}.  In other words, any ``terminal output''
+from Lisp will go into the buffer, advancing point, and any ``terminal
+input'' for Lisp comes from text in the buffer.  To give input to Lisp, go
+to the end of the buffer and type the input, terminated by @key{RET}.  The
address@hidden buffer is in Inferior Lisp mode, which has all the
+special characteristics of Lisp mode and Shell mode (@pxref{Shell Mode}).
+
address@hidden lisp-mode
+  Use Lisp mode to run the source files of programs in external Lisps.
+You can select this mode with @kbd{M-x lisp-mode}.  It is used automatically
+for files whose names end in @file{.l} or @file{.lisp}, as most Lisp
+systems usually expect.
+
address@hidden C-M-x
address@hidden lisp-send-defun
+  When you edit a function in a Lisp program you are running, the easiest
+way to send the changed definition to the inferior Lisp process is the key
address@hidden  In Lisp mode, this key runs the function @code{lisp-send-defun},
+which finds the defun around or following point and sends it as input to
+the Lisp process.  (Emacs can send input to any inferior process regardless
+of what buffer is current.)
+
+  Contrast the meanings of @kbd{C-M-x} in Lisp mode (for editing programs
+to be run in another Lisp system) and Emacs-Lisp mode (for editing Lisp
+programs to be run in Emacs): in both modes it has the effect of installing
+the function definition that point is in, but the way of doing so is
+different according to where the relevant Lisp environment is found.
address@hidden Modes}.
address@hidden This is part of the XEmacs manual.
address@hidden Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software 
Foundation, Inc.
address@hidden See file xemacs.texi for copying conditions.
address@hidden Packages, Basic, Startup Paths, Top
address@hidden  node-name,  next,  previous,  up
+
address@hidden Packages
address@hidden packages
+
+The XEmacs 21 distribution comes only with a very basic set of
+built-in modes and packages.  Most of the packages that were part of
+the distribution of earlier versions of XEmacs are now available
+separately.  The installer as well as the user can choose which
+packages to install; the actual installation process is easy.
+This gives an installer the ability to tailor an XEmacs installation for
+local needs with safe removal of unnecessary code.
+
address@hidden
+* Package Terminology:: Understanding different kinds of packages.
+* Installing Packages:: How to install packages.
+* Building Packages::   Building packages from CVS sources.
+* Local.rules File::    This is an important file that you must create.
+* Creating Packages::   The basics.
+* Available Packages::  A brief directory of packaged LISP.
address@hidden menu
+
address@hidden Package Terminology, Installing Packages, , Packages
address@hidden  node-name,  next,  previous,  up
address@hidden Package Terminology:
address@hidden Package Flavors
+
+There are two main flavors of packages.
+
address@hidden @bullet
address@hidden
+Regular Packages
address@hidden regular packages
+A regular package is one in which multiple files are involved and one
+may not in general safely remove any of them.
+
address@hidden
+Single-File Packages
address@hidden single-file packages
+A single-file package is an aggregate collection of thematically
+related but otherwise independent lisp files.  These files are bundled 
+together for download convenience and individual files may be deleted at
+will without any loss of functionality.  However, we would recommend
+that you follow this rule of thumb: "When in doubt, don't delete".
address@hidden itemize
+
address@hidden Package Distributions
address@hidden package distributions
+XEmacs Lisp packages are distributed in two ways, depending on the
+intended use.  Binary Packages are for installers and end-users that can
+be installed directly into an XEmacs package directory.  Source Packages
+are for developers and include all files necessary for rebuilding
+bytecompiled lisp and creating tarballs for distribution.
+
address@hidden Binary Packages
address@hidden binary packages
+Binary packages may be installed directly into an XEmacs package
+hierarchy.
+
address@hidden Source Packages
address@hidden source packages
+Source packages contain all of the Package author's (where appropriate
+in regular packages) source code plus all of the files necessary to
+build distribution tarballs (Unix Tar format files, gzipped for space
+savings).
+
+Currently, source packages are only available via CVS.  See
address@hidden://cvs.xemacs.org/} for details.
address@hidden Installing Packages, Building Packages, Package Terminology, 
Packages
address@hidden  node-name,  next,  previous,  up
address@hidden installing packages
address@hidden install
address@hidden Installing Packages:
address@hidden Getting Started
+
+When you first download XEmacs 21, you will usually first grab the
address@hidden distribution},
address@hidden core distribution
+a file called
address@hidden (Replace the @t{21.x.x} by the current version
+number.)  The core distribution contains the sources of XEmacs and a
+minimal set of Emacs Lisp files, which are in the subdirectory named
address@hidden  This subdirectory used to contain all Emacs Lisp files
+distributed with XEmacs.  Now, to conserve disk space, most
+non-essential packages were made optional.
+
address@hidden Choosing the Packages You Need
address@hidden choosing packages
+The @ref{Available Packages} can currently be found in the same ftp directory
+where you grabbed the core distribution from, and are located in the
+subdirectory @file{packages}.  Package file names follow
+the naming convention @file{<package-name>-<version>-pkg.tar.gz}.
+
+If you have @ref{(EFS)}, packages can be installed over the network.
+Alternatively, if you have copies of the packages locally, you can
+install packages from a local disk or CDROM.
+
+The file @file{etc/PACKAGES} in the core distribution contains a list of
+the @ref{Available Packages} at the time of the XEmacs release.
+
+You can also get a list of available packages, and whether or not they
+are installed, using the visual package browser and installer.  You can
+access it via the menus:
+
address@hidden
+        Tools -> Packages -> List and Install
address@hidden example
+
+Or, you can get to it via the keyboard:
+
address@hidden
+M-x pui-list-packages
address@hidden example
+
+Hint to system administrators of multi-user systems: it might be a good
+idea to install all packages and not interfere with the wishes of your
+users.
+
+If you can't find which package provides the feature you require, try
+using the @code{package-get-package-provider} function. Eg., if you know 
+that you need @code{thingatpt}, type:
+
address@hidden
+M-x package-get-package-provider RET thingatpt
address@hidden example
+
+which will return something like (fsf-compat "1.08"). You can the use
+one of the methods above for installing the package you want.
+
address@hidden XEmacs and Installing Packages
+
+There are three main ways to install packages:
+
address@hidden
+* Sumo::              All at once, using the 'Sumo Tarball'.
+* Manually::          Using individual package tarballs.
+* Automatically::     Using the package tools from XEmacs.
+* Which Packages::    Which packages to install.
+* Removing Packages:: Removing packages.
address@hidden menu
+
+But regardless of the method you use to install packages, they can only
+be used by XEmacs after a restart.
+
address@hidden Sumo, Manually, ,Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden sumo package install
address@hidden Installing the Sumo Packages:
+Those with little time, cheap connections and plenty of disk space can
+install all the packages at once using the sumo tarballs.
+Download the file: @file{xemacs-sumo.tar.gz}
+
+For an XEmacs compiled with Mule you also need: @file{xemacs-mule-sumo.tar.gz}
+
+N.B. They are called 'Sumo Tarballs' for good reason. They are
+currently about 19MB and 4.5MB (gzipped) respectively.
+
+Install them by:
+
address@hidden $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xvf - RET}
+
+Or, if you have GNU tar:
+
address@hidden $prefix/lib/xemacs ; tar zxvf /path/to/<tarballname> RET}
+
+As the Sumo tarballs are not regenerated as often as the individual
+packages, it is recommended that you use the automatic package tools
+afterwards to pick up any recent updates.
+
address@hidden Manually, Automatically, Sumo, Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden manual package install
address@hidden Manual Package Installation:
+Fetch the packages from the FTP site, CD-ROM whatever. The filenames
+have the form @file{name-<version>-pkg.tar.gz} and are gzipped tar files. For
+a fresh install it is sufficient to untar the file at the top of the
+package hierarchy. 
+
+Note: If you are upgrading packages already installed, it's best to
+remove the old package first @ref{Removing Packages}.
+
+For example if we are installing the @file{xemacs-base}
+package (version 1.48):
+
address@hidden
+   mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/xemacs-packages RET
+   gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
+
+Or if you have GNU tar, the last step can be:
+
+   tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
address@hidden example
+
+For MULE related packages, it is best to untar into the mule-packages
+hierarchy, i.e. for the @file{mule-base} package, version 1.37:
+
address@hidden
+   mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/mule-packages RET
+   gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
+
+Or if you have GNU tar, the last step can be:
+
+   tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
address@hidden example
+
address@hidden Automatically, Which Packages ,Manually, Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden automatic package install
address@hidden package tools
address@hidden Automatic Package Installation:
+XEmacs comes with some tools to make the periodic updating and
+installing easier. It will notice if new packages or versions are
+available and will fetch them from the FTP site.
+
+Unfortunately this requires that a few packages are already in place.
+You will have to install them by hand as above or use a SUMO tarball.
+This requirement will hopefully go away in the future. The packages
+you need are:
+
address@hidden
+   efs          - To fetch the files from the FTP site or mirrors.
+   xemacs-base  - Needed by efs.
+
+and optionally:
+
+   mule-base    - Needed if you want to use XEmacs with MULE.
address@hidden example
+
+After installing these by hand, fire up XEmacs and follow these
+steps.
+
address@hidden 1
address@hidden
+Choose a download site.
+via menu: Tools -> Packages -> Add Download Site 
+via keyb: @code{M-x customize-variable RET package-get-remote RET}
+(put in the details of remote host and directory)
+
+If the package tarballs _AND_ the package-index file are in a
+local directory, you can: @code{M-x pui-add-install-directory RET}
+
address@hidden
+Obtain a list of packages and display the list in a buffer named
address@hidden
+menu: Tools -> Packages -> List & Install
+keyb: @code{M-x pui-list-packages RET}
+
+XEmacs will now connect to the remote site and download the
+latest package-index file.  If you see an error about the
+package-index entries not being PGP signed, you can safely
+ignore this because PGP has not been integrated into the XEmacs
+package tools yet.
+
+The visual package browser will then display a list of all packages.
+Help information will be displayed at the very bottom of the buffer; you
+may have to scroll down to see it.  You can also press @kbd{?} to get
+the same help.  From this buffer, you can tell the package status by the
+character in the first column:
+
address@hidden @kbd
address@hidden -
+The package has not been installed.
address@hidden *
+The package has been installed, but a newer version is available.  The
+current version is out-of-date.
address@hidden +
+The package has been marked for installation/update.
address@hidden table
+
+If there is no character in the first column, the package has been
+installed and is up to date.
+
+From here, you can select or unselect packages for installation using
+the @key{RET} key, the @kbd{Mouse-2} button or selecting "Select" from
+the (Popup) Menu.
+Once you've finished selecting the packages, you can
+press the @kbd{x} key (or use the menu) to actually install the
+packages. Note that you will have to restart XEmacs for XEmacs to
+recognize any new packages.
+
+Key summary:
+
address@hidden @kbd
address@hidden ?
+Display simple help.
address@hidden @key{RET}
address@hidden @key{Mouse-2}
+Toggle between selecting and unselecting a package for installation.
address@hidden x
+Install selected packages.
address@hidden @key{SPC}
+View, in the minibuffer, additional information about the package, such
+as the package date (not the build date) and the package author.  Moving 
+the mouse over a package name will also do the same thing.
address@hidden v
+Toggle between verbose and non-verbose package display.
address@hidden g
+Refresh the package display.
address@hidden q
+Kill the package buffer.
address@hidden table
+
+Moving the mouse over a package will also cause additional information
+about the package to be displayed in the minibuffer.
+
+
address@hidden
+Choose the packages you wish to install.
+mouse: Click button 2 on the package name.
+ keyb: @kbd{RET} on the package name
+
address@hidden
+Make sure you have everything you need.
+menu: Packages -> Add Required
+keyb: @kbd{r}
+
+XEmacs will now search for packages that are required by the
+ones that you have chosen to install and offer to select
+those packages also.
+
+For novices and gurus alike, this step can save your bacon.
+It's easy to forget to install a critical package.
+
address@hidden
+Download and install the packages.
+menu: Packages -> Install/Remove Selected
+keyb: @kbd{x}
address@hidden enumerate
+
+You can also install packages using a semi-manual interface:
+
address@hidden
+M-x package-get-all <return>
address@hidden example
+
+Enter the name of the package (e.g., @code{prog-modes}), and XEmacs
+will search for the latest version and install it and any packages that
+it depends upon.
+
address@hidden Which Packages, Removing Packages, Automatically, Installing 
Packages
address@hidden  node-name,  next,  previous,  up
address@hidden which packages
address@hidden choosing packages
address@hidden Which Packages to Install:
+This is difficult to say. When in doubt install a package. If you
+administrate a big site it might be a good idea to just install
+everything. A good minimal set of packages for XEmacs-latin1 would be
+
+xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
+edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
+text-modes, time
+
+If you are using the XEmacs package tools, don't forget to do:
+
+       Packages -> Add Required
+
+To make sure you have everything that the packages you have chosen to
+install need.
+
+See also @ref{Available Packages} for further descriptions of the individual
+packages.
+
address@hidden Removing Packages, ,Which Packages, Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden removing packages
address@hidden deleting packages
address@hidden Removing Packages:
+Because the exact files and their locations contained in a package may
+change it is recommended to remove a package first before installing a
+new version. In order to facilitate removal each package contains an
address@hidden/MANIFEST.pkgname} file which list all the files belonging
+to the package. 
+
+No need to panic, you don't have to go through the
address@hidden/MANIFEST.pkgname} and manually delete the files.  Instead, use
address@hidden package-get-delete-package RET}.
+
+Note that the interactive package tools included with XEmacs already do
+this for you.
+
address@hidden Building Packages, Local.rules File, Installing Packages, 
Packages
address@hidden  node-name,  next,  previous,  up
address@hidden building packages
address@hidden package building
address@hidden Building Packages:
+Currently, source packages are only available via anonymous CVS.  See
address@hidden://cvs.xemacs.org/} for details of checking out the
address@hidden module.
+
address@hidden Prerequisites for Building Source Packages
+
address@hidden @code
address@hidden GNU cp
address@hidden GNU install 
+(or a BSD compatible install program).
address@hidden GNU make 
+(3.75 or later preferred).
address@hidden makeinfo 
+(1.68 from texinfo-3.11 or later required).
address@hidden GNU tar
+(or equivalent).
address@hidden GNU gzip
+(or equivalent).
address@hidden A properly configured @file{Local.rules} file.
address@hidden File}.
address@hidden table
+And of course, XEmacs 21.0 or higher.
+
address@hidden What You Can Do With Source Packages
+
+The packages CVS sources are most useful for creating XEmacs package
+tarballs for installation into your own XEmacs installations or for
+distributing to others.
+
+Supported operations from @file{make} are:
+
address@hidden @code
address@hidden all
+Bytecompile all files, build and bytecompile byproduct files like
address@hidden and @file{custom-load.el}.  Create info version
+of TeXinfo documentation if present.
+
address@hidden bindist
+Does a @code{make all} as well as create a binary package tarball in the
+staging directory.
+
address@hidden install
+Bytecompile all files, build and bytecompile byproduct files like
address@hidden and @file{custom-load.el}.  Create info version
+of TeXinfo documentation if present.  And install everything into the
+staging directory.
+
address@hidden srckit
+Usually aliased to @code{srckit-std}.  This does a @code{make
+distclean} and creates a package source tarball in the staging
+directory.  This is generally only of use for package maintainers.
+
address@hidden binkit
+May be aliased to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
address@hidden, or
address@hidden @code{sourceonly} indicates there is
+nothing to install in a data directory or info directory.
address@hidden indicates that source and info files are to be
+installed.  @code{sourcedata} indicates that source and etc (data) files
+are to be installed.  @code{sourcedatainfo} indicates source, etc
+(data), and info files are to be installed.  A few packages have needs
+beyond the basic templates so this is not yet complete.
+
address@hidden dist
+Runs the rules @code{srckit} followed by @code{binkit}.  This is
+primarily of use by XEmacs maintainers producing files for distribution.
+
address@hidden clean
+Remove all built files except @file{auto-autoloads.el} and 
@file{custom-load.el}.
+
address@hidden distclean
+Remove all created files.
address@hidden table
+
address@hidden Local.rules File, Creating Packages, Building Packages, Packages
address@hidden  node-name,  next,  previous,  up
address@hidden local.rules
address@hidden The Local.rules File:
+This file is used when building and installing packages from source.  In
+the top level of the CVS module, @file{xemacs-packages}, contains the
+file, @file{Local.rules.template}.  Simply copy that to
address@hidden and edit it to suit your needs.
+
+These are the variables in 'Local.rules' that you will need to
+address. 
+
address@hidden @var
address@hidden symlink = 
+Set this to 't' if you want to do a "run in place".
+Setting this doesn't work well with 'make bindist'
+
address@hidden XEMACS_PACKAGES =
+This is where you set the normal packages that you
+want to install. eg:
address@hidden
+      XEMACS_PACKAGES = xemacs-packages/xemacs-base xemacs-packages/bbdb
address@hidden example
+
address@hidden XEMACS_STAGING = address@hidden@}/../Packages
+Set this to where you want normal packages to be
+installed to.
+
address@hidden PACKAGE_INDEX = package-index
+If you want the package-index file to have a different
+name, change this.
+
address@hidden BUILD_WITHOUT_MULE =
+Building from CVS defaults to building the Mule
+packages.  Set this to 't' if you don't want/have Mule
+
address@hidden MULE_PACKAGES =
+Same as for 'XEMACS_PACKAGES' except you list the Mule
+packages you want to install here. eg:
address@hidden
+      MULE_PACKAGES = mule-packages/mule-base mule-packages/skk
address@hidden example
+
address@hidden MULE_STAGING = address@hidden@}/../Mule-Packages
+Set this to where you want Mule packages installed
+to.  Note:  'make bindist' does not use this variable.
+
address@hidden XEMACS = xemacs
+If your XEmacs isn't in your path, change this.
+
address@hidden XEMACS_NATIVE_NT =
+Set this to 't' if you are building on WinNT.
+
address@hidden INSTALL = install -c
+The path to your BSD compatible install program.
+
address@hidden TAR = tar
+The path to your tar program
+
address@hidden BZIP2 =
+If you want bzip2 tarballs, set this.
+
address@hidden MAKEINFO = makeinfo
+The path to your makeinfo program
address@hidden table
+
+
address@hidden Creating Packages, Available Packages, Local.rules File, Packages
address@hidden  node-name,  next,  previous,  up
address@hidden creating packages
address@hidden Creating Packages:
+Creating a package from an existing Lisp library is not very difficult.
+
+In addition to the Lisp libraries themselves, you need a
address@hidden file and a simple @file{Makefile}.  The rest is
+done by @file{XEmacs.rules}, part of the packaging system
+infrastructure.
+
address@hidden contains a single Lisp form like this:
+
address@hidden
+(name                               ; your package's name
+  (standards-version 1.1
+   version VERSION
+   author-version AUTHOR_VERSION
+   date DATE
+   build-date BUILD_DATE
+   maintainer MAINTAINER
+   distribution xemacs              ; change to "mule" if MULE is needed
+   priority high
+   category CATEGORY
+   dump nil
+   description "description"        ; a one-line description string
+   filename FILENAME
+   md5sum MD5SUM
+   size SIZE
+   provides (feature1 feature2)     ; one for every `provides' form
+   requires (REQUIRES)
+   type regular
+))
address@hidden example
+
+You must fill in the four commented lines.  The value of @code{name} is
+the name of your package as an unquoted symbol.  Normally it is the name
+of the main Lisp file or principal feature provided.  The allowed values
+for distribution are @code{xemacs} and @code{mule}.  Write them as
+unquoted symbols.  The @code{description} is a quoted Lisp string; use
+the usual conventions.  The value for @code{provides} is a list of
+feature symbols (written unquoted).  All of the features provided by
+libraries in your package should be elements of this list.  Implementing
+an automatic method for generating the @file{provides} line is
+desirable, but as yet undone.
+
+The variables in upper-case are references to variables set in the
address@hidden or automatically generated.  Do not change them; they
+are automatically filled in by the build process.
+
+The remaining lines refer to implementation constants
+(@code{standards-version}), or features that are unimplemented or have
+been removed (@code{priority} and @code{dump}).  The @code{type} line is
+not normally relevant to external maintainers; the alternate value is
address@hidden, which refers to packages consed up out of a number
+of single-file libraries that are more or less thematically related.  An
+example is @code{prog-modes}.  Single-file packages are basically for
+administrative convenience, and new packages should generally be created
+as regular packages.
+
+The @file{Makefile} is quite stylized.  The idea is similar to an
address@hidden or an @code{automake} file: the complexity is hidden in
+generic rules files, in this case the @file{XEmacs.rules} include file
+in the top directory of the packages hierarchy.  Although a number of
+facilities are available for complex libraries, most simple packages'
address@hidden contain a copyright notice, a few variable definitions,
+an include for @file{XEmacs.rules}, and a couple of standard targets.
+
+The first few @code{make} variables defined are @code{VERSION},
address@hidden, @code{MAINTAINER}, @code{PACKAGE},
address@hidden, @code{REQUIRES}, and @code{CATEGORY}.  All but one were
+described in the description of @file{package-info.in}.  The last is an
+administrative grouping.  Current categories include @code{standard},
+and @code{mule}.
+
+Next, define the variable @code{ELCS}.  This contains the list of the
+byte-compiled Lisp files used by the package.  These files and their
address@hidden versions will be included in the binary package.  If there
+are other files (such as extra Lisp sources or an upstream
address@hidden) that are normally placed in the installed Lisp
+directory, but not byte-compiled, they can be listed as the value of
address@hidden
+
+The include is simply
address@hidden
+include ../../XEmacs.rules
address@hidden example
+
+The standard targets follow.  These are
+
address@hidden
+all:: $(ELCS) auto-autoloads.elc
+
+srckit: srckit-alias
+
+binkit: binkit-alias
address@hidden example
+
+Other targets (such as Texinfo sources) may need to be added as
+dependencies for the @code{all} target.  Dependencies for @code{srckit}
+and @code{binkit} (that is, values for @var{srckit-alias} and
address@hidden) are defined in @file{XEmacs.rules}.  The most useful
+of these values are given in the following table.
+
address@hidden @var
address@hidden srckit-alias
+Usually set to @code{srckit-std}.
+
address@hidden binkit-alias
+May be set to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
address@hidden, or
address@hidden  @code{sourceonly} indicates there is
+nothing to install in a data directory or info directory.
address@hidden indicates that source and info files are to be
+installed.  @code{sourcedata} indicates that source and etc (data) files
+are to be installed.  @code{sourcedatainfo} indicates source, etc
+(data), and info files are to be installed.
address@hidden table
+
+Data files include things like pixmaps for a package-specific toolbar,
+and are normally installed in @file{etc/@var{PACKAGE_NAME}}.  A few
+packages have needs beyond the basic templates.  See @file{XEmacs.rules}
+or a future revision of this manual for details.
+
address@hidden Available Packages,  , Creating Packages, Packages
address@hidden  node-name,  next,  previous,  up
address@hidden available packages
address@hidden packages
address@hidden Available Packages:
+This section lists the Lisp packages that are currently available from
+xemacs.org and it's mirrors.  If a particular package that you are
+looking for isn't here, please send a message to the
address@hidden@@xemacs.org, XEmacs Beta list}.
+
+This data is up to date as of September 22, 2002.
+
address@hidden Normal Packages
+A very broad selection of elisp packages.
+
address@hidden @file
address@hidden Sun
+Support for Sparcworks.
+
address@hidden ada
+Ada language support.
+
address@hidden apel
+A Portable Emacs Library.  Used by XEmacs MIME support.
+
address@hidden auctex
+Basic TeX/LaTeX support.
+
address@hidden bbdb
+The Big Brother Data Base: a rolodex-like database program.
+
address@hidden build
+Build XEmacs using custom widgets.
+
address@hidden c-support
+Basic single-file add-ons for editing C code.
+
address@hidden calc
+Emacs calculator.
+
address@hidden calendar
+Calendar and diary support.
+
address@hidden cc-mode
+C, C++ and Java language support.
+
address@hidden clearcase
+Support for the Clearcase version control system.
+
address@hidden cookie
+"Fortune cookie"-style messages. Includes Spook (suspicious phrases) 
+and Yow (Zippy quotes).
+
address@hidden crisp
+Crisp/Brief emulation.
+
address@hidden debug
+GUD, gdb, dbx debugging support.
+
address@hidden dictionary
+Interface to RFC2229 dictionary servers.
+
address@hidden dired
+The DIRectory EDitor is for manipulating, and running commands on
+files in a directory.
+
address@hidden docbookide
+DocBook editing support.
+
address@hidden ecrypto
+Crypto functionality in Emacs Lisp.
+
address@hidden edebug
+A Lisp debugger.
+
address@hidden ediff
+Interface over patch.
+
address@hidden edit-utils
+Single file lisp packages for various XEmacs goodies.  Load this and
+weed out the junk you don't want.
+
address@hidden edt
+DEC EDIT/EDT emulation.
+
address@hidden efs
+Treat files on remote systems the same as local files.
+
address@hidden eieio
+Enhanced Implementation of Emacs Interpreted Objects.
+
address@hidden elib
+Portable Emacs Lisp utilities library.
+
address@hidden emerge
+Another interface over patch.
+
address@hidden eshell
+Command shell implemented entirely in Emacs Lisp.
+
address@hidden ess
+ESS: Emacs Speaks Statistics.
+
address@hidden eterm
+Terminal emulator.
+
address@hidden eudc
+Emacs Unified Directory Client (LDAP, PH).
+
address@hidden footnote
+Footnoting in mail message editing modes.
+
address@hidden forms
+Forms editing support (obsolete, use the built-in Widget instead).
+
address@hidden fortran-modes
+Fortran language support.
+
address@hidden frame-icon
+Provide a WM icon based on major mode.
+
address@hidden fsf-compat
+GNU Emacs compatibility files.
+
address@hidden games
+Tetris, Sokoban, and Snake.
+
address@hidden gnats
+XEmacs bug reports.
+
address@hidden gnus
+The Gnus Newsreader and Mailreader.
+
address@hidden haskell-mode
+Haskell language support.
+
address@hidden hm--html-menus
+HTML editing.
+
address@hidden ibuffer
+Advanced replacement for buffer-menu.
+
address@hidden idlwave
+Editing and Shell mode for the Interactive Data Language.
+
address@hidden igrep
+Enhanced front-end for Grep.
+
address@hidden ilisp
+Front-end for interacting with Inferior Lisp (external lisps).
+
address@hidden ispell
+Spell-checking with ispell.
+
address@hidden jde
+Java language and development support.
+
address@hidden liece
+IRC (Internet Relay Chat) client for Emacs.
+
address@hidden mail-lib
+Fundamental lisp files for providing email support.
+
address@hidden mailcrypt
+Support for messaging encryption with PGP.
+
address@hidden mew
+Messaging in an Emacs World; a MIME-based email program.
+
address@hidden mh-e
+Front end support for MH.
+
address@hidden mine
+Elisp implementation of the game 'Minehunt'.
+
address@hidden misc-games
+Other amusements and diversions.
+
address@hidden mmm-mode
+Support for Multiple Major Modes within a single buffer.
+
address@hidden net-utils
+Miscellaneous Networking Utilities.  This is a single-file package and 
+files may be deleted at will.
+
address@hidden os-utils
+Miscellaneous single-file O/S utilities, for printing, archiving,
+compression, remote shells, etc.
+
address@hidden ocaml
+Objective Caml language support.
+
address@hidden pc
+PC style interface emulation.
+
address@hidden pcl-cvs
+CVS frontend.
+
address@hidden pcomplete
+Provides programmatic completion.
+
address@hidden perl-modes
+Perl language support.
+
address@hidden prog-modes
+Miscellaneous single-file lisp files for various programming languages.
+
address@hidden ps-print
+Print buffers to PostScript printers.
+
address@hidden psgml
+Validated HTML/SGML editing.
+
address@hidden psgml-dtds
+A collection of DTDs for psgml.  Note that this package is deprecated
+and will be removed in the future, most likely Q2/2003.  Instead of using
+this, you should install needed DTDs yourself.
+
address@hidden python-modes
+Python language support.
+
address@hidden reftex
+Emacs support for LaTeX cross-references, citations.
+
address@hidden rmail
+An obsolete Emacs mailer.  If you do not already use it don't start.
+
address@hidden ruby-modes
+Ruby language support.
+
address@hidden sasl
+Simple Authentication and Security Layer (SASL) library.
+
address@hidden scheme
+Front-end support for Inferior Scheme.
+
address@hidden semantic
+Semantic bovinator.
+
address@hidden sgml
+SGML/Linuxdoc-SGML editing.
+
address@hidden sh-script
+Support for editing shell scripts.
+
address@hidden sieve
+Manage Sieve email filtering scripts.
+
address@hidden slider
+User interface tool.
+
address@hidden sml-mode
+Standard ML editing support.
+
address@hidden sounds-au
+XEmacs Sun sound files.
+
address@hidden sounds-wav
+XEmacs Microsoft sound files.
+
address@hidden speedbar
+Provides a separate frame with convenient references.
+
address@hidden strokes
+Mouse enhancement utility.
+
address@hidden supercite
+An Emacs citation tool.  Useful with all Emacs Mailers and Newsreaders.
+
address@hidden texinfo
+XEmacs TeXinfo support.
+
address@hidden text-modes
+Various single file lisp packages for editing text files.
+
address@hidden textools
+Single-file TeX support.
+
address@hidden time
+Display time & date on the modeline.
+
address@hidden tm
+Emacs MIME support. Not needed for Gnus >= 5.8.0
+
address@hidden tooltalk
+Support for building with Tooltalk.
+
address@hidden tpu
+DEC EDIT/TPU support.
+
address@hidden tramp
+Remote shell-based file editing.  This is similar to EFS or Ange-FTP,
+but works with rsh/ssh and rcp/scp.
+
address@hidden vc
+Version Control for Free systems.
+
address@hidden vc-cc
+Version Control for ClearCase.  This package will shortly be
+replaced with clearcase.el
+
address@hidden vhdl
+Support for VHDL.
+
address@hidden view-process
+A Unix process browsing tool.
+
address@hidden viper
+VI emulation support.
+
address@hidden vm
+An Emacs mailer.
+
address@hidden w3
+A Web browser.
+
address@hidden xemacs-base
+Fundamental XEmacs support.  Install this unless you wish a totally
+naked XEmacs.
+
address@hidden xemacs-devel
+XEmacs Lisp developer support.  This package contains utilities for
+supporting Lisp development.  It is a single-file package so it may be 
+tailored.
+
address@hidden xslide
+XSL editing support.
+
address@hidden xslt-process
+A minor mode for (X)Emacs which allows running an XSLT processor on a
+buffer.
+
address@hidden zenirc
+ZENIRC IRC Client.
address@hidden table
+
address@hidden Mule Support (mule)
+
+MULti-lingual Enhancement.  Support for world scripts such as
+Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.
+To use these packages your XEmacs must be compiled with Mule
+support.
+
address@hidden @file
address@hidden edict
+Lisp Interface to EDICT, Kanji Dictionary.
+
address@hidden egg-its
+Wnn (4.2 and 6) support.  SJ3 support.  Must be installed prior to
+XEmacs build.
+
address@hidden latin-unity
+Unify character sets in a buffer. When characters belong to disjoint
+character sets, this attempts to translate the characters so
+that they belong to one character set. If the buffer coding system is
+not sufficient, this suggests different coding systems.
+
address@hidden leim
+Quail.  Used for everything other than English and Japanese.
+
address@hidden locale
+Used for localized menubars (French and Japanese) and localized splash
+screens (Japanese).
+
address@hidden lookup
+Dictionary support. (This isn't an English dictionary program)
+
address@hidden mule-base
+Basic Mule support.  Must be installed prior to building with Mule.
+
address@hidden mule-ucs
+Extended coding systems (including Unicode) for XEmacs.
+
address@hidden skk
+Another Japanese Language Input Method.  Can be used without a
+separate process running as a dictionary server.
address@hidden table
+
+
address@hidden Abbrevs, Picture, Running, Top
address@hidden Abbrevs
address@hidden abbrevs
address@hidden expansion (of abbrevs)
+
+  An @dfn{abbrev} is a word which @dfn{expands} into some
+different text.  Abbrevs are defined by the user to expand in specific
+ways.  For example, you might define @samp{foo} as an abbrev expanding to
address@hidden outer otter}.  With this abbrev defined, you would be able to
+get @samp{find outer otter } into the buffer by typing @kbd{f o o @key{SPC}}.
+
address@hidden abbrev-mode
address@hidden abbrev-mode
+  Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
+Disabling Abbrev mode does not cause abbrev definitions to be discarded,
+but they do not expand until Abbrev mode is enabled again.  The command
address@hidden abbrev-mode} toggles Abbrev mode; with a numeric argument, it
+turns Abbrev mode on if the argument is positive, off otherwise.
address@hidden Modes}.  @code{abbrev-mode} is also a variable; Abbrev mode is
+on when the variable is address@hidden  The variable @code{abbrev-mode}
+automatically becomes local to the current buffer when it is set.
+
+  Abbrev definitions can be @dfn{mode-specific}---active only in one major
+mode.  Abbrevs can also have @dfn{global} definitions that are active in
+all major modes.  The same abbrev can have a global definition and various
+mode-specific definitions for different major modes.  A mode-specific
+definition for the current major mode overrides a global definition.
+
+ You can define Abbrevs interactively during an editing session.  You
+can also save lists of abbrev definitions in files and reload them in later
+sessions.  Some users keep extensive lists of abbrevs that they load in
+every session.
+
+  A second kind of abbreviation facility is called the @dfn{dynamic
+expansion}.  Dynamic abbrev expansion happens only when you give an
+explicit command and the result of the expansion depends only on the
+current contents of the buffer.  @xref{Dynamic Abbrevs}.
+
address@hidden
+* Defining Abbrevs::  Defining an abbrev, so it will expand when typed.
+* Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
+* Editing Abbrevs::   Viewing or editing the entire list of defined abbrevs.
+* Saving Abbrevs::    Saving the entire list of abbrevs for another session.
+* Dynamic Abbrevs::   Abbreviations for words already in the buffer.
address@hidden menu
+
address@hidden Defining Abbrevs, Expanding Abbrevs, Abbrevs, Abbrevs
address@hidden Defining Abbrevs
+
address@hidden @kbd
address@hidden C-x a g
+Define an abbrev to expand into some text before point
+(@code{add-global-abbrev}).
address@hidden C-x a l
+Similar, but define an abbrev available only in the current major mode
+(@code{add-mode-abbrev}).
address@hidden C-x a i g
+Define a word in the buffer as an abbrev (@code{inverse-add-global-abbrev}).
address@hidden C-x a i l
+Define a word in the buffer as a mode-specific abbrev
+(@code{inverse-add-mode-abbrev}).
address@hidden M-x kill-all-abbrevs
+After this command, no abbrev definitions remain in effect.
address@hidden table
+
address@hidden C-x a g
address@hidden add-global-abbrev
+  The usual way to define an abbrev is to enter the text you want the
+abbrev to expand to, position point after it, and type @kbd{C-x a g}
+(@code{add-global-abbrev}).  This reads the abbrev itself using the
+minibuffer, and then defines it as an abbrev for one or more words
+before point.  Use a numeric argument to say how many words before point
+should be taken as the expansion.  For example, to define the abbrev
address@hidden as in the example above, insert the text @samp{find outer
+otter}, then type @address@hidden 3 C-x a g f o o @key{RET}}.
+
+  An argument of zero to @kbd{C-x a g} means to use the contents of the
+region as the expansion of the abbrev being defined.
+
address@hidden C-x a l
address@hidden add-mode-abbrev
+  The command @kbd{C-x a l} (@code{add-mode-abbrev}) is similar, but
+defines a mode-specific abbrev.  Mode-specific abbrevs are active only in a
+particular major mode.  @kbd{C-x a l} defines an abbrev for the major mode
+in effect at the time @kbd{C-x a l} is typed.  The arguments work the
+same way they do for @kbd{C-x a g}.
+
address@hidden C-x a i g
address@hidden inverse-add-global-abbrev
address@hidden C-x a i l
address@hidden inverse-add-mode-abbrev
+  If the text of an abbrev you want is already in the buffer instead of
+the expansion, use command @kbd{C-x a i g} (@code{inverse-add-global-abbrev})
+instead of @kbd{C-x a g}, or use @kbd{C-x a i l}
+(@code{inverse-add-mode-abbrev}) instead of @kbd{C-x a l}.  These commands
+are called ``inverse'' because they invert the meaning of the argument
+found in the buffer and the argument read using the address@hidden
+
+  To change the definition of an abbrev, just add the new definition.  You
+will be asked to confirm if the abbrev has a prior definition.  To remove
+an abbrev definition, give a negative argument to @kbd{C-x a g} or @kbd{C-x
+a l}.  You must choose the command to specify whether to kill a global
+definition or a mode-specific definition for the current mode, since those
+two definitions are independent for one abbrev.
+
address@hidden kill-all-abbrevs
+  @kbd{M-x kill-all-abbrevs} removes all existing abbrev definitions.
+
address@hidden Expanding Abbrevs, Editing Abbrevs, Defining Abbrevs, Abbrevs
address@hidden Controlling Abbrev Expansion
+
+  An abbrev expands whenever it is in a buffer just before point and you
+type a self-inserting punctuation character (@key{SPC}, comma,
+etc.@:).  Most often an abbrev is used by inserting the abbrev followed
+by punctuation.
+
address@hidden abbrev-all-caps
+  Abbrev expansion preserves case; thus, @samp{foo} expands into @samp{find
+outer otter}, @samp{Foo} into @samp{Find outer otter}, and @samp{FOO} into
address@hidden OUTER OTTER} or @samp{Find Outer Otter} according to the
+variable @code{abbrev-all-caps} (a address@hidden value chooses the first
+of the two expansions)address@hidden
+
+   Two commands are available to control abbrev expansion:
+
address@hidden @kbd
address@hidden M-'
+Separate a prefix from a following abbrev to be expanded
+(@code{abbrev-prefix-mark}).
address@hidden C-x a e
address@hidden expand-abbrev
+Expand the abbrev before point (@code{expand-abbrev}).
+This is effective even when Abbrev mode is not enabled.
address@hidden M-x unexpand-abbrev
+Undo last abbrev expansion.
address@hidden M-x expand-region-abbrevs
+Expand some or all abbrevs found in the region.
address@hidden table
+
address@hidden M-'
address@hidden abbrev-prefix-mark
+  You may wish to expand an abbrev with a prefix attached.  For example,
+if @samp{cnst} expands into @samp{construction}, you may want to use it
+to enter @samp{reconstruction}.  It does not work to type @kbd{recnst},
+because that is not necessarily a defined abbrev.  Instead, you can use
+the command @kbd{M-'} (@code{abbrev-prefix-mark}) between the prefix
address@hidden and the abbrev @samp{cnst}.  First, insert @samp{re}.  Then
+type @kbd{M-'}; this inserts a minus sign in the buffer to indicate that
+it has done its work.  Then insert the abbrev @samp{cnst}.  The buffer
+now contains @samp{re-cnst}.  Now insert a punctuation character to
+expand the abbrev @samp{cnst} into @samp{construction}.  The minus sign
+is deleted at this point by @kbd{M-'}.  The resulting text is the
+desired @address@hidden
+
+  If you actually want the text of the abbrev in the buffer, rather than
+its expansion, insert the following punctuation with @kbd{C-q}.  Thus,
address@hidden C-q -} leaves @samp{foo-} in the buffer.
+
address@hidden unexpand-abbrev
+  If you expand an abbrev by mistake, you can undo the expansion (replace
+the expansion by the original abbrev text) with @kbd{M-x unexpand-abbrev}.
+You can also use @kbd{C-_} (@code{undo}) to undo the expansion; but that
+will first undo the insertion of the punctuation character.
+
address@hidden expand-region-abbrevs
+  @kbd{M-x expand-region-abbrevs} searches through the region for defined
+abbrevs, and  offers to replace each one it finds with its expansion.
+This command is useful if you have typed text using abbrevs but forgot
+to turn on Abbrev mode first.  It may also be useful together with a
+special set of abbrev definitions for making several global replacements at
+once.  The command is effective even if Abbrev mode is not enabled.
+
address@hidden Editing Abbrevs, Saving Abbrevs, Expanding Abbrevs, Abbrevs
address@hidden Examining and Editing Abbrevs
+
address@hidden @kbd
address@hidden M-x list-abbrevs
+Print a list of all abbrev definitions.
address@hidden M-x edit-abbrevs
+Edit a list of abbrevs; you can add, alter, or remove definitions.
address@hidden table
+
address@hidden list-abbrevs
+  The output from @kbd{M-x list-abbrevs} looks like this:
+
address@hidden
+(lisp-mode-abbrev-table)
+"dk"           0    "define-key"
+(global-abbrev-table)
+"dfn"          0    "definition"
address@hidden example
+
address@hidden
+(Some blank lines of no semantic significance, and some other abbrev
+tables, have been omitted.)
+
+  A line containing a name in parentheses is the header for abbrevs in a
+particular abbrev table; @code{global-abbrev-table} contains all the global
+abbrevs, and the other abbrev tables that are named after major modes
+contain the mode-specific abbrevs.
+
+  Within each abbrev table, each non-blank line defines one abbrev.  The
+word at the beginning is the abbrev.  The number that appears is the number
+of times the abbrev has been expanded.  Emacs keeps track of this to help
+you see which abbrevs you actually use, in case you want to eliminate
+those that you don't use often.  The string at the end of the line is the
+expansion.
+
address@hidden edit-abbrevs
address@hidden C-c C-c (Edit Abbrevs)
address@hidden edit-abbrevs-redefine
+  @kbd{M-x edit-abbrevs} allows you to add, change or kill abbrev
+definitions by editing a list of them in an Emacs buffer.  The list has
+the format described above.  The buffer of abbrevs is called
address@hidden, and is in Edit-Abbrevs mode.  This mode redefines the
+key @kbd{C-c C-c} to install the abbrev definitions as specified in the
+buffer.  The  @code{edit-abbrevs-redefine} command does this.
+Any abbrevs not described in the buffer are eliminated when this is
+done.
+
+  @code{edit-abbrevs} is actually the same as @code{list-abbrevs}, except
+that it selects the buffer @samp{*Abbrevs*} whereas @code{list-abbrevs}
+merely displays it in another window.
+
address@hidden Saving Abbrevs, Dynamic Abbrevs, Editing Abbrevs, Abbrevs
address@hidden Saving Abbrevs
+
+  These commands allow you to keep abbrev definitions between editing
+sessions.
+
address@hidden @kbd
address@hidden M-x write-abbrev-file
+Write a file describing all defined abbrevs.
address@hidden M-x read-abbrev-file
+Read such an abbrev file and define abbrevs as specified there.
address@hidden M-x quietly-read-abbrev-file
+Similar, but do not display a message about what is going on.
address@hidden M-x define-abbrevs
+Define abbrevs from buffer.
address@hidden M-x insert-abbrevs
+Insert all abbrevs and their expansions into the buffer.
address@hidden table
+
address@hidden write-abbrev-file
+  Use @kbd{M-x write-abbrev-file} to save abbrev definitions for use in
+a later session.  The command reads a file name using the minibuffer and
+writes a description of all current abbrev definitions into the
+specified file.  The text stored in the file looks like the output of
address@hidden list-abbrevs}.
+
+
address@hidden read-abbrev-file
address@hidden quietly-read-abbrev-file
address@hidden abbrev-file-name
+  @kbd{M-x read-abbrev-file} prompts for a file name using the
+minibuffer and reads the specified file, defining abbrevs according to
+its contents.  @kbd{M-x quietly-read-abbrev-file} is the same but does
+not display a message in the echo area; it is actually useful primarily
+in the init file.  @xref{Init File}. If you give an empty argument to
+either of these functions, the file name Emacs uses is the value of the
+variable @code{abbrev-file-name}, which is by default
address@hidden"~/.abbrev_defs"}.
+
address@hidden save-abbrevs
+  Emacs offers to save abbrevs automatically if you have changed any of
+them, whenever it offers to save all files (for @kbd{C-x s} or @kbd{C-x
+C-c}).  Set the variable @code{save-abbrevs} to @code{nil} to inhibit
+this feature.
+
address@hidden insert-abbrevs
address@hidden define-abbrevs
+  The commands @kbd{M-x insert-abbrevs} and @kbd{M-x define-abbrevs} are
+similar to the previous commands but work on text in an Emacs buffer.
address@hidden insert-abbrevs} inserts text into the current buffer before 
point,
+describing all current abbrev definitions; @kbd{M-x define-abbrevs} parses
+the entire current buffer and defines abbrevs address@hidden
+
address@hidden Dynamic Abbrevs,, Saving Abbrevs, Abbrevs
address@hidden Dynamic Abbrev Expansion
+
+  The abbrev facility described above operates automatically as you insert
+text, but all abbrevs must be defined explicitly.  By contrast,
address@hidden abbrevs} allow the meanings of abbrevs to be determined
+automatically from the contents of the buffer, but dynamic abbrev expansion
+happens only when you request it explicitly.
+
address@hidden M-/
address@hidden dabbrev-expand
address@hidden @kbd
address@hidden M-/
+Expand the word in the buffer before point as a @dfn{dynamic abbrev},
+by searching in the buffer for words starting with that abbreviation
+(@code{dabbrev-expand}).
address@hidden table
+
+  For example, if the buffer contains @samp{does this follow } and you type
address@hidden o M-/}, the effect is to insert @samp{follow} because that is the
+last word in the buffer that starts with @samp{fo}.  A numeric argument to
address@hidden/} says to take the second, third, etc.@: distinct expansion found
+looking backward from point.  Repeating @kbd{M-/} searches for an
+alternative expansion by looking farther back.  After the entire buffer
+before point has been considered, the buffer after point is searched.
+
+  Dynamic abbrev expansion is completely independent of Abbrev mode; the
+expansion of a word with @kbd{M-/} is completely independent of whether it
+has a definition as an ordinary abbrev.
+
address@hidden Picture, Sending Mail, Abbrevs, Top
address@hidden Editing Pictures
address@hidden pictures
address@hidden edit-picture
+
+  If you want to create a picture made out of text characters (for example,
+a picture of the division of a register into fields, as a comment in a
+program), use the command @code{edit-picture} to enter Picture mode.
+
+  In Picture mode, editing is based on the @dfn{quarter-plane} model of
+text.  In this model, the text characters lie studded on an area that
+stretches infinitely far to the right and downward.  The concept of the end
+of a line does not exist in this model; the most you can say is where the
+last non-blank character on the line is found.
+
+  Of course, Emacs really always considers text as a sequence of
+characters, and lines really do have ends.  But in Picture mode most
+frequently-used keys are rebound to commands that simulate the
+quarter-plane model of text.  They do this by inserting spaces or by
+converting tabs to spaces.
+
+  Most of the basic editing commands of Emacs are redefined by Picture mode
+to do essentially the same thing but in a quarter-plane way.  In addition,
+Picture mode defines various keys starting with the @kbd{C-c} prefix to
+run special picture editing commands.
+
+  One of these keys, @kbd{C-c C-c}, is pretty important.  Often a picture
+is part of a larger file that is usually edited in some other major mode.
address@hidden edit-picture} records the name of the previous major mode. 
+You can then use the @kbd{C-c C-c} command (@code{picture-mode-exit}) to
+restore that mode.  @kbd{C-c C-c} also deletes spaces from the ends of
+lines, unless you give it a numeric argument.
+
+  The commands used in Picture mode all work in other modes (provided the
address@hidden library is loaded), but are only  bound to keys in
+Picture mode.  Note that the descriptions below talk of moving ``one
+column'' and so on, but all the picture mode commands handle numeric
+arguments as their normal equivalents do.
+
address@hidden picture-mode-hook
+  Turning on Picture mode calls the value of the variable
address@hidden as a function, with no arguments, if that value
+exists and is address@hidden
+
address@hidden
+* Basic Picture::         Basic concepts and simple commands of Picture Mode.
+* Insert in Picture::     Controlling direction of cursor motion
+                           after "self-inserting" characters.
+* Tabs in Picture::       Various features for tab stops and indentation.
+* Rectangles in Picture:: Clearing and superimposing rectangles.
address@hidden menu
+
address@hidden Basic Picture, Insert in Picture, Picture, Picture
address@hidden Basic Editing in Picture Mode
+
address@hidden picture-forward-column
address@hidden picture-backward-column
address@hidden picture-move-down
address@hidden picture-move-up
+  Most keys do the same thing in Picture mode that they usually do, but do
+it in a quarter-plane style.  For example, @kbd{C-f} is rebound to run
address@hidden, which moves point one column to
+the right, by inserting a space if necessary, so that the actual end of the
+line makes no difference.  @kbd{C-b} is rebound to run
address@hidden, which always moves point left one column,
+converting a tab to multiple spaces if necessary.  @kbd{C-n} and @kbd{C-p}
+are rebound to run @code{picture-move-down} and @code{picture-move-up},
+which can either insert spaces or convert tabs as necessary to make sure
+that point stays in exactly the same column.  @kbd{C-e} runs
address@hidden, which moves to after the last non-blank
+character on the line.  There was no need to change @kbd{C-a}, as the choice
+of screen model does not affect beginnings of address@hidden
+
address@hidden picture-newline
+  Insertion of text is adapted to the quarter-plane screen model through
+the use of Overwrite mode (@pxref{Minor Modes}).  Self-inserting characters
+replace existing text, column by column, rather than pushing existing text
+to the right.  @key{RET} runs @code{picture-newline}, which just moves to
+the beginning of the following line so that new text will replace that
+line.
+
address@hidden picture-backward-clear-column
address@hidden picture-clear-column
address@hidden picture-clear-line
+  Text is erased instead of deleted and killed.  @key{DEL}
+(@code{picture-backward-clear-column}) replaces the preceding character
+with a space rather than removing it.  @kbd{C-d}
+(@code{picture-clear-column}) does the same in a forward direction.
address@hidden (@code{picture-clear-line}) really kills the contents of lines,
+but never removes the newlines from a address@hidden
+
address@hidden picture-open-line
+  To do actual insertion, you must use special commands.  @kbd{C-o}
+(@code{picture-open-line}) creates a blank line, but does so after
+the current line; it never splits a line.  @kbd{C-M-o}, @code{split-line},
+makes sense in Picture mode, so it remains unchanged.  @key{LFD}
+(@code{picture-duplicate-line}) inserts another line
+with the same contents below the current address@hidden
+
address@hidden C-c C-d (Picture mode)
address@hidden delete-char
+ 
+  To actually delete parts of the picture, use @kbd{C-w}, or with
address@hidden C-d} (which is defined as @code{delete-char}, as @kbd{C-d} is
+in other modes), or with one of the picture rectangle commands
+(@pxref{Rectangles in Picture}).
+
address@hidden Insert in Picture, Tabs in Picture, Basic Picture, Picture
address@hidden Controlling Motion After Insert
+
address@hidden picture-movement-up
address@hidden picture-movement-down
address@hidden picture-movement-left
address@hidden picture-movement-right
address@hidden picture-movement-nw
address@hidden picture-movement-ne
address@hidden picture-movement-sw
address@hidden picture-movement-se
address@hidden C-c < (Picture mode)
address@hidden C-c > (Picture mode)
address@hidden C-c ^ (Picture mode)
address@hidden C-c . (Picture mode)
address@hidden C-c ` (Picture mode)
address@hidden C-c ' (Picture mode)
address@hidden C-c / (Picture mode)
address@hidden C-c \ (Picture mode)
+  Since ``self-inserting'' characters just overwrite and move point in
+Picture mode, there is no essential restriction on how point should be
+moved.  Normally point moves right, but you can specify any of the eight
+orthogonal or diagonal directions for motion after a ``self-inserting''
+character.  This is useful for drawing lines in the buffer.
+
address@hidden @kbd
address@hidden C-c <
+Move left after insertion (@code{picture-movement-left}).
address@hidden C-c >
+Move right after insertion (@code{picture-movement-right}).
address@hidden C-c ^
+Move up after insertion (@code{picture-movement-up}).
address@hidden C-c .
+Move down after insertion (@code{picture-movement-down}).
address@hidden C-c `
+Move up and left (``northwest'') after insertion 
@*(@code{picture-movement-nw}).
address@hidden C-c '
+Move up and right (``northeast'') after insertion @*
+(@code{picture-movement-ne}).
address@hidden C-c /
+Move down and left (``southwest'') after insertion
address@hidden(@code{picture-movement-sw}).
address@hidden C-c \
+Move down and right (``southeast'') after insertion
address@hidden(@code{picture-movement-se}).
address@hidden table
+
address@hidden C-c C-f (Picture mode)
address@hidden C-c C-b (Picture mode)
address@hidden picture-motion
address@hidden picture-motion-reverse
+  Two motion commands move based on the current Picture insertion
+direction.  The command @kbd{C-c C-f} (@code{picture-motion}) moves in the
+same direction as motion after ``insertion'' currently does, while @kbd{C-c
+C-b} (@code{picture-motion-reverse}) moves in the opposite direction.
+
address@hidden Tabs in Picture, Rectangles in Picture, Insert in Picture, 
Picture
address@hidden Picture Mode Tabs
+ 
address@hidden M-TAB
address@hidden picture-tab-search
address@hidden picture-tab-chars
+  Two kinds of tab-like action are provided in Picture mode.
+Context-based tabbing is done with @address@hidden
+(@code{picture-tab-search}).  With no argument, it moves to a point
+underneath the next ``interesting'' character that follows whitespace in
+the previous non-blank line.  ``Next'' here means ``appearing at a
+horizontal position greater than the one point starts out at''.  With an
+argument, as in @kbd{C-u address@hidden, the command moves to the next such
+interesting character in the current line.  @address@hidden does not
+change the text; it only moves point.  ``Interesting'' characters are
+defined by the variable @code{picture-tab-chars}, which contains a string
+of characters considered interesting.  Its default value is
address@hidden"!-~"address@hidden
+
address@hidden picture-tab
+  @key{TAB} itself runs @code{picture-tab}, which operates based on the
+current tab stop settings; it is the Picture mode equivalent of
address@hidden  Without arguments it just moves point, but with
+a numeric argument it clears the text that it moves over.
+
address@hidden C-c TAB (Picture mode)
address@hidden picture-set-tab-stops
+  The context-based and tab-stop-based forms of tabbing are brought
+together by the command @kbd{C-c @key{TAB}} (@code{picture-set-tab-stops}.)
+This command sets the tab stops to the positions which @address@hidden
+would consider significant in the current line.  If you use this command
+with @key{TAB}, you can get the effect of context-based tabbing.  But
address@hidden@key{TAB}} is more convenient in the cases where it is sufficient.
+
address@hidden Rectangles in Picture,, Tabs in Picture, Picture
address@hidden Picture Mode Rectangle Commands
address@hidden rectangle
+
+  Picture mode defines commands for working on rectangular pieces of the
+text in ways that fit with the quarter-plane model.  The standard rectangle
+commands may also be useful (@pxref{Rectangles}).
+
address@hidden @kbd
address@hidden C-c C-k
+Clear out the region-rectangle (@code{picture-clear-rectangle}).  With
+argument, kill it.
address@hidden C-c C-w @var{r}
+Similar but save rectangle contents in register @var{r} first
+(@code{picture-clear-rectangle-to-register}).
address@hidden C-c C-y
+Copy last killed rectangle into the buffer by overwriting, with upper
+left corner at point (@code{picture-yank-rectangle}).  With argument,
+insert instead.
address@hidden C-c C-x @var{r}
+Similar, but use the rectangle in register @address@hidden
+(@code{picture-yank-rectangle-from-register}).
address@hidden table
+
address@hidden C-c C-k (Picture mode)
address@hidden C-c C-w (Picture mode)
address@hidden picture-clear-rectangle
address@hidden picture-clear-rectangle-to-register
+  The picture rectangle commands @kbd{C-c C-k}
+(@code{picture-clear-rectangle}) and @kbd{C-c C-w}
+(@code{picture-clear-rectangle-to-register}) differ from the standard
+rectangle commands in that they normally clear the rectangle instead of
+deleting it; this is analogous with the way @kbd{C-d} is changed in Picture
address@hidden
+
+  However, deletion of rectangles can be useful in Picture mode, so these
+commands delete the rectangle if given a numeric argument.
+
address@hidden C-c C-y (Picture mode)
address@hidden C-c C-x (Picture mode)
address@hidden picture-yank-rectangle
address@hidden picture-yank-rectangle-from-register
+  The Picture mode commands for yanking rectangles differ from the standard
+ones in overwriting instead of inserting.  This is the same way that
+Picture mode insertion of other text is different from other modes.
address@hidden C-y} (@code{picture-yank-rectangle}) inserts (by overwriting) the
+rectangle that was most recently killed, while @kbd{C-c C-x}
+(@code{picture-yank-rectangle-from-register}) does for the
+rectangle found in a specified register.
+
+Since most region commands in Picture mode operate on rectangles, when you
+select a region of text with the mouse in Picture mode, it is highlighted
+as a rectangle.
+
address@hidden Sending Mail, Reading Mail, Picture, Top
address@hidden Sending Mail
address@hidden mail
address@hidden message
+
+  To send a message in Emacs, start by typing the command (@kbd{C-x m})
+to select and initialize the @samp{*mail*} buffer.  You can then edit the text
+and headers of the message in the mail buffer, and type the command
+(@kbd{C-c C-c}) to send the message.
+
address@hidden @kbd
address@hidden C-x m
+Begin composing a message to send (@code{mail}).
address@hidden C-x 4 m
+Likewise, but display the message in another window
+(@code{mail-other-window}).
address@hidden C-c C-c
+In Mail mode, send the message and switch to another buffer
+(@code{mail-send-and-exit}).
address@hidden table
+
address@hidden C-x m
address@hidden mail
address@hidden C-x 4 m
address@hidden mail-other-window
+  The command @kbd{C-x m} (@code{mail}) selects a buffer named
address@hidden and initializes it with the skeleton of an outgoing message.
address@hidden 4 m} (@code{mail-other-window}) selects the @samp{*mail*} buffer
+in a different window, leaving the previous current buffer address@hidden
+
+  Because the buffer for mail composition is an ordinary Emacs buffer, you can
+switch to other buffers while in the middle of composing mail, and switch
+back later (or never).  If you use the @kbd{C-x m} command again when you
+have been composing another message but have not sent it, a new mail
+buffer will be created; in this way, you can compose multiple messages
+at once.  You can switch back to and complete an unsent message by using
+the normal buffer selection mechanisms.  
+
address@hidden C-x m} is another way to switch back to a message in progress:
+it will search for an existing, unsent mail message buffer and select it.
+
address@hidden
+* Format: Mail Format.    Format of the mail being composed.
+* Headers: Mail Headers.  Details of allowed mail header fields.
+* Mode: Mail Mode.        Special commands for editing mail being composed.
address@hidden menu
+
address@hidden Mail Format, Mail Headers, Sending Mail, Sending Mail
address@hidden The Format of the Mail Buffer
+
+  In addition to the @dfn{text} or contents, a message has @dfn{header
+fields}, which say who sent it, when, to whom, why, and so on.  Some header
+fields, such as the date and sender, are created automatically after the
+message is sent.  Others, such as the recipient names, must be specified by
+you in order to send the message properly.
+
+  Mail mode provides a few commands to help you edit some header fields,
+and some are preinitialized in the buffer automatically at times.  You can
+insert or edit any header fields using ordinary editing commands.
+
+  The line in the buffer that says:
+
address@hidden
+--text follows this line--
address@hidden example
+
address@hidden mail-header-separator
address@hidden
+is a special delimiter that separates the headers you have specified from
+the text.  Whatever follows this line is the text of the message; the
+headers precede it.  The delimiter line itself does not appear in the
+message actually sent.  The text used for the delimiter line is controlled
+by the variable @code{mail-header-separator}.
+
+Here is an example of what the headers and text in the @samp{*mail*} buffer
+might look like.
+
address@hidden
+To: rms@@mc
+CC: mly@@mc, rg@@oz
+Subject: The XEmacs User's Manual
+--Text follows this line--
+Please ignore this message.
address@hidden example
+
address@hidden Mail Headers, Mail Mode, Mail Format, Sending Mail
address@hidden Mail Header Fields
address@hidden headers (of mail message)
+
+  There are several header fields you can use in the @samp{*mail*} buffer.
+Each header field starts with a field name at the beginning of a line,
+terminated by a colon.  It does not matter whether you use upper or lower
+case in the field name.  After the colon and optional whitespace comes the
+contents of the field.
+
address@hidden @samp
address@hidden To
+This field contains the mailing addresses of the message.
+
address@hidden Subject
+The contents of the @samp{Subject} field should be a piece of text that
+says what the message is about.  Subject fields are useful because most
+mail-reading programs can provide a summary of messages, listing the
+subject of each message but not its text.
+
address@hidden CC
+This field contains additional mailing addresses to send the message
+to, but whose readers should not regard the message as addressed to
+them.
+
address@hidden BCC
+This field contains additional mailing addresses to send the message
+to, but which should not appear in the header of the message actually
+sent.
+
address@hidden FCC
+This field contains the name of one file (in Unix mail file format) to
+which a copy of the message should be appended when the message is
+sent.
+
address@hidden From
+Use the @samp{From} field to say who you are, when the account you are
+using to send the mail is not your own.  The contents of the
address@hidden field should be a valid mailing address, since replies
+will normally go there.
+
address@hidden Reply-To
+Use the @samp{Reply-To} field to direct replies to a different
+address, not your own. @samp{From} and
address@hidden have the same effect on where replies go, but they convey a
+different meaning to the person who reads the message.
+
address@hidden In-Reply-To
+This field contains a piece of text describing a message you are
+replying to.  Some mail systems can use the information to correlate
+related pieces of mail.  This field is normally filled in by your mail
+handling package when you are replying to a message and you never need
+to think about it.
address@hidden table
+
address@hidden
+The @samp{To}, @samp{CC}, @samp{BCC} and @samp{FCC} fields can appear
+any number of times, to specify many places to send the message.
+
address@hidden
+The @samp{To}, @samp{CC}, and @samp{BCC}, fields can have continuation
+lines.  All the lines starting with whitespace, following the line on
+which the field starts, are considered part of the field.  For
+example,@refill
+
address@hidden
+To: foo@@here, this@@there,
+  me@@gnu.cambridge.mass.usa.earth.spiral3281
address@hidden example
+
address@hidden
address@hidden mail-abbrev-mailrc-file
+If you have a @file{~/.mailrc} file, Emacs scans it for mail aliases the
+first time you try to send mail in an Emacs session.  Emacs expands
+aliases found in the @samp{To}, @samp{CC}, and @samp{BCC} fields where
+appropriate. You can set the variable @code{mail-abbrev-mailrc-file} to
+the name of the file with mail aliases.  If @code{nil}, @file{~/.mailrc}
+is used.
+
address@hidden .mailrc file
+Your @file{.mailrc} file ensures that word-abbrevs are defined for each
+of your mail aliases when point is in a @samp{To}, @samp{CC},
address@hidden, or @samp{From} field.  The aliases are defined in your
address@hidden file or in a file specified by the @b{MAILRC}
+environment variable if it exists.  Your mail aliases expand any time
+you type a word-delimiter at the end of an abbreviation.
+
+In this version of Emacs, what you see is what you get: in contrast to
+some other versions, no abbreviations are expanded after you have sent the
+mail.  This means you don't suffer the annoyance of having the system do
+things behind your back---if the system rewrites an address you typed,
+you know it immediately, instead of after the mail has been sent and
+it's too late to do anything about it.  For example, you will never
+again be in trouble because you forgot to delete an old alias from your
address@hidden and a new local user is given a userid which conflicts
+with one of your aliases.
+
address@hidden mail-abbrev-mode-regexp 
+Your mail alias abbrevs are in effect only when point is in an
+appropriate header field. The mail aliases will not expand in the body
+of the message, or in other header fields.  The default mode-specific
+abbrev table @code{mail-mode-abbrev-table} is used instead if defined.
+That means if you have been using mail-mode specific abbrevs, this code
+will not adversely affect you.  You can control which header fields the
+abbrevs are used in by changing the variable @code{mail-abbrev-mode-regexp}.
+
+If auto-fill mode is on, abbrevs wrap at commas instead of at word
+boundaries, and header continuation lines will be properly indented.
+
address@hidden mail-interactive-insert-alias
+You can also insert a mail alias with @code{mail-interactive-insert-alias}.
+This function, which is bound to @kbd{C-c C-a}, prompts you for an alias
+(with completion) and inserts its expansion at point.
+
+In this version of Emacs, it is possible to have lines like the
+following in your @file{.mailrc} file:
+
address@hidden
+     alias someone "John Doe <doe@@quux.com>"
address@hidden example
+
+That is, if you want an address to have embedded spaces, simply surround
+it with double-quotes.  The quotes are necessary because the format of
+the @file{.mailrc} file uses spaces as address delimiters.  
+
+Aliases in the @file{.mailrc} file may be nested. For example, assume
+you define aliases like:
address@hidden
+     alias group1 fred ethel
+     alias group2 larry curly moe
+     alias everybody group1 group2
address@hidden example
+
+When you now type @samp{everybody} on the @samp{To} line, it will expand to:
address@hidden
+     fred, ethyl, larry, curly, moe
address@hidden example
+
+Aliases may contain forward references; the alias of @samp{everybody} in the
+example above can precede the aliases of @samp{group1} and @samp{group2}.
+
+In this version of Emacs, you can use the @code{source} @file{.mailrc} command
+for reading aliases from some other file as well.
+
+Aliases may contain hyphens, as in @code{"alias foo-bar foo@@bar"}, even
+though word-abbrevs normally cannot contain hyphens.
+
+To read in the contents of another @file{.mailrc}-type file from Emacs, use the
+command @code{M-x merge-mail-aliases}.  The @code{rebuild-mail-aliases}
+command is similar, but deletes existing aliases first.
+
address@hidden mail-alias-separator-string
+If you want multiple addresses separated by a string other than @samp{,}
+(a comma), then set the variable @code{mail-alias-separator-string} to
+it.  This has to be a comma bracketed by whitespace if you want any kind
+ of reasonable behavior.
+
address@hidden mail-archive-file-name
+  If the variable @code{mail-archive-file-name} is address@hidden, it
+should be a string naming a file.  Each time you start to edit a message
+to send, an @samp{FCC} field is entered for that file.  Unless you
+remove the @samp{FCC} field, every message is written into that
+file when it is sent.
+
address@hidden Mail Mode,, Mail Headers, Sending Mail
address@hidden Mail Mode
+
+  The major mode used in the @samp{*mail*} buffer is Mail mode.  Mail
+mode is similar to Text mode, but several commands are provided on
+the @kbd{C-c} prefix.  These commands all deal specifically with
+editing or sending the message.
+
address@hidden @kbd
address@hidden C-c C-s
+Send the message, and leave the @samp{*mail*} buffer selected
+(@code{mail-send}).
address@hidden C-c C-c
+Send the message, and select some other buffer (@code{mail-send-and-exit}).
address@hidden C-c C-f C-t
+Move to the @samp{To} header field, creating one if there is none
+(@code{mail-to}).
address@hidden C-c C-f C-s
+Move to the @samp{Subject} header field, creating one if there is
+none (@code{mail-subject}).
address@hidden C-c C-f C-c
+Move to the @samp{CC} header field, creating one if there is none
+(@code{mail-cc}).
address@hidden C-c C-w
+Insert the file @file{~/.signature} at the end of the message text
+(@code{mail-signature}).
address@hidden C-c C-y
+Yank the selected message (@code{mail-yank-original}).
address@hidden C-c C-q
+Fill all paragraphs of yanked old messages, each individually
+(@code{mail-fill-yanked-message}).
address@hidden @key{button3}
+Pops up a menu of useful mail-mode commands.
address@hidden table
+
address@hidden C-c C-s (Mail mode)
address@hidden C-c C-c (Mail mode)
address@hidden mail-send
address@hidden mail-send-and-exit
+  There are two ways to send a message.  @kbd{C-c C-c}
+(@code{mail-send-and-exit}) is the usual way to send the message.  It
+sends the message and then deletes the window (if there is another
+window) or switches to another buffer.  It puts the @samp{*mail*} buffer
+at the lowest priority for automatic reselection, since you are finished
+with using it.  @kbd{C-c C-s} (@code{mail-send}) sends the
+message and marks the @samp{*mail*} buffer unmodified, but leaves that
+buffer selected so that you can modify the message (perhaps with new
+recipients) and send it again.
+
address@hidden C-c C-f C-t (Mail mode)
address@hidden mail-to
address@hidden C-c C-f C-s (Mail mode)
address@hidden mail-subject
address@hidden C-c C-f C-c (Mail mode)
address@hidden mail-cc
+  Mail mode provides some other special commands that are useful for
+editing the headers and text of the message before you send it.  There are
+three commands defined to move point to particular header fields, all based
+on the prefix @kbd{C-c C-f} (@samp{C-f} is for ``field'').  They are
address@hidden C-f C-t} (@code{mail-to}) to move to the @samp{To} field, 
@kbd{C-c
+C-f C-s} (@code{mail-subject}) for the @samp{Subject} field, and @kbd{C-c
+C-f C-c} (@code{mail-cc}) for the @samp{CC} field.  These fields have
+special motion commands because they are edited most frequently. 
+
+
address@hidden C-c C-w (Mail mode)
address@hidden mail-signature
+  @kbd{C-c C-w} (@code{mail-signature}) adds a standard piece of text at
+the end of the message to say more about who you are.  The text comes
+from the file @file{.signature} in your home directory.
+
address@hidden C-c C-y (Mail mode)
address@hidden mail-yank-original
+  When you use an Rmail command to send mail from the Rmail mail reader,
+you can use @kbd{C-c C-y} @code{mail-yank-original} inside the
address@hidden buffer to insert the
+text of the message you are replying to.  Normally Rmail indents each line
+of that message four spaces and eliminates most header fields.  A
+numeric argument specifies the number of spaces to indent.  An argument
+of just @kbd{C-u} says not to indent at all and not to eliminate
+anything.  @kbd{C-c C-y} always uses the current message from the
address@hidden buffer, so you can insert several old messages by selecting
+one in @samp{RMAIL}, switching to @samp{*mail*} and yanking it, then
+switching back to @samp{RMAIL} to select address@hidden
+
address@hidden C-c C-q (Mail mode)
address@hidden mail-fill-yanked-message
+  After using @kbd{C-c C-y}, you can use the command @kbd{C-c C-q}
+(@code{mail-fill-yanked-message}) to fill the paragraphs of the yanked
+old message or messages.  One use of @kbd{C-c C-q} fills all such
+paragraphs, each one separately.
+
+  Clicking the right mouse button in a mail buffer pops up a menu of
+the above commands, for easy access.
+
address@hidden mail-mode-hook
+  Turning on Mail mode (which @kbd{C-x m} does automatically) calls the
+value of @code{text-mode-hook}, if it is not void or @code{nil}, and
+then calls the value of @code{mail-mode-hook} if that is not void or
address@hidden
+
address@hidden Reading Mail, Calendar/Diary, Sending Mail, Top
address@hidden Reading Mail
address@hidden mail
address@hidden message
+
+XEmacs provides three separate mail-reading packages.  Each one comes with
+its own manual, which is included standard with the XEmacs distribution.
+
+The recommended mail-reading package for new users is VM.  VM works
+with standard Unix-mail-format folders and was designed as a replacement
+for the older Rmail.
+
+XEmacs also provides a sophisticated and comfortable front-end to the
+MH mail-processing system, called @samp{mh-e}.  Unlike in other
+mail programs, folders in MH are stored as file-system directories,
+with each message occupying one (numbered) file.  This facilitates
+working with mail using shell commands, and many other features of
+MH are also designed to integrate well with the shell and with
+shell scripts.  Keep in mind, however, that in order to use mh-e
+you must have the MH mail-processing system installed on your
+computer.
+
+Finally, XEmacs provides the Rmail package.  Rmail is (currently) the
+only mail reading package distributed with FSF GNU Emacs, and is
+powerful in its own right.  However, it stores mail folders in a special
+format called @samp{Babyl}, that is incompatible with all other
+frequently-used mail programs.  A utility program is provided for
+converting Babyl folders to standard Unix-mail format; however, unless
+you already have mail in Babyl-format folders, you should consider
+using VM or mh-e instead. (If at times you have to use FSF Emacs, it
+is not hard to obtain and install VM for that editor.)
address@hidden Calendar/Diary, Sorting, Reading Mail, Top
address@hidden Calendar Mode and the Diary
address@hidden calendar
address@hidden calendar
+
+  Emacs provides the functions of a desk calendar, with a diary of
+planned or past events.  To enter the calendar, type @kbd{M-x calendar};
+this displays a three-month calendar centered on the current month, with
+point on the current date.  With a numeric argument, as in @kbd{C-u M-x
+calendar}, it prompts you for the month and year to be the center of the
+three-month calendar.  The calendar uses its own buffer, whose major
+mode is Calendar mode.
+
+  @kbd{Button2} in the calendar brings up a menu of operations on a
+particular date; @kbd{Buttons3} brings up a menu of commonly used
+calendar features that are independent of any particular date.  To exit
+the calendar, type @kbd{q}.  @xref{Calendar, Customizing the Calendar
+and Diary,, lispref, The XEmacs Lisp Reference Manual}, for customization
+information about the calendar and diary.
+ 
address@hidden
+* Calendar Motion::        Moving through the calendar; selecting a date.
+* Scroll Calendar::        Bringing earlier or later months onto the screen.
+* Mark and Region::        Remembering dates, the mark ring.
+* General Calendar::       Exiting or recomputing the calendar.
+* LaTeX Calendar::         Print a calendar using LaTeX.
+* Holidays::               Displaying dates of holidays.
+* Sunrise/Sunset::         Displaying local times of sunrise and sunset.
+* Lunar Phases::           Displaying phases of the moon.
+* Other Calendars::        Converting dates to other calendar systems.
+* Diary::                  Displaying events from your diary.
+* Calendar Customization:: Altering the behavior of the features above.
address@hidden menu
+
address@hidden Calendar Motion, Scroll Calendar, Calendar/Diary, Calendar/Diary
address@hidden Movement in the Calendar
+
address@hidden moving inside the calendar
+  Calendar mode lets you move through the calendar in logical units of
+time such as days, weeks, months, and years.  If you move outside the
+three months originally displayed, the calendar display ``scrolls''
+automatically through time to make the selected date visible.  Moving to
+a date lets you view its holidays or diary entries, or convert it to other
+calendars; moving longer time periods is also useful simply to scroll the
+calendar.
+
address@hidden
+* Calendar Unit Motion::       Moving by days, weeks, months, and years.
+* Move to Beginning or End::   Moving to start/end of weeks, months, and years.
+* Specified Dates::            Moving to the current date or another 
+                               specific date.
address@hidden menu
+
address@hidden Calendar Unit Motion, Move to Beginning or End, Calendar Motion, 
Calendar Motion
address@hidden Motion by Integral Days, Weeks, Months, Years
+
+  The commands for movement in the calendar buffer parallel the
+commands for movement in text.  You can move forward and backward by
+days, weeks, months, and years.
+
address@hidden @kbd
address@hidden C-f
+Move point one day forward (@code{calendar-forward-day}).
address@hidden C-b
+Move point one day backward (@code{calendar-backward-day}).
address@hidden C-n
+Move point one week forward (@code{calendar-forward-week}).
address@hidden C-p
+Move point one week backward (@code{calendar-backward-week}).
address@hidden address@hidden
+Move point one month forward (@code{calendar-forward-month}).
address@hidden address@hidden
+Move point one month backward (@code{calendar-backward-month}).
address@hidden C-x ]
+Move point one year forward (@code{calendar-forward-year}).
address@hidden C-x [
+Move point one year backward (@code{calendar-backward-year}).
address@hidden table
+
address@hidden C-f @r{(Calendar mode)}
address@hidden calendar-forward-day
address@hidden C-b @r{(Calendar mode)}
address@hidden calendar-backward-day
address@hidden C-n @r{(Calendar mode)}
address@hidden calendar-forward-week
address@hidden C-p @r{(Calendar mode)}
address@hidden calendar-backward-week
+  The day and week commands are natural analogues of the usual Emacs
+commands for moving by characters and by lines.  Just as @kbd{C-n}
+usually moves to the same column in the following line, in Calendar
+mode it moves to the same day in the following week.  And @kbd{C-p}
+moves to the same day in the previous week.
+
+  The arrow keys are equivalent to @kbd{C-f}, @kbd{C-b}, @kbd{C-n} and
address@hidden, just as they normally are in other modes.
+
address@hidden address@hidden @r{(Calendar mode)}
address@hidden calendar-forward-month
address@hidden address@hidden @r{(Calendar mode)}
address@hidden calendar-backward-month
address@hidden C-x ] @r{(Calendar mode)}
address@hidden calendar-forward-year
address@hidden C-x [ @r{(Calendar mode)}
address@hidden calendar-forward-year
+  The commands for motion by months and years work like those for
+weeks, but move a larger distance.  The month commands @address@hidden and
address@hidden@{} move forward or backward by an entire month's time.  The
+year commands @kbd{C-x ]} and @address@hidden [}} move forward or backward a
+whole year.
+
+  The easiest way to remember these commands is to consider months and
+years analogous to paragraphs and pages of text, respectively.  But the
+commands themselves are not quite analogous.  The ordinary Emacs paragraph
+commands move to the beginning or end of a paragraph, whereas these month
+and year commands move by an entire month or an entire year, which usually
+involves skipping across the end of a month or year.
+
+  All these commands accept a numeric argument as a repeat count.
+For convenience, the digit keys and the minus sign specify numeric
+arguments in Calendar mode even without the Meta modifier.  For example,
address@hidden C-f} moves point 100 days forward from its present location.
+
address@hidden Move to Beginning or End, Specified Dates, Calendar Unit Motion, 
Calendar Motion
address@hidden Beginning or End of Week, Month or Year
+
+  A week (or month, or year) is not just a quantity of days; we think of
+weeks (months, years) as starting on particular dates.  So Calendar mode
+provides commands to move to the beginning or end of a week, month or
+year:
+ 
address@hidden @kbd
address@hidden C-a @r{(Calendar mode)}
address@hidden calendar-beginning-of-week
address@hidden C-a
+Move point to start of week (@code{calendar-beginning-of-week}).
address@hidden C-e @r{(Calendar mode)}
address@hidden calendar-end-of-week
address@hidden C-e
+Move point to end of week (@code{calendar-end-of-week}).
address@hidden M-a @r{(Calendar mode)}
address@hidden calendar-beginning-of-month
address@hidden M-a
+Move point to start of month (@code{calendar-beginning-of-month}).
address@hidden M-e @r{(Calendar mode)}
address@hidden calendar-end-of-month
address@hidden M-e
+Move point to end of month (@code{calendar-end-of-month}).
address@hidden M-< @r{(Calendar mode)}
address@hidden calendar-beginning-of-year
address@hidden M-<
+Move point to start of year (@code{calendar-beginning-of-year}).
address@hidden M-> @r{(Calendar mode)}
address@hidden calendar-end-of-year
address@hidden M->
+Move point to end of year (@code{calendar-end-of-year}).
address@hidden table
+
+  These commands also take numeric arguments as repeat counts, with the
+repeat count indicating how many weeks, months, or years to move
+backward or forward.
+
address@hidden calendar-week-start-day
address@hidden weeks, which day they start on
address@hidden calendar, first day of week
+  By default, weeks begin on Sunday.  To make them begin on Monday
+instead, set the variable @code{calendar-week-start-day} to 1.
+
address@hidden Specified Dates,,Move to Beginning or End, Calendar Motion
address@hidden Particular Dates
+
+  Calendar mode provides commands for moving to a particular date
+specified in various ways.
+
address@hidden @kbd
address@hidden g d
+Move point to specified date (@code{calendar-goto-date}).
address@hidden o
+Center calendar around specified month (@code{calendar-other-month}).
address@hidden .
+Move point to today's date (@code{calendar-goto-today}).
address@hidden table
+
address@hidden g d @r{(Calendar mode)}
address@hidden calendar-goto-date
+  @kbd{g d} (@code{calendar-goto-date}) prompts for a year, a month, and a day
+of the month, and then moves to that date.  Because the calendar includes all
+dates from the beginning of the current era, you must type the year in its
+entirety; that is, type @samp{1990}, not @samp{90}.
+
address@hidden o @r{(Calendar mode)}
address@hidden calendar-other-month
+  @kbd{o} (@code{calendar-other-month}) prompts for a month and year,
+then centers the three-month calendar around that month.
+
address@hidden . @r{(Calendar mode)}
address@hidden calendar-goto-today
+  You can return to today's date with @kbd{.}@:
+(@code{calendar-goto-today}).
+
address@hidden Scroll Calendar, Mark and Region, Calendar Motion, Calendar/Diary
address@hidden Scrolling the Calendar through Time
+
address@hidden scrolling in the calendar
+  The calendar display scrolls automatically through time when you move out
+of the visible portion.  You can also scroll it manually.  Imagine that the
+calendar window contains a long strip of paper with the months on it.
+Scrolling it means moving the strip so that new months become visible in
+the window.
+
address@hidden @kbd
address@hidden C-x <
+Scroll calendar one month forward (@code{scroll-calendar-left}).
address@hidden C-x >
+Scroll calendar one month backward (@code{scroll-calendar-right}).
address@hidden C-v
address@hidden @key{NEXT}
+Scroll calendar three months forward
+(@code{scroll-calendar-left-three-months}).
address@hidden M-v
address@hidden @key{PRIOR}
+Scroll calendar three months backward
+(@code{scroll-calendar-right-three-months}).
address@hidden table
+
address@hidden C-x < @r{(Calendar mode)}
address@hidden scroll-calendar-left
address@hidden C-x > @r{(Calendar mode)}
address@hidden scroll-calendar-right
+  The most basic calendar scroll commands scroll by one month at a
+time.  This means that there are two months of overlap between the
+display before the command and the display after.  @kbd{C-x <} scrolls
+the calendar contents one month to the left; that is, it moves the
+display forward in time.  @kbd{C-x >} scrolls the contents to the
+right, which moves backwards in time.
+
address@hidden C-v @r{(Calendar mode)}
address@hidden scroll-calendar-left-three-months
address@hidden M-v @r{(Calendar mode)}
address@hidden scroll-calendar-right-three-months
+  The commands @kbd{C-v} and @kbd{M-v} scroll the calendar by an entire
+``screenful''---three months---in analogy with the usual meaning of
+these commands.  @kbd{C-v} makes later dates visible and @kbd{M-v} makes
+earlier dates visible.  These commands take a numeric argument as a
+repeat count; in particular, since @kbd{C-u} multiplies the next command
+by four, typing @kbd{C-u C-v} scrolls the calendar forward by a year and
+typing @kbd{C-u M-v} scrolls the calendar backward by a year.
+
+  The function keys @key{NEXT} and @key{PRIOR} are equivalent to
address@hidden and @kbd{M-v}, just as they are in other modes.
+
+
address@hidden Mark and Region, General Calendar, Scroll Calendar, 
Calendar/Diary
address@hidden The Mark and the Region
+
+  The concept of the mark applies to the calendar just as to any other
+buffer, but it marks a @emph{date}, not a @emph{position} in the buffer.
+The region consists of the days between the mark and point (including
+the starting and stopping dates).
+
address@hidden @kbd
address@hidden C-SPC
+Set the mark to today's date (@code{calendar-set-mark}).
address@hidden C-@@
+The same.
address@hidden C-x C-x
+Interchange mark and point (@code{calendar-exchange-point-and-mark}).
address@hidden M-=
+Display the number of days in the current region
+(@code{calendar-count-days-region}).
address@hidden table
+
address@hidden C-@@ @r{(Calendar mode)}
address@hidden C-SPC @r{(Calendar mode)}
address@hidden calendar-set-mark
address@hidden C-x C-x @r{(Calendar mode)}
address@hidden calendar-exchange-point-and-mark
+  You set the mark in the calendar, as in any other buffer, by using @kbd{C-@@}
+or @kbd{C-SPC} (@code{calendar-set-mark}).  You return to the marked date
+with the command @kbd{C-x C-x} (@code{calendar-exchange-point-and-mark})
+which puts the mark where point was and point where mark was.  The calendar
+is scrolled as necessary, if the marked date was not visible on the
+screen.  This does not change the extent of the region.
+
address@hidden M-= @r{(Calendar mode)}
address@hidden calendar-count-days-region
+  To determine the number of days in the region, type @kbd{M-=}
+(@code{calendar-count-days-region}).  The numbers of days printed is
address@hidden; that is, it includes the days specified by mark and
+point.
+
address@hidden mark ring
+  The main use of the mark in the calendar is to remember dates that you may
+want to go back to.  To make this feature more useful, the mark ring
+(@pxref{Mark Ring}) operates exactly as in other buffers:  Emacs remembers
+16 previous locations of the mark.  To return to a marked date, type @kbd{C-u
+C-SPC} (or @kbd{C-u C-@@}); this is the command @code{calendar-set-mark} given
+a numeric argument.  It moves point to where the mark was, restores the mark
+from the ring of former marks, and stores the previous point at the end of
+the mark ring.  So, repeated use of this command moves point through all
+the old marks on the ring, one by one.
+
address@hidden General Calendar, LaTeX Calendar, Mark and Region, Calendar/Diary
address@hidden Miscellaneous Calendar Commands
+
address@hidden @kbd
address@hidden p d
+Display day-in-year (@code{calendar-print-day-of-year}).
address@hidden ?
+Briefly describe calendar commands (@code{describe-calendar-mode}).
address@hidden C-c C-l
+Regenerate the calendar window (@code{redraw-calendar}).
address@hidden SPC
+Scroll the next window (@code{scroll-other-window}).
address@hidden q
+Exit from calendar (@code{exit-calendar}).
address@hidden table
+
address@hidden p d @r{(Calendar mode)}
address@hidden day of year
address@hidden calendar-print-day-of-year
+  If you want to know how many days have elapsed since the start of
+the year, or the number of days remaining in the year, type the @kbd{p d}
+command (@code{calendar-print-day-of-year}).  This displays both
+of those numbers in the echo area.
+
address@hidden ? @r{(Calendar mode)}
address@hidden describe-calendar-mode
+  To display a brief description of the calendar commands, type @kbd{?}
+(@code{describe-calendar-mode}).  For a fuller description, type @kbd{C-h m}.
+
address@hidden SPC @r{(Calendar mode)}
address@hidden scroll-other-window
+  You can use @kbd{SPC} (@code{scroll-other-window}) to scroll the other
+window.  This is handy when you display a list of holidays or diary entries
+in another window.
+
address@hidden C-c C-l @r{(Calendar mode)}
address@hidden redraw-calendar
+  If the calendar window text gets corrupted, type @kbd{C-c C-l}
+(@code{redraw-calendar}) to redraw it.  (This can only happen if you use
+non-Calendar-mode editing commands.)
+
address@hidden SPC @r{(Calendar mode)}
+  In Calendar mode, you can use @kbd{SPC} (@code{scroll-other-window})
+to scroll the other window.  This is handy when you display a list of
+holidays or diary entries in another window.
+
address@hidden q @r{(Calendar mode)}
address@hidden exit-calendar
+  To exit from the calendar, type @kbd{q} (@code{exit-calendar}).  This
+buries all buffers related to the calendar, selecting other buffers.
+(If a frame contains a dedicated calendar window, exiting from the
+calendar iconifies that frame.)
+
address@hidden LaTeX Calendar, Holidays, General Calendar, Calendar/Diary
address@hidden LaTeX Calendar
address@hidden calendar and address@hidden
+
+   The Calendar address@hidden commands produce a buffer of address@hidden 
code that
+prints as a calendar.  Depending on the command you use, the printed
+calendar covers the day, week, month or year that point is in.
+
address@hidden t @r{(Calendar mode)}
address@hidden @kbd
address@hidden t m
+Generate a one-month calendar (@code{cal-tex-cursor-month}).
address@hidden t M
+Generate a sideways-printing one-month calendar
+(@code{cal-tex-cursor-month-landscape}).
address@hidden t d
+Generate a one-day calendar
+(@code{cal-tex-cursor-day}).
address@hidden t w 1
+Generate a one-page calendar for one week
+(@code{cal-tex-cursor-week}).
address@hidden t w 2
+Generate a two-page calendar for one week
+(@code{cal-tex-cursor-week2}).
address@hidden t w 3
+Generate an ISO-style calendar for one week
+(@code{cal-tex-cursor-week-iso}).
address@hidden t w 4
+Generate a calendar for one Monday-starting week
+(@code{cal-tex-cursor-week-monday}).
address@hidden t f w
+Generate a Filofax-style two-weeks-at-a-glance calendar
+(@code{cal-tex-cursor-filofax-2week}).
address@hidden t f W
+Generate a Filofax-style one-week-at-a-glance calendar
+(@code{cal-tex-cursor-filofax-week}).
address@hidden t y
+Generate a calendar for one year
+(@code{cal-tex-cursor-year}).
address@hidden t Y
+Generate a sideways-printing calendar for one year
+(@code{cal-tex-cursor-year-landscape}).
address@hidden t f y
+Generate a Filofax-style calendar for one year
+(@code{cal-tex-cursor-filofax-year}).
address@hidden table
+
+  Some of these commands print the calendar sideways (in ``landscape
+mode''), so it can be wider than it is long.  Some of them use Filofax
+paper size (3.75in x 6.75in).  All of these commands accept a prefix
+argument which specifies how many days, weeks, months or years to print
+(starting always with the selected one).
+
+  If the variable @code{cal-tex-holidays} is address@hidden (the
+default), then the printed calendars show the holidays in
address@hidden  If the variable @code{cal-tex-diary} is
address@hidden (the default is @code{nil}), diary entries are included
+also (in weekly and monthly calendars only).
+
address@hidden Holidays, Sunrise/Sunset, LaTeX Calendar, Calendar/Diary
address@hidden Holidays
address@hidden holidays
+
+  The Emacs calendar knows about all major and many minor holidays,
+and can display them.
+
address@hidden @kbd
address@hidden h
+Display holidays for the selected date
+(@code{calendar-cursor-holidays}).
address@hidden Button2 Holidays
+Display any holidays for the date you click on.
address@hidden x
+Mark holidays in the calendar window (@code{mark-calendar-holidays}).
address@hidden u
+Unmark calendar window (@code{calendar-unmark}).
address@hidden a
+List all holidays for the displayed three months in another window
+(@code{list-calendar-holidays}).
address@hidden M-x holidays
+List all holidays for three months around today's date in another
+window.
address@hidden M-x list-holidays
+List holidays in another window for a specified range of years.
address@hidden table
+
address@hidden h @r{(Calendar mode)}
address@hidden calendar-cursor-holidays
+  To see if any holidays fall on a given date, position point on that
+date in the calendar window and use the @kbd{h} command.  Alternatively,
+click on that date with @kbd{Button2} and then choose @kbd{Holidays}
+from the menu that appears.  Either way, this displays the holidays for
+that date, in the echo area if they fit there, otherwise in a separate
+window.
+
address@hidden x @r{(Calendar mode)}
address@hidden mark-calendar-holidays
address@hidden u @r{(Calendar mode)}
address@hidden calendar-unmark
+  To view the distribution of holidays for all the dates shown in the
+calendar, use the @kbd{x} command.  This displays the dates that are
+holidays in a different face (or places a @samp{*} after these dates, if 
+display with multiple faces is not available). The command applies both
+to the currently visible months and to other months that subsequently
+become visible by scrolling.  To turn marking off and erase the current
+marks, type @kbd{u}, which also erases any diary marks (@pxref{Diary}).
+
address@hidden a @r{(Calendar mode)}
address@hidden list-calendar-holidays
+  To get even more detailed information, use the @kbd{a} command, which
+displays a separate buffer containing a list of all holidays in the
+current three-month range.  You can use @key{SPC} in the calendar window
+to scroll that list.
+
address@hidden holidays
+  The command @kbd{M-x holidays} displays the list of holidays for the
+current month and the preceding and succeeding months; this works even
+if you don't have a calendar window.  If you want the list of holidays
+centered around a different month, use @kbd{C-u M-x holidays}, which
+prompts for the month and year.
+
+  The holidays known to Emacs include United States holidays and the
+major Christian, Jewish, and Islamic holidays; also the solstices and
+equinoxes.
+
address@hidden list-holidays
+   The command @kbd{M-x list-holidays} displays the list of holidays for
+a range of years.  This function asks you for the starting and stopping
+years, and allows you to choose all the holidays or one of several
+categories of holidays.  You can use this command even if you don't have
+a calendar window.
+
+  The dates used by Emacs for holidays are based on @emph{current
+practice}, not historical fact.  Historically, for instance, the start
+of daylight savings time and even its existence have varied from year to
+year, but present United States law mandates that daylight savings time
+begins on the first Sunday in April.  When the daylight savings rules
+are set up for the United States, Emacs always uses the present
+definition, even though it is wrong for some prior years.
+
address@hidden Sunrise/Sunset, Lunar Phases, Holidays, Calendar/Diary
address@hidden Times of Sunrise and Sunset
address@hidden sunrise and sunset
+
+  Special calendar commands can tell you, to within a minute or two, the
+times of sunrise and sunset for any date.
+
address@hidden @kbd
address@hidden S
+Display times of sunrise and sunset for the selected date
+(@code{calendar-sunrise-sunset}).
address@hidden Button2 Sunrise/Sunset
+Display times of sunrise and sunset for the date you click on.
address@hidden M-x sunrise-sunset
+Display times of sunrise and sunset for today's date.
address@hidden C-u M-x sunrise-sunset
+Display times of sunrise and sunset for a specified date.
address@hidden table
+
address@hidden S @r{(Calendar mode)}
address@hidden calendar-sunrise-sunset
address@hidden sunrise-sunset
+  Within the calendar, to display the @emph{local times} of sunrise and
+sunset in the echo area, move point to the date you want, and type
address@hidden  Alternatively, click @kbd{Button2} on the date, then choose
address@hidden/Sunset} from the menu that appears.  The command @kbd{M-x
+sunrise-sunset} is available outside the calendar to display this
+information for today's date or a specified date.  To specify a date
+other than today, use @kbd{C-u M-x sunrise-sunset}, which prompts for
+the year, month, and day.
+
+  You can display the times of sunrise and sunset for any location and
+any date with @kbd{C-u C-u M-x sunrise-sunset}.  This asks you for a
+longitude, latitude, number of minutes difference from Coordinated
+Universal Time, and date, and then tells you the times of sunrise and
+sunset for that location on that date.
+
+  Because the times of sunrise and sunset depend on the location on
+earth, you need to tell Emacs your latitude, longitude, and location
+name before using these commands.  Here is an example of what to set:
+
address@hidden calendar-location-name
address@hidden calendar-longitude
address@hidden calendar-latitude
address@hidden
+(setq calendar-latitude 40.1)
+(setq calendar-longitude -88.2)
+(setq calendar-location-name "Urbana, IL")
address@hidden example
+
address@hidden
+Use one decimal place in the values of @code{calendar-latitude} and
address@hidden
+
+  Your time zone also affects the local time of sunrise and sunset.
+Emacs usually gets time zone information from the operating system, but
+if these values are not what you want (or if the operating system does
+not supply them), you must set them yourself.  Here is an example:
+
address@hidden calendar-time-zone
address@hidden calendar-standard-time-zone-name
address@hidden calendar-daylight-time-zone-name
address@hidden
+(setq calendar-time-zone -360)
+(setq calendar-standard-time-zone-name "CST")
+(setq calendar-daylight-time-zone-name "CDT")
address@hidden example
+
address@hidden
+The value of @code{calendar-time-zone} is the number of minutes
+difference between your local standard time and Coordinated Universal
+Time (Greenwich time).  The values of
address@hidden and
address@hidden are the abbreviations used in
+your time zone.  Emacs displays the times of sunrise and sunset
address@hidden for daylight savings time}.  @xref{Daylight Savings},
+for how daylight savings time is determined.
+
+  As a user, you might find it convenient to set the calendar location
+variables for your usual physical location in your init file.  And when
+you install Emacs on a machine, you can create a @file{default.el} file
+which sets them properly for the typical location of most users of that
+machine.  @xref{Init File}.
+
address@hidden Lunar Phases, Other Calendars, Sunrise/Sunset, Calendar/Diary
address@hidden Phases of the Moon
address@hidden phases of the moon
address@hidden moon, phases of
+
+  These calendar commands display the dates and times of the phases of
+the moon (new moon, first quarter, full moon, last quarter).  This
+feature is useful for debugging problems that ``depend on the phase of
+the moon.''
+
address@hidden @kbd
address@hidden M
+Display the dates and times for all the quarters of the moon for the
+three-month period shown (@code{calendar-phases-of-moon}).
address@hidden M-x phases-of-moon
+Display dates and times of the quarters of the moon for three months around
+today's date.
address@hidden table
+
address@hidden M @r{(Calendar mode)}
address@hidden calendar-phases-of-moon
+  Within the calendar, use the @kbd{M} command to display a separate
+buffer of the phases of the moon for the current three-month range.  The
+dates and times listed are accurate to within a few minutes.
+
address@hidden phases-of-moon
+  Outside the calendar, use the command @kbd{M-x phases-of-moon} to
+display the list of the phases of the moon for the current month and the
+preceding and succeeding months.  For information about a different
+month, use @kbd{C-u M-x phases-of-moon}, which prompts for the month and
+year.
+ 
+  The dates and times given for the phases of the moon are given in
+local time (corrected for daylight savings, when appropriate); but if
+the variable @code{calendar-time-zone} is void, Coordinated Universal
+Time (the Greenwich time zone) is used.  @xref{Daylight Savings}.
+
address@hidden Other Calendars, Calendar Systems, Lunar Phases, Calendar/Diary
address@hidden  Conversion To and From Other Calendars
+
address@hidden Gregorian calendar
+  The Emacs calendar displayed is @emph{always} the Gregorian calendar,
+sometimes called the ``new style'' calendar, which is used in most of
+the world today.  However, this calendar did not exist before the
+sixteenth century and was not widely used before the eighteenth century;
+it did not fully displace the Julian calendar and gain universal
+acceptance until the early twentieth century.  The Emacs calendar can
+display any month since January, year 1 of the current era, but the
+calendar displayed is the Gregorian, even for a date at which the
+Gregorian calendar did not exist.
+
+  While Emacs cannot display other calendars, it can convert dates to
+and from several other calendars.
+
address@hidden
+* Calendar Systems::      The calendars Emacs understands
+                            (aside from Gregorian).
+* To Other Calendar::     Converting the selected date to various calendars.
+* From Other Calendar::   Moving to a date specified in another calendar.
+* Mayan Calendar::        Moving to a date specified in a Mayan calendar.
address@hidden menu
+
+  If you are interested in these calendars, you can convert dates one at a
+time.  Put point on the desired date of the Gregorian calendar and press the
+appropriate keys.  The @kbd{p} is a mnemonic for ``print'' since Emacs
+``prints' the equivalent date in the echo area.
address@hidden Calendar Systems, To Other Calendar, Other Calendars, Other 
Calendars
address@hidden Supported Calendar Systems
+
address@hidden ISO commercial calendar
+  The ISO commercial calendar is used largely in Europe.
+
address@hidden Julian calendar
+  The Julian calendar, named after Julius Caesar, was the one used in Europe
+throughout medieval times, and in many countries up until the nineteenth
+century.
+
address@hidden Julian day numbers
address@hidden astronomical day numbers
+  Astronomers use a simple counting of days elapsed since noon, Monday,
+January 1, 4713 B.C. on the Julian calendar.  The number of days elapsed
+is called the @emph{Julian day number} or the @emph{Astronomical day number}.
+
address@hidden Hebrew calendar
+  The Hebrew calendar is used by tradition in the Jewish religion.  The
+Emacs calendar program uses the Hebrew calendar to determine the dates
+of Jewish holidays.  Hebrew calendar dates begin and end at sunset.
+
address@hidden Islamic calendar
+  The Islamic calendar is used in many predominantly Islamic countries.
+Emacs uses it to determine the dates of Islamic holidays.  There is no
+universal agreement in the Islamic world about the calendar; Emacs uses
+a widely accepted version, but the precise dates of Islamic holidays
+often depend on proclamation by religious authorities, not on
+calculations.  As a consequence, the actual dates of observance can vary
+slightly from the dates computed by Emacs.  Islamic calendar dates begin
+and end at sunset.
+
address@hidden French Revolutionary calendar
+  The French Revolutionary calendar was created by the Jacobins after the 1789
+revolution, to represent a more secular and nature-based view of the annual
+cycle, and to install a 10-day week in a rationalization measure similar to
+the metric system.  The French government officially abandoned this
+calendar at the end of 1805.
+
address@hidden Mayan calendar
+  The Maya of Central America used three separate, overlapping calendar
+systems, the @emph{long count}, the @emph{tzolkin}, and the @emph{haab}.
+Emacs knows about all three of these calendars.  Experts dispute the
+exact correlation between the Mayan calendar and our calendar; Emacs uses the
+Goodman-Martinez-Thompson correlation in its calculations.
+
address@hidden Coptic calendar
address@hidden Ethiopic calendar
+  The Copts use a calendar based on the ancient Egyptian solar calendar.
+Their calendar consists of twelve 30-day months followed by an extra
+five-day period.  Once every fourth year they add a leap day to this
+extra period to make it six days.  The Ethiopic calendar is identical in
+structure, but has different year numbers and month names.
+
address@hidden Persian calendar
+  The Persians use a solar calendar based on a design of Omar Khayyam.
+Their calendar consists of twelve months of which the first six have 31
+days, the next five have 30 days, and the last has 29 in ordinary years
+and 30 in leap years.  Leap years occur in a complicated pattern every
+four or five years.
+
address@hidden Chinese calendar
+  The Chinese calendar is a complicated system of lunar months arranged
+into solar years.  The years go in cycles of sixty, each year containing
+either twelve months in an ordinary year or thirteen months in a leap
+year; each month has either 29 or 30 days.  Years, ordinary months, and
+days are named by combining one of ten ``celestial stems'' with one of
+twelve ``terrestrial branches'' for a total of sixty names that are
+repeated in a cycle of sixty.
+
address@hidden To Other Calendar, From Other Calendar, Calendar Systems, Other 
Calendars
address@hidden Converting To Other Calendars
+
+  The following commands describe the selected date (the date at point)
+in various other calendar systems:
+
address@hidden @kbd
address@hidden Button2  Other Calendars
+Display the date that you click on, expressed in various other calendars.
address@hidden p @r{(Calendar mode)}
address@hidden calendar-print-iso-date
address@hidden p c
+Display ISO commercial calendar equivalent for selected day
+(@code{calendar-print-iso-date}).
address@hidden calendar-print-julian-date
address@hidden p j
+Display Julian date for selected day (@code{calendar-print-julian-date}).
address@hidden calendar-print-astro-day-number
address@hidden p a
+Display astronomical (Julian) day number for selected day
+(@code{calendar-print-astro-day-number}).
address@hidden calendar-print-hebrew-date
address@hidden p h
+Display Hebrew date for selected day (@code{calendar-print-hebrew-date}).
address@hidden calendar-print-islamic-date
address@hidden p i
+Display Islamic date for selected day (@code{calendar-print-islamic-date}).
address@hidden calendar-print-french-date
address@hidden p f
+Display French Revolutionary date for selected day
+(@code{calendar-print-french-date}).
address@hidden calendar-print-chinese-date
address@hidden p C
+Display Chinese date for selected day
+(@code{calendar-print-chinese-date}).
address@hidden calendar-print-coptic-date
address@hidden p k
+Display Coptic date for selected day
+(@code{calendar-print-coptic-date}).
address@hidden calendar-print-ethiopic-date
address@hidden p e
+Display Ethiopic date for selected day
+(@code{calendar-print-ethiopic-date}).
address@hidden calendar-print-persian-date
address@hidden p p
+Display Persian date for selected day
+(@code{calendar-print-persian-date}).
address@hidden calendar-print-mayan-date
address@hidden p m
+Display Mayan date for selected day (@code{calendar-print-mayan-date}).
address@hidden table
+
+  If you are using X, the easiest way to translate a date into other
+calendars is to click on it with @kbd{Button2}, then choose @kbd{Other
+Calendars} from the menu that appears.  This displays the equivalent
+forms of the date in all the calendars Emacs understands, in the form of
+a menu.  (Choosing an alternative from this menu doesn't actually do
+anything---the menu is used only for display.)
+
+  Put point on the desired date of the Gregorian calendar, then type the
+appropriate keys.  The @kbd{p} is a mnemonic for ``print'' since Emacs
+``prints'' the equivalent date in the echo area.
+
address@hidden From Other Calendar, Mayan Calendar, To Other Calendar, Other 
Calendars
address@hidden Converting From Other Calendars
+
+  You can use the other supported calendars to specify a date to move
+to.  This section describes the commands for doing this using calendars
+other than Mayan; for the Mayan calendar, see the following section.
+
address@hidden g @var{char} @r{(Calendar mode)}
address@hidden calendar-goto-iso-date
address@hidden calendar-goto-julian-date
address@hidden calendar-goto-astro-day-number
address@hidden calendar-goto-hebrew-date
address@hidden calendar-goto-islamic-date
address@hidden calendar-goto-french-date
address@hidden calendar-goto-chinese-date
address@hidden calendar-goto-persian-date
address@hidden calendar-goto-coptic-date
address@hidden calendar-goto-ethiopic-date
address@hidden @kbd
address@hidden g c
+Move to a date specified in the ISO commercial calendar
+(@code{calendar-goto-iso-date}).
address@hidden g j
+Move to a date specified in the Julian calendar
+(@code{calendar-goto-julian-date}).
address@hidden g a
+Move to a date specified in astronomical (Julian) day number
+(@code{calendar-goto-astro-day-number}).
address@hidden g h
+Move to a date specified in the Hebrew calendar
+(@code{calendar-goto-hebrew-date}).
address@hidden g i
+Move to a date specified in the Islamic calendar
+(@code{calendar-goto-islamic-date}).
address@hidden g f
+Move to a date specified in the French Revolutionary calendar
+(@code{calendar-goto-french-date}).
address@hidden g C
+Move to a date specified in the Chinese calendar
+(@code{calendar-goto-chinese-date}).
address@hidden g p
+Move to a date specified in the Persian calendar
+(@code{calendar-goto-persian-date}).
address@hidden g k
+Move to a date specified in the Coptic calendar
+(@code{calendar-goto-coptic-date}).
address@hidden g e
+Move to a date specified in the Ethiopic calendar
+(@code{calendar-goto-ethiopic-date}).
address@hidden table
+
+  These commands ask you for a date on the other calendar, move point to
+the Gregorian calendar date equivalent to that date, and display the
+other calendar's date in the echo area.  Emacs uses strict completion
+(@pxref{Completion}) whenever it asks you to type a month name, so you
+don't have to worry about the spelling of Hebrew, Islamic, or French names.
+
address@hidden list-yahrzeit-dates
address@hidden yahrzeits
+  One common question concerning the Hebrew calendar is the computation
+of the anniversary of a date of death, called a ``yahrzeit.''  The Emacs
+calendar includes a facility for such calculations.  If you are in the
+calendar, the command @kbd{M-x list-yahrzeit-dates} asks you for a
+range of years and then displays a list of the yahrzeit dates for those
+years for the date given by point.  If you are not in the calendar,
+this command first asks you for the date of death and the range of
+years, and then displays the list of yahrzeit dates.
+
address@hidden Mayan Calendar, Diary ,From Other Calendar ,Other Calendars
address@hidden Converting from the Mayan Calendar
+
+  Here are the commands to select dates based on the Mayan calendar:
+
address@hidden @kbd
address@hidden g m l
+Move to a date specified by the long count calendar
+(@code{calendar-goto-mayan-long-count-date}).
address@hidden g m n t
+Move to the next occurrence of a place in the
+tzolkin calendar (@code{calendar-next-tzolkin-date}).
address@hidden g m p t
+Move to the previous occurrence of a place in the
+tzolkin calendar (@code{calendar-previous-tzolkin-date}).
address@hidden g m n h
+Move to the next occurrence of a place in the
+haab calendar (@code{calendar-next-haab-date}).
address@hidden g m p h
+Move to the previous occurrence of a place in the
+haab calendar (@code{calendar-previous-haab-date}).
address@hidden g m n c
+Move to the next occurrence of a place in the
+calendar round (@code{calendar-next-calendar-round-date}).
address@hidden g m p c
+Move to the previous occurrence of a place in the
+calendar round (@code{calendar-previous-calendar-round-date}).
address@hidden table
+
address@hidden Mayan long count
+  To understand these commands, you need to understand the Mayan calendars.
+The @dfn{long count} is a counting of days with these units:
+ 
address@hidden
+1 kin = 1 day@ @ @ 1 uinal = 20 kin@ @ @ 1 tun = 18 uinal
+1 katun = 20 tun@ @ @ 1 baktun = 20 katun
address@hidden display
+
address@hidden g m l @r{(Calendar mode)}
address@hidden calendar-goto-mayan-long-count-date
address@hidden
+Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11
+tun, 16 uinal, and 6 kin.  The Emacs calendar can handle Mayan long
+count dates as early as 7.17.18.13.1, but no earlier.  When you use the
address@hidden m l} command, type the Mayan long count date with the baktun,
+katun, tun, uinal, and kin separated by periods.
+
address@hidden calendar-previous-tzolkin-date
address@hidden calendar-next-tzolkin-date
address@hidden Mayan tzolkin calendar
+  The Mayan tzolkin calendar is a cycle of 260 days formed by a pair of
+independent cycles of 13 and 20 days.  Since this cycle repeats
+endlessly, Emacs provides commands to move backward and forward to the
+previous or next point in the cycle.  Type @kbd{g m p t} to go to the
+previous tzolkin date; Emacs asks you for a tzolkin date and moves point
+to the previous occurrence of that date.  Similarly, type @kbd{g m n t}
+to go to the next occurrence of a tzolkin date.
+
address@hidden calendar-previous-haab-date
address@hidden calendar-next-haab-date
address@hidden Mayan haab calendar
+  The Mayan haab calendar is a cycle of 365 days arranged as 18 months
+of 20 days each, followed a 5-day monthless period.  Like the tzolkin
+cycle, this cycle repeats endlessly, and there are commands to move
+backward and forward to the previous or next point in the cycle.  Type
address@hidden m p h} to go to the previous haab date; Emacs asks you for a haab
+date and moves point to the previous occurrence of that date.
+Similarly, type @kbd{g m n h} to go to the next occurrence of a haab
+date.
+
address@hidden This is omitted because it is too long for smallbook format.
address@hidden @findex calendar-previous-calendar-round-date
address@hidden calendar-next-calendar-round-date
address@hidden Mayan calendar round
+  The Maya also used the combination of the tzolkin date and the haab
+date.  This combination is a cycle of about 52 years called a
address@hidden round}.  If you type @kbd{g m p c}, Emacs asks you for
+both a haab and a tzolkin date and then moves point to the previous
+occurrence of that combination.  Use @kbd{g m n c} to move point to the
+next occurrence of a combination.  These commands signal an error if the
+haab/tzolkin date combination you have typed is impossible.
+
+  Emacs uses strict completion (@pxref{Completion}) whenever it
+asks you to type a Mayan name, so you don't have to worry about
+spelling.
+
address@hidden Diary, Calendar Customization, Mayan Calendar, Calendar/Diary
address@hidden The Diary
address@hidden diary
+
+  The Emacs diary keeps track of appointments or other events on a daily
+basis, in conjunction with the calendar.  To use the diary feature, you
+must first create a @dfn{diary file} containing a list of events and
+their dates.  Then Emacs can automatically pick out and display the
+events for today, for the immediate future, or for any specified
+date.
+
+  By default, Emacs uses @file{~/diary} as the diary file.  This is the
+same file that the @code{calendar} utility uses.  A sample
address@hidden/diary} file is:
+
address@hidden
+12/22/1988 Twentieth wedding anniversary!!
+&1/1. Happy New Year!
+10/22 Ruth's birthday.
+* 21, *: Payday
+Tuesday--weekly meeting with grad students at 10am
+         Supowit, Shen, Bitner, and Kapoor to attend.
+1/13/89 Friday the thirteenth!!
+&thu 4pm squash game with Lloyd.
+mar 16 Dad's birthday
+April 15, 1989 Income tax due.
+&* 15 time cards due.
address@hidden example
+
address@hidden
+This example uses extra spaces to align the event descriptions of most
+of the entries.  Such formatting is purely a matter of taste.
+
+  Although you probably will start by creating a diary manually, Emacs
+provides a number of commands to let you view, add, and change diary
+entries.  You can also share diary entries with other users
+(@pxref{Included Diary Files}).
+
address@hidden
+* Diary Commands::         Viewing diary entries and associated calendar dates.
+* Format of Diary File::   Entering events in your diary.
+* Date Formats::           Various ways you can specify dates.
+* Adding to Diary::        Commands to create diary entries.
+* Special Diary Entries::  Anniversaries, blocks of dates, cyclic entries, etc.
address@hidden menu
+
address@hidden Diary Commands, Format of Diary File, Diary, Diary
address@hidden Commands Displaying Diary Entries
+
+  Once you have created a @file{~/diary} file, you can use the calendar
+to view it.  You can also view today's events outside of Calendar mode.
+
address@hidden @kbd
address@hidden d
+Display all diary entries for the selected date
+(@code{view-diary-entries}).
address@hidden Button2 Diary
+Display all diary entries for the date you click on.
address@hidden s
+Display the entire diary file (@code{show-all-diary-entries}).
address@hidden m
+Mark all visible dates that have diary entries
+(@code{mark-diary-entries}).
address@hidden u
+Unmark the calendar window (@code{calendar-unmark}).
address@hidden M-x print-diary-entries
+Print hard copy of the diary display as it appears.
address@hidden M-x diary
+Display all diary entries for today's date.
address@hidden M-x diary-mail-entries
+Mail yourself email reminders about upcoming diary entries.
address@hidden table
+
address@hidden d @r{(Calendar mode)}
address@hidden view-diary-entries
+  Displaying the diary entries with @kbd{d} shows in a separate window
+the diary entries for the selected date in the calendar.  The mode line
+of the new window shows the date of the diary entries and any holidays
+that fall on that date.  If you specify a numeric argument with @kbd{d},
+it shows all the diary entries for that many successive days.  Thus,
address@hidden d} displays all the entries for the selected date and for the
+following day.
+
+  Another way to display the diary entries for a date is to click
address@hidden on the date, and then choose @kbd{Diary} from the menu
+that appears.
+
address@hidden m @r{(Calendar mode)}
address@hidden mark-diary-entries
address@hidden u @r{(Calendar mode)}
address@hidden calendar-unmark
+  To get a broader view of which days are mentioned in the diary, use
+the @kbd{m} command.  This displays the dates that have diary entries
+in a different face (or places a @samp{+} after these dates, if
+display with multiple faces is not available).  The command applies both
+to the currently visible months and to other months that subsequently
+become visible by scrolling.  To turn marking off and erase the current
+marks, type @kbd{u}, which also turns off holiday marks
+(@pxref{Holidays}).
+
address@hidden s @r{(Calendar mode)}
address@hidden show-all-diary-entries
+  To see the full diary file, rather than just some of the entries, use
+the @kbd{s} command.
+
+  Display of selected diary entries uses the selective display feature
+to hide entries that don't apply.
+
address@hidden print-diary-entries
+  The diary buffer as you see it is an illusion, so simply printing the
+buffer does not print what you see on your screen.  There is a special
+command to print hard copy of the diary buffer @emph{as it appears};
+this command is @kbd{M-x print-diary-entries}.  It sends the data
+directly to the printer.  You can customize it like @code{lpr-region}
+(@pxref{Hardcopy}).
+
address@hidden diary
+  The command @kbd{M-x diary} displays the diary entries for the current
+date, independently of the calendar display, and optionally for the next
+few days as well; the variable @code{number-of-diary-entries} specifies
+how many days to include (@pxref{Customization}).
+
+  If you put @code{(diary)} in your init file, this
+automatically displays a window with the day's diary entries, when you
+enter Emacs.  @xref{Init File}.  The mode line of the displayed window
+shows the date and any holidays that fall on that date.
+
address@hidden diary-mail-entries
address@hidden diary-mail-days
+  Many users like to receive notice of events in their diary as email.
+To send such mail to yourself, use the command @kbd{M-x
+diary-mail-entries}.  A prefix argument specifies how many days
+(starting with today) to check; otherwise, the variable
address@hidden says how many days.
+
address@hidden Format of Diary File, Date Formats, Diary Commands, Diary
address@hidden The Diary File
address@hidden diary file
+
address@hidden diary-file
+  Your @dfn{diary file} is a file that records events associated with
+particular dates.  The name of the diary file is specified by the
+variable @code{diary-file}; @file{~/diary} is the default.  The
address@hidden utility program supports a subset of the format allowed
+by the Emacs diary facilities, so you can use that utility to view the
+diary file, with reasonable results aside from the entries it cannot
+understand.
+
+  Each entry in the diary file describes one event and consists of one
+or more lines.  An entry always begins with a date specification at the
+left margin.  The rest of the entry is simply text to describe the
+event.  If the entry has more than one line, then the lines after the
+first must begin with whitespace to indicate they continue a previous
+entry.  Lines that do not begin with valid dates and do not continue a
+preceding entry are ignored.
+
+  You can inhibit the marking of certain diary entries in the calendar
+window; to do this, insert an ampersand (@samp{&}) at the beginning of
+the entry, before the date.  This has no effect on display of the entry
+in the diary window; it affects only marks on dates in the calendar
+window.  Nonmarking entries are especially useful for generic entries
+that would otherwise mark many different dates.
+
+  If the first line of a diary entry consists only of the date or day
+name with no following blanks or punctuation, then the diary window
+display doesn't include that line; only the continuation lines appear.
+For example, this entry:
+
address@hidden
+02/11/1989
+      Bill B. visits Princeton today
+      2pm Cognitive Studies Committee meeting
+      2:30-5:30 Liz at Lawrenceville
+      4:00pm Dentist appt
+      7:30pm Dinner at George's
+      8:00-10:00pm concert
address@hidden example
+
address@hidden
+appears in the diary window without the date line at the beginning.
+This style of entry looks neater when you display just a single day's
+entries, but can cause confusion if you ask for more than one day's
+entries.
+
+  You can edit the diary entries as they appear in the window, but it is
+important to remember that the buffer displayed contains the @emph{entire}
+diary file, with portions of it concealed from view.  This means, for
+instance, that the @kbd{C-f} (@code{forward-char}) command can put point
+at what appears to be the end of the line, but what is in reality the
+middle of some concealed line.  
+
+  @emph{Be careful when editing the diary entries!}  Inserting
+additional lines or adding/deleting characters in the middle of a
+visible line cannot cause problems, but editing at the end of a line may
+not do what you expect.  Deleting a line may delete other invisible
+entries that follow it.  Before editing the diary, it is best to display
+the entire file with @kbd{s} (@code{show-all-diary-entries}).
+
address@hidden Date Formats,Adding to Diary ,Format of Diary File, Diary
address@hidden Date Formats
+
+  Here are some sample diary entries, illustrating different ways of
+formatting a date.  The examples all show dates in American order
+(month, day, year), but Calendar mode supports European order (day,
+month, year) as an option.
+
address@hidden
+4/20/93  Switch-over to new tabulation system
+apr. 25  Start tabulating annual results
+4/30  Results for April are due
+*/25  Monthly cycle finishes
+Friday  Don't leave without backing up files
address@hidden example
+
+  The first entry appears only once, on April 20, 1993.  The second and
+third appear every year on the specified dates, and the fourth uses a
+wildcard (asterisk) for the month, so it appears on the 25th of every
+month.  The final entry appears every week on Friday.
+
+  You can use just numbers to express a date, as in
address@hidden@var{month}/@var{day}} or @address@hidden/@var{day}/@var{year}}.
+This must be followed by a nondigit.  In the date itself, @var{month}
+and @var{day} are numbers of one or two digits.  The optional @var{year}
+is also a number, and may be abbreviated to the last two digits; that
+is, you can use @samp{11/12/1989} or @samp{11/12/89}.
+
+  Dates can also have the form @address@hidden @var{day}} or
address@hidden@var{monthname} @var{day}, @var{year}}, where the month's name can
+be spelled in full or abbreviated to three characters (with or without a
+period).  Case is not significant.
+
+  A date may be @dfn{generic}; that is, partially unspecified.  Then the
+entry applies to all dates that match the specification.  If the date
+does not contain a year, it is generic and applies to any year.
+Alternatively, @var{month}, @var{day}, or @var{year} can be a @samp{*};
+this matches any month, day, or year, respectively.  Thus, a diary entry
address@hidden/*/*} matches any day in March of any year; so does @samp{march
+*}.
+
address@hidden european-calendar-style
address@hidden european-calendar
address@hidden american-calendar
+  If you prefer the European style of writing dates---in which the day
+comes before the month---type @kbd{M-x european-calendar} while in the
+calendar, or set the variable @code{european-calendar-style} to @code{t}
address@hidden using any calendar or diary command.  This mode interprets
+all dates in the diary in the European manner, and also uses European
+style for displaying diary dates.  (Note that there is no comma after
+the @var{monthname} in the European style.)  To go back to the (default)
+American style of writing dates, type @kbd{M-x american-calendar}.
+ 
+  You can use the name of a day of the week as a generic date which
+applies to any date falling on that day of the week.  You can abbreviate
+the day of the week to three letters (with or without a period) or spell
+it in full; case is not significant.
+
address@hidden Adding to Diary, Special Diary Entries, Date Formats, Diary
address@hidden Commands to Add to the Diary
+
+  While in the calendar, there are several commands to create diary
+entries:
+
address@hidden @kbd
address@hidden i d
+Add a diary entry for the selected date (@code{insert-diary-entry}).
address@hidden i w
+Add a diary entry for the selected day of the week 
(@code{insert-weekly-diary-entry}).
address@hidden i m
+Add a diary entry for the selected day of the month 
(@code{insert-monthly-diary-entry}).
address@hidden i y
+Add a diary entry for the selected day of the year 
(@code{insert-yearly-diary-entry}).
address@hidden table
+
address@hidden i d @r{(Calendar mode)}
address@hidden insert-diary-entry
+  You can make a diary entry for a specific date by selecting that date
+in the calendar window and typing the @kbd{i d} command.  This command
+displays the end of your diary file in another window and inserts the
+date; you can then type the rest of the diary entry.
+
address@hidden i w @r{(Calendar mode)}
address@hidden insert-weekly-diary-entry
address@hidden i m @r{(Calendar mode)}
address@hidden insert-monthly-diary-entry
address@hidden i y @r{(Calendar mode)}
address@hidden insert-yearly-diary-entry
+  If you want to make a diary entry that applies to a specific day of
+the week, select that day of the week (any occurrence will do) and type
address@hidden w}.  This inserts the day-of-week as a generic date; you can then
+type the rest of the diary entry.  You can make a monthly diary entry in
+the same fashion.  Select the day of the month, use the @kbd{i m}
+command, and type rest of the entry.  Similarly, you can insert a yearly
+diary entry with the @kbd{i y} command.
+
+  All of the above commands make marking diary entries by default.  To
+make a nonmarking diary entry, give a numeric argument to the command.
+For example, @kbd{C-u i w} makes a nonmarking weekly diary entry.
+
+  When you modify the diary file, be sure to save the file before
+exiting Emacs.
+ 
address@hidden Special Diary Entries,, Adding to Diary, Diary
address@hidden Special Diary Entries
+
+  In addition to entries based on calendar dates, the diary file can
+contain @dfn{sexp entries} for regular events such as anniversaries.
+These entries are based on Lisp expressions (sexps) that Emacs evaluates
+as it scans the diary file.  Instead of a date, a sexp entry contains
address@hidden followed by a Lisp expression which must begin and end with
+parentheses.  The Lisp expression determines which dates the entry
+applies to.
+
+  Calendar mode provides commands to insert certain commonly used
+sexp entries:
+
address@hidden @kbd
address@hidden i a
+Add an anniversary diary entry for the selected date 
+(@code{insert-anniversary-diary-entry}).
address@hidden i b
+Add a block diary entry for the current region 
+(@code{insert-block-diary-entry}).
address@hidden i c
+Add a cyclic diary entry starting at the date 
+(@code{insert-cyclic-diary-entry}).
address@hidden table
+
address@hidden i a @r{(Calendar mode)}
address@hidden insert-anniversary-diary-entry
+  If you want to make a diary entry that applies to the anniversary of a
+specific date, move point to that date and use the @kbd{i a} command.
+This displays the end of your diary file in another window and inserts
+the anniversary description; you can then type the rest of the diary
+entry. The entry looks like this:
+
address@hidden diary-anniversary
+  The effect of @kbd{i a} is to add a @code{diary-anniversary} sexp to your
+diary file.  You can also add one manually, for instance:
+
address@hidden
+%%(diary-anniversary 10 31 1948) Arthur's birthday
address@hidden example
+
address@hidden
+This entry applies to October 31 in any year after 1948; @samp{10 31
+1948} specifies the date.  (If you are using the European calendar
+style, the month and day are interchanged.)  The reason this expression
+requires a beginning year is that advanced diary functions can use it to
+calculate the number of elapsed years.
+
+  A @dfn{block} diary entry applies to a specified range of consecutive
+dates.  Here is a block diary entry that applies to all dates from June
+24, 1990 through July 10, 1990:
+
address@hidden diary-block
address@hidden
+%%(diary-block 6 24 1990 7 10 1990) Vacation
address@hidden example
+
address@hidden
+The @samp{6 24 1990} indicates the starting date and the @samp{7 10 1990}
+indicates the stopping date.  (Again, if you are using the European calendar
+style, the month and day are interchanged.)
+
address@hidden i b @r{(Calendar mode)}
address@hidden insert-block-diary-entry
+  To insert a block entry, place point and the mark on the two
+dates that begin and end the range, and type @kbd{i b}.  This command
+displays the end of your diary file in another window and inserts the
+block description; you can then type the diary entry.
+
address@hidden i c @r{(Calendar mode)}
address@hidden insert-cyclic-diary-entry
+   @dfn{Cyclic} diary entries repeat after a fixed interval of days.  To
+create one, select the starting date and use the @kbd{i c} command.  The
+command prompts for the length of interval, then inserts the entry,
+which looks like this:
+
address@hidden diary-cyclic
address@hidden
+%%(diary-cyclic 50 3 1 1990) Renew medication
address@hidden example
+
address@hidden
+This entry applies to March 1, 1990 and every 50th day following;
address@hidden 1 1990} specifies the starting date.  (If you are using the
+European calendar style, the month and day are interchanged.)
+
+  All three of these commands make marking diary entries.  To insert a
+nonmarking entry, give a numeric argument to the command.  For example,
address@hidden i a} makes a nonmarking anniversary diary entry.
+
+  Marking sexp diary entries in the calendar is @emph{extremely}
+time-consuming, since every date visible in the calendar window must be
+individually checked.  So it's a good idea to make sexp diary entries
+nonmarking (with @samp{&}) when possible.
+
+  Another sophisticated kind of sexp entry, a @dfn{floating} diary entry,
+specifies a regularly occurring event by offsets specified in days,
+weeks, and months.  It is comparable to a crontab entry interpreted by
+the @code{cron} utility.  Here is a nonmarking, floating diary entry
+that applies to the last Thursday in November:
+ 
address@hidden diary-float
address@hidden
+&%%(diary-float 11 4 -1) American Thanksgiving
address@hidden example
+
address@hidden
+The 11 specifies November (the eleventh month), the 4 specifies Thursday
+(the fourth day of the week, where Sunday is numbered zero), and the
address@hidden specifies ``last'' (1 would mean ``first'', 2 would mean
+``second'', @minus{}2 would mean ``second-to-last'', and so on).  The
+month can be a single month or a list of months.  Thus you could change
+the 11 above to @samp{'(1 2 3)} and have the entry apply to the last
+Thursday of January, February, and March.  If the month is @code{t}, the
+entry applies to all months of the address@hidden
+
+  The sexp feature of the diary allows you to specify diary entries
+based on any Emacs Lisp expression.  You can use the library of built-in
+functions or you can write your own functions.  The built-in functions
+include the ones shown in this section, plus a few others (@pxref{Sexp
+Diary Entries}).
+
+  The generality of sexps lets you specify any diary entry that you can
+describe algorithmically.  Suppose you get paid on the 21st of the month
+if it is a weekday, and to the Friday before if the 21st is on a
+weekend.  The diary entry
+
address@hidden
+&%%(let ((dayname (calendar-day-of-week date))
+         (day (car (cdr date))))
+      (or (and (= day 21) (memq dayname '(1 2 3 4 5)))
+          (and (memq day '(19 20)) (= dayname 5)))
+         ) Pay check deposited
address@hidden example
+
address@hidden
+to just those dates.  This example illustrates how the sexp can depend
+on the variable @code{date}; this variable is a list (@var{month}
address@hidden @var{year}) that gives the Gregorian date for which the diary
+entries are being found.  If the value of the sexp is @code{t}, the
+entry applies to that date.  If the sexp evaluates to @code{nil}, the
+entry does @emph{not} apply to that date.
+
+
address@hidden Calendar Customization,,Diary, Calendar/Diary
address@hidden Customizing the Calendar and Diary
+
+  There are many customizations that you can use to make the calendar and
+diary suit your personal tastes.
+
address@hidden
+* Calendar Customizing::   Defaults you can set.
+* Holiday Customizing::    Defining your own holidays.
+* Date Display Format::    Changing the format.
+* Time Display Format::    Changing the format.
+* Daylight Savings::       Changing the default.
+* Diary Customizing::      Defaults you can set.
+* Hebrew/Islamic Entries:: How to obtain them.
+* Fancy Diary Display::    Enhancing the diary display, sorting entries.
+* Included Diary Files::   Sharing a common diary file.
+* Sexp Diary Entries::     Fancy things you can do.
+* Appt Customizing::      Customizing appointment reminders.
address@hidden menu
+
address@hidden Calendar Customizing
address@hidden Customizing the Calendar
address@hidden view-diary-entries-initially
+
+  If you set the variable @code{view-diary-entries-initially} to
address@hidden, calling up the calendar automatically displays the diary
+entries for the current date as well.  The diary dates appear only if
+the current date is visible.  If you add both of the following lines to
+your init file:@refill
+
address@hidden
+(setq view-diary-entries-initially t)
+(calendar)
address@hidden example
+
address@hidden
+this displays both the calendar and diary windows whenever you start
+Emacs.  @xref{Init File}.
+
address@hidden view-calendar-holidays-initially
+  Similarly, if you set the variable
address@hidden to @code{t}, entering the
+calendar automatically displays a list of holidays for the current
+three-month period.  The holiday list appears in a separate
+window.
+ 
address@hidden mark-diary-entries-in-calendar
+  You can set the variable @code{mark-diary-entries-in-calendar} to
address@hidden in order to mark any dates with diary entries.  This takes
+effect whenever the calendar window contents are recomputed.  There are
+two ways of marking these dates: by changing the face (@pxref{Faces}),
+if the display supports that, or by placing a plus sign (@samp{+})
+beside the date otherwise.
+
address@hidden mark-holidays-in-calendar
+  Similarly, setting the variable @code{mark-holidays-in-calendar} to
address@hidden marks holiday dates, either with a change of face or with an
+asterisk (@samp{*}).
+
address@hidden calendar-holiday-marker
address@hidden diary-entry-marker
+  The variable @code{calendar-holiday-marker} specifies how to mark a
+date as being a holiday.  Its value may be a character to insert next to
+the date, or a face name to use for displaying the date.  Likewise, the
+variable @code{diary-entry-marker} specifies how to mark a date that has
+diary entries.  The calendar creates faces named @code{holiday-face} and
address@hidden for these purposes; those symbols are the default
+values of these variables, when Emacs supports multiple faces on your
+terminal.
+
address@hidden calendar-load-hook
+  The variable @code{calendar-load-hook} is a normal hook run when the
+calendar package is first loaded (before actually starting to display
+the calendar).
+
address@hidden initial-calendar-window-hook
+  Starting the calendar runs the normal hook
address@hidden  Recomputation of the calendar
+display does not run this hook.  But if you leave the calendar with the
address@hidden command and reenter it, the hook runs address@hidden
+
address@hidden today-visible-calendar-hook
+  The variable @code{today-visible-calendar-hook} is a normal hook run
+after the calendar buffer has been prepared with the calendar when the
+current date is visible in the window.  One use of this hook is to
+replace today's date with asterisks; to do that, use the hook function
address@hidden
+
address@hidden calendar-star-date
address@hidden
+(add-hook 'today-visible-calendar-hook 'calendar-star-date)
address@hidden example
+
address@hidden
+Another standard hook function marks the current date, either by
+changing its face or by adding an asterisk.  Here's how to use it:
+
address@hidden calendar-mark-today
address@hidden
+(add-hook 'today-visible-calendar-hook 'calendar-mark-today)
address@hidden example
+
address@hidden
address@hidden calendar-today-marker
+The variable @code{calendar-today-marker} specifies how to mark today's
+date.  Its value should be a character to insert next to the date or a
+face name to use for displaying the date.  A face named
address@hidden is provided for this purpose; that symbol is
+the default for this variable when Emacs supports multiple faces on your
+terminal.
+
address@hidden today-invisible-calendar-hook
address@hidden
+  A similar normal hook, @code{today-invisible-calendar-hook} is run if
+the current date is @emph{not} visible in the window.
+
address@hidden Holiday Customizing
address@hidden Customizing the Holidays
+
address@hidden calendar-holidays
address@hidden christian-holidays
address@hidden hebrew-holidays
address@hidden islamic-holidays
+  Emacs knows about holidays defined by entries on one of several lists.
+You can customize these lists of holidays to your own needs, adding or
+deleting holidays.  The lists of holidays that Emacs uses are for
+general holidays (@code{general-holidays}), local holidays
+(@code{local-holidays}), Christian holidays (@code{christian-holidays}),
+Hebrew (Jewish) holidays (@code{hebrew-holidays}), Islamic (Moslem)
+holidays (@code{islamic-holidays}), and other holidays
+(@code{other-holidays}).
+
address@hidden general-holidays
+  The general holidays are, by default, holidays common throughout the
+United States.  To eliminate these holidays, set @code{general-holidays}
+to @code{nil}.
+
address@hidden local-holidays
+  There are no default local holidays (but sites may supply some).  You
+can set the variable @code{local-holidays} to any list of holidays, as
+described below.
+
address@hidden all-christian-calendar-holidays
address@hidden all-hebrew-calendar-holidays
address@hidden all-islamic-calendar-holidays
+  By default, Emacs does not include all the holidays of the religions
+that it knows, only those commonly found in secular calendars.  For a
+more extensive collection of religious holidays, you can set any (or
+all) of the variables @code{all-christian-calendar-holidays},
address@hidden, or
address@hidden to @code{t}.  If you want to
+eliminate the religious holidays, set any or all of the corresponding
+variables @code{christian-holidays}, @code{hebrew-holidays}, and
address@hidden to @address@hidden
+
address@hidden other-holidays
+  You can set the variable @code{other-holidays} to any list of
+holidays.  This list, normally empty, is intended for individual use.
+
address@hidden holiday forms
+  Each of the lists (@code{general-holidays}, @code{local-holidays},
address@hidden, @code{hebrew-holidays},
address@hidden, and @code{other-holidays}) is a list of
address@hidden forms}, each holiday form describing a holiday (or
+sometimes a list of holidays).
+
+  Here is a table of the possible kinds of holiday form.  Day numbers
+and month numbers count starting from 1, but ``dayname'' numbers
+count Sunday as 0.  The element @var{string} is always the
+name of the holiday, as a string.
+
address@hidden @code
address@hidden (holiday-fixed @var{month} @var{day} @var{string})
+A fixed date on the Gregorian calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-float @var{month} @var{dayname} @var{k} @var{string})
+The @var{k}th @var{dayname} in @var{month} on the Gregorian calendar
+(@var{dayname}=0 for Sunday, and so on); negative @var{k} means count back
+from the end of the month.  @var{string} is the name of the holiday.
+
address@hidden (holiday-hebrew @var{month} @var{day} @var{string})
+A fixed date on the Hebrew calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-islamic @var{month} @var{day} @var{string})
+A fixed date on the Islamic calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-julian @var{month} @var{day} @var{string})
+A fixed date on the Julian calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-sexp @var{sexp} @var{string})
+A date calculated by the Lisp expression @var{sexp}.  The expression
+should use the variable @code{year} to compute and return the date of a
+holiday, or @code{nil} if the holiday doesn't happen this year.  The
+value of @var{sexp} must represent the date as a list of the form
address@hidden(@var{month} @var{day} @var{year})}.  @var{string} is the name of
+the holiday.
+
address@hidden (if @var{condition} @var{holiday-form} &optional 
@var{holiday-form})
+A holiday that happens only if @var{condition} is true.
+
address@hidden (@var{function} @address@hidden@r{]})
+A list of dates calculated by the function @var{function}, called with
+arguments @var{args}.
address@hidden table
+
+  For example, suppose you want to add Bastille Day, celebrated in
+France on July 14.  You can do this by adding the following line
+to your init file:
+
address@hidden
+(setq other-holidays '((holiday-fixed 7 14 "Bastille Day")))
address@hidden smallexample
+
address@hidden File}.
+
address@hidden
+The holiday form @code{(holiday-fixed 7 14 "Bastille Day")} specifies the
+fourteenth day of the seventh month (July).
+
+  Many holidays occur on a specific day of the week, at a specific time
+of month.  Here is a holiday form describing Hurricane Supplication Day,
+celebrated in the Virgin Islands on the fourth Monday in August:
+
address@hidden
+(holiday-float 8 1 4 "Hurricane Supplication Day")
address@hidden smallexample
+
address@hidden
+Here the 8 specifies August, the 1 specifies Monday (Sunday is 0,
+Tuesday is 2, and so on), and the 4 specifies the fourth occurrence in
+the month (1 specifies the first occurrence, 2 the second occurrence,
address@hidden the last occurrence, @minus{}2 the second-to-last occurrence, and
+so on).
+
+  You can specify holidays that occur on fixed days of the Hebrew,
+Islamic, and Julian calendars too.  For example,
+
address@hidden
+(setq other-holidays
+      '((holiday-hebrew 10 2 "Last day of Hanukkah")
+        (holiday-islamic 3 12 "Mohammed's Birthday")
+        (holiday-julian 4 2 "Jefferson's Birthday")))
address@hidden smallexample
+
address@hidden
+adds the last day of Hanukkah (since the Hebrew months are numbered with
+1 starting from Nisan), the Islamic feast celebrating Mohammed's
+birthday (since the Islamic months are numbered from 1 starting with
+Muharram), and Thomas Jefferson's birthday, which is 2 April 1743 on the
+Julian calendar.
+
+  To include a holiday conditionally, use either Emacs Lisp's @code{if} or the
address@hidden form.  For example, American presidential elections
+occur on the first Tuesday after the first Monday in November of years
+divisible by 4:
+
address@hidden
+(holiday-sexp (if (= 0 (% year 4))
+                   (calendar-gregorian-from-absolute
+                 (1+ (calendar-dayname-on-or-before
+                       1 (+ 6 (calendar-absolute-from-gregorian
+                                (list 11 1 year))))))
+              "US Presidential Election"))
address@hidden smallexample
+
address@hidden
+or
+
address@hidden
+(if (= 0 (% displayed-year 4))
+    (fixed 11
+           (extract-calendar-day
+             (calendar-gregorian-from-absolute
+               (1+ (calendar-dayname-on-or-before
+                     1 (+ 6 (calendar-absolute-from-gregorian
+                              (list 11 1 displayed-year)))))))
+           "US Presidential Election"))
address@hidden smallexample
+
+  Some holidays just don't fit into any of these forms because special
+calculations are involved in their determination.  In such cases you
+must write a Lisp function to do the calculation.  To include eclipses,
+for example, add @code{(eclipses)} to @code{other-holidays}
+and write an Emacs Lisp function @code{eclipses} that returns a
+(possibly empty) list of the relevant Gregorian dates among the range
+visible in the calendar window, with descriptive strings, like this:
+
address@hidden
+(((6 27 1991) "Lunar Eclipse") ((7 11 1991) "Solar Eclipse") ... )
address@hidden smallexample
+
address@hidden Date Display Format
address@hidden Date Display Format
address@hidden calendar-date-display-form
+
+  You can customize the manner of displaying dates in the diary, in mode
+lines, and in messages by setting @code{calendar-date-display-form}.
+This variable holds a list of expressions that can involve the variables
address@hidden, @code{day}, and @code{year}, which are all numbers in
+string form, and @code{monthname} and @code{dayname}, which are both
+alphabetic strings.  In the American style, the default value of this
+list is as follows:
+
address@hidden
+((if dayname (concat dayname ", ")) monthname " " day ", " year)
address@hidden smallexample
+
address@hidden
+while in the European style this value is the default:
+
address@hidden
+((if dayname (concat dayname ", ")) day " " monthname " " year)
address@hidden smallexample
+
address@hidden
+The ISO standard date representation is this:
+
address@hidden
+(year "-" month "-" day)
address@hidden smallexample
+
address@hidden
+This specifies a typical American format:
+
address@hidden
+(month "/" day "/" (substring year -2))
address@hidden smallexample
+
address@hidden Time Display Format
address@hidden Time Display Format
address@hidden calendar-time-display-form
+
+  The calendar and diary by default display times of day in the
+conventional American style with the hours from 1 through 12, minutes,
+and either @samp{am} or @samp{pm}.  If you prefer the European style,
+also known in the US as military, in which the hours go from 00 to 23,
+you can alter the variable @code{calendar-time-display-form}.  This
+variable is a list of expressions that can involve the variables
address@hidden, @code{24-hours}, and @code{minutes}, which are all
+numbers in string form, and @code{am-pm} and @code{time-zone}, which are
+both alphabetic strings.  The default value of
address@hidden is as follows:
+
address@hidden
+(12-hours ":" minutes am-pm
+          (if time-zone " (") time-zone (if time-zone ")"))
address@hidden smallexample
+
address@hidden
+Here is a value that provides European style times:
+
address@hidden
+(24-hours ":" minutes
+          (if time-zone " (") time-zone (if time-zone ")"))
address@hidden smallexample
+
address@hidden
+gives military-style times like @samp{21:07 (UT)} if time zone names are
+defined, and times like @samp{21:07} if they are not.
+
address@hidden Daylight Savings
address@hidden Daylight Savings Time
address@hidden daylight savings time
+
+  Emacs understands the difference between standard time and daylight
+savings time---the times given for sunrise, sunset, solstices,
+equinoxes, and the phases of the moon take that into account.  The rules
+for daylight savings time vary from place to place and have also varied
+historically from year to year.  To do the job properly, Emacs needs to
+know which rules to use.
+
+  Some operating systems keep track of the rules that apply to the place
+where you are; on these systems, Emacs gets the information it needs
+from the system automatically.  If some or all of this information is
+missing, Emacs fills in the gaps with the rules currently used in
+Cambridge, Massachusetts.  If the resulting rules are not what you want,
+you can tell Emacs the rules to use by setting certain variables.
+
address@hidden calendar-daylight-savings-starts
address@hidden calendar-daylight-savings-ends
+  If the default choice of rules is not appropriate for your location,
+you can tell Emacs the rules to use by setting the variables
address@hidden and
address@hidden  Their values should be Lisp
+expressions that refer to the variable @code{year}, and evaluate to the
+Gregorian date on which daylight savings time starts or (respectively)
+ends, in the form of a list @code{(@var{month} @var{day} @var{year})}.
+The values should be @code{nil} if your area does not use daylight
+savings time.
+
+  Emacs uses these expressions to determine the starting date of
+daylight savings time for the holiday list  and for correcting times of
+day in the solar and lunar calculations.
+ 
+  The values for Cambridge, Massachusetts are as follows:
+
address@hidden
address@hidden
+(calendar-nth-named-day 1 0 4 year)
+(calendar-nth-named-day -1 0 10 year)
address@hidden group
address@hidden example
+
address@hidden
+That is, the first 0th day (Sunday) of the fourth month (April) in
+the year specified by @code{year}, and the last Sunday of the tenth month
+(October) of that year.  If daylight savings time were
+changed to start on October 1, you would set
address@hidden to this:
+
address@hidden
+(list 10 1 year)
address@hidden example
+
+  For a more complex example, suppose daylight savings time begins on
+the first of Nisan on the Hebrew calendar.  You should set
address@hidden to this value:
+
address@hidden
+(calendar-gregorian-from-absolute
+  (calendar-absolute-from-hebrew
+    (list 1 1 (+ year 3760))))
address@hidden example
+
address@hidden
+because Nisan is the first month in the Hebrew calendar and the Hebrew
+year differs from the Gregorian year by 3760 at Nisan.
+
+  If there is no daylight savings time at your location, or if you want
+all times in standard time, set @code{calendar-daylight-savings-starts}
+and @code{calendar-daylight-savings-ends} to @code{nil}.
+
address@hidden calendar-daylight-time-offset
+  The variable @code{calendar-daylight-time-offset} specifies the
+difference between daylight savings time and standard time, measured in
+minutes.  The value for Cambridge, Massachusetts is 60.
+
address@hidden @vindex calendar-daylight-savings-starts-time  too long!
address@hidden calendar-daylight-savings-ends-time
+  The two variables @code{calendar-daylight-savings-starts-time} and
address@hidden specify the number of minutes
+after midnight local time when the transition to and from daylight
+savings time should occur.  For Cambridge, Massachusetts both variables'
+values are 120.
+ 
address@hidden Diary Customizing
address@hidden Customizing the Diary
+
address@hidden holidays-in-diary-buffer
+  Ordinarily, the mode line of the diary buffer window indicates any
+holidays that fall on the date of the diary entries.  The process of
+checking for holidays can take several seconds, so including holiday
+information delays the display of the diary buffer noticeably.  If you'd
+prefer to have a faster display of the diary buffer but without the
+holiday information, set the variable @code{holidays-in-diary-buffer} to
address@hidden@refill
+
address@hidden number-of-diary-entries
+  The variable @code{number-of-diary-entries} controls the number of
+days of diary entries to be displayed at one time.  It affects the
+initial display when @code{view-diary-entries-initially} is @code{t}, as
+well as the command @kbd{M-x diary}.  For example, the default value is
+1, which says to display only the current day's diary entries.  If the
+value is 2, both the current day's and the next day's entries are
+displayed.  The value can also be a vector of seven elements: for
+example, if the value is @code{[0 2 2 2 2 4 1]} then no diary entries
+appear on Sunday, the current date's and the next day's diary entries
+appear Monday through Thursday, Friday through Monday's entries appear
+on Friday, while on Saturday only that day's entries appear.
+
address@hidden print-diary-entries-hook
address@hidden print-diary-entries
+  The variable @code{print-diary-entries-hook} is a normal hook run
+after preparation of a temporary buffer containing just the diary
+entries currently visible in the diary buffer.  (The other, irrelevant
+diary entries are really absent from the temporary buffer; in the diary
+buffer, they are merely hidden.)  The default value of this hook does
+the printing with the command @code{lpr-buffer}.  If you want to use a
+different command to do the printing, just change the value of this
+hook.  Other uses might include, for example, rearranging the lines into
+order by day and time.
+
address@hidden diary-date-forms
+  You can customize the form of dates in your diary file, if neither the
+standard American nor European styles suits your needs, by setting the
+variable @code{diary-date-forms}.  This variable is a list of patterns
+for recognizing a date.  Each date pattern is a list whose elements may
+be regular expressions (@pxref{Regexps}) or the symbols
address@hidden, @code{day}, @code{year}, @code{monthname}, and
address@hidden  All these elements serve as patterns that match certain
+kinds of text in the diary file.  In order for the date pattern, as a
+whole, to match, all of its elements must match consecutively.
+
+  A regular expression in a date pattern matches in its usual fashion,
+using the standard syntax table altered so that @samp{*} is a word
+constituent.
+
+  The symbols @code{month}, @code{day}, @code{year}, @code{monthname},
+and @code{dayname} match the month number, day number, year number,
+month name, and day name of the date being considered.  The symbols that
+match numbers allow leading zeros; those that match names allow
+three-letter abbreviations and capitalization.  All the symbols can
+match @samp{*}; since @samp{*} in a diary entry means ``any day'', ``any
+month'', and so on, it should match regardless of the date being
+considered.
+
+  The default value of @code{diary-date-forms} in the American style is
+this:
+
address@hidden
+((month "/" day "[^/0-9]")
+ (month "/" day "/" year "[^0-9]")
+ (monthname " *" day "[^,0-9]")
+ (monthname " *" day ", *" year "[^0-9]")
+ (dayname "\\W"))
address@hidden example
+
address@hidden
+Emacs matches of the diary entries with the date forms is done with the
+standard syntax table from Fundamental mode
+(@pxref{Syntax Tables,,,lispref,XEmacs Lisp Reference Manual}),
+but with the @samp{*} changed so that it is a word address@hidden
+
+  The date patterns in the list must be @emph{mutually exclusive} and
+must not match any portion of the diary entry itself, just the date and
+one character of whitespace.  If, to be mutually exclusive, the pattern
+must match a portion of the diary entry text---beyond the whitespace
+that ends the date---then the first element of the date pattern
address@hidden be @code{backup}.  This causes the date recognizer to back
+up to the beginning of the current word of the diary entry, after
+finishing the match.  Even if you use @code{backup}, the date pattern
+must absolutely not match more than a portion of the first word of the
+diary entry.  The default value of @code{diary-date-forms} in the
+European style is this list:
+
address@hidden
+((day "/" month "[^/0-9]")
+ (day "/" month "/" year "[^0-9]")
+ (backup day " *" monthname "\\W+\\<[^*0-9]")
+ (day " *" monthname " *" year "[^0-9]")
+ (dayname "\\W"))
address@hidden example
+
address@hidden
+Notice the use of @code{backup} in the third pattern, because it needs
+to match part of a word beyond the date itself to distinguish it from
+the fourth pattern.
+ 
address@hidden Hebrew/Islamic Entries
address@hidden Hebrew- and Islamic-Date Diary Entries
+
+  Your diary file can have entries based on Hebrew or Islamic dates, as
+well as entries based on the world-standard Gregorian calendar.
+However, because recognition of such entries is time-consuming and most
+people don't use them, you must explicitly enable their use.  If you
+want the diary to recognize Hebrew-date diary entries, for example, 
+you must do this:
+ 
address@hidden nongregorian-diary-listing-hook
address@hidden nongregorian-diary-marking-hook
address@hidden list-hebrew-diary-entries
address@hidden mark-hebrew-diary-entries
address@hidden
+(add-hook 'nongregorian-diary-listing-hook 'list-hebrew-diary-entries)
+(add-hook 'nongregorian-diary-marking-hook 'mark-hebrew-diary-entries)
address@hidden smallexample
+
address@hidden
+If you want Islamic-date entries, do this:
+
address@hidden list-islamic-diary-entries
address@hidden mark-islamic-diary-entries
address@hidden
+(add-hook 'nongregorian-diary-listing-hook 'list-islamic-diary-entries)
+(add-hook 'nongregorian-diary-marking-hook 'mark-islamic-diary-entries)
address@hidden smallexample
+
+  Hebrew- and Islamic-date diary entries have the same formats as
+Gregorian-date diary entries, except that @samp{H} precedes a Hebrew
+date and @samp{I} precedes an Islamic date.  Moreover, because the
+Hebrew and Islamic month names are not uniquely specified by the first
+three letters, you may not abbreviate them.  For example, a diary entry
+for the Hebrew date Heshvan 25 could look like this:
+
address@hidden
+HHeshvan 25 Happy Hebrew birthday!
address@hidden smallexample
+
address@hidden
+and would appear in the diary for any date that corresponds to Heshvan 25
+on the Hebrew calendar.  And here is  Islamic-date diary entry  that matches
+Dhu al-Qada 25:
+
address@hidden
+IDhu al-Qada 25 Happy Islamic birthday!
address@hidden smallexample
+
address@hidden
+and would appear in the diary for any date that corresponds to Dhu al-Qada 25
+on the Islamic calendar.
+
+  As with Gregorian-date diary entries, Hebrew- and Islamic-date entries
+are nonmarking if they are preceded with an ampersand (@samp{&}).
+
+  Here is a table of commands used in the calendar to create diary entries
+that match the selected date and other dates that are similar in the Hebrew
+or Islamic calendar:
+ 
address@hidden @kbd
address@hidden i h d
+Add a diary entry for the Hebrew date corresponding to the selected date
+(@code{insert-hebrew-diary-entry}).
address@hidden i h m
+Add a diary entry for the day of the Hebrew month corresponding to the
+selected date (@code{insert-monthly-hebrew-diary-entry}).  This diary
+entry matches any date that has the same Hebrew day-within-month as the
+selected date.
address@hidden i h y
+Add a diary entry for the day of the Hebrew year corresponding to the
+selected date (@code{insert-yearly-hebrew-diary-entry}).  This diary 
+entry matches any date which has the same Hebrew month and day-within-month
+as the selected date.
address@hidden i i d
+Add a diary entry for the Islamic date corresponding to the selected date
+(@code{insert-islamic-diary-entry}).
address@hidden i i m
+Add a diary entry for the day of the Islamic month corresponding to the
+selected date (@code{insert-monthly-islamic-diary-entry}).
address@hidden i i y
+Add a diary entry for the day of the Islamic year corresponding to the
+selected date (@code{insert-yearly-islamic-diary-entry}).
address@hidden table
+
address@hidden insert-hebrew-diary-entry
address@hidden insert-monthly-hebrew-diary-entry
address@hidden insert-yearly-hebrew-diary-entry
address@hidden insert-islamic-diary-entry
address@hidden insert-monthly-islamic-diary-entry
address@hidden insert-yearly-islamic-diary-entry
+  These commands work much like the corresponding commands for ordinary
+diary entries: they apply to the date that point is on in the calendar
+window, and what they do is insert just the date portion of a diary entry
+at the end of your diary file.  You must then insert the rest of the 
+diary entry.
+ 
address@hidden Fancy Diary Display
address@hidden Fancy Diary Display
address@hidden diary-display-hook
address@hidden simple-diary-display
+
+  Diary display works by preparing the diary buffer and then running the
+hook @code{diary-display-hook}.  The default value of this hook
+(@code{simple-diary-display}) hides the irrelevant diary entries and
+then displays the buffer.  However, if you specify the hook as follows,
+ 
address@hidden diary buffer
address@hidden fancy-diary-display
address@hidden
+(add-hook 'diary-display-hook 'fancy-diary-display)
address@hidden example
+
address@hidden
+this enables fancy diary display.  It displays diary entries and
+holidays by copying them into a special buffer that exists only for the
+sake of display.  Copying to a separate buffer provides an opportunity
+to change the displayed text to make it prettier---for example, to sort
+the entries by the dates they apply to.
+
+  As with simple diary display, you can print a hard copy of the buffer
+with @code{print-diary-entries}.  To print a hard copy of a day-by-day
+diary for a week by positioning point on Sunday of that week, type
address@hidden d} and then do @kbd{M-x print-diary-entries}.  As usual, the
+inclusion of the holidays slows down the display slightly; you can speed
+things up by setting the variable @code{holidays-in-diary-buffer} to
address@hidden
+
address@hidden diary-list-include-blanks
+  Ordinarily, the fancy diary buffer does not show days for which there are
+no diary entries, even if that day is a holiday.  If you want such days to be
+shown in the fancy diary buffer, set the variable
address@hidden to @address@hidden
+
address@hidden sorting diary entries
+  If you use the fancy diary display, you can use the normal hook
address@hidden to sort each day's diary entries by their
+time of day.  Add this line to your init file:
+
address@hidden sort-diary-entries
address@hidden
+(add-hook 'list-diary-entries-hook 'sort-diary-entries t)
address@hidden example
+
address@hidden File}.
+
address@hidden
+For each day, this sorts diary entries that begin with a recognizable
+time of day according to their times.  Diary entries without times come
+first within each day.
+
address@hidden Included Diary Files
address@hidden Included Diary Files
+
+  Fancy diary display also has the ability to process included diary
+files.  This permits a group of people to share a diary file for events
+that apply to all of them.  Lines in the diary file of this form:
+ 
address@hidden
+#include "@var{filename}"
address@hidden smallexample
+
address@hidden
+includes the diary entries from the file @var{filename} in the fancy
+diary buffer.  The include mechanism is recursive, so that included files
+can include other files, and so on; you must be careful not to have a
+cycle of inclusions, of course.  Here is how to enable the include
+facility:
+
address@hidden list-diary-entries-hook
address@hidden mark-diary-entries-hook
address@hidden include-other-diary-files
address@hidden mark-included-diary-files
address@hidden
+(add-hook 'list-diary-entries-hook 'include-other-diary-files)
+(add-hook 'mark-diary-entries-hook 'mark-included-diary-files)
address@hidden smallexample
+
+The include mechanism works only with the fancy diary display, because
+ordinary diary display shows the entries directly from your diary file.
+
address@hidden Sexp Diary Entries
address@hidden Sexp Entries and the Fancy Diary Display
address@hidden sexp diary entries
+
+  Sexp diary entries allow you to do more than just have complicated
+conditions under which a diary entry applies.  If you use the fancy
+diary display, sexp entries can generate the text of the entry depending
+on the date itself.  For example, an anniversary diary entry can insert
+the number of years since the anniversary date into the text of the
+diary entry.  Thus the @samp{%d} in this dairy entry:
+
address@hidden diary-anniversary
address@hidden
+%%(diary-anniversary 10 31 1948) Arthur's birthday (%d years old)
address@hidden smallexample
+
address@hidden
+gets replaced by the age, so on October 31, 1990 the entry appears in
+the fancy diary buffer like this:
+
address@hidden
+Arthur's birthday (42 years old)
address@hidden smallexample
+
address@hidden
+If the diary file instead contains this entry:
+
address@hidden
+%%(diary-anniversary 10 31 1948) Arthur's %d%s birthday
address@hidden smallexample
+
address@hidden
+the entry in the fancy diary buffer for October 31, 1990 appears like this:
+
address@hidden
+Arthur's 42nd birthday
address@hidden smallexample
+
+  Similarly, cyclic diary entries can interpolate the number of repetitions
+that have occurred:
+
address@hidden diary-cyclic
address@hidden
+%%(diary-cyclic 50 1 1 1990) Renew medication (%d%s time)
address@hidden smallexample
+
address@hidden
+looks like this:
+
address@hidden
+Renew medication (5th time)
address@hidden smallexample
+
address@hidden
+in the fancy diary display on September 8, 1990.
+
+  The generality of sexp diary entries lets you specify any diary entry
+that you can describe algorithmically.  A sexp diary entry contains an
+expression that computes whether the entry applies to any given date.
+If its value is address@hidden, the entry applies to that date;
+otherwise, it does not.  The expression can use the variable  @code{date}
+to find the date being considered; its value is a list (@var{month}
address@hidden @var{year}) that refers to the Gregorian calendar.
+
+  Suppose you get paid on the 21st of the month if it is a weekday, and
+on the Friday before if the 21st is on a weekend.  Here is how to write
+a sexp diary entry that matches those dates:
+
address@hidden
+&%%(let ((dayname (calendar-day-of-week date))
+         (day (car (cdr date))))
+      (or (and (= day 21) (memq dayname '(1 2 3 4 5)))
+          (and (memq day '(19 20)) (= dayname 5)))
+         ) Pay check deposited
address@hidden smallexample
+
address@hidden
+applies to just those dates.  This example illustrates how the sexp can
+depend on the variable @code{date}; this variable is a list (@var{month}
address@hidden @var{year}) that gives the Gregorian date for which the diary
+entries are being found.  If the value of the expression is @code{t},
+the entry applies to that date.  If the expression evaluates to
address@hidden, the entry does @emph{not} apply to that date.
+
+  The following sexp diary entries take advantage of the ability (in the fancy
+diary display) to concoct diary entries whose text varies based on the date:
+
address@hidden diary-sunrise-sunset
address@hidden diary-phases-of-moon
address@hidden diary-day-of-year
address@hidden diary-iso-date
address@hidden diary-julian-date
address@hidden diary-astro-day-number
address@hidden diary-hebrew-date
address@hidden diary-islamic-date
address@hidden diary-french-date
address@hidden diary-mayan-date
address@hidden @code
address@hidden %%(diary-sunrise-sunset)
+Make a diary entry for the local times of today's sunrise and sunset.
address@hidden %%(diary-phases-of-moon)
+Make a diary entry for the phases (quarters) of the moon.
address@hidden %%(diary-day-of-year)
+Make a diary entry with today's day number in the current year and the number
+of days remaining in the current year.
address@hidden %%(diary-iso-date)
+Make a diary entry with today's equivalent ISO commercial date.
address@hidden %%(diary-julian-date)
+Make a diary entry with today's equivalent date on the Julian calendar.
address@hidden %%(diary-astro-day-number)
+Make a diary entry with today's equivalent astronomical (Julian) day number.
address@hidden %%(diary-hebrew-date)
+Make a diary entry with today's equivalent date on the Hebrew calendar.
address@hidden %%(diary-islamic-date)
+Make a diary entry with today's equivalent date on the Islamic calendar.
address@hidden %%(diary-french-date)
+Make a diary entry with today's equivalent date on the French Revolutionary
+calendar.
address@hidden %%(diary-mayan-date)
+Make a diary entry with today's equivalent date on the Mayan calendar.
address@hidden table
+
address@hidden
+Thus including the diary entry
+
address@hidden
+&%%(diary-hebrew-date)
address@hidden smallexample
+
address@hidden
+causes every day's diary display to contain the equivalent date on the
+Hebrew calendar, if you are using the fancy diary display.  (With simple
+diary display, the line @samp{&%%(diary-hebrew-date)} appears in the
+diary for any date, but does nothing particularly useful.)
+
+  These functions can be used to construct sexp diary entries based on
+the Hebrew calendar in certain standard ways:
+ 
address@hidden rosh hodesh
address@hidden diary-rosh-hodesh
address@hidden parasha, weekly
address@hidden diary-parasha
address@hidden candle lighting times
address@hidden diary-sabbath-candles
address@hidden omer count
address@hidden diary-omer
address@hidden yahrzeits
address@hidden diary-yahrzeit
address@hidden @code
address@hidden %%(diary-rosh-hodesh)
+Make a diary entry that tells the occurrence and ritual announcement of each
+new Hebrew month.
address@hidden %%(diary-parasha)
+Make a Saturday diary entry that tells the weekly synagogue scripture reading.
address@hidden %%(diary-sabbath-candles)
+Make a Friday diary entry that tells the @emph{local time} of Sabbath
+candle lighting.
address@hidden %%(diary-omer)
+Make a diary entry that gives the omer count, when appropriate.
address@hidden %%(diary-yahrzeit @var{month} @var{day} @var{year}) @var{name}
+Make a diary entry marking the anniversary of a date of death.  The date
+is the @emph{Gregorian} (civil) date of death.  The diary entry appears
+on the proper Hebrew calendar anniversary and on the day before.  (In
+the European style, the order of the parameters is changed to @var{day},
address@hidden, @var{year}.)
address@hidden table
+
address@hidden Appt Customizing
address@hidden Customizing Appointment Reminders
+
+  You can specify exactly how Emacs reminds you of an appointment, and
+how far in advance it begins doing so, by setting these variables:
+
address@hidden appt-message-warning-time
address@hidden appt-audible
address@hidden appt-visible
address@hidden appt-display-mode-line
address@hidden appt-msg-window
address@hidden appt-display-duration
address@hidden @code
address@hidden appt-message-warning-time
+The time in minutes before an appointment that the reminder begins.  The
+default is 10 minutes.
address@hidden appt-audible
+If this is @code{t} (the default), Emacs rings the terminal bell for
+appointment reminders.
address@hidden appt-visible
+If this is @code{t} (the default), Emacs displays the appointment
+message in echo area.
address@hidden appt-display-mode-line
+If this is @code{t} (the default), Emacs displays the number of minutes
+to the appointment on the mode line.
address@hidden appt-msg-window
+If this is @code{t} (the default), Emacs displays the appointment
+message in another window.
address@hidden appt-display-duration
+The number of seconds an appointment message is displayed.  The default
+is 5 seconds.
address@hidden table
+
+
address@hidden Sorting, Shell, Calendar/Diary, Top
address@hidden Sorting Text
address@hidden sorting
+
+  XEmacs provides several commands for sorting text in a buffer.  All
+operate on the contents of the region (the text between point and the
+mark).  They divide the text of the region into many @dfn{sort records},
+identify a @dfn{sort key} for each record, and then reorder the records
+using the order determined by the sort keys.  The records are ordered so
+that their keys are in alphabetical order, or, for numerical sorting, in
+numerical order.  In alphabetical sorting, all upper-case letters `A'
+through `Z' come before lower-case `a', in accordance with the ASCII
+character sequence.
+
+  The sort commands differ in how they divide the text into sort
+records and in which part of each record they use as the sort key.  Most of
+the commands make each line a separate sort record, but some commands use
+paragraphs or pages as sort records.  Most of the sort commands use each
+entire sort record as its own sort key, but some use only a portion of the
+record as the sort key.
+
address@hidden sort-lines
address@hidden sort-paragraphs
address@hidden sort-pages
address@hidden sort-fields
address@hidden sort-numeric-fields
address@hidden @kbd
address@hidden M-x sort-lines
+Divide the region into lines and sort by comparing the entire
+text of a line.  A prefix argument means sort in descending order.
+
address@hidden M-x sort-paragraphs
+Divide the region into paragraphs and sort by comparing the entire
+text of a paragraph (except for leading blank lines).  A prefix
+argument means sort in descending order.
+
address@hidden M-x sort-pages
+Divide the region into pages and sort by comparing the entire
+text of a page (except for leading blank lines).  A prefix
+argument means sort in descending order.
+
address@hidden M-x sort-fields
+Divide the region into lines and sort by comparing the contents of
+one field in each line.  Fields are defined as separated by
+whitespace, so the first run of consecutive non-whitespace characters
+in a line constitutes field 1, the second such run constitutes field
+2, etc.
+
+You specify which field to sort by with a numeric argument: 1 to sort
+by field 1, etc.  A negative argument means sort in descending
+order.  Thus, minus 2 means sort by field 2 in reverse-alphabetical
+order.
+
address@hidden M-x sort-numeric-fields
+Like @kbd{M-x sort-fields}, except the specified field is converted
+to a number for each line and the numbers are compared.  @samp{10}
+comes before @samp{2} when considered as text, but after it when
+considered as a number.
+
address@hidden M-x sort-columns
+Like @kbd{M-x sort-fields}, except that the text within each line
+used for comparison comes from a fixed range of columns.  An explanation
+is given below.
address@hidden table
+
+For example, if the buffer contains:
+
address@hidden
+On systems where clash detection (locking of files being edited) is
+implemented, XEmacs also checks the first time you modify a buffer
+whether the file has changed on disk since it was last visited or
+saved.  If it has, you are asked to confirm that you want to change
+the buffer.
address@hidden smallexample
+
address@hidden
+then if you apply @kbd{M-x sort-lines} to the entire buffer you get:
+
address@hidden
+On systems where clash detection (locking of files being edited) is
+implemented, XEmacs also checks the first time you modify a buffer
+saved.  If it has, you are asked to confirm that you want to change
+the buffer.
+whether the file has changed on disk since it was last visited or
address@hidden smallexample
+
address@hidden
+where the upper case `O' comes before all lower case letters.  If you apply
+instead @kbd{C-u 2 M-x sort-fields} you get:
+
address@hidden
+saved.  If it has, you are asked to confirm that you want to change
+implemented, XEmacs also checks the first time you modify a buffer
+the buffer.
+On systems where clash detection (locking of files being edited) is
+whether the file has changed on disk since it was last visited or
address@hidden smallexample
+
address@hidden
+where the sort keys were @samp{If}, @samp{XEmacs}, @samp{buffer},
address@hidden, and @address@hidden
+
address@hidden sort-columns
+  @kbd{M-x sort-columns} requires more explanation.  You specify the
+columns by putting point at one of the columns and the mark at the other
+column.  Because this means you cannot put point or the mark at the
+beginning of the first line to sort, this command uses an unusual
+definition of `region': all of the line point is in is considered part of
+the region, and so is all of the line the mark is in.
+
+  For example, to sort a table by information found in columns 10 to 15,
+you could put the mark on column 10 in the first line of the table, and
+point on column 15 in the last line of the table, and then use this command.
+Or you could put the mark on column 15 in the first line and point on
+column 10 in the last line.
+
+  This can be thought of as sorting the rectangle specified by point and
+the mark, except that the text on each line to the left or right of the
+rectangle moves along with the text inside the rectangle.
address@hidden
+
address@hidden Shell, Narrowing, Sorting, Top
address@hidden Running Shell Commands from XEmacs
address@hidden subshell
address@hidden shell commands
+
+  XEmacs has commands for passing single command lines to inferior shell
+processes; it can also run a shell interactively with input and output to
+an XEmacs buffer @samp{*shell*}.
+
address@hidden @kbd
address@hidden M-!
+Run a specified shell command line and display the output
+(@code{shell-command}).
address@hidden M-|
+Run a specified shell command line with region contents as input;
+optionally replace the region with the output
+(@code{shell-command-on-region}).
address@hidden M-x shell
+Run a subshell with input and output through an XEmacs buffer.
+You can then give commands interactively.
address@hidden M-x term
+Run a subshell with input and output through an XEmacs buffer.
+You can then give commands interactively.
+Full terminal emulation is available.
address@hidden table
+
address@hidden
+* Single Shell::         How to run one shell command and return.
+* Interactive Shell::    Permanent shell taking input via XEmacs.
+* Shell Mode::           Special XEmacs commands used with permanent shell.
+* Terminal emulator::    An XEmacs window as a terminal emulator.
+* Term Mode::            Special XEmacs commands used in Term mode.
+* Paging in Term::       Paging in the terminal emulator.
address@hidden menu
+
address@hidden Single Shell, Interactive Shell, Shell, Shell
address@hidden Single Shell Commands
+
address@hidden M-!
address@hidden shell-command
+  @kbd{M-!} (@code{shell-command}) reads a line of text using the
+minibuffer and creates an inferior shell to execute the line as a command.
+Standard input from the command comes from the null device.  If the shell
+command produces any output, the output goes to an XEmacs buffer named
address@hidden Command Output*}, which is displayed in another window but not
+selected.  A numeric argument, as in @kbd{M-1 M-!}, directs this command to
+insert any output into the current buffer.  In that case, point is left
+before the output and the mark is set after the output.
+
address@hidden M-|
address@hidden shell-command-on-region
+  @kbd{M-|} (@code{shell-command-on-region}) is like @kbd{M-!} but passes
+the contents of the region as input to the shell command, instead of no
+input.  If a numeric argument is used to direct  output to the current
+buffer, then the old region is deleted first and the output replaces it as
+the contents of the address@hidden
+
address@hidden shell-file-name
address@hidden environment
+  Both @kbd{M-!} and @kbd{M-|} use @code{shell-file-name} to specify the
+shell to use.  This variable is initialized based on your @code{SHELL}
+environment variable when you start XEmacs.  If the file name does not
+specify a directory, the directories in the list @code{exec-path} are
+searched; this list is initialized based on the @code{PATH} environment
+variable when you start XEmacs.  You can override either or both of these
+default initializations in your init file. @xref{Init address@hidden
+
+  When you use @kbd{M-!} and @kbd{M-|}, XEmacs has to wait until the
+shell command completes.  You can quit with @kbd{C-g}; that terminates
+the shell command.
+
address@hidden Interactive Shell, Shell Mode, Single Shell, Shell
address@hidden Interactive Inferior Shell
+
address@hidden shell
+  To run a subshell interactively with its typescript in an XEmacs
+buffer, use @kbd{M-x shell}.  This creates (or reuses) a buffer named
address@hidden and runs a subshell with input coming from and output going
+to that buffer.  That is to say, any ``terminal output'' from the subshell
+will go into the buffer, advancing point, and any ``terminal input'' for
+the subshell comes from text in the buffer.  To give input to the subshell,
+go to the end of the buffer and type the input, terminated by @key{RET}.
+
+  XEmacs does not wait for the subshell to do anything.  You can switch
+windows or buffers and edit them while the shell is waiting, or while it is
+running a command.  Output from the subshell waits until XEmacs has time to
+process it; this happens whenever XEmacs is waiting for keyboard input or
+for time to elapse.
+
+ To get multiple subshells, change the name of buffer
address@hidden to something different by using @kbd{M-x rename-buffer}.  The
+next use of @kbd{M-x shell} creates a new buffer @samp{*shell*} with
+its own subshell.  By renaming this buffer as well you can create a third
+one, and so on.  All the subshells run independently and in parallel.
+
address@hidden explicit-shell-file-name
+  The file name used to load the subshell is the value of the variable
address@hidden, if that is address@hidden  Otherwise, the
+environment variable @code{ESHELL} is used, or the environment variable
address@hidden if there is no @code{ESHELL}.  If the file name specified
+is relative, the directories in the list @code{exec-path} are searched
+(@pxref{Single Shell,Single Shell Commands})address@hidden
+
+  As soon as the subshell is started, it is sent as input the contents of
+the file @file{~/address@hidden, if that file exists, where
address@hidden is the name of the file that the shell was loaded from.
+For example, if you use @code{csh}, the file sent to it is
address@hidden/address@hidden
+
address@hidden shell-pushd-regexp
address@hidden shell-popd-regexp
address@hidden shell-cd-regexp
+  @code{cd}, @code{pushd}, and @code{popd} commands given to the inferior
+shell are watched by XEmacs so it can keep the @samp{*shell*} buffer's
+default directory the same as the shell's working directory.  These
+commands are recognized syntactically by examining lines of input that are
+sent.  If you use aliases for these commands, you can tell XEmacs to
+recognize them also.  For example, if the value of the variable
address@hidden matches the beginning of a shell command line,
+that line is regarded as a @code{pushd} command.  Change this variable when
+you add aliases for @samp{pushd}.  Likewise, @code{shell-popd-regexp} and
address@hidden are used to recognize commands with the meaning of
address@hidden and @address@hidden
+
address@hidden shell-resync-dirs} queries the shell and resynchronizes XEmacs'
+idea of what the current directory stack is.  @kbd{M-x
+shell-dirtrack-toggle} turns directory tracking on and off.
+
address@hidden input-ring-size
+XEmacs keeps a history of the most recent commands you have typed in the
address@hidden buffer.  If you are at the beginning of a shell command
+line and type @key{M-p}, the previous shell input is inserted into the
+buffer before point.  Immediately typing @key{M-p} again deletes that
+input and inserts the one before it.  By repeating @key{M-p} you can
+move backward through your commands until you find one you want to
+repeat.  You may then edit the command before typing @key{RET} if you
+wish. @key{M-n} moves forward through the command history, in case you
+moved backward past the one you wanted while using @key{M-p}.  If you
+type the first few characters of a previous command and then type
address@hidden, the most recent shell input starting with those characters is
+inserted.  This can be very convenient when you are repeating a sequence
+of shell commands.  The variable @code{input-ring-size} controls how
+many commands are saved in your input history.  The default is 30.
+
+
address@hidden Shell Mode, Terminal emulator, Interactive Shell, Shell
address@hidden Shell Mode
+
address@hidden Shell mode
+  The shell buffer uses Shell mode, which defines several special keys
+attached to the @kbd{C-c} prefix.  They are chosen to resemble the usual
+editing and job control characters present in shells that are not under
+XEmacs, except that you must type @kbd{C-c} first.  Here is a list
+of the special key bindings of Shell mode:
+
address@hidden RET (Shell mode)
address@hidden C-c C-d (Shell mode)
address@hidden C-d (Shell mode)
address@hidden C-c C-u (Shell mode)
address@hidden C-c C-w (Shell mode)
address@hidden C-c C-c (Shell mode)
address@hidden C-c C-z (Shell mode)
address@hidden C-c C-\ (Shell mode)
address@hidden C-c C-o (Shell mode)
address@hidden C-c C-r (Shell mode)
address@hidden C-c C-y (Shell mode)
address@hidden M-p (Shell mode)
address@hidden M-n (Shell mode)
address@hidden TAB (Shell mode)
address@hidden send-shell-input
address@hidden shell-send-eof
address@hidden comint-delchar-or-maybe-eof
address@hidden interrupt-shell-subjob
address@hidden stop-shell-subjob
address@hidden quit-shell-subjob
address@hidden kill-output-from-shell
address@hidden show-output-from-shell
address@hidden copy-last-shell-input
address@hidden comint-previous-input
address@hidden comint-next-input
address@hidden comint-dynamic-complete
address@hidden shell-prompt-pattern
address@hidden @kbd
address@hidden @key{RET}
+At end of buffer send line as input; otherwise, copy current line to end of
+buffer and send it (@code{send-shell-input}).  When a line is copied, any
+text at the beginning of the line that matches the variable
address@hidden is left out; this variable's value should be a
+regexp string that matches the prompts that you use in your subshell.
address@hidden C-c C-d
+Send end-of-file as input, probably causing the shell or its current
+subjob to finish (@code{shell-send-eof}).
address@hidden C-d
+If point is not at the end of the buffer, delete the next character just
+like most other modes.  If point is at the end of the buffer, send
+end-of-file as input, instead of generating an error as in other modes
+(@code{comint-delchar-or-maybe-eof}).
address@hidden C-c C-u
+Kill all text that has yet to be sent as input (@code{kill-shell-input}).
address@hidden C-c C-w
+Kill a word before point (@code{backward-kill-word}).
address@hidden C-c C-c
+Interrupt the shell or its current subjob if any
+(@code{interrupt-shell-subjob}).
address@hidden C-c C-z
+Stop the shell or its current subjob if any (@code{stop-shell-subjob}).
address@hidden C-c C-\
+Send quit signal to the shell or its current subjob if any
+(@code{quit-shell-subjob}).
address@hidden C-c C-o
+Delete last batch of output from shell (@code{kill-output-from-shell}).
address@hidden C-c C-r
+Scroll top of last batch of output to top of window
+(@code{show-output-from-shell}).
address@hidden C-c C-y
+Copy the previous bunch of shell input and insert it into the
+buffer before point (@code{copy-last-shell-input}).  No final newline
+is inserted, and the input copied is not resubmitted until you type
address@hidden
address@hidden M-p
+Move backward through the input history.  Search for a matching command
+if you have typed the beginning of a command (@code{comint-previous-input}).
address@hidden M-n
+Move forward through the input history.  Useful when you are
+using @key{M-p} quickly and go past the desired command 
+(@code{comint-next-input}).
address@hidden @key{TAB}
+Complete the file name preceding point (@code{comint-dynamic-complete}).
address@hidden table
+
address@hidden Terminal emulator, Term Mode, Shell Mode, Shell
address@hidden Interactive Inferior Shell with Terminal Emulator
address@hidden term
+
+  To run a subshell in a terminal emulator, putting its typescript in an XEmacs
+buffer, use @kbd{M-x term}.  This creates (or reuses) a buffer named
address@hidden and runs a subshell with input coming from your keyboard and
+output going to that buffer.
+
+All the normal keys that you type are sent without any interpretation
+by XEmacs directly to the subshell, as ``terminal input.''
+Any ``echo'' of your input is the responsibility of the subshell.
+(The exception is the terminal escape character,
+which by default is @kbd{C-c}. @pxref{Term Mode}.)
+Any ``terminal output'' from the subshell goes into the buffer,
+advancing point.
+
+  Some programs (such as XEmacs itself) need to control the
+appearance on the terminal screen in detail.  They do this by
+sending special control codes.  The exact control
+codes needed vary from terminal to terminal, but nowadays
+most terminals and terminal emulators (including xterm)
+understand the so-called "ANSI escape sequences" (first
+popularized by the Digital's VT100 family of terminal).
+The term mode also understands these escape sequences,
+and for each control code does the appropriate thing
+to change the buffer so that the appearance of the window
+will match what it would be on a real terminal.
+Thus you can actually run XEmacs inside an XEmacs Term window!
+
+   XEmacs does not wait for the subshell to do anything.  You can switch
+windows or buffers and edit them while the shell is waiting, or while
+it is running a command.  Output from the subshell waits until XEmacs
+has time to process it; this happens whenever XEmacs is waiting for
+keyboard input or for time to elapse.
+
+   To make multiple terminal emulators, rename the buffer @samp{*term*}
+to something different using @kbd{M-x rename-uniquely},
+just as with Shell mode.
+
+   The file name used to load the subshell is determined
+the same way as for Shell mode.
+
+Unlike Shell mode, Term mode does not track the current directory
+by examining your input.  Instead, if you use a programmable
+shell, you can have it tell Term what the current directory is.
+This is done automatically by bash for version 1.15 and later.
+
address@hidden Term Mode, Paging in Term, Terminal emulator, Shell
address@hidden Term Mode
address@hidden Term mode
address@hidden mode, Term
+
+  Term uses Term mode, which has two input modes:
+In line mode, Term basically acts like Shell mode.  @xref{Shell Mode}.
+In Char mode, each character is sent directly to the inferior subshell,
+except for the Term escape character, normally @kbd{C-c}.
+
+To switch between line and char mode, use these commands:
address@hidden @kbd
address@hidden C-c C-j @r{(Term mode)}
+findex term-char-mode
address@hidden C-c C-j
+Switch to line mode.  Do nothing if already in line mode.
+
address@hidden C-c C-k @r{(Term mode)}
address@hidden term-line-mode
address@hidden C-c C-k
+Switch to char mode.  Do nothing if already in char mode.
address@hidden table
+
+The following commands are only available in Char mode:
address@hidden @kbd
address@hidden C-c C-c
+Send a literal @key{C-c} to the sub-shell.
+
address@hidden C-c C-x
+A prefix command to conveniently access the global @key{C-x} commands.
+For example, @kbd{C-c C-x o} invokes the global binding of
address@hidden o}, which is normally @samp{other-window}.
address@hidden table
+
address@hidden Paging in Term,, Term Mode, Shell
address@hidden Paging in the terminal emulator
+
+Term mode has a pager feature.  When the pager is enabled,
+term mode will pause at the end of each screenful.
+
address@hidden @kbd
address@hidden C-c C-q @r{(Term mode)}
address@hidden term-pager-toggle
address@hidden C-c C-q
+Toggles the pager feature:  Disables the pager if it is enabled,
+and vice versa.  This works in both line and char modes.
+If the pager enabled, the mode-line contains the word @samp{page}.
address@hidden table
+
+If the pager is enabled, and Term receives more than a screenful
+of output since your last input, Term will enter More break mode.
+This is indicated by @samp{**MORE**} in the mode-line.
+Type a @kbd{Space} to display the next screenful of output.
+Type @kbd{?} to see your other options.  The interface is similar
+to the Unix @samp{more} program.
+
address@hidden Narrowing, Hardcopy, Shell, Top
address@hidden Narrowing
address@hidden widening
address@hidden restriction
address@hidden narrowing
+
+  @dfn{Narrowing} means focusing in on some portion of the buffer, making
+the rest temporarily invisible and inaccessible.  Cancelling the narrowing
+and making the entire buffer once again visible is called @dfn{widening}.
+The amount of narrowing in effect in a buffer at any time is called the
+buffer's @dfn{restriction}.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x n n
+Narrow down to between point and mark (@code{narrow-to-region}).
address@hidden C-x n w
+Widen to make the entire buffer visible again (@code{widen}).
address@hidden table
+
+  Narrowing sometimes makes it easier to concentrate on a single
+subroutine or paragraph by eliminating clutter.  It can also be used to
+restrict the range of operation of a replace command or repeating
+keyboard macro.  The word @samp{Narrow} appears in the mode line
+whenever narrowing is in effect.  When you have narrowed to a part of the
+buffer, that part appears to be all there is.  You can't see the rest,
+can't move into it (motion commands won't go outside the visible part),
+and can't change it in any way.  However, the invisible text is not
+gone; if you save the file, it will be saved.
+
address@hidden C-x n n
address@hidden narrow-to-region
+  The primary narrowing command is @kbd{C-x n n} (@code{narrow-to-region}).
+It sets the current buffer's restrictions so that the text in the current
+region remains visible but all text before the region or after the region
+is invisible.  Point and mark do not change.
+
+  Because narrowing can easily confuse users who do not understand it,
address@hidden is normally a disabled command.  Attempting to use
+this command asks for confirmation and gives you the option of enabling it;
+once you enable the command, confirmation will no longer be required.  
@xref{Disabling}.
+
address@hidden C-x n w
address@hidden widen
+   To undo narrowing, use @kbd{C-x n w} (@code{widen}).  This makes all
+text in the buffer accessible again.
+
+   Use the @kbd{C-x =} command to get information on what part of the
+buffer you narrowed down.  @xref{Position Info}.
+
address@hidden Hardcopy, Recursive Edit, Narrowing, Top
address@hidden Hardcopy Output
address@hidden hardcopy
+
+  The XEmacs commands for making hardcopy derive their names from the
+Unix commands @samp{print} and @samp{lpr}.
+
address@hidden @kbd
address@hidden M-x print-buffer
+Print hardcopy of current buffer using Unix command @samp{print}
address@hidden(@samp{lpr -p}).  This command adds page headings containing the 
file name
+and page number.
address@hidden M-x lpr-buffer
+Print hardcopy of current buffer using Unix command @samp{lpr}.
+This command does not add page headings.
address@hidden M-x print-region
+Like @code{print-buffer}, but prints only the current region.
address@hidden M-x lpr-region
+Like @code{lpr-buffer}, but prints only the current region.
address@hidden table
+
address@hidden print-buffer
address@hidden print-region
address@hidden lpr-buffer
address@hidden lpr-region
address@hidden lpr-switches
+  All the hardcopy commands pass extra switches to the @code{lpr} program
+based on the value of the variable @code{lpr-switches}.  Its value should
+be a list of strings, each string a switch starting with @samp{-}.  For
+example, the value could be @code{("-Pfoo")} to print on printer
address@hidden
+
address@hidden Recursive Edit, Dissociated Press, Hardcopy, Top
address@hidden Recursive Editing Levels
address@hidden recursive editing level
address@hidden editing level, recursive
+
+  A @dfn{recursive edit} is a situation in which you are using XEmacs
+commands to perform arbitrary editing while in the middle of another
+XEmacs command.  For example, when you type @kbd{C-r} inside a
address@hidden, you enter a recursive edit in which you can change
+the current buffer.  When you exit from the recursive edit, you go back to
+the @code{query-replace}.
+
address@hidden C-M-c
address@hidden exit-recursive-edit
address@hidden exiting
+  @dfn{Exiting} a recursive edit means returning to the unfinished
+command, which continues execution.  For example, exiting the recursive
+edit requested by @kbd{C-r} in @code{query-replace} causes query replacing
+to resume.  Exiting is done with @kbd{C-M-c} (@code{exit-recursive-edit}).
+
address@hidden C-]
address@hidden abort-recursive-edit
+  You can also @dfn{abort} a recursive edit.  This is like exiting, but
+also quits the unfinished command immediately.  Use the command @kbd{C-]}
+(@code{abort-recursive-edit}) for this.  @xref{Quitting}.
+
+  The mode line shows you when you are in a recursive edit by displaying
+square brackets around the parentheses that always surround the major
+and minor mode names.  Every window's mode line shows the square
+brackets, since XEmacs as a whole, rather than any particular buffer, is
+in a recursive edit.
+
address@hidden top-level
+  It is possible to be in recursive edits within recursive edits.  For
+example, after typing @kbd{C-r} in a @code{query-replace}, you might
+type a command that entered the debugger.  In such a case, two or
+more sets of square brackets appear in the mode line(s).  Exiting the
+inner recursive edit (here with the debugger @kbd{c} command)
+resumes the query-replace command where it called the debugger.  After
+the end of the query-replace command, you would be able to exit the
+first recursive edit.  Aborting exits only one level of recursive edit;
+it returns to the command level of the previous recursive edit.  You can
+then abort that one as well.
+
+  The command @kbd{M-x top-level} aborts all levels of
+recursive edits, returning immediately to the top level command reader.
+
+  The text you edit inside the recursive edit need not be the same text
+that you were editing at top level.  If the command that invokes the
+recursive edit selects a different buffer first, that is the buffer you
+will edit recursively.  You can switch buffers within the recursive edit
+in the normal manner (as long as the buffer-switching keys have not been
+rebound).  While you could theoretically do the rest of your editing
+inside the recursive edit, including visiting files, this could have
+surprising effects (such as stack overflow) from time to time.  It is
+best if you always exit or abort a recursive edit when you no longer
+need it.
+
+  In general, XEmacs tries to avoid using recursive edits.  It is
+usually preferable to allow users to switch among the possible editing
+modes in any order they like.  With recursive edits, the only way to get
+to another state is to go ``back'' to the state that the recursive edit
+was invoked from.
+
address@hidden Dissociated Press, CONX, Recursive Edit, Top
address@hidden Dissociated Press
+
address@hidden dissociated-press
+  @kbd{M-x dissociated-press} is a command for scrambling a file of text
+either word by word or character by character.  Starting from a buffer of
+straight English, it produces extremely amusing output.  The input comes
+from the current XEmacs buffer.  Dissociated Press writes its output in a
+buffer named @samp{*Dissociation*}, and redisplays that buffer after every
+couple of lines (approximately) to facilitate reading it.
+
+  @code{dissociated-press} asks every so often whether to continue
+operating.  Answer @kbd{n} to stop it.  You can also stop at any time by
+typing @kbd{C-g}.  The dissociation output remains in the @samp{*Dissociation*}
+buffer for you to copy elsewhere if you wish.
+
address@hidden presidentagon
+  Dissociated Press operates by jumping at random from one point in the
+buffer to another.  In order to produce plausible output rather than
+gibberish, it insists on a certain amount of overlap between the end of one
+run of consecutive words or characters and the start of the next.  That is,
+if it has just printed out `president' and then decides to jump to a
+different point in the file, it might spot the `ent' in `pentagon' and
+continue from there, producing `presidentagon'.  Long sample texts produce
+the best results.
+
address@hidden againformation
+  A positive argument to @kbd{M-x dissociated-press} tells it to operate
+character by character, and specifies the number of overlap characters.  A
+negative argument tells it to operate word by word and specifies the number
+of overlap words.  In this mode, whole words are treated as the elements to
+be permuted, rather than characters.  No argument is equivalent to an
+argument of two.  For your againformation, the output goes only into the
+buffer @samp{*Dissociation*}.  The buffer you start with is not changed.
+
address@hidden Markov chain
address@hidden ignoriginal
address@hidden techniquitous
+  Dissociated Press produces nearly the same results as a Markov chain
+based on a frequency table constructed from the sample text.  It is,
+however, an independent, ignoriginal invention.  Dissociated Press
+techniquitously copies several consecutive characters from the sample
+between random choices, whereas a Markov chain would choose randomly for
+each word or character.  This makes for more plausible sounding results
+and runs faster.
+
address@hidden outragedy
address@hidden buggestion
address@hidden properbose
+  It is a mustatement that too much use of Dissociated Press can be a
+developediment to your real work.  Sometimes to the point of outragedy.
+And keep dissociwords out of your documentation, if you want it to be well
+userenced and properbose.  Have fun.  Your buggestions are welcome.
+
address@hidden CONX, Amusements, Dissociated Press, Top
address@hidden CONX
address@hidden random sentences
+
+Besides producing a file of scrambled text with Dissociated Press, you 
+can generate random sentences by using CONX.
+
address@hidden @kbd
address@hidden M-x conx
+Generate random sentences in the @code{*conx*} buffer.
address@hidden M-x conx-buffer
+Absorb the text in the current buffer into the @code{conx} database.
address@hidden M-x conx-init
+Forget the current word-frequency tree.
address@hidden M-x conx-load
+Load a @code{conx} database that has been previously saved with 
address@hidden conx-save}.
address@hidden M-x conx-region
+Absorb the text in the current buffer into the @code{conx} database.
address@hidden M-x conx-save
+Save the current @code{conx} database to a file for future retrieval.
address@hidden table
+
address@hidden conx
address@hidden conx-buffer
address@hidden conx-load
address@hidden conx-region
address@hidden conx-init
address@hidden conx-save
+
+Copy text from a buffer using @kbd{M-x conx-buffer} or @kbd{M-x conx-region}
+and then type @kbd{M-x conx}.  Output is continuously generated until you
+type @key{^G}. You can save the @code{conx} database to a file with
address@hidden conx-save}, which you can retrieve with @code{M-x conx-load}. 
+To clear the database, use @code{M-x conx-init}.
+
address@hidden Amusements, Emulation, CONX, Top
address@hidden Other Amusements
address@hidden boredom
address@hidden hanoi
address@hidden yow
+
+  If you are a little bit bored, you can try @kbd{M-x hanoi}.  If you are
+considerably bored, give it a numeric argument.  If you are very, very
+bored, try an argument of 9.  Sit back and watch.
+
+  When you are frustrated, try the famous Eliza program.  Just do
address@hidden doctor}.  End each input by typing @kbd{RET} twice.
+
+  When you are feeling strange, type @kbd{M-x yow}.
+
address@hidden Emulation, Customization, Amusements, Top
address@hidden  node-name,  next,  previous,  up
address@hidden Emulation
address@hidden other editors
address@hidden vi
address@hidden EDT
+
+  XEmacs can be programmed to emulate (more or less) most other
+editors.  Standard facilities can emulate these:
+
address@hidden @asis
address@hidden Viper (a vi emulator)
address@hidden Viper
+In XEmacs, Viper is the preferred emulation of vi within XEmacs.
+Viper is designed to allow you to take advantage of the best
+features of XEmacs while still doing your basic editing in a
+familiar, vi-like fashion.  Viper provides various different
+levels of vi emulation, from a quite complete emulation that
+allows almost no access to native XEmacs commands, to an
+``expert'' mode that combines the most useful vi commands with
+the most useful XEmacs commands.
+
+To start Viper, put the command
+
address@hidden
+(viper-mode)
address@hidden example
+
+in your init file.  @xref{Init File}.
+
+Viper comes with a separate manual that is provided standard
+with the XEmacs distribution.
+
+
address@hidden EDT (DEC VMS editor)
address@hidden edt-emulation-on
address@hidden edt-emulation-off
+Turn on EDT emulation with @kbd{M-x edt-emulation-on}.  @kbd{M-x
address@hidden restores normal Emacs command bindings.
+
+Most of the EDT emulation commands are keypad keys, and most standard
+Emacs key bindings are still available.  The EDT emulation rebindings
+are done in the global keymap, so there is no problem switching
+buffers or major modes while in EDT emulation.
+
address@hidden Gosling Emacs
address@hidden set-gosmacs-bindings
address@hidden set-gnu-bindings
+Turn on emulation of Gosling Emacs (aka Unipress Emacs) with @kbd{M-x
+set-gosmacs-bindings}.  This redefines many keys, mostly on the
address@hidden and @kbd{ESC} prefixes, to work as they do in Gosmacs.
address@hidden set-gnu-bindings} returns to normal XEmacs by rebinding
+the same keys to the definitions they had at the time @kbd{M-x
+set-gosmacs-bindings} was done.
+
+It is also possible to run Mocklisp code written for Gosling Emacs.
address@hidden
address@hidden table
+
address@hidden Customization, Quitting, Emulation, Top
address@hidden Customization
address@hidden customization
+
+  This chapter talks about various topics relevant to adapting the
+behavior of Emacs in minor ways.
+
+  All kinds of customization affect only the particular Emacs job that you
+do them in.  They are completely lost when you kill the Emacs job, and
+have no effect on other Emacs jobs you may run at the same time or
+later.  The only way an Emacs job can affect anything outside of it is
+by writing a file; in particular, the only way to make a customization
+`permanent' is to put something in your init file or other appropriate
+file to do the customization in each session.  @xref{Init File}.
+
address@hidden
+* Minor Modes::     Each minor mode is one feature you can turn on
+                     independently of any others.
+* Variables::       Many Emacs commands examine Emacs variables
+                     to decide what to do; by setting variables,
+                     you can control their functioning.
+* Keyboard Macros:: A keyboard macro records a sequence of keystrokes
+                     to be replayed with a single command.
+* Key Bindings::    The keymaps say what command each key runs.
+                     By changing them, you can "redefine keys".
+* Syntax::          The syntax table controls how words and expressions
+                     are parsed.
+* Init File::       How to write common customizations in the init file.
+* Audible Bell::    Changing how Emacs sounds the bell.
+* Faces::           Changing the fonts and colors of a region of text.
+* Frame Components::  Controlling the presence and positions of the
+                     menubar, toolbars, and gutters.
+* X Resources::     X resources controlling various aspects of the
+                     behavior of XEmacs.
address@hidden menu
+
address@hidden Minor Modes
address@hidden Minor Modes
address@hidden minor modes
+
address@hidden mode line
+  Minor modes are options which you can use or not.  For example, Auto
+Fill mode is a minor mode in which @key{SPC} breaks lines between words
+as you type.  All the minor modes are independent of each other and of
+the selected major mode.  Most minor modes inform you in the mode line
+when they are on; for example, @samp{Fill} in the mode line means that
+Auto Fill mode is on.
+
+  Append @code{-mode} to the name of a minor mode to get the name of a
+command function that turns the mode on or off.  Thus, the command to
+enable or disable Auto Fill mode is called @kbd{M-x auto-fill-mode}.  These
+commands are usually invoked with @kbd{M-x}, but you can bind keys to them
+if you wish.  With no argument, the function turns the mode on if it was
+off and off if it was on.  This is known as @dfn{toggling}.  A positive
+argument always turns the mode on, and an explicit zero argument or a
+negative argument always turns it off.
+
address@hidden Auto Fill mode
address@hidden auto-fill-mode
+  Auto Fill mode allows you to enter filled text without breaking lines
+explicitly.  Emacs inserts newlines as necessary to prevent lines from
+becoming too long.  @xref{Filling}.
+
address@hidden Overwrite mode
address@hidden overwrite-mode
+  Overwrite mode causes ordinary printing characters to replace existing
+text instead of moving it to the right.  For example, if point is in
+front of the @samp{B} in @samp{FOOBAR}, and you type a @kbd{G} in Overwrite
+mode, it changes to @samp{FOOGAR}, instead of @address@hidden
+
address@hidden Abbrev mode
address@hidden abbrev-mode
+  Abbrev mode allows you to define abbreviations that automatically expand
+as you type them.  For example, @samp{amd} might expand to @samp{abbrev
+mode}.  @xref{Abbrevs}, for full information.
+
address@hidden Variables
address@hidden Variables
address@hidden variable
address@hidden option
+
+  A @dfn{variable} is a Lisp symbol which has a value.  Variable names
+can contain any characters, but by convention they are words separated
+by hyphens.  A variable can also have a documentation string, which
+describes what kind of value it should have and how the value will be
+used.
+
+  Lisp allows any variable to have any kind of value, but most variables
+that Emacs uses require a value of a certain type.  Often the value has
+to be a string or a number.  Sometimes we say that a certain feature is
+turned on if a variable is address@hidden,'' meaning that if the
+variable's value is @code{nil}, the feature is off, but the feature is
+on for @i{any} other value.  The conventional value to turn on the
+feature---since you have to pick one particular value when you set the
+variable---is @code{t}.
+
+  Emacs uses many Lisp variables for internal recordkeeping, as any Lisp
+program must, but the most interesting variables for you are the ones that
+exist for the sake of customization.  Emacs does not (usually) change the
+values of these variables; instead, you set the values, and thereby alter
+and control the behavior of certain Emacs commands.  These variables are
+called @dfn{options}.  Most options are documented in this manual and
+appear in the Variable Index (@pxref{Variable Index}).
+
+  One example of a variable which is an option is @code{fill-column}, which
+specifies the position of the right margin (as a number of characters from
+the left margin) to be used by the fill commands (@pxref{Filling}).
+
address@hidden
+* Examining::           Examining or setting one variable's value.
+* Easy Customization::  Convenient and easy customization of variables.
+* Edit Options::        Examining or editing list of all variables' values.
+* Locals::              Per-buffer values of variables.
+* File Variables::      How files can specify variable values.
address@hidden menu
+
address@hidden Examining
address@hidden Examining and Setting Variables
address@hidden setting variables
+
address@hidden @kbd
address@hidden C-h v
address@hidden M-x describe-variable
+Print the value and documentation of a variable.
address@hidden set-variable
address@hidden M-x set-variable
+Change the value of a variable.
address@hidden table
+
address@hidden C-h v
address@hidden describe-variable
+  To examine the value of a single variable, use @kbd{C-h v}
+(@code{describe-variable}), which reads a variable name using the
+minibuffer, with completion.  It prints both the value and the
+documentation of the variable.
+
address@hidden
+C-h v fill-column @key{RET}
address@hidden example
+
address@hidden
+prints something like:
+
address@hidden
+fill-column's value is 75
+
+Documentation:
+*Column beyond which automatic line-wrapping should happen.
+Automatically becomes local when set in any fashion.
address@hidden smallexample
+
address@hidden option
address@hidden
+The star at the beginning of the documentation indicates that this variable
+is an option.  @kbd{C-h v} is not restricted to options; it allows any
+variable name.
+
address@hidden set-variable
+  If you know which option you want to set, you can use @kbd{M-x
+set-variable} to set it.  This prompts for the variable name in the
+minibuffer (with completion), and then prompts for a Lisp expression for the
+new value using the minibuffer a second time.  For example,
+
address@hidden
+M-x set-variable @key{RET} fill-column @key{RET} 75 @key{RET}
address@hidden example
+
address@hidden
+sets @code{fill-column} to 75, as if you had executed the Lisp expression
address@hidden(setq fill-column 75)}.
+
+  Setting variables in this way, like all means of customizing Emacs
+except where explicitly stated, affects only the current Emacs session.
+
address@hidden Easy Customization
address@hidden Easy Customization Interface
+
address@hidden customize
address@hidden customization buffer
+  A convenient way to find the user option variables that you want to
+change, and then change them, is with @kbd{M-x customize} (or use a
+keyboard shortcut, @kbd{C-h C}.  This command
+creates a @dfn{customization buffer} with which you can browse through
+the Emacs user options in a logically organized structure, then edit and
+set their values.  You can also use the customization buffer to save
+settings permanently.  (Not all Emacs user options are included in this
+structure as of yet, but we are adding the rest.)
+
address@hidden
+* Groups: Customization Groups.
+                             How options are classified in a structure.
+* Changing an Option::       How to edit a value and set an option.
+* Face Customization::       How to edit the attributes of a face.
+* Specific Customization::   Making a customization buffer for specific
+                                options, faces, or groups.
address@hidden menu
+
address@hidden Customization Groups
address@hidden Customization Groups
address@hidden customization groups
+
+  For customization purposes, user options are organized into
address@hidden to help you find them.  Groups are collected into bigger
+groups, all the way up to a master group called @code{Emacs}.
+
+  @kbd{M-x customize} (or @kbd{C-h C}) creates a customization buffer that
+shows the top-level @code{Emacs} group and the second-level groups immediately
+under it.  It looks like this, in part:
+
address@hidden
+/- Emacs group: ---------------------------------------------------\
+      [State]: visible group members are all at standard settings.
+   Customization of the One True Editor.
+   See also [Manual].
+
+ [Open] Editing group
+Basic text editing facilities.
+
+ [Open] External group
+Interfacing to external utilities.
+
address@hidden second-level groups}
+
+\- Emacs group end ------------------------------------------------/
+
address@hidden smallexample
+
address@hidden
+This says that the buffer displays the contents of the @code{Emacs}
+group.  The other groups are listed because they are its contents.  But
+they are listed differently, without indentation and dashes, because
address@hidden contents are not included.  Each group has a single-line
+documentation string; the @code{Emacs} group also has a @samp{[State]}
+line.
+
address@hidden editable fields (customization buffer)
address@hidden active fields (customization buffer)
+  Most of the text in the customization buffer is read-only, but it
+typically includes some @dfn{editable fields} that you can edit.  There
+are also @dfn{active fields}; this means a field that does something
+when you @dfn{invoke} it.  To invoke an active field, either click on it
+with @kbd{Mouse-1}, or move point to it and type @key{RET}.
+
+  For example, the phrase @samp{[Open]} that appears in a second-level
+group is an active field.  Invoking the @samp{[Open]} field for a group
+opens up a new customization buffer, which shows that group and its
+contents.  This field is a kind of hypertext link to another group.
+
+  The @code{Emacs} group does not include any user options itself, but
+other groups do.  By examining various groups, you will eventually find
+the options and faces that belong to the feature you are interested in
+customizing.  Then you can use the customization buffer to set them.
+
address@hidden customize-browse
+  You can view the structure of customization groups on a larger scale
+with @kbd{M-x customize-browse}.  This command creates a special kind of
+customization buffer which shows only the names of the groups (and
+options and faces), and their structure.
+
+  In this buffer, you can show the contents of a group by invoking
address@hidden  When the group contents are visible, this button changes to
address@hidden; invoking that hides the group contents.
+
+  Each group, option or face name in this buffer has an active field
+which says @samp{[Group]}, @samp{[Option]} or @samp{[Face]}.  Invoking
+that active field creates an ordinary customization buffer showing just
+that group and its contents, just that option, or just that face.
+This is the way to set values in it.
+
address@hidden Changing an Option
address@hidden Changing an Option
+
+  Here is an example of what a user option looks like in the
+customization buffer:
+
address@hidden
+Kill Ring Max: [Hide] 30
+   [State]: this option is unchanged from its standard setting.
+Maximum length of kill ring before oldest elements are thrown away.
address@hidden smallexample
+
+  The text following @samp{[Hide]}, @samp{30} in this case, indicates
+the current value of the option.  If you see @samp{[Show]} instead of
address@hidden, it means that the value is hidden; the customization
+buffer initially hides values that take up several lines.  Invoke
address@hidden to show the value.
+
+  The line after the option name indicates the @dfn{customization state}
+of the option: in the example above, it says you have not changed the
+option yet.  The word @samp{[State]} at the beginning of this line is
+active; you can get a menu of various operations by invoking it with
address@hidden or @key{RET}.  These operations are essential for
+customizing the variable.
+
+  The line after the @samp{[State]} line displays the beginning of the
+option's documentation string.  If there are more lines of
+documentation, this line ends with @samp{[More]}; invoke this to show
+the full documentation string.
+
+  To enter a new value for @samp{Kill Ring Max}, move point to the value
+and edit it textually.  For example, you can type @kbd{M-d}, then insert
+another number.
+
+  When you begin to alter the text, you will see the @samp{[State]} line
+change to say that you have edited the value:
+
address@hidden
+[State]: you have edited the value as text, but not set the option.
address@hidden smallexample
+
address@hidden setting option value
+  Editing the value does not actually set the option variable.  To do
+that, you must @dfn{set} the option.  To do this, invoke the word
address@hidden and choose @samp{Set for Current Session}.
+
+  The state of the option changes visibly when you set it:
+
address@hidden
+[State]: you have set this option, but not saved it for future sessions.
address@hidden smallexample
+
+   You don't have to worry about specifying a value that is not valid;
+setting the option checks for validity and will not really install an
+unacceptable value.
+
address@hidden M-TAB @r{(customization buffer)}
address@hidden widget-complete
+  While editing a value or field that is a file name, directory name,
+command name, or anything else for which completion is defined, you can
+type @address@hidden (@code{widget-complete}) to do completion.
+
+  Some options have a small fixed set of possible legitimate values.
+These options don't let you edit the value textually.  Instead, an
+active field @samp{[Value Menu]} appears before the value; invoke this
+field to edit the value.  For a boolean ``on or off'' value, the active
+field says @samp{[Toggle]}, and it changes to the other value.
address@hidden Menu]} and @samp{[Toggle]} edit the buffer; the changes
+take effect when you use the @samp{Set for Current Session} operation.
+
+  Some options have values with complex structure.  For example, the
+value of @code{load-path} is a list of directories.  Here is how it
+appears in the customization buffer:
+
address@hidden
+Load Path:
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/site-lisp
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/site-lisp
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/leim
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/lisp
+[INS] [DEL] [Current dir?]: /build/emacs/e19/lisp
+[INS] [DEL] [Current dir?]: /build/emacs/e19/lisp/gnus
+[INS]
+   [State]: this item has been changed outside the customization buffer.
+List of directories to search for files to load....
address@hidden smallexample
+
address@hidden
+Each directory in the list appears on a separate line, and each line has
+several editable or active fields.
+
+  You can edit any of the directory names.  To delete a directory from
+the list, invoke @samp{[DEL]} on that line.  To insert a new directory in
+the list, invoke @samp{[INS]} at the point where you want to insert it.
+
+  You can also invoke @samp{[Current dir?]} to switch between including
+a specific named directory in the path, and including @code{nil} in the
+path.  (@code{nil} in a search path means ``try the current
+directory.'')
+
address@hidden TAB @r{(customization buffer)}
address@hidden S-TAB @r{(customization buffer)}
address@hidden widget-forward
address@hidden widget-backward
+  Two special commands, @key{TAB} and @address@hidden, are useful for
+moving through the customization buffer.  @key{TAB}
+(@code{widget-forward}) moves forward to the next active or editable
+field; @address@hidden (@code{widget-backward}) moves backward to the
+previous active or editable field.
+
+  Typing @key{RET} on an editable field also moves forward, just like
address@hidden  The reason for this is that people have a tendency to type
address@hidden when they are finished editing a field.  If you have occasion
+to insert a newline in an editable field, use @kbd{C-o} or @kbd{C-q
+C-j},
+
address@hidden saving option value
+  Setting the option changes its value in the current Emacs session;
address@hidden the value changes it for future sessions as well.  This
+works by writing code into your init file so as to set the option
+variable again each time you start Emacs.  @xref{Init File}.  To save
+the option, invoke @samp{[State]} and select the @samp{Save for Future
+Sessions} operation.
+
+  You can also restore the option to its standard value by invoking
address@hidden and selecting the @samp{Reset} operation.  There are
+actually three reset operations:
+
address@hidden @samp
address@hidden Reset to Current
+If you have made some modifications and not yet set the option,
+this restores the text in the customization buffer to match
+the actual value.
+
address@hidden Reset to Saved
+This restores the value of the option to the last saved value,
+and updates the text accordingly.
+
address@hidden Reset to Standard Settings
+This sets the option to its standard value, and updates the text
+accordingly.  This also eliminates any saved value for the option,
+so that you will get the standard value in future Emacs sessions.
address@hidden table
+
+  The state of a group indicates whether anything in that group has been
+edited, set or saved.  You can select @samp{Set for Current Session},
address@hidden for Future Sessions} and the various kinds of @samp{Reset}
+operation for the group; these operations on the group apply to all
+options in the group and its subgroups.
+
+  Near the top of the customization buffer there are two lines
+containing several active fields:
+
address@hidden
+ [Set] [Save] [Reset]  [Done]
address@hidden smallexample
+
address@hidden
+Invoking @samp{[Done]} buries this customization buffer.  Each of the
+other fields performs an operation---set, save or reset---on each of the
+items in the buffer that could meaningfully be set, saved or reset.
+
address@hidden Face Customization
address@hidden Customizing Faces
address@hidden customizing faces
address@hidden bold font
address@hidden italic font
address@hidden fonts and faces
+
+  In addition to user options, some customization groups also include
+faces.  When you show the contents of a group, both the user options and
+the faces in the group appear in the customization buffer.  Here is an
+example of how a face looks:
+
address@hidden
+Custom Changed Face: (sample)
+   [State]: this face is unchanged from its standard setting.
+Face used when the customize item has been changed.
+Parent groups: [Custom Magic Faces]
+Attributes: [ ] Bold: [Toggle]  off (nil)
+            [ ] Italic: [Toggle]  off (nil)
+            [ ] Underline: [Toggle]  off (nil)
+            [ ] Foreground: white       (sample)
+            [ ] Background: blue        (sample)
+            [ ] Inverse: [Toggle]  off (nil)
+            [ ] Stipple: 
+            [ ] Font Family: 
+            [ ] Size: 
+            [ ] Strikethru: off
address@hidden smallexample
+
+  Each face attribute has its own line.  The @address@hidden field
+before the attribute name indicates whether the attribute is
address@hidden; @samp{X} means that it is.  You can enable or disable the
+attribute by invoking that field.  When the attribute is enabled, you
+can change the attribute value in the usual ways.
+
address@hidden, for description of how @code{face-frob-from-locale-first}
+variable affects changing @samp{Bold} and @samp{Italic} attributes.
+
address@hidden Is this true for XEmacs?
address@hidden  On a black-and-white display, the colors you can use for the
address@hidden background are @samp{black}, @samp{white}, @samp{gray}, 
@samp{gray1},
address@hidden and @samp{gray3}.  Emacs supports these shades of gray by using
address@hidden background stipple patterns instead of a color.
address@hidden 
+  Setting, saving and resetting a face work like the same operations for
+options (@pxref{Changing an Option}).
+
+  A face can specify different appearances for different types of
+display.  For example, a face can make text red on a color display, but
+use a bold font on a monochrome display.  To specify multiple
+appearances for a face, select @samp{Show Display Types} in the menu you
+get from invoking @samp{[State]}.
+
address@hidden It would be cool to implement this
address@hidden @findex modify-face
address@hidden   Another more basic way to set the attributes of a specific 
face is
address@hidden with @kbd{M-x modify-face}.  This command reads the name of a 
face, then
address@hidden reads the attributes one by one.  For the color and stipple 
attributes,
address@hidden the attribute's current value is the default---type just 
@key{RET} if
address@hidden you don't want to change that attribute.  Type @samp{none} if 
you want
address@hidden to clear out the attribute.
+
address@hidden Specific Customization
address@hidden Customizing Specific Items
+
+  Instead of finding the options you want to change by moving down
+through the structure of groups, you can specify the particular option,
+face or group that you want to customize.
+
address@hidden @kbd
address@hidden M-x customize-option @key{RET} @var{option} @key{RET}
+Set up a customization buffer with just one option, @var{option}.
address@hidden M-x customize-face @key{RET} @var{face} @key{RET}
+Set up a customization buffer with just one face, @var{face}.
address@hidden M-x customize-group @key{RET} @var{group} @key{RET}
+Set up a customization buffer with just one group, @var{group}.
address@hidden M-x customize-apropos @key{RET} @var{regexp} @key{RET}
+Set up a customization buffer with all the options, faces and groups
+that match @var{regexp}.
address@hidden M-x customize-saved 
+Set up a customization buffer containing all options and faces that you
+have saved with customization buffers.
address@hidden M-x customize-customized
+Set up a customization buffer containing all options and faces that you
+have customized but not saved.
address@hidden table
+
address@hidden customize-option
+  If you want to alter a particular user option variable with the
+customization buffer, and you know its name, you can use the command
address@hidden customize-option} and specify the option name.  This sets up
+the customization buffer with just one option---the one that you asked
+for.  Editing, setting and saving the value work as described above, but
+only for the specified option.
+
address@hidden customize-face
+  Likewise, you can modify a specific face, chosen by name, using
address@hidden customize-face}.
+
address@hidden customize-group
+  You can also set up the customization buffer with a specific group,
+using @kbd{M-x customize-group}.  The immediate contents of the chosen
+group, including option variables, faces, and other groups, all appear
+as well.  However, these subgroups' own contents start out hidden.  You
+can show their contents in the usual way, by invoking @samp{[Show]}.
+
address@hidden customize-apropos
+  To control more precisely what to customize, you can use @kbd{M-x
+customize-apropos}.  You specify a regular expression as argument; then
+all options, faces and groups whose names match this regular expression
+are set up in the customization buffer.  If you specify an empty regular
+expression, this includes @emph{all} groups, options and faces in the
+customization buffer (but that takes a long time).
+
address@hidden customize-saved
address@hidden customize-customized
+  If you change option values and then decide the change was a mistake,
+you can use two special commands to revisit your previous changes.  Use
address@hidden to look at the options and faces that you have
+saved.  Use @kbd{M-x customize-customized} to look at the options and
+faces that you have set but not saved.
+
address@hidden Edit Options
address@hidden Editing Variable Values
+
address@hidden @kbd
address@hidden M-x list-options
+Display a buffer listing names, values, and documentation of all options.
address@hidden M-x edit-options
+Change option values by editing a list of options.
address@hidden table
+
address@hidden list-options
+  @kbd{M-x list-options} displays a list of all Emacs option variables in
+an Emacs buffer named @samp{*List Options*}.  Each option is shown with its
+documentation and its current value.  Here is what a portion of it might
+look like:
+
address@hidden
+;; exec-path:
+("." "/usr/local/bin" "/usr/ucb" "/bin" "/usr/bin" "/u2/emacs/etc")
+*List of directories to search programs to run in subprocesses.
+Each element is a string (directory name)
+or nil (try the default directory).
+;;
+;; fill-column:
+75
+*Column beyond which automatic line-wrapping should happen.
+Automatically becomes local when set in any fashion.
+;;
address@hidden smallexample
+
address@hidden edit-options
+  @kbd{M-x edit-options} goes one step further and immediately selects the
address@hidden Options*} buffer; this buffer uses the major mode Options mode,
+which provides commands that allow you to point at an option and change its
+value:
+
address@hidden @kbd
address@hidden s
+Set the variable point is in or near to a new value read using the
+minibuffer.
address@hidden x
+Toggle the variable point is in or near: if the value was @code{nil},
+it becomes @code{t}; otherwise it becomes @code{nil}.
address@hidden 1
+Set the variable point is in or near to @code{t}.
address@hidden 0
+Set the variable point is in or near to @code{nil}.
address@hidden n
address@hidden p
+Move to the next or previous variable.
address@hidden table
+
address@hidden Locals
address@hidden Local Variables
+
address@hidden @kbd
address@hidden M-x make-local-variable
+Make a variable have a local value in the current buffer.
address@hidden M-x kill-local-variable
+Make a variable use its global value in the current buffer.
address@hidden M-x make-variable-buffer-local
+Mark a variable so that setting it will make it local to the
+buffer that is current at that time.
address@hidden table
+
address@hidden local variables
+   You can make any variable @dfn{local} to a specific Emacs buffer.
+This means that the variable's value in that buffer is independent of
+its value in other buffers.  A few variables are always local in every
+buffer.  All other Emacs variables have a @dfn{global} value which is in
+effect in all buffers that have not made the variable local.
+
+  Major modes always make the variables they set local to the buffer.
+This is why changing major modes in one buffer has no effect on other
+buffers.
+
address@hidden make-local-variable
+  @kbd{M-x make-local-variable} reads the name of a variable and makes it
+local to the current buffer.  Further changes in this buffer will not
+affect others, and changes in the global value will not affect this
+buffer.
+
address@hidden make-variable-buffer-local
address@hidden per-buffer variables
+  @kbd{M-x make-variable-buffer-local} reads the name of a variable and
+changes the future behavior of the variable so that it automatically
+becomes local when it is set.  More precisely, once you have marked a
+variable in this way, the usual ways of setting the
+variable will automatically invoke @code{make-local-variable} first.  We
+call such variables @dfn{per-buffer} variables.
+
+  Some important variables have been marked per-buffer already.  They
+include @code{abbrev-mode}, @code{auto-fill-function},
address@hidden, @code{comment-column}, @code{ctl-arrow},
address@hidden, @code{fill-prefix}, @code{indent-tabs-mode},
address@hidden, @address@hidden, @code{overwrite-mode},
address@hidden, @address@hidden,
address@hidden, and @code{truncate-lines}.  Some other variables are
+always local in every buffer, but they are used for internal
address@hidden
+
+Note: the variable @code{auto-fill-function} was formerly named
address@hidden
+
address@hidden kill-local-variable
+  If you want a variable to cease to be local to the current buffer,
+call @kbd{M-x kill-local-variable} and provide the name of a variable to
+the prompt.  The global value of the variable
+is again in effect in this buffer.  Setting the major mode kills all
+the local variables of the buffer.
+
address@hidden setq-default
+  To set the global value of a variable, regardless of whether the
+variable has a local value in the current buffer, you can use the
+Lisp function @code{setq-default}.  It works like @code{setq}.
+If there is a local value in the current buffer, the local value is
+not affected by @code{setq-default}; thus, the new global value may
+not be visible until you switch to another buffer, as in the case of:
+
address@hidden
+(setq-default fill-column 75)
address@hidden example
+
address@hidden
address@hidden is the only way to set the global value of a variable
+that has been marked with @code{make-variable-buffer-local}.
+
address@hidden default-value
+  Programs can look at a variable's default value with @code{default-value}.
+This function takes a symbol as an argument and returns its default value.
+The argument is evaluated; usually you must quote it explicitly, as in
+the case of:
+
address@hidden
+(default-value 'fill-column)
address@hidden example
+
address@hidden File Variables
address@hidden Local Variables in Files
address@hidden local variables in files
+
+  A file can contain a @dfn{local variables list}, which specifies the
+values to use for certain Emacs variables when that file is edited.
+Visiting the file checks for a local variables list and makes each variable
+in the list local to the buffer in which the file is visited, with the
+value specified in the file.
+
+  A local variables list goes near the end of the file, in the last page.
+(It is often best to put it on a page by itself.)  The local variables list
+starts with a line containing the string @samp{Local Variables:}, and ends
+with a line containing the string @samp{End:}.  In between come the
+variable names and values, one set per line, as @address@hidden:@:
address@hidden  The @var{value}s are not evaluated; they are used literally.
+
+  The line which starts the local variables list does not have to say
+just @samp{Local Variables:}.  If there is other text before @samp{Local
+Variables:}, that text is called the @dfn{prefix}, and if there is other
+text after, that is called the @dfn{suffix}.  If a prefix or suffix are
+present, each entry in the local variables list should have the prefix
+before it and the suffix after it.  This includes the @samp{End:} line.
+The prefix and suffix are included to disguise the local variables list
+as a comment so the compiler or text formatter  will ignore it.
+If you do not need to disguise the local variables list as a comment in
+this way, there is no need to include a prefix or a address@hidden
+
+  Two ``variable'' names are special in a local variables list: a value
+for the variable @code{mode} sets the major mode, and a value for the
+variable @code{eval} is simply evaluated as an expression and the value
+is ignored.  These are not real variables; setting them in any other
+context does not have the same effect.  If @code{mode} is used in a
+local variables list, it should be the first entry in the list.
+
+Here is an example of a local variables list:
address@hidden
+;;; Local Variables: ***
+;;; mode:lisp ***
+;;; comment-column:0 ***
+;;; comment-start: ";;; "  ***
+;;; comment-end:"***" ***
+;;; End: ***
address@hidden example
+
+  Note that the prefix is @samp{;;; } and the suffix is @samp{ ***}.
+Note also that comments in the file begin with and end with the same
+strings.  Presumably the file contains code in a language which is
+enough like Lisp for Lisp mode to be useful but in which comments
+start and end differently.  The prefix and suffix are used in the local
+variables list to make the list look like several lines of comments when
+the compiler or interpreter for that language reads the file. 
+
+  The start of the local variables list must be no more than 3000
+characters from the end of the file, and must be in the last page if the
+file is divided into pages.  Otherwise, Emacs will not notice it is
+there.  The purpose is twofold: a stray @samp{Local Variables:}@: not in
+the last page does not confuse Emacs, and Emacs never needs to search a
+long file that contains no page markers and has no local variables list.
+
+  You may be tempted to turn on Auto Fill mode with a local variable
+list.  That is inappropriate.  Whether you use Auto Fill mode or not is
+a matter of personal taste, not a matter of the contents of particular
+files.  If you want to use Auto Fill, set up major mode hooks with your
+init file to turn it on (when appropriate) for you alone
+(@pxref{Init File}).  Don't try to use a local variable list that would
+impose your taste on everyone working with the file.
+
+XEmacs allows you to specify local variables in the first line
+of a file, in addition to specifying them in the @code{Local Variables}
+section at the end of a file.
+
+If the first line of a file contains two occurrences of @code{`-*-'},
+XEmacs uses the information between them to determine what the major
+mode and variable settings should be.  For example, these are all legal:
+
address@hidden
+        ;;; -*- mode: emacs-lisp -*-
+        ;;; -*- mode: postscript; version-control: never -*-
+        ;;; -*- tags-file-name: "/foo/bar/TAGS" -*-
address@hidden example
+
+For historical reasons, the syntax @code{`-*- modename -*-'} is allowed
+as well; for example, you can use:
+
address@hidden
+        ;;; -*- emacs-lisp -*-
address@hidden example
+
address@hidden enable-local-variables
+The variable @code{enable-local-variables} controls the use of local
+variables lists in files you visit.  The value can be @code{t},
address@hidden, or something else.  A value of @code{t} means local variables
+lists are obeyed; @code{nil} means they are ignored; anything else means
+query.
+
+The command @code{M-x normal-mode} always obeys local variables lists
+and ignores this variable.
+
address@hidden Keyboard Macros
address@hidden Keyboard Macros
+
address@hidden keyboard macros
+  A @dfn{keyboard macro} is a command defined by the user to abbreviate a
+sequence of keys.  For example, if you discover that you are about to type
address@hidden C-d} forty times, you can speed your work by defining a keyboard
+macro to invoke @kbd{C-n C-d} and calling it with a repeat count of forty.
+
address@hidden widecommands
address@hidden @kbd
address@hidden C-x (
+Start defining a keyboard macro (@code{start-kbd-macro}).
address@hidden C-x )
+End the definition of a keyboard macro (@code{end-kbd-macro}).
address@hidden C-x e
+Execute the most recent keyboard macro (@code{call-last-kbd-macro}).
address@hidden C-u C-x (
+Re-execute last keyboard macro, then add more keys to its definition.
address@hidden C-x q
+When this point is reached during macro execution, ask for confirmation
+(@code{kbd-macro-query}).
address@hidden M-x name-last-kbd-macro
+Give a command name (for the duration of the session) to the most
+recently defined keyboard macro.
address@hidden M-x insert-kbd-macro
+Insert in the buffer a keyboard macro's definition, as Lisp code.
address@hidden table
+
+  Keyboard macros differ from other Emacs commands in that they are
+written in the Emacs command language rather than in Lisp.  This makes it
+easier for the novice to write them and makes them more convenient as
+temporary hacks.  However, the Emacs command language is not powerful
+enough as a programming language to be useful for writing anything
+general or complex.  For such things, Lisp must be used.
+
+  You define a keyboard macro by executing the commands which are its
+definition.  Put differently, as you are defining a keyboard macro, the
+definition is being executed for the first time.  This way, you see
+what the effects of your commands are, and don't have to figure
+them out in your head.  When you are finished, the keyboard macro is
+defined and also has been executed once.  You can then execute the same
+set of commands again by invoking the macro.
+
address@hidden
+* Basic Kbd Macro::     Defining and running keyboard macros.
+* Save Kbd Macro::      Giving keyboard macros names; saving them in files.
+* Kbd Macro Query::     Keyboard macros that do different things each use.
address@hidden menu
+
address@hidden Basic Kbd Macro
address@hidden Basic Use
+
address@hidden C-x (
address@hidden C-x )
address@hidden C-x e
address@hidden start-kbd-macro
address@hidden end-kbd-macro
address@hidden call-last-kbd-macro
+  To start defining a keyboard macro, type @kbd{C-x (}
+(@code{start-kbd-macro}).  From then on, anything you type continues to be
+executed, but also becomes part of the definition of the macro.  @samp{Def}
+appears in the mode line to remind you of what is going on.  When you are
+finished, the @kbd{C-x )} command (@code{end-kbd-macro}) terminates the
+definition, without becoming part of it. 
+
+  For example,
+
address@hidden
+C-x ( M-f foo C-x )
address@hidden example
+
address@hidden
+defines a macro to move forward a word and then insert @samp{foo}.
+
+You can give @kbd{C-x )} a repeat count as an argument, in which case it
+repeats the macro that many times right after defining it, but defining
+the macro counts as the first repetition (since it is executed as you
+define it).  If you give @kbd{C-x )} an argument of 4, it executes the
+macro immediately 3 additional times.  An argument of zero to @kbd{C-x
+e} or @kbd{C-x )} means repeat the macro indefinitely (until it gets an
+error or you type @kbd{C-g}).
+
+  Once you have defined a macro, you can invoke it again with the
address@hidden e} command (@code{call-last-kbd-macro}).  You can give the
+command a repeat count numeric argument to execute the macro many times.
+
+  To repeat an operation at regularly spaced places in the
+text, define a macro and include as part of the macro the commands to move
+to the next place you want to use it.  For example, if you want to change
+each line, you should position point at the start of a line, and define a
+macro to change that line and leave point at the start of the next line.
+Repeating the macro will then operate on successive lines.
+
+  After you have terminated the definition of a keyboard macro, you can add
+to the end of its definition by typing @kbd{C-u C-x (}.  This is equivalent
+to plain @kbd{C-x (} followed by retyping the whole definition so far.  As
+a consequence it re-executes the macro as previously defined.
+
address@hidden Save Kbd Macro
address@hidden Naming and Saving Keyboard Macros
+
address@hidden name-last-kbd-macro
+  To save a keyboard macro for longer than until you define the
+next one, you must give it a name using @kbd{M-x name-last-kbd-macro}.
+This reads a name as an argument using the minibuffer and defines that name
+to execute the macro.  The macro name is a Lisp symbol, and defining it in
+this way makes it a valid command name for calling with @kbd{M-x} or for
+binding a key to with @code{global-set-key} (@pxref{Keymaps}).  If you
+specify a name that has a prior definition other than another keyboard
+macro, Emacs prints an error message and nothing is changed.
+
address@hidden insert-kbd-macro
+  Once a macro has a command name, you can save its definition in a file.
+You can then use it in another editing session.  First visit the file
+you want to save the definition in.  Then use the command:
+
address@hidden
+M-x insert-kbd-macro @key{RET} @var{macroname} @key{RET}
address@hidden example
+
address@hidden
+This inserts some Lisp code that, when executed later, will define the same
+macro with the same definition it has now.  You need not understand Lisp
+code to do this, because @code{insert-kbd-macro} writes the Lisp code for you.
+Then save the file.  You can load the file with @code{load-file}
+(@pxref{Lisp Libraries}).  If the file you save in is your initialization file
+(@pxref{Init File}), then the macro will be defined each
+time you run Emacs.
+
+  If you give @code{insert-kbd-macro} a prefix argument, it creates
+additional Lisp code to record the keys (if any) that you have bound to the
+keyboard macro, so that the macro is reassigned the same keys when you
+load the file.
+
address@hidden Kbd Macro Query
address@hidden Executing Macros With Variations
+
address@hidden C-x q
address@hidden kbd-macro-query
+  You can use @kbd{C-x q} (@code{kbd-macro-query}), to get an effect similar
+to that of @code{query-replace}.  The macro asks you  each time
+whether to make a change.  When you are defining the macro, type @kbd{C-x
+q} at the point where you want the query to occur.  During macro
+definition, the @kbd{C-x q} does nothing, but when you invoke the macro,
address@hidden q} reads a character from the terminal to decide whether to
+continue.
+
+  The special answers to a @kbd{C-x q} query are @key{SPC}, @key{DEL},
address@hidden, @kbd{C-l}, and @kbd{C-r}.  Any other character terminates
+execution of the keyboard macro and is then read as a command.
address@hidden means to continue.  @key{DEL} means to skip the remainder of
+this repetition of the macro, starting again from the beginning in the
+next repetition.  @kbd{C-d} means to skip the remainder of this
+repetition and cancel further repetition.  @kbd{C-l} redraws the frame
+and asks you again for a character to specify what to do.  @kbd{C-r} enters
+a recursive editing level, in which you can perform editing that is not
+part of the macro.  When you exit the recursive edit using @kbd{C-M-c},
+you are asked again how to continue with the keyboard macro.  If you
+type a @key{SPC} at this time, the rest of the macro definition is
+executed.  It is up to you to leave point and the text in a state such
+that the rest of the macro will do what you address@hidden
+
+  @kbd{C-u C-x q}, which is @kbd{C-x q} with a numeric argument, performs a
+different function.  It enters a recursive edit reading input from the
+keyboard, both when you type it during the definition of the macro and
+when it is executed from the macro.  During definition, the editing you do
+inside the recursive edit does not become part of the macro.  During macro
+execution, the recursive edit gives you a chance to do some particularized
+editing.  @xref{Recursive Edit}.
+
address@hidden Key Bindings
address@hidden Customizing Key Bindings
+
+  This section deals with the @dfn{keymaps} that define the bindings
+between keys and functions, and shows how you can customize these bindings.
address@hidden command
address@hidden function
address@hidden command name
+
+  A command is a Lisp function whose definition provides for interactive
+use.  Like every Lisp function, a command has a function name, which is
+a Lisp symbol whose name usually consists of lower case letters and
+hyphens.
+
address@hidden
+* Keymaps::    Definition of the keymap data structure.
+               Names of Emacs's standard keymaps.
+* Rebinding::  How to redefine one key's meaning conveniently.
+* Disabling::  Disabling a command means confirmation is required
+                before it can be executed.  This is done to protect
+                beginners from surprises.
address@hidden menu
+
address@hidden Keymaps
address@hidden Keymaps
address@hidden keymap
+
address@hidden global keymap
address@hidden global-map
+  The bindings between characters and command functions are recorded in
+data structures called @dfn{keymaps}.  Emacs has many of these.  One, the
address@hidden keymap, defines the meanings of the single-character keys that
+are defined regardless of major mode.  It is the value of the variable
address@hidden
+
address@hidden local keymap
address@hidden c-mode-map
address@hidden lisp-mode-map
+  Each major mode has another keymap, its @dfn{local keymap}, which
+contains overriding definitions for the single-character keys that are
+redefined in that mode.  Each buffer records which local keymap is
+installed for it at any time, and the current buffer's local keymap is
+the only one that directly affects command execution.  The local keymaps
+for Lisp mode, C mode, and many other major modes always exist even when
+not in use.  They are the values of the variables @code{lisp-mode-map},
address@hidden, and so on.  For less frequently used major modes, the
+local keymap is sometimes constructed only when the mode is used for the
+first time in a session, to save space.
+
address@hidden minibuffer
address@hidden minibuffer-local-map
address@hidden minibuffer-local-ns-map
address@hidden minibuffer-local-completion-map
address@hidden minibuffer-local-must-match-map
address@hidden repeat-complex-command-map
address@hidden isearch-mode-map
+  There are local keymaps for the minibuffer, too; they contain various
+completion and exit commands.
+
address@hidden @bullet
address@hidden
address@hidden is used for ordinary input (no completion).
address@hidden
address@hidden is similar, except that @key{SPC} exits
+just like @key{RET}.  This is used mainly for Mocklisp compatibility.
address@hidden
address@hidden is for permissive completion.
address@hidden
address@hidden is for strict completion and
+for cautious completion.
address@hidden
address@hidden is for use in @kbd{C-x @key{ESC} @key{ESC}}.
address@hidden
address@hidden contains the bindings of the special keys which
+are bound in the pseudo-mode entered with @kbd{C-s} and @kbd{C-r}.
address@hidden itemize
+
address@hidden ctl-x-map
address@hidden help-map
address@hidden esc-map
+  Finally, each prefix key has a keymap which defines the key sequences
+that start with it.  For example, @code{ctl-x-map} is the keymap used for
+characters following a @kbd{C-x}.
+
address@hidden @bullet
address@hidden
address@hidden is the variable name for the map used for characters that
+follow @kbd{C-x}.
address@hidden
address@hidden is used for characters that follow @kbd{C-h}.
address@hidden
address@hidden is for characters that follow @key{ESC}. All Meta
+characters are actually defined by this map.
address@hidden
address@hidden is for characters that follow @kbd{C-x 4}.
address@hidden
address@hidden is for characters that follow @kbd{C-c}.
address@hidden itemize
+
+  The definition of a prefix key is the keymap to use for looking up
+the following character.  Sometimes the definition is actually a Lisp
+symbol whose function definition is the following character keymap.  The
+effect is the same, but it provides a command name for the prefix key that
+you can use as a description of what the prefix key is for.  Thus the
+binding of @kbd{C-x} is the symbol @code{Ctl-X-Prefix}, whose function
+definition is the keymap for @kbd{C-x} commands, the value of
address@hidden@refill
+
+  Prefix key definitions can appear in either the global
+map or a local map.  The definitions of @kbd{C-c}, @kbd{C-x}, @kbd{C-h},
+and @key{ESC} as prefix keys appear in the global map, so these prefix
+keys are always available.  Major modes can locally redefine a key as a
+prefix by putting a prefix key definition for it in the local
address@hidden
+
+  A mode can also put a prefix definition of a global prefix character such
+as @kbd{C-x} into its local map.  This is how major modes override the
+definitions of certain keys that start with @kbd{C-x}.  This case is
+special, because the local definition does not entirely replace the global
+one.  When both the global and local definitions of a key are other
+keymaps, the next character is looked up in both keymaps, with the local
+definition overriding the global one.  The character after the
address@hidden is looked up in both the major mode's own keymap for redefined
address@hidden commands and in @code{ctl-x-map}.  If the major mode's own keymap
+for @kbd{C-x} commands contains @code{nil}, the definition from the global
+keymap for @kbd{C-x} commands is address@hidden
+
address@hidden Rebinding
address@hidden Changing Key Bindings
address@hidden key rebinding, this session
address@hidden rebinding keys, this session
+
+  You can redefine an Emacs key by changing its entry in a keymap.
+You can change the global keymap, in which case the change is effective in
+all major modes except those that have their own overriding local
+definitions for the same key.  Or you can change the current buffer's
+local map, which affects all buffers using the same major mode.
+
address@hidden
+* Interactive Rebinding::      Changing Key Bindings Interactively   
+* Programmatic Rebinding::     Changing Key Bindings Programmatically
+* Key Bindings Using Strings:: Using Strings for Changing Key Bindings 
address@hidden menu
+
address@hidden Interactive Rebinding
address@hidden Changing Key Bindings Interactively
address@hidden global-set-key
address@hidden local-set-key
address@hidden local-unset-key
+
address@hidden @kbd
address@hidden M-x global-set-key @key{RET} @var{key} @var{cmd} @key{RET}
+Defines @var{key} globally to run @var{cmd}.
address@hidden M-x local-set-key @key{RET} @var{keys} @var{cmd} @key{RET} 
+Defines @var{key} locally (in the major mode now in effect) to run
address@hidden
address@hidden M-x local-unset-key @key{RET} @var{keys} @key{RET}
+Removes the local binding of @var{key}.
address@hidden table
+
address@hidden is a symbol naming an interactively-callable function.
+
+When called interactively, @var{key} is the next complete key sequence
+that you type.  When called as a function, @var{key} is a string, a
+vector of events, or a vector of key-description lists as described in
+the @code{define-key} function description.  The binding goes in
+the current buffer's local map, which is shared with other buffers in
+the same major mode.
+
+The following example:
+
address@hidden
+M-x global-set-key @key{RET} C-f next-line @key{RET}
address@hidden example
+
address@hidden
+redefines @kbd{C-f} to move down a line.  The fact that @var{cmd} is
+read second makes it serve as a kind of confirmation for @var{key}.
+
+  These functions offer no way to specify a particular prefix keymap as
+the one to redefine in, but that is not necessary, as you can include
+prefixes in @var{key}.  @var{key} is read by reading characters one by
+one until they amount to a complete key (that is, not a prefix key).
+Thus, if you type @kbd{C-f} for @var{key}, Emacs enters
+the minibuffer immediately to read @var{cmd}.  But if you type
address@hidden, another character is read; if that character is @kbd{4},
+another character is read, and so on.  For example,@refill
+
address@hidden
+M-x global-set-key @key{RET} C-x 4 $ spell-other-window @key{RET}
address@hidden example
+
address@hidden
+redefines @kbd{C-x 4 $} to run the (fictitious) command
address@hidden
+
address@hidden define-key
address@hidden substitute-key-definition
+  The most general way to modify a keymap is the function
address@hidden, used in Lisp code (such as your init file).
address@hidden takes three arguments: the keymap, the key to modify
+in it, and the new definition.  @xref{Init File}, for an example.
address@hidden is used similarly; it takes three
+arguments, an old definition, a new definition, and a keymap, and
+redefines in that keymap all keys that were previously defined with the
+old definition to have the new definition instead.
+
address@hidden Programmatic Rebinding
address@hidden Changing Key Bindings Programmatically
+
+  You can use the functions @code{global-set-key} and @code{define-key}
+to rebind keys under program control.
+
address@hidden define-key
address@hidden global-set-key
+
address@hidden @kbd
address@hidden  @code{(global-set-key @var{keys} @var{cmd})}
+Defines @var{keys} globally to run @var{cmd}.
address@hidden @code{(define-key @var{keymap} @var{keys} @var{def})}
+Defines @var{keys} to run @var{def} in the keymap @var{keymap}.
address@hidden table
+ 
address@hidden is a keymap object.
+
address@hidden is the sequence of keystrokes to bind.
+
address@hidden is anything that can be a key's definition:
+
address@hidden @bullet
address@hidden
address@hidden, meaning key is undefined in this keymap
address@hidden
+A command, that is, a Lisp function suitable for interactive calling
address@hidden
+A string or key sequence vector, which is treated as a keyboard macro
address@hidden
+A keymap to define a prefix key
address@hidden
+A symbol so that when the key is looked up, the symbol stands for its
+function definition, which should at that time be one of the above,
+or another symbol whose function definition is used, and so on
address@hidden
+A cons, @code{(string . defn)}, meaning that @var{defn} is the definition
+(@var{defn} should be a valid definition in its own right)
address@hidden
+A cons, @code{(keymap . char)}, meaning use the definition of
address@hidden in map @var{keymap}
address@hidden itemize
+
+For backward compatibility, XEmacs allows you to specify key
+sequences as strings.  However, the preferred method is to use the
+representations of key sequences as vectors of keystrokes.
address@hidden, for more information about the rules for constructing
+key sequences.
+
+Emacs allows you to abbreviate representations for key sequences in 
+most places where there is no ambiguity.
+Here are some rules for abbreviation:
+
address@hidden @bullet
address@hidden
+The keysym by itself is equivalent to a list of just that keysym, i.e.,
address@hidden is equivalent to @code{(f1)}.
address@hidden
+A keystroke by itself is equivalent to a vector containing just that
+keystroke, i.e.,  @code{(control a)} is equivalent to @code{[(control a)]}.
address@hidden
+You can use ASCII codes for keysyms that have them. i.e.,
address@hidden is equivalent to @code{A}. (This is not so much an
+abbreviation as an alternate representation.)
address@hidden itemize
+
+Here are some examples of programmatically binding keys:
+
address@hidden
+
+;;;  Bind @code{my-command} to @key{f1}
+(global-set-key 'f1 'my-command)                
+
+;;;  Bind @code{my-command} to @kbd{Shift-f1}
+(global-set-key '(shift f1) 'my-command)
+
+;;; Bind @code{my-command} to @kbd{C-c Shift-f1}
+(global-set-key '[(control c) (shift f1)] 'my-command)  
+
+;;; Bind @code{my-command} to the middle mouse button.
+(global-set-key 'button2 'my-command)
+
+;;; Bind @code{my-command} to @address@hidden @key{CTL} @key{Right Mouse 
Button}}
+;;; in the keymap that is in force when you are running @code{dired}.
+(define-key dired-mode-map '(meta control button3) 'my-command)
+
address@hidden example
+
address@hidden ;; note that these next four lines are not synonymous:
address@hidden ;;
address@hidden (global-set-key '(meta control delete) 'my-command)
address@hidden (global-set-key '(meta control backspace) 'my-command)
address@hidden (global-set-key '(meta control h) 'my-command)
address@hidden (global-set-key '(meta control H) 'my-command)
address@hidden 
address@hidden ;; note that this binds two key sequences: ``control-j'' and 
``linefeed''.
address@hidden ;;
address@hidden (global-set-key "\^J" 'my-command)
+
address@hidden Key Bindings Using Strings
address@hidden Using Strings for Changing Key Bindings 
+
+  For backward compatibility, you can still use strings to represent
+key sequences.  Thus you can use commands like the following:
+
address@hidden
+;;; Bind @code{end-of-line} to @kbd{C-f}
+(global-set-key "\C-f" 'end-of-line)
address@hidden example
+
+Note, however, that in some cases you may be binding more than one
+key sequence by using a single command.  This situation can 
+arise because in ASCII, @kbd{C-i} and @key{TAB} have
+the same representation.  Therefore, when Emacs sees:
+
address@hidden
+(global-set-key "\C-i" 'end-of-line)
address@hidden example
+
+it is unclear whether the user intended to bind @kbd{C-i} or @key{TAB}.
+The solution XEmacs adopts is to bind both of these key
+sequences.
+
address@hidden redefining keys
+After binding a command to two key sequences with a form like:
+
address@hidden
+        (define-key global-map "\^X\^I" 'command-1)
address@hidden example
+
+it is possible to redefine only one of those sequences like so:
+
address@hidden
+        (define-key global-map [(control x) (control i)] 'command-2)
+        (define-key global-map [(control x) tab] 'command-3)
address@hidden example
+
+This applies only when running under a window system.  If you are
+talking to Emacs through an ASCII-only channel, you do not get any of
+these features.
+
+Here is a table of pairs of key sequences that behave in a
+similar fashion:
+
address@hidden
+        control h      backspace           
+        control l      clear
+        control i      tab 
+        control m      return              
+        control j      linefeed 
+        control [      escape
+        control @@      control space
address@hidden example
+
address@hidden Disabling
address@hidden Disabling Commands
address@hidden disabled command
+
+  Disabling a command marks it as requiring confirmation before it
+can be executed.  The purpose of disabling a command is to prevent
+beginning users from executing it by accident and being confused.
+
+  The direct mechanism for disabling a command is to have a address@hidden
address@hidden property on the Lisp symbol for the command.  These
+properties are normally set by the user's init file with
+Lisp expressions such as:
+
address@hidden
+(put 'delete-region 'disabled t)
address@hidden example
+
address@hidden File}.
+
+  If the value of the @code{disabled} property is a string, that string
+is included in the message printed when the command is used:
+
address@hidden
+(put 'delete-region 'disabled
+     "Text deleted this way cannot be yanked back!\n")
address@hidden example
+
address@hidden disable-command
address@hidden enable-command
+  You can disable a command either by editing the init file
+directly or with the command @kbd{M-x disable-command}, which edits the
+init file for you.  @xref{Init File}.
+
+  When you attempt to invoke a disabled command interactively in Emacs,
+a window is displayed containing the command's name, its
+documentation, and some instructions on what to do next; then
+Emacs asks for input saying whether to execute the command as requested,
+enable it and execute, or cancel it.  If you decide to enable the
+command, you are asked whether to do this permanently or just for the
+current session.  Enabling permanently works by automatically editing
+your init file.  You can use @kbd{M-x enable-command} at any
+time to enable any command permanently.
+
+  Whether a command is disabled is independent of what key is used to
+invoke it; it also applies if the command is invoked using @kbd{M-x}.
+Disabling a command has no effect on calling it as a function from Lisp
+programs.
+
address@hidden Syntax
address@hidden The Syntax Table
address@hidden syntax table
+
+  All the Emacs commands which parse words or balance parentheses are
+controlled by the @dfn{syntax table}.  The syntax table specifies which
+characters are opening delimiters, which are parts of words, which are
+string quotes, and so on.  Actually, each major mode has its own syntax
+table (though sometimes related major modes use the same one) which it
+installs in each buffer that uses that major mode.  The syntax table
+installed in the current buffer is the one that all commands use, so we
+call it ``the'' syntax table.  A syntax table is a Lisp object, a vector of
+length 256 whose elements are numbers.
+
address@hidden
+* Entry: Syntax Entry.    What the syntax table records for each character.
+* Change: Syntax Change.  How to change the information.
address@hidden menu
+
address@hidden Syntax Entry
address@hidden Information About Each Character
+
+  The syntax table entry for a character is a number that encodes six
+pieces of information:
+
address@hidden @bullet
address@hidden
+The syntactic class of the character, represented as a small integer
address@hidden
+The matching delimiter, for delimiter characters only
+(the matching delimiter of @samp{(} is @samp{)}, and vice versa)
address@hidden
+A flag saying whether the character is the first character of a
+two-character comment starting sequence
address@hidden
+A flag saying whether the character is the second character of a
+two-character comment starting sequence
address@hidden
+A flag saying whether the character is the first character of a
+two-character comment ending sequence
address@hidden
+A flag saying whether the character is the second character of a
+two-character comment ending sequence
address@hidden itemize
+
+  The syntactic classes are stored internally as small integers, but are
+usually described to or by the user with characters.  For example, @samp{(}
+is used to specify the syntactic class of opening delimiters.  Here is a
+table of syntactic classes, with the characters that specify them.
+
address@hidden @samp
address@hidden @w{-}
+The class of whitespace characters.  Please don't use the formerly
+advertised @w{ }, which is not supported by GNU Emacs.
address@hidden w
+The class of word-constituent characters.
address@hidden _
+The class of characters that are part of symbol names but not words.
+This class is represented by @samp{_} because the character @samp{_}
+has this class in both C and Lisp.
address@hidden .
+The class of punctuation characters that do not fit into any other
+special class.
address@hidden (
+The class of opening delimiters.
address@hidden )
+The class of closing delimiters.
address@hidden '
+The class of expression-adhering characters.  These characters are
+part of a symbol if found within or adjacent to one, and are part
+of a following expression if immediately preceding one, but are like
+whitespace if surrounded by whitespace.
address@hidden "
+The class of string-quote characters.  They match each other in pairs,
+and the characters within the pair all lose their syntactic
+significance except for the @samp{\} and @samp{/} classes of escape
+characters, which can be used to include a string-quote inside the
+string.
address@hidden $
+The class of self-matching delimiters.  This is intended for @TeX{}'s
address@hidden, which is used both to enter and leave math mode.  Thus,
+a pair of matching @samp{$} characters surround each piece of math mode
address@hidden input.  A pair of adjacent @samp{$} characters act like a single
+one for purposes of matching.
+
address@hidden /
+The class of escape characters that always just deny the following
+character its special syntactic significance.  The character after one
+of these escapes is always treated as alphabetic.
address@hidden \
+The class of C-style escape characters.  In practice, these are
+treated just like @samp{/}-class characters, because the extra
+possibilities for C escapes (such as being followed by digits) have no
+effect on where the containing expression ends.
address@hidden <
+The class of comment-starting characters.  Only single-character
+comment starters (such as @samp{;} in Lisp mode) are represented this
+way.
address@hidden >
+The class of comment-ending characters.  Newline has this syntax in
+Lisp mode.
address@hidden table
+
address@hidden parse-sexp-ignore-comments
+  The characters flagged as part of two-character comment delimiters can
+have other syntactic functions most of the time.  For example, @samp{/} and
address@hidden in C code, when found separately, have nothing to do with
+comments.  The comment-delimiter significance overrides when the pair of
+characters occur together in the proper order.  Only the list and sexp
+commands use the syntax table to find comments; the commands specifically
+for comments have other variables that tell them where to find comments.
+Moreover, the list and sexp commands notice comments only if
address@hidden is address@hidden  This variable is set
+to @code{nil} in modes where comment-terminator sequences are liable to
+appear where there is no comment, for example, in Lisp mode where the
+comment terminator is a newline but not every newline ends a comment.
+
address@hidden Syntax Change
address@hidden Altering Syntax Information
+
+  It is possible to alter a character's syntax table entry by storing a new
+number in the appropriate element of the syntax table, but it would be hard
+to determine what number to use.  Emacs therefore provides a command that
+allows you to specify the syntactic properties of a character in a
+convenient way.
+
address@hidden modify-syntax-entry
+  @kbd{M-x modify-syntax-entry} is the command to change a character's
+syntax.  It can be used interactively and is also used by major
+modes to initialize their own syntax tables.  Its first argument is the
+character to change.  The second argument is a string that specifies the
+new syntax.  When called from Lisp code, there is a third, optional
+argument, which specifies the syntax table in which to make the change.  If
+not supplied, or if this command is called interactively, the third
+argument defaults to the current buffer's syntax table.
+
address@hidden
address@hidden
+The first character in the string specifies the syntactic class.  It
+is one of the characters in the previous table (@pxref{Syntax Entry}).
+
address@hidden
+The second character is the matching delimiter.  For a character that
+is not an opening or closing delimiter, this should be a space, and may
+be omitted if no following characters are needed.
+
address@hidden
+The remaining characters are flags.  The flag characters allowed are:
+
address@hidden @samp
address@hidden 1
+Flag this character as the first of a two-character comment starting sequence.
address@hidden 2
+Flag this character as the second of a two-character comment starting sequence.
address@hidden 3
+Flag this character as the first of a two-character comment ending sequence.
address@hidden 4
+Flag this character as the second of a two-character comment ending sequence.
address@hidden table
address@hidden enumerate
+
address@hidden C-h s
address@hidden describe-syntax
+  Use @kbd{C-h s} (@code{describe-syntax}) to display a description of
+the contents of the current syntax table.  The description of each
+character includes both the string you have to pass to
address@hidden to set up that character's current syntax,
+and some English to explain that string if necessary.
+
address@hidden Init File
address@hidden The Init File
address@hidden init file
address@hidden Emacs initialization file
address@hidden key rebinding, permanent
address@hidden rebinding keys, permanently
+
+  When you start Emacs, it normally loads either @file{.xemacs/init.el}
+or the file @file{.emacs} (whichever comes first) in your home directory.
+This file, if it exists, should contain Lisp code.  It is called your
+initialization file or @dfn{init file}.  Use the command line switch
address@hidden to tell Emacs whether to load an init file (@pxref{Entering
+Emacs}).  Use the command line switch @samp{-user-init-file}
+(@pxref{Command Switches}) to tell Emacs to load a different file
+instead of @file{~/.xemacs/init.el}/@file{~/.emacs}.
+
+When the init file is read, the variable @code{user-init-file} says
+which init file was loaded.
+
+  At some sites there is a @dfn{default init file}, which is the
+library named @file{default.el}, found via the standard search path for
+libraries.  The Emacs distribution contains no such library; your site
+may create one for local customizations.  If this library exists, it is
+loaded whenever you start Emacs.  But your init file, if any, is loaded
+first; if it sets @code{inhibit-default-init} address@hidden, then
address@hidden is not loaded.
+
+  If you have a large amount of code in your init file, you should
+byte-compile it to @file{~/.xemacs/init.elc} or @file{~/.emacs.elc}.
+
address@hidden
+* Init Syntax::     Syntax of constants in Emacs Lisp.
+* Init Examples::   How to do some things with an init file.
+* Terminal Init::   Each terminal type can have an init file.
address@hidden menu
+
address@hidden Init Syntax
address@hidden Init File Syntax
+
+  The init file contains one or more Lisp function call
+expressions.  Each consists of a function name followed by
+arguments, all surrounded by parentheses.  For example, @code{(setq
+fill-column 60)} represents a call to the function @code{setq} which is
+used to set the variable @code{fill-column} (@pxref{Filling}) to 60.
+
+  The second argument to @code{setq} is an expression for the new value
+of the variable.  This can be a constant, a variable, or a function call
+expression.  In the init file, constants are used most of the time.
+They can be:
+
address@hidden @asis
address@hidden Numbers
+Integers are written in decimal, with an optional initial minus sign.
+
+If a sequence of digits is followed by a period and another sequence
+of digits, it is interpreted as a floating point number.
+
+The number prefixes @samp{#b}, @samp{#o}, and @samp{#x} are supported to
+represent numbers in binary, octal, and hexadecimal notation (or radix).
+
address@hidden Strings
+Lisp string syntax is the same as C string syntax with a few extra
+features.  Use a double-quote character to begin and end a string constant.
+
+Newlines and special characters may be present literally in strings.  They
+can also be represented as backslash sequences: @samp{\n} for newline,
address@hidden for backspace, @samp{\r} for return, @samp{\t} for tab,
address@hidden for formfeed (control-l), @samp{\e} for escape, @samp{\\} for a
+backslash, @samp{\"} for a double-quote, or @address@hidden for the
+character whose octal code is @var{ooo}.  Backslash and double-quote are
+the only characters for which backslash sequences are mandatory.
+
+You can use @samp{\C-} as a prefix for a control character, as in
address@hidden for ASCII Control-S, and @samp{\M-} as a prefix for
+a Meta character, as in @samp{\M-a} for Meta-A or @samp{\M-\C-a} for
address@hidden
+
address@hidden Characters
+Lisp character constant syntax consists of a @samp{?} followed by
+either a character or an escape sequence starting with @samp{\}.
+Examples: @code{?x}, @code{?\n}, @code{?\"}, @code{?\)}.  Note that
+strings and characters are not interchangeable in Lisp; some contexts
+require one and some contexts require the other.
+
address@hidden True
address@hidden stands for `true'.
+
address@hidden False
address@hidden stands for `false'.
+
address@hidden Other Lisp objects
+Write a single-quote (') followed by the Lisp object you want.
address@hidden table
+
address@hidden Init Examples
address@hidden Init File Examples
+
+  Here are some examples of doing certain commonly desired things with
+Lisp expressions:
+
address@hidden @bullet
address@hidden
+Make @key{TAB} in C mode just insert a tab if point is in the middle of a
+line.
+
address@hidden
+(setq c-tab-always-indent nil)
address@hidden example
+
+Here we have a variable whose value is normally @code{t} for `true'
+and the alternative is @code{nil} for `false'.
+
address@hidden
+Make searches case sensitive by default (in all buffers that do not
+override this).
+
address@hidden
+(setq-default case-fold-search nil)
address@hidden example
+
+This sets the default value, which is effective in all buffers that do
+not have local values for the variable.  Setting @code{case-fold-search}
+with @code{setq} affects only the current buffer's local value, which
+is probably not what you want to do in an init file.
+
address@hidden
+Make Text mode the default mode for new buffers.
+
address@hidden
+(setq default-major-mode 'text-mode)
address@hidden example
+
+Note that @code{text-mode} is used because it is the command for entering
+the mode we want.  A single-quote is written before it to make a symbol
+constant; otherwise, @code{text-mode} would be treated as a variable name.
+
address@hidden
+Turn on Auto Fill mode automatically in Text mode and related modes.
+
address@hidden
+(setq text-mode-hook
+  '(lambda () (auto-fill-mode 1)))
address@hidden example
+
+Here we have a variable whose value should be a Lisp function.  The
+function we supply is a list starting with @code{lambda}, and a single
+quote is written in front of it to make it (for the purpose of this
address@hidden) a list constant rather than an expression.  Lisp functions
+are not explained here; for mode hooks it is enough to know that
address@hidden(auto-fill-mode 1)} is an expression that will be executed when
+Text mode is entered.  You could replace it with any other expression
+that you like, or with several expressions in a row.
+
address@hidden
+(setq text-mode-hook 'turn-on-auto-fill)
address@hidden example
+
+This is another way to accomplish the same result.
address@hidden is a symbol whose function definition is
address@hidden(lambda () (auto-fill-mode 1))}.
+
address@hidden
+Load the installed Lisp library named @file{foo} (actually a file
address@hidden or @file{foo.el} in a standard Emacs directory).
+
address@hidden
+(load "foo")
address@hidden example
+
+When the argument to @code{load} is a relative pathname, not starting
+with @samp{/} or @samp{~}, @code{load} searches the directories in
address@hidden (@pxref{Loading}).
+
address@hidden
+Load the compiled Lisp file @file{foo.elc} from your home directory.
+
address@hidden
+(load "~/foo.elc")
address@hidden example
+
+Here an absolute file name is used, so no searching is done.
+
address@hidden
+Rebind the key @kbd{C-x l} to run the function @code{make-symbolic-link}.
+
address@hidden
+(global-set-key "\C-xl" 'make-symbolic-link)
address@hidden example
+
+or
+
address@hidden
+(define-key global-map "\C-xl" 'make-symbolic-link)
address@hidden example
+
+Note once again the single-quote used to refer to the symbol
address@hidden instead of its value as a variable.
+
address@hidden
+Do the same thing for C mode only.
+
address@hidden
+(define-key c-mode-map "\C-xl" 'make-symbolic-link)
address@hidden example
+
address@hidden
+Bind the function key @key{F1} to a command in C mode.
+Note that the names of function keys must be lower case.
+
address@hidden
+(define-key c-mode-map 'f1 'make-symbolic-link)
address@hidden example
+
address@hidden
+Bind the shifted version of @key{F1} to a command.
+
address@hidden
+(define-key c-mode-map '(shift f1) 'make-symbolic-link)
address@hidden example
+
address@hidden
+Redefine all keys which now run @code{next-line} in Fundamental mode
+to run @code{forward-line} instead.
+
address@hidden
+(substitute-key-definition 'next-line 'forward-line
+                           global-map)
address@hidden example
+
address@hidden
+Make @kbd{C-x C-v} undefined.
+
address@hidden
+(global-unset-key "\C-x\C-v")
address@hidden example
+
+One reason to undefine a key is so that you can make it a prefix.
+Simply defining @kbd{C-x C-v @var{anything}} would make @kbd{C-x C-v}
+a prefix, but @kbd{C-x C-v} must be freed of any non-prefix definition
+first.
+
address@hidden
+Make @samp{$} have the syntax of punctuation in Text mode.
+Note the use of a character constant for @samp{$}.
+
address@hidden
+(modify-syntax-entry ?\$ "." text-mode-syntax-table)
address@hidden example
+
address@hidden
+Enable the use of the command @code{eval-expression} without confirmation.
+
address@hidden
+(put 'eval-expression 'disabled nil)
address@hidden example
address@hidden itemize
+
address@hidden Terminal Init
address@hidden Terminal-Specific Initialization
+
+  Each terminal type can have a Lisp library to be loaded into Emacs when
+it is run on that type of terminal.  For a terminal type named
address@hidden, the library is called @file{term/@var{termtype}} and it is
+found by searching the directories @code{load-path} as usual and trying the
+suffixes @samp{.elc} and @samp{.el}.  Normally it appears in the
+subdirectory @file{term} of the directory where most Emacs libraries are
address@hidden
+
+  The usual purpose of the terminal-specific library is to define the
+escape sequences used by the terminal's function keys using the library
address@hidden  See the file
address@hidden/vt100.el} for an example of how this is address@hidden
+
+  When the terminal type contains a hyphen, only the part of the name
+before the first hyphen is significant in choosing the library name.
+Thus, terminal types @samp{aaa-48} and @samp{aaa-30-rv} both use
+the library @file{term/aaa}.  The code in the library can use
address@hidden(getenv "TERM")} to find the full terminal type address@hidden
+
address@hidden term-file-prefix
+  The library's name is constructed by concatenating the value of the
+variable @code{term-file-prefix} and the terminal type.  Your init
+file can prevent the loading of the terminal-specific library by setting
address@hidden to @code{nil}.  @xref{Init File}.
+
address@hidden term-setup-hook
+  The value of the variable @code{term-setup-hook}, if not @code{nil}, is
+called as a function of no arguments at the end of Emacs initialization,
+after both your init file and any terminal-specific library have been
+read.  @xref{Init File}.  You can set the value in the init file to
+override part of any of the terminal-specific libraries and to define
+initializations for terminals that do not have a address@hidden
+
address@hidden Audible Bell
address@hidden Changing the Bell Sound
address@hidden audible bell, changing
address@hidden bell, changing
address@hidden sound-alist
address@hidden load-default-sounds
address@hidden play-sound
+
+You can now change how the audible bell sounds using the variable
address@hidden
+
address@hidden's value is an list associating symbols with, among
+other things, strings of audio-data.  When @code{ding} is called with
+one of the symbols, the associated sound data is played instead of the
+standard beep.  This only works if you are logged in on the console of a
+machine with audio hardware. To listen to a sound of the provided type,
+call the function @code{play-sound} with the argument @var{sound}. You
+can also set the volume of the sound with the optional argument 
address@hidden@refill
address@hidden ding
+
+Each element of @code{sound-alist} is a list describing a sound.
+The first element of the list is the name of the sound being defined.
+Subsequent elements of the list are alternating keyword/value pairs:
+
address@hidden @code
address@hidden sound
+A string of raw sound data, or the name of another sound to play.   
+The symbol @code{t} here means use the default X beep.
+
address@hidden volume
+An integer from 0-100, defaulting to @code{bell-volume}.
+
address@hidden pitch
+If using the default X beep, the pitch (Hz) to generate.
+
address@hidden duration
+If using the default X beep, the duration (milliseconds).
address@hidden table
+
+For compatibility, elements of `sound-alist' may also be of the form:
+
address@hidden
+( @var{sound-name} . @var{<sound>} )
+( @var{sound-name} @var{<volume>} @var{<sound>} )
address@hidden example
+
+You should probably add things to this list by calling the function
address@hidden
+
+Note that you can only play audio data if running on the console screen
+of a machine with audio hardware which emacs understands, which at this
+time means a Sun SparcStation, SGI, or HP9000s700.
+
+Also note that the pitch, duration, and volume options are available
+everywhere, but most X servers ignore the `pitch' option.
+
address@hidden bell-volume
+The variable @code{bell-volume} should be an integer from 0 to 100,
+with 100 being loudest, which controls how loud the sounds emacs makes
+should be.  Elements of the @code{sound-alist} may override this value.
+This variable applies to the standard X bell sound as well as sound files.
+
+If the symbol @code{t} is in place of a sound-string, Emacs uses the
+default X beep.  This allows you to define beep-types of 
+different volumes even when not running on the console.
+
address@hidden load-sound-file
+You can add things to this list by calling the function
address@hidden, which reads in an audio-file and adds its data to
+the sound-alist. You can specify the sound with the @var{sound-name}
+argument and the file into which the sounds are loaded with the
address@hidden argument. The optional @var{volume} argument sets the
+volume.
+
address@hidden (@var{filename sound-name} &optional @var{volume})}
+
+To load and install some sound files as beep-types, use the function
address@hidden (note that this only works if you are on
+display 0 of a machine with audio hardware).
+
+The following beep-types are used by Emacs itself. Other Lisp
+packages may use other beep types, but these are the ones that the C
+kernel of Emacs uses.
+
address@hidden @code
address@hidden auto-save-error
+An auto-save does not succeed
+
address@hidden command-error
+The Emacs command loop catches an error
+
address@hidden undefined-key
+You type a key that is undefined
+
address@hidden undefined-click
+You use an undefined mouse-click combination
+
address@hidden no-completion
+Completion was not possible
+
address@hidden y-or-n-p
+You type something other than the required @code{y} or @code{n}
+
address@hidden yes-or-no-p       
+You type something other than @code{yes} or @code{no}
address@hidden table
+
address@hidden  node-name,  next,  previous,  up
address@hidden Faces
address@hidden Faces
+
+XEmacs has objects called extents and faces.  An @dfn{extent}
+is a region of text and a @dfn{face} is a collection of textual
+attributes, such as fonts and colors.  Every extent is displayed in some
+face; therefore, changing the properties of a face immediately updates the
+display of all associated extents.  Faces can be frame-local: you can
+have a region of text that displays with completely different
+attributes when its buffer is viewed from a different X window.
+
+The display attributes of faces may be specified either in Lisp or through
+the X resource manager.
+
address@hidden Customizing Faces
+
+You can change the face of an extent with the functions in
+this section.  All the functions prompt for a @var{face} as an
+argument; use completion for a list of possible values.
+
address@hidden @kbd
address@hidden M-x invert-face
+Swap the foreground and background colors of the given @var{face}.
address@hidden M-x make-face-bold
+Make the font of the given @var{face} bold.  When called from a
+program, returns @code{nil} if this is not possible.
address@hidden M-x make-face-bold-italic
+Make the font of the given @var{face} bold italic.  
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-italic
+Make the font of the given @var{face} italic.  
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-unbold
+Make the font of the given @var{face} non-bold.  
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-unitalic
+Make the font of the given @var{face} non-italic.
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-larger
+Make the font of the given @var{face} a little larger.
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-smaller
+Make the font of the given @var{face} a little smaller.
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x set-face-background 
+Change the background color of the given @var{face}.
address@hidden M-x set-face-background-pixmap
+Change the background pixmap of the given @var{face}.
address@hidden M-x set-face-font 
+Change the font of the given @var{face}.
address@hidden M-x set-face-foreground
+Change the foreground color of the given @var{face}.
address@hidden M-x set-face-underline-p
+Change whether the given @var{face} is underlined.
address@hidden table
+
address@hidden make-face-larger
address@hidden make-face-smaller
+
address@hidden invert-face
+You can exchange the foreground and background color of the selected
address@hidden with the function @code{invert-face}. If the face does not
+specify both foreground and background, then its foreground and
+background are set to the background and foreground of the default face.
+When calling this from a program, you can supply the optional argument 
address@hidden to specify which frame is affected; otherwise, all frames
+are affected.
+
address@hidden make-face-bold
address@hidden make-face-bold-italic
address@hidden make-face-italic
address@hidden make-face-unbold
address@hidden make-face-unitalic
address@hidden face-frob-from-locale-first
+The work of @code{make-face-bold}, @code{make-face-bold-italic},
address@hidden, @code{make-face-unbold},
address@hidden functions is affected by
address@hidden variable.  If it is @code{nil}, those
+functions first try to manipulate device specific data like X font names
+to obtain the desired font face specification.  This may be unsuitable
+in environments using different font face specifications for different
+frames, non-Mule environments in particular.
+
+If the variable is address@hidden, those functions first try to figure
+out whether the face font is the same as one of predefined faces:
address@hidden, @code{bold}, @code{italic}, @code{bold-italic}.  If it
+is the same, then the new face font specification is set to be the same
+as that of a corresponding predefined face.  Thus if the predefined face
+is set up properly for different frames, the same will hold for the face
+being changed by the functions.  This is the behavior one might desire
+in non-Mule environments mentioned above: face being changed still looks
+right in all frames.
+
+How predefined faces might be set up for different frames in such an
+environments is described in @ref{Face Resources}.
+
address@hidden set-face-background
+You can set the background color of the specified @var{face} with the
+function @code{set-face-background}.  The argument @code{color} should
+be a string, the name of a color.  When called from a program, if the
+optional @var{frame} argument is provided, the face is changed only 
+in that frame; otherwise, it is changed in all frames.
+
address@hidden set-face-background-pixmap
+You can set the background pixmap of the specified @var{face} with the
+function @code{set-face-background-pixmap}.  The pixmap argument
address@hidden should be a string, the name of a file of pixmap data.  The
+directories listed in the @code{x-bitmap-file-path} variable are
+searched.  The bitmap may also be a list of the form @code{(@var{width
+height data})}, where @var{width} and @var{height} are the size in
+pixels, and @var{data} is a string containing the raw bits of the
+bitmap.  If the optional @var{frame} argument is provided, the face is
+changed only in that frame; otherwise, it is changed in all frames.
+
+The variable @code{x-bitmap-file-path} takes as a value a list of the
+directories in which X bitmap files may be found.  If the value is
address@hidden, the list is initialized from the @code{*bitmapFilePath}
+resource.
+
+If the environment variable @b{XBMLANGPATH} is set, then it is consulted
+before the @code{x-bitmap-file-path} variable.
+
address@hidden set-face-font
+You can set the font of the specified @var{face} with the function
address@hidden  The @var{font} argument should be a string, the
+name of a font.  When called from a program, if the
+optional @var{frame} argument is provided, the face is changed only 
+in that frame; otherwise, it is changed in all frames.
+
address@hidden set-face-foreground 
+You can set the foreground color of the specified @var{face} with the
+function @code{set-face-foreground}.  The argument @var{color} should be
+a string, the name of a color.  If the optional @var{frame} argument is
+provided, the face is changed only in that frame; otherwise, it is
+changed in all frames.
+
address@hidden set-face-underline-p
+You can set underline the specified @var{face} with the function
address@hidden The argument @var{underline-p} can be used
+to make underlining an attribute of the face or not. If the optional
address@hidden argument is provided, the face is changed only in that
+frame; otherwise, it is changed in all frames.
+
address@hidden Frame Components
address@hidden Frame Components
+
+You can control the presence and position of most frame components, such
+as the menubar, toolbars, and gutters.
+
+This section is not written yet.  Try the Lisp Reference Manual:
address@hidden,,,lispref,}, @ref{Toolbar Intro,,,lispref,}, and
address@hidden Intro,,,lispref,}.
+
address@hidden X Resources
address@hidden X Resources
address@hidden X resources
address@hidden x-create-frame
+
+Historically, XEmacs has used the X resource application class @samp{Emacs}
+for its resources.  Unfortunately, GNU Emacs uses the same application
+class, and resources are not compatible between the two Emacsen.  This
+sharing of the application class often leads to trouble if you want to
+run both variants.
+
+Starting with XEmacs 21, XEmacs uses the class @samp{XEmacs} if it finds
+any XEmacs resources in the resource database when the X connection is
+initialized.  Otherwise, it will use the class @samp{Emacs} for
+backwards compatibility.  The variable @var{x-emacs-application-class}
+may be consulted to determine the application class being used.
+
+The examples in this section assume the application class is @samp{Emacs}.
+
+The Emacs resources are generally set per-frame. Each Emacs frame can have 
+its own name or the same name as another, depending on the name passed to the 
address@hidden function.
+
+You can specify resources for all frames with the syntax:
+
address@hidden
+Emacs*parameter: value
address@hidden example
address@hidden
+
+or
+
address@hidden
+Emacs*EmacsFrame.parameter:value
address@hidden example
address@hidden
+
+You can specify resources for a particular frame with the syntax:
+
address@hidden
+Emacs*FRAME-NAME.parameter: value
address@hidden example
address@hidden
+
address@hidden
+* Geometry Resources::     Controlling the size and position of frames.
+* Iconic Resources::       Controlling whether frames come up iconic.
+* Resource List::          List of resources settable on a frame or device.
+* Face Resources::         Controlling faces using resources.
+* Widgets::                The widget hierarchy for XEmacs.
+* Menubar Resources::      Specifying resources for the menubar.
address@hidden menu
+
address@hidden Geometry Resources
address@hidden Geometry Resources
+
+To make the default size of all Emacs frames be 80 columns by 55 lines,
+do this:
+
address@hidden
+Emacs*EmacsFrame.geometry: 80x55
address@hidden example
address@hidden
+
+To set the geometry of a particular frame named @samp{fred}, do this:
+
address@hidden
+Emacs*fred.geometry: 80x55
address@hidden example
address@hidden
+
+Important! Do not use the following syntax:
+
address@hidden
+Emacs*geometry: 80x55
address@hidden example
address@hidden
+
+You should never use @code{*geometry} with any X application. It does
+not say "make the geometry of Emacs be 80 columns by 55 lines."  It
+really says, "make Emacs and all subwindows thereof be 80x55 in whatever
+units they care to measure in."  In particular, that is both telling the
+Emacs text pane to be 80x55 in characters, and telling the menubar pane
+to be 80x55 pixels, which is surely not what you want.
+
+As a special case, this geometry specification also works (and sets the
+default size of all Emacs frames to 80 columns by 55 lines):
+
address@hidden
+Emacs.geometry: 80x55
address@hidden example
address@hidden
+
+since that is the syntax used with most other applications (since most
+other applications have only one top-level window, unlike Emacs).  In
+general, however, the top-level shell (the unmapped ApplicationShell
+widget named @samp{Emacs} that is the parent of the shell widgets that
+actually manage the individual frames) does not have any interesting
+resources on it, and you should set the resources on the frames instead.
+
+The @code{-geometry} command-line argument sets only the geometry of the
+initial frame created by Emacs.
+
+A more complete explanation of geometry-handling is
+
address@hidden @bullet
address@hidden
+The @code{-geometry} command-line option sets the @code{Emacs.geometry}
+resource, that is, the geometry of the ApplicationShell.
+
address@hidden
+For the first frame created, the size of the frame is taken from the
+ApplicationShell if it is specified, otherwise from the geometry of the
+frame.
+
address@hidden
+For subsequent frames, the order is reversed: First the frame, and then
+the ApplicationShell.
+
address@hidden
+For the first frame created, the position of the frame is taken from the
+ApplicationShell (@code{Emacs.geometry}) if it is specified, otherwise
+from the geometry of the frame.
+
address@hidden
+For subsequent frames, the position is taken only from the frame, and 
+never from the ApplicationShell.
address@hidden itemize
+
+This is rather complicated, but it does seem to provide the most
+intuitive behavior with respect to the default sizes and positions of
+frames created in various ways.
+
address@hidden Iconic Resources
address@hidden Iconic Resources
+
+Analogous to @code{-geometry}, the @code{-iconic} command-line option
+sets the iconic flag of the ApplicationShell (@code{Emacs.iconic}) and
+always applies to the first frame created regardless of its name.
+However, it is possible to set the iconic flag on particular frames (by
+name) by using the @code{Emacs*FRAME-NAME.iconic} resource.
+
address@hidden Resource List
address@hidden Resource List
+
+Emacs frames accept the following resources:
+
address@hidden @asis
address@hidden @code{geometry} (class @code{Geometry}): string
+Initial geometry for the frame.  @xref{Geometry Resources}, for a
+complete discussion of how this works.
+
address@hidden @code{iconic} (class @code{Iconic}): boolean
+Whether this frame should appear in the iconified state.
+
address@hidden @code{internalBorderWidth} (class @code{InternalBorderWidth}): 
int
+How many blank pixels to leave between the text and the edge of the 
+window.
+
address@hidden @code{interline} (class @code{Interline}): int
+How many pixels to leave between each line (may not be implemented).
+
address@hidden @code{menubar} (class @code{Menubar}): boolean
+Whether newly-created frames should initially have a menubar.  Set to
+true by default.
+
address@hidden @code{initiallyUnmapped} (class @code{InitiallyUnmapped}): 
boolean
+Whether XEmacs should leave the initial frame unmapped when it starts
+up.  This is useful if you are starting XEmacs as a server (e.g. in
+conjunction with gnuserv or the external client widget).  You can also
+control this with the @code{-unmapped} command-line option.
+
address@hidden @code{barCursor} (class @code{BarColor}): boolean
+Whether the cursor should be displayed as a bar, or the traditional box.
+
address@hidden @code{cursorColor} (class @code{CursorColor}): color-name
+The color of the text cursor.
+
address@hidden @code{scrollBarWidth} (class @code{ScrollBarWidth}): integer
+How wide the vertical scrollbars should be, in pixels; 0 means no
+vertical scrollbars.  You can also use a resource specification of the
+form @code{*scrollbar.width}, or the usual toolkit scrollbar resources:
address@hidden (Motif), @code{*XlwScrollBar.width} (Lucid),
+or @code{*Scrollbar.thickness} (Athena).  We don't recommend that you
+use the toolkit resources, though, because they're dependent on how
+exactly your particular build of XEmacs was configured.
+
address@hidden @code{scrollBarHeight} (class @code{ScrollBarHeight}): integer
+How high the horizontal scrollbars should be, in pixels; 0 means no
+horizontal scrollbars.  You can also use a resource specification of the
+form @code{*scrollbar.height}, or the usual toolkit scrollbar resources:
address@hidden (Motif), @code{*XlwScrollBar.height} (Lucid),
+or @code{*Scrollbar.thickness} (Athena).  We don't recommend that you use
+the toolkit resources, though, because they're dependent on how exactly
+your particular build of XEmacs was configured.
+
address@hidden @code{scrollBarPlacement} (class @code{ScrollBarPlacement}): 
string
+Where the horizontal and vertical scrollbars should be positioned.  This
+should be one of the four strings @samp{BOTTOM_LEFT},
address@hidden, @samp{TOP_LEFT}, and @samp{TOP_RIGHT}.  Default is
address@hidden for the Motif and Lucid scrollbars and
address@hidden for the Athena scrollbars.
+
address@hidden @code{topToolBarHeight} (class @code{TopToolBarHeight}): integer
address@hidden @code{bottomToolBarHeight} (class @code{BottomToolBarHeight}): 
integer
address@hidden @code{leftToolBarWidth} (class @code{LeftToolBarWidth}): integer
address@hidden @code{rightToolBarWidth} (class @code{RightToolBarWidth}): 
integer
+Height and width of the four possible toolbars.
+
address@hidden @code{topToolBarShadowColor} (class 
@code{TopToolBarShadowColor}): color-name
address@hidden @code{bottomToolBarShadowColor} (class 
@code{BottomToolBarShadowColor}): color-name
+Color of the top and bottom shadows for the toolbars.  NOTE: These resources
+do @emph{not} have anything to do with the top and bottom toolbars (i.e. the
+toolbars at the top and bottom of the frame)!  Rather, they affect the top
+and bottom shadows around the edges of all four kinds of toolbars.
+
address@hidden @code{topToolBarShadowPixmap} (class 
@code{TopToolBarShadowPixmap}): pixmap-name
address@hidden @code{bottomToolBarShadowPixmap} (class 
@code{BottomToolBarShadowPixmap}): pixmap-name
+Pixmap of the top and bottom shadows for the toolbars.  If set, these
+resources override the corresponding color resources. NOTE: These
+resources do @emph{not} have anything to do with the top and bottom
+toolbars (i.e. the toolbars at the top and bottom of the frame)!
+Rather, they affect the top and bottom shadows around the edges of all
+four kinds of toolbars.
+
address@hidden @code{toolBarShadowThickness} (class 
@code{ToolBarShadowThickness}): integer
+Thickness of the shadows around the toolbars, in pixels.
+
address@hidden @code{visualBell} (class @code{VisualBell}): boolean
+Whether XEmacs should flash the screen rather than making an audible beep.
+
address@hidden @code{bellVolume} (class @code{BellVolume}): integer
+Volume of the audible beep.
+
address@hidden @code{useBackingStore} (class @code{UseBackingStore}): boolean
+Whether XEmacs should set the backing-store attribute of the X windows
+it creates.  This increases the memory usage of the X server but decreases
+the amount of X traffic necessary to update the screen, and is useful
+when the connection to the X server goes over a low-bandwidth line
+such as a modem connection.
address@hidden table
+
+Emacs devices accept the following resources:
+
address@hidden @asis
address@hidden @code{textPointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over text.  This resource is used to
+initialize the variable @code{x-pointer-shape}.
+
address@hidden @code{selectionPointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over a selectable text region (an
+extent with the @samp{highlight} property; for example, an Info
+cross-reference).  This resource is used to initialize the variable
address@hidden
+
address@hidden @code{spacePointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over a blank space in a buffer (that
+is, after the end of a line or after the end-of-file).  This resource is
+used to initialize the variable @code{x-nontext-pointer-shape}.
+
address@hidden @code{modeLinePointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over a modeline.  This resource is
+used to initialize the variable @code{x-mode-pointer-shape}.
+
address@hidden @code{gcPointer} (class @code{Cursor}): cursor-name
+The cursor to display when a garbage-collection is in progress.  This
+resource is used to initialize the variable @code{x-gc-pointer-shape}.
+
address@hidden @code{scrollbarPointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over the scrollbar.  This resource
+is used to initialize the variable @code{x-scrollbar-pointer-shape}.
+
address@hidden @code{pointerColor} (class @code{Foreground}): color-name
address@hidden @code{pointerBackground} (class @code{Background}): color-name
+The foreground and background colors of the mouse cursor.  These
+resources are used to initialize the variables
address@hidden and @code{x-pointer-background-color}.
address@hidden table
+
address@hidden Face Resources
address@hidden Face Resources
+
+The attributes of faces are also per-frame. They can be specified as:
+
address@hidden
+Emacs.FACE_NAME.parameter: value
address@hidden example
address@hidden
+
+or
+
address@hidden
+Emacs*FRAME_NAME.FACE_NAME.parameter: value
address@hidden example
address@hidden
+
+Faces accept the following resources:
+
address@hidden @asis
address@hidden @code{attributeFont} (class @code{AttributeFont}): font-name
+The font of this face.
+
address@hidden @code{attributeForeground} (class @code{AttributeForeground}): 
color-name
address@hidden @code{attributeBackground} (class @code{AttributeBackground}): 
color-name
+The foreground and background colors of this face.
+
address@hidden @code{attributeBackgroundPixmap} (class 
@code{AttributeBackgroundPixmap}): file-name
+The name of an @sc{xbm} file (or @sc{xpm} file, if your version of Emacs
+supports @sc{xpm}), to use as a background stipple.
+
address@hidden @code{attributeUnderline} (class @code{AttributeUnderline}): 
boolean
+Whether text in this face should be underlined.
address@hidden table
+
+All text is displayed in some face, defaulting to the face named
address@hidden  To set the font of normal text, use
address@hidden To set it in the frame named
address@hidden, use @code{Emacs*fred.default.attributeFont}.
+
+These are the names of the predefined faces:
+
address@hidden @code
address@hidden default
+Everything inherits from this.
+
address@hidden bold
+If this is not specified in the resource database, Emacs tries to find a
+bold version of the font of the default face.
+
address@hidden italic
+If this is not specified in the resource database, Emacs tries to find
+an italic version of the font of the default face.
+
address@hidden bold-italic
+If this is not specified in the resource database, Emacs tries to find a
+bold-italic version of the font of the default face.
+
address@hidden modeline
+This is the face that the modeline is displayed in.  If not specified in
+the resource database, it is determined from the default face by
+reversing the foreground and background colors.
+
address@hidden highlight
+This is the face that highlighted extents (for example, Info
+cross-references and possible completions, when the mouse passes over
+them) are displayed in.
+
address@hidden left-margin
address@hidden right-margin
+These are the faces that the left and right annotation margins are
+displayed in.
+
address@hidden zmacs-region
+This is the face that mouse selections are displayed in.
+ 
address@hidden isearch
+This is the face that the matched text being searched for is displayed
+in.
+
address@hidden info-node
+This is the face of info menu items.  If unspecified, it is copied from
address@hidden
+
address@hidden info-xref
+This is the face of info cross-references.  If unspecified, it is copied
+from @code{bold}. (Note that, when the mouse passes over a
+cross-reference, the cross-reference's face is determined from a
+combination of the @code{info-xref} and @code{highlight} faces.)
address@hidden table
+
+Other packages might define their own faces; to see a list of all faces,
+use any of the interactive face-manipulation commands such as
address@hidden and type @samp{?} when you are prompted for the
+name of a face.
+
+If the @code{bold}, @code{italic}, and @code{bold-italic} faces are not
+specified in the resource database, then XEmacs attempts to derive them
+from the font of the default face.  It can only succeed at this if you
+have specified the default font using the XLFD (X Logical Font
+Description) format, which looks like
+
address@hidden
+*-courier-medium-r-*-*-*-120-*-*-*-*-*-*
address@hidden example
address@hidden
+
+If you use any of the other, less strict font name formats, some of which
+look like
+
address@hidden
+lucidasanstypewriter-12
+fixed
+9x13
address@hidden example
+
+then XEmacs won't be able to guess the names of the bold and italic
+versions.  All X fonts can be referred to via XLFD-style names, so you
+should use those forms.  See the man pages for @samp{X(1)},
address@hidden(1)}, and @samp{xfontsel(1)}.
+
address@hidden Widgets
address@hidden Widgets
+
+There are several structural widgets between the terminal EmacsFrame
+widget and the top level ApplicationShell; the exact names and types of
+these widgets change from release to release (for example, they changed
+between 19.8 and 19.9, 19.9 and 19.10, and 19.10 and 19.12) and are
+subject to further change in the future, so you should avoid mentioning
+them in your resource database.  The above-mentioned syntaxes should be
+forward- compatible.  As of 19.13, the exact widget hierarchy is as
+follows:
+
address@hidden
+INVOCATION-NAME            "shell"       "container"     FRAME-NAME
+x-emacs-application-class  "EmacsShell"  "EmacsManager"  "EmacsFrame"
address@hidden example
+
+where INVOCATION-NAME is the terminal component of the name of the
+XEmacs executable (usually @samp{xemacs}), and
address@hidden is generally @samp{Emacs}.
+
address@hidden Menubar Resources
address@hidden Menubar Resources
+
+As the menubar is implemented as a widget which is not a part of XEmacs
+proper, it does not use the face mechanism for specifying fonts and
+colors: It uses whatever resources are appropriate to the type of widget
+which is used to implement it.
+
+If Emacs was compiled to use only the Lucid Motif-lookalike menu widgets,
+then one way to specify the font of the menubar would be
+
address@hidden
+Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
address@hidden example
+
+If both the Lucid Motif-lookalike menu widgets and X Font Sets are 
+configured to allow multilingual menubars, then one uses
+
address@hidden
+*menubar*FontSet:       -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \
+                        -*-*-*-*-*-*-*-120-*-jisx0208.1983-0
address@hidden example
+
+That would specify fonts for a Japanese menubar.  Specifying only one
+XLFD is acceptable; specifying more than one for a given registry
+(language) is also allowed.  When X Font Sets are configured, some .font
+resources (eg, menubars) are ignored in favor of the corresponding
+.fontSet resources.
+
+If the Motif library is being used, then one would have to use 
+
address@hidden
+Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
address@hidden example
+
+because the Motif library uses the @code{fontList} resource name instead
+of @code{font}, which has subtly different semantics.
+
+The same is true of the scrollbars: They accept whichever resources are 
+appropriate for the toolkit in use.
+
+
address@hidden Quitting, Lossage, Customization, Top
address@hidden Quitting and Aborting
address@hidden quitting
+
address@hidden @kbd
address@hidden C-g
+Quit.  Cancel running or partially typed command.
address@hidden C-]
+Abort innermost recursive editing level and cancel the command which
+invoked it (@code{abort-recursive-edit}).
address@hidden M-x top-level
+Abort all recursive editing levels that are currently executing.
address@hidden C-x u
+Cancel an already-executed command, usually (@code{undo}).
address@hidden table
+
+  There are two ways of cancelling commands which are not finished
+executing: @dfn{quitting} with @kbd{C-g}, and @dfn{aborting} with @kbd{C-]}
+or @kbd{M-x top-level}.  Quitting is cancelling a partially typed command
+or one which is already running.  Aborting is getting out of a recursive
+editing level and cancelling the command that invoked the recursive edit.
+
address@hidden quitting
address@hidden C-g
+  Quitting with @kbd{C-g} is used for getting rid of a partially typed
+command or a numeric argument that you don't want.  It also stops a
+running command in the middle in a relatively safe way, so you can use
+it if you accidentally start executing a command that takes a long
+time.  In particular, it is safe to quit out of killing; either your
+text will @var{all} still be there, or it will @var{all} be in the kill
+ring (or maybe both).  Quitting an incremental search does special
+things documented under searching; in general, it may take two
+successive @kbd{C-g} characters to get out of a search.  @kbd{C-g} works
+by setting the variable @code{quit-flag} to @code{t} the instant
address@hidden is typed; Emacs Lisp checks this variable frequently and quits
+if it is address@hidden  @kbd{C-g} is only actually executed as a
+command if it is typed while Emacs is waiting for input.
+
+If you quit twice in a row before the first @kbd{C-g} is recognized, you
+activate the ``emergency escape'' feature and return to the shell.
address@hidden Escape}.
+
address@hidden recursive editing level
address@hidden editing level, recursive
address@hidden aborting
address@hidden abort-recursive-edit
address@hidden C-]
+  You can use @kbd{C-]} (@code{abort-recursive-edit}) to get out
+of a recursive editing level and cancel the command which invoked it.
+Quitting with @kbd{C-g} does not do this, and could not do this because it
+is used to cancel a partially typed command @i{within} the recursive
+editing level.  Both operations are useful.  For example, if you are in the
+Emacs debugger (@pxref{Lisp Debug}) and have typed @kbd{C-u 8} to enter a
+numeric argument, you can cancel that argument with @kbd{C-g} and remain in
+the debugger.
+
address@hidden top-level
+  The command @kbd{M-x top-level} is equivalent to ``enough'' @kbd{C-]}
+commands to get you out of all the levels of recursive edits that you are
+in.  @kbd{C-]} only gets you out one level at a time, but @kbd{M-x top-level}
+goes out all levels at once.  Both @kbd{C-]} and @kbd{M-x top-level} are
+like all other commands and unlike @kbd{C-g} in that they are effective
+only when Emacs is ready for a command.  @kbd{C-]} is an ordinary key and
+has its meaning only because of its binding in the keymap.
address@hidden Edit}.
+
+  @kbd{C-x u} (@code{undo}) is not strictly speaking a way of cancelling a
+command, but you can think of it as cancelling a command already finished
+executing.  @xref{Undo}.
+
address@hidden Lossage, Bugs, Quitting, Top
address@hidden Dealing With Emacs Trouble
+
+  This section describes various conditions in which Emacs fails to work,
+and how to recognize them and correct them.
+
address@hidden
+* Stuck Recursive::    `[...]' in mode line around the parentheses.
+* Screen Garbled::     Garbage on the screen.
+* Text Garbled::       Garbage in the text.
+* Unasked-for Search:: Spontaneous entry to incremental search.
+* Emergency Escape::   Emergency escape---
+                        What to do if Emacs stops responding.
+* Total Frustration::  When you are at your wits' end.
address@hidden menu
+
address@hidden Stuck Recursive, Screen Garbled, Lossage, Lossage
address@hidden Recursive Editing Levels
+
+  Recursive editing levels are important and useful features of Emacs, but
+they can seem like malfunctions to the user who does not understand them.
+
+  If the mode line has square brackets @address@hidden around the parentheses
+that contain the names of the major and minor modes, you have entered a
+recursive editing level.  If you did not do this on purpose, or if you
+don't understand what that means, you should just get out of the recursive
+editing level.  To do so, type @kbd{M-x top-level}.  This is called getting
+back to top level.  @xref{Recursive Edit}.
+
address@hidden Screen Garbled, Text Garbled, Stuck Recursive, Lossage
address@hidden Garbage on the Screen
+
+  If the data on the screen looks wrong, the first thing to do is see
+whether the text is actually wrong.  Type @kbd{C-l}, to redisplay the
+entire screen.  If the text appears correct after this, the problem was
+entirely in the previous screen update.
+
+  Display updating problems often result from an incorrect termcap entry
+for the terminal you are using.  The file @file{etc/TERMS} in the Emacs
+distribution gives the fixes for known problems of this sort.
address@hidden contains general advice for these problems in one of its
+sections.  Very likely there is simply insufficient padding for certain
+display operations.  To investigate the possibility that you have this
+sort of problem, try Emacs on another terminal made by a different
+manufacturer.  If problems happen frequently on one kind of terminal but
+not another kind, the real problem is likely to be a bad termcap entry,
+though it could also be due to a bug in Emacs that appears for terminals
+that have or lack specific features.
+
address@hidden Text Garbled, Unasked-for Search, Screen Garbled, Lossage
address@hidden Garbage in the Text
+
+  If @kbd{C-l} shows that the text is wrong, try undoing the changes to it
+using @kbd{C-x u} until it gets back to a state you consider correct.  Also
+try @kbd{C-h l} to find out what command you typed to produce the observed
+results.
+
+  If a large portion of text appears to be missing at the beginning or
+end of the buffer, check for the word @samp{Narrow} in the mode line.
+If it appears, the text is still present, but marked off-limits.
+To make it visible again, type @kbd{C-x n w}.  @xref{Narrowing}.
+
address@hidden Unasked-for Search, Emergency Escape, Text Garbled, Lossage
address@hidden Spontaneous Entry to Incremental Search
+
+  If Emacs spontaneously displays @samp{I-search:} at the bottom of the
+screen, it means that the terminal is sending @kbd{C-s} and @kbd{C-q}
+according to the poorly designed xon/xoff ``flow control'' protocol.  You
+should try to prevent this by putting the terminal in a mode where it will
+not use flow control, or by giving it enough padding that it will never send a
address@hidden  If that cannot be done, you must tell Emacs to expect flow
+control to be used, until you can get a properly designed terminal.
+
+  Information on how to do these things can be found in the file
address@hidden in the Emacs distribution.
+
address@hidden Emergency Escape, Total Frustration, Unasked-for Search, Lossage
address@hidden Emergency Escape
+
+  Because at times there have been bugs causing Emacs to loop without
+checking @code{quit-flag}, a special feature causes Emacs to be suspended
+immediately if you type a second @kbd{C-g} while the flag is already set,
+so you can always get out of XEmacs.  Normally Emacs recognizes and
+clears @code{quit-flag} (and quits!) quickly enough to prevent this from
+happening.
+
+  When you resume Emacs after a suspension caused by multiple @kbd{C-g}, it
+asks two questions before going back to what it had been doing:
+
address@hidden
+Auto-save? (y or n)
+Abort (and dump core)? (y or n)
address@hidden example
+
address@hidden
+Answer each one with @kbd{y} or @kbd{n} followed by @key{RET}.
+
+  Saying @kbd{y} to @samp{Auto-save?} causes immediate auto-saving of all
+modified buffers in which auto-saving is enabled.
+
+  Saying @kbd{y} to @samp{Abort (and dump core)?} causes an illegal
+instruction to be executed, dumping core.  This is to enable a wizard to
+figure out why Emacs was failing to quit in the first place.  Execution
+does not continue after a core dump.  If you answer @kbd{n}, execution
+does continue.  With luck, Emacs will ultimately check
address@hidden and quit normally.  If not, and you type another
address@hidden, it is suspended again.
+
+  If Emacs is not really hung, but is just being slow, you may invoke
+the double @kbd{C-g} feature without really meaning to.  In that case,
+simply resume and answer @kbd{n} to both questions, and you will arrive
+at your former state.  Presumably the quit you requested will happen
+soon.
+
+  The address@hidden feature may be turned off when Emacs is running under
+a window system, since the window system always enables you to kill Emacs
+or to create another window and run another program.
+
address@hidden Total Frustration,, Emergency Escape, Lossage
address@hidden Help for Total Frustration
address@hidden Eliza
address@hidden doctor
+
+  If using Emacs (or something else) becomes terribly frustrating and none
+of the techniques described above solve the problem, Emacs can still help
+you.
+
+  First, if the Emacs you are using is not responding to commands, type
address@hidden C-g} to get out of it and then start a new one.
+
address@hidden doctor
+  Second, type @kbd{M-x doctor @key{RET}}.
+
+  The doctor will make you feel better.  Each time you say something to
+the doctor, you must end it by typing @key{RET} @key{RET}.  This lets the
+doctor know you are finished.
+
address@hidden Bugs,, Lossage, Top
address@hidden Reporting Bugs
+
address@hidden bugs
+  Sometimes you will encounter a bug in Emacs.  Although we cannot promise
+we can or will fix the bug, and we might not even agree that it is a bug,
+we want to hear about bugs you encounter in case we do want to fix them.
+
+  To make it possible for us to fix a bug, you must report it.  In order
+to do so effectively, you must know when and how to do it.
+
address@hidden When Is There a Bug
+
+  If Emacs executes an illegal instruction, or dies with an operating
+system error message that indicates a problem in the program (as opposed to
+something like ``disk full''), then it is certainly a bug.
+
+  If Emacs updates the display in a way that does not correspond to what is
+in the buffer, then it is certainly a bug.  If a command seems to do the
+wrong thing but the problem corrects itself if you type @kbd{C-l}, it is a
+case of incorrect display updating.
+
+  Taking forever to complete a command can be a bug, but you must make
+certain that it was really Emacs's fault.  Some commands simply take a long
+time.  Type @kbd{C-g} and then @kbd{C-h l} to see whether the input Emacs
+received was what you intended to type; if the input was such that you
address@hidden it should have been processed quickly, report a bug.  If you
+don't know whether the command should take a long time, find out by looking
+in the manual or by asking for assistance.
+
+  If a command you are familiar with causes an Emacs error message in a
+case where its usual definition ought to be reasonable, it is probably a
+bug.
+
+  If a command does the wrong thing, that is a bug.  But be sure you know
+for certain what it ought to have done.  If you aren't familiar with the
+command, or don't know for certain how the command is supposed to work,
+then it might actually be working right.  Rather than jumping to
+conclusions, show the problem to someone who knows for certain.
+
+  Finally, a command's intended definition may not be best for editing
+with.  This is a very important sort of problem, but it is also a matter of
+judgment.  Also, it is easy to come to such a conclusion out of ignorance
+of some of the existing features.  It is probably best not to complain
+about such a problem until you have checked the documentation in the usual
+ways, feel confident that you understand it, and know for certain that what
+you want is not available.  If you are not sure what the command is
+supposed to do after a careful reading of the manual, check the index and
+glossary for any terms that may be unclear.  If you still do not
+understand, this indicates a bug in the manual.  The manual's job is to
+make everything clear.  It is just as important to report documentation
+bugs as program bugs.
+
+  If the online documentation string of a function or variable disagrees
+with the manual, one of them must be wrong, so report the bug.
+
address@hidden How to Report a Bug
+
address@hidden emacs-version
+  When you decide that there is a bug, it is important to report it and to
+report it in a way which is useful.  What is most useful is an exact
+description of what commands you type, starting with the shell command to
+run Emacs, until the problem happens.  Always include the version number
+of Emacs that you are using; type @kbd{M-x emacs-version} to print this.
+
+  The most important principle in reporting a bug is to report @var{facts},
+not hypotheses or categorizations.  It is always easier to report the facts,
+but people seem to prefer to strain to posit explanations and report
+them instead.  If the explanations are based on guesses about how Emacs is
+implemented, they will be useless; we will have to try to figure out what
+the facts must have been to lead to such speculations.  Sometimes this is
+impossible.  But in any case, it is unnecessary work for us.
+
+  For example, suppose that you type @kbd{C-x C-f /glorp/baz.ugh
address@hidden, visiting a file which (you know) happens to be rather large,
+and Emacs prints out @samp{I feel pretty today}.  The best way to report
+the bug is with a sentence like the preceding one, because it gives all the
+facts and nothing but the facts.
+
+  Do not assume that the problem is due to the size of the file and say,
+``When I visit a large file, Emacs prints out @samp{I feel pretty today}.''
+This is what we mean by ``guessing explanations''.  The problem is just as
+likely to be due to the fact that there is a @samp{z} in the file name.  If
+this is so, then when we got your report, we would try out the problem with
+some ``large file'', probably with no @samp{z} in its name, and not find
+anything wrong.  There is no way in the world that we could guess that we
+should try visiting a file with a @samp{z} in its name.
+
+  Alternatively, the problem might be due to the fact that the file starts
+with exactly 25 spaces.  For this reason, you should make sure that you
+inform us of the exact contents of any file that is needed to reproduce the
+bug.  What if the problem only occurs when you have typed the @kbd{C-x a l}
+command previously?  This is why we ask you to give the exact sequence of
+characters you typed since starting to use Emacs.
+
+  You should not even say ``visit a file'' instead of @kbd{C-x C-f} unless
+you @i{know} that it makes no difference which visiting command is used.
+Similarly, rather than saying ``if I have three characters on the line,''
+say ``after I type @address@hidden A B C @key{RET} C-p},'' if that is
+the way you entered the address@hidden
+
+  If you are not in Fundamental mode when the problem occurs, you should
+say what mode you are in.
+
+  If the manifestation of the bug is an Emacs error message, it is
+important to report not just the text of the error message but a backtrace
+showing how the Lisp program in Emacs arrived at the error.  To make the
+backtrace, you must execute the Lisp expression 
address@hidden(setq @w{debug-on-error t})} before the error happens (that is to
+say, you must execute that expression and then make the bug happen).  This
+causes the Lisp debugger to run (@pxref{Lisp Debug}).  The debugger's
+backtrace can be copied as text into the bug report.  This use of the
+debugger is possible only if you know how to make the bug happen again.  Do
+note the error message the first time the bug happens, so if you can't make
+it happen again, you can report at least that.
+
+  Check whether any programs you have loaded into the Lisp world, including
+your init file, set any variables that may affect the functioning of
+Emacs.  @xref{Init File}.  Also, see whether the problem happens in a
+freshly started Emacs without loading your init file (start Emacs with
+the @code{-q} switch to prevent loading the init file).  If the problem
+does @var{not} occur then, it is essential that we know the contents of
+any programs that you must load into the Lisp world in order to cause
+the problem to occur.
+
+  If the problem does depend on an init file or other Lisp programs that
+are not part of the standard Emacs system, then you should make sure it is
+not a bug in those programs by complaining to their maintainers first.
+After they verify that they are using Emacs in a way that is supposed to
+work, they should report the bug.
+
+  If you can tell us a way to cause the problem without visiting any files,
+please do so.  This makes it much easier to debug.  If you do need files,
+make sure you arrange for us to see their exact contents.  For example, it
+can often matter whether there are spaces at the ends of lines, or a
+newline after the last line in the buffer (nothing ought to care whether
+the last line is terminated, but tell that to the bugs).
+
address@hidden open-dribble-file
address@hidden dribble file
+  The easy way to record the input to Emacs precisely is to write a
+dribble file; execute the Lisp expression:
+
address@hidden
+(open-dribble-file "~/dribble")
address@hidden example
+
address@hidden
+using @address@hidden or from the @samp{*scratch*} buffer just after starting
+Emacs.  From then on, all Emacs input will be written in the specified
+dribble file until the Emacs process is killed.
+
address@hidden open-termscript
address@hidden termscript file
+  For possible display bugs, it is important to report the terminal type
+(the value of environment variable @code{TERM}), the complete termcap entry
+for the terminal from @file{/etc/termcap} (since that file is not identical
+on all machines), and the output that Emacs actually sent to the terminal.
+The way to collect this output is to execute the Lisp expression:
+
address@hidden
+(open-termscript "~/termscript")
address@hidden example
+
address@hidden using @address@hidden or from the @samp{*scratch*} buffer
+just after starting Emacs.  From then on, all output from Emacs to the
+terminal will be written in the specified termscript file as well, until
+the Emacs process is killed.  If the problem happens when Emacs starts
+up, put this expression into your init file so that the termscript file
+will be open when Emacs displays the screen for the first time.
address@hidden File}. Be warned: it is often difficult, and sometimes
+impossible, to fix a terminal-dependent bug without access to a terminal
+of the type that stimulates the address@hidden
+
+The newsgroup @samp{comp.emacs.xemacs} may be used for bug reports,
+other discussions and requests for assistance.  
+
+If you don't have access to this newgroup, you can subscribe to the
+mailing list version: the newsgroup is bidirectionally gatewayed into
+the mailing list @samp{xemacs@@xemacs.org}.
+
+To be added or removed from this mailing list, send mail to
address@hidden@@xemacs.org}.  Do not send requests for addition
+to the mailing list itself.
+
+The mailing lists and newsgroups are archived on our anonymous FTP server,
address@hidden, and at various other archive sites around the net. You 
+should also check the @samp{FAQ} in @samp{/pub/xemacs} on our anonymous 
+FTP server. It provides some introductory information and help for initial 
+configuration problems.
+
+
+
address@hidden Glossary, Manifesto, Intro, Top
address@hidden Glossary
+
address@hidden @asis
address@hidden Abbrev
+An abbrev is a text string which expands into a different text string
+when present in the buffer.  For example, you might define a short
+word as an abbrev for a long phrase that you want to insert
+frequently.  @xref{Abbrevs}.
+
address@hidden Aborting
+Aborting means getting out of a recursive edit (q.v.@:).  You can use
+the commands @kbd{C-]} and @kbd{M-x top-level} for this.
address@hidden
+
address@hidden Auto Fill mode
+Auto Fill mode is a minor mode in which text you insert is
+automatically broken into lines of fixed width.  @xref{Filling}.
+
address@hidden Auto Saving
+Auto saving means that Emacs automatically stores the contents of an
+Emacs buffer in a specially-named file so the information will not be
+lost if the buffer is lost due to a system error or user error.
address@hidden Save}.
+
address@hidden Backup File
+A backup file records the contents that a file had before the current
+editing session.  Emacs creates backup files automatically to help you
+track down or cancel changes you later regret.  @xref{Backup}.
+
address@hidden Balance Parentheses
+Emacs can balance parentheses manually or automatically.  Manual
+balancing is done by the commands to move over balanced expressions
+(@pxref{Lists}).  Automatic balancing is done by blinking the
+parenthesis that matches one just inserted (@pxref{Matching,,Matching
+Parens}).
+
address@hidden Bind
+To bind a key is to change its binding (q.v.@:).  @xref{Rebinding}.
+
address@hidden Binding
+A key gets its meaning in Emacs by having a binding which is a
+command (q.v.@:), a Lisp function that is run when the key is typed.
address@hidden,Binding}.  Customization often involves rebinding a
+character to a different command function.  The bindings of all keys
+are recorded in the keymaps (q.v.@:).  @xref{Keymaps}.
+
address@hidden Blank Lines
+Blank lines are lines that contain only whitespace.  Emacs has several
+commands for operating on the blank lines in a buffer.
+
address@hidden Buffer
+The buffer is the basic editing unit; one buffer corresponds to one
+piece of text being edited.  You can have several buffers, but at any
+time you are editing only one, the `selected' buffer, though several
+buffers can be visible when you are using multiple windows.  @xref{Buffers}.
+
address@hidden Buffer Selection History
+Emacs keeps a buffer selection history which records how recently each
+Emacs buffer was selected.  Emacs uses this list when choosing a buffer to
+select.  @xref{Buffers}.
+
address@hidden C-
address@hidden in the name of a character is an abbreviation for Control.
address@hidden,C-}.
+
address@hidden C-M-
address@hidden in the name of a character is an abbreviation for
+Control-Meta.  @xref{Keystrokes,C-M-}.
+
address@hidden Case Conversion
+Case conversion means changing text from upper case to lower case or
+vice versa.  @xref{Case}, for the commands for case conversion.
+
address@hidden Characters
+Characters form the contents of an Emacs buffer; also, Emacs commands
+are invoked by keys (q.v.@:), which are sequences of one or more
+characters.  @xref{Keystrokes}.
+
address@hidden Command
+A command is a Lisp function specially defined to be able to serve as a
+key binding in Emacs.  When you type a key (q.v.@:), Emacs looks up its
+binding (q.v.@:) in the relevant keymaps (q.v.@:) to find the command to
+run.  @xref{Commands}.
+
address@hidden Command Name
+A command name is the name of a Lisp symbol which is a command
+(@pxref{Commands}).  You can invoke any command by its name using
address@hidden (@pxref{M-x}).
+
address@hidden Comments
+A comment is text in a program which is intended only for the people
+reading the program, and is marked specially so that it will be
+ignored when the program is loaded or compiled.  Emacs offers special
+commands for creating, aligning, and killing comments.
address@hidden
+
address@hidden Compilation
+Compilation is the process of creating an executable program from
+source code.  Emacs has commands for compiling files of Emacs Lisp
+code (@pxref{Lisp Libraries}) and programs in C and other languages
+(@pxref{Compilation}).
+
address@hidden Complete Key
+A complete key is a character or sequence of characters which, when typed
+by the user, fully specifies one action to be performed by Emacs.  For
+example, @kbd{X} and @kbd{Control-f} and @kbd{Control-x m} are keys.  Keys
+derive their meanings from being bound (q.v.@:) to commands (q.v.@:).
+Thus, @kbd{X} is conventionally bound to a command to insert @samp{X} in
+the buffer; @kbd{C-x m} is conventionally bound to a command to begin
+composing a mail message. @xref{Keystrokes}.
+
address@hidden Completion
+When Emacs automatically fills an abbreviation for a name into the
+entire name, that process is called completion.  Completion is done for
+minibuffer (q.v.@:) arguments when the set of possible valid inputs is
+known; for example, on command names, buffer names, and file names.
+Completion occurs when you type @key{TAB}, @key{SPC}, or @key{RET}.
address@hidden@refill
+
address@hidden Continuation Line
+When a line of text is longer than the width of the frame, it
+takes up more than one screen line when displayed.  We say that the
+text line is continued, and all screen lines used for it after the
+first are called continuation lines.  @xref{Basic,Continuation,Basic
+Editing}.
+
address@hidden Control-Character
+ASCII characters with octal codes 0 through 037, and also code 0177,
+do not have graphic images assigned to them.  These are the control
+characters.  Any control character can be typed by holding down the
address@hidden key and typing some other character; some have special keys
+on the keyboard.  @key{RET}, @key{TAB}, @key{ESC}, @key{LFD}, and
address@hidden are all control characters.  @address@hidden
+
address@hidden Copyleft
+A copyleft is a notice giving the public legal permission to redistribute
+a program or other work of art.  Copylefts are used by leftists to enrich
+the public just as copyrights are used by rightists to gain power over
+the public.
+
address@hidden Current Buffer
+The current buffer in Emacs is the Emacs buffer on which most editing
+commands operate.  You can select any Emacs buffer as the current one.
address@hidden
+
address@hidden Current Line
+The line point is on (@pxref{Point}).
+
address@hidden Current Paragraph
+The paragraph that point is in.  If point is between paragraphs, the
+current paragraph is the one that follows point.  @xref{Paragraphs}.
+
address@hidden Current Defun
+The defun (q.v.@:) that point is in.  If point is between defuns, the
+current defun is the one that follows point.  @xref{Defuns}.
+
address@hidden Cursor
+The cursor is the rectangle on the screen which indicates the position
+called point (q.v.@:) at which insertion and deletion takes place.
+The cursor is on or under the character that follows point.  Often
+people speak of `the cursor' when, strictly speaking, they mean
+`point'.  @xref{Basic,Cursor,Basic Editing}.
+
address@hidden Customization
+Customization is making minor changes in the way Emacs works.  It is
+often done by setting variables (@pxref{Variables}) or by rebinding
+keys (@pxref{Keymaps}).
+
address@hidden Default Argument
+The default for an argument is the value that is used if you do not
+specify one.  When Emacs prompts you in the minibuffer for an argument,
+the default argument is used if you just type @key{RET}.
address@hidden
+
address@hidden Default Directory
+When you specify a file name that does not start with @samp{/} or @samp{~},
+it is interpreted relative to the current buffer's default directory.
address@hidden File,Default Directory}.
+
address@hidden Defun
+A defun is a list at the top level of parenthesis or bracket structure
+in a program.  It is so named because most such lists in Lisp programs
+are calls to the Lisp function @code{defun}.  @xref{Defuns}.
+
address@hidden @key{DEL}
+The @key{DEL} character runs the command that deletes one character of
+text.  @xref{Basic,DEL,Basic Editing}.
+
address@hidden Deletion
+Deleting text means erasing it without saving it.  Emacs deletes text
+only when it is expected not to be worth saving (all whitespace, or
+only one character).  The alternative is killing (q.v.@:).
address@hidden,Deletion}.
+
address@hidden Deletion of Files
+Deleting a file means removing it from the file system.
address@hidden File Ops}.
+
address@hidden Deletion of Messages
+Deleting a message means flagging it to be eliminated from your mail
+file.  Until the mail file is expunged, you can undo this by undeleting
+the message.
+
address@hidden Deletion of Frames
+When working under the multi-frame X-based version of XEmacs,
+you can delete individual frames using the @b{Close} menu item from the
address@hidden menu.
+
address@hidden Deletion of Windows
+When you delete a subwindow of an Emacs frame, you eliminate it from
+the frame.  Other windows expand to use up the space.  The deleted
+window can never come back, but no actual text is lost.  @xref{Windows}.
+
address@hidden Directory
+Files in the Unix file system are grouped into file directories.
address@hidden,,Directories}.
+
address@hidden Dired
+Dired is the Emacs facility that displays the contents of a file
+directory and allows you to ``edit the directory'', performing
+operations on the files in the directory.  @xref{Dired}.
+
address@hidden Disabled Command
+A disabled command is one that you may not run without special
+confirmation.  Commands are usually disabled because they are
+confusing for beginning users.  @xref{Disabling}.
+
address@hidden Dribble File
+A file into which Emacs writes all the characters that the user types
+on the keyboard.  Dribble files are used to make a record for
+debugging Emacs bugs.  Emacs does not make a dribble file unless you
+tell it to.  @xref{Bugs}.
+
address@hidden Echo Area
+The area at the bottom of the Emacs frame which is used for echoing the
+arguments to commands, for asking questions, and for printing brief
+messages (including error messages).  @xref{Echo Area}.
+
address@hidden Echoing
+Echoing refers to acknowledging the receipt of commands by displaying them
+(in the echo area).  Emacs never echoes single-character keys; longer
+keys echo only if you pause while typing them.
+
address@hidden Error
+An error occurs when an Emacs command cannot execute in the current
+circumstances.  When an error occurs, execution of the command stops
+(unless the command has been programmed to do otherwise) and Emacs
+reports the error by printing an error message (q.v.).  Type-ahead
+is discarded.  Then Emacs is ready to read another editing command.
+
address@hidden Error Messages
+Error messages are single lines of output printed by Emacs when the
+user asks for something impossible to do (such as killing text
+forward when point is at the end of the buffer).  They appear in the
+echo area, accompanied by a beep.
+
address@hidden @key{ESC}
address@hidden is a character used as a prefix for typing Meta characters on
+keyboards lacking a @key{META} key.  Unlike the @key{META} key (which,
+like the @key{SHIFT} key, is held down while another character is
+typed), the @key{ESC} key is pressed and released, and applies to the
+next character typed.
+
address@hidden Fill Prefix
+The fill prefix is a string that Emacs enters at the beginning
+of each line when it performs filling.  It is not regarded as part of the
+text to be filled.  @xref{Filling}.
+
address@hidden Filling
+Filling text means moving text from line to line so that all the lines
+are approximately the same length.  @xref{Filling}.
+
address@hidden Frame
+When running Emacs on a TTY terminal, ``frame'' means the terminal's
+screen.  When running Emacs under X, you can have multiple frames,
+each corresponding to a top-level X window and each looking like
+the screen on a TTY.  Each frame contains one or more non-overlapping
+Emacs windows (possibly with associated scrollbars, under X), an
+echo area, and (under X) possibly a menubar, toolbar, and/or gutter.
+
address@hidden Global
+Global means `independent of the current environment; in effect
address@hidden Emacs'.  It is the opposite of local (q.v.@:).
+Examples of the use of `global' appear below.
+
address@hidden Global Abbrev
+A global definition of an abbrev (q.v.@:) is effective in all major
+modes that do not have local (q.v.@:) definitions for the same abbrev.
address@hidden
+
address@hidden Global Keymap
+The global keymap (q.v.@:) contains key bindings that are in effect
+unless local key bindings in a major mode's local
+keymap (q.v.@:) override address@hidden
+
address@hidden Global Substitution
+Global substitution means replacing each occurrence of one string by
+another string through a large amount of text.  @xref{Replace}.
+
address@hidden Global Variable
+The global value of a variable (q.v.@:) takes effect in all buffers
+that do not have their own local (q.v.@:) values for the variable.
address@hidden
+
address@hidden Graphic Character
+Graphic characters are those assigned pictorial images rather than
+just names.  All the non-Meta (q.v.@:) characters except for the
+Control (q.v.@:) character are graphic characters.  These include
+letters, digits, punctuation, and spaces; they do not include
address@hidden or @key{ESC}.  In Emacs, typing a graphic character inserts
+that character (in ordinary editing modes).  @xref{Basic,,Basic Editing}.
+
address@hidden Grinding
+Grinding means adjusting the indentation in a program to fit the
+nesting structure.  @xref{Indentation,Grinding}.
+
address@hidden Hardcopy
+Hardcopy means printed output.  Emacs has commands for making printed
+listings of text in Emacs buffers.  @xref{Hardcopy}.
+
address@hidden @key{HELP}
+You can type @key{HELP} at any time to ask what options you have, or
+to ask what any command does.  @key{HELP} is really @kbd{Control-h}.
address@hidden
+
address@hidden Inbox
+An inbox is a file in which mail is delivered by the operating system.
+Some mail handlers transfers mail from inboxes to mail files (q.v.) in
+which the mail is then stored permanently or until explicitly deleted.
+
address@hidden Indentation
+Indentation means blank space at the beginning of a line.  Most
+programming languages have conventions for using indentation to
+illuminate the structure of the program, and Emacs has special
+features to help you set up the correct indentation.
address@hidden
+
address@hidden Insertion
+Insertion means copying text into the buffer, either from the keyboard
+or from some other place in Emacs.
+
address@hidden Justification
+Justification means adding extra spaces to lines of text to make them
+come exactly to a specified width.  @xref{Filling,Justification}.
+
address@hidden Keyboard Macros
+Keyboard macros are a way of defining new Emacs commands from
+sequences of existing ones, with no need to write a Lisp program.
address@hidden Macros}.
+
address@hidden Key
+A key is a sequence of characters that, when input to Emacs, specify
+or begin to specify a single action for Emacs to perform.  That is,
+the sequence is considered a single unit.  If the key is enough to
+specify one action, it is a complete key (q.v.); if it is less than
+enough, it is a prefix key (q.v.).  @xref{Keystrokes}.
+
address@hidden Keymap
+The keymap is the data structure that records the bindings (q.v.@:) of
+keys to the commands that they run.  For example, the keymap binds the
+character @kbd{C-n} to the command function @code{next-line}.
address@hidden
+
address@hidden Kill Ring
+The kill ring is the place where all text you have killed recently is saved.
+You can re-insert any of the killed text still in the ring; this is
+called yanking (q.v.@:).  @xref{Yanking}.
+
address@hidden Killing
+Killing means erasing text and saving it on the kill ring so it can be
+yanked (q.v.@:) later.  Some other systems call this ``cutting.''
+Most Emacs commands to erase text do killing, as opposed to deletion
+(q.v.@:).  @xref{Killing}.
+
address@hidden Killing Jobs
+Killing a job (such as, an invocation of Emacs) means making it cease
+to exist.  Any data within it, if not saved in a file, is lost.
address@hidden
+
address@hidden List
+A list is, approximately, a text string beginning with an open
+parenthesis and ending with the matching close parenthesis.  In C mode
+and other non-Lisp modes, groupings surrounded by other kinds of matched
+delimiters appropriate to the language, such as braces, are also
+considered lists.  Emacs has special commands for many operations on
+lists.  @xref{Lists}.
+
address@hidden Local
+Local means `in effect only in a particular context'; the relevant
+kind of context is a particular function execution, a particular
+buffer, or a particular major mode.  Local is the opposite of `global'
+(q.v.@:).  Specific uses of `local' in Emacs terminology appear below.
+
address@hidden Local Abbrev
+A local abbrev definition is effective only if a particular major mode
+is selected.  In that major mode, it overrides any global definition
+for the same abbrev.  @xref{Abbrevs}.
+
address@hidden Local Keymap
+A local keymap is used in a particular major mode; the key bindings
+(q.v.@:) in the current local keymap override global bindings of the
+same keys.  @xref{Keymaps}.
+
address@hidden Local Variable
+A local value of a variable (q.v.@:) applies to only one buffer.
address@hidden
+
address@hidden M-
address@hidden in the name of a character is an abbreviation for @key{META},
+one of the modifier keys that can accompany any character.
address@hidden
+
address@hidden M-C-
address@hidden in the name of a character is an abbreviation for
+Control-Meta; it means the same thing as @samp{C-M-}.  If your
+terminal lacks a real @key{META} key, you type a Control-Meta character by
+typing @key{ESC} and then typing the corresponding Control character.
address@hidden,C-M-}.
+
address@hidden M-x
address@hidden is the key which is used to call an Emacs command by name.
+You use it to call commands that are not bound to keys.
address@hidden
+
address@hidden Mail
+Mail means messages sent from one user to another through the computer
+system, to be read at the recipient's convenience.  Emacs has commands for
+composing and sending mail, and for reading and editing the mail you have
+received.  @xref{Sending Mail}.
+
address@hidden Major Mode
+The major modes are a mutually exclusive set of options each of which
+configures Emacs for editing a certain sort of text.  Ideally, each
+programming language has its own major mode.  @xref{Major Modes}.
+
address@hidden Mark
+The mark points to a position in the text.  It specifies one end of the
+region (q.v.@:), point being the other end.  Many commands operate on
+the whole region, that is, all the text from point to the mark.
address@hidden
+
address@hidden Mark Ring
+The mark ring is used to hold several recent previous locations of the
+mark, just in case you want to move back to them.  @xref{Mark Ring}.
+
address@hidden Message
+See `mail'.
+
address@hidden Meta
+Meta is the name of a modifier bit which a command character may have.
+It is present in a character if the character is typed with the
address@hidden key held down.  Such characters are given names that start
+with @kbd{Meta-}.  For example, @kbd{Meta-<} is typed by holding down
address@hidden and at the same time typing @kbd{<} (which itself is done,
+on most terminals, by holding down @key{SHIFT} and typing @kbd{,}).
address@hidden,Meta}.
+
address@hidden Meta Character
+A Meta character is one whose character code includes the Meta bit.
+
address@hidden Minibuffer
+The minibuffer is the window that Emacs displays inside the
+echo area (q.v.@:) when it prompts you for arguments to commands.
address@hidden
+
address@hidden Minor Mode
+A minor mode is an optional feature of Emacs which can be switched on
+or off independent of the major mode.  Each minor mode has a
+command to turn it on or off.  @xref{Minor Modes}.
+
address@hidden Mode Line
+The mode line is the line at the bottom of each text window (q.v.@:),
+which gives status information on the buffer displayed in that window.
address@hidden Line}.
+
address@hidden Modified Buffer
+A buffer (q.v.@:) is modified if its text has been changed since the
+last time the buffer was saved (or since it was created, if it
+has never been saved).  @xref{Saving}.
+
address@hidden Moving Text
+Moving text means erasing it from one place and inserting it in
+another.  This is done by killing (q.v.@:) and then yanking (q.v.@:).
address@hidden
+
address@hidden Named Mark
+A named mark is a register (q.v.@:) in its role of recording a
+location in text so that you can move point to that location.
address@hidden
+
address@hidden Narrowing
+Narrowing means creating a restriction (q.v.@:) that limits editing in
+the current buffer to only a part of the text in the buffer.  Text
+outside that part is inaccessible to the user until the boundaries are
+widened again, but it is still there, and saving the file saves the
+invisible text.  @xref{Narrowing}.
+
address@hidden Newline
address@hidden characters in the buffer terminate lines of text and are
+called newlines.  @xref{Keystrokes,Newline}.
+
address@hidden Numeric Argument
+A numeric argument is a number, specified before a command, to change
+the effect of the command.  Often the numeric argument serves as a
+repeat count.  @xref{Arguments}.
+
address@hidden Option
+An option is a variable (q.v.@:) that allows you to customize
+Emacs by giving it a new value.  @xref{Variables}.
+
address@hidden Overwrite Mode
+Overwrite mode is a minor mode.  When it is enabled, ordinary text
+characters replace the existing text after point rather than pushing
+it to the right.  @xref{Minor Modes}.
+
address@hidden Page
+A page is a unit of text, delimited by formfeed characters (ASCII
+Control-L, code 014) coming at the beginning of a line.  Some Emacs
+commands are provided for moving over and operating on pages.
address@hidden
+
address@hidden Paragraphs
+Paragraphs are the medium-size unit of English text.  There are
+special Emacs commands for moving over and operating on paragraphs.
address@hidden
+
address@hidden Parsing
+We say that Emacs parses words or expressions in the text being
+edited.  Really, all it knows how to do is find the other end of a
+word or expression.  @xref{Syntax}.
+
address@hidden Point
+Point is the place in the buffer at which insertion and deletion
+occur.  Point is considered to be between two characters, not at one
+character.  The terminal's cursor (q.v.@:) indicates the location of
+point.  @xref{Basic,Point}.
+
address@hidden Prefix Key
+A prefix key is a key (q.v.@:) whose sole function is to introduce a
+set of multi-character keys.  @kbd{Control-x} is an example of a prefix
+key; any two-character sequence starting with @kbd{C-x} is also
+a legitimate key.  @xref{Keystrokes}.
+
address@hidden Prompt
+A prompt is text printed to ask the user for input.  Printing a prompt
+is called prompting.  Emacs prompts always appear in the echo area
+(q.v.@:).  One kind of prompting happens when the minibuffer is used
+to read an argument (@pxref{Minibuffer}); the echoing which happens
+when you pause in the middle of typing a multi-character key is also a
+kind of prompting (@pxref{Echo Area}).
+
address@hidden Quitting
+Quitting means cancelling a partially typed command or a running
+command, using @kbd{C-g}.  @xref{Quitting}.
+
address@hidden Quoting
+Quoting means depriving a character of its usual special significance.
+In Emacs this is usually done with @kbd{Control-q}.  What constitutes special
+significance depends on the context and on convention.  For example,
+an ``ordinary'' character as an Emacs command inserts itself; so in
+this context, a special character is any character that does not
+normally insert itself (such as @key{DEL}, for example), and quoting
+it makes it insert itself as if it were not special.  Not all contexts
+allow quoting.  @xref{Basic,Quoting,Basic Editing}.
+
address@hidden Read-only Buffer
+A read-only buffer is one whose text you are not allowed to change.
+Normally Emacs makes buffers read-only when they contain text which
+has a special significance to Emacs, such as Dired buffers.
+Visiting a file that is write-protected also makes a read-only buffer.
address@hidden
+
address@hidden Recursive Editing Level
+A recursive editing level is a state in which part of the execution of
+a command involves asking the user to edit some text.  This text may
+or may not be the same as the text to which the command was applied.
+The mode line indicates recursive editing levels with square brackets
+(@samp{[} and @samp{]}).  @xref{Recursive Edit}.
+
address@hidden Redisplay
+Redisplay is the process of correcting the image on the screen to
+correspond to changes that have been made in the text being edited.
address@hidden,Redisplay}.
+
address@hidden Regexp
+See `regular expression'.
+
address@hidden Region
+The region is the text between point (q.v.@:) and the mark (q.v.@:).
+Many commands operate on the text of the region.  @xref{Mark,Region}.
+
address@hidden Registers
+Registers are named slots in which text or buffer positions or
+rectangles can be saved for later use.  @xref{Registers}.
+
address@hidden Regular Expression
+A regular expression is a pattern that can match various text strings;
+for example, @samp{l[0-9]+} matches @samp{l} followed by one or more
+digits.  @xref{Regexps}.
+
address@hidden Replacement
+See `global substitution'.
+
address@hidden Restriction
+A buffer's restriction is the amount of text, at the beginning or the
+end of the buffer, that is temporarily invisible and inaccessible.
+Giving a buffer a nonzero amount of restriction is called narrowing
+(q.v.).  @xref{Narrowing}.
+
address@hidden @key{RET}
address@hidden is the character than runs the command to insert a
+newline into the text.  It is also used to terminate most arguments
+read in the minibuffer (q.v.@:).  @xref{Keystrokes,Return}.
+
address@hidden Saving
+Saving a buffer means copying its text into the file that was visited
+(q.v.@:) in that buffer.  To actually change a file you have edited in
+Emacs, you have to save it.  @xref{Saving}.
+
address@hidden Scrolling
+Scrolling means shifting the text in the Emacs window to make a
+different part of the buffer visible.  @xref{Display,Scrolling}.
+
address@hidden Searching
+Searching means moving point to the next occurrence of a specified
+string.  @xref{Search}.
+
address@hidden Selecting
+Selecting a buffer means making it the current (q.v.@:) buffer.
address@hidden,Selecting}.
+
address@hidden Self-documentation
+Self-documentation is the feature of Emacs which can tell you what any
+command does, or can give you a list of all commands related to a topic
+you specify.  You ask for self-documentation with the help character,
address@hidden  @xref{Help}.
+
address@hidden Sentences
+Emacs has commands for moving by or killing by sentences.
address@hidden
+
address@hidden Sexp
+An sexp (short for `s-expression,' itself short for `symbolic
+expression') is the basic syntactic unit of Lisp
+in its textual form: either a list, or Lisp atom.  Many Emacs commands
+operate on sexps.  The term `sexp' is generalized to languages other
+than Lisp to mean a syntactically recognizable expression.
address@hidden,Sexps}.
+
address@hidden Simultaneous Editing
+Simultaneous editing means two users modifying the same file at once.
+If simultaneous editing is not detected, you may lose your
+work.  Emacs detects all cases of simultaneous editing and warns the
+user to investigate them.  @xref{Interlocking,,Simultaneous Editing}.
+
address@hidden String
+A string is a kind of Lisp data object which contains a sequence of
+characters.  Many Emacs variables are intended to have strings as
+values.  The Lisp syntax for a string consists of the characters in
+the string with a @samp{"} before and another @samp{"} after. Write a
address@hidden"} that is part of the string as @samp{\"} and a
address@hidden that is part of the string as @samp{\\}.  You can include all
+other characters, including newline, just by writing
+them inside the string. You can also include escape sequences as in C, such as
address@hidden for newline or @samp{\241} using an octal character code.
+
address@hidden String Substitution
+See `global substitution'.
+
address@hidden Syntax Table
+The syntax table tells Emacs which characters are part of a word,
+which characters balance each other like parentheses, etc.
address@hidden
+
address@hidden Tag Table
+A tag table is a file that serves as an index to the function
+definitions in one or more other files.  @xref{Tags}.
+
address@hidden Termscript File
+A termscript file contains a record of all characters Emacs sent to
+the terminal.  It is used for tracking down bugs in Emacs redisplay.
+Emacs does not make a termscript file unless explicitly instructed to do
+so.
address@hidden
+
address@hidden Text
+Text has two meanings (@pxref{Text}):
+
address@hidden @bullet
address@hidden
+Data consisting of a sequence of characters, as opposed to binary
+numbers, images, graphics commands, executable programs, and the like.
+The contents of an Emacs buffer are always text in this sense.
address@hidden
+Data consisting of written human language, as opposed to programs,
+or something that follows the stylistic conventions of human language.
address@hidden itemize
+
address@hidden Top Level
+Top level is the normal state of Emacs, in which you are editing the
+text of the file you have visited.  You are at top level whenever you
+are not in a recursive editing level (q.v.@:) or the minibuffer
+(q.v.@:), and not in the middle of a command.  You can get back to top
+level by aborting (q.v.@:) and quitting (q.v.@:).  @xref{Quitting}.
+
address@hidden Transposition
+Transposing two units of text means putting each one into the place
+formerly occupied by the other.  There are Emacs commands to transpose
+two adjacent characters, words, sexps (q.v.@:), or lines
+(@pxref{Transpose}).
+
address@hidden Truncation
+Truncating text lines in the display means leaving out any text on a
+line that does not fit within the right margin of the window
+displaying it.  See also `continuation line'.
address@hidden,Truncation,Basic Editing}.
+
address@hidden Undoing
+Undoing means making your previous editing go in reverse, bringing
+back the text that existed earlier in the editing session.
address@hidden
+
address@hidden Variable
+A variable is Lisp object that can store an arbitrary value.  Emacs uses
+some variables for internal purposes, and has others (known as `options'
+(q.v.@:)) you can set to control the behavior of Emacs.  The variables
+used in Emacs that you are likely to be interested in are listed in the
+Variables Index of this manual.  @xref{Variables}, for information on
+variables.
+
address@hidden Visiting
+Visiting a file means loading its contents into a buffer (q.v.@:)
+where they can be edited.  @xref{Visiting}.
+
address@hidden Whitespace
+Whitespace is any run of consecutive formatting characters (spaces,
+tabs, newlines, and backspaces).
+
address@hidden Widening
+Widening is removing any restriction (q.v.@:) on the current buffer;
+it is the opposite of narrowing (q.v.@:).  @xref{Narrowing}.
+
address@hidden Window
+Emacs divides the frame into one or more windows, each of which can
+display the contents of one buffer (q.v.@:) at any time.
address@hidden, for basic information on how Emacs uses the frame.
address@hidden, for commands to control the use of windows. Note that if
+you are running Emacs under X, terminology can be confusing: Each Emacs
+frame occupies a separate X window and can, in turn, be divided into
+different subwindows.
+
address@hidden Word Abbrev
+Synonymous with `abbrev'.
+
address@hidden Word Search
+Word search is searching for a sequence of words, considering the
+punctuation between them as insignificant.  @xref{Word Search}.
+
address@hidden Yanking
+Yanking means reinserting text previously killed.  It can be used to
+undo a mistaken kill, or for copying or moving text.  Some other
+systems call this ``pasting''.  @xref{Yanking}.
address@hidden table
+
address@hidden Manifesto, Key Index, Glossary, Top
address@hidden The GNU Manifesto
+
address@hidden What's GNU?  GNU's Not Unix!
+
+GNU, which stands for GNU's Not Unix, is the name for the complete
+Unix-compatible software system which I am writing so that I can give it
+away free to everyone who can use it.  Several other volunteers are helping
+me.  Contributions of time, money, programs, and equipment are greatly
+needed.
+
+So far we have an Emacs text editor with Lisp for writing editor commands,
+a source level debugger, a yacc-compatible parser generator, a linker, and
+around 35 utilities.  A shell (command interpreter) is nearly completed.  A
+new portable optimizing C compiler has compiled itself and may be released
+this year.  An initial kernel exists, but many more features are needed to
+emulate Unix.  When the kernel and compiler are finished, it will be
+possible to distribute a GNU system suitable for program development.  We
+will use @TeX{} as our text formatter, but an nroff is being worked on.  We
+will use the free, portable X window system as well.  After this we will
+add a portable Common Lisp, an Empire game, a spreadsheet, and hundreds of
+other things, plus online documentation.  We hope to supply, eventually,
+everything useful that normally comes with a Unix system, and more.
+
+GNU will be able to run Unix programs, but will not be identical to Unix.
+We will make all improvements that are convenient, based on our experience
+with other operating systems.  In particular, we plan to have longer
+filenames, file version numbers, a crashproof file system, filename
+completion perhaps, terminal-independent display support, and perhaps
+eventually a Lisp-based window system through which several Lisp programs
+and ordinary Unix programs can share a screen.  Both C and Lisp will be
+available as system programming languages.  We will try to support UUCP,
+MIT Chaosnet, and Internet protocols for communication.
+
+GNU is aimed initially at machines in the 68000/16000 class with virtual
+memory, because they are the easiest machines to make it run on.  The extra
+effort to make it run on smaller machines will be left to someone who wants
+to use it on them.
+
+To avoid horrible confusion, please pronounce the `G' in the word `GNU'
+when it is the name of this project.
+
address@hidden
address@hidden Why I Must Write GNU
+
+I consider that the golden rule requires that if I like a program I must
+share it with other people who like it.  Software sellers want to divide
+the users and conquer them, making each user agree not to share with
+others.  I refuse to break solidarity with other users in this way.  I
+cannot in good conscience sign a nondisclosure agreement or a software
+license agreement.  For years I worked within the Artificial Intelligence
+Lab to resist such tendencies and other inhospitalities, but eventually
+they had gone too far: I could not remain in an institution where such
+things are done for me against my will.
+
+So that I can continue to use computers without dishonor, I have decided to
+put together a sufficient body of free software so that I will be able to
+get along without any software that is not free.  I have resigned from the
+AI lab to deny MIT any legal excuse to prevent me from giving GNU away.
+
address@hidden Why GNU Will Be Compatible With Unix
+
+Unix is not my ideal system, but it is not too bad.  The essential features
+of Unix seem to be good ones, and I think I can fill in what Unix lacks
+without spoiling them.  And a system compatible with Unix would be
+convenient for many other people to adopt.
+
address@hidden How GNU Will Be Available
+
+GNU is not in the public domain.  Everyone will be permitted to modify and
+redistribute GNU, but no distributor will be allowed to restrict its
+further redistribution.  That is to say, proprietary modifications will not
+be allowed.  I want to make sure that all versions of GNU remain free.
+
address@hidden Why Many Other Programmers Want to Help
+
+I have found many other programmers who are excited about GNU and want to
+help.
+
+Many programmers are unhappy about the commercialization of system
+software.  It may enable them to make more money, but it requires them to
+feel in conflict with other programmers in general rather than feel as
+comrades.  The fundamental act of friendship among programmers is the
+sharing of programs; marketing arrangements now typically used essentially
+forbid programmers to treat others as friends.  The purchaser of software
+must choose between friendship and obeying the law.  Naturally, many decide
+that friendship is more important.  But those who believe in law often do
+not feel at ease with either choice.  They become cynical and think that
+programming is just a way of making money.
+
+By working on and using GNU rather than proprietary programs, we can be
+hospitable to everyone and obey the law.  In addition, GNU serves as an
+example to inspire and a banner to rally others to join us in sharing.
+This can give us a feeling of harmony which is impossible if we use
+software that is not free.  For about half the programmers I talk to, this
+is an important happiness that money cannot replace.
+
address@hidden How You Can Contribute
+
+I am asking computer manufacturers for donations of machines and money.
+I'm asking individuals for donations of programs and work.
+
+One consequence you can expect if you donate machines is that GNU will run
+on them at an early date.  The machines should be complete, ready-to-use
+systems, approved for use in a residential area, and not in need of
+sophisticated cooling or power.
+
+I have found very many programmers eager to contribute part-time work for
+GNU.  For most projects, such part-time distributed work would be very hard
+to coordinate; the independently-written parts would not work together.
+But for the particular task of replacing Unix, this problem is absent.  A
+complete Unix system contains hundreds of utility programs, each of which
+is documented separately.  Most interface specifications are fixed by Unix
+compatibility.  If each contributor can write a compatible replacement for
+a single Unix utility, and make it work properly in place of the original
+on a Unix system, then these utilities will work right when put together.
+Even allowing for Murphy to create a few unexpected problems, assembling
+these components will be a feasible task.  (The kernel will require closer
+communication and will be worked on by a small, tight group.)
+
+If I get donations of money, I may be able to hire a few people full or
+part time.  The salary won't be high by programmers' standards, but I'm
+looking for people for whom building community spirit is as important as
+making money.  I view this as a way of enabling dedicated people to devote
+their full energies to working on GNU by sparing them the need to make a
+living in another way.
+
address@hidden Why All Computer Users Will Benefit
+
+Once GNU is written, everyone will be able to obtain good system software
+free, just like air.
+
+This means much more than just saving everyone the price of a Unix license.
+It means that much wasteful duplication of system programming effort will
+be avoided.  This effort can go instead into advancing the state of the
+art.
+
+Complete system sources will be available to everyone.  As a result, a user
+who needs changes in the system will always be free to make them himself,
+or hire any available programmer or company to make them for him.  Users
+will no longer be at the mercy of one programmer or company which owns the
+sources and is in sole position to make changes.
+
+Schools will be able to provide a much more educational environment by
+encouraging all students to study and improve the system code.  Harvard's
+computer lab used to have the policy that no program could be installed on
+the system if its sources were not on public display, and upheld it by
+actually refusing to install certain programs.  I was very much inspired by
+this.
+
+Finally, the overhead of considering who owns the system software and what
+one is or is not entitled to do with it will be lifted.
+
+Arrangements to make people pay for using a program, including licensing of
+copies, always incur a tremendous cost to society through the cumbersome
+mechanisms necessary to figure out how much (that is, which programs) a
+person must pay for.  And only a police state can force everyone to obey
+them.  Consider a space station where air must be manufactured at great
+cost: charging each breather per liter of air may be fair, but wearing the
+metered gas mask all day and all night is intolerable even if everyone can
+afford to pay the air bill.  And the TV cameras everywhere to see if you
+ever take the mask off are outrageous.  It's better to support the air
+plant with a head tax and chuck the masks.
+
+Copying all or parts of a program is as natural to a programmer as
+breathing, and as productive.  It ought to be as free.
+
address@hidden Some Easily Rebutted Objections to GNU's Goals
+
address@hidden
+``Nobody will use it if it is free, because that means they can't rely
+on any support.''
+
+``You have to charge for the program to pay for providing the
+support.''
address@hidden quotation
+
+If people would rather pay for GNU plus service than get GNU free without
+service, a company to provide just service to people who have obtained GNU
+free ought to be profitable.
+
+We must distinguish between support in the form of real programming work
+and mere handholding.  The former is something one cannot rely on from a
+software vendor.  If your problem is not shared by enough people, the
+vendor will tell you to get lost.
+
+If your business needs to be able to rely on support, the only way is to
+have all the necessary sources and tools.  Then you can hire any available
+person to fix your problem; you are not at the mercy of any individual.
+With Unix, the price of sources puts this out of consideration for most
+businesses.  With GNU this will be easy.  It is still possible for there to
+be no available competent person, but this problem cannot be blamed on
+distribution arrangements.  GNU does not eliminate all the world's problems,
+only some of them.
+
+Meanwhile, the users who know nothing about computers need handholding:
+doing things for them which they could easily do themselves but don't know
+how.
+
+Such services could be provided by companies that sell just hand-holding
+and repair service.  If it is true that users would rather spend money and
+get a product with service, they will also be willing to buy the service
+having got the product free.  The service companies will compete in quality
+and price; users will not be tied to any particular one.  Meanwhile, those
+of us who don't need the service should be able to use the program without
+paying for the service.
+
address@hidden
+``You cannot reach many people without advertising,
+and you must charge for the program to support that.''
+
+``It's no use advertising a program people can get free.''
address@hidden quotation
+
+There are various forms of free or very cheap publicity that can be used to
+inform numbers of computer users about something like GNU.  But it may be
+true that one can reach more microcomputer users with advertising.  If this
+is really so, a business which advertises the service of copying and
+mailing GNU for a fee ought to be successful enough to pay for its
+advertising and more.  This way, only the users who benefit from the
+advertising pay for it.
+
+On the other hand, if many people get GNU from their friends, and such
+companies don't succeed, this will show that advertising was not really
+necessary to spread GNU.  Why is it that free market advocates don't want
+to let the free market decide this?
address@hidden
address@hidden
+``My company needs a proprietary operating system
+to get a competitive edge.''
address@hidden quotation
+
+GNU will remove operating system software from the realm of competition.
+You will not be able to get an edge in this area, but neither will your
+competitors be able to get an edge over you.  You and they will compete in
+other areas, while benefitting mutually in this one.  If your business is
+selling an operating system, you will not like GNU, but that's tough on
+you.  If your business is something else, GNU can save you from being
+pushed into the expensive business of selling operating systems.
+
+I would like to see GNU development supported by gifts from many
+manufacturers and users, reducing the cost to each.
+
address@hidden
+``Don't programmers deserve a reward for their creativity?''
address@hidden quotation
+
+If anything deserves a reward, it is social contribution.  Creativity can
+be a social contribution, but only in so far as society is free to use the
+results.  If programmers deserve to be rewarded for creating innovative
+programs, by the same token they deserve to be punished if they restrict
+the use of these programs.
+
address@hidden
+``Shouldn't a programmer be able to ask for a reward for his creativity?''
address@hidden quotation
+
+There is nothing wrong with wanting pay for work, or seeking to maximize
+one's income, as long as one does not use means that are destructive.  But
+the means customary in the field of software today are based on
+destruction.
+
+Extracting money from users of a program by restricting their use of it is
+destructive because the restrictions reduce the amount and the ways that
+the program can be used.  This reduces the amount of wealth that humanity
+derives from the program.  When there is a deliberate choice to restrict,
+the harmful consequences are deliberate destruction.
+
+The reason a good citizen does not use such destructive means to become
+wealthier is that, if everyone did so, we would all become poorer from the
+mutual destructiveness.  This is Kantian ethics; or, the Golden Rule.
+Since I do not like the consequences that result if everyone hoards
+information, I am required to consider it wrong for one to do so.
+Specifically, the desire to be rewarded for one's creativity does not
+justify depriving the world in general of all or part of that creativity.
+
address@hidden
+``Won't programmers starve?''
address@hidden quotation
+
+I could answer that nobody is forced to be a programmer.  Most of us cannot
+manage to get any money for standing on the street and making faces.  But
+we are not, as a result, condemned to spend our lives standing on the
+street making faces, and starving.  We do something else.
+
+But that is the wrong answer because it accepts the questioner's implicit
+assumption: that without ownership of software, programmers cannot possibly
+be paid a cent.  Supposedly it is all or nothing.
+
+The real reason programmers will not starve is that it will still be
+possible for them to get paid for programming; just not paid as much as
+now.
+
+Restricting copying is not the only basis for business in software.  It is
+the most common basis because it brings in the most money.  If it were
+prohibited, or rejected by the customer, software business would move to
+other bases of organization which are now used less often.  There are
+always numerous ways to organize any kind of business.
+
+Probably programming will not be as lucrative on the new basis as it is
+now.  But that is not an argument against the change.  It is not considered
+an injustice that sales clerks make the salaries that they now do.  If
+programmers made the same, that would not be an injustice either.  (In
+practice they would still make considerably more than that.)
+
address@hidden
+``Don't people have a right to control how their creativity is used?''
address@hidden quotation
+
+``Control over the use of one's ideas'' really constitutes control over
+other people's lives; and it is usually used to make their lives more
+difficult.
+
+People who have studied the issue of intellectual property rights carefully
+(such as lawyers) say that there is no intrinsic right to intellectual
+property.  The kinds of supposed intellectual property rights that the
+government recognizes were created by specific acts of legislation for
+specific purposes.
+
+For example, the patent system was established to encourage inventors to
+disclose the details of their inventions.  Its purpose was to help society
+rather than to help inventors.  At the time, the life span of 17 years for
+a patent was short compared with the rate of advance of the state of the
+art.  Since patents are an issue only among manufacturers, for whom the
+cost and effort of a license agreement are small compared with setting up
+production, the patents often do not do much harm.  They do not obstruct
+most individuals who use patented products.
+
+The idea of copyright did not exist in ancient times, when authors
+frequently copied other authors at length in works of non-fiction.  This
+practice was useful, and is the only way many authors' works have survived
+even in part.  The copyright system was created expressly for the purpose
+of encouraging authorship.  In the domain for which it was
+invented---books, which could be copied economically only on a printing
+press---it did little harm, and did not obstruct most of the individuals
+who read the books.
+
+All intellectual property rights are just licenses granted by society
+because it was thought, rightly or wrongly, that society as a whole would
+benefit by granting them.  But in any particular situation, we have to ask:
+are we really better off granting such license?  What kind of act are we
+licensing a person to do?
+
+The case of programs today is very different from that of books a hundred
+years ago.  The fact that the easiest way to copy a program is from one
+neighbor to another, the fact that a program has both source code and
+object code which are distinct, and the fact that a program is used rather
+than read and enjoyed, combine to create a situation in which a person who
+enforces a copyright is harming society as a whole both materially and
+spiritually; in which a person should not do so regardless of whether the
+law enables him to.
+
address@hidden
+``Competition makes things get done better.''
address@hidden quotation
+
+The paradigm of competition is a race: by rewarding the winner, we
+encourage everyone to run faster.  When capitalism really works this way,
+it does a good job; but its defenders are wrong in assuming it always works
+this way.  If the runners forget why the reward is offered and become
+intent on winning, no matter how, they may find other strategies---such as,
+attacking other runners.  If the runners get into a fist fight, they will
+all finish late.
+
+Proprietary and secret software is the moral equivalent of runners in a
+fist fight.  Sad to say, the only referee we've got does not seem to
+object to fights; he just regulates them (``For every ten yards you run,
+you can fire one shot'').  He really ought to break them up, and penalize
+runners for even trying to fight.
+
address@hidden
+``Won't everyone stop programming without a monetary incentive?''
address@hidden quotation
+
+Actually, many people will program with absolutely no monetary incentive.
+Programming has an irresistible fascination for some people, usually the
+people who are best at it.  There is no shortage of professional musicians
+who keep at it even though they have no hope of making a living that way.
+
+But really this question, though commonly asked, is not appropriate to the
+situation.  Pay for programmers will not disappear, only become less.  So
+the right question is, will anyone program with a reduced monetary
+incentive?  My experience shows that they will.
+
+For more than ten years, many of the world's best programmers worked at the
+Artificial Intelligence Lab for far less money than they could have had
+anywhere else.  They got many kinds of non-monetary rewards: fame and
+appreciation, for example.  And creativity is also fun, a reward in itself.
address@hidden
+Then most of them left when offered a chance to do the same interesting
+work for a lot of money.
+
+What the facts show is that people will program for reasons other than
+riches; but if given a chance to make a lot of money as well, they will
+come to expect and demand it.  Low-paying organizations do poorly in
+competition with high-paying ones, but they do not have to do badly if the
+high-paying ones are banned.
+
address@hidden
+``We need the programmers desperately.  If they demand that we
+stop helping our neighbors, we have to obey.''
address@hidden quotation
+
+You're never so desperate that you have to obey this sort of demand.
+Remember: millions for defense, but not a cent for tribute!
+
address@hidden
+``Programmers need to make a living somehow.''
address@hidden quotation
+
+In the short run, this is true.  However, there are plenty of ways that
+programmers could make a living without selling the right to use a program.
+This way is customary now because it brings programmers and businessmen the
+most money, not because it is the only way to make a living.  It is easy to
+find other ways if you want to find them.  Here are a number of examples.
+
+A manufacturer introducing a new computer will pay for the porting of
+operating systems onto the new hardware.
+
+The sale of teaching, hand-holding, and maintenance services could also
+employ programmers.
+
+People with new ideas could distribute programs as freeware and ask for
+donations from satisfied users or sell hand-holding services.  I have
+met people who are already working this way successfully.
+
+Users with related needs can form users' groups and pay dues.  A group
+would contract with programming companies to write programs that the
+group's members would like to use.
+
+All sorts of development can be funded with a Software Tax:
+
address@hidden
+Suppose everyone who buys a computer has to pay a certain percent of
+the price as a software tax.  The government gives this to
+an agency like the NSF to spend on software development.
+
+But if the computer buyer makes a donation to software development
+himself, he can take a credit against the tax.  He can donate to
+the project of his own choosing---often, chosen because he hopes to
+use the results when
address@hidden 
+it is done.  He can take a credit for any amount
+of donation up to the total tax he had to pay.
+
+The total tax rate could be decided by a vote of the payers of
+the tax, weighted according to the amount they will be taxed on.
+
+The consequences:
+
address@hidden @bullet
address@hidden
+The computer-using community supports software development.
address@hidden
+This community decides what level of support is needed.
address@hidden
+Users who care which projects their share is spent on
+can choose this for themselves.
address@hidden itemize
address@hidden quotation
+
+In the long run, making programs free is a step toward the post-scarcity
+world, where nobody will have to work very hard just to make a living.
+People will be free to devote themselves to activities that are fun, such
+as programming, after spending the necessary ten hours a week on required
+tasks such as legislation, family counseling, robot repair, and asteroid
+prospecting.  There will be no need to be able to make a living from
+programming.
+
+We have already greatly reduced the amount of work that the whole society
+must do for its actual productivity, but only a little of this has
+translated itself into leisure for workers because much nonproductive
+activity is required to accompany productive activity.  The main causes of
+this are bureaucracy and isometric struggles against competition.  Free
+software will greatly reduce these drains in the area of software
+production.  We must do this, in order for technical gains in productivity
+to translate into less work for us.
+
address@hidden Key Index, Command Index, Manifesto, Top
address@hidden Key (Character) Index
address@hidden ky
+
address@hidden Command Index, Variable Index, Key Index, Top
address@hidden Command and Function Index
address@hidden fn
+
address@hidden Variable Index, Concept Index, Command Index, Top
address@hidden Variable Index
address@hidden vr
+
address@hidden Concept Index, Frame, Variable Index, Top
address@hidden Concept Index
address@hidden cp
+
address@hidden
address@hidden
address@hidden

Index: xemacs_manual/res_all/texi_xemacs/xemacs.texi.first
===================================================================
RCS file: xemacs_manual/res_all/texi_xemacs/xemacs.texi.first
diff -N xemacs_manual/res_all/texi_xemacs/xemacs.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ xemacs_manual/res_all/texi_xemacs/xemacs.texi.first 2 Aug 2009 13:12:00 
-0000       1.1
@@ -0,0 +1,24400 @@
+\input texinfo  @c -*-texinfo-*-
address@hidden xemacs.info
address@hidden  node-name,  next,  previous,  up
+
+
address@hidden XEmacs Editor
address@hidden
+* XEmacs: (xemacs).            XEmacs Editor.
address@hidden direntry
+
+This file documents the XEmacs editor.
+
+Copyright (C) 1985, 1986, 1988 Richard M. Stallman.
+Copyright @copyright{} 1991, 1992, 1993, 1994 Lucid, Inc.
+Copyright @copyright{} 1993, 1994 Sun Microsystems, Inc.
+Copyright @copyright{} 1995 Amdahl Corporation.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that the
+sections entitled ``The GNU Manifesto'', ``Distribution'' and ``GNU
+General Public License'' are included exactly as in the original, and
+provided that the entire resulting derived work is distributed under the
+terms of a permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that the sections entitled ``The GNU Manifesto'',
+``Distribution'' and ``GNU General Public License'' may be included in a
+translation approved by the author instead of in the original English.
address@hidden
address@hidden odd
address@hidden XEmacs User's Manual
address@hidden
address@hidden
address@hidden Top, License,, (dir)
address@hidden The XEmacs Editor
+
+
+XEmacs is the extensible, customizable, self-documenting real-time
+display editor.  This Info file describes how to edit with Emacs
+and some of how to customize it, but not how to extend it.  It
+corresponds to XEmacs version 21.0.
+
+This manual is intended as a detailed reference to XEmacs.  If
+you are looking for an introductory manual, see the New User's
+Guide.
+
address@hidden
+* License::     The GNU General Public License gives you permission
+               to redistribute XEmacs on certain terms; and also
+               explains that there is no warranty.
+* Distrib::     How to get XEmacs.
+* Intro::       An introduction to XEmacs concepts.
+* Glossary::    The glossary.
+* Manifesto::   What's GNU?  Gnu's Not Unix!
+
+Indices, nodes containing large menus
+* Key Index::      An item for each standard XEmacs key sequence.
+* Command Index::  An item for each command name.
+* Variable Index:: An item for each documented variable.
+* Concept Index::  An item for each concept.
+
+Important General Concepts
+* Frame::      How to interpret what you see on the screen.
+* Keystrokes::  Keyboard gestures XEmacs recognizes.
+* Pull-down Menus:: 
+                The XEmacs Pull-down Menus available under X.
+* Entering Emacs::    
+                Starting Emacs from the shell.
+* Exiting::     Stopping or killing XEmacs.
+* Command Switches::  
+                Hairy startup options.
+* Startup Paths::
+                How XEmacs finds Directories and Files.
+* Packages::    How XEmacs organizes its high-level functionality.
+
+Fundamental Editing Commands
+* Basic::       The most basic editing commands.
+* Undo::        Undoing recently made changes in the text.
+* Minibuffer::  Entering arguments that are prompted for.
+* M-x::         Invoking commands by their names.
+* Help::        Commands for asking XEmacs about its commands.
+
+Important Text-Changing Commands
+* Mark::        The mark: how to delimit a ``region'' of text.
+* Mouse Selection:: 
+                Selecting text with the mouse.
+* Additional Mouse Operations::
+                Other operations available from the mouse.
+* Killing::     Killing text.
+* Yanking::     Recovering killed text.  Moving text.
+* Using X Selections::
+                Using primary selection, cut buffers, and highlighted regions.
+* Accumulating Text::
+                Other ways of copying text.
+* Rectangles::  Operating on the text inside a rectangle on the screen.
+* Registers::   Saving a text string or a location in the buffer.
+* Display::     Controlling what text is displayed.
+* Search::      Finding or replacing occurrences of a string.
+* Fixit::       Commands especially useful for fixing typos.
+
+Larger Units of Text
+* Files::       All about handling files.
+* Buffers::     Multiple buffers; editing several files at once.
+* Windows::     Viewing two pieces of text at once.
+* Mule::       Using world scripts.
+
+Advanced Features
+* Major Modes:: Text mode vs. Lisp mode vs. C mode ...
+* Indentation:: Editing the white space at the beginnings of lines.
+* Text::        Commands and modes for editing English.
+* Programs::    Commands and modes for editing programs.
+* Running::     Compiling, running and debugging programs.
+* Abbrevs::     How to define text abbreviations to reduce
+                 the number of characters you must type.
+* Picture::     Editing pictures made up of characters
+                 using the quarter-plane screen model.
+* Sending Mail:: Sending mail in XEmacs.
+* Reading Mail:: Reading mail in XEmacs.
+* Calendar/Diary:: A Calendar and diary facility in XEmacs.
+* Sorting::    Sorting lines, paragraphs or pages within XEmacs.
+* Shell::       Executing shell commands from XEmacs.
+* Narrowing::   Restricting display and editing to a portion
+                 of the buffer.
+* Hardcopy::   Printing buffers or regions.
+* Recursive Edit::
+                A command can allow you to do editing
+                 "within the command".  This is called a
+                 `recursive editing level'.
+* Dissociated Press::  Dissociating text for fun.
+* CONX::              A different kind of dissociation.
+* Amusements::         Various games and hacks.
+* Emulation::         Emulating some other editors with XEmacs.
+* Customization::      Modifying the behavior of XEmacs.
+
+Recovery from Problems.
+* Quitting::    Quitting and aborting.
+* Lossage::     What to do if XEmacs is hung or malfunctioning.
+* Bugs::        How and when to report a bug.
+
+Here are some other nodes which are really inferiors of the ones
+already listed, mentioned here so you can get to them in one step:
+
+ --- The Detailed Node Listing ---
+
+The Organization of the Frame
+
+* Point::              The place in the text where editing commands operate.  
+* Echo Area::           Short messages appear at the bottom of the frame.  
+* Mode Line::          Interpreting the mode line.  
+* XEmacs under X::      Some information on using XEmacs under the X 
+                        Window System. 
+
+Keystrokes
+
+* Intro to Keystrokes::      Keystrokes as building blocks of key sequences.
+* Representing Keystrokes::  Using lists of modifiers and keysyms to
+                             represent keystrokes.
+* Key Sequences::            Combine key strokes into key sequences you can
+                             bind to commands.
+* String Key Sequences::     Available for upward compatibility.
+* Meta Key::                 Using @key{ESC} to represent @key{Meta}
+* Super and Hyper Keys::     Adding modifier keys on certain keyboards.
+* Character Representation:: How characters appear in XEmacs buffers.
+* Commands::                 How commands are bound to key sequences.
+                    
+Pull-down Menus
+
+* File Menu::           Items on the File menu.
+* Edit Menu::           Items on the Edit menu.
+* Apps Menu::          Items on the Apps menu.
+* Options Menu::        Items on the Options menu. 
+* Buffers Menu::        Information about the Buffers menu.
+* Tools Menu::         Items on the Tools menu.
+* Help Menu::           Items on the Help menu. 
+* Menu Customization::  Adding and removing menu items and related
+                        operations.
+
+Packages
+
+* Packages::            Introduction to XEmacs Packages.
+* Package Terminology:: Understanding different kinds of packages.
+* Installing Packages:: How to install packages.
+* Building Packages::   Building packages from sources.
+* Local.rules File::    An important part of building packages.
+* Creating Packages::   The basics.
+* Available Packages::  A brief directory of packaged LISP.
+
+Basic Editing Commands
+
+* Blank Lines::        Commands to make or delete blank lines.
+* Continuation Lines:: Lines too wide for the frame.
+* Position Info::      What page, line, row, or column is point on?
+* Arguments::         Numeric arguments for repeating a command.
+
+The Minibuffer
+
+* File: Minibuffer File.  Entering file names with the minibuffer.
+* Edit: Minibuffer Edit.  How to edit in the minibuffer.
+* Completion::           An abbreviation facility for minibuffer input.
+* Repetition::           Re-executing commands that used the minibuffer.
+
+The Mark and the Region
+
+* Setting Mark::       Commands to set the mark.
+* Using Region::       Summary of ways to operate on contents of the region.
+* Marking Objects::    Commands to put region around textual units.
+* Mark Ring::          Previous mark positions saved so you can go back there.
+
+Yanking
+
+* Kill Ring::       Where killed text is stored.  Basic yanking.
+* Appending Kills:: Several kills in a row all yank together.
+* Earlier Kills::   Yanking something killed some time ago.
+
+Using X Selections
+
+* X Clipboard Selection::      Pasting to the X clipboard.
+* X Selection Commands::       Other operations on the selection.
+* X Cut Buffers::              X cut buffers are available for compatibility.
+* Active Regions::             Using zmacs-style highlighting of the
+                                selected region.
+
+Registers
+
+* Position: RegPos.           Saving positions in registers.
+* Text: RegText.              Saving text in registers.
+* Rectangle: RegRect.         Saving rectangles in registers.
+* Configurations: RegConfig.  Saving window configurations in registers.
+* Files: RegFiles.            File names in registers.
+* Numbers: RegNumbers.        Numbers in registers.
+* Bookmarks::                 Bookmarks are like registers, but persistent.
+
+Controlling the Display
+
+* Scrolling::             Moving text up and down in a window.
+* Horizontal Scrolling::   Moving text left and right in a window.
+* Selective Display::      Hiding lines with lots of indentation.
+* Display Vars::           Information on variables for customizing display.
+
+Searching and Replacement
+
+* Incremental Search::     Search happens as you type the string.
+* Non-Incremental Search:: Specify entire string and then search.
+* Word Search::            Search for sequence of words.
+* Regexp Search::          Search for match for a regexp.
+* Regexps::                Syntax of regular expressions.
+* Search Case::            To ignore case while searching, or not.
+* Replace::                Search, and replace some or all matches.
+* Other Repeating Search:: Operating on all matches for some regexp.
+
+Replacement Commands
+
+* Unconditional Replace::  Replacing all matches for a string.
+* Regexp Replace::         Replacing all matches for a regexp.
+* Replacement and Case::   How replacements preserve case of letters.
+* Query Replace::          How to use querying.
+
+Commands for Fixing Typos
+
+* Kill Errors:: Commands to kill a batch of recently entered text.
+* Transpose::   Exchanging two characters, words, lines, lists...
+* Fixing Case:: Correcting case of last word entered.
+* Spelling::    Apply spelling checker to a word, or a whole file.
+
+File Handling
+
+* File Names::       How to type and edit file name arguments.
+* Visiting::         Visiting a file prepares XEmacs to edit the file.
+* Saving::           Saving makes your changes permanent.
+* Reverting::        Reverting cancels all the changes not saved.
+* Auto Save::        Auto Save periodically protects against loss of data.
+* Version Control::  Version control systems (RCS and SCCS).
+* ListDir::          Listing the contents of a file directory.
+* Comparing Files::  Finding where two files differ.
+* Dired::            ``Editing'' a directory to delete, rename, etc.
+                     the files in it.
+* Misc File Ops::    Other things you can do on files.
+
+Saving Files
+
+* Backup::       How XEmacs saves the old version of your file.
+* Interlocking:: How XEmacs protects against simultaneous editing
+                  of one file by two users.
+
+Backup Files
+
+* Names: Backup Names.         How backup files are named;
+                               Choosing single or numbered backup files.
+* Deletion: Backup Deletion.   XEmacs deletes excess numbered backups.
+* Copying: Backup Copying.     Backups can be made by copying or renaming.
+
+Auto-Saving: Protection Against Disasters
+
+* Files: Auto Save Files.
+* Control: Auto Save Control.
+* Recover::            Recovering text from auto-save files.
+
+Version Control
+
+* Concepts of VC::             Basic version control information;
+                                 checking files in and out.
+* Editing with VC::            Commands for editing a file maintained
+                                 with version control.
+* Variables for Check-in/out:: Variables that affect the commands used
+                                 to check files in or out.
+* Log Entries::                        Logging your changes.
+* Change Logs and VC::         Generating a change log file from log
+                                 entries. 
+* Old Versions::               Examining and comparing old versions.
+* VC Status::                  Commands to view the VC status of files and
+                                 look at log entries.
+* Renaming and VC::            A command to rename both the source and
+                                 master file correctly.
+* Snapshots::                  How to make and use snapshots, a set of
+                                 file versions that can be treated as a unit.
+* Version Headers::            Inserting version control headers into
+                                 working files.
+
+Snapshots
+
+* Making Snapshots::           The snapshot facilities.
+* Snapshot Caveats::           Things to be careful of when using snapshots.
+
+Dired, the Directory Editor
+
+* Enter: Dired Enter.         How to invoke Dired.
+* Edit: Dired Edit.           Editing the Dired buffer.
+* Deletion: Dired Deletion.   Deleting files with Dired.
+* Immed: Dired Immed.         Other file operations through Dired.
+
+Using Multiple Buffers
+
+* Select Buffer::   Creating a new buffer or reselecting an old one.
+* List Buffers::    Getting a list of buffers that exist.
+* Misc Buffer::     Renaming; changing read-onliness; copying text.
+* Kill Buffer::     Killing buffers you no longer need.
+* Several Buffers:: How to go through the list of all buffers
+                     and operate variously on several of them.
+
+Multiple Windows
+
+* Basic Window::     Introduction to XEmacs windows.
+* Split Window::     New windows are made by splitting existing windows.
+* Other Window::     Moving to another window or doing something to it.
+* Pop Up Window::    Finding a file or buffer in another window.
+* Change Window::    Deleting windows and changing their sizes.
+
+Major Modes
+
+* Choosing Modes::     How major modes are specified or chosen.
+
+Indentation
+
+* Indentation Commands:: Various commands and techniques for indentation.
+* Tab Stops::            You can set arbitrary "tab stops" and then
+                         indent to the next tab stop when you want to.
+* Just Spaces::          You can request indentation using just spaces.
+
+Commands for Human Languages
+
+* Text Mode::   The major modes for editing text files.
+* Nroff Mode::  The major mode for editing input to the formatter nroff.
+* TeX Mode::    The major modes for editing input to the formatter TeX.
+* Outline Mode:: The major mode for editing outlines.
+* Words::       Moving over and killing words.
+* Sentences::   Moving over and killing sentences.
+* Paragraphs:: Moving over paragraphs.
+* Pages::      Moving over pages.
+* Filling::     Filling or justifying text
+* Case::        Changing the case of text
+
address@hidden Mode
+
+* Editing: TeX Editing.   Special commands for editing in TeX mode.
+* Printing: TeX Print.    Commands for printing part of a file with TeX.
+
+Outline Mode
+
+* Format: Outline Format.        What the text of an outline looks like.
+* Motion: Outline Motion.        Special commands for moving through outlines.
+* Visibility: Outline Visibility. Commands to control what is visible.
+
+Filling Text
+
+* Auto Fill::    Auto Fill mode breaks long lines automatically.
+* Fill Commands:: Commands to refill paragraphs and center lines.
+* Fill Prefix::   Filling when every line is indented or in a comment, etc.
+
+Editing Programs
+
+* Program Modes::       Major modes for editing programs.
+* Lists::               Expressions with balanced parentheses.
+                         There are editing commands to operate on them.
+* Defuns::              Each program is made up of separate functions.
+                         There are editing commands to operate on them.
+* Grinding::            Adjusting indentation to show the nesting.
+* Matching::            Insertion of a close-delimiter flashes matching open.
+* Comments::            Inserting, filling and aligning comments.
+* Balanced Editing::    Inserting two matching parentheses at once, etc.
+* Lisp Completion::     Completion on symbol names in Lisp code.
+* Documentation::       Getting documentation of functions you plan to call.
+* Change Log::          Maintaining a change history for your program.
+* Tags::                Go directly to any function in your program in one
+                         command.  Tags remembers which file it is in.
+* Fortran::            Fortran mode and its special features.
+* Asm Mode::            Asm mode and its special features.
+
+Indentation for Programs
+
+* Basic Indent::
+* Multi-line Indent::   Commands to reindent many lines at once.
+* Lisp Indent::                Specifying how each Lisp function should be 
indented.
+* C Indent::           Choosing an indentation style for C code.
+
+Tags Tables
+
+* Tag Syntax::         Tag syntax for various types of code and text files.  
+* Create Tags Table::  Creating a tags table with @code{etags}.
+* Select Tags Table::  How to visit a tags table.
+* Find Tag::           Commands to find the definition of a specific tag. 
+* Tags Search::                Using a tags table for searching and replacing.
+* List Tags::          Listing and finding tags defined in a file.
+
+Fortran Mode
+
+* Motion: Fortran Motion.     Moving point by statements or subprograms.
+* Indent: Fortran Indent.     Indentation commands for Fortran.
+* Comments: Fortran Comments. Inserting and aligning comments.
+* Columns: Fortran Columns.   Measuring columns for valid Fortran.
+* Abbrev: Fortran Abbrev.     Built-in abbrevs for Fortran keywords.
+
+Fortran Indentation
+
+* Commands: ForIndent Commands. Commands for indenting Fortran.
+* Numbers:  ForIndent Num.      How line numbers auto-indent.
+* Conv:     ForIndent Conv.     Conventions you must obey to avoid trouble.
+* Vars:     ForIndent Vars.     Variables controlling Fortran indent style.
+
+Compiling and Testing Programs
+
+* Compilation::        Compiling programs in languages other than Lisp
+                        (C, Pascal, etc.)
+* Modes: Lisp Modes.   Various modes for editing Lisp programs, with
+                       different facilities for running the Lisp programs.
+* Libraries: Lisp Libraries.      Creating Lisp programs to run in XEmacs.
+* Eval: Lisp Eval.     Executing a single Lisp expression in XEmacs.
+* Debug: Lisp Debug.   Debugging Lisp programs running in XEmacs.
+* Interaction: Lisp Interaction.  Executing Lisp in an XEmacs buffer.
+* External Lisp::      Communicating through XEmacs with a separate Lisp.
+
+Lisp Libraries
+
+* Loading::            Loading libraries of Lisp code into XEmacs for use.
+* Compiling Libraries:: Compiling a library makes it load and run faster.
+* Mocklisp::           Converting Mocklisp to Lisp so XEmacs can run it.
+
+Abbrevs
+
+* Defining Abbrevs::  Defining an abbrev, so it will expand when typed.
+* Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
+* Editing Abbrevs::   Viewing or editing the entire list of defined abbrevs.
+* Saving Abbrevs::    Saving the entire list of abbrevs for another session.
+* Dynamic Abbrevs::   Abbreviations for words already in the buffer.
+
+Editing Pictures
+
+* Basic Picture::         Basic concepts and simple commands of Picture Mode.
+* Insert in Picture::     Controlling direction of cursor motion
+                           after "self-inserting" characters.
+* Tabs in Picture::       Various features for tab stops and indentation.
+* Rectangles in Picture:: Clearing and superimposing rectangles.
+
+Sending Mail
+
+* Format: Mail Format.    Format of the mail being composed.
+* Headers: Mail Headers.  Details of allowed mail header fields.
+* Mode: Mail Mode.        Special commands for editing mail being composed.
+
+Running Shell Commands from XEmacs
+
+* Single Shell::         How to run one shell command and return.
+* Interactive Shell::    Permanent shell taking input via XEmacs.
+* Shell Mode::           Special XEmacs commands used with permanent shell.
+
+Customization
+
+* Minor Modes::     Each minor mode is one feature you can turn on
+                     independently of any others.
+* Variables::       Many XEmacs commands examine XEmacs variables
+                     to decide what to do; by setting variables,
+                     you can control their functioning.
+* Keyboard Macros:: A keyboard macro records a sequence of keystrokes
+                     to be replayed with a single command.
+* Key Bindings::    The keymaps say what command each key runs.
+                     By changing them, you can "redefine keys".
+* Syntax::          The syntax table controls how words and expressions
+                     are parsed.
+* Init File::       How to write common customizations in the init file.
+* Audible Bell::    Changing how XEmacs sounds the bell. 
+* Faces::           Changing the fonts and colors of a region of text. 
+* X Resources::            X resources controlling various aspects of the
+                     behavior of XEmacs.
+
+Variables
+
+* Examining::           Examining or setting one variable's value.
+* Easy Customization::  Convenient and easy customization of variables.
+* Edit Options::        Examining or editing list of all variables' values.
+* Locals::              Per-buffer values of variables.
+* File Variables::      How files can specify variable values.
+
+Keyboard Macros
+
+* Basic Kbd Macro::     Defining and running keyboard macros.
+* Save Kbd Macro::      Giving keyboard macros names; saving them in files.
+* Kbd Macro Query::     Keyboard macros that do different things each use.
+
+Customizing Key Bindings
+
+* Keymaps::    Definition of the keymap data structure.
+               Names of XEmacs's standard keymaps.
+* Rebinding::  How to redefine one key's meaning conveniently.
+* Disabling::  Disabling a command means confirmation is required
+                before it can be executed.  This is done to protect
+                beginners from surprises.
+
+The Syntax Table
+
+* Entry: Syntax Entry.    What the syntax table records for each character.
+* Change: Syntax Change.  How to change the information.
+
+The Init File
+
+* Init Syntax::     Syntax of constants in Emacs Lisp.
+* Init Examples::   How to do some things with an init file.
+* Terminal Init::   Each terminal type can have an init file.
+
+Dealing with XEmacs Trouble
+
+* Stuck Recursive::    `[...]' in mode line around the parentheses.
+* Screen Garbled::     Garbage on the screen.
+* Text Garbled::       Garbage in the text.
+* Unasked-for Search:: Spontaneous entry to incremental search.
+* Emergency Escape::   Emergency escape---
+                        What to do if XEmacs stops responding.
+* Total Frustration::  When you are at your wits' end.
+
address@hidden menu
+
+
address@hidden  node-name,  next,  previous,  up
address@hidden License, Distrib, Top, Top
address@hidden GNU GENERAL PUBLIC LICENSE
address@hidden Version 1, February 1989
address@hidden license to copy XEmacs
address@hidden General Public License
+
address@hidden
+Copyright @copyright{} 1989 Free Software Foundation, Inc.
+675 Mass Ave, Cambridge, MA 02139, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
address@hidden display
+
address@hidden Preamble
+
+  The license agreements of most software companies try to keep users
+at the mercy of those companies.  By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software---to make sure the software is free for all its users.  The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must tell them their rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
address@hidden TERMS AND CONDITIONS
+
address@hidden
address@hidden
+This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License.  The
+``Program'', below, refers to any such program or work, and a ``work based
+on the Program'' means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications.  Each
+licensee is addressed as ``you''.
+
address@hidden
address@hidden Distribution
+You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program.  You may charge a fee for the physical act of
+transferring a copy.
+
address@hidden
+You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
address@hidden @bullet
address@hidden
+cause the modified files to carry prominent notices stating that
+you changed the files and the date of any change; and
+
address@hidden
+cause the whole of any work that you distribute or publish, that
+in whole or in part contains the Program or any part thereof, either
+with or without modifications, to be licensed at no charge to all
+third parties under the terms of this General Public License (except
+that you may choose to grant warranty protection to some or all
+third parties, at your option).
+
address@hidden
+If the modified program normally reads commands interactively when
+run, you must cause it, when started running for such interactive use
+in the simplest and most usual way, to print or display an
+announcement including an appropriate copyright notice and a notice
+that there is no warranty (or else, saying that you provide a
+warranty) and that users may redistribute the program under these
+conditions, and telling the user how to view a copy of this General
+Public License.
+
address@hidden
+You may charge a fee for the physical act of transferring a
+copy, and you may at your option offer warranty protection in
+exchange for a fee.
address@hidden itemize
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
address@hidden
+You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
address@hidden @bullet
address@hidden
+accompany it with the complete corresponding machine-readable
+source code, which must be distributed under the terms of
+Paragraphs 1 and 2 above; or,
+
address@hidden
+accompany it with a written offer, valid for at least three
+years, to give any third party free (except for a nominal charge
+for the cost of distribution) a complete machine-readable copy of the
+corresponding source code, to be distributed under the terms of
+Paragraphs 1 and 2 above; or,
+
address@hidden
+accompany it with the information you received as to where the
+corresponding source code may be obtained.  (This alternative is
+allowed only for noncommercial distribution and only if you
+received the program in object code or executable form alone.)
address@hidden itemize
+
+Source code for a work means the preferred form of the work for making
+modifications to it.  For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
address@hidden
+You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License.  However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
address@hidden
+By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
address@hidden
+Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions.  You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
address@hidden
address@hidden
+The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of the license which applies to it and ``any
+later version'', you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
address@hidden
+If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
address@hidden NO WARRANTY
+
address@hidden
+BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
address@hidden
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
+LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
+SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE
+WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
address@hidden enumerate
+
address@hidden END OF TERMS AND CONDITIONS
+
address@hidden
address@hidden Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+  To do so, attach the following notices to the program.  It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+``copyright'' line and a pointer to where the full notice is found.
+
address@hidden
address@hidden line to give the program's name and a brief idea of what it 
does.}
+Copyright (C) address@hidden  @var{name of author}
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
address@hidden smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
address@hidden
+Gnomovision version 69, Copyright (C) address@hidden @var{name of author}
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type `show c' for details.
address@hidden smallexample
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than `show w' and `show
+c'; they could even be mouse-clicks or menu items---whatever suits your
+program.
+
address@hidden
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a ``copyright disclaimer'' for the program, if
+necessary.  Here a sample; alter the names:
+
address@hidden
+Yoyodyne, Inc., hereby disclaims all copyright interest in the
+program `Gnomovision' (a program to direct compilers to make passes
+at assemblers) written by James Hacker.
+
address@hidden of Ty Coon}, 1 April 1989
+Ty Coon, President of Vice
address@hidden example
+
+That's all there is to it!
+
address@hidden  node-name,  next,  previous,  up
address@hidden Distrib, Intro, License, Top
address@hidden Distribution
+
+XEmacs is @dfn{free}; this means that everyone is free to use it and
+free to redistribute it on a free basis.  XEmacs is not in the public
+domain; it is copyrighted and there are restrictions on its
+distribution, but these restrictions are designed to permit everything
+that a good cooperating citizen would want to do.  What is not allowed
+is to try to prevent others from further sharing any version of XEmacs
+that they might get from you.  The precise conditions are found in
+the GNU General Public License that comes with XEmacs and also appears
+following this section.
+
+The easiest way to get a copy of XEmacs is from someone else who has it.
+You need not ask for permission to do so, or tell any one else; just copy
+it.
+
+If you have access to the Internet, you can get the latest version of
+XEmacs from the anonymous FTP server @file{ftp.xemacs.org} in the directory
address@hidden/pub/xemacs}.  It can also be found at numerous other archive
+sites around the world; check the file @file{etc/DISTRIB} in an XEmacs
+distribution for the latest known list.
+
+
address@hidden Getting Other Versions of Emacs
+
+The Free Software Foundation's version of Emacs (called @dfn{FSF Emacs}
+in this manual and often referred to as @dfn{GNU Emacs}) is available
+by anonymous FTP from @file{prep.ai.mit.edu}.
+
+Win-Emacs, an older version of XEmacs that runs on Microsoft Windows
+and Windows NT, is available by anonymous FTP from @file{ftp.netcom.com}
+in the directory @file{/pub/pe/pearl}, or from @file{ftp.cica.indiana.edu}
+as the files @file{wemdemo*.zip} in the directory @file{/pub/pc/win3/demo}.
+
address@hidden Intro, Glossary, Distrib, Top
address@hidden Introduction
+
+  You are reading about XEmacs, an incarnation of the advanced,
+self-documenting, customizable, extensible real-time display editor
+Emacs.  XEmacs provides many powerful display and user-interface
+capabilities not found in other Emacsen and is mostly upwardly
+compatible with GNU Emacs from the Free Software Foundation
+(referred to as @dfn{FSF Emacs} in this manual).  XEmacs also
+comes standard with a great number of useful packages.
+
+  We say that XEmacs is a @dfn{display} editor because normally the text
+being edited is visible on the screen and is updated automatically as you
+type.  @xref{Frame,Display}.
+
+  We call XEmacs a @dfn{real-time} editor because the display is updated very
+frequently, usually after each character or pair of characters you
+type.  This minimizes the amount of information you must keep in your
+head as you edit.  @xref{Basic,Real-time,Basic Editing}.
+
+  We call XEmacs advanced because it provides facilities that go beyond
+simple insertion and deletion: filling of text; automatic indentation of
+programs; viewing two or more files at once; and dealing in terms of
+characters, words, lines, sentences, paragraphs, and pages, as well as
+expressions and comments in several different programming languages.  It is
+much easier to type one command meaning ``go to the end of the paragraph''
+than to find that spot with simple cursor keys.
+
+  @dfn{Self-documenting} means that at any time you can type a special
+character, @kbd{Control-h}, to find out what your options are.  You can
+also use @kbd{C-h} to find out what a command does, or to find all the
+commands relevant to a topic.  @xref{Help}.
+
+  @dfn{Customizable} means you can change the definitions of XEmacs
+commands.  For example, if you use a programming language in
+which comments start with @samp{<**} and end with @samp{**>}, you can tell
+the XEmacs comment manipulation commands to use those strings
+(@pxref{Comments}).  Another sort of customization is rearrangement of the
+command set.  For example, you can set up the four basic cursor motion
+commands (up, down, left and right) on keys in a diamond pattern on the
+keyboard if you prefer.  @xref{Customization}.
+
+  @dfn{Extensible} means you can go beyond simple customization and
+write entirely new commands, programs in the Lisp language to be run by
+XEmacs's own Lisp interpreter.  XEmacs is an ``on-line extensible''
+system: it is divided into many functions that call each other.  You can
+redefine any function in the middle of an editing session and replace
+any part of XEmacs without making a separate copy of all of XEmacs.  Most
+of the editing commands of XEmacs are written in Lisp; the few
+exceptions could have been written in Lisp but are written in C for
+efficiency.  Only a programmer can write an extension to XEmacs, but anybody
+can use it afterward.
+
address@hidden Frame, Keystrokes, Concept Index, Top
address@hidden  node-name,  next,  previous,  up
address@hidden The XEmacs Frame
address@hidden frame
address@hidden window
address@hidden buffer
+
address@hidden @asis
address@hidden Frame
+In many environments, such as a tty terminal, an XEmacs frame
+literally takes up the whole screen.  If you are
+running XEmacs in a multi-window system like the X Window System, the
+XEmacs frame takes up one X window.  @xref{XEmacs under X}, for more
address@hidden
+
address@hidden Window
+No matter what environment you are running in, XEmacs allows you to look
+at several buffers at the same time by having several windows be part of
+the frame.  Often, the whole frame is taken up by just one window, but
+you can split the frame into two or more subwindows.  If you are
+running XEmacs under the X window system, that means you can have several
address@hidden windows} inside the X window that contains the XEmacs frame.
+You can even have multiple frames in different X windows, each with
+their own set of subwindows.
address@hidden
address@hidden table
+
+Each XEmacs frame displays a variety of information:
address@hidden @bullet
address@hidden
+The biggest area usually displays the text you are editing.  It may
+consist of one window or of two or more windows if you need to look at two
+buffers a the same time.
address@hidden
+Below each text window's last line is a @dfn{mode line} (@pxref{Mode
+Line}), which describes what is going on in that window.  The mode line
+is in inverse video if the terminal supports that.  If there are several
+XEmacs windows in one frame, each window has its own mode line.
address@hidden
+At the bottom of each XEmacs frame is the @dfn{echo area} or @dfn{minibuffer
+window}(@pxref{Echo Area}).  It is used by XEmacs to exchange information
+with the user.  There is only one echo area per XEmacs frame.
address@hidden
+If you are running XEmacs under a graphical windowing system, a
+menu bar at the top of the frame makes shortcuts to several of the
+commands available (@pxref{Pull-down Menus}).
address@hidden
+Under a graphical windowing system, a
+toolbar at the top of the frame, just under the menu bar if it exists,
+provides ``one-touch'' shortcuts to several commands.  (Not yet
+documented.)
address@hidden
+Under a graphical windowing system, a
+gutter at the top (under the toolbar) and/or bottom of the frame
+provides advanced GUI facilities like tab controls for rapid switching
+among related windows and progress bars for time-consuming operations
+like downloads across the Internet.  Gutters are an experimental feature
+introduced in XEmacs version 21.2.  (Not yet documented.)
address@hidden itemize
+
+  You can subdivide the XEmacs frame into multiple text windows, and use
+each window for a different file (@pxref{Windows}).  Multiple XEmacs
+windows are tiled vertically on the XEmacs frame.  The upper XEmacs window
+is separated from the lower window by its mode line.
+
+  When there are multiple, tiled XEmacs windows on a single XEmacs frame,
+the XEmacs window receiving input from the keyboard has the @dfn{keyboard
+focus} and is called the @dfn{selected window}.  The selected window
+contains the cursor, which indicates the insertion point.  If you are
+working in an environment that permits multiple XEmacs frames, and you
+move the focus from one XEmacs frame into another, the
+selected window is the one that was last selected in that frame.
+
+  The same text can be displayed simultaneously in several XEmacs
+windows, which can be in different XEmacs frames.  If you alter the text
+in an XEmacs buffer by editing it in one XEmacs window, the changes are
+visible in all XEmacs windows containing that buffer.
+
+
address@hidden
+* Point::              The place in the text where editing commands operate.
+* Echo Area::           Short messages appear at the bottom of the frame.
+* Mode Line::          Interpreting the mode line.
+* GUI Components::      Menubar, toolbars, gutters.
+* XEmacs under X::      Some information on using XEmacs under the X
+                        Window System.
+* XEmacs under MS Windows:: Some information on using XEmacs under
+                        Microsoft Windows.
address@hidden menu
+
address@hidden Point, Echo Area, Frame, Frame
address@hidden  node-name,  next,  previous,  up
address@hidden Point
address@hidden point
address@hidden cursor
+
+  When XEmacs is running, the cursor shows the location at which editing
+commands will take effect.  This location is called @dfn{point}.  You
+can use keystrokes or the mouse cursor to move point through the text
+and edit the text at different places.
+
+  While the cursor appears to point @var{at} a character, you should
+think of point as @var{between} two characters: it points @var{before}
+the character on which the cursor appears.  The exception is at the
+end of the line, where the cursor appears after the last character of
+the line.  Where the display is capable, the cursor at the end of the
+line will appear differently from a cursor over whitespace at the end
+of the line.  (In an X Windows frame, the end-of-line cursor is half
+the width of a within-line cursor.)  Sometimes people speak of ``the
+cursor'' when they mean ``point,'' or speak of commands that move
+point as ``cursor motion'' commands.
+
+ Each XEmacs frame has only one cursor.  When output is in progress, the cursor
+must appear where the typing is being done.  This does not mean that
+point is moving.  It is only that XEmacs has no way to show you the
+location of point except when the terminal is idle.
+
+  If you are editing several files in XEmacs, each file has its own point
+location.  A file that is not being displayed remembers where point is.
+Point becomes visible at the correct location when you look at the file again.
+
+  When there are multiple text windows, each window has its own point
+location.  The cursor shows the location of point in the selected
+window.  The visible cursor also shows you which window is selected.  If
+the same buffer appears in more than one window, point can be moved in
+each window independently.
+
+  The term `point' comes from the character @samp{.}, which was the
+command in TECO (the language in which the original Emacs was written)
+for accessing the value now called `point'.
+
address@hidden Echo Area, Mode Line, Point, Frame
address@hidden The Echo Area
address@hidden echo area
+
+  The line at the bottom of the frame (below the mode line) is the
address@hidden area}.  XEmacs uses this area to communicate with the user:
+
address@hidden @bullet
address@hidden
+  @dfn{Echoing} means printing out the characters that the user types.  XEmacs
+never echoes single-character commands.  Multi-character commands are
+echoed only if you pause while typing them: As soon as you pause for more
+than one second in the middle of a command, all the characters of the command
+so far are echoed.  This is intended to @dfn{prompt} you for the rest of
+the command.  Once echoing has started, the rest of the command is echoed
+immediately as you type it.  This behavior is designed to give confident
+users fast response, while giving hesitant users maximum feedback.  You
+can change this behavior by setting a variable (@pxref{Display Vars}).
address@hidden
+  If you issue a command that cannot be executed, XEmacs may print an
address@hidden message} in the echo area.  Error messages are accompanied by
+a beep or by flashing the frame.  Any input you have typed ahead is
+thrown away when an error happens.
address@hidden
+  Some commands print informative messages in the echo area.  These
+messages look similar to error messages, but are not announced with a
+beep and do not throw away input.  Sometimes a message tells you what the
+command has done, when this is not obvious from looking at the text being
+edited.  Sometimes the sole purpose of a command is to print a message
+giving you specific information.  For example, the command @kbd{C-x =} is
+used to print a message describing the character position of point in the
+text and its current column in the window.  Commands that take a long time
+often display messages ending in @samp{...} while they are working, and
+add @samp{done} at the end when they are finished.
address@hidden
+  The echo area is also used to display the @dfn{minibuffer}, a window
+that is used for reading arguments to commands, such as the name of a
+file to be edited.  When the minibuffer is in use, the echo area displays
+with a prompt string that usually ends with a colon.  The cursor
+appears after the prompt.  You can always get out of the minibuffer by
+typing @kbd{C-g}.  @xref{Minibuffer}.
address@hidden itemize
+
address@hidden Mode Line, GUI Components, Echo Area, Frame
address@hidden  node-name,  next,  previous,  up
address@hidden The Mode Line
address@hidden mode line
address@hidden top level
+
+  Each text window's last line is a @dfn{mode line} which describes what is
+going on in that window.  When there is only one text window, the mode line
+appears right above the echo area.  The mode line is in inverse video if
+the terminal supports that, starts and ends with dashes, and contains text
+like @samp{XEmacs:@: @var{something}}.
+
+  If a mode line has something else in place of @samp{XEmacs:@:
address@hidden, the window above it is in a special subsystem
+such as Dired.  The mode line then indicates the status of the
+subsystem.
+
+  Normally, the mode line has the following appearance:
+
address@hidden
address@hidden: @var{buf}      (@var{major} @var{minor})address@hidden
address@hidden example
+
address@hidden
+This gives information about the buffer being displayed in the window: the
+buffer's name, what major and minor modes are in use, whether the buffer's
+text has been changed, and how far down the buffer you are currently
+looking.
+
+  @var{ch} contains two stars (@samp{**}) if the text in the buffer has been
+edited (the buffer is ``modified''), or two dashes (@samp{--}) if the
+buffer has not been edited.  Exception: for a read-only buffer, it is
address@hidden
+
+  @var{buf} is the name of the window's chosen @dfn{buffer}.  The chosen
+buffer in the selected window (the window that the cursor is in) is also
+XEmacs's selected buffer, the buffer in which editing takes place.  When
+we speak of what some command does to ``the buffer'', we mean the
+currently selected buffer.  @xref{Buffers}.
+
+  @var{pos} tells you whether there is additional text above the top of
+the screen or below the bottom.  If your file is small and it is
+completely visible on the screen, @var{pos} is @samp{All}.  Otherwise,
address@hidden is @samp{Top} if you are looking at the beginning of the file,
address@hidden if you are looking at the end of the file, or
address@hidden@var{nn}%}, where @var{nn} is the percentage of the file above the
+top of the address@hidden
+
+  @var{major} is the name of the @dfn{major mode} in effect in the buffer.  At
+any time, each buffer is in one and only one major mode.
+The available major modes include Fundamental mode (the least specialized),
+Text mode, Lisp mode, and C mode.  @xref{Major Modes}, for details
+on how the modes differ and how you select address@hidden
+
+  @var{minor} is a list of some of the @dfn{minor modes} that are turned on
+in the window's chosen buffer.  For example, @samp{Fill} means that Auto
+Fill mode is on.  @code{Abbrev} means that Word Abbrev mode is on.
address@hidden means that Overwrite mode is on.  @xref{Minor Modes}, for more
+information.  @samp{Narrow} means that the buffer being displayed has
+editing restricted to only a portion of its text.  This is not really a
+minor mode, but is like one.  @xref{Narrowing}.  @code{Def} means that a
+keyboard macro is being defined.  @xref{Keyboard Macros}.
+
+  Some buffers display additional information after the minor modes.  For
+example, Rmail buffers display the current message number and the total
+number of messages.  Compilation buffers and Shell mode display the status
+of the subprocess.
+
+  If XEmacs is currently inside a recursive editing level, square
+brackets (@address@hidden) appear around the parentheses that surround
+the modes.  If XEmacs is in one recursive editing level within another,
+double square brackets appear, and so on.  Since information on
+recursive editing applies to XEmacs in general and not to any one buffer,
+the square brackets appear in every mode line on the screen or not in
+any of them.  @xref{Recursive address@hidden
+
address@hidden display-time
+  XEmacs can optionally display the time and system load in all mode lines.
+To enable this feature, type @kbd{M-x display-time}.  The information added
+to the mode line usually appears after the file name, before the mode names
+and their parentheses.  It looks like this:
+
address@hidden
address@hidden:@var{mm}pm @var{l.ll} address@hidden
address@hidden example
+
address@hidden
+(Some fields may be missing if your operating system cannot support them.)
address@hidden and @var{mm} are the hour and minute, followed always by 
@samp{am}
+or @samp{pm}.  @var{l.ll} is the average number of running processes in the
+whole system recently.  @var{d} is an approximate index of the ratio of
+disk activity to CPU activity for all users.
+
+The word @samp{Mail} appears after the load level if there is mail for
+you that you have not read yet.
+
address@hidden mode-line-inverse-video
+  Customization note: the variable @code{mode-line-inverse-video}
+controls whether the mode line is displayed in inverse video (assuming
+the terminal supports it); @code{nil} means no inverse video.  The
+default is @code{t}.  For X frames, simply set the foreground and
+background colors appropriately.
+
address@hidden GUI Components, XEmacs under X, Mode Line, Frame
address@hidden  node-name,  next,  previous,  up
address@hidden GUI Components
+
+When executed in a graphical windowing environment such as the X Window
+System or Microsoft Windows, XEmacs displays several graphical user
+interface components such as scrollbars, menubars, toolbars, and
+gutters.  By default there is a vertical scrollbar at the right of each
+frame, and at the top of the frame there is a menubar, a toolbar, and a
+gutter, in that order.  Gutters can contain any of several widgets, but
+the default configuration puts a set of "notebook tabs" which you can
+use as a shortcut for selecting any of several related buffers in a
+given frame.  Operating the GUI components is "obvious":  click on the
+menubar to pull down a menu, on a button in the toolbar to invoke a
+function, and on a tab in the gutter to switch buffers.
+
address@hidden
+* Menubar Basics::      How XEmacs uses the menubar.
+* Scrollbar Basics::    How XEmacs uses scrollbars.
+* Mode Line Basics::    How XEmacs uses modelines.
+* Toolbar Basics::      How XEmacs uses toolbars.
+* Gutter Basics::       How XEmacs uses gutters.
+* Inhibiting::          What if you don't like GUI?
+* Customizing::         Position, orientation, and appearance of GUI objects.
address@hidden menu
+
address@hidden Menubar Basics, Scrollbar Basics, , GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden The XEmacs Menubar
+
+The XEmacs menubar is intended to be conformant to the usual conventions
+for menubars, although conformance is not yet perfect.  The menu at the
+extreme right is the @samp{Help} menu, which should always be
+available.  It provides access to all the XEmacs help facilities
+available through @kbd{C-h}, as well as samples of various configuration
+files like @samp{~/.Xdefaults} and @samp{~/.emacs}.  At the extreme left
+is the @samp{Files} menu, which provides the usual file reading,
+writing, and printing operations, as well as operations like revert
+buffer from most recent save.  The next menu from the left is the
address@hidden menu, which provides the @samp{Undo} operation as well as
+cutting and pasting, searching, and keyboard macro definition and
+execution.
+
address@hidden #### w3.el and VM should get cross-references here.
+XEmacs provides a very dynamic environment, and the Lisp language makes
+for highly flexible applications.  The menubar reflects this: many menus
+(eg, the @samp{Buffers} menu, @pxref{Buffers Menu}) contain items
+determined by the current state of XEmacs, and most major modes and many
+minor modes add items to menus and even whole menus to the menubar.  In
+fact, some applications like w3.el and VM provide so many menus that
+they define a whole new menubar and add a button that allows convenient
+switching between the ``XEmacs menubar'' and the ``application
+menubar''.  Such applications normally bind themselves to a particular
+frame, and this switching only takes place on frames where such an
+application is active (ie, the current window of the frame is displaying
+a buffer in the appropriate major mode).
+
+Other menus which are typically available are the @samp{Options},
address@hidden, @samp{Buffers}, @samp{Apps}, and @samp{Mule} menus.  For
+detailed descriptions of these menus, @ref{Pull-down Menus}.  (In 21.2
+XEmacsen, the @samp{Mule} menu will be moved under @samp{Options}.)
+
address@hidden Scrollbar Basics, Mode Line Basics, Menubar Basics, GUI 
Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Scrollbars
+
+XEmacs scrollbars provide the usual interface.  Arrow buttons at either
+end allow for line by line scrolling, including autorepeat.  Clicking in
+the scrollbar itself provides scrolling by windowsfull, depending on
+which side of the slider is clicked.  The slider itself may be dragged
+for smooth scrolling.
+
+The position of the slider corresponds to the position of the window in
+the buffer.  In particular, the length of the slider is proportional to
+the fraction of the buffer which appears in the window.
+
+The presence of the scrollbars is under control of the application or
+may be customized by the user.  By default a vertical scrollbar is
+present in all windows (except the minibuffer), and there is no
+horizontal scrollbar.
+
address@hidden Mode Line Basics, Toolbar Basics, Scrollbar Basics, GUI 
Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Mode Lines
+
+When used in a windowing system, the XEmacs modelines can be dragged
+vertically. The effect is to resize the windows above and below the
+modeline (this includes the minibuffer window).
+
+Additionally, a modeline can be dragged horizontally, in which case it
+scrolls its own text. This behavior is not enabled by default because it
+could be considered as disturbing when dragging vertically. When this
+behavior is enabled, the modeline's text can be dragged either in the
+same direction as the mouse, or in the opposite sense, making the
+modeline act as a scrollbar for its own text.
+
+You can select the behavior you want from the @samp{Display} submenu of
+the @samp{Options} menu.
+
address@hidden Toolbar Basics, Gutter Basics, Mode Line Basics, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Toolbars
+
+XEmacs has a default toolbar which provides shortcuts for some of the
+commonly used operations (such as opening files) and applications (such
+as the Info manual reader).  Operations which require arguments will pop
+up dialogs to get them.
+
+The position of the default toolbar can be customized.  Also, several
+toolbars may be present simultaneously (in different positions).  VM,
+for example, provides an application toolbar which shortcuts for
+mail-specific operations like sending, saving, and deleting messages.
+
address@hidden Gutter Basics, Inhibiting, Toolbar Basics, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Gutters
+
+Gutters are the most flexible of the GUI components described in this
+section.  In theory, the other GUI components could be implemented by
+customizing a gutter, but in practice the other components were
+introduced earlier and have their own special implementations.  Gutters
+tend to be more transient than the other components.  Buffer tabs, for
+example, change every time the selected buffer in the frame changes.
+And for progress gauges a gutter to contain the gauge is typically
+created on the fly when needed, then destroyed when the operation whose
+staus is being displayed is completed.
+
+Buffer tabs, having somewhat complex behavior, deserve a closer look.
+By default, a row of buffer tabs is displayed at the top of every frame.
+(The tabs could be placed in the bottom gutter, but would be oriented
+the same way and look rather odd.  The horizontal orientation makes
+putting them in a side gutter utterly impractical.)  The buffer
+displayed in the current window of a frame can be changed to a specific
+buffer by clicking [mouse-1] on the corresponding tab in the gutter.
+
+Each tab contains the name of its buffer.  The tab for the current
+buffer in each frame is displayed in raised relief.  The list of buffers
+chosen for display in the buffer tab row is derived by filtering the
+buffer list (like the @code{Buffers} menu).  The list starts out with
+all existing buffers, with more recently selected buffers coming earlier
+in the list.
+
+Then "uninteresting" buffers, like internal XEmacs buffers, the
address@hidden Log*} buffer, and so on are deleted from the list.  Next,
+the frame's selected buffer is determined.  Buffers with a different
+major mode from the selected buffer are removed from the list.  Finally,
+if the list is too long, the least recently used buffers are deleted
+from the list.  By default up to 6 most recently used buffers with the
+same mode are displayed on tabs in the gutter.
+
address@hidden Inhibiting, Customizing, Gutter Basics, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden Inhibiting Display of GUI Components
+
+Use of GUI facilities is a personal thing.  Almost everyone agrees that
+drawing via keyboard-based "turtle graphics" is acceptable to hardly
+anyone if a mouse is available, but conversely emulating a keyboard with
+a screenful of buttons is a painful experience.  But between those
+extremes the complete novice will require a fair amount of time before
+toolbars and menus become dispensable, but many an "Ancien Haquer" sees
+them as a complete waste of precious frame space that could be filled
+with text.
+
+Display of all of the GUI components created by XEmacs can be inhibited
+through the use of Customize.  Customize can be accessed through
address@hidden | Customize} in the menu bar, or via @kbd{M-x customize}.
+Then navigate through the Customize tree to @samp{Emacs | Environment}.
+Scrollbar and toolbar visibility is controlled via the @samp{Display}
+group, options @samp{Scrollbars visible} and  @samp{Toolbar visible}
+respectively.  Gutter visibility is controlled by group @samp{Gutter},
+option @samp{Visible}.
+
+Or they can be controlled directly by @kbd{M-x customize-variable}, by
+changing the values of the variables @code{menubar-visible-p},
address@hidden, @code{toolbar-visible-p}, or
address@hidden respectively.  (The strange form of
+the last variable is due to the fact that gutters are often used to
+display transient widgets like progress gauges, which you probably don't
+want to inhibit.  It is more likely that you want to inhibit the default
+display of the buffers tab widget, which is what that variable controls.
+This interface is subject to change depending on developer experience
+and user feedback.)
+
+Control of frame configuration can controlled automatically according to
+various parameters such as buffer or frame because these are
address@hidden @ref{Specifiers, , , lispref}.  Using these features
+requires programming in Lisp; Customize is not yet that sophisticated.
+Also, components that appear in various positions and orientations can
+have display suppressed according to position.  @kbd{C-h a visible-p}
+gives a list of variables which can be customized.  E.g., to control the
+visibility of specifically the left-side toolbar only, customize
address@hidden
+
address@hidden Customizing, , Inhibiting, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden Changing the Position, Orientation, and Appearance of GUI 
Components
+
+  #### Not documented yet.
+
address@hidden XEmacs under X, XEmacs under MS Windows, GUI Components, Frame
address@hidden Using XEmacs Under the X Window System
address@hidden  node-name,  next,  previous,  up
+
+XEmacs can be used with the X Window System and a window manager like
+MWM or TWM.  In that case, the X window manager opens, closes, and
+resizes XEmacs frames.  You use the window manager's mouse gestures to
+perform the operations.  Consult your window manager guide or reference
+manual for information on manipulating X windows.
+
+When you are working under X, each X window (that is, each XEmacs frame)
+has a menu bar for mouse-controlled operations (@pxref{Pull-down Menus}).
+
address@hidden multi-frame XEmacs
address@hidden make-frame
+XEmacs under X is also a multi-frame XEmacs.  You can use the @b{New
+Frame} menu item from the @b{File} menu to create a new XEmacs frame in a
+new X window from the same process.  The different frames will share the
+same buffer list, but you can look at different buffers in the different
+frames.
+
address@hidden find-file-other-frame
+The function @code{find-file-other-frame} is just like @code{find-file},
+but creates a new frame to display the buffer in first.  This is
+normally bound to @kbd{C-x 5 C-f}, and is what the @b{Open File, New
+Frame} menu item does.
+
address@hidden switch-to-buffer-other-frame
+The function @code{switch-to-buffer-other-frame} is just like
address@hidden, but creates a new frame to display the buffer
+in first.  This is normally bound to @kbd{C-x 5 b}.
+
address@hidden default-frame-alist
address@hidden default-frame-plist
+You can specify a different default frame size other than the one provided.
+Use the variable @code{default-frame-plist}, which is a plist of default
+values for frame creation other than the first one.  These may be set in
+your init file, like this:
+
address@hidden
+  (setq default-frame-plist '(width 80 height 55))
address@hidden example
+
+This variable has replaced @code{default-frame-alist}, which is
+considered obsolete.
+
address@hidden x-frame-defaults
+For values specific to the first XEmacs frame, you must use X resources.
+The variable @code{x-frame-defaults} takes an alist of default frame
+creation parameters for X window frames.  These override what is
+specified in @file{~/.Xdefaults} but are overridden by the arguments to
+the particular call to @code{x-create-frame}.
+
address@hidden create-frame-hook
+When you create a new frame, the variable @code{create-frame-hook}
+is called with one argument, the frame just created.
+
+If you want to close one or more of the X windows you created using
address@hidden Frame}, use the @b{Delete Frame} menu item from the @b{File} 
menu.
+
address@hidden frame-title-format
address@hidden frame-icon-title-format
+If you are working with multiple frames, some special information
+applies:
address@hidden @bullet
address@hidden
+Two variables, @code{frame-title-format} and
address@hidden determine the title of the frame and
+the title of the icon that results if you shrink the frame.
+
address@hidden auto-lower-frame
address@hidden auto-raise-frame
address@hidden
+The variables @code{auto-lower-frame} and @code{auto-raise-frame}
+position a frame. If true, @code{auto-lower-frame} lowers a frame to
+the bottom when it is no longer selected. If true,
address@hidden raises a frame to the top when it is
+selected. Under X, most ICCCM-compliant window managers will have
+options to do this for you, but these variables are provided in case you
+are using a broken window manager.
+
address@hidden
+There is a new frame/modeline format directive, %S, which expands to
+the name of the current frame (a frame's name is distinct from its
+title; the name is used for resource lookup, among other things, and the
+title is simply what appears above the window.)
address@hidden itemize
+
address@hidden XEmacs under MS Windows, , XEmacs under X, Frame
address@hidden Using XEmacs Under Microsoft Windows
address@hidden  node-name,  next,  previous,  up
+
+Use of XEmacs under MS Windows is not separately documented here, but
+most operations available under the X Window System are also available
+with MS Windows.
+
+Where possible, native MS Windows GUI components and capabilities are
+used in XEmacs.
+
address@hidden Keystrokes, Pull-down Menus, Frame, Top
address@hidden Keystrokes, Key Sequences, and Key Bindings
+
+
address@hidden
+* Intro to Keystrokes::      Keystrokes as building blocks of key sequences.
+* Representing Keystrokes::  Using lists of modifiers and keysyms to
+                             represent keystrokes.
+* Key Sequences::            Combine key strokes into key sequences you can
+                             bind to commands.
+* String Key Sequences::     Available for upward compatibility.
+* Meta Key::                 Using @key{ESC} to represent @key{Meta}
+* Super and Hyper Keys::     Adding modifier keys on certain keyboards.
+* Character Representation:: How characters appear in Emacs buffers.
+* Commands::                 How commands are bound to key sequences.
address@hidden menu
+ 
address@hidden Intro to Keystrokes, Representing Keystrokes, Keystrokes, 
Keystrokes
address@hidden Keystrokes as Building Blocks of Key Sequences
address@hidden character set
address@hidden ASCII
address@hidden keystroke
+
+      Earlier versions of Emacs used only the ASCII character set,
+which defines 128 different character codes.  Some of these codes are
+assigned graphic symbols like @samp{a} and @samp{=}; the rest are
+control characters, such as @kbd{Control-a} (also called @kbd{C-a}).
address@hidden means you hold down the @key{CTRL} key and then press
address@hidden@refill
+
+   Keybindings in XEmacs are not restricted to the set of
+keystrokes that can be represented in ASCII.  XEmacs can tell the
+difference between, for example, @kbd{Control-h}, @kbd{Control-Shift-h},
+and @kbd{Backspace}.
+  
address@hidden modifier key
address@hidden keysym
address@hidden meta key
address@hidden control key
address@hidden hyper key
address@hidden super key
address@hidden shift key
address@hidden button1 
address@hidden button2
address@hidden button3
address@hidden button1up
address@hidden button2up
address@hidden button3up
+
+  A keystroke is like a piano chord: you get it by simultaneously
+striking several keys.  To be more precise, a keystroke consists
+of a possibly empty set of modifiers followed by a single
address@hidden  The set of modifiers is small; it consists of
address@hidden, @kbd{Meta}, @kbd{Super}, @kbd{Hyper}, and @kbd{Shift}.
+
+  The rest of the keys on your keyboard, along with the mouse buttons,
+make up the set of keysyms.  A keysym is usually what is printed on the
+keys on your keyboard.  Here is a table of some of the symbolic names
+for keysyms:
address@hidden @kbd
address@hidden a,b,c...
+alphabetic keys
address@hidden f1,f2...
+function keys
address@hidden button1
+left mouse button
address@hidden button2
+middle mouse button
address@hidden button3
+right mouse button
address@hidden button1up 
+upstroke on the left mouse button
address@hidden button2up
+upstroke on the middle mouse button
address@hidden button3up
+upstroke on the right mouse button
address@hidden return
+Return key
address@hidden table
+
address@hidden keyboard-translate-table
+Use the variable @code{keyboard-translate-table} only if you are on a
+dumb tty, as it cannot handle input that cannot be represented as ASCII.
+The value of this variable is a string used as a translate table for
+keyboard input or @code{nil}.  Each character is looked up in this
+string and the contents used instead.  If the string is of length
address@hidden, character codes @code{N} and up are untranslated.  If you are
+running Emacs under X, you should do the translations with the
address@hidden program instead.
+
+
address@hidden Representing Keystrokes, Key Sequences, Intro to Keystrokes, 
Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Representing Keystrokes
address@hidden hyper key
address@hidden super key
address@hidden read-key-sequence
+
+  XEmacs represents keystrokes as lists. Each list consists of
+an arbitrary combination of modifiers followed by a single keysym at the
+end of the list.  If the keysym corresponds to an ASCII character, you
+can use its character code.  (A keystroke may also be represented by an
+event object, as returned by the @code{read-key-sequence} function;
+non-programmers need not worry about this.)
+
+The following table gives some examples of how to list representations
+for keystrokes.  Each list consists of sets of modifiers followed by
+keysyms:
+
address@hidden @kbd
address@hidden (control a)
+Pressing @key{CTRL} and @kbd{a} simultaneously.
address@hidden (control ?a)
+Another way of writing the keystroke @kbd{C-a}.
address@hidden (control 65)
+Yet another way of writing the keystroke @kbd{C-a}.
address@hidden (break)
+Pressing the @key{BREAK} key.
address@hidden (control meta button2up)
+Release the middle mouse button, while pressing @key{CTRL} and
address@hidden 
address@hidden table
address@hidden shift modifier
+  Note: As you define keystrokes, you can use the @kbd{shift} key only
+as a modifier with characters that do not have a second keysym on the
+same key, such as @kbd{backspace} and @kbd{tab}.  It is an error to
+define a keystroke using the @key{shift} modifier with keysyms such as
address@hidden and @kbd{=}.  The correct forms are @kbd{A} and @kbd{+}.
+
address@hidden Key Sequences, String Key Sequences, Representing Keystrokes, 
Keystrokes
address@hidden Representing Key Sequences
+
+  A @dfn{complete key sequence} is a sequence of keystrokes that Emacs
+understands as a unit.  Key sequences are significant because you can
+bind them to commands.  Note that not all sequences of keystrokes are
+possible key sequences.  In particular, the initial keystrokes in a key
+sequence must make up a @dfn{prefix key sequence}.
+
+  Emacs represents a key sequence as a vector of keystrokes.  Thus, the
+schematic representation of a complete key sequence is as follows:
+
address@hidden
+  [(modifier .. modifier keysym) ... (modifier .. modifier keysym)]
address@hidden example
+
+  Here are some examples of complete key sequences:
+
address@hidden @kbd
address@hidden [(control c) (control a)]
+Typing @kbd{C-c} followed by @kbd{C-a}
address@hidden [(control c) (control 65)]
+Typing @kbd{C-c} followed by @kbd{C-a}. (Using the ASCII code
+for the character `a')@refill
address@hidden [(control c) (break)]
+Typing @kbd{C-c} followed by the @kbd{break} address@hidden
address@hidden table
+
address@hidden C-c
address@hidden C-x
address@hidden C-h
address@hidden ESC
address@hidden prefix key sequence
+
+  A @dfn{prefix key sequence} is the beginning of a series of longer
+sequences that are valid key sequences; adding any single keystroke to
+the end of a prefix results in a valid key sequence.  For example,
address@hidden is standardly defined as a prefix.  Thus there is a
+two-character key sequence starting with @kbd{C-x} for each valid
+keystroke, giving numerous possibilities.  Here are some samples:
+
address@hidden @bullet
address@hidden
address@hidden(control x) (c)]}
address@hidden
address@hidden(control x) (control c)]}
address@hidden itemize
+
+  Adding one character to a prefix key does not have to form a complete
+key.  It could make another, longer prefix.  For example, @kbd{[(control
+x) (\4)]} is itself a prefix that leads to any number of different
+three-character keys, including @kbd{[(control x) (\4) (f)]},
address@hidden(control x) (\4) (b)]} and so on.  It would be possible to define
+one of those three-character sequences as a prefix, creating a series of
+four-character keys, but we did not define any of them this address@hidden
+
+  By contrast, the two-character sequence @kbd{[(control f) (control
+k)]} is not a key, because the @kbd{(control f)} is a complete key
+sequence in itself.  You cannot give @kbd{[(control f (control k)]} an
+independent meaning as a command while @kbd{(control f)} is a complete
+sequence, because Emacs would understand @key{C-f C-k} as two
address@hidden
+
+ The predefined prefix key sequences in Emacs are @kbd{(control c)},
address@hidden(control x)}, @kbd{(control h)}, @kbd{[(control x) (\4)]}, and
address@hidden  You can customize Emacs and could make new prefix keys or
+eliminate the default key sequences.  @xref{Key Bindings}.  For example,
+if you redefine @kbd{(control f)} as a prefix, @kbd{[(control f)
+(control k)]} automatically becomes a valid key sequence (complete,
+unless you define it as a prefix as well).  Conversely, if you remove
+the prefix definition of @kbd{[(control x) (\4)]}, @kbd{[(control x)
+(\4) (f)]} (or @kbd{[(control x) (\4) @var{anything}]}) is no longer a
+valid key sequence.
+
+Note that the above paragraphs uses \4 instead of simply 4, because \4
+is the symbol whose name is "4", and plain 4 is the integer 4, which
+would have been interpreted as the ASCII value.  Another way of
+representing the symbol whose name is "4" is to write ?4, which would be
+interpreted as the number 52, which is the ASCII code for the character
+"4".  We could therefore actually have written 52 directly, but that is
+far less clear.
+
address@hidden String Key Sequences, Meta Key, Key Sequences, Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden  String Key Sequences
+For backward compatibility, you may also represent a key sequence using
+strings.  For example, we have the following equivalent representations:
+
address@hidden @kbd
address@hidden "\C-c\C-c"
address@hidden(control c) (control c)]}
address@hidden "\e\C-c"
address@hidden(meta control c)]}
address@hidden table
+
address@hidden LFD
address@hidden TAB
+
address@hidden Meta Key, Super and Hyper Keys, String Key Sequences, Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Assignment of the @key{META} Key
+ 
address@hidden META
address@hidden ESC
+  Not all terminals have the complete set of modifiers.  
+Terminals that have a @key{Meta} key allow you to type Meta characters
+by just holding that key down.  To type @kbd{Meta-a}, hold down
address@hidden and press @kbd{a}.  On those terminals, the @key{META} key
+works like the @key{SHIFT} key.  Such a key is not always labeled
address@hidden, however, as this function is often a special option for a
+key with some other primary address@hidden
+
+  If there is no @key{META} key, you can still type Meta characters
+using two-character sequences starting with @key{ESC}.  To enter
address@hidden, you could type @address@hidden a}.  To enter @kbd{C-M-a}, you
+would type @kbd{ESC C-a}.  @key{ESC} is allowed on terminals with
+Meta keys, too, in case you have formed a habit of using address@hidden
+
+If you are running under X and do not have a @key{META} key, it 
+is possible to reconfigure some other key to be a @key{META} 
+key.  @xref{Super and Hyper Keys}. @refill
+
address@hidden meta-flag
+  Emacs believes the terminal has a @key{META} key if the variable
address@hidden is address@hidden  Normally this is set automatically
+according to the termcap entry for your terminal type.  However, sometimes
+the termcap entry is wrong, and then it is useful to set this variable
+yourself.  @xref{Variables}, for how to do this.
+
+Note: If you are running under the X window system, the setting of
+the @code{meta-flag} variable is irrelevant. 
+
address@hidden Super and Hyper Keys, Character Representation, Meta Key, 
Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Assignment of the @key{SUPER} and @key{HYPER} Keys
address@hidden hyper key
address@hidden super key
+
+  Most keyboards do not, by default, have @key{SUPER} or @key{HYPER}
+modifier keys.  Under X, you can simulate the @key{SUPER} or
address@hidden key if you want to bind keys to sequences using @kbd{super}
+and @kbd{hyper}.  You can use the @code{xmodmap} program to do this.
+
+  For example, to turn your @key{CAPS-LOCK} key into a @key{SUPER} key,
+do the following:
+
+  Create a file called @code{~/.xmodmap}.  In this file, place the lines
+
address@hidden
+        remove Lock = Caps_Lock
+        keysym Caps_Lock = Super_L
+        add Mod2 = Super_L
address@hidden example
+
+The first line says that the key that is currently called @code{Caps_Lock}
+should no longer behave as a ``lock'' key.  The second line says that
+this should now be called @code{Super_L} instead.  The third line says that 
+the key called @code{Super_L} should be a modifier key, which produces the
address@hidden modifier.
+
+To create a @key{META} or @key{HYPER} key instead of a @key{SUPER} key,
+replace the word @code{Super} above with @code{Meta} or @code{Hyper}.
+
+Just after you start up X, execute the command @code{xmodmap /.xmodmap}.
+You can add this command to the appropriate initialization file to have
+the command executed address@hidden
+
+If you have problems, see the documentation for the @code{xmodmap}
+program.  The X keyboard model is quite complicated, and explaining
+it is beyond the scope of this manual.  However, we reprint the 
+following description from the X Protocol document for your convenience:
+
address@hidden keysyms
address@hidden keycode
+
+ A list of keysyms is associated with each keycode. If that list
+(ignoring trailing @code{NoSymbol} entries) is a single keysym @samp{K},
+then the list is treated as if it were the list 
address@hidden NoSymbol K NoSymbol''}. If the list (ignoring trailing 
address@hidden entries) is a pair of keysyms @samp{K1 K2}, then the 
+list is treated as if it were the list @code{``K1 K2 K1 K2''}. If the 
+list (ignoring trailing @code{NoSymbol} entries) is a triple of keysyms 
address@hidden K2 K3}, then the list is treated as if it were the list 
address@hidden K2 K3 NoSymbol''}.
+
+ The first four elements of the list are split into two groups of 
+keysyms. Group 1 contains the first and second keysyms; Group 2 contains
+third and fourth keysyms. Within each group, if the second element of
+the group is NoSymbol, then the group should be treated as if the second
+element were the same as the first element, except when the first
+element is an alphabetic keysym @samp{K} for which both lowercase and 
+uppercase forms are defined. In that case, the group should be treated 
+as if the first element were the lowercase form of @samp{K} and the second 
+element were the uppercase form of @samp{K}.
+
+ The standard rules for obtaining a keysym from a KeyPress event make use of 
+only the Group 1 and Group 2 keysyms; no interpretation of other keysyms in 
+the list is given here. (That is, the last four keysyms are unused.)
+
+ Which group to use is determined by modifier state. Switching between
+groups is controlled by the keysym named @code{Mode_switch}. Attach that
+keysym to some keycode and attach that keycode to any one of the
+modifiers Mod1 through Mod5. This modifier is called the @dfn{group
+modifier}. For any keycode, Group 1 is used when the group modifier is
+off, and Group 2 is used when the group modifier is on.
+
+ Within a group, which keysym to use is also determined by modifier
+state. The first keysym is used when the @code{Shift} and @code{Lock} 
+modifiers are off. The second keysym is used when the @code{Shift} 
+modifier is on, or when the @code{Lock} modifier is on and the second 
+keysym is uppercase alphabetic, or when the @code{Lock} modifier is on 
+and is interpreted as @code{ShiftLock}. Otherwise, when the @code{Lock} 
+modifier is on and is interpreted as @code{CapsLock}, the state of the 
address@hidden modifier is applied first to select a keysym, 
+but if that keysym is lower-case alphabetic, then the corresponding 
+upper-case keysym is used instead.
+
+ In addition to the above information on keysyms, we also provide the 
+following description of modifier mapping from the InterClient 
+Communications Conventions Manual:
+
address@hidden modifier mapping
+
+ X11 supports 8 modifier bits, of which 3 are pre-assigned to 
address@hidden, @code{Lock}, and @code{Control}. Each modifier bit is 
+controlled by the state of a set of keys, and these sets are specified 
+in a table accessed by @code{GetModifierMapping()} and 
address@hidden()}.
+
+ A client needing to use one of the pre-assigned modifiers should assume
+that the modifier table has been set up correctly to control these
+modifiers. The @code{Lock} modifier should be interpreted as @code{Caps
+Lock} or @code{Shift Lock} according to whether the keycodes in its
+controlling set include @code{XK_Caps_Lock} or @code{XK_Shift_Lock}.
+
+ Clients should determine the meaning of a modifier bit from the keysyms 
+being used to control it.
+
+A client needing to use an extra modifier, for example @code{Meta}, should:
+
address@hidden
address@hidden
+Scan the existing modifier mappings.
+
address@hidden
address@hidden
+If it finds a modifier that contains a keycode whose set of keysyms 
+includes @code{XK_Meta_L} or @code{XK_Meta_R}, it should use that 
+modifier bit.
+
address@hidden
+If there is no existing modifier controlled by @code{XK_Meta_L} or 
address@hidden, it should select an unused modifier bit (one with 
+an empty controlling set) and:
address@hidden enumerate
+
address@hidden
+If there is a keycode with @code{XL_Meta_L} in its set of keysyms, 
+add that keycode to the set for the chosen modifier, and then:
+
address@hidden
address@hidden
+If there is a keycode with @code{XL_Meta_R} in its set of keysyms, 
+add that keycode to the set for the chosen modifier, and then:
+
address@hidden
+If the controlling set is still empty, interact with the user to 
+select one or more keys to be @code{Meta}.
address@hidden enumerate
+
+
address@hidden
+If there are no unused modifier bits, ask the user to take corrective action.
address@hidden enumerate
+
+ This means that the @code{Mod1} modifier does not necessarily mean 
address@hidden, although some applications (such as twm and emacs 18) 
+assume that. Any of the five unassigned modifier bits could mean 
address@hidden; what matters is that a modifier bit is generated by a 
+keycode which is bound to the keysym @code{Meta_L} or @code{Meta_R}.
+
+ Therefore, if you want to make a @key{META} key, the right way 
+is to make the keycode in question generate both a @code{Meta} keysym 
+and some previously-unassigned modifier bit.
+
address@hidden Character Representation, Commands, Super and Hyper Keys, 
Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Representation of Characters
+
+This section briefly discusses how characters are represented in Emacs
+buffers.  @xref{Key Sequences}, for information on representing key
+sequences to create key bindings. 
+
+  ASCII graphic characters in Emacs buffers are displayed with their
+graphics.  @key{LFD} is the same as a newline character; it is displayed
+by starting a new line.  @key{TAB} is displayed by moving to the next
+tab stop column (usually every 8 spaces).  Other control characters are
+displayed as a caret (@samp{^}) followed by the non-control version of
+the character; thus, @kbd{C-a} is displayed as @samp{^A}.  Non-ASCII
+characters 128 and up are displayed with octal escape sequences; thus,
+character code 243 (octal), also called @kbd{M-#} when used as an input
+character, is displayed as @samp{\243}.
+
+The variable @code{ctl-arrow} may be used to alter this behavior.
address@hidden Vars}.
+
address@hidden Commands, , Character Representation, Keystrokes
address@hidden Keys and Commands
+
address@hidden binding
address@hidden customization
address@hidden keymap
address@hidden function
address@hidden command
+  This manual is full of passages that tell you what particular keys do.
+But Emacs does not assign meanings to keys directly.  Instead, Emacs
+assigns meanings to @dfn{functions}, and then gives keys their meanings
+by @dfn{binding} them to functions.
+
+ A function is a Lisp object that can be executed as a program.  Usually
+it is a Lisp symbol that has been given a function definition; every
+symbol has a name, usually made of a few English words separated by
+dashes, such as @code{next-line} or @code{forward-word}.  It also has a
address@hidden, which is a Lisp program.  Only some functions can be the
+bindings of keys; these are functions whose definitions use
address@hidden to specify how to call them interactively.  Such
+functions are called @dfn{commands}, and their names are @dfn{command
+names}.  More information on this subject will appear in the @i{XEmacs
+Lisp Reference Manual}.
+
+  The bindings between keys and functions are recorded in various tables
+called @dfn{keymaps}.  @xref{Key Bindings}, for more information on key
+sequences you can bind commands to.  @xref{Keymaps}, for information on
+creating keymaps.
+
+  When we say  address@hidden moves down vertically one line'' we are
+glossing over a distinction that is irrelevant in ordinary use but is
+vital in understanding how to customize Emacs.  The function
address@hidden is programmed to move down vertically.  @kbd{C-n}
+has this effect @i{because} it is bound to that function.  If you rebind
address@hidden to the function @code{forward-word} then @kbd{C-n} will move
+forward by words instead.  Rebinding keys is a common method of
address@hidden
+
+   The rest of this manual usually ignores this subtlety to keep
+things simple.  To give the customizer the information needed, we often
+state the name of the command that really does the work in parentheses
+after mentioning the key that runs it.  For example, we will say that
+``The command @kbd{C-n} (@code{next-line}) moves point vertically
+down,'' meaning that @code{next-line} is a command that moves vertically
+down and @kbd{C-n} is a key that is standardly bound to it.
+
address@hidden variables
+  While we are on the subject of information for customization only,
+it's a good time to tell you about @dfn{variables}.  Often the
+description of a command will say, ``To change this, set the variable
address@hidden''  A variable is a name used to remember a value.
+Most of the variables documented in this manual exist just to facilitate
+customization: some command or other part of Emacs uses the variable
+and behaves differently depending on its setting.  Until you are interested in
+customizing, you can ignore the information about variables.  When you
+are ready to be interested, read the basic information on variables, and 
+then the information on individual variables will make sense.
address@hidden
+
address@hidden Pull-down Menus, Entering Emacs, Keystrokes, Top
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Pull-down Menus 
+
+If you are running XEmacs under X, a menu bar on top of the
+Emacs frame provides access to pull-down menus of file, edit, and
+help-related commands. The menus provide convenient shortcuts and an
+easy interface for novice users.  They do not provide additions to the
+functionality available via key commands; you can still invoke commands
+from the keyboard as in previous versions of Emacs.
+        
address@hidden @b
address@hidden File
+Perform file and buffer-related operations, such as opening and closing
+files, saving and printing buffers, as well as exiting Emacs.
address@hidden File menu
+
address@hidden Edit
+Perform standard editing operations, such as 
+cutting, copying, pasting, and killing selected text.
address@hidden Edit menu
+
address@hidden #### The Mule menu needs to be documented, but this is not the 
place
address@hidden for it since Ben just moved it.
+
address@hidden Apps
+Access to sub-applications implemented within XEmacs, such as the mail
+reader, the World Wide Web browser, the spell-checker, and the calendar
+program.
address@hidden Apps menu
+
address@hidden Options
+Control various options regarding the way XEmacs works, such as controlling
+which elements of the frame are visible, selecting the fonts to be used for
+text, specifying whether searches are case-sensitive, etc.
address@hidden Options menu
+
address@hidden Buffers
+Present a menu of buffers for selection as well as the option to display
+a buffer list.
address@hidden Buffers menu
+
address@hidden Tools
+Perform various actions designed to automate software development and
+similar technical work, such as searching through many files, compiling
+a program, and comparing or merging two or three files.
address@hidden Tools menu
+
address@hidden Help
+Access to Emacs Info.
address@hidden Help menu
address@hidden table
address@hidden Pull-down Menus
address@hidden menus
+
+There are two ways of selecting an item from a pull-down menu:
+
address@hidden @bullet
address@hidden
+Select an item in the menu bar by moving the cursor over it and click the
+left mouse-button.  Then move the cursor over the menu item you want to choose
+and click left again.
address@hidden
+Select an item in the menu bar by moving the cursor over it and click and
+hold the left mouse-button.  With the mouse-button depressed, move the
+cursor over the menu item you want, then release it to make your selection. 
address@hidden itemize
+
+If a command in the pull-down menu is not applicable in a given
+situation, the command is disabled and its name appears faded.  You
+cannot invoke items that are faded.  For example, many commands on the
address@hidden menu appear faded until you select text on which they are to
+operate; after you select a block of text, edit commands are enabled.
address@hidden Selection}, for information on using the mouse to select
+text.  @xref{Using X Selections}, for related information.
+
+There are also @kbd{M-x} equivalents for each menu item.  To find the
+equivalent for any left-button menu item, do the following:
+
address@hidden
address@hidden
+Type @kbd{C-h k} to get the @code{Describe Key} prompt. 
address@hidden
+Select the menu item and click. 
address@hidden enumerate
+
+Emacs displays the function associated with the menu item in a separate
+window, usually together with some documentation. 
+
address@hidden
+* File Menu::           Items on the File menu.
+* Edit Menu::           Items on the Edit menu.
+* Apps Menu::          Items on the Apps menu.
+* Options Menu::        Items on the Options menu. 
+* Buffers Menu::        Information about the Buffers menu.
+* Tools Menu::         Items on the Tools menu.
+* Help Menu::           Items on the Help menu. 
+* Menu Customization::  Adding and removing menu items and related
+                        operations.
address@hidden menu
+
address@hidden File Menu
address@hidden The File Menu
+
address@hidden File menu
+
+The @b{File} menu bar item contains the items @b{New Frame}, @b{Open
+File...}, @b{Save Buffer}, @b{Save Buffer As...}, @b{Revert Buffer},
address@hidden Buffer}, @b{Delete Frame}, @b{Kill Buffer} and @b{Exit Emacs}
+on the pull-down menu.  If you select a menu item, Emacs executes the
+equivalent command.
+
address@hidden Open File, New Frame... menu item
address@hidden Open File... menu item
address@hidden Insert File... menu item
address@hidden Save Buffer menu item
address@hidden Save Buffer As ... menu item
address@hidden Revert Buffer menu item
address@hidden Kill Buffer menu item
address@hidden Print Buffer menu item
address@hidden New Frame menu item
address@hidden Delete Frame menu item
address@hidden Split Frame
address@hidden Un-split (Keep This)
address@hidden Un-split (Keep Others)
address@hidden Exit Emacs menu item
+
address@hidden @b
address@hidden Open File, New Frame...
+Prompts you for a filename and loads that file into a new buffer in a
+new Emacs frame, that is, a new X window running under the same Emacs
+process.  You can remove the frame using the @b{Delete Frame} menu
+item.  When you remove the last frame, you exit Emacs and are prompted
+for confirmation. @refill
+
address@hidden Open File...
+Prompts you for a filename and loads that file into a new buffer. 
address@hidden File...} is equivalent to the Emacs command @code{find-file} 
(@kbd{C-x
+C-f})address@hidden 
+
address@hidden Insert File...
+Prompts you for a filename and inserts the contents of that file into
+the current buffer.  The file associated with the current buffer is
+not changed by this command.  This is equivalent to the Emacs command
address@hidden (@kbd{C-x i})address@hidden 
+
address@hidden Save Buffer 
+Writes and saves the current Emacs buffer as the latest
+version of the current visited file.  @b{Save Buffer} is equivalent to the
+Emacs command @code{save-buffer} (@kbd{C-x C-s})address@hidden
+
address@hidden Save Buffer As... 
+Writes and saves the current Emacs buffer to the filename you specify.
address@hidden Buffer As...} is equivalent to the Emacs command
address@hidden (@kbd{C-x C-w})address@hidden
+
address@hidden Revert Buffer
+Restores the last saved version of the file to the current buffer.  When
+you edit a buffer containing a text file, you must save the buffer
+before your changes become effective.  Use @b{Revert Buffer} if you do
+not want to keep the changes you have made in the buffer.  @b{Revert
+Buffer} is equivalent to the Emacs command @code{revert-file} (@kbd{M-x
+revert-buffer})address@hidden
+
address@hidden Kill Buffer
+Kills the current buffer, prompting you first if there are unsaved
+changes.  This is roughly equivalent to the Emacs command 
address@hidden (@kbd{C-x k}), except that @code{kill-buffer} 
+prompts for the name of a buffer to kill. @refill
+
address@hidden Print Buffer
+Prints a hardcopy of the current buffer.  Equivalent
+to the Emacs command @code{print-buffer} (@kbd{M-x print-buffer})address@hidden
+
address@hidden New Frame
+Creates a new Emacs frame displaying the @code{*scratch*} buffer.  This
+is like the @b{Open File, New Frame...} menu item, except that it does
+not prompt for or load a address@hidden
+
address@hidden Delete Frame 
+Allows you to close all but one of the frames created by @b{New Frame}.
+If you created several Emacs frames belonging to the same Emacs
+process, you can close all but one of them.  When you attempt to close the
+last frame, Emacs informs you that you are attempting to delete the
+last frame.  You have to choose @b{Exit Emacs} for address@hidden
+
address@hidden Split Frame
+Divides the current window on the current frame into two equal-sized
+windows, both displaying the same buffer.  Equivalent to the Emacs
+command @code{split-window-vertically} (@kbd{C-x 2})address@hidden
+
address@hidden Un-split (Keep This)
+If the frame is divided into multiple windows, this removes all windows
+other than the selected one.  Equivalent to the Emacs command
address@hidden (@kbd{C-x 1})address@hidden
+
address@hidden Un-split (Keep Others)
+If the frame is divided into multiple windows, this removes the
+selected window from the frame, giving the space back to one of the
+other windows.  Equivalent to the Emacs command @code{delete-window}
+(@kbd{C-x 0})address@hidden
+
address@hidden Exit Emacs
+Shuts down (kills) the Emacs process.  Equivalent to the Emacs command
address@hidden (@kbd{C-x C-c}).  Before killing the
+Emacs process, the system asks which unsaved buffers to save by going through
+the list of all buffers in that Emacs address@hidden
address@hidden table
+
address@hidden Edit Menu
address@hidden The Edit Menu
address@hidden Edit menu
+
+The @b{Edit} pull-down menu contains the @b{Undo}, @b{Cut}, @b{Copy},
address@hidden, and @b{Clear} menu items.  When you select a menu item, Emacs
+executes the equivalent command.  Most commands on the @b{Edit} menu
+work on a block of text, the X selection.  They appear faded until you
+select a block of text (activate a region) with the mouse.  @xref{Using
+X Selections}, @pxref{Killing}, and @pxref{Yanking} for more
address@hidden
+
address@hidden  **** zmacs-regions is on by default these days - jwz
address@hidden
address@hidden Note: By default, you can use the @b{Edit} menu items on the 
region between
address@hidden point and the mark as well as regions selected with the mouse. 
To change
address@hidden this behavior, set the variable @code{zmacs-regions} to
address@hidden @code{t}. @xref{Active Regions} for more information.
+
address@hidden Undo menu item
address@hidden Cut menu item
address@hidden Copy menu item
address@hidden Paste menu item
address@hidden Clear menu item
address@hidden Start Macro Recording menu item
address@hidden End Macro Recording menu item
address@hidden Execute Last Macro menu item
address@hidden @b
address@hidden Undo 
+Undoes the previous command.  @b{Undo} is equivalent to
+the Emacs command @code{undo} (@kbd{C-x u})address@hidden
+
address@hidden Cut
+Removes the selected text block from the current buffer, makes it the X
+clipboard selection, and places it in the kill ring.  Before executing
+this command, you have to select a region using Emacs region selection
+commands or with the address@hidden 
+
address@hidden Copy 
+Makes a selected text block the X clipboard selection, and places it in
+the kill ring.  You can select text using one of the Emacs region
+selection commands or by selecting a text region with the address@hidden
+
address@hidden Paste 
+Inserts the current value of the X clipboard selection in the current
+buffer.  Note that this is not necessarily the same as the Emacs
address@hidden command, because the Emacs kill ring and the X clipboard
+selection are not the same thing.  You can paste in text you
+have placed in the clipboard using @b{Copy} or @b{Cut}.  You can also
+use @b{Paste} to insert text that was pasted into the clipboard from other
+applications.
+
address@hidden Clear
+Removes the selected text block from the current buffer but does not
+place it in the kill ring or the X clipboard selection. 
+
address@hidden Start Macro Recording
+After selecting this, Emacs will remember every keystroke you type until
address@hidden Macro Recording} is selected.  This is the same as the Emacs 
+command @code{start-kbd-macro} (@kbd{C-x (}).
+
address@hidden End Macro Recording
+Selecting this tells emacs to stop remembering your keystrokes.  This is
+the same as the Emacs command @code{end-kbd-macro} (@kbd{C-x )}).
+
address@hidden Execute Last Macro
+Selecting this item will cause emacs to re-interpret all of the
+keystrokes which were saved between selections of the @b{Start Macro
+Recording} and @b{End Macro Recording} menu items.  This is the same
+as the Emacs command @code{call-last-kbd-macro} (@kbd{C-x e}).
address@hidden table
+
address@hidden Apps Menu
address@hidden The Apps Menu
address@hidden Apps menu
+
+The @b{Apps} pull-down menu contains the @b{Read Mail (VM)...}, @b{Read
+Mail (MH)...}, @b{Send Mail...}, @b{Usenet News}, @b{Browse the Web},
address@hidden, @b{Spell-Check Buffer} and @b{Emulate VI} menu items,
+and the @b{Calendar} and @b{Games} sub-menus.  When you select a menu
+item, Emacs executes the equivalent command.  For some of the menu
+items, there are sub-menus which you will need to select.
+
address@hidden Options Menu
address@hidden The Options Menu
address@hidden Options menu
+
+The @b{Options} pull-down menu contains the @b{Read Only}, @b{Case 
+Sensitive Search}, @b{Overstrike}, @b{Auto Delete Selection}, 
address@hidden Extended Commands}, @b{Syntax Highlighting}, @b{Paren 
+Highlighting}, @b{Font}, @b{Size}, @b{Weight}, @b{Buffers Menu 
+Length...}, @b{Buffers Sub-Menus} and @b{Save Options} menu items. 
+When you select a menu item, Emacs executes the equivalent command. 
+For some of the menu items, there are sub-menus which you will need 
+to select.
+
address@hidden Read Only menu item
address@hidden Case Sensitive Search menu item
address@hidden Overstrike menu item
address@hidden Auto Delete Selection menu item
address@hidden Teach Extended Commands menu item
address@hidden Syntax Highlighting menu item
address@hidden Paren Highlighting menu item
address@hidden Font menu item
address@hidden Size menu item
address@hidden Weight menu item
address@hidden Buffers Menu Length... menu item
address@hidden Buffers Sub-Menus menu item
address@hidden Save Options
address@hidden @b
address@hidden Read Only
+Selecting this item will cause the buffer to visit the file in a 
+read-only mode. Changes to the file will not be allowed. This is 
+equivalent to the Emacs command @code{toggle-read-only} 
+(@kbd{C-x C-q}).
+
address@hidden Case Sensitive Search
+Selecting this item will cause searches to be case-sensitive. If 
+its not selected then searches will ignore case. This option is 
+local to the buffer.
+
address@hidden Overstrike
+After selecting this item, when you type letters they will replace 
+existing text on a one-to-one basis, rather than pushing it to the 
+right. At the end of a line, such characters extend the line. Before 
+a tab, such characters insert until the tab is filled in. This is the 
+same as Emacs command @code{quoted-insert} (@kbd{C-q}).
+
address@hidden Auto Delete Selection
+Selecting this item will cause automatic deletion of the selected 
+region. The typed text will replace the selection if the selection 
+is active (i.e. if its highlighted). If the option is not selected 
+then the typed text is just inserted at the point.
+
address@hidden Teach Extended Commands
+After you  select this item, any time you execute a command with 
address@hidden has a shorter keybinding, you will be shown the 
+alternate binding before the command executes.
+
address@hidden Syntax Highlighting
+You can customize your init file to include the font-lock mode so that
+when you select this item, the comments will be displayed in one face,
+strings in another, reserved words in another, and so on. @xref{Init
+File}.  When @b{Fonts} is selected, different parts of the program will
+appear in different Fonts. When @b{Colors} is selected, then the program
+will be displayed in different colors. Selecting @b{None} causes the
+program to appear in just one Font and Color. Selecting @b{Less} resets
+the Fonts and Colors to a fast, minimal set of decorations. Selecting
address@hidden resets the Fonts and Colors to a larger set of decorations. For
+example, if @b{Less} is selected (which is the default setting) then you
+might have all comments in green color.  Whereas, if @b{More} is
+selected then a function name in the comments themselves might appear in
+a different Color or address@hidden
+
address@hidden Paren Highlighting
+After selecting @b{Blink} from this item, if you place the cursor 
+on a parenthesis, the matching parenthesis will blink. If you select 
address@hidden and place the cursor on a parenthesis, the whole 
+expression of the parenthesis under the cursor will be highlighted. 
+Selecting @b{None} will turn off the options (regarding @b{Paren 
+Highlighting}) which you had selected address@hidden
+
address@hidden Font
+You can select any Font for your program by choosing from one of the 
+available Fonts.
+
address@hidden Size
+You can select any size ranging from @b{2} to @b{24} by selecting the 
+appropriate address@hidden
+
address@hidden Weight
+You can choose either @b{Bold} or @b{Medium} for the address@hidden
+
address@hidden Buffers Menu Length...
+Prompts you for the number of buffers to display. Then it will display 
+that number of most recently selected buffers.
+
address@hidden Buffers Sub-Menus
+After selection of this item the Buffers menu will contain several 
+commands, as submenus of each buffer line. If this item is unselected, 
+then there are no submenus for each buffer line, the only command 
+available will be selecting that buffer.
+
address@hidden Save Options
+Selecting this item will save the current settings of your Options 
+menu to your init file.  @xref{Init File}.
address@hidden table
+
address@hidden Buffers Menu
address@hidden The Buffers Menu
address@hidden Buffers menu
+The @b{Buffers} menu provides a selection of up to ten buffers and the
+item @b{List All Buffers}, which provides a Buffer List. @xref{List
+Buffers}, for more information.  
+
address@hidden Tools Menu
address@hidden The Tools Menu
address@hidden Tools menu
+
+The @b{Tools} pull-down menu contains the @b{Grep...}, @b{Compile...},
address@hidden Command...}, @b{Shell Command on Region...}, @b{Debug(GDB)...}
+and @b{Debug(DBX)...} menu items, and the @b{Compare}, @b{Merge},
address@hidden Patch} and @b{Tags} sub-menus.  When you select a menu item,
+Emacs executes the equivalent command.  For some of the menu items,
+there are sub-menus which you will need to select.
+
address@hidden Help Menu
address@hidden The Help Menu
address@hidden Help menu
+
+The Help Menu gives you access to Emacs Info and provides a menu
+equivalent for each of the choices you have when using @kbd{C-h}. 
address@hidden, for more information. 
+
+The Help menu also gives access to UNIX online manual pages via the
address@hidden Manual Page} option.  
+
address@hidden Menu Customization
address@hidden Customizing XEmacs Menus
+
+You can customize any of the pull-down menus by adding or removing menu
+items and disabling or enabling existing menu items.
+ 
+The following functions are available: 
address@hidden @kbd
address@hidden add-menu: (@var{menu-path} @var{menu-name} @var{menu-items} 
&optional @var{before})
+Add a menu to the menu bar or one of its submenus.
address@hidden add-menu-item: (@var{menu-path} @var{item-name} @var{function}
address@hidden &optional @var{before})
+Add a menu item to a menu, creating the menu first if necessary.
address@hidden delete-menu-item: (@var{path})
+Remove the menu item defined by @var{path} from the menu hierarchy.
address@hidden disable-menu-item: (@var{path})
+Disable the specified menu item.
address@hidden enable-menu-item: (@var{path})
+Enable the specified previously disabled menu item.
address@hidden relabel-menu-item: (@var{path} @var{new-name})
+Change the string of the menu item specified by @var{path} to
address@hidden
+
address@hidden table
+
address@hidden add-menu
address@hidden adding menus
+Use the function @code{add-menu} to add a new menu or submenu.
+If a menu or submenu of the given name exists already, it is changed.
+
address@hidden identifies the menu under which the new menu should be
+inserted.  It is a list of strings; for example, @code{("File")} names
+the top-level @b{File} menu.  @code{("File" "Foo")} names a hypothetical
+submenu of @b{File}.  If @var{menu-path} is @code{nil}, the menu is
+added to the menu bar itself.
+
address@hidden is the string naming the menu to be added.  
+
address@hidden is a list of menu item descriptions.  Each menu item
+should be a vector of three elements:
+
address@hidden @bullet
address@hidden 
+A string, which is the name of the menu item
address@hidden 
+A symbol naming a command, or a form to evaluate
address@hidden 
address@hidden or @code{nil} to indicate whether the item is selectable
address@hidden itemize
+
+The optional argument @var{before} is the name of the menu before which
+the new menu or submenu should be added.  If the menu is already
+present, it is not moved.
+
address@hidden add-menu-item
address@hidden adding menu items
+The function @code{add-menu-item} adds a menu item to the specified
+menu, creating the menu first if necessary.  If the named item already
+exists, the menu remains unchanged.
+
address@hidden identifies the menu into which the new menu item should
+be inserted.  It is a list of strings; for example, @code{("File")}
+names the top-level @b{File} menu.  @code{("File" "Foo")} names a
+hypothetical submenu of @b{File}.
+
address@hidden is the string naming the menu item to add.
+
address@hidden is the command to invoke when this menu item is selected.
+If it is a symbol, it is invoked with @code{call-interactively}, in the
+same way that functions bound to keys are invoked.  If it is a list, the
+list is simply evaluated.
+
address@hidden controls whether the item is selectable or not.
+It should be @code{t}, @code{nil}, or a form to evaluate to decide.  
+This form will be evaluated just before the menu is displayed, and 
+the menu item will be selectable if that form returns address@hidden
+
+For example, to make the @code{rename-file} command available from the
address@hidden menu, use the following code:
+
address@hidden
+(add-menu-item '("File") "Rename File" 'rename-file t)
address@hidden example
+
+To add a submenu of file management commands using a @b{File Management}
+item, use the following code: 
+
address@hidden
+(add-menu-item '("File" "File Management") "Copy File" 'copy-file t)
+(add-menu-item '("File" "File Management") "Delete File" 'delete-file t)
+(add-menu-item '("File" "File Management") "Rename File" 'rename-file t)
address@hidden example
+
+The optional @var{before} argument is the name of a menu item before
+which the new item should be added.  If the item is already present, it
+is not moved.
+
address@hidden delete-menu-item
address@hidden deleting menu items
+To remove a specified menu item from the menu hierarchy, use
address@hidden
+
address@hidden is a list of strings that identify the position of the menu
+item in the menu hierarchy.  @code{("File" "Save")} means the menu item
+called @b{Save} under the top level @b{File} menu.  @code{("Menu" "Foo"
+"Item")} means the menu item called @b{Item} under the @b{Foo} submenu
+of @b{Menu}.
+
address@hidden disable-menu-item
address@hidden enable-menu-item
address@hidden enabling menu items
address@hidden disabling menu items
+
+To disable a menu item, use @code{disable-menu-item}.  The disabled
+menu item is grayed and can no longer be selected.  To make the
+item selectable again, use @code{enable-menu-item}.
address@hidden and @code{enable-menu-item} both have the
+argument @var{path}.
+
address@hidden relabel-menu-item
address@hidden changing menu items
+To change the string of the specified menu item, use
address@hidden This function also takes the argument @var{path}.
+
address@hidden is the string to which the menu item will be changed.
address@hidden This is part of the XEmacs manual.
address@hidden Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995 Free Software 
Foundation, Inc.
address@hidden See file xemacs.texi for copying conditions.
address@hidden Entering Emacs, Exiting, Pull-down Menus, Top
address@hidden Entering and Exiting Emacs
address@hidden entering XEmacs
address@hidden starting XEmacs
+
+  The usual way to invoke XEmacs is to type @kbd{xemacs @key{RET}} at
+the shell.  XEmacs clears the screen and then displays an initial
+advisory message and copyright notice.  You can begin typing XEmacs
+commands immediately afterward.
+
+  Some operating systems insist on discarding all type-ahead when XEmacs
+starts up; they give XEmacs no way to prevent this.  Therefore, it is
+advisable to wait until XEmacs clears the screen before typing your first
+editing command.
+
+  If you run XEmacs from a shell window under the X Window System, run it
+in the background with @samp{xemacs&}.  This way, XEmacs does not tie up
+the shell window, so you can use that to run other shell commands while
+XEmacs operates its own X windows.  You can begin typing XEmacs commands
+as soon as you direct your keyboard input to the XEmacs frame.
+
address@hidden initial-major-mode
+  Before Emacs reads the first command, you have not had a chance to
+give a command to specify a file to edit.  Since Emacs must always have
+a current buffer for editing, it presents a buffer, by default, a buffer
+named @samp{*scratch*}.  The buffer is in Lisp Interaction mode; you can
+use it to type Lisp expressions and evaluate them, or you can ignore
+that capability and simply doodle.  (You can specify a different major
+mode for this buffer by setting the variable @code{initial-major-mode}
+in your init file.  @xref{Init File}.)
+
+  It is possible to specify files to be visited, Lisp files to be
+loaded, and functions to be called, by giving Emacs arguments in the
+shell command line.  @xref{Command Switches}.  But we don't recommend
+doing this.  The feature exists mainly for compatibility with other
+editors.
+
+  Many other editors are designed to be started afresh each time you
+want to edit.  You edit one file and then exit the editor.  The next
+time you want to edit either another file or the same one, you must run
+the editor again.  With these editors, it makes sense to use a
+command-line argument to say which file to edit.
+
+  But starting a new Emacs each time you want to edit a different file
+does not make sense.  For one thing, this would be annoyingly slow.  For
+another, this would fail to take advantage of Emacs's ability to visit
+more than one file in a single editing session.  And it would lose the
+other accumulated context, such as registers, undo history, and the mark
+ring.
+
+  The recommended way to use XEmacs is to start it only once, just
+after you log in, and do all your editing in the same Emacs session.
+Each time you want to edit a different file, you visit it with the
+existing Emacs, which eventually comes to have many files in it ready
+for editing.  Usually you do not kill the Emacs until you are about to
+log out.  @xref{Files}, for more information on visiting more than one
+file.
+
address@hidden Exiting, Command Switches, Entering Emacs, Top
address@hidden Exiting Emacs
address@hidden exiting
address@hidden killing Emacs
address@hidden suspending
address@hidden leaving Emacs
address@hidden quitting Emacs
address@hidden shrinking XEmacs frame
+
+  There are two commands for exiting Emacs because there are two kinds
+of exiting: @dfn{suspending} Emacs and @dfn{killing} Emacs.
+
+  @dfn{Suspending} means stopping Emacs temporarily and returning
+control to its parent process (usually a shell), allowing you to resume
+editing later in the same Emacs job, with the same buffers, same kill
+ring, same undo history, and so on.  This is the usual way to exit.
+
+  @dfn{Killing} Emacs means destroying the Emacs job.  You can run Emacs
+again later, but you will get a fresh Emacs; there is no way to resume
+the same editing session after it has been killed.
+
address@hidden @kbd
address@hidden C-z
+Suspend Emacs or iconify a frame
+(@code{suspend-emacs-or-iconify-frame}).  If used under the X window
+system, shrink the X window containing the Emacs frame to an icon (see
+below).
address@hidden C-x C-c
+Kill Emacs (@code{save-buffers-kill-emacs}).
address@hidden table
+
+If you use XEmacs under the X window system, @kbd{C-z} shrinks
+the X window containing the Emacs frame to an icon.  The Emacs process
+is stopped temporarily, and control is returned to the window manager.
+If more than one frame is associated with the Emacs process, only the
+frame from which you used @kbd{C-z} is iconified.
+
+To activate the "suspended" Emacs, use the appropriate window manager
+mouse gestures.  Usually left-clicking on the icon reactivates and
+reopens the X window containing the Emacs frame, but the window manager
+you use determines what exactly happens.  To actually kill the Emacs
+process, use @kbd{C-x C-c} or the @b{Exit XEmacs} item on the @b{File}
+menu.
+
address@hidden C-z
address@hidden suspend-emacs
+  To suspend Emacs, type @kbd{C-z} (@code{suspend-emacs}).  This takes
+you back to the shell from which you invoked Emacs.  You can resume
+Emacs with the shell command @samp{%xemacs} in most common shells.
+
+  On systems that do not support suspending programs, @kbd{C-z} starts
+an inferior shell that communicates directly with the terminal.
+Emacs waits until you exit the subshell.  (The way to do that is
+probably with @kbd{C-d} or @samp{exit}, but it depends on which shell
+you use.)  The only way on these systems to get back to the shell from
+which Emacs was run (to log out, for example) is to kill Emacs.
+
+  Suspending also fails if you run Emacs under a shell that doesn't
+support suspending programs, even if the system itself does support it.
+In such a case, you can set the variable @code{cannot-suspend} to a
address@hidden value to force @kbd{C-z} to start an inferior shell.
+(One might also describe Emacs's parent shell as ``inferior'' for
+failing to support job control properly, but that is a matter of taste.)
+
+  When Emacs communicates directly with an X server and creates its own
+dedicated X windows, @kbd{C-z} has a different meaning.  Suspending an
+applications that uses its own X windows is not meaningful or useful.
+Instead, @kbd{C-z} runs the command @code{iconify-or-deiconify-frame},
+which temporarily closes up the selected Emacs frame.
+The way to get back to a shell window is with the window manager.
+
address@hidden C-x C-c
address@hidden save-buffers-kill-emacs
+  To kill Emacs, type @kbd{C-x C-c} (@code{save-buffers-kill-emacs}).  A
+two-character key is used for this to make it harder to type.  Selecting
+the @b{Exit XEmacs} option of the @b{File} menu is an alternate way of
+issuing the command.
+
+Unless a numeric argument is used, this command first offers to save any
+modified file-visiting buffers.  If you do not save all buffers, you are
+asked for reconfirmation with @kbd{yes} before killing Emacs, since any
+changes not saved will be lost forever.  If any subprocesses are still
+running, @kbd{C-x C-c} asks you to confirm killing them, since killing
+Emacs will kill the subprocesses immediately.
+
+  There is no way to restart an Emacs session once you have killed it.
+You can, however, arrange for Emacs to record certain session
+information, such as which files are visited, when you kill it, so that
+the next time you restart Emacs it will try to visit the same files and
+so on.
address@hidden @xref{Saving Emacs Sessions}.
+
+  The operating system usually listens for certain special characters
+whose meaning is to kill or suspend the program you are running.
address@hidden operating system feature is turned off while you are in Emacs.}
+The meanings of @kbd{C-z} and @kbd{C-x C-c} as keys in Emacs were
+inspired by the use of @kbd{C-z} and @kbd{C-c} on several operating
+systems as the characters for stopping or killing a program, but that is
+their only relationship with the operating system.  You can customize
+these keys to run any commands of your choice (@pxref{Keymaps}).
+
address@hidden Command Switches, Startup Paths, Exiting, Top
address@hidden Command Line Switches and Arguments
address@hidden command line arguments
address@hidden arguments (from shell)
+
+  XEmacs supports command line arguments you can use to request
+various actions when invoking Emacs.  The commands are for compatibility
+with other editors and for sophisticated activities.  If you are using
+XEmacs under the X window system, you can also use a number of
+standard Xt command line arguments. Command line arguments are not usually
+needed for editing with Emacs; new users can skip this section.
+
+  Many editors are designed to be started afresh each time you want to
+edit.  You start the editor to edit one file; then exit the editor.  The
+next time you want to edit either another file or the same one, you
+start the editor again.  Under these circumstances, it makes sense to use a
+command line argument to say which file to edit.
+
+  The recommended way to use XEmacs is to start it only once, just
+after you log in, and do all your editing in the same Emacs process.
+Each time you want to edit a file, you visit it using the existing
+Emacs.  Emacs creates a new buffer for each file, and (unless you kill
+some of the buffers) Emacs eventually has many files in it ready for
+editing.  Usually you do not kill the Emacs process until you are about
+to log out.  Since you usually read files by typing commands to Emacs,
+command line arguments for specifying a file when Emacs is started are seldom
+needed.
+
+  Emacs accepts command-line arguments that specify files to visit,
+functions to call, and other activities and operating modes.  If you
+are running XEmacs under the X window system, a number of standard Xt
+command line arguments are available, as well as a few X parameters
+that are XEmacs-specific.
+
+  Options with long names with a single initial hyphen are also
+recognized with the GNU double initial hyphen syntax.  (The reverse
+is not true.)
+
+The following subsections list:
address@hidden @bullet
address@hidden 
+Command line arguments that you can always use
address@hidden 
+Command line arguments that have to appear at the beginning of the
+argument list
address@hidden
+Command line arguments that are only relevant if you are running XEmacs
+under X
address@hidden itemize
+
address@hidden Command Line Arguments for Any Position
+ Command line arguments are processed in the order they appear on the
+command line; however, certain arguments (the ones in the
+second table) must be at the front of the list if they are used.
+
+  Here are the arguments allowed:
+
address@hidden @samp
address@hidden @var{file}
+Visit @var{file} using @code{find-file}.  @xref{Visiting}.
+
address@hidden address@hidden @var{file}
+Visit @var{file} using @code{find-file}, then go to line number
address@hidden in it.
+
address@hidden -load @var{file}
address@hidden -l @var{file}
+Load a file @var{file} of Lisp code with the function @code{load}.
address@hidden Libraries}.
+
address@hidden -funcall @var{function}
address@hidden -f @var{function}
+Call Lisp function @var{function} with no arguments.
+
address@hidden -eval @var{function}
+Interpret the next argument as a Lisp expression, and evaluate it.
+You must be very careful of the shell quoting here.
+
address@hidden -insert @var{file}
address@hidden -i @var{file}
+Insert the contents of @var{file} into the current buffer.  This is like
+what @kbd{M-x insert-buffer} does; @xref{Misc File Ops}.
+
address@hidden -kill
+Exit from Emacs without asking for confirmation.  Always the last
+argument processed, no matter where it appears in the command line.
+
address@hidden -version
address@hidden -V
+Prints version information.  This implies @samp{-batch}.
+
address@hidden
+% xemacs -version
+XEmacs 19.13 of Mon Aug 21 1995 on willow (usg-unix-v) [formerly Lucid Emacs]
address@hidden example
+
address@hidden -help
+Prints a summary of command-line options and then exits.
address@hidden table
+
address@hidden Command Line Arguments (Beginning of Line Only)
+  The following arguments are recognized only at the beginning of the
+command line.  If more than one of them appears, they must appear in the
+order in which they appear in this table.
+
address@hidden @samp
address@hidden --show-dump-id
address@hidden -sd
+Print the ID for the new portable dumper's dump file on the terminal and
+exit.  (Prints an error message and exits if XEmacs was not configured
address@hidden)
+
address@hidden --no-dump-file
address@hidden -nd
+Don't load the dump file.  Roughly equivalent to old temacs.  (Ignored if
+XEmacs was not configured @samp{--pdump}.)
+
address@hidden --terminal @var{file}
address@hidden -t @var{file}
+Use @var{file} instead of the terminal for input and output.  This
+implies the @samp{-nw} option, documented below.
+
address@hidden batch mode
address@hidden -batch
+Run Emacs in @dfn{batch mode}, which means that the text being edited is
+not displayed and the standard Unix interrupt characters such as
address@hidden and @kbd{C-c} continue to have their normal effect.  Emacs in
+batch mode outputs to @code{stderr} only what would normally be printed
+in the echo area under program control.
+
+Batch mode is used for running programs written in Emacs Lisp from shell
+scripts, makefiles, and so on.  Normally the @samp{-l} switch or
address@hidden switch will be used as well, to invoke a Lisp program to do
+the batch processing.
+
address@hidden implies @samp{-q} (do not load an init file).  It also
+causes Emacs to kill itself after all command switches have been
+processed.  In addition, auto-saving is not done except in buffers for
+which it has been explicitly requested.
+
address@hidden --no-windows
address@hidden -nw
+Start up XEmacs in TTY mode (using the TTY XEmacs was started from),
+rather than trying to connect to an X display.  Note that this happens
+automatically if the @samp{DISPLAY} environment variable is not set.
+
address@hidden -debug-init
+Enter the debugger if an error in the init file occurs.
+
address@hidden -debug-paths
+Displays information on how XEmacs constructs the various paths into its
+hierarchy on startup.  (See also @pxref{Startup Paths}.)
+
address@hidden -unmapped
+Do not map the initial frame.  This is useful if you want to start up
+XEmacs as a server (e.g. for gnuserv screens or external client widgets).
+
address@hidden -no-init-file
address@hidden -q
+Do not load your Emacs init file.  @xref{Init File}.
+
address@hidden -no-site-file
+Do not load the site-specific init file @file{lisp/site-start.el}.
+
address@hidden -no-autoloads
+Do not load global symbol files (@file{auto-autoloads}) at startup.
+This implies @samp{-vanilla}. 
+
address@hidden -no-early-packages
+Do not process early packages.  (For more information on startup issues
+concerning the package system, @xref{Startup Paths}.)
+
address@hidden -vanilla
+This is equivalent to @samp{-q -no-site-file -no-early-packages}.
+
address@hidden -user-init-file @var{file}
+Load @var{file} as your Emacs init file instead of
address@hidden/.xemacs/init.el}/@file{~/.emacs}.
+
address@hidden -user-init-directory @var{directory}
+Use @var{directory} as the location of your early package hierarchies
+and the various user-specific initialization files.
+
address@hidden -user @var{user}
address@hidden -u @var{user}
+Equivalent to @samp{-user-init-file address@hidden/.xemacs/init.el
+-user-init-directory address@hidden/.xemacs}, or @samp{-user-init-file
address@hidden/.emacs -user-init-directory address@hidden/.xemacs}, whichever
+init file comes first.  @xref{Init File}.
+
address@hidden table
+
address@hidden command-line-args
+  Note that the init file can get access to the command line argument
+values as the elements of a list in the variable
address@hidden  (The arguments in the second table above will
+already have been processed and will not be in the list.)  The init file
+can override the normal processing of the other arguments by setting
+this variable.
+
+  One way to use command switches is to visit many files automatically:
+
address@hidden
+xemacs *.c
address@hidden example
+
address@hidden
+passes each @code{.c} file as a separate argument to Emacs, so that
+Emacs visits each file (@pxref{Visiting}).
+
+  Here is an advanced example that assumes you have a Lisp program file
+called @file{hack-c-program.el} which, when loaded, performs some useful
+operation on the current buffer, expected to be a C program.
+
address@hidden
+xemacs -batch foo.c -l hack-c-program -f save-buffer -kill > log
address@hidden example
+
address@hidden
+Here Emacs is told to visit @file{foo.c}, load @file{hack-c-program.el}
+(which makes changes in the visited file), save @file{foo.c} (note that
address@hidden is the function that @kbd{C-x C-s} is bound to), and
+then exit to the shell from which the command was executed.  @samp{-batch}
+guarantees there will be no problem redirecting output to @file{log},
+because Emacs will not assume that it has a display terminal to work
+with.
+
address@hidden Command Line Arguments (for XEmacs Under X)
address@hidden frame-title-format
address@hidden frame-icon-title-format
+If you are running XEmacs under X, a number of options are
+available to control color, border, and window title and icon name:
+
address@hidden @samp
address@hidden -title @var{title}
address@hidden -wn @var{title}
address@hidden -T @var{title}
+Use @var{title} as the window title. This sets the
address@hidden variable, which controls the title of the X
+window corresponding to the selected frame.  This is the same format as
address@hidden
+
address@hidden -iconname @var{title}
address@hidden -in @var{title}
+Use @var{title} as the icon name. This sets the
address@hidden variable, which controls the title of
+the icon corresponding to the selected frame.
+
address@hidden -mc @var{color}
+Use @var{color} as the mouse color.
+
address@hidden -cr @var{color}
+Use @var{color} as the text-cursor foreground color.
+
address@hidden -private
+Install a private colormap for XEmacs.
address@hidden table
+
+In addition, XEmacs allows you to use a number of standard Xt
+command line arguments. 
+
address@hidden @samp
+
address@hidden -background @var{color}
address@hidden -bg @var{color}
+Use @var{color} as the background color.
+
address@hidden -bordercolor @var{color}
address@hidden -bd @var{color}
+Use @var{color} as the border color.
+
address@hidden -borderwidth @var{width}
address@hidden -bw @var{width}
+Use @var{width} as the border width.
+
address@hidden -display @var{display}
address@hidden -d @var{display}
+When running under the X window system, create the window containing the
+Emacs frame on the display named @var{display}.
+
address@hidden -foreground @var{color}
address@hidden -fg @var{color}
+Use @var{color} as the foreground color.
+
address@hidden -font @var{name}
address@hidden -fn @var{name}
+Use @var{name} as the default font.
+
address@hidden -geometry @var{spec}
address@hidden -geom @var{spec}
address@hidden -g @var{spec}
+Use the geometry (window size and/or position) specified by @var{spec}.
+
address@hidden -iconic
+Start up iconified.
+
address@hidden -rv
+Bring up Emacs in reverse video.
+
address@hidden -name @var{name}
+Use the resource manager resources specified by @var{name}.
+The default is to use the name of the program (@code{argv[0]}) as
+the resource manager name.
+
address@hidden -xrm
+Read something into the resource database for this invocation of Emacs only.
+
address@hidden table
address@hidden Startup Paths, Packages, Command Switches, Top
address@hidden  node-name,  next,  previous,  up
address@hidden How XEmacs finds Directories and Files
+
address@hidden startup paths
address@hidden directories
+
+XEmacs deals with a multitude of files during operation.  These files
+are spread over many directories, and XEmacs determines the location of
+most of these directories at startup and organizes them into various
+paths.  (A @dfn{path},
address@hidden path
+for the purposes of this section, is simply a list of directories which
+XEmacs searches successively in order to locate a file.)
+
address@hidden XEmacs Directory Hierarchies
address@hidden hierarchies
address@hidden directory hierarchies
+
+Many of the files XEmacs looks for are located within the XEmacs
+installation itself.  However, there are several views of what actually
+constitutes the "XEmacs installation": XEmacs may be run from the
+compilation directory, it may be installed into arbitrary directories,
+spread over several directories unrelated to each other.  Moreover, it
+may subsequently be moved to a different place.  (This last case is not
+as uncommon as it sounds.  Binary kits work this way.)  Consequently,
+XEmacs has quite complex procedures in place to find directories, no
+matter where they may be hidden.
+
+XEmacs will always respect directory options passed to @code{configure}.
+However, if it cannot locate a directory at the configured place, it
+will initiate a search for the directory in any of a number of
address@hidden rooted under a directory which XEmacs assumes contain
+parts of the XEmacs installation; it may locate several such hierarchies
+and search across them.  (Typically, there are just one or two
+hierarchies: the hierarchy where XEmacs was or will be installed, and
+the one where it is being built.)  Such a directory containing a
+hierarchy is called a @dfn{root}.
address@hidden root of a hierarchy
+Whenever this section refers to a directory using the shorthand
address@hidden<root>}, it means that XEmacs searches for it under all
+hierarchies XEmacs was able to scrounge up.  In a
+running XEmacs, the hierarchy roots are stored in the variable
address@hidden
address@hidden emacs-roots
+
address@hidden Package Hierarchies
address@hidden package hierarchies
+
+Many relevant directories and files XEmacs uses are actually not part of
+the core installation.  They are part of any of the many packages
+usually installed on top of an XEmacs installation.  (@xref{Packages}.)
+Hence, they play a prominent role in the various paths XEmacs sets up.
+
+XEmacs locates packages in any of a number of package hierarchies.
+Package hierarchies fall into three groups: @dfn{early}, @dfn{late},
+and @dfn{last},
address@hidden early package hierarchies
address@hidden late package hierarchies
address@hidden last package hierarchies
+according to the relative location at which they show
+up in the various XEmacs paths.  Early package hierarchies are at the
+very front, late ones somewhere in the middle, and last hierarchies are
+(you guessed it) last.
+
+By default, XEmacs expects an early package hierarchy in the
+subdirectory @file{.xemacs/xemacs-packages} of the user's home
+directory.
+
+Moreover, XEmacs expects late hierarchies in the subdirectories
address@hidden, @file{mule-packages}, and @file{xemacs-packages}
+(in that order) of the @file{<root>/lib/xemacs} subdirectory of one of
+the installation hierarchies.  (If you run in-place, these are direct
+subdirectories of the build directory.)  Furthermore, XEmacs will also
+search these subdirectories in the @file{<root>/lib/xemacs-<VERSION>}
+subdirectory and prefer directories found there.
+
+By default, XEmacs does not have a pre-configured last package
+hierarchy.  Last hierarchies are primarily for using package hierarchies
+of outdated versions of XEmacs as a fallback option.  For example, it is
+possible to run XEmacs 21 with the 20.4 package hierarchy as a last
+hierarchy.
+
+It is possible to specify at configure-time the location of the various
+package hierarchies with the @code{--package-path} option to configure.
address@hidden package path
+The early, late, and last components of the package path are separated
+by double instead of single colons.  If all three components are
+present, they locate the early, late, and last package hierarchies
+respectively.  If two components are present, they locate the early and
+late hierarchies.  If only one component is present, it locates the
+late hierarchy.  At run time, the package path may also be specified via
+the @code{EMACSPACKAGEPATH} environment variable.
+
+An XEmacs package is laid out just like a normal installed XEmacs lisp
+directory.  It may have @file{lisp}, @file{etc}, @file{info}, and
address@hidden subdirectories.  XEmacs adds these at appropriate places
+within the various system-wide paths.
+
+There may be any number of package hierarchy directories.
+
address@hidden Directories and Paths
address@hidden paths
+
+Here is a list of the various directories and paths XEmacs tries to
+locate during startup.  XEmacs distinguishes between directories and
+paths specific to @dfn{version}, @dfn{site}, and @dfn{architecture}
+when looking for them.
+
address@hidden @code
address@hidden version-specific
address@hidden version-specific directories
+directories are specific to the version of XEmacs they belong to and
+typically reside under @file{<root>/lib/xemacs-<VERSION>}.
address@hidden site-specific
address@hidden site-specific directories
+directories are independent of the version of XEmacs they belong to and
+typically reside under @file{<root>/lib/xemacs}
address@hidden architecture-specific
address@hidden architecture-specific directories
+directories are specific both to the version of XEmacs and the
+architecture it runs on and typically reside under
address@hidden<root>/lib/xemacs-<VERSION>/<ARCHITECTURE>}.
address@hidden table
+
+During installation, all of these directories may also reside directly
+under @file{<root>}, because that is where they are in the XEmacs tarball.
+
+If XEmacs runs with the @code{-debug-paths} option (@pxref{Command
+Switches}), it will print the values of these variables, hopefully
+aiding in debugging any problems which come up.
+
address@hidden @code
+
address@hidden lisp-directory
address@hidden lisp-directory
+Contains the version-specific location of the Lisp files that come with
+the core distribution of XEmacs.  XEmacs will search it recursively to a
+depth of 1 when setting up @code{load-path}.
+
address@hidden load-path
address@hidden load-path
+Is where XEmacs searches for XEmacs Lisp files with commands like
address@hidden
address@hidden load-library
+It contains the package lisp directories (see further down) and the
+version-specific core Lisp directories.  If the environment variable
address@hidden is set at startup, its directories are prepended to
address@hidden
address@hidden EMACSLOADPATH
+
address@hidden Info-directory-list
address@hidden Info-directory-list
+Contains the location of info files.  (See @ref{(info)}.)  It contains
+the package info directories and the version-specific core
+documentation.  Moreover, XEmacs will add @file{/usr/info},
address@hidden/usr/local/info} as well as the directories of the environment
+variable @code{INFOPATH}
address@hidden INFOPATH
+to @code{Info-directory-list}.
+
address@hidden exec-directory
address@hidden exec-directory
+Is the directory of architecture-dependent files that come with XEmacs,
+especially executable programs intended for XEmacs to invoke.
+
address@hidden exec-path
address@hidden exec-path
+Is the path for executables which XEmacs may want to start.  It contains
+the package executable paths as well as @code{exec-directory}, and the
+directories of the environment variables @code{PATH}
address@hidden PATH
+and @code{EMACSPATH}.
address@hidden EMACSPATH
+
address@hidden doc-directory
address@hidden doc-directory
+Is the directory containing the architecture-specific @file{DOC} file
+that contains documentation for XEmacs' commands.
+
address@hidden data-directory
address@hidden data-directory
+Is the version-specific directory that contains core data files XEmacs uses.
+It may be initialized from the @code{EMACSDATA}
address@hidden EMACSDATA
+environment variable.
+
address@hidden data-directory-list
address@hidden data-directory-list
+Is the path where XEmacs looks for data files.  It contains package data
+directories as well as @code{data-directory}.
+
address@hidden table
+
+
address@hidden This is part of the XEmacs manual.
address@hidden Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software 
Foundation, Inc.
address@hidden See file xemacs.texi for copying conditions.
address@hidden Basic, Undo, Packages, Top
address@hidden Basic Editing Commands
+
address@hidden C-h t
address@hidden help-with-tutorial
+  We now give the basics of how to enter text, make corrections, and
+save the text in a file.  If this material is new to you, you might
+learn it more easily by running the Emacs learn-by-doing tutorial.  To
+use the tutorial, run Emacs and type @kbd{Control-h t}
+(@code{help-with-tutorial}).  You can also use @b{Tutorials} item from
+the @b{Help} menu.
+
+XEmacs comes with many translations of tutorial.  If your XEmacs is with
+MULE and you set up language environment correctly, XEmacs chooses right
+tutorial when available (@pxref{Language Environments}).  If you want
+specific translation, give @kbd{C-h t} a prefix argument, like @kbd{C-u
+C-h t}.
+
+  To clear the screen and redisplay, type @kbd{C-l} (@code{recenter}).
+
address@hidden
+
+* Inserting Text::      Inserting text by simply typing it.
+* Moving Point::        How to move the cursor to the place where you want to
+                         change something.
+* Erasing::            Deleting and killing text.
+* Files: Basic Files.   Visiting, creating, and saving files.
+* Help: Basic Help.     Asking what a character does.
+* Blank Lines::                Commands to make or delete blank lines.
+* Continuation Lines::  Lines too wide for the screen.
+* Position Info::       What page, line, row, or column is point on?
+* Arguments::          Numeric arguments for repeating a command.
address@hidden * Repeating::           A short-cut for repeating the previous 
command.
address@hidden menu
+
address@hidden Inserting Text, Moving Point, , Basic
address@hidden Inserting Text
+
address@hidden insertion
address@hidden point
address@hidden cursor
address@hidden graphic characters
+  To insert printing characters into the text you are editing, just type
+them.  This inserts the characters you type into the buffer at the
+cursor (that is, at @dfn{point}; @pxref{Point}).  The cursor moves
+forward, and any text after the cursor moves forward too.  If the text
+in the buffer is @samp{FOOBAR}, with the cursor before the @samp{B},
+then if you type @kbd{XX}, you get @samp{FOOXXBAR}, with the cursor
+still before the @samp{B}.
+
address@hidden BS
address@hidden deletion
+   To @dfn{delete} text you have just inserted, use @key{BS}.  @key{BS}
+deletes the character @emph{before} the cursor (not the one that the
+cursor is on top of or under; that is the character @var{after} the
+cursor).  The cursor and all characters after it move backwards.
+Therefore, if you type a printing character and then type @key{BS}, they
+cancel out.
+
address@hidden RET
address@hidden newline
+   To end a line and start typing a new one, type @key{RET}.  This
+inserts a newline character in the buffer.  If point is in the middle of
+a line, @key{RET} splits the line.  Typing @key{DEL} when the cursor is
+at the beginning of a line deletes the preceding newline, thus joining
+the line with the preceding line.
+
+  Emacs can split lines automatically when they become too long, if you
+turn on a special minor mode called @dfn{Auto Fill} mode.
address@hidden, for how to use Auto Fill mode.
+
+  If you prefer to have text characters replace (overwrite) existing
+text rather than shove it to the right, you can enable Overwrite mode,
+a minor mode.  @xref{Minor Modes}.
+
address@hidden quoting
address@hidden C-q
address@hidden quoted-insert
+  Direct insertion works for printing characters and @key{SPC}, but other
+characters act as editing commands and do not insert themselves.  If you
+need to insert a control character or a character whose code is above 200
+octal, you must @dfn{quote} it by typing the character @kbd{Control-q}
+(@code{quoted-insert}) first.  (This character's name is normally written
address@hidden for short.)  There are two ways to use @kbd{C-q}:
+
address@hidden @bullet
address@hidden
address@hidden followed by any non-graphic character (even @kbd{C-g})
+inserts that character.
+
address@hidden
address@hidden followed by a sequence of octal digits inserts the character
+with the specified octal character code.  You can use any number of
+octal digits; any non-digit terminates the sequence.  If the terminating
+character is @key{RET}, it serves only to terminate the sequence; any
+other non-digit is itself used as input after terminating the sequence.
+(The use of octal sequences is disabled in ordinary non-binary Overwrite
+mode, to give you a convenient way to insert a digit instead of
+overwriting with it.)
address@hidden itemize
+
address@hidden
+A numeric argument to @kbd{C-q} specifies how many copies of the quoted
+character should be inserted (@pxref{Arguments}).
+
address@hidden backward-or-forward-delete-char
address@hidden newline
address@hidden self-insert
+  Customization information: @key{DEL}, in most modes, runs the command
address@hidden; @key{RET} runs the command
address@hidden, and self-inserting printing characters run the command
address@hidden, which inserts whatever character was typed to invoke
+it.  Some major modes rebind @key{DEL} to other commands.
+
address@hidden Moving Point, Erasing, Inserting Text, Basic
address@hidden Changing the Location of Point
+
address@hidden arrow keys
address@hidden LEFT
address@hidden RIGHT
address@hidden UP
address@hidden DOWN
address@hidden moving point
address@hidden movement
address@hidden cursor motion
address@hidden moving the cursor
+  To do more than insert characters, you have to know how to move point
+(@pxref{Point}).  The simplest way to do this is with arrow keys, or by
+clicking the left mouse button where you want to move to.
+
+  NOTE: Many of the following commands have two versions, one that uses
+the function keys (e.g. @key{LEFT} or @key{END}) and one that doesn't.
+The former versions may only be available on X terminals (i.e. not on
+TTY's), but the latter are available on all terminals.
+
address@hidden C-a
address@hidden C-e
address@hidden C-f
address@hidden C-b
address@hidden C-n
address@hidden C-p
address@hidden C-l
address@hidden C-t
address@hidden C-v
address@hidden M-v
address@hidden M->
address@hidden M-<
address@hidden M-r
address@hidden LEFT
address@hidden RIGHT
address@hidden UP
address@hidden DOWN
address@hidden HOME
address@hidden END
address@hidden PGUP
address@hidden PGDN
address@hidden C-LEFT
address@hidden C-RIGHT
address@hidden C-HOME
address@hidden C-END
address@hidden beginning-of-line
address@hidden end-of-line
address@hidden forward-char
address@hidden backward-char
address@hidden next-line
address@hidden previous-line
address@hidden recenter
address@hidden transpose-chars
address@hidden beginning-of-buffer
address@hidden end-of-buffer
address@hidden goto-char
address@hidden goto-line
address@hidden move-to-window-line
address@hidden @kbd
address@hidden C-a
address@hidden HOME
+Move to the beginning of the line (@code{beginning-of-line}).
address@hidden C-e
address@hidden END
+Move to the end of the line (@code{end-of-line}).
address@hidden C-f
address@hidden RIGHT
+Move forward one character (@code{forward-char}).
address@hidden C-b
address@hidden LEFT
+Move backward one character (@code{backward-char}).
address@hidden M-f
address@hidden C-RIGHT
+Move forward one word (@code{forward-word}).
address@hidden M-b
address@hidden C-LEFT
+Move backward one word (@code{backward-word}).
address@hidden C-n
address@hidden DOWN
+Move down one line, vertically (@code{next-line}).  This command
+attempts to keep the horizontal position unchanged, so if you start in
+the middle of one line, you end in the middle of the next.  When on the
+last line of text, @kbd{C-n} creates a new line and moves onto it.
address@hidden C-p
address@hidden UP
+Move up one line, vertically (@code{previous-line}).
address@hidden C-v
address@hidden PGDN
+Move down one page, vertically (@code{scroll-up}).
address@hidden M-v
address@hidden PGUP
+Move up one page, vertically (@code{scroll-down}).
address@hidden C-l
+Clear the frame and reprint everything (@code{recenter}).  Text moves
+on the frame to bring point to the center of the window.
address@hidden M-r
+Move point to left margin, vertically centered in the window
+(@code{move-to-window-line}).  Text does not move on the screen.
+
+A numeric argument says which screen line to place point on.  It counts
+screen lines down from the top of the window (zero for the top line).  A
+negative argument counts lines from the bottom (@minus{}1 for the bottom
+line).
address@hidden C-t
+Transpose two characters, the ones before and after the cursor
+(@code{transpose-chars}).
address@hidden M-<
address@hidden C-HOME
+Move to the top of the buffer (@code{beginning-of-buffer}).  With
+numeric argument @var{n}, move to @var{n}/10 of the way from the top.
address@hidden, for more information on numeric address@hidden
address@hidden M->
address@hidden C-END
+Move to the end of the buffer (@code{end-of-buffer}).
address@hidden M-x goto-char
+Read a number @var{n} and move point to buffer position @var{n}.
+Position 1 is the beginning of the buffer.
address@hidden M-g
+Read a number @var{n} and move point to line number @var{n}
+(@code{goto-line}).  Line 1 is the beginning of the buffer.
address@hidden @item C-x C-n
address@hidden M-x set-goal-column
address@hidden set-goal-column
+Use the current column of point as the @dfn{semi-permanent goal column} for
address@hidden and @kbd{C-p} (@code{set-goal-column}).  Henceforth, those
+commands always move to this column in each line moved into, or as
+close as possible given the contents of the line.  This goal column remains
+in effect until canceled.
address@hidden @item C-u C-x C-n
address@hidden C-u M-x set-goal-column
+Cancel the goal column.  Henceforth, @kbd{C-n} and @kbd{C-p} once
+again try to avoid changing the horizontal position, as usual.
address@hidden table
+
address@hidden track-eol
+  If you set the variable @code{track-eol} to a address@hidden value,
+then @kbd{C-n} and @kbd{C-p} when at the end of the starting line move
+to the end of another line.  Normally, @code{track-eol} is @code{nil}.
address@hidden, for how to set variables such as @code{track-eol}.
+
address@hidden next-line-add-newlines
+  Normally, @kbd{C-n} on the last line of a buffer appends a newline to
+it.  If the variable @code{next-line-add-newlines} is @code{nil}, then
address@hidden gets an error instead (like @kbd{C-p} on the first line).
+
address@hidden Erasing, Basic Files, Moving Point, Basic
address@hidden Erasing Text
+
address@hidden @kbd
address@hidden @key{DEL}
+Delete the character before or after point
+(@code{backward-or-forward-delete-char}).  You can customize
+this behavior by setting the variable @code{delete-key-deletes-forward}.
address@hidden C-d
+Delete the character after point (@code{delete-char}).
address@hidden C-k
+Kill to the end of the line (@code{kill-line}).
address@hidden M-d
+Kill forward to the end of the next word (@code{kill-word}).
address@hidden address@hidden
+Kill back to the beginning of the previous word
+(@code{backward-kill-word}).
address@hidden table
+
address@hidden killing characters and lines
address@hidden deleting characters and lines
address@hidden erasing characters and lines
+  You already know about the @key{DEL} key which deletes the character
+before point (that is, before the cursor).  Another key, @kbd{Control-d}
+(@kbd{C-d} for short), deletes the character after point (that is, the
+character that the cursor is on).  This shifts the rest of the text on
+the line to the left.  If you type @kbd{C-d} at the end of a line, it
+joins together that line and the next line.
+
+  To erase a larger amount of text, use the @kbd{C-k} key, which kills a
+line at a time.  If you type @kbd{C-k} at the beginning or middle of a
+line, it kills all the text up to the end of the line.  If you type
address@hidden at the end of a line, it joins that line and the next line.
+
+  @xref{Killing}, for more flexible ways of killing text.
+
address@hidden Basic Files, Basic Help, Erasing, Basic
address@hidden Files
+
address@hidden files
+  The commands described above are sufficient for creating and altering
+text in an Emacs buffer; the more advanced Emacs commands just make
+things easier.  But to keep any text permanently you must put it in a
address@hidden  Files are named units of text which are stored by the
+operating system for you to retrieve later by name.  To look at or use
+the contents of a file in any way, including editing the file with
+Emacs, you must specify the file name.
+
+  Consider a file named @file{/usr/rms/foo.c}.  To begin editing
+this file from Emacs, type:
+
address@hidden
+C-x C-f /usr/rms/foo.c @key{RET}
address@hidden example
+
address@hidden
+Here the file name is given as an @dfn{argument} to the command @kbd{C-x
+C-f} (@code{find-file}).  That command uses the @dfn{minibuffer} to
+read the argument, and you type @key{RET} to terminate the argument
+(@pxref{Minibuffer}).
+
+  You can also use the @b{Open...} menu item from the @b{File} menu, then
+type the name of the file to the prompt.
+
+  Emacs obeys the command by @dfn{visiting} the file: creating a buffer,
+copying the contents of the file into the buffer, and then displaying
+the buffer for you to edit.  If you alter the text, you can @dfn{save}
+the new text in the file by typing @kbd{C-x C-s} (@code{save-buffer}) or
+choosing @b{Save Buffer} from the @b{File} menu.  This makes the changes
+permanent by copying the altered buffer contents back into the file
address@hidden/usr/rms/foo.c}.  Until you save, the changes exist only inside
+Emacs, and the file @file{foo.c} is unaltered.
+
+  To create a file, visit the file with @kbd{C-x C-f} as if it already
+existed or choose @b{Open...} from the @b{File} menu and provide the
+name for the new file.  Emacs will create an empty buffer in which you
+can insert the text you want to put in the file.  When you save the
+buffer with @kbd{C-x C-s}, or by choosing @b{Save Buffer} from the
address@hidden menu, the file is created.
+
+  To learn more about using files, @xref{Files}.
+
address@hidden Basic Help, Blank Lines, Basic Files, Basic
address@hidden Help
+
address@hidden getting help with keys
+  If you forget what a key does, you can find out with the Help
+character, which is @kbd{C-h} (or @key{F1}, which is an alias for
address@hidden).  Type @kbd{C-h k} followed by the key you want to know
+about; for example, @kbd{C-h k C-n} tells you all about what @kbd{C-n}
+does.  @kbd{C-h} is a prefix key; @kbd{C-h k} is just one of its
+subcommands (the command @code{describe-key}).  The other subcommands of
address@hidden provide different kinds of help.  Type @kbd{C-h} twice to get
+a description of all the help facilities.  @xref{Help}.
+
address@hidden Blank Lines, Continuation Lines, Basic Help, Basic
address@hidden Blank Lines
+
address@hidden inserting blank lines
address@hidden deleting blank lines
+  Here are special commands and techniques for putting in and taking out
+blank lines.
+
address@hidden widecommands
address@hidden @kbd
address@hidden C-o
+Insert one or more blank lines after the cursor (@code{open-line}).
address@hidden C-x C-o
+Delete all but one of many consecutive blank lines
+(@code{delete-blank-lines}).
address@hidden table
+
address@hidden C-o
address@hidden C-x C-o
address@hidden blank lines
address@hidden open-line
address@hidden delete-blank-lines
+  When you want to insert a new line of text before an existing line, you
+can do it by typing the new line of text, followed by @key{RET}.
+However, it may be easier to see what you are doing if you first make a
+blank line and then insert the desired text into it.  This is easy to do
+using the key @kbd{C-o} (@code{open-line}), which inserts a newline
+after point but leaves point in front of the newline.  After @kbd{C-o},
+type the text for the new line.  @kbd{C-o F O O} has the same effect as
address@hidden@kbd{F O O @key{RET}}}, except for the final location of point.
+
+  You can make several blank lines by typing @kbd{C-o} several times, or
+by giving it a numeric argument to tell it how many blank lines to make.
address@hidden, for how.  If you have a fill prefix, then @kbd{C-o}
+command inserts the fill prefix on the new line, when you use it at the
+beginning of a line.  @xref{Fill Prefix}.
+
+  The easy way to get rid of extra blank lines is with the command
address@hidden C-o} (@code{delete-blank-lines}).  @kbd{C-x C-o} in a run of
+several blank lines deletes all but one of them.  @kbd{C-x C-o} on a
+solitary blank line deletes that blank line.  When point is on a
+nonblank line, @kbd{C-x C-o} deletes any blank lines following that
+nonblank line.
+
address@hidden Continuation Lines, Position Info, Blank Lines, Basic
address@hidden Continuation Lines
+
address@hidden continuation line
address@hidden wrapping
address@hidden line wrapping
+  If you add too many characters to one line without breaking it with
address@hidden, the line will grow to occupy two (or more) lines on the
+screen, with a curved arrow at the extreme right margin of all but the
+last of them.  The curved arrow says that the following screen line is
+not really a distinct line in the text, but just the @dfn{continuation}
+of a line too long to fit the screen.  Continuation is also called
address@hidden wrapping}.
+
+  Sometimes it is nice to have Emacs insert newlines automatically when
+a line gets too long.  Continuation on the screen does not do that.  Use
+Auto Fill mode (@pxref{Filling}) if that's what you want.
+
address@hidden truncate-lines
address@hidden truncation
+  Instead of continuation, long lines can be displayed by @dfn{truncation}.
+This means that all the characters that do not fit in the width of the
+frame or window do not appear at all.  They remain in the buffer,
+temporarily invisible.  Right arrow in the last column (instead of the
+curved arrow) inform you that truncation is in effect.
+
+  Truncation instead of continuation happens whenever horizontal
+scrolling is in use, and optionally in all side-by-side windows
+(@pxref{Windows}).  You can enable truncation for a particular buffer by
+setting the variable @code{truncate-lines} to address@hidden in that
+buffer.  (@xref{Variables}.)  Altering the value of
address@hidden makes it local to the current buffer; until that
+time, the default value is in effect.  The default is initially
address@hidden  @xref{Locals}.
+
+  @xref{Display Vars}, for additional variables that affect how text is
+displayed.
+
address@hidden Position Info, Arguments, Continuation Lines, Basic
address@hidden Cursor Position Information
+
+  If you are accustomed to other display editors, you may be surprised
+that Emacs does not always display the page number or line number of
+point in the mode line.  In Emacs, this information is only rarely
+needed, and a number of commands are available to compute and print it.
+Since text is stored in a way that makes it difficult to compute the
+information, it is not displayed all the time.
+
address@hidden @kbd
address@hidden M-x what-page
+Print page number of point, and line number within page.
address@hidden M-x what-line
+Print line number of point in the buffer.
address@hidden M-x line-number-mode
+Toggle automatic display of current line number.
address@hidden M-=
+Print number of lines and characters in the current region
+(@code{count-lines-region}).  @xref{Mark}, for information about the
+region.
address@hidden C-x =
+Print character code of character after point, character position of
+point, and column of point (@code{what-cursor-position}).
address@hidden table
+
address@hidden what-page
address@hidden what-line
address@hidden line number
address@hidden page number
address@hidden M-=
address@hidden count-lines-region
+
+  There are several commands for printing line numbers:
+
address@hidden @bullet
address@hidden
address@hidden what-line} counts lines from the beginning of the file and
+prints the line number point is on.  The first line of the file is line
+number 1.  You can use these numbers as arguments to @kbd{M-x
+goto-line}.
address@hidden
address@hidden what-page} counts pages from the beginning of the file, and
+counts lines within the page, printing both of them.  @xref{Pages}, for
+the command @kbd{C-x l}, which counts the lines in the current page.
address@hidden
address@hidden (@code{count-lines-region}) prints the number of lines in the
+region (@pxref{Mark}).  @xref{Pages}, for the command @kbd{C-x l} which
+counts the lines in the
address@hidden itemize
+
address@hidden C-x =
address@hidden what-cursor-position
+  The command @kbd{C-x =} (@code{what-cursor-position}) can be used to find out
+the column that the cursor is in, and other miscellaneous information about
+point.  It prints a line in the echo area that looks like this:
+
address@hidden
+Char: c (0143, 99, 0x63)  point=18862 of 24800(76%)  column 53 
address@hidden example
+
address@hidden
+(In fact, this is the output produced when point is before @samp{column
+53} in the example.)
+
+  The four values after @samp{Char:} describe the character that follows
+point, first by showing it and then by giving its character code in
+octal, decimal and hex. 
+
+  @samp{point=} is followed by the position of point expressed as a character
+count.  The front of the buffer counts as position 1, one character later
+as 2, and so on.  The next, larger number is the total number of characters
+in the buffer.  Afterward in parentheses comes the position expressed as a
+percentage of the total size.
+
+  @samp{column} is followed by the horizontal position of point, in
+columns from the left edge of the window.
+
+  If the buffer has been narrowed, making some of the text at the
+beginning and the end temporarily invisible, @kbd{C-x =} prints
+additional text describing the current visible range.  For example, it
+might say:
+
address@hidden
+Char: c (0143, 99, 0x63)  point=19674 of 24575(80%) <19591 - 19703>  column 69 
address@hidden smallexample
+
address@hidden
+where the two extra numbers give the smallest and largest character position
+that point is allowed to assume.  The characters between those two positions
+are the visible ones.  @xref{Narrowing}.
+
+  If point is at the end of the buffer (or the end of the visible part),
address@hidden =} omits any description of the character after point.
+The output looks like
+
address@hidden
+point=563026 of 563025(100%)  column 0
address@hidden smallexample
+
address@hidden Arguments,, Position Info, Basic
address@hidden Numeric Arguments
address@hidden numeric arguments
+
+  In mathematics and computer usage, the word @dfn{argument} means
+``data provided to a function or operation.''  Any Emacs command can be
+given a @dfn{numeric argument} (also called a @dfn{prefix argument}).
+Some commands interpret the argument as a repetition count.  For
+example, giving an argument of ten to the key @kbd{C-f} (the command
address@hidden, move forward one character) moves forward ten
+characters.  With these commands, no argument is equivalent to an
+argument of one.  Negative arguments are allowed.  Often they tell a
+command to move or act  in the opposite direction.
+
address@hidden M-1
address@hidden address@hidden
address@hidden digit-argument
address@hidden negative-argument
+  If your keyboard has a @key{META} key (labelled with a diamond on
+Sun-type keyboards and labelled @samp{Alt} on some other keyboards), the
+easiest way to specify a numeric argument is to type digits and/or a
+minus sign while holding down the @key{META} key.  For example,
address@hidden
+M-5 C-n
address@hidden example
address@hidden
+would move down five lines.  The characters @kbd{Meta-1}, @kbd{Meta-2},
+and so on, as well as @kbd{Meta--}, do this because they are keys bound
+to commands (@code{digit-argument} and @code{negative-argument}) that
+are defined to contribute to an argument for the next command.  Digits
+and @kbd{-} modified with Control, or Control and Meta, also specify
+numeric arguments.
+
address@hidden C-u
address@hidden universal-argument
+  Another way of specifying an argument is to use the @kbd{C-u}
+(@code{universal-argument}) command followed by the digits of the
+argument.  With @kbd{C-u}, you can type the argument digits without
+holding down modifier keys; @kbd{C-u} works on all terminals.  To type a
+negative argument, type a minus sign after @kbd{C-u}.  Just a minus sign
+without digits normally means @minus{}1.
+
+  @kbd{C-u} followed by a character which is neither a digit nor a minus
+sign has the special meaning of ``multiply by four''.  It multiplies the
+argument for the next command by four.  @kbd{C-u} twice multiplies it by
+sixteen.  Thus, @kbd{C-u C-u C-f} moves forward sixteen characters.  This
+is a good way to move forward ``fast'', since it moves about 1/5 of a line
+in the usual size frame.  Other useful combinations are @kbd{C-u C-n},
address@hidden C-u C-n} (move down a good fraction of a frame), @kbd{C-u C-u
+C-o} (make ``a lot'' of blank lines), and @kbd{C-u C-k} (kill four
+lines).
+
+  Some commands care only about whether there is an argument and not about
+its value.  For example, the command @kbd{M-q} (@code{fill-paragraph}) with
+no argument fills text; with an argument, it justifies the text as well.
+(@xref{Filling}, for more information on @kbd{M-q}.)  Just @kbd{C-u} is a
+handy way of providing an argument for such commands.
+
+  Some commands use the value of the argument as a repeat count, but do
+something peculiar when there is no argument.  For example, the command
address@hidden (@code{kill-line}) with argument @var{n} kills @var{n} lines,
+including their terminating newlines.  But @kbd{C-k} with no argument is
+special: it kills the text up to the next newline, or, if point is right at
+the end of the line, it kills the newline itself.  Thus, two @kbd{C-k}
+commands with no arguments can kill a non-blank line, just like @kbd{C-k}
+with an argument of one.  (@xref{Killing}, for more information on
address@hidden)
+
+  A few commands treat a plain @kbd{C-u} differently from an ordinary
+argument.  A few others may treat an argument of just a minus sign
+differently from an argument of @minus{}1.  These unusual cases are
+described when they come up; they are always for reasons of convenience
+of use of the individual command.
+
+  You can use a numeric argument to insert multiple copies of a
+character.  This is straightforward unless the character is a digit; for
+example, @kbd{C-u 6 4 a} inserts 64 copies of the character @samp{a}.
+But this does not work for inserting digits; @kbd{C-u 6 4 1} specifies
+an argument of 641, rather than inserting anything.  To separate the
+digit to insert from the argument, type another @kbd{C-u}; for example,
address@hidden 6 4 C-u 1} does insert 64 copies of the character @samp{1}.
+
+  We use the term ``prefix argument'' as well as ``numeric argument'' to
+emphasize that you type the argument before the command, and to
+distinguish these arguments from minibuffer arguments that come after
+the command.
+
+
address@hidden Undo, Minibuffer, Basic, Top
address@hidden Undoing Changes
address@hidden undo
address@hidden mistakes, correcting
+
+  Emacs allows you to undo all changes you make to the text of a buffer,
+up to a certain amount of change (8000 characters).  Each buffer records
+changes individually, and the undo command always applies to the
+current buffer.  Usually each editing command makes a separate entry
+in the undo records, but some commands such as @code{query-replace}
+make many entries, and very simple commands such as self-inserting
+characters are often grouped to make undoing less tedious.
+
address@hidden @kbd
address@hidden C-x u
+Undo one batch of changes (usually, one command's worth) (@code{undo}).
address@hidden C-_
+The same.
address@hidden table
+
address@hidden C-x u
address@hidden C-_
address@hidden undo
+  The command @kbd{C-x u} or @kbd{C-_} allows you to undo changes.  The
+first time you give this command, it undoes the last change.  Point
+moves to the text affected by the undo, so you can see what was undone.
+
+  Consecutive repetitions of the @kbd{C-_} or @kbd{C-x u} commands undo
+earlier and earlier changes, back to the limit of what has been
+recorded.  If all recorded changes have already been undone, the undo
+command prints an error message and does nothing.
+
+  Any command other than an undo command breaks the sequence of undo
+commands.  Starting at this moment, the previous undo commands are
+considered ordinary changes that can themselves be undone.  Thus, you can
+redo changes you have undone by typing @kbd{C-f} or any other command
+that have no important effect, and then using more undo commands.
+
+  If you notice that a buffer has been modified accidentally, the
+easiest way to recover is to type @kbd{C-_} repeatedly until the stars
+disappear from the front of the mode line.  When that happens, all the
+modifications you made have been canceled.  If you do not remember
+whether you changed the buffer deliberately, type @kbd{C-_} once. When
+you see Emacs undo the last change you made, you probably remember why you
+made it.  If the change was an accident, leave it undone.  If it was
+deliberate, redo the change as described in the preceding paragraph.
+
+  Whenever an undo command makes the stars disappear from the mode line,
+the buffer contents is the same as it was when the file was last read in
+or saved.
+
+  Not all buffers record undo information.  Buffers whose names start with
+spaces don't; these buffers are used internally by Emacs and its extensions
+to hold text that users don't normally look at or edit.  Minibuffers,
+help buffers, and documentation buffers also don't record undo information.
+
+  Emacs can remember at most 8000 or so characters of deleted or
+modified text in any one buffer for reinsertion by the undo command.
+There is also a limit on the number of individual insert, delete, or
+change actions that Emacs can remember.
+
+  There are two keys to run the @code{undo} command, @kbd{C-x u} and
address@hidden, because on some keyboards, it is not obvious how to type
address@hidden @kbd{C-x u} is an alternative you can type in the same
+fashion on any terminal.
+
address@hidden Minibuffer, M-x, Undo, Top
address@hidden The Minibuffer
address@hidden minibuffer
+
+  The @dfn{minibuffer} is the facility used by XEmacs commands to read
+arguments more complicated than a single number.  Minibuffer arguments
+can be file names, buffer names, Lisp function names, XEmacs command
+names, Lisp expressions, and many other things, depending on the command
+reading the argument.  You can use the usual XEmacs editing commands in
+the minibuffer to edit the argument text.
+
address@hidden prompt
+  When the minibuffer is in use, it appears in the echo area, and the
+cursor moves there.  The beginning of the minibuffer line displays a
address@hidden which says what kind of input you should supply and how it
+will be used.  Often this prompt is derived from the name of the command
+that the argument is for.  The prompt normally ends with a colon.
+
address@hidden default argument
+  Sometimes a @dfn{default argument} appears in parentheses after the
+colon; it, too, is part of the prompt.  The default is used as the
+argument value if you enter an empty argument (e.g., by just typing @key{RET}).
+For example, commands that read buffer names always show a default, which
+is the name of the buffer that will be used if you type just @key{RET}.
+
address@hidden C-g
+  The simplest way to enter a minibuffer argument is to type the text
+you want, terminated by @key{RET} which exits the minibuffer.  You can
+cancel the command that wants the argument, and get out of the
+minibuffer, by typing @kbd{C-g}.
+
+  Since the minibuffer uses the screen space of the echo area, it can
+conflict with other ways XEmacs customarily uses the echo area.  Here is
+how XEmacs handles such conflicts:
+
address@hidden @bullet
address@hidden
+If a command gets an error while you are in the minibuffer, this does
+not cancel the minibuffer.  However, the echo area is needed for the
+error message and therefore the minibuffer itself is hidden for a
+while.  It comes back after a few seconds, or as soon as you type
+anything.
+
address@hidden
+If in the minibuffer you use a command whose purpose is to print a
+message in the echo area, such as @kbd{C-x =}, the message is printed
+normally, and the minibuffer is hidden for a while.  It comes back
+after a few seconds, or as soon as you type anything.
+
address@hidden
+Echoing of keystrokes does not take place while the minibuffer is in
+use.
address@hidden itemize
+
address@hidden
+* File: Minibuffer File.  Entering file names with the minibuffer.
+* Edit: Minibuffer Edit.  How to edit in the minibuffer.
+* Completion::           An abbreviation facility for minibuffer input.
+* Minibuffer History::    Reusing recent minibuffer arguments.
+* Repetition::           Re-executing commands that used the minibuffer.
address@hidden menu
+
address@hidden Minibuffer File, Minibuffer Edit, Minibuffer, Minibuffer
address@hidden Minibuffers for File Names
+
+  Sometimes the minibuffer starts out with text in it.  For example, when
+you are supposed to give a file name, the minibuffer starts out containing
+the @dfn{default directory}, which ends with a slash.  This is to inform
+you which directory the file will be found in if you do not specify a
+directory.
+
+  For example, the minibuffer might start out with these contents:
+
address@hidden
+Find File: /u2/emacs/src/
address@hidden example
+
address@hidden
+where @samp{Find File:@: } is the prompt.  Typing @kbd{buffer.c}
+specifies the file @file{/u2/emacs/src/buffer.c}.  To find files in
+nearby directories, use @kbd{..}; thus, if you type
address@hidden/lisp/simple.el}, you will get the file named
address@hidden/u2/emacs/lisp/simple.el}.  Alternatively, you can kill with
address@hidden@key{DEL}} the directory names you don't want (@pxref{Words}).
+
+  If you don't want any of the default, you can kill it with @kbd{C-a
+C-k}.  But you don't need to kill the default; you can simply ignore it.
+Insert an absolute file name, one starting with a slash or a tilde,
+after the default directory.  For example, to specify the file
address@hidden/etc/termcap}, just insert that name, giving these minibuffer
+contents:
+
address@hidden
+Find File: /u2/emacs/src//etc/termcap
address@hidden example
+
address@hidden
address@hidden // in file name
address@hidden double slash in file name
address@hidden slashes repeated in file name
+XEmacs gives a special meaning to a double slash (which is not normally
+a useful thing to write): it means, ``ignore everything before the
+second slash in the pair.''  Thus, @samp{/u2/emacs/src/} is ignored in
+the example above, and you get the file @file{/etc/termcap}.
+
address@hidden insert-default-directory
+If you set @code{insert-default-directory} to @code{nil}, the default
+directory is not inserted in the minibuffer.  This way, the minibuffer
+starts out empty.  But the name you type, if relative, is still
+interpreted with respect to the same default directory.
+
address@hidden Minibuffer Edit, Completion, Minibuffer File, Minibuffer
address@hidden Editing in the Minibuffer
+
+  The minibuffer is an XEmacs buffer (albeit a peculiar one), and the
+usual XEmacs commands are available for editing the text of an argument
+you are entering.
+
+  Since @key{RET} in the minibuffer is defined to exit the minibuffer,
+you can't use it to insert a newline in the minibuffer.  To do that,
+type @kbd{C-o} or @kbd{C-q C-j}.  (Recall that a newline is really the
+character control-J.)
+
+  The minibuffer has its own window which always has space on the screen
+but acts as if it were not there when the minibuffer is not in use.
+When the minibuffer is in use, its window is just like the others; you
+can switch to another window with @kbd{C-x o}, edit text in other
+windows and perhaps even visit more files, before returning to the
+minibuffer to submit the argument.  You can kill text in another window,
+return to the minibuffer window, and then yank the text to use it in the
+argument.  @xref{Windows}.
+
+  There are some restrictions on the use of the minibuffer window,
+however.  You cannot switch buffers in it---the minibuffer and its
+window are permanently attached.  Also, you cannot split or kill the
+minibuffer window. But you can make it taller in the normal fashion with
address@hidden ^}.  If you enable Resize-Minibuffer mode, then the
+minibuffer window expands vertically as necessary to hold the text that
+you put in the minibuffer.  Use @kbd{M-x resize-minibuffer-mode} to
+enable or disable this minor mode (@pxref{Minor Modes}).
+
address@hidden C-M-v
+  If while in the minibuffer you issue a command that displays help text
+of any sort in another window, you can use the @kbd{C-M-v} command while
+in the minibuffer to scroll the help text.  This lasts until you exit
+the minibuffer.  This feature is especially useful if a completing
+minibuffer gives you a list of possible completions.  @xref{Other Window}.
+
address@hidden minibuffer-confirm-incomplete
+If the variable @code{minibuffer-confirm-incomplete} is @code{t}, you
+are asked for confirmation if there is no known completion for the text
+you typed. For example, if you attempted to visit a non-existent file,
+the minibuffer might read:
address@hidden
+        Find File: chocolate_bar.c [no completions, confirm]
address@hidden example
+If you press @kbd{Return} again, that confirms the filename. Otherwise,
+you can continue editing it. 
+
+ XEmacs supports recursive use of the minibuffer.  However, it is easy
+to do this by accident (because of autorepeating keyboards, for example)
+and get confused.  Therefore, most XEmacs commands that use the
+minibuffer refuse to operate if the minibuffer window is selected.  If
+the minibuffer is active but you have switched to a different window,
+recursive use of the minibuffer is allowed---if you know enough to try
+to do this, you probably will not get confused.
+
address@hidden enable-recursive-minibuffers
+  If you set the variable @code{enable-recursive-minibuffers} to a
address@hidden, recursive use of the minibuffer is always allowed.
+
address@hidden Completion, Minibuffer History, Minibuffer Edit, Minibuffer
address@hidden Completion
address@hidden completion
+
+  For certain kinds of arguments, you can use @dfn{completion} to enter
+the argument value.  Completion means that you type part of the
+argument, then XEmacs visibly fills in the rest, or as much as
+can be determined from the part you have typed.
+
+  When completion is available, certain address@hidden, @key{RET}, and
address@hidden rebound to complete the text present in the
+minibuffer into a longer string that it stands for, by matching it
+against a set of @dfn{completion alternatives} provided by the command
+reading the argument.  @kbd{?} is defined to display a list of possible
+completions of what you have inserted.
+
+  For example, when @kbd{M-x} uses the minibuffer to read the name of a
+command, it provides a list of all available XEmacs command names to
+complete against.  The completion keys match the text in the minibuffer
+against all the command names, find any additional name characters
+implied by the ones already present in the minibuffer, and add those
+characters to the ones you have given.  This is what makes it possible
+to type @kbd{M-x inse @key{SPC} b @key{RET}} instead of @kbd{M-x
+insert-buffer @key{RET}} (for example).
+
+  Case is normally significant in completion because it is significant
+in most of the names that you can complete (buffer names, file names and
+command names).  Thus, @samp{fo} does not complete to @samp{Foo}.  When
+you are completing a name in which case does not matter, case may be
+ignored for completion's sake if specified by program.
+
+When a completion list is displayed, the completions will highlight as
+you move the mouse over them.  Clicking the middle mouse button on any 
+highlighted completion will ``select'' it just as if you had typed it in
+and hit @key{RET}.
+
address@hidden
+* Example: Completion Example.
+* Commands: Completion Commands.
+* Strict Completion::
+* Options: Completion Options.
address@hidden menu
+
address@hidden Completion Example, Completion Commands, Completion, Completion
address@hidden Completion Example
+
address@hidden TAB
address@hidden minibuffer-complete
+  A concrete example may help here.  If you type @kbd{M-x au @key{TAB}},
+the @key{TAB} looks for alternatives (in this case, command names) that
+start with @samp{au}.  There are several, including
address@hidden and @code{auto-save-mode}---but they are all the
+same as far as @code{auto}, so the @samp{au} in the minibuffer changes
+to @samp{auto}.
+
+  If you type @key{TAB} again immediately, there are multiple
+possibilities for the very next character---it could be any of
address@hidden no more characters are added; instead, @key{TAB}
+displays a list of all possible completions in another window.
+
+  If you go on to type @kbd{-f @key{TAB}}, this @key{TAB} sees
address@hidden  The only command name starting this way is
address@hidden, so completion fills in the rest of that.  You now
+have @samp{auto-fill-mode} in the minibuffer after typing just @kbd{au
address@hidden f @key{TAB}}.  Note that @key{TAB} has this effect because in
+the minibuffer it is bound to the command @code{minibuffer-complete}
+when completion is available.
+
address@hidden Completion Commands, Strict Completion, Completion Example, 
Completion
address@hidden Completion Commands
+
+  Here is a list of the completion commands defined in the minibuffer
+when completion is available.
+
address@hidden @kbd
address@hidden @key{TAB}
+Complete the text in the minibuffer as much as possible
+(@code{minibuffer-complete}).
address@hidden @key{SPC}
+Complete the minibuffer text, but don't go beyond one word
+(@code{minibuffer-complete-word}).
address@hidden @key{RET}
+Submit the text in the minibuffer as the argument, possibly completing
+first as described below (@code{minibuffer-complete-and-exit}).
address@hidden ?
+Print a list of all possible completions of the text in the minibuffer
+(@code{minibuffer-list-completions}).
address@hidden @key{button2}
+Select the highlighted text under the mouse as a minibuffer response.
+When the minibuffer is being used to prompt the user for a completion,
+any valid completions which are visible on the screen will be highlighted
+when the mouse moves over them.  Clicking @key{button2} will select the
+highlighted completion and exit the minibuffer.  
+(@code{minibuf-select-highlighted-completion}).
address@hidden table
+
address@hidden SPC
address@hidden minibuffer-complete-word
+  @key{SPC} completes much like @key{TAB}, but never goes beyond the
+next hyphen or space.  If you have @samp{auto-f} in the minibuffer and
+type @key{SPC}, it finds that the completion is @samp{auto-fill-mode},
+but it stops completing after @samp{fill-}.  This gives
address@hidden  Another @key{SPC} at this point completes all the
+way to @samp{auto-fill-mode}.  @key{SPC} in the minibuffer when
+completion is available runs the command
address@hidden
+
+  Here are some commands you can use to choose a completion from a
+window that displays a list of completions:
+
address@hidden @kbd
address@hidden mouse-choose-completion
address@hidden button2up
+Clicking mouse button 2 on a completion in the list of possible
+completions chooses that completion (@code{mouse-choose-completion}).
+You normally use this command while point is in the minibuffer; but you
+must click in the list of completions, not in the minibuffer itself.
+
address@hidden switch-to-completions
address@hidden @key{PRIOR}
address@hidden M-v
+Typing @key{PRIOR} or @kbd{M-v}, while in the minibuffer, selects the
+window showing the completion list buffer
+(@code{switch-to-completions}).  This paves the way for using the
+commands below.  (Selecting that window in the usual ways has the same
+effect, but this way is more convenient.)
+
address@hidden choose-completion
address@hidden @key{RET}
+Typing @key{RET} @emph{in the completion list buffer} chooses the
+completion that point is in or next to (@code{choose-completion}).  To
+use this command, you must first switch windows to the window that shows
+the list of completions.
+
address@hidden next-list-mode-item
address@hidden @key{RIGHT}
address@hidden @key{TAB}
address@hidden C-f
+Typing the right-arrow key @key{RIGHT}, @key{TAB} or @kbd{C-f} @emph{in
+the completion list buffer} moves point to the following completion
+(@code{next-list-mode-item}).
+
address@hidden previous-list-mode-item
address@hidden @key{LEFT}
address@hidden C-b
+Typing the left-arrow key @key{LEFT} or @kbd{C-b} @emph{in the
+completion list buffer} moves point toward the beginning of the buffer,
+to the previous completion (@code{previous-list-mode-item}).
address@hidden table
+
address@hidden Strict Completion, Completion Options, Completion Commands, 
Completion
address@hidden Strict Completion
+
+  There are three different ways that @key{RET} can work in completing
+minibuffers, depending on how the argument will be used.
+
address@hidden @bullet
address@hidden
address@hidden completion is used when it is meaningless to give any
+argument except one of the known alternatives.  For example, when
address@hidden k} reads the name of a buffer to kill, it is meaningless to
+give anything but the name of an existing buffer.  In strict
+completion, @key{RET} refuses to exit if the text in the minibuffer
+does not complete to an exact match.
+
address@hidden
address@hidden completion is similar to strict completion, except that
address@hidden exits only if the text was an exact match already, not
+needing completion.  If the text is not an exact match, @key{RET} does
+not exit, but it does complete the text.  If it completes to an exact
+match, a second @key{RET} will exit.
+
+Cautious completion is used for reading file names for files that must
+already exist.
+
address@hidden
address@hidden completion is used when any string whatever is
+meaningful, and the list of completion alternatives is just a guide.
+For example, when @kbd{C-x C-f} reads the name of a file to visit, any
+file name is allowed, in case you want to create a file.  In
+permissive completion, @key{RET} takes the text in the minibuffer
+exactly as given, without completing it.
address@hidden itemize
+
+  The completion commands display a list of all possible completions in
+a window whenever there is more than one possibility for the very next
+character.  Also, typing @kbd{?} explicitly requests such a list.  If
+the list of completions is long, you can scroll it with @kbd{C-M-v}
+(@pxref{Other Window}).
+
address@hidden Completion Options,  , Strict Completion, Completion
address@hidden Completion Options
+
address@hidden completion-ignored-extensions
+  When completion is done on file names, certain file names are usually
+ignored.  The variable @code{completion-ignored-extensions} contains a
+list of strings; a file whose name ends in any of those strings is
+ignored as a possible completion.  The standard value of this variable
+has several elements including @code{".o"}, @code{".elc"}, @code{".dvi"}
+and @code{"~"}.  The effect is that, for example, @samp{foo} can
+complete to @samp{foo.c} even though @samp{foo.o} exists as well.
+However, if @emph{all} the possible completions end in ``ignored''
+strings, then they are not ignored.  Ignored extensions do not apply to
+lists of completions---those always mention all possible completions.
+
address@hidden completion-auto-help
+  If a completion command finds the next character is undetermined, it
+automatically displays a list of all possible completions.  If the variable
address@hidden is set to @code{nil}, this does not happen,
+and you must type @kbd{?} to display the possible completions.
+
address@hidden minibuffer-confirm-incomplete
+If the variable @code{minibuffer-confirm-incomplete} is set to @code{t},
+then in contexts where @code{completing-read} allows answers that are
+not valid completions, an extra @key{RET} must be typed to confirm the
+response.  This is helpful for catching typos.
+
address@hidden Icomplete mode
+  Icomplete mode presents a constantly-updated display that tells you
+what completions are available for the text you've entered so far.  The
+command to enable or disable this minor mode is @kbd{M-x
+icomplete-mode}.
+
address@hidden Minibuffer History, Repetition, Completion, Minibuffer
address@hidden Minibuffer History
address@hidden minibuffer history
address@hidden history of minibuffer input
+
+  Every argument that you enter with the minibuffer is saved on a
address@hidden history list} so that you can use it again later in
+another argument.  Special commands load the text of an earlier argument
+in the minibuffer.  They discard the old minibuffer contents, so you can
+think of them as moving through the history of previous arguments.
+
address@hidden @kbd
address@hidden @key{UP}
address@hidden M-p
+Move to the next earlier argument string saved in the minibuffer history
+(@code{previous-history-element}).
address@hidden @key{DOWN}
address@hidden M-n
+Move to the next later argument string saved in the minibuffer history
+(@code{next-history-element}).
address@hidden M-r @var{regexp} @key{RET}
+Move to an earlier saved argument in the minibuffer history that has a
+match for @var{regexp} (@code{previous-matching-history-element}).
address@hidden M-s @var{regexp} @key{RET}
+Move to a later saved argument in the minibuffer history that has a
+match for @var{regexp} (@code{next-matching-history-element}).
address@hidden table
+
address@hidden M-p @r{(minibuffer history)}
address@hidden M-n @r{(minibuffer history)}
address@hidden next-history-element
address@hidden previous-history-element
+  The simplest way to reuse the saved arguments in the history list is
+to move through the history list one element at a time.  While in the
+minibuffer, use @kbd{M-p} or up-arrow (@code{previous-history-element})
+to ``move to'' the next earlier minibuffer input, and use @kbd{M-n} or
+down-arrow (@code{next-history-element}) to ``move to'' the next later
+input.
+
+  The previous input that you fetch from the history entirely replaces
+the contents of the minibuffer.  To use it as the argument, exit the
+minibuffer as usual with @key{RET}.  You can also edit the text before
+you reuse it; this does not change the history element that you
+``moved'' to, but your new argument does go at the end of the history
+list in its own right.
+
+  For many minibuffer arguments there is a ``default'' value.  In some
+cases, the minibuffer history commands know the default value.  Then you
+can insert the default value into the minibuffer as text by using
address@hidden to move ``into the future'' in the history.
+
address@hidden previous-matching-history-element
address@hidden next-matching-history-element
address@hidden M-r @r{(minibuffer history)}
address@hidden M-s @r{(minibuffer history)}
+  There are also commands to search forward or backward through the
+history; they search for history elements that match a regular
+expression that you specify with the minibuffer.  @kbd{M-r}
+(@code{previous-matching-history-element}) searches older elements in
+the history, while @kbd{M-s} (@code{next-matching-history-element})
+searches newer elements.  By special dispensation, these commands can
+use the minibuffer to read their arguments even though you are already
+in the minibuffer when you issue them.  As with incremental searching,
+an uppercase letter in the regular expression makes the search
+case-sensitive (@pxref{Search Case}).
+
+  All uses of the minibuffer record your input on a history list, but
+there are separate history lists for different kinds of arguments.  For
+example, there is a list for file names, used by all the commands that
+read file names.
+
+  There are several other very specific history lists, including one for
+command names read by @kbd{M-x}, one for buffer names, one for arguments
+of commands like @code{query-replace}, and one for compilation commands
+read by @code{compile}.  Finally, there is one ``miscellaneous'' history
+list that most minibuffer arguments use.
+
address@hidden Do wee need this?
+
address@hidden Repetition,  , Minibuffer History, Minibuffer
address@hidden Repeating Minibuffer Commands
address@hidden command history
address@hidden history of commands
+
+  Every command that uses the minibuffer at least once is recorded on a
+special history list, together with the values of its arguments, so that
+you can repeat the entire command.  In particular, every use of
address@hidden is recorded there, since @kbd{M-x} uses the minibuffer to read
+the command name.
+
address@hidden list-command-history
address@hidden widecommands
address@hidden @kbd
address@hidden C-x @key{ESC} @key{ESC}
+Re-execute a recent minibuffer command (@code{repeat-complex-command}).
address@hidden M-p
+Within @kbd{C-x @key{ESC} @key{ESC}}, move to previous recorded command
+(@code{previous-history-element}).
address@hidden M-n
+Within @kbd{C-x @key{ESC} @key{ESC}}, move to the next (more recent)
+recorded command (@code{next-history-element}).
address@hidden M-x list-command-history
+Display the entire command history, showing all the commands
address@hidden @key{ESC} @key{ESC}} can repeat, most recent first.
address@hidden table
+
address@hidden C-x ESC ESC
address@hidden repeat-complex-command
+  @kbd{C-x @key{ESC} @key{ESC}} is used to re-execute a recent
+minibuffer-using command.  With no argument, it repeats the last such
+command.  A numeric argument specifies which command to repeat; one
+means the last one, and larger numbers specify earlier ones.
+
+  @kbd{C-x @key{ESC} @key{ESC}} works by turning the previous command
+into a Lisp expression and then entering a minibuffer initialized with
+the text for that expression.  If you type just @key{RET}, the command
+is repeated as before.  You can also change the command by editing the
+Lisp expression.  Whatever expression you finally submit is what will be
+executed.  The repeated command is added to the front of the command
+history unless it is identical to the most recently executed command
+already there.
+
+  Even if you don't understand Lisp syntax, it will probably be obvious
+which command is displayed for repetition.  If you do not change the text,
+you can be sure the command will repeat exactly as before.
+
address@hidden M-n
address@hidden M-p
address@hidden next-complex-command
address@hidden previous-complex-command
+  If you are in the minibuffer for @kbd{C-x @key{ESC} @key{ESC}} and the
+command shown to you is not the one you want to repeat, you can move
+around the list of previous commands using @kbd{M-n} and @kbd{M-p}.
address@hidden replaces the contents of the minibuffer with the next earlier
+recorded command, and @kbd{M-n} replaces it with the next later command.
+After finding the desired previous command, you can edit its expression
+and then resubmit it by typing @key{RET}.  Any editing you have done on
+the command to be repeated is lost if you use @kbd{M-n} or @kbd{M-p}.
+
address@hidden and @kbd{M-p} are specially defined within @kbd{C-x @key{ESC}
address@hidden to run the commands @code{previous-history-element} and
address@hidden
+
address@hidden command-history
+  The list of previous commands using the minibuffer is stored as a Lisp
+list in the variable @code{command-history}.  Each element of the list
+is a Lisp expression which describes one command and its arguments.
+Lisp programs can reexecute a command by feeding the corresponding
address@hidden element to @code{eval}.
+
address@hidden M-x, Help, Minibuffer, Top
address@hidden Running Commands by Name
+
+  The Emacs commands that are used often or that must be quick to type are
+bound to keys---short sequences of characters---for convenient use.  Other
+Emacs commands that are used more rarely are not bound to keys; to run
+them, you must refer to them by name.
+
+  A command name consists, by convention, of one or more words,
+separated by hyphens: for example, @code{auto-fill-mode} or
address@hidden  The use of English words makes the command name
+easier to remember than a key made up of obscure characters, even though
+it results in more characters to type.  You can run any command by name,
+even if it can be run by keys as well. 
+
address@hidden M-x
address@hidden minibuffer
+ To run a command by name, start with @kbd{M-x}, then type the
+command name, and finish with @key{RET}.  @kbd{M-x} uses the minibuffer
+to read the command name.  @key{RET} exits the minibuffer and runs the
+command.
+
+  Emacs uses the minibuffer for reading input for many different purposes;
+on this occasion, the string @samp{M-x} is displayed at the beginning of
+the minibuffer as a @dfn{prompt} to remind you that your input should be
+the name of a command to be run.  @xref{Minibuffer}, for full information
+on the features of the minibuffer.
+
+  You can use completion to enter a command name.  For example, to
+invoke the command @code{forward-char}, type:
+
address@hidden
+M-x forward-char @key{RET}
address@hidden example
+or
address@hidden
+M-x fo @key{TAB} c @key{RET}
address@hidden example
+
address@hidden
+After you type in @code{M-x fo TAB} emacs will give you a possible list of 
+completions from which you can choose. Note that @code{forward-char} is the 
+same command that you invoke with the key @kbd{C-f}.  You can call any 
+command (interactively callable function) defined in Emacs by its name 
+using @kbd{M-x} regardless of whether or not any keys are bound to it.
+
+  If you type @kbd{C-g} while Emacs reads the command name, you cancel
+the @kbd{M-x} command and get out of the minibuffer, ending up at top level.
+
+  To pass a numeric argument to a command you are invoking with
address@hidden, specify the numeric argument before the @kbd{M-x}.  @kbd{M-x}
+passes the argument along to the function that it calls.  The argument
+value appears in the prompt while the command name is being read.
+
address@hidden interactive
+You can use the command @code{M-x interactive} to specify a way of
+parsing arguments for interactive use of a function.  For example, write:
+
address@hidden
+  (defun foo (arg) "Doc string" (interactive "p") ...use arg...)
address@hidden example
+
+to make @code{arg} be the prefix argument when @code{foo} is called as a
+command.  The call to @code{interactive} is actually a declaration
+rather than a function; it tells @code{call-interactively} how to read
+arguments to pass to the function.  When actually called, @code{interactive}
+returns @code{nil}.
+
+The argument of @var{interactive} is usually a string containing a code
+letter followed by a prompt.  Some code letters do not use I/O to get
+the argument and do not need prompts.  To prompt for multiple arguments,
+you must provide a code letter, its prompt, a newline, and another code
+letter, and so forth.  If the argument is not a string, it is evaluated 
+to get a list of arguments to pass to the function.  If you do not provide an
+argument to @code{interactive}, no arguments are passed when calling
+interactively.
+
+Available code letters are:
+
address@hidden @code
address@hidden a
+Function name: symbol with a function definition
address@hidden b
+Name of existing buffer
address@hidden B
+Name of buffer, possibly nonexistent
address@hidden c
+Character
address@hidden C
+Command name: symbol with interactive function definition
address@hidden d
+Value of point as number (does not do I/O)
address@hidden D
+Directory name
address@hidden e
+Last mouse event
address@hidden f
+Existing file name
address@hidden F
+Possibly nonexistent file name
address@hidden k
+Key sequence (string)
address@hidden m
+Value of mark as number (does not do I/O)
address@hidden n
+Number read using minibuffer
address@hidden N
+Prefix arg converted to number, or if none, do like code @code{n}
address@hidden p
+Prefix arg converted to number (does not do I/O)
address@hidden P
+Prefix arg in raw form (does not do I/O)
address@hidden r
+Region: point and mark as two numeric arguments, smallest first (does
+not do I/O)
address@hidden s
+Any string
address@hidden S
+Any symbol
address@hidden v
+Variable name: symbol that is @code{user-variable-p}
address@hidden x
+Lisp expression read but not evaluated
address@hidden X
+Lisp expression read and evaluated
address@hidden table
+
+In addition, if the string begins with @samp{*}, an error is
+signaled if the buffer is read-only.  This happens before reading any
+arguments.  If the string begins with @samp{@@}, the window the mouse is
+over is selected before anything else is done.  You may use both
address@hidden@@} and @samp{*}; they are processed in the order that they 
appear.
+
+Normally, when describing a command that is run by name, we omit the
address@hidden that is needed to terminate the name.  Thus we may refer to
address@hidden auto-fill-mode} rather than @kbd{M-x auto-fill-mode} @key{RET}.
+We mention the @key{RET} only when it is necessary to emphasize its
+presence, for example, when describing a sequence of input that contains
+a command name and arguments that follow it.
+
address@hidden execute-extended-command
+  @kbd{M-x} is defined to run the command @code{execute-extended-command},
+which is responsible for reading the name of another command and invoking
+it.
+
address@hidden Help, Mark, M-x, Top
address@hidden Help
address@hidden Help
address@hidden help
address@hidden self-documentation
address@hidden help-command
address@hidden C-h
address@hidden F1
+
+  XEmacs provides extensive help features accessible through a single
+character, @kbd{C-h}.  @kbd{C-h} is a prefix key that is used only for
+documentation-printing commands.  The characters that you can type after
address@hidden are called @dfn{help options}.  One help option is @kbd{C-h};
+that is how you ask for help about using @kbd{C-h}.  To cancel, type
address@hidden  The function key @key{F1} is equivalent to @kbd{C-h}.
+
address@hidden C-h C-h
address@hidden help-for-help
+  @kbd{C-h C-h} (@code{help-for-help}) displays a list of the possible
+help options, and then asks you to type the desired option.  It prompts
+with the string:
+
address@hidden
+A B C F I K L M N P S T V W C-c C-d C-f C-i C-k C-n C-w;  ? for more help:
address@hidden smallexample
+
address@hidden
+You should type one of those characters.
+
+  Typing a third @kbd{C-h} displays a description of what the options mean;
+Emacs still waits for you to type an option.  To cancel, type @kbd{C-g}.
+
+  Most help buffers use a special major mode, Help mode, which lets you
+scroll conveniently with @key{SPC} and @key{DEL} or @key{BS}.
+
address@hidden
+* Help Summary::       Brief list of all Help commands.
+* Key Help::           Asking what a key does in XEmacs.
+* Name Help::          Asking about a command, variable or function name.
+* Apropos::            Asking what pertains to a given topic.
+* Library Keywords::   Finding Lisp libraries by keywords (topics).
+* Help Mode::           Special features of Help mode and Help buffers.
+* Misc Help::          Other help commands.
address@hidden menu
+
address@hidden Help Summary, Key Help, Help, Help
address@hidden Help Summary
+
+  Here is a summary of the defined help commands.
+
address@hidden @kbd
address@hidden C-h a @var{regexp} @key{RET}
+Display a list of functions and variables whose names match @var{regexp}
+(@code{hyper-apropos}).
address@hidden C-h A @var{regexp}
+Show all commands whose names contain matches for @var{regexp}
+(@code{command-apropos}).
address@hidden C-h b
+Display a table of all key bindings currently in effect, with local
+bindings of the current major mode first, followed by all global
+bindings (@code{describe-bindings}).
address@hidden C-h c @var{key}
+Print the name of the command that @var{key} runs
+(@code{describe-key-briefly}).  Here @kbd{c} stands for `character'.  For more
+extensive information on @var{key}, use @kbd{C-h k}.
address@hidden C-h d @var{function} @key{RET}
address@hidden C-h f @var{function} @key{RET}
+Display documentation on the Lisp function named @var{function}
+(@code{describe-function}).  Since commands are Lisp functions,
+a command name may be used.
address@hidden C-h i
+Run Info, the program for browsing documentation files (@code{info}).
+The complete XEmacs manual is available online in Info.
address@hidden C-h k @var{key}
+Display the name and documentation of the command that @var{key} runs
+(@code{describe-key}).
address@hidden C-h l
+Display a description of the last 100 characters you typed
+(@code{view-lossage}).
address@hidden C-h m
+Display documentation of the current major mode (@code{describe-mode}).
address@hidden C-h n
address@hidden C-h C-n
+Display documentation of XEmacs changes, most recent first
+(@code{view-emacs-news}).
address@hidden C-h p
+Find packages by topic keyword (@code{finder-by-keyword}).
address@hidden C-h C-p
+Display a table of all mouse bindings currently in effect now, with
+local bindings of the current major mode first, followed by all global
+bindings (@code{describe-pointer}).
address@hidden C-h s
+Display current contents of the syntax table, plus an explanation of
+what they mean (@code{describe-syntax}).  @xref{Syntax}.
address@hidden C-h t
+Enter the XEmacs interactive tutorial (@code{help-with-tutorial}).
address@hidden C-h v @var{var} @key{RET}
+Display the documentation of the Lisp variable @var{var}
+(@code{describe-variable}).
address@hidden C-h w @var{command} @key{RET}
+Print which keys run the command named @var{command} (@code{where-is}).
address@hidden C-h B @key{RET}
+Display info on how to deal with Beta versions of XEmacs
+(@code{describe-beta}).
address@hidden C-h C @var{group} @key{RET}
+Select customization buffer for @var{group} (@code{customize}).
address@hidden C-h F @key{RET}
+View the local copy of the XEmacs FAQ (@code{xemacs-local-faq}).
address@hidden C-h C-i @var{file} @key{RET}
+Read Info file @var{file} with Info browser (@code{Info-query}).
address@hidden C-h C-c @var{command} @key{RET}
+Look up an Emacs command @var{command} in the Emacs manual in the Info
+system (@code{Info-goto-emacs-command-node}).
address@hidden C-h C-f @var{function} @key{RET}
+Look up an Emacs Lisp function @var{function} in the Elisp manual in the
+Info system (@code{Info-elisp-ref}).
address@hidden table
+
address@hidden Key Help, Name Help, Help Summary, Help
address@hidden Documentation for a Key
+
address@hidden C-h c
address@hidden describe-key-briefly
+  The most basic @kbd{C-h} options are @kbd{C-h c}
+(@code{describe-key-briefly}) and @address@hidden k}} (@code{describe-key}).
address@hidden c @var{key}} prints in the echo area the name of the command
+that @var{key} is bound to.  For example, @kbd{C-h c C-f} prints
address@hidden  Since command names are chosen to describe what
+the commands do, this is a good way to get a very brief description of
+what @var{key} does.
+
address@hidden C-h k
address@hidden describe-key
+  @kbd{C-h k @var{key}} is similar to @kbd{C-h c} but gives more
+information.  It displays the documentation string of the function
address@hidden is bound to as well as its name.  @var{key} is a string or
+vector of events.  When called interactively, @var{key} may also be a menu
+selection.  This information does not usually fit into the echo area, so a
+window is used for the display.
+
+  @kbd{C-h c} and @kbd{C-h k} work for any sort of key sequences,
+including function keys and mouse events.
+
address@hidden Name Help, Apropos, Key Help, Help
address@hidden Help by Command or Variable Name
+
address@hidden C-h f
address@hidden describe-function
address@hidden describe-function-show-arglist
+  @kbd{C-h f} (@code{describe-function}) reads the name of a Lisp
+function using the minibuffer, then displays that function's
+documentation string in a window.  Since commands are Lisp functions,
+you can use the argument @var{function} to get the documentation of a
+command that you know by name.  For example,
+
address@hidden
+C-h f auto-fill-mode @key{RET}
address@hidden example
+
address@hidden
+displays the documentation for @code{auto-fill-mode}. Using @kbd{C-h f}
+is the only way to see the documentation of a command that is not bound
+to any key, that is, a command you would normally call using @kbd{M-x}.
+If the variable @code{describe-function-show-arglist} is @code{t},
address@hidden shows its arglist if the @var{function} is not
+an autoload function.
+
+  @kbd{C-h f} is also useful for Lisp functions that you are planning to
+use in a Lisp program.  For example, if you have just written the
+expression @code{(make-vector len)} and want to make sure you are using
address@hidden properly, type @kbd{C-h f make-vector @key{RET}}.
+Because @kbd{C-h f} allows all function names, not just command names,
+you may find that some of your favorite abbreviations that work in
address@hidden don't work in @kbd{C-h f}.  An abbreviation may be unique
+among command names, yet fail to be unique when other function names are
+allowed.
+
+  The function name for @kbd{C-h f} to describe has a default which is
+used if you type @key{RET} leaving the minibuffer empty.  The default is
+the function called by the innermost Lisp expression in the buffer
+around point, @emph{provided} that is a valid, defined Lisp function
+name.  For example, if point is located following the text
address@hidden(make-vector (car x)}, the innermost list containing point is the
+one that starts with @samp{(make-vector}, so the default is to describe the
+function @code{make-vector}.
+
+  @kbd{C-h f} is often useful just to verify that you have the right
+spelling for the function name.  If @kbd{C-h f} mentions a name from the
+buffer as the default, that name must be defined as a Lisp function.  If
+that is all you want to know, just type @kbd{C-g} to cancel the @kbd{C-h
+f} command, then go on editing.
+
address@hidden C-h w
address@hidden where-is
+  @kbd{C-h w @var{command} @key{RET}} (@code{where-is}) tells you what
+keys are bound to @var{command}.  It prints a list of the keys in the
+echo area. Alternatively, it informs you that a command is not bound to
+any keys, which implies that you must use @kbd{M-x} to call the
+command.
+
address@hidden C-h v
address@hidden describe-variable
+  @kbd{C-h v} (@code{describe-variable}) is like @kbd{C-h f} but
+describes Lisp variables instead of Lisp functions.  Its default is the
+Lisp symbol around or before point, if that is the name of a known Lisp
+variable.  @xref{Variables}.
+
address@hidden Apropos, Library Keywords, Name Help, Help
address@hidden Apropos
+
address@hidden C-h A
address@hidden command-apropos
address@hidden apropos
+
address@hidden @kbd
address@hidden C-h A
+Show only symbols that are names of commands
+(@code{command-apropos}).
+
address@hidden M-x apropos @var{regexp}
+Show all symbols whose names contain matches for @var{regexp}.
address@hidden table
+
+  A more sophisticated sort of question to ask is, ``What are the
+commands for working with files?''  To ask this question, type @kbd{C-h
+a file @key{RET}}, which displays a list of all command names that
+contain @samp{file}, including @code{copy-file}, @code{find-file}, and
+so on.  With each command name appears a brief description of how to use
+the command, and what keys you can currently invoke it with.  For
+example, it would say that you can invoke @code{find-file} by typing
address@hidden C-f}.  The @kbd{A} in @kbd{C-h A} stands for `Apropos';
address@hidden A} runs the command @code{command-apropos}.  This command
+normally checks only commands (interactive functions); if you specify a
+prefix argument, it checks noninteractive functions as well.
+
+  Because @kbd{C-h A} looks only for functions whose names contain the
+string you specify, you must use ingenuity in choosing the string.  If
+you are looking for commands for killing backwards and @kbd{C-h a
+kill-backwards @key{RET}} doesn't reveal any, don't give up.  Try just
address@hidden, or just @kbd{backwards}, or just @kbd{back}.  Be persistent.
+Pretend you are playing Adventure.  Also note that you can use a regular
+expression as the argument, for more flexibility (@pxref{Regexps}).
+
+  Here is a set of arguments to give to @kbd{C-h a} that covers many
+classes of XEmacs commands, since there are strong conventions for
+naming the standard XEmacs commands.  By giving you a feel for the
+naming conventions, this set should also serve to aid you in developing
+a technique for picking @code{apropos} strings.
+
address@hidden
+char, line, word, sentence, paragraph, region, page, sexp, list, defun,
+rect, buffer, frame, window, face, file, dir, register, mode, beginning,
+end, forward, backward, next, previous, up, down, search, goto, kill,
+delete, mark, insert, yank, fill, indent, case, change, set, what, list,
+find, view, describe, default.
address@hidden quotation
+
address@hidden apropos
+  To list all Lisp symbols that contain a match for a regexp, not just
+the ones that are defined as commands, use the command @kbd{M-x apropos}
+instead of @kbd{C-h A}.  This command does not check key bindings by
+default; specify a numeric argument if you want it to check them.
+
address@hidden apropos-documentation
+  The @code{apropos-documentation} command is like @code{apropos} except
+that it searches documentation strings for matches for the specified
+regular expression.
+
address@hidden apropos-value
+  The @code{apropos-value} command is like @code{apropos} except that it
+searches symbols' values for matches for the specified regular
+expression.  This command does not check function definitions or
+property lists by default; specify a numeric argument if you want it to
+check them.
+
address@hidden apropos-do-all
+  If the variable @code{apropos-do-all} is address@hidden, the commands
+above all behave as if they had been given a prefix argument.
+
+  If you want more information about a function definition, variable or
+symbol property listed in the Apropos buffer, you can click on it with
address@hidden or move there and type @key{RET}.
+
address@hidden Library Keywords, Help Mode, Apropos, Help
address@hidden Keyword Search for Lisp Libraries
+
address@hidden C-h p
address@hidden finder-by-keyword
+The @kbd{C-h p} command lets you search the standard Emacs Lisp
+libraries by topic keywords.  Here is a partial list of keywords you can
+use:
+
address@hidden
+abbrev        abbreviation handling, typing shortcuts, macros
+bib           code related to the `bib' bibliography processor
+c             C, C++, and Objective-C language support
+calendar      calendar and time management support
+comm          communications, networking, remote access to files
+data          support for editing files of data
+docs          support for Emacs documentation
+dumped        files preloaded into Emacs
+emulations    emulations of other editors
+extensions    Emacs Lisp language extensions
+faces         support for multiple fonts
+frames        support for Emacs frames and window systems
+games         games, jokes and amusements
+hardware      support for interfacing with exotic hardware
+help          support for on-line help systems
+hypermedia    support for links between text or other media types
+i18n          internationalization and alternate character-set support
+internal      code for Emacs internals, build process, defaults
+languages     specialized modes for editing programming languages
+lisp          Lisp support, including Emacs Lisp
+local         code local to your site
+maint         maintenance aids for the Emacs development group
+mail          modes for electronic-mail handling
+matching      various sorts of searching and matching
+mouse         mouse support
+mule          multi-language extensions
+news          support for netnews reading and posting
+oop           support for object-oriented programming
+outlines      support for hierarchical outlining
+processes     process, subshell, compilation, and job control support
+terminals     support for terminal types
+tex           code related to the TeX formatter
+tools         programming tools
+unix          front-ends/assistants for, or emulators of, UNIX features
+vms           support code for vms
+wp            word processing
address@hidden display
+
address@hidden Help Mode, Misc Help, Library Keywords, Help
address@hidden Help Mode Commands
+
+  Help buffers provide the commands of View mode (@pxref{Misc File
+Ops}), plus a few special commands of their own.
+
address@hidden @kbd
address@hidden @key{SPC}
+Scroll forward.
address@hidden @key{DEL}
address@hidden @key{BS}
+Scroll backward.
address@hidden @item @key{RET}
address@hidden Follow a cross reference at point.
address@hidden @item @key{TAB}
address@hidden Move point forward to the next cross reference.
address@hidden @item address@hidden
address@hidden Move point back to the previous cross reference.
address@hidden @item Mouse-2
address@hidden Follow a cross reference that you click on.
address@hidden table
+
+  When a command name (@pxref{M-x,, Running Commands by Name}) or
+variable name (@pxref{Variables}) appears in the documentation, it
+normally appears inside paired single-quotes.
+
address@hidden Misc Help,  , Help Mode, Help
address@hidden Other Help Commands
+
address@hidden C-h i
address@hidden info
address@hidden Info
address@hidden manuals, on-line
address@hidden on-line manuals
+  @kbd{C-h i} (@code{info}) runs the Info program, which is used for
+browsing through structured documentation files.  The entire XEmacs manual
+is available within Info.  Eventually all the documentation of the GNU
+system will be available.  Type @kbd{h} after entering Info to run
+a tutorial on using Info.
+
+  If you specify a numeric argument, @kbd{C-h i} prompts for the name of
+a documentation file.  This way, you can browse a file which doesn't
+have an entry in the top-level Info menu.  It is also handy when you
+need to get to the documentation quickly, and you know the exact name of
+the file.
+
address@hidden C-h C-f
address@hidden C-h C-k
address@hidden Info-elisp-ref
address@hidden Info-goto-emacs-command-node
+  There are two special help commands for accessing XEmacs documentation
+through Info.  @kbd{C-h C-f @var{function} @key{RET}} enters Info and
+goes straight to the documentation of the XEmacs function
address@hidden  @kbd{C-h C-k @var{key}} enters Info and goes straight
+to the documentation of the key @var{key}.  These two keys run the
+commands @code{Info-elisp-ref} and
address@hidden
+
address@hidden C-h l
address@hidden view-lossage
+  If something surprising happens, and you are not sure what commands you
+typed, use @kbd{C-h l} (@code{view-lossage}).  @kbd{C-h l} prints the last
+100 command characters you typed in.  If you see commands that you don't
+know, you can use @kbd{C-h c} to find out what they do.
+
address@hidden C-h m
address@hidden describe-mode
+  XEmacs has several major modes.  Each mode redefines a few keys and
+makes a few other changes in how editing works.  @kbd{C-h m}
+(@code{describe-mode}) prints documentation on the current major mode,
+which normally describes all the commands that are changed in this mode.
+
address@hidden C-h b
address@hidden describe-bindings
+  @kbd{C-h b} (@code{describe-bindings}) and @kbd{C-h s}
+(@code{describe-syntax}) present information about the current XEmacs
+mode that is not covered by @kbd{C-h m}.  @kbd{C-h b} displays a list of
+all the key bindings currently in effect, with the local bindings of the
+current major mode first, followed by the global bindings (@pxref{Key
+Bindings}).  @kbd{C-h s} displays the contents of the syntax table with
+explanations of each character's syntax (@pxref{Syntax}).
+
+  You can get a similar list for a particular prefix key by typing
address@hidden after the prefix key.  (There are a few prefix keys for which
+this does not work---those that provide their own bindings for
address@hidden  One of these is @key{ESC}, because @address@hidden C-h} is
+actually @kbd{C-M-h}, which marks a defun.)
+
address@hidden C-h F
address@hidden xemacs-local-faq
address@hidden C-h n
address@hidden view-emacs-news
address@hidden C-h t
address@hidden help-with-tutorial
address@hidden C-h C-c
address@hidden describe-copying
address@hidden C-h C-d
address@hidden describe-distribution
address@hidden C-h C-w
address@hidden describe-no-warranty
+  The other @kbd{C-h} options display various files of useful
+information.  @kbd{C-h C-w} (@code{describe-no-warranty}) displays the
+full details on the complete absence of warranty for XEmacs.  @kbd{C-h
+n} (@code{view-emacs-news}) displays the file @file{xemacs/etc/NEWS},
+which contains documentation on XEmacs changes arranged chronologically.
address@hidden F} (@code{xemacs-local-faq}) displays local version of the
+XEmacs frequently-answered-questions-list.  @kbd{C-h t}
+(@code{help-with-tutorial}) displays the learn-by-doing XEmacs
+tutorial. @kbd{C-h C-c} (@code{describe-copying}) displays the file
address@hidden/etc/COPYING}, which tells you the conditions you must obey
+in distributing copies of XEmacs.  @kbd{C-h C-d}
+(@code{describe-distribution}) displays another file named
address@hidden/etc/DISTRIB}, which tells you how you can order a copy of
+the latest version of XEmacs.
+
address@hidden Mark, Mouse Selection, Help, Top
address@hidden Selecting Text
address@hidden mark
address@hidden region
+
+  Many Emacs commands operate on an arbitrary contiguous
+part of the current buffer. You can select text in two ways:
+
address@hidden @bullet
address@hidden
+You use special keys to select text by defining a region between point
+and the mark. 
address@hidden
+If you are running XEmacs under X, you can also select text
+with the mouse. 
address@hidden itemize
+
address@hidden The Mark and the Region
+ To specify the text for a command to operate on, set @dfn{the
+mark} at one end of it, and move point to the other end.  The text
+between point and the mark is called @dfn{the region}.  You can move
+point or the mark to adjust the boundaries of the region.  It doesn't
+matter which one is set first chronologically, or which one comes
+earlier in the text.
+  
+  Once the mark has been set, it remains until it is set again at
+another place.  The mark remains fixed with respect to the preceding
+character if text is inserted or deleted in a buffer.  Each Emacs
+buffer has its own mark; when you return to a buffer that had been
+selected previously, it has the same mark it had before.
+
+  Many commands that insert text, such as @kbd{C-y} (@code{yank}) and
address@hidden insert-buffer}, position the mark at one end of the inserted
+text---the opposite end from where point is positioned, so that the region
+contains the text just inserted.
+
+  Aside from delimiting the region, the mark is useful for marking
+a spot that you may want to go back to.  To make this feature more useful,
+Emacs remembers 16 previous locations of the mark in the @code{mark ring}.
+
address@hidden
+* Setting Mark::       Commands to set the mark.
+* Using Region::       Summary of ways to operate on contents of the region.
+* Marking Objects::    Commands to put region around textual units.
+* Mark Ring::          Previous mark positions saved so you can go back there.
address@hidden menu
+
address@hidden Setting Mark, Using Region, Mark, Mark
address@hidden Setting the Mark
+
+  Here are some commands for setting the mark:
+
address@hidden WideCommands
address@hidden @kbd
address@hidden address@hidden
+Set the mark where point is (@code{set-mark-command}).
address@hidden C-@@
+The same.
address@hidden C-x C-x
+Interchange mark and point (@code{exchange-point-and-mark}).
address@hidden C-<
+Pushes a mark at the beginning of the buffer.
address@hidden C->
+Pushes a mark at the end of the buffer.
address@hidden table
+
+  For example, to convert part of the buffer to all
+upper-case, you can use the @kbd{C-x C-u} (@code{upcase-region})
+command, which operates on the text in the region.  First go to the
+beginning of the text you want to capitalize and type @address@hidden to
+put the mark there, then move to the end, and then type @kbd{C-x C-u} to
+capitalize the selected region.  You can also set the mark at the end of the
+text, move to the beginning, and then type @kbd{C-x C-u}.  Most commands
+that operate on the text in the region have the word @code{region} in
+their names.
+
address@hidden C-SPC
address@hidden set-mark-command
+  The most common way to set the mark is with the @address@hidden
+command (@code{set-mark-command}).  This command sets the mark where
+point is. You can then move point away, leaving the mark behind.  It is
+actually incorrect to speak of the character @address@hidden; there is
+no such character.  When you type @key{SPC} while holding down
address@hidden, you get the character @kbd{C-@@} on most terminals. This
+character is actually bound to @code{set-mark-command}.  But unless you are
+unlucky enough to have a terminal where typing @address@hidden does
+not produce @kbd{C-@@}, you should think of this character as
address@hidden@key{SPC}}.
+
address@hidden C-x C-x
address@hidden exchange-point-and-mark
+  Since terminals have only one cursor, Emacs cannot show you where the
+mark is located. Most people use the mark soon after they set it, before
+they forget where it is. But you can see where the mark is with the
+command @kbd{C-x C-x} (@code{exchange-point-and-mark}) which puts the
+mark where point was and point where the mark was.  The extent of the
+region is unchanged, but the cursor and point are now at the previous
+location of the mark. 
+
address@hidden C-<
address@hidden C->
address@hidden mark-beginning-of-buffer
address@hidden mark-end-of-buffer
+ Another way to set the mark is to push the mark to the beginning of a
+buffer while leaving point at its original location. If you supply an
+argument to @kbd{C-<} (@code{mark-beginning-of-buffer}), the mark is pushed
address@hidden/10 of the way from the true beginning of the buffer. You can
+also set the mark at the end of a buffer with @kbd{C->}
+(@code{mark-end-of-buffer}). It pushes the mark to the end of the buffer, 
+leaving point alone. Supplying an argument to the command pushes the mark
address@hidden/10 of the way from the true end of the buffer.
+
+If you are using XEmacs under the X window system, you can set
+the variable @code{zmacs-regions} to @code{t}. This makes the current
+region (defined by point and mark) highlight and makes it available as
+the X clipboard selection, which means you can use the menu bar items on
+it.  @xref{Active Regions}, for more information.
+ 
+  @kbd{C-x C-x} is also useful when you are satisfied with the location of
+point but want to move the mark; do @kbd{C-x C-x} to put point there and
+then you can move it.  A second use of @kbd{C-x C-x}, if necessary, puts
+the mark at the new location with point back at its original location.
+
address@hidden Using Region, Marking Objects, Setting Mark, Mark
address@hidden Operating on the Region
+
+  Once you have created an active region, you can do many things to
+the text in it:
address@hidden @bullet
address@hidden
+Kill it with @kbd{C-w} (@pxref{Killing}).
address@hidden
+Save it in a register with @kbd{C-x r s} (@pxref{Registers}).
address@hidden
+Save it in a buffer or a file (@pxref{Accumulating Text}).
address@hidden
+Convert case with @kbd{C-x C-l} or @kbd{C-x C-u} @*(@pxref{Case}).
address@hidden
+Evaluate it as Lisp code with @kbd{M-x eval-region} (@pxref{Lisp Eval}).
address@hidden
+Fill it as text with @kbd{M-q} (@pxref{Filling}).
address@hidden
+Print hardcopy with @kbd{M-x print-region} (@pxref{Hardcopy}).
address@hidden
+Indent it with @kbd{C-x @key{TAB}} or @kbd{C-M-\} (@pxref{Indentation}).
address@hidden itemize
+
address@hidden Marking Objects, Mark Ring, Using Region, Mark
address@hidden Commands to Mark Textual Objects
+
+  There are commands for placing point and the mark around a textual
+object such as a word, list, paragraph or page.
+ 
address@hidden @kbd
address@hidden M-@@
+Set mark after end of next word (@code{mark-word}).  This command and
+the following one do not move point.
address@hidden C-M-@@
+Set mark after end of next Lisp expression (@code{mark-sexp}).
address@hidden M-h
+Put region around current paragraph (@code{mark-paragraph}).
address@hidden C-M-h
+Put region around current Lisp defun (@code{mark-defun}).
address@hidden C-x h
+Put region around entire buffer (@code{mark-whole-buffer}).
address@hidden C-x C-p
+Put region around current page (@code{mark-page}).
address@hidden table
+
address@hidden M-@@
address@hidden C-M-@@
address@hidden mark-word
address@hidden mark-sexp
address@hidden@@} (@code{mark-word}) puts the mark at the end of the next word,
+while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the next Lisp
+expression. These characters sometimes save you some typing.
+
address@hidden M-h
address@hidden C-M-h
address@hidden C-x C-p
address@hidden C-x h
address@hidden mark-paragraph
address@hidden mark-defun
address@hidden mark-page
address@hidden mark-whole-buffer
+   A number of commands are available that set both point and mark and
+thus delimit an object in the buffer.  @kbd{M-h} (@code{mark-paragraph})
+moves point to the beginning of the paragraph that surrounds or follows
+point, and puts the mark at the end of that paragraph
+(@pxref{Paragraphs}).  You can then indent, case-convert, or kill the
+whole paragraph.  In the same fashion, @kbd{C-M-h} (@code{mark-defun})
+puts point before and the mark after the current or following defun
+(@pxref{Defuns}).  @kbd{C-x C-p} (@code{mark-page}) puts point before
+the current page (or the next or previous, depending on the argument),
+and mark at the end (@pxref{Pages}).  The mark goes after the
+terminating page delimiter (to include it), while point goes after the
+preceding page delimiter (to exclude it).  Finally, @kbd{C-x h}
+(@code{mark-whole-buffer}) sets up the entire buffer as the region by
+putting point at the beginning and the mark at the end.
+
address@hidden Mark Ring,, Marking Objects, Mark
address@hidden The Mark Ring
+
address@hidden C-u C-SPC
address@hidden mark ring
address@hidden C-u C-@@
+  Aside from delimiting the region, the mark is also useful for marking
+a spot that you may want to go back to.  To make this feature more
+useful, Emacs remembers 16 previous locations of the mark in the
address@hidden ring}.  Most commands that set the mark push the old mark onto
+this ring.  To return to a marked location, use @kbd{C-u address@hidden
+(or @kbd{C-u C-@@}); this is the command @code{set-mark-command} given a
+numeric argument.  The command moves point to where the mark was, and
+restores the mark from the ring of former marks. Repeated use of this
+command moves point to all the old marks on the ring, one by one.
+The marks you have seen go to the end of the ring, so no marks are lost.
+
+  Each buffer has its own mark ring.  All editing commands use the current
+buffer's mark ring.  In particular, @kbd{C-u address@hidden always stays in
+the same buffer.
+
+  Many commands that can move long distances, such as @kbd{M-<}
+(@code{beginning-of-buffer}), start by setting the mark and saving the
+old mark on the mark ring.  This makes it easier for you to move back
+later.  Searches set the mark, unless they do not actually move point.
+When a command sets the mark, @samp{Mark Set} is printed in the
+echo area.
+
address@hidden mark-ring-max
+  The variable @code{mark-ring-max} is the maximum number of entries to
+keep in the mark ring.  If that many entries exist and another entry is
+added, the last entry in the list is discarded.  Repeating @kbd{C-u
address@hidden circulates through the entries that are currently in the
+ring.
+
address@hidden mark-ring
+  The variable @code{mark-ring} holds the mark ring itself, as a list of
+marker objects in the order most recent first.  This variable is local
+in every buffer.
+
address@hidden Mouse Selection, Additional Mouse Operations, Mark, Top
address@hidden  node-name,  next,  previous,  up
address@hidden Selecting Text with the Mouse
address@hidden mouse selection
+
address@hidden pointer shapes
+  If you are using XEmacs under X, you can use the mouse pointer
+to select text. (The normal mouse pointer is an I-beam, the same
+pointer that @code{xterm} uses.)
+
address@hidden modeline-pointer-glyph
address@hidden nontext-pointer-glyph
address@hidden text-pointer-glyph
+The glyph variable @code{text-pointer-glyph} controls the shape of
+the mouse pointer when over text.  You can also control the shape
+of the mouse pointer when over nontext using @code{nontext-pointer-glyph},
+and the shape of the mouse pointer when over the modeline using
address@hidden (Remember, you should use
address@hidden, not @code{setq}, to set one of these
+variables.)
+
address@hidden pointer face
+If you want to get fancy, you can set the foreground and background
+colors of the mouse pointer by setting the @code{pointer} face.
+
+There are two ways to select a region of text with the mouse:
+
+  To select a word in text, double-click with the left mouse button
+while the mouse cursor is over the word.  The word is highlighted when
+selected. On monochrome monitors, a stippled background indicates that a
+region of text has been highlighted. On color monitors, a color
+background indicates highlighted text. You can triple-click to select
+whole lines. 
+
+To select an arbitrary region of text:
+
address@hidden
address@hidden
+Move the mouse cursor over the character at the beginning of the region of
+text you want to select.
address@hidden
+Press and hold the left mouse button. 
address@hidden
+While holding the left mouse button down, drag the cursor to the
+character at the end of the region of text you want to select.
address@hidden
+Release the left mouse button.
address@hidden enumerate
+The selected region of text is highlighted.
+
+  Once a region of text is selected, it becomes the primary X selection
+(@pxref{Using X Selections}) as well as the Emacs selected region. You
+can paste it into other X applications and use the options from the
address@hidden pull-down menu on it.  Since it is also the Emacs region, you
+can use Emacs region commands on it.
+
address@hidden Additional Mouse Operations, Killing, Mouse Selection, Top
address@hidden Additional Mouse Operations
address@hidden mouse operations
+
+XEmacs also provides the following mouse functions.  Most of these are
+not bound to mouse gestures by default, but they are provided for your
+customization pleasure.  For example, if you wanted @kbd{shift-left}
+(that is, holding down the @key{Shift} key and clicking the left mouse
+button) to delete the character at which you are pointing, then you
+could do this:
+
address@hidden
+(global-set-key '(shift button1) 'mouse-del-char)
address@hidden example
+
address@hidden mouse-del-char
address@hidden mouse-delete-window
address@hidden mouse-keep-one-window
address@hidden mouse-kill-line
address@hidden mouse-line-length
address@hidden mouse-scroll
address@hidden mouse-select
address@hidden mouse-select-and-split
address@hidden mouse-set-mark
address@hidden mouse-set-point
address@hidden mouse-track
address@hidden mouse-track-adjust
address@hidden mouse-track-and-copy-to-cutbuffer
address@hidden mouse-track-delete-and-insert
+
address@hidden @kbd
address@hidden mouse-del-char
+Delete the character pointed to by the mouse.
address@hidden mouse-delete-window
+Delete the Emacs window that the mouse is on.
address@hidden mouse-keep-one-window
+Select the Emacs window that the mouse is on, then delete all other
+windows on this frame.
address@hidden mouse-kill-line
+Kill the line pointed to by the mouse.
address@hidden mouse-line-length
+Print the length of the line indicated by the pointer.
address@hidden mouse-scroll
+Scroll point to the mouse position.
address@hidden mouse-select
+Select the Emacs window the mouse is on.
address@hidden mouse-select-and-split
+Select the Emacs window mouse is on, then split it vertically in half.
address@hidden mouse-set-mark
+Select the Emacs window the mouse is on and set the mark at the mouse 
+position.  Display the cursor at that position for a second.
address@hidden mouse-set-point
+Select the Emacs window that the mouse is on and move point to the
+mouse position.
address@hidden mouse-track
+Make a selection with the mouse.   This is the default binding of 
+the left mouse button (@key{button1}).
address@hidden mouse-track-adjust
+Extend the existing selection.  This is the default binding of
address@hidden
address@hidden mouse-track-and-copy-to-cutbuffer
+Make a selection like @code{mouse-track}, but also copy it to the cut buffer.
address@hidden mouse-track-delete-and-insert
+Make a selection with the mouse and insert it at point.  This is the
+default binding of @key{control-shift-button1}.
address@hidden mouse-track-insert
+Make a selection with the mouse and insert it at point.
+This is the default binding of @key{control-button1}.
address@hidden mouse-window-to-region
+Narrow a window to the region between the cursor and the mouse pointer.
address@hidden table
+
+The @kbd{M-x mouse-track} command should be bound to a mouse button.  If
+you click-and-drag, the selection is set to the region between the
+point of the initial click and the point at which you release the
+button.  These positions do not need to be ordered. 
+
+If you click-and-release without moving the mouse, the point is moved,
+and the selection is disowned (there will be no selection owner.)  The
+mark will be set to the previous position of point.
+
+If you double-click, the selection will extend by symbols instead of by
+characters.  If you triple-click, the selection will extend by lines.
+
+If you drag the mouse off the top or bottom of the window, you can
+select pieces of text that are larger than the visible part of the
+buffer; the buffer will scroll as necessary.
+
+The selected text becomes the current X selection, and is also copied to
+the top of the kill ring.  Point will be left at the position at
+which you released the button and the mark will be left at the initial
+click position.  Bind a mouse click to
address@hidden to copy selections to the cut buffer.
+(See also the @code{mouse-track-adjust} command, on @kbd{Shift-button1}.)
+
+The @kbd{M-x mouse-track-adjust} command should be bound to a mouse
+button.  The selection will be enlarged or shrunk so that the point of
+the mouse click is one of its endpoints.  This is only meaningful
+after the @code{mouse-track} command (@key{button1}) has been executed.
+
+The @kbd{M-x mouse-track-delete-and-insert} command is exactly the same
+as the @code{mouse-track} command on @key{button1}, except that point is
+not moved; the selected text is immediately inserted after being
+selected; and the text of the selection is deleted.
+
+The @kbd{M-x mouse-track-insert} command is exactly the same as the
address@hidden command on @key{button1}, except that point is not moved;
+the selected text is immediately inserted after being selected; and the
+selection is immediately disowned afterwards.
+
+
address@hidden Killing, Yanking, Additional Mouse Operations, Top
address@hidden Deletion and Killing
address@hidden delete-char
address@hidden delete-backward-char
+
address@hidden killing
address@hidden cutting
address@hidden deletion
address@hidden C-d
address@hidden DEL
+  Most commands that erase text from the buffer save it. You can get
+the text back if you change your mind, or you can move or copy it to
+other parts of the buffer.  Commands which erase text and save it in the
+kill ring are known as @dfn{kill} commands.  Some other commands erase
+text but do not save it; they are known as @dfn{delete} commands.  (This
+distinction is made only for erasing text in the buffer.)
+
+The commands' names and individual descriptions use the words
address@hidden and @samp{delete} to indicate what they do.  If you perform
+a kill or delete command by mistake, use the @kbd{C-x u} (@code{undo})
+command to undo it (@pxref{Undo}). The delete commands include @kbd{C-d}
+(@code{delete-char}) and @key{DEL} (@code{delete-backward-char}), which
+delete only one character at a time, and those commands that delete only
+spaces or newlines.  Commands that can destroy significant amounts of
+nontrivial data usually address@hidden
+
address@hidden Deletion
+
address@hidden @kbd
address@hidden C-d
+Delete next character (@code{delete-char}).
address@hidden @key{DEL}
+Delete previous character (@code{delete-backward-char}).
address@hidden M-\
+Delete spaces and tabs around point (@code{delete-horizontal-space}).
address@hidden address@hidden
+Delete spaces and tabs around point, leaving one space
+(@code{just-one-space}).
address@hidden C-x C-o
+Delete blank lines around the current line (@code{delete-blank-lines}).
address@hidden M-^
+Join two lines by deleting the intervening newline, and any indentation
+following it (@code{delete-indentation}).
address@hidden table
+
+  The most basic delete commands are @kbd{C-d} (@code{delete-char}) and
address@hidden (@code{delete-backward-char}).  @kbd{C-d} deletes the
+character after point, the one the cursor is ``on top of''.  Point
+doesn't move.  @key{DEL} deletes the character before the cursor, and
+moves point back.  You can delete newlines like any other characters in
+the buffer; deleting a newline joins two lines.  Actually, @kbd{C-d} and
address@hidden aren't always delete commands; if you give them an argument,
+they kill instead, since they can erase more than one character this
+way.
+
address@hidden M-\
address@hidden delete-horizontal-space
address@hidden M-SPC
address@hidden just-one-space
address@hidden C-x C-o
address@hidden delete-blank-lines
address@hidden M-^
address@hidden delete-indentation
+  The other delete commands delete only formatting characters: spaces,
+tabs and newlines.  @kbd{M-\} (@code{delete-horizontal-space}) deletes
+all spaces and tab characters before and after point.
address@hidden@key{SPC}} (@code{just-one-space}) does the same but leaves a
+single space after point, regardless of the number of spaces that
+existed previously (even zero).
+
+  @kbd{C-x C-o} (@code{delete-blank-lines}) deletes all blank lines after
+the current line. If the current line is blank, it deletes all blank lines
+preceding the current line as well as leaving one blank line, the current
+line.  @kbd{M-^} (@code{delete-indentation}) joins the current line and
+the previous line, or, if given an argument, joins the current line and 
+the next line by deleting a newline and all surrounding spaces, possibly
+leaving a single space.  @xref{Indentation,M-^}.
+
address@hidden Killing by Lines
+
address@hidden @kbd
address@hidden C-k
+Kill rest of line or one or more lines (@code{kill-line}).
address@hidden table
+
address@hidden C-k
address@hidden kill-line
+  The simplest kill command is @kbd{C-k}.  If given at the beginning of
+a line, it kills all the text on the line, leaving the line blank.  If
+given on a blank line, the blank line disappears.  As a consequence, a
+line disappears completely if you go to the front of a non-blank line
+and type @kbd{C-k} twice.
+
+  More generally, @kbd{C-k} kills from point up to the end of the line,
+unless it is at the end of a line.  In that case, it kills the newline
+following the line, thus merging the next line into the current one.
+Emacs ignores invisible spaces and tabs at the end of the line when deciding
+which case applies: if point appears to be at the end of the line, you
+can be sure the newline will be killed.
+
+  If you give @kbd{C-k} a positive argument, it kills that many lines
+and the newlines that follow them (however, text on the current line
+before point is not killed).  With a negative argument, @kbd{C-k} kills
+back to a number of line beginnings.  An argument of @minus{}2 means
+kill back to the second line beginning.  If point is at the beginning of
+a line, that line beginning doesn't count, so @kbd{C-u - 2 C-k} with
+point at the front of a line kills the two previous lines.
+
+  @kbd{C-k} with an argument of zero kills all the text before point on the
+current line.
+
address@hidden Other Kill Commands
address@hidden kill-region
address@hidden kill-word
address@hidden backward-kill-word
address@hidden kill-sexp
address@hidden kill-sentence
address@hidden backward-kill-sentence
address@hidden M-d
address@hidden M-DEL
address@hidden C-M-k
address@hidden C-x DEL
address@hidden M-k
address@hidden C-w
+
address@hidden DoubleWideCommands
address@hidden @kbd
address@hidden C-w
+Kill region (from point to the mark) (@code{kill-region}).
address@hidden
address@hidden M-d
+Kill word (@code{kill-word}).
address@hidden address@hidden
+Kill word backwards (@code{backward-kill-word}).
address@hidden C-x @key{DEL}
+Kill back to beginning of sentence (@code{backward-kill-sentence}).
address@hidden
address@hidden M-k
+Kill to end of sentence (@code{kill-sentence}).
address@hidden C-M-k
+Kill sexp (@code{kill-sexp}).  @xref{Lists}.
address@hidden M-z @var{char}
+Kill up to next occurrence of @var{char} (@code{zap-to-char}).
address@hidden table
+
+   @kbd{C-w} (@code{kill-region}) is a very general kill command; it
+kills everything between point and the mark. You can use this command to
+kill any contiguous sequence of characters by first setting the mark at
+one end of a sequence of characters, then going to the other end and
+typing @kbd{C-w}.
+
address@hidden M-z
address@hidden zap-to-char
+  A convenient way of killing is combined with searching: @kbd{M-z}
+(@code{zap-to-char}) reads a character and kills from point up to (but not
+including) the next occurrence of that character in the buffer.  If there
+is no next occurrence, killing goes to the end of the buffer.  A numeric
+argument acts as a repeat count.  A negative argument means to search
+backward and kill text before point.
+
+  Other syntactic units can be killed: words, with @address@hidden and
address@hidden (@pxref{Words}); sexps, with @kbd{C-M-k} (@pxref{Lists}); and
+sentences, with @kbd{C-x @key{DEL}} and @kbd{M-k}
+(@pxref{Sentences})address@hidden
+
address@hidden Yanking, Using X Selections, Killing, Top
address@hidden Yanking
address@hidden moving text
address@hidden copying text
address@hidden kill ring
address@hidden yanking
address@hidden pasting
+
+  @dfn{Yanking} means getting back text which was killed. Some systems
+call this ``pasting''.  The usual way to move or copy text is to kill it
+and then yank it one or more times.
+
address@hidden @kbd
address@hidden C-y
+Yank last killed text (@code{yank}).
address@hidden M-y
+Replace re-inserted killed text with the previously killed text
+(@code{yank-pop}).
address@hidden M-w
+Save region as last killed text without actually killing it
+(@code{copy-region-as-kill}).
address@hidden C-M-w
+Append next kill to last batch of killed text (@code{append-next-kill}).
address@hidden table
+
address@hidden
+* Kill Ring::       Where killed text is stored.  Basic yanking.
+* Appending Kills:: Several kills in a row all yank together.
+* Earlier Kills::   Yanking something killed some time ago.
address@hidden menu
+
address@hidden Kill Ring, Appending Kills, Yanking, Yanking
address@hidden The Kill Ring
+
address@hidden C-y
address@hidden Yank
+  All killed text is recorded in the @dfn{kill ring}, a list of blocks of
+text that have been killed.  There is only one kill ring, used in all
+buffers, so you can kill text in one buffer and yank it in another buffer.
+This is the usual way to move text from one file to another.
+(@xref{Accumulating Text}, for some other ways.)
+
+  If you have two separate Emacs processes, you cannot use the kill ring
+to move text. If you are using XEmacs under X, however, you can
+use the X selection mechanism to move text from one to another.
+
+If you are using XEmacs under X and have one Emacs process with
+multiple frames, they do share the same kill ring.  You can kill or
+copy text in one Emacs frame, then yank it in the other frame
+belonging to the same process.
+
+  The command @kbd{C-y} (@code{yank}) reinserts the text of the most recent
+kill.  It leaves the cursor at the end of the text and sets the mark at
+the beginning of the text.  @xref{Mark}.
+
+  @kbd{C-u C-y} yanks the text, leaves the cursor in front of the text,
+and sets the mark after it, if the argument is with just a @kbd{C-u}.
+Any other argument, including @kbd{C-u} and digits, has different
+results, described below, under ``Yanking Earlier Kills''.
+
address@hidden M-w
address@hidden copy-region-as-kill
+ To copy a block of text, you can also use @kbd{M-w}
+(@code{copy-region-as-kill}), which copies the region into the kill ring
+without removing it from the buffer. @kbd{M-w} is similar to @kbd{C-w}
+followed by @kbd{C-y} but does not mark the buffer as ``modified'' and
+does not actually cut anything.
+
address@hidden Appending Kills, Earlier Kills, Kill Ring, Yanking
address@hidden Appending Kills
+
address@hidden television
+  Normally, each kill command pushes a new block onto the kill ring.
+However, two or more kill commands in a row combine their text into a
+single entry, so that a single @kbd{C-y} yanks it all back. This means
+you don't have to kill all the text you want to yank in one command; you
+can kill line after line, or word after word, until you have killed what
+you want, then get it all back at once using @kbd{C-y}. (Thus we join
+television in leading people to kill thoughtlessly.)
+
+  Commands that kill forward from point add onto the end of the previous
+killed text.  Commands that kill backward from point add onto the
+beginning.  This way, any sequence of mixed forward and backward kill
+commands puts all the killed text into one entry without rearrangement.
+Numeric arguments do not break the sequence of appending kills.  For
+example, suppose the buffer contains:
+
address@hidden
+This is the first
+line of sample text
+and here is the third.
address@hidden example
+
address@hidden
+with point at the beginning of the second line.  If you type @kbd{C-k C-u 2
address@hidden C-k}, the first @kbd{C-k} kills the text @samp{line of sample
+text}, @kbd{C-u 2 address@hidden kills @samp{the first} with the newline that
+followed it, and the second @kbd{C-k} kills the newline after the second
+line.  The result is that the buffer contains @samp{This is and here is the
+third.} and a single kill entry contains @samp{the address@hidden of
+sample address@hidden the killed text, in its original order.
+
address@hidden C-M-w
address@hidden append-next-kill
+  If a kill command is separated from the last kill command by other
+commands (not just numeric arguments), it starts a new entry on the kill
+ring.  To force a kill command to append, first type the command @kbd{C-M-w}
+(@code{append-next-kill}). @kbd{C-M-w} tells the following command,
+if it is a kill command, to append the text it kills to the last killed
+text, instead of starting a new entry.  With @kbd{C-M-w}, you can kill
+several separated pieces of text and accumulate them to be yanked back
+in one address@hidden
+
address@hidden Earlier Kills,, Appending Kills, Yanking
address@hidden Yanking Earlier Kills
+
address@hidden M-y
address@hidden yank-pop
+  To recover killed text that is no longer the most recent kill, you need
+the @kbd{Meta-y} (@code{yank-pop}) command.  You can use @kbd{M-y} only
+after a @kbd{C-y} or another @kbd{M-y}.  It takes the text previously
+yanked and replaces it with the text from an earlier kill.  To recover
+the text of the next-to-the-last kill, first use @kbd{C-y} to recover
+the last kill, then @kbd{M-y} to replace it with the previous
address@hidden
+
+  You can think in terms of a ``last yank'' pointer which points at an item
+in the kill ring.  Each time you kill, the ``last yank'' pointer moves to
+the new item at the front of the ring.  @kbd{C-y} yanks the item
+which the ``last yank'' pointer points to.  @kbd{M-y} moves the ``last
+yank'' pointer to a different item, and the text in the buffer changes to
+match.  Enough @kbd{M-y} commands can move the pointer to any item in the
+ring, so you can get any item into the buffer.  Eventually the pointer
+reaches the end of the ring; the next @kbd{M-y} moves it to the first item
+again.
+
+  Yanking moves the ``last yank'' pointer around the ring, but does not
+change the order of the entries in the ring, which always runs from the
+most recent kill at the front to the oldest one still remembered.
+
+  Use @kbd{M-y} with a numeric argument to advance the ``last
+yank'' pointer by the specified number of items.  A negative argument
+moves the pointer toward the front of the ring; from the front of the
+ring, it moves to the last entry and starts moving forward from there.
+
+  Once the text you are looking for is brought into the buffer, you can
+stop doing @kbd{M-y} commands and the text will stay there. Since the
+text is just a copy of the kill ring item, editing it in the buffer does
+not change what's in the ring.  As long you don't kill additional text,
+the ``last yank'' pointer remains at the same place in the kill ring:
+repeating @kbd{C-y} will yank another copy of the same old kill.
+
+  If you know how many @kbd{M-y} commands it would take to find the
+text you want, you can yank that text in one step using @kbd{C-y} with
+a numeric argument.  @kbd{C-y} with an argument greater than one
+restores the text the specified number of entries back in the kill
+ring.  Thus, @kbd{C-u 2 C-y} gets the next to the last block of killed
+text.  It is equivalent to @kbd{C-y M-y}.  @kbd{C-y} with a numeric
+argument starts counting from the ``last yank'' pointer, and sets the
+``last yank'' pointer to the entry that it yanks.
+
address@hidden kill-ring-max
+  The variable @code{kill-ring-max} controls the length of the kill
+ring; no more than that many blocks of killed text are saved.
+
address@hidden Using X Selections, Accumulating Text, Yanking, Top
address@hidden Using X Selections
address@hidden  node-name,  next,  previous,  up
+
+In the X window system, mouse selections provide a simple mechanism for
+text transfer between different applications.  In a typical X
+application, you can select text by pressing the left mouse button and
+dragging the cursor over the text you want to copy.  The text becomes the
+primary X selection and is highlighted.  The highlighted region is also
+the Emacs selected region.
+
address@hidden @bullet
address@hidden
+Since the region is the primary X selection, you can go to a different X
+application and click the middle mouse button: the text that you selected in
+the previous application is pasted into the current application.
address@hidden
+Since the region is the Emacs selected region, you can use all region
+commands (@kbd{C-w, M-w} etc.) as well as the options of the @b{Edit}
+menu to manipulate the selected text.
address@hidden itemize
+
address@hidden
+* X Clipboard Selection::      Pasting to the X clipboard.
+* X Selection Commands::       Other operations on the selection.
+* X Cut Buffers::              X cut buffers are available for compatibility.
+* Active Regions::             Using zmacs-style highlighting of the
+                                selected region.
address@hidden menu
+
address@hidden X Clipboard Selection, X Selection Commands, Using X Selections, 
Using X Selections
address@hidden  node-name,  next,  previous,  up
address@hidden The Clipboard Selection
address@hidden clipboard selections
+
+There are other kinds of X selections besides the @b{Primary} selection; one
+common one is the @b{Clipboard} selection.  Some applications prefer to
+transfer data using this selection in preference to the @b{Primary}.
+One can transfer text from the @b{Primary} selection to the  @b{Clipboard}
+selection with the @b{Copy} command under the @b{Edit} menu in the menubar.
+
+Usually, the clipboard selection is not visible.  However, if you run the
address@hidden application, the text most recently copied to the clipboard
+(with the @b{Copy} command) is displayed in a window.  Any time new text is
+thus copied, the @file{xclipboard} application makes a copy of it and displays
+it in its window.  The value of the clipboard can survive the lifetime of the
+running Emacs process.  The @code{xclipboard} man page provides more details.
+
+Warning: If you use the @file{xclipboard} application, remember that it
+maintains a list of all things that have been pasted to the clipboard (that
+is, copied with the @b{Copy} command).  If you don't manually delete elements
+from this list by clicking on the @b{Delete} button in the @code{xclipboard}
+window, the clipboard will eventually consume a lot of memory.
+
+In summary, some X applications (such as @file{xterm}) allow one to paste
+text in them from XEmacs in the following way:
+
address@hidden @bullet
address@hidden
+Drag out a region of text in Emacs with the left mouse button,
+making that text be the @b{Primary} selection.
+
address@hidden
+Click the middle button in the other application, pasting the @b{Primary}
+selection. 
address@hidden itemize
+
+With some other applications (notably, the OpenWindows and Motif tools) you
+must use this method instead:
+
address@hidden @bullet
address@hidden
+Drag out a region of text in Emacs with the left mouse button,
+making that text be the @b{Primary} selection.
+
address@hidden
+Copy the selected text to the @b{Clipboard} selection by selecting the
address@hidden menu item from the @b{Edit} menu, or by hitting the @b{Copy}
+key on your keyboard.
+
address@hidden
+Paste the text in the other application by selecting @b{Paste} from its
+menu, or by hitting the @b{Paste} key on your keyboard.
address@hidden itemize
+
+
address@hidden X Selection Commands, X Cut Buffers, X Clipboard Selection, 
Using X Selections
address@hidden Miscellaneous X Selection Commands
address@hidden  node-name,  next,  previous,  up
address@hidden cut buffers
address@hidden primary selections
+
address@hidden x-copy-primary-selection
address@hidden x-delete-primary-selection
address@hidden x-insert-selection
address@hidden x-kill-primary-selection
address@hidden x-mouse-kill
address@hidden x-own-secondary-selection
address@hidden x-own-selection
address@hidden x-set-point-and-insert-selection
address@hidden @kbd
address@hidden M-x x-copy-primary-selection
+Copy the primary selection to both the kill ring and the Clipboard.
address@hidden M-x x-insert-selection
+Insert the current selection into the buffer at point.
address@hidden M-x x-delete-primary-selection
+Deletes the text in the primary selection without copying it to the kill
+ring or the Clipboard.
address@hidden M-x x-kill-primary-selection
+Deletes the text in the primary selection and copies it to 
+both the kill ring and the Clipboard.
address@hidden M-x x-mouse-kill
+Kill the text between point and the mouse and copy it to 
+the clipboard and to the cut buffer.
address@hidden M-x x-own-secondary-selection
+Make a secondary X selection of the given argument. 
address@hidden M-x x-own-selection
+Make a primary X selection of the given argument.  
address@hidden M-x x-set-point-and-insert-selection
+Set point where clicked and insert the primary selection or the
+cut buffer.
address@hidden table
+
address@hidden X Cut Buffers, Active Regions, X Selection Commands, Using X 
Selections
address@hidden X Cut Buffers
address@hidden  node-name,  next,  previous,  up
+
+X cut buffers are a different, older way of transferring text between
+applications.  XEmacs supports cut buffers for compatibility
+with older programs, even though selections are now the preferred way of
+transferring text.
+
+X has a concept of applications "owning" selections.  When you select
+text by clicking and dragging inside an application, the application
+tells the X server that it owns the selection.  When another
+application asks the X server for the value of the selection, the X
+server requests the information from the owner. When you use
+selections, the selection data is not actually transferred unless
+someone wants it; the act of making a selection doesn't transfer data.
+Cut buffers are different: when you "own" a cut buffer, the data is
+actually transferred to the X server immediately, and survives the
+lifetime of the application.
+
+Any time a region of text becomes the primary selection in Emacs,
+Emacs also copies that text to the cut buffer.  This makes it possible
+to copy text from an XEmacs buffer and paste it into an older,
+non-selection-based application (such as Emacs 18).
+
+Note: Older versions of Emacs could not access the X selections, only
+the X cut buffers.
+
address@hidden Active Regions, , X Cut Buffers, Using X Selections
address@hidden Active Regions
address@hidden  node-name,  next,  previous,  up
address@hidden active regions
+
+  By default, both the text you select in an Emacs buffer using the
+click-and-drag mechanism and text you select by setting point and the
+mark is highlighted. You can use Emacs region commands as well as the
address@hidden and @b{Copy} commands on the highlighted region you selected
+with the mouse.
+
+If you prefer, you can make a distinction between text selected with the
+mouse and text selected with point and the mark by setting the variable
address@hidden to @code{nil}.  In that case:
+
address@hidden @bullet
address@hidden
+The text selected with the mouse becomes both the X selection and the
+Emacs selected region. You can use menu-bar commands as well as Emacs
+region commands on it. 
address@hidden
+The text selected with point and the mark is not highlighted. You can
+only use Emacs region commands on it, not the menu-bar items. 
address@hidden itemize
+
+  Active regions originally come from Zmacs, the Lisp Machine editor.
+The idea behind them is that commands can only operate on a region when
+the region is in an "active" state.  Put simply, you can only operate on
+a region that is highlighted.
+
address@hidden zmacs-regions
+The variable @code{zmacs-regions} checks whether LISPM-style active
+regions should be used.  This means that commands that operate on the
+region (the area between point and the mark) only work while
+the region is in the active state, which is indicated by highlighting.
+Most commands causes the region to not be in the active state;
+for example, @kbd{C-w} only works immediately after activating the
+region.
+
+More specifically:
address@hidden @bullet
address@hidden
+Commands that operate on the region only work if the region is active.
address@hidden
+Only a very small set of commands causes the region to become active---
+those commands whose semantics are to mark an area, such as @code{mark-defun}.
address@hidden
+The region is deactivated after each command that is executed, except that
+motion commands do not change whether the region is active or not.
address@hidden itemize 
+
address@hidden (@kbd{C-SPC}) pushes a mark and activates the
+region.  Moving the cursor with normal motion commands (@kbd{C-n},
address@hidden, etc.) will cause the region between point and the
+recently-pushed mark to be highlighted.  It will remain highlighted
+until some non-motion command is executed.
+
address@hidden (@kbd{C-x C-x}) activates the region.
+So if you mark a region and execute a command that operates on it, you
+can reactivate the same region with @kbd{C-x C-x} (or perhaps @kbd{C-x
+C-x C-x C-x}) to operate on it again.
+
+Generally, commands that push marks as a means of navigation, such as
address@hidden (@kbd{M-<}) and @code{end-of-buffer}
+(@kbd{M->}), do not activate the region.  However, commands that push
+marks as a means of marking an area of text, such as @code{mark-defun}
+(@kbd{M-C-h}), @code{mark-word} (@kbd{M-@@}), and @code{mark-whole-buffer}
+(@kbd{C-x h}), do activate the region.
+
+When @code{zmacs-regions} is @code{t}, there is no distinction between
+the primary X selection and the active region selected by point and the
+mark.  To see this, set the mark (@key{C-SPC}) and move the cursor
+with any cursor-motion command: the region between point and mark is
+highlighted, and you can watch it grow and shrink as you move the
+cursor.
+
+Any other commands besides cursor-motion commands (such as inserting or
+deleting text) will cause the region to no longer be active; it will no
+longer be highlighted, and will no longer be the primary selection.
+Region can be explicitly deactivated with @kbd{C-g}.
+
+Commands that require a region (such as @kbd{C-w}) signal an error if
+the region is not active.  Certain commands cause the region to be in
+its active state.  The most common ones are @code{push-mark}
+(@key{C-SPC}) and @code{exchange-point-and-mark} (@kbd{C-x C-x}).
+
address@hidden zmacs-region-stays
+When @code{zmacs-regions} is @code{t}, programs can be non-intrusive
+on the state of the region by setting the variable @code{zmacs-region-stays}
+to a address@hidden value.  If you are writing a new Emacs command that
+is conceptually a ``motion'' command and should not interfere with the
+current highlightedness of the region, then you may set this variable.
+It is reset to @code{nil} after each user command is executed.
+
address@hidden zmacs-activate-region
+When @code{zmacs-regions} is @code{t}, programs can make the region between
+point and mark go into the active (highlighted) state by using the
+function @code{zmacs-activate-region}. Only a small number of commands
+should ever do this. 
+
address@hidden zmacs-deactivate-region
+When @code{zmacs-regions} is @code{t}, programs can deactivate the region
+between point and the mark by using @code{zmacs-deactivate-region}.
+Note: you should not have to call this function; the command loop calls
+it when appropriate. 
+
address@hidden Accumulating Text, Rectangles, Using X Selections, Top
address@hidden Accumulating Text
address@hidden append-to-buffer
address@hidden prepend-to-buffer
address@hidden copy-to-buffer
address@hidden append-to-file
address@hidden copying text
address@hidden accumulating text
+
+  Usually you copy or move text by killing it and yanking it, but there are
+other ways that are useful for copying one block of text in many places, or
+for copying many scattered blocks of text into one place.
+
+  If you like, you can accumulate blocks of text from scattered
+locations either into a buffer or into a file.  The relevant commands
+are described here.  You can also use Emacs registers for storing and
+accumulating text.  @xref{Registers}.
+
address@hidden @kbd
address@hidden M-x append-to-buffer
+Append region to contents of specified buffer (@code{append-to-buffer}).
address@hidden M-x prepend-to-buffer
+Prepend region to contents of specified buffer.
address@hidden M-x copy-to-buffer
+Copy region into specified buffer, deleting that buffer's old contents.
address@hidden M-x insert-buffer
+Insert contents of specified buffer into current buffer at point.
address@hidden M-x append-to-file
+Append region to the end of the contents of specified file.
address@hidden table
+
+  To accumulate text into a buffer, use the command @kbd{M-x
+append-to-buffer}, which inserts a copy of the region into the buffer
address@hidden, at the location of point in that buffer.  If there is
+no buffer with the given name, one is created.
+
+  If you append text to a buffer that has been used for editing, the
+copied text goes to the place where point is.  Point in that buffer is
+left at the end of the copied text, so successive uses of
address@hidden accumulate the text in the specified buffer in
+the same order as they were copied.  Strictly speaking, this command does
+not always append to the text already in the buffer; but if this command
+is the only command used to alter a buffer, it does always append to the
+existing text because point is always at the end.
+
+  @kbd{M-x prepend-to-buffer} is similar to @code{append-to-buffer}, but
+point in the other buffer is left before the copied text, so successive
+prependings add text in reverse order.  @kbd{M-x copy-to-buffer} is
+similar, except that any existing text in the other buffer is deleted,
+so the buffer is left containing just the text newly copied into it.
+
+  You can retrieve the accumulated text from that buffer with @kbd{M-x
+insert-buffer}, which takes @var{buffername} as an argument.  It inserts
+a copy of the text in buffer @var{buffername} into the selected buffer.
+You could alternatively select the other buffer for editing, perhaps moving
+text from it by killing or with @code{append-to-buffer}.  @xref{Buffers}, for
+background information on buffers.
+
+  Instead of accumulating text within Emacs in a buffer, you can append
+text directly into a file with @kbd{M-x append-to-file}, which takes
address@hidden as an argument.  It adds the text of the region to the
+end of the specified file.  The file is changed immediately on disk.
+This command is normally used with files that are @i{not} being visited
+in Emacs.  Using it on a file that Emacs is visiting can produce
+confusing results, because the file's text inside Emacs does not change
+while the file itself changes.
+
address@hidden Rectangles, Registers, Accumulating Text, Top
address@hidden Rectangles
address@hidden rectangles
+
+  The rectangle commands affect rectangular areas of text: all
+characters between a certain pair of columns, in a certain range of lines.
+Commands are provided to kill rectangles, yank killed rectangles, clear
+them out, or delete them.  Rectangle commands are useful with text in
+multicolumnar formats, like code with comments at the right,
+or for changing text into or out of such formats.
+
+  To specify the rectangle a command should work on, put the mark at one
+corner and point at the opposite corner.  The specified rectangle is
+called the @dfn{region-rectangle} because it is controlled about the
+same way the region is controlled.  Remember that a given
+combination of point and mark values can be interpreted either as
+specifying a region or as specifying a rectangle; it is up to the
+command that uses them to choose the interpretation.
+
address@hidden @kbd
address@hidden M-x delete-rectangle
+Delete the text of the region-rectangle, moving any following text on
+each line leftward to the left edge of the region-rectangle.
address@hidden M-x kill-rectangle
+Similar, but also save the contents of the region-rectangle as the
+``last killed rectangle''.
address@hidden M-x yank-rectangle
+Yank the last killed rectangle with its upper left corner at point.
address@hidden M-x open-rectangle
+Insert blank space to fill the space of the region-rectangle.
+The previous contents of the region-rectangle are pushed rightward.
address@hidden M-x clear-rectangle
+Clear the region-rectangle by replacing its contents with spaces.
address@hidden table
+
+  The rectangle operations fall into two classes: commands deleting and
+moving rectangles, and commands for blank rectangles.
+
address@hidden delete-rectangle
address@hidden kill-rectangle
+  There are two ways to get rid of the text in a rectangle: you can discard
+the text (delete it) or save it as the ``last killed'' rectangle.  The
+commands for these two ways are @kbd{M-x delete-rectangle} and @kbd{M-x
+kill-rectangle}.  In either case, the portion of each line that falls inside
+the rectangle's boundaries is deleted, causing following text (if any) on
+the line to move left.
+
+  Note that ``killing'' a rectangle is not killing in the usual sense; the
+rectangle is not stored in the kill ring, but in a special place that
+only records the most recently killed rectangle (that is, does not
+append to a killed rectangle).  Different yank commands
+have to be used and only one rectangle is stored, because yanking
+a rectangle is quite different from yanking linear text and yank-popping
+commands are difficult to make sense of.
+
+  Inserting a rectangle is the opposite of deleting one.  You specify
+where to put the upper left corner by putting point there.  The
+rectangle's first line is inserted at point, the rectangle's second line
+is inserted at a point one line vertically down, and so on.  The number
+of lines affected is determined by the height of the saved rectangle.
+
address@hidden yank-rectangle
+  To insert the last killed rectangle, type @kbd{M-x yank-rectangle}.
+This can be used to convert single-column lists into double-column
+lists; kill the second half of the list as a rectangle and then
+yank it beside the first line of the list.
+
address@hidden open-rectangle
address@hidden clear-rectangle
+  There are two commands for working with blank rectangles: @kbd{M-x
+clear-rectangle} erases existing text, and @kbd{M-x open-rectangle}
+inserts a blank rectangle.  Clearing a rectangle is equivalent to
+deleting it and then inserting a blank rectangle of the same size.
+
+  Rectangles can also be copied into and out of registers.
address@hidden,,Rectangle Registers}.
+
address@hidden Registers, Display, Rectangles, Top
address@hidden Registers
address@hidden registers
+
+  XEmacs @dfn{registers} are places in which you can save text or
+positions for later use.  Once you save text or a rectangle in a
+register, you can copy it into the buffer once or many times; a position
+saved in a register is used by moving point to that position.
+Rectangles can also be copied into and out of registers
+(@pxref{Rectangles}).
+
address@hidden view-register
+  Each register has a name which is a single character.  A register can
+store a piece of text, a rectangle, a position, a window configuration,
+or a file name, but only one thing at any given time.  Whatever you
+store in a register remains there until you store something else in that
+register.  To see what a register @var{r} contains, use @kbd{M-x
+view-register}.
+
address@hidden @kbd
address@hidden M-x view-register @key{RET} @var{r}
+Display a description of what register @var{r} contains.
address@hidden table
+
address@hidden view-register
+  @kbd{M-x view-register} reads a register name as an argument and then
+displays the contents of the specified register.
+
address@hidden
+* Position: RegPos.           Saving positions in registers.
+* Text: RegText.              Saving text in registers.
+* Rectangle: RegRect.         Saving rectangles in registers.
+* Configurations: RegConfig.  Saving window configurations in registers.
+* Files: RegFiles.            File names in registers.
+* Numbers: RegNumbers.        Numbers in registers.
+* Bookmarks::                 Bookmarks are like registers, but persistent.
address@hidden menu
+
address@hidden RegPos, RegText, Registers, Registers
address@hidden Saving Positions in Registers
+
+  Saving a position records a place in a buffer so that you can move
+back there later.  Moving to a saved position switches to that buffer
+and moves point to that place in it.
+
address@hidden @kbd
address@hidden C-x r @key{SPC} @var{r}
+Save position of point in register @var{r} (@code{point-to-register}).
address@hidden C-x r j @var{r}
+Jump to the position saved in register @var{r} (@code{jump-to-register}).
address@hidden table
+
address@hidden C-x r SPC
address@hidden point-to-register
+  To save the current position of point in a register, choose a name
address@hidden and type @kbd{C-x r @key{SPC} @var{r}}.  The register @var{r}
+retains the position thus saved until you store something else in that
+register.
+
address@hidden C-x r j
address@hidden jump-to-register
+  The command @kbd{C-x r j @var{r}} moves point to the position recorded
+in register @var{r}.  The register is not affected; it continues to
+record the same location.  You can jump to the same position using the
+same register as often as you want.
+
+  If you use @kbd{C-x r j} to go to a saved position, but the buffer it
+was saved from has been killed, @kbd{C-x r j} tries to create the buffer
+again by visiting the same file.  Of course, this works only for buffers
+that were visiting files.
+
address@hidden RegText, RegRect, RegPos, Registers
address@hidden Saving Text in Registers
+
+  When you want to insert a copy of the same piece of text many times, it
+can be impractical to use the kill ring, since each subsequent kill moves
+the piece of text further down on the ring.  It becomes hard to keep
+track of the argument needed to retrieve the same text with @kbd{C-y}.  An
+alternative is to store the text in a register with @kbd{C-x r s}
+(@code{copy-to-register}) and then retrieve it with @kbd{C-x r i}
+(@code{insert-register}).
+
address@hidden @kbd
address@hidden C-x r s @var{r}
+Copy region into register @var{r} (@code{copy-to-register}).
address@hidden C-x r g @var{r}
address@hidden C-x r i @var{r}
+Insert text contents of register @var{r} (@code{insert-register}).
address@hidden table
+
address@hidden C-x r s
address@hidden C-x r g
address@hidden C-x r i
address@hidden copy-to-register
address@hidden insert-register
+  @kbd{C-x r s @var{r}} stores a copy of the text of the region into the
+register named @var{r}.  Given a numeric argument, @kbd{C-x r s @var{r}}
+deletes the text from the buffer as well.
+
+  @kbd{C-x r i @var{r}} inserts the text from register @var{r} in the buffer.
+By default it leaves point before the text and places the mark after
+it. With a numeric argument (@kbd{C-u}), it puts point after the text
+and the mark before it.
+
address@hidden RegRect, RegConfig, RegText, Registers
address@hidden Saving Rectangles in Registers
address@hidden rectangle
+
+  A register can contain a rectangle instead of lines of text.  The rectangle
+is represented as a list of strings.  @xref{Rectangles}, for basic
+information on rectangles and how to specify rectangles in a buffer.
+
address@hidden @kbd
address@hidden copy-rectangle-to-register
address@hidden C-x r r
address@hidden C-x r r @var{r}
+Copy the region-rectangle into register @var{r}
+(@code{copy-rectangle-to-register}).  With a numeric argument, delete it
+as well.
address@hidden C-x r g @var{r}
address@hidden C-x r i @var{r}
+Insert the rectangle stored in register @var{r} (if it contains a
+rectangle) (@code{insert-register}).
address@hidden table
+
+  The @kbd{C-x r i @var{r}} command inserts linear text if the register
+  contains
+that, or inserts a rectangle if the register contains one.
+
+  See also the command @code{sort-columns}, which you can think of
+as sorting a rectangle.  @xref{Sorting}.
+
address@hidden RegConfig, RegNumbers, RegRect, Registers
address@hidden Saving Window Configurations in Registers
+
address@hidden window-configuration-to-register
address@hidden frame-configuration-to-register
address@hidden C-x r w
address@hidden @kindex C-x r f
+  You can save the window configuration of the selected frame in a
+register, or even the configuration of all windows in all frames, and
+restore the configuration later.
+
address@hidden @kbd
address@hidden C-x r w @var{r}
+Save the state of the selected frame's windows in register @var{r}
+(@code{window-configuration-to-register}).
address@hidden @item C-x r f @var{r}
address@hidden M-x frame-configuration-to-register @key{RET} @var{r}
+Save the state of all frames, including all their windows, in register
address@hidden (@code{frame-configuration-to-register}).
address@hidden table
+
+  Use @kbd{C-x r j @var{r}} to restore a window or frame configuration.
+This is the same command used to restore a cursor position.  When you
+restore a frame configuration, any existing frames not included in the
+configuration become invisible.  If you wish to delete these frames
+instead, use @kbd{C-u C-x r j @var{r}}.
+
address@hidden RegNumbers, RegFiles, RegConfig, Registers
address@hidden Keeping Numbers in Registers
+
+  There are commands to store a number in a register, to insert
+the number in the buffer in decimal, and to increment it.  These commands
+can be useful in keyboard macros (@pxref{Keyboard Macros}).
+
address@hidden @kbd
address@hidden C-u @var{number} C-x r n @var{reg}
address@hidden C-x r n
address@hidden number-to-register
+Store @var{number} into register @var{reg} (@code{number-to-register}).
address@hidden C-u @var{number} C-x r + @var{reg}
address@hidden C-x r +
address@hidden increment-register
+Increment the number in register @var{reg} by @var{number}
+(@code{increment-register}).
address@hidden C-x r g @var{reg}
+Insert the number from register @var{reg} into the buffer.
address@hidden table
+
+  @kbd{C-x r g} is the same command used to insert any other
+sort of register contents into the buffer.
+
address@hidden RegFiles, Bookmarks, RegNumbers, Registers
address@hidden Keeping File Names in Registers
+
+  If you visit certain file names frequently, you can visit them more
+conveniently if you put their names in registers.  Here's the Lisp code
+used to put a file name in a register:
+
address@hidden
+(set-register address@hidden '(file . @var{name}))
address@hidden smallexample
+
address@hidden 3000
address@hidden
+For example,
+
address@hidden
+(set-register ?z '(file . "/usr/src/xemacs/src/ChangeLog"))
address@hidden smallexample
+
address@hidden
+puts the file name shown in register @samp{z}.
+
+  To visit the file whose name is in register @var{r}, type @kbd{C-x r j
address@hidden  (This is the same command used to jump to a position or
+restore a frame configuration.)
+
address@hidden Bookmarks,  , RegFiles, Registers
address@hidden Bookmarks
address@hidden bookmarks
+
+  @dfn{Bookmarks} are somewhat like registers in that they record
+positions you can jump to.  Unlike registers, they have long names, and
+they persist automatically from one Emacs session to the next.  The
+prototypical use of bookmarks is to record ``where you were reading'' in
+various files.
+
+  Note: bookmark.el is distributed in edit-utils package.  You need to
+install that to use bookmark facility (@pxref{Packages}).
+
address@hidden @kbd
address@hidden C-x r m @key{RET}
+Set the bookmark for the visited file, at point.
+
address@hidden C-x r m @var{bookmark} @key{RET}
address@hidden bookmark-set
+Set the bookmark named @var{bookmark} at point (@code{bookmark-set}).
+
address@hidden C-x r b @var{bookmark} @key{RET}
address@hidden bookmark-jump
+Jump to the bookmark named @var{bookmark} (@code{bookmark-jump}).
+
address@hidden C-x r l
address@hidden list-bookmarks
+List all bookmarks (@code{list-bookmarks}).
+
address@hidden M-x bookmark-save
address@hidden bookmark-save
+Save all the current bookmark values in the default bookmark file.
address@hidden table
+
address@hidden C-x r m
address@hidden bookmark-set
address@hidden C-x r b
address@hidden bookmark-jump
+  The prototypical use for bookmarks is to record one current position
+in each of several files.  So the command @kbd{C-x r m}, which sets a
+bookmark, uses the visited file name as the default for the bookmark
+name.  If you name each bookmark after the file it points to, then you
+can conveniently revisit any of those files with @kbd{C-x r b}, and move
+to the position of the bookmark at the same time.
+
address@hidden C-x r l
+  To display a list of all your bookmarks in a separate buffer, type
address@hidden r l} (@code{list-bookmarks}).  If you switch to that buffer,
+you can use it to edit your bookmark definitions or annotate the
+bookmarks.  Type @kbd{C-h m} in that buffer for more information about
+its special editing commands.
+
+  When you kill XEmacs, XEmacs offers to save your bookmark values in
+your default bookmark file, @file{~/.emacs.bmk}, if you have changed any
+bookmark values.  You can also save the bookmarks at any time with the
address@hidden bookmark-save} command.  The bookmark commands load your
+default bookmark file automatically.  This saving and loading is how
+bookmarks persist from one XEmacs session to the next.
+
address@hidden bookmark-save-flag
+  If you set the variable @code{bookmark-save-flag} to 1, then each
+command that sets a bookmark will also save your bookmarks; this way,
+you don't lose any bookmark values even if XEmacs crashes.  (The value,
+if a number, says how many bookmark modifications should go by between
+saving.)
+
address@hidden bookmark-search-size
+  Bookmark position values are saved with surrounding context, so that
address@hidden can find the proper position even if the file is
+modified slightly.  The variable @code{bookmark-search-size} says how
+many characters of context to record, on each side of the bookmark's
+position.
+
+  Here are some additional commands for working with bookmarks:
+
address@hidden @kbd
address@hidden M-x bookmark-load @key{RET} @var{filename} @key{RET}
address@hidden bookmark-load
+Load a file named @var{filename} that contains a list of bookmark
+values.  You can use this command, as well as @code{bookmark-write}, to
+work with other files of bookmark values in addition to your default
+bookmark file.
+
address@hidden M-x bookmark-write @key{RET} @var{filename} @key{RET}
address@hidden bookmark-write
+Save all the current bookmark values in the file @var{filename}.
+
address@hidden M-x bookmark-delete @key{RET} @var{bookmark} @key{RET}
address@hidden bookmark-delete
+Delete the bookmark named @var{bookmark}.
+
address@hidden M-x bookmark-insert-location @key{RET} @var{bookmark} @key{RET}
address@hidden bookmark-insert-location
+Insert in the buffer the name of the file that bookmark @var{bookmark}
+points to.
+
address@hidden M-x bookmark-insert @key{RET} @var{bookmark} @key{RET}
address@hidden bookmark-insert
+Insert in the buffer the @emph{contents} of the file that bookmark
address@hidden points to.
address@hidden table
+
address@hidden Display, Search, Registers, Top
address@hidden Controlling the Display
+
+  Since only part of a large buffer fits in the window, XEmacs tries to show
+the part that is likely to be interesting.  The display control commands
+allow you to specify which part of the text you want to see.
+
address@hidden @kbd
address@hidden C-l
+Clear frame and redisplay, scrolling the selected window to center
+point vertically within it (@code{recenter}).
address@hidden C-v
address@hidden pgdn
address@hidden next
+Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
+On most X keyboards, you can get this functionality using the key
+labelled @samp{Page Down}, which generates either @kbd{next} or @kbd{pgdn}.
address@hidden M-v
address@hidden pgup
address@hidden prior
+Scroll backward (@code{scroll-down}).  On most X keyboards, you can get
+this functionality using the key labelled @samp{Page Up}, which
+generates either @kbd{prior} or @kbd{pgup}.
address@hidden @var{arg} C-l
+Scroll so point is on line @var{arg} (@code{recenter}).
address@hidden C-x <
address@hidden C-pgdn
address@hidden C-next
+Scroll text in current window to the left (@code{scroll-left}).
address@hidden C-x >
address@hidden C-pgup
address@hidden C-prior
+Scroll to the right (@code{scroll-right}).
address@hidden C-x $
+Make deeply indented lines invisible (@code{set-selective-display}).
address@hidden table
+
address@hidden
+* Scrolling::             Moving text up and down in a window.
+* Horizontal Scrolling::   Moving text left and right in a window.
+* Selective Display::      Hiding lines with lots of indentation.
+* Display Vars::           Information on variables for customizing display.
address@hidden menu
+
address@hidden Scrolling, Horizontal Scrolling, Display, Display
address@hidden Scrolling
+
+  If a buffer contains text that is too large to fit entirely within the
+window that is displaying the buffer, XEmacs shows a contiguous section of
+the text.  The section shown always contains point.
+
address@hidden scrolling
+  @dfn{Scrolling} means moving text up or down in the window so that
+different parts of the text are visible.  Scrolling forward means that text
+moves up, and new text appears at the bottom.  Scrolling backward moves
+text down and new text appears at the top.
+
+  Scrolling happens automatically if you move point past the bottom or top
+of the window.  You can also explicitly request scrolling with the commands
+in this section.
+
address@hidden @kbd
address@hidden C-l
+Clear frame and redisplay, scrolling the selected window to center
+point vertically within it (@code{recenter}).
address@hidden C-v
address@hidden pgdn
address@hidden next
+Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
address@hidden M-v
address@hidden pgup
address@hidden prior
+Scroll backward (@code{scroll-down}).
address@hidden @var{arg} C-l
+Scroll so point is on line @var{arg} (@code{recenter}).
address@hidden table
+
address@hidden C-l
address@hidden recenter
+  The most basic scrolling command is @kbd{C-l} (@code{recenter}) with no
+argument.  It clears the entire frame and redisplays all windows.  In
+addition, it scrolls the selected window so that point is halfway down
+from the top of the window.
+
address@hidden C-v
address@hidden M-v
address@hidden pgup
address@hidden pgdn
address@hidden next
address@hidden prior
address@hidden scroll-up
address@hidden scroll-down
+  The scrolling commands @kbd{C-v} and @kbd{M-v} let you move all the text
+in the window up or down a few lines.  @kbd{C-v} (@code{scroll-up}) with an
+argument shows you that many more lines at the bottom of the window, moving
+the text and point up together as @kbd{C-l} might.  @kbd{C-v} with a
+negative argument shows you more lines at the top of the window.
address@hidden (@code{scroll-down}) is like @kbd{C-v}, but moves in the
+opposite address@hidden
+
address@hidden next-screen-context-lines
+  To read the buffer a windowful at a time, use @kbd{C-v} with no
+argument.  @kbd{C-v} takes the last two lines at the bottom of the
+window and puts them at the top, followed by nearly a whole windowful of
+lines not previously visible.  Point moves to the new top of the window
+if it was in the text scrolled off the top.  @kbd{M-v} with no argument
+moves backward with similar overlap.  The number of lines of overlap
+across a @kbd{C-v} or @kbd{M-v} is controlled by the variable
address@hidden; by default, it is two.
+
+  Another way to scroll is using @kbd{C-l} with a numeric argument.
address@hidden does not clear the frame when given an argument; it only
+scrolls the selected window.  With a positive argument @var{n}, @kbd{C-l}
+repositions text to put point @var{n} lines down from the top.  An
+argument of zero puts point on the very top line.  Point does not move
+with respect to the text; rather, the text and point move rigidly on the
+frame.  @kbd{C-l} with a negative argument puts point that many lines
+from the bottom of the window.  For example, @kbd{C-u - 1 C-l} puts
+point on the bottom line, and @kbd{C-u - 5 C-l} puts it five lines from
+the bottom.  Just @kbd{C-u} as argument, as in @kbd{C-u C-l}, scrolls
+point to the center of the frame.
+
address@hidden scroll-step
+  Scrolling happens automatically if point has moved out of the visible
+portion of the text when it is time to display.  Usually scrolling is
+done  to put point vertically centered within the window.  However, if
+the variable @code{scroll-step} has a non-zero value, an attempt is made to
+scroll the buffer by that many lines; if that is enough to bring point back
+into visibility, that is what happens.
+
+  Scrolling happens automatically if point has moved out of the visible
+portion of the text when it is time to display.  Usually scrolling is
+done  to put point vertically centered within the window.  However, if
+the variable @code{scroll-step} has a non-zero value, an attempt is made to
+scroll the buffer by that many lines; if that is enough to bring point back
+into visibility, that is what happens.
+
address@hidden scroll-conservatively
+  If you set @code{scroll-step} to a small value because you want to use 
+arrow keys to scroll the screen without recentering, the redisplay
+preemption will likely make XEmacs keep recentering the screen when
+scrolling fast, regardless of @code{scroll-step}.  To prevent this, set
address@hidden to a small value, which will have the
+result of overriding the redisplay preemption.
+
address@hidden Horizontal Scrolling,, Scrolling, Display
address@hidden Horizontal Scrolling
+
address@hidden @kbd
address@hidden C-x <
+Scroll text in current window to the left (@code{scroll-left}).
address@hidden C-x >
+Scroll to the right (@code{scroll-right}).
address@hidden table
+
address@hidden C-x <
address@hidden C-x >
address@hidden scroll-left
address@hidden scroll-right
address@hidden horizontal scrolling
+  The text in a window can also be scrolled horizontally.  This means that
+each line of text is shifted sideways in the window, and one or more
+characters at the beginning of each line are not displayed at all.  When a
+window has been scrolled horizontally in this way, text lines are truncated
+rather than continued (@pxref{Continuation Lines}), with a @samp{$} appearing
+in the first column when there is text truncated to the left, and in the
+last column when there is text truncated to the right.
+
+  The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected
+window to the left by @var{n} columns with argument @var{n}.  With no
+argument, it scrolls by almost the full width of the window (two columns
+less, to be precise).  @kbd{C-x >} (@code{scroll-right}) scrolls
+similarly to the right.  The window cannot be scrolled any farther to
+the right once it is displaying normally (with each line starting at the
+window's left margin); attempting to do so has no effect.
+
address@hidden Selective Display, Display Vars, Display, Display
address@hidden Selective Display
address@hidden set-selective-display
address@hidden C-x $
+
+  XEmacs can hide lines indented more than a certain number
+of columns (you specify how many columns).  This allows you  to get an
+overview of a part of a program.
+
+  To hide lines, type @kbd{C-x $} (@code{set-selective-display}) with a
+numeric argument @var{n}.  (@xref{Arguments}, for information on giving
+the argument.)  Lines with at least @var{n} columns of indentation
+disappear from the screen.  The only indication of their presence are
+three dots (@address@hidden), which appear at the end of each visible
+line that is followed by one or more invisible address@hidden
+
+  The invisible lines are still present in the buffer, and most editing
+commands see them as usual, so it is very easy to put point in the middle
+of invisible text.  When this happens, the cursor appears at the end of the
+previous line, after the three dots.  If point is at the end of the visible
+line, before the newline that ends it, the cursor appears before the three
+dots.
+
+  The commands @kbd{C-n} and @kbd{C-p} move across the invisible lines
+as if they were not there.
+
+  To make everything visible again, type @kbd{C-x $} with no argument.
+
address@hidden Display Vars,, Selective Display, Display
address@hidden Variables Controlling Display
+
+  This section contains information for customization only.  Beginning
+users should skip it.
+
address@hidden no-redraw-on-reenter
+  When you reenter XEmacs after suspending, XEmacs normally clears the
+screen and redraws the entire display.  On some terminals with more than
+one page of memory, it is possible to arrange the termcap entry so that
+the @samp{ti} and @samp{te} strings (output to the terminal when XEmacs
+is entered and exited, respectively) switch between pages of memory so
+as to use one page for XEmacs and another page for other output.  In that
+case, you might want to set the variable @code{no-redraw-on-reenter} to
address@hidden so that XEmacs will assume, when resumed, that the screen
+page it is using still contains what XEmacs last wrote there.
+
address@hidden echo-keystrokes
+  The variable @code{echo-keystrokes} controls the echoing of multi-character
+keys; its value is the number of seconds of pause required to cause echoing
+to start, or zero, meaning don't echo at all.  @xref{Echo Area}.
+
address@hidden ctl-arrow
+  If the variable @code{ctl-arrow} is @code{nil}, control characters in the
+buffer are displayed with octal escape sequences, all except newline and
+tab.  If its value is @code{t}, then control characters will be printed 
+with an up-arrow, for example @kbd{^A}.  
+
+If its value is not @code{t} and not @code{nil}, then characters whose
+code is greater than 160 (that is, the space character (32) with its
+high bit set) will be assumed to be printable, and will be displayed
+without alteration.  This is the default when running under X Windows,
+since XEmacs assumes an ISO/8859-1 character set (also known as
+``Latin1'').  The @code{ctl-arrow} variable may also be set to an
+integer, in which case all characters whose codes are greater than or
+equal to that value will be assumed to be printable.
+
+Altering the value of @code{ctl-arrow} makes it local to the current
+buffer; until that time, the default value is in effect.  @xref{Locals}.
+
address@hidden tab-width
+  Normally, a tab character in the buffer is displayed as whitespace which
+extends to the next display tab stop position, and display tab stops come
+at intervals equal to eight spaces.  The number of spaces per tab is
+controlled by the variable @code{tab-width}, which is made local by
+changing it, just like @code{ctl-arrow}.  Note that how the tab character
+in the buffer is displayed has nothing to do with the definition of
address@hidden as a command.
+
address@hidden selective-display-ellipses
+  If you set the variable @code{selective-display-ellipses} to @code{nil},
+the three dots at the end of a line that precedes invisible
+lines do not appear.  There is no visible indication of the invisible lines.
+This variable becomes local automatically when set.
+
address@hidden Search, Fixit, Display, Top
address@hidden Searching and Replacement
address@hidden searching
+
+  Like other editors, Emacs has commands for searching for occurrences of
+a string.  The principal search command is unusual in that it is
address@hidden: it begins to search before you have finished typing the
+search string.  There are also non-incremental search commands more like
+those of other editors.
+
+  Besides the usual @code{replace-string} command that finds all
+occurrences of one string and replaces them with another, Emacs has a fancy
+replacement command called @code{query-replace} which asks interactively
+which occurrences to replace.
+
address@hidden
+* Incremental Search::     Search happens as you type the string.
+* Non-Incremental Search:: Specify entire string and then search.
+* Word Search::            Search for sequence of words.
+* Regexp Search::          Search for match for a regexp.
+* Regexps::                Syntax of regular expressions.
+* Search Case::            To ignore case while searching, or not.
+* Replace::                Search, and replace some or all matches.
+* Other Repeating Search:: Operating on all matches for some regexp.
address@hidden menu
+
address@hidden Incremental Search, Non-Incremental Search, Search, Search
address@hidden Incremental Search
+
+  An incremental search begins searching as soon as you type the first
+character of the search string.  As you type in the search string, Emacs
+shows you where the string (as you have typed it so far) is found.
+When you have typed enough characters to identify the place you want, you
+can stop.  Depending on what you do next, you may or may not need to
+terminate the search explicitly with a @key{RET}.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-s
+Incremental search forward (@code{isearch-forward}).
address@hidden C-r
+Incremental search backward (@code{isearch-backward}).
address@hidden table
+
address@hidden C-s
address@hidden C-r
address@hidden isearch-forward
address@hidden isearch-backward
+  @kbd{C-s} starts an incremental search.  @kbd{C-s} reads characters from
+the keyboard and positions the cursor at the first occurrence of the
+characters that you have typed.  If you type @kbd{C-s} and then @kbd{F},
+the cursor moves right after the first @samp{F}.  Type an @kbd{O}, and see
+the cursor move to after the first @samp{FO}.  After another @kbd{O}, the
+cursor is after the first @samp{FOO} after the place where you started the
+search.  Meanwhile, the search string @samp{FOO} has been echoed in the
+echo address@hidden
+
+  The echo area display ends with three dots when actual searching is going
+on.  When search is waiting for more input, the three dots are removed.
+(On slow terminals, the three dots are not displayed.)
+
+  If you make a mistake in typing the search string, you can erase
+characters with @key{DEL}.  Each @key{DEL} cancels the last character of the
+search string.  This does not happen until Emacs is ready to read another
+input character; first it must either find, or fail to find, the character
+you want to erase.  If you do not want to wait for this to happen, use
address@hidden as described address@hidden
+
+  When you are satisfied with the place you have reached, you can type
address@hidden (or @key{C-m}), which stops searching, leaving the cursor where 
+the search brought it.  Any command not specially meaningful in searches also
+stops the search and is then executed.  Thus, typing @kbd{C-a} exits the
+search and then moves to the beginning of the line.  @key{RET} is necessary
+only if the next command you want to type is a printing character,
address@hidden, @key{ESC}, or another control character that is special
+within searches (@kbd{C-q}, @kbd{C-w}, @kbd{C-r}, @kbd{C-s}, or @kbd{C-y}).
+
+  Sometimes you search for @samp{FOO} and find it, but were actually
+looking for a different occurrence of it.  To move to the next occurrence
+of the search string, type another @kbd{C-s}.  Do this as often as
+necessary.  If you overshoot, you can cancel some @kbd{C-s}
+characters with @key{DEL}.
+
+  After you exit a search, you can search for the same string again by
+typing just @kbd{C-s C-s}: the first @kbd{C-s} is the key that invokes
+incremental search, and the second @kbd{C-s} means ``search again''.
+
+  If the specified string is not found at all, the echo area displays
+the text @samp{Failing I-Search}.  The cursor is after the place where
+Emacs found as much of your string as it could.  Thus, if you search for
address@hidden, and there is no @samp{FOOT}, the cursor may be after the
address@hidden in @samp{FOOL}.  At this point there are several things you
+can do.  If you mistyped the search string, correct it.  If you like the
+place you have found, you can type @key{RET} or some other Emacs command
+to ``accept what the search offered''.  Or you can type @kbd{C-g}, which
+removes from the search string the characters that could not be found
+(the @samp{T} in @samp{FOOT}), leaving those that were found (the
address@hidden in @samp{FOOT}).  A second @kbd{C-g} at that point cancels
+the search entirely, returning point to where it was when the search
+started.
+
+  If a search is failing and you ask to repeat it by typing another
address@hidden, it starts again from the beginning of the buffer.  Repeating
+a failing backward search with @kbd{C-r} starts again from the end.  This
+is called @dfn{wrapping around}.  @samp{Wrapped} appears in the search
+prompt once this has happened.
+
address@hidden quitting (in search)
+  The @kbd{C-g} ``quit'' character does special things during searches;
+just what it does depends on the status of the search.  If the search has
+found what you specified and is waiting for input, @kbd{C-g} cancels the
+entire search.  The cursor moves back to where you started the search.  If
address@hidden is typed when there are characters in the search string that have
+not been found---because Emacs is still searching for them, or because it
+has failed to find them---then the search string characters which have not
+been found are discarded from the search string.  The
+search is now successful and waiting for more input, so a second @kbd{C-g}
+cancels the entire search.
+
+  To search for a control character such as @kbd{C-s} or @key{DEL} or
address@hidden, you must quote it by typing @kbd{C-q} first.  This function
+of @kbd{C-q} is analogous to its meaning as an Emacs command: it causes
+the following character to be treated the way a graphic character would
+normally be treated in the same context.
+
+ To search backwards, you can use @kbd{C-r} instead of @kbd{C-s} to
+start the search; @kbd{C-r} is the key that runs the command
+(@code{isearch-backward}) to search backward.  You can also use
address@hidden to change from searching forward to searching backwards.  Do
+this if a search fails because the place you started was too far down in the
+file.  Repeated @kbd{C-r} keeps looking for more occurrences backwards.
address@hidden starts going forward again.  You can cancel @kbd{C-r} in a
+search with @key{DEL}.
+
+  The characters @kbd{C-y} and @kbd{C-w} can be used in incremental search
+to grab text from the buffer into the search string.  This makes it
+convenient to search for another occurrence of text at point.  @kbd{C-w}
+copies the word after point as part of the search string, advancing
+point over that word.  Another @kbd{C-s} to repeat the search will then
+search for a string including that word.  @kbd{C-y} is similar to @kbd{C-w}
+but copies the rest of the current line into the search string.
+
+  The characters @kbd{M-p} and @kbd{M-n} can be used in an incremental
+search to recall things which you have searched for in the past.  A
+list of the last 16 things you have searched for is retained, and 
address@hidden and @kbd{M-n} let you cycle through that ring.
+
+The character @address@hidden does completion on the elements in 
+the search history ring.  For example, if you know that you have
+recently searched for the string @code{POTATOE}, you could type
address@hidden P O address@hidden  If you had searched for other strings
+beginning with @code{PO} then you would be shown a list of them, and
+would need to type more to select one. 
+
+  You can change any of the special characters in incremental search via
+the normal keybinding mechanism: simply add a binding to the 
address@hidden  For example, to make the character
address@hidden mean ``search backwards'' while in isearch-mode, do this:
+
address@hidden
+(define-key isearch-mode-map "\C-b" 'isearch-repeat-backward)
address@hidden example
+
+These are the default bindings of isearch-mode:
+
address@hidden isearch-delete-char
address@hidden isearch-exit
address@hidden isearch-quote-char
address@hidden isearch-repeat-forward
address@hidden isearch-repeat-backward
address@hidden isearch-yank-line
address@hidden isearch-yank-word
address@hidden isearch-abort
address@hidden isearch-ring-retreat
address@hidden isearch-ring-advance
address@hidden isearch-complete
+
address@hidden DEL (isearch-mode)
address@hidden RET (isearch-mode)
address@hidden C-q (isearch-mode)
address@hidden C-s (isearch-mode)
address@hidden C-r (isearch-mode)
address@hidden C-y (isearch-mode)
address@hidden C-w (isearch-mode)
address@hidden C-g (isearch-mode)
address@hidden M-p (isearch-mode)
address@hidden M-n (isearch-mode)
address@hidden M-TAB (isearch-mode)
+
address@hidden @kbd
address@hidden DEL
+Delete a character from the incremental search string 
(@code{isearch-delete-char}).
address@hidden RET
+Exit incremental search (@code{isearch-exit}).
address@hidden C-q
+Quote special characters for incremental search (@code{isearch-quote-char}).
address@hidden C-s
+Repeat incremental search forward (@code{isearch-repeat-forward}).
address@hidden C-r
+Repeat incremental search backward (@code{isearch-repeat-backward}).
address@hidden C-y
+Pull rest of line from buffer into search string (@code{isearch-yank-line}).
address@hidden C-w
+Pull next word from buffer into search string (@code{isearch-yank-word}).
address@hidden C-g
+Cancels input back to what has been found successfully, or aborts the 
+isearch (@code{isearch-abort}).
address@hidden M-p
+Recall the previous element in the isearch history ring 
+(@code{isearch-ring-retreat}).
address@hidden M-n
+Recall the next element in the isearch history ring 
+(@code{isearch-ring-advance}).
address@hidden address@hidden
+Do completion on the elements in the isearch history ring 
+(@code{isearch-complete}).
+
address@hidden table
+
+Any other character which is normally inserted into a buffer when typed
+is automatically added to the search string in isearch-mode.
+
address@hidden Slow Terminal Incremental Search
+
+  Incremental search on a slow terminal uses a modified style of display
+that is designed to take less time.  Instead of redisplaying the buffer at
+each place the search gets to, it creates a new single-line window and uses
+that to display the line the search has found.  The single-line window
+appears as soon as point gets outside of the text that is already
+on the screen.
+
+  When the search is terminated, the single-line window is removed.  Only
+at this time the window in which the search was done is redisplayed to show
+its new value of point.
+
+  The three dots at the end of the search string, normally used to indicate
+that searching is going on, are not displayed in slow style display.
+
address@hidden search-slow-speed
+  The slow terminal style of display is used when the terminal baud rate is
+less than or equal to the value of the variable @code{search-slow-speed},
+initially 1200.
+
address@hidden search-slow-window-lines
+  The number of lines to use in slow terminal search display is controlled
+by the variable @code{search-slow-window-lines}.  Its normal value is 1.
+
address@hidden Non-Incremental Search, Word Search, Incremental Search, Search
address@hidden Non-Incremental Search
address@hidden non-incremental search
+
+  Emacs also has conventional non-incremental search commands, which require
+you type the entire search string before searching begins.
+
address@hidden @kbd
address@hidden C-s @key{RET} @var{string} @key{RET}
+Search for @var{string}.
address@hidden C-r @key{RET} @var{string} @key{RET}
+Search backward for @var{string}.
address@hidden table
+
+  To do a non-incremental search, first type @kbd{C-s @key{RET}}
+(or @kbd{C-s C-m}).  This enters the minibuffer to read the search string.
+Terminate the string with @key{RET} to start the search.  If the string
+is not found, the search command gets an error.
+
+ By default, @kbd{C-s} invokes incremental search, but if you give it an
+empty argument, which would otherwise be useless, it invokes non-incremental
+search.  Therefore, @kbd{C-s @key{RET}} invokes non-incremental search. 
address@hidden @key{RET}} also works this way.
+
address@hidden search-forward
address@hidden search-backward
+  Forward and backward non-incremental searches are implemented by the
+commands @code{search-forward} and @code{search-backward}.  You can bind
+these commands to keys.  The reason that incremental
+search is programmed to invoke them as well is that @kbd{C-s @key{RET}}
+is the traditional sequence of characters used in Emacs to invoke
+non-incremental search.
+
+ Non-incremental searches performed using @kbd{C-s @key{RET}} do
+not call @code{search-forward} right away.  They first check
+if the next character is @kbd{C-w}, which requests a word search.
address@hidden Search}.
+
address@hidden Word Search, Regexp Search, Non-Incremental Search, Search
address@hidden Word Search
address@hidden word search
+
+  Word search looks for a sequence of words without regard to how the
+words are separated.  More precisely, you type a string of many words,
+using single spaces to separate them, and the string is found even if
+there are multiple spaces, newlines or other punctuation between the words.
+
+  Word search is useful in editing documents formatted by text formatters.
+If you edit while looking at the printed, formatted version, you can't tell
+where the line breaks are in the source file.  Word search, allows you
+to search  without having to know the line breaks.
+
address@hidden @kbd
address@hidden C-s @key{RET} C-w @var{words} @key{RET}
+Search for @var{words}, ignoring differences in punctuation.
address@hidden C-r @key{RET} C-w @var{words} @key{RET}
+Search backward for @var{words}, ignoring differences in punctuation.
address@hidden table
+
+  Word search is a special case of non-incremental search.  It is invoked
+with @kbd{C-s @key{RET} C-w} followed by the search string, which
+must always be terminated with another @key{RET}.  Being non-incremental, this
+search does not start until the argument is terminated.  It works by
+constructing a regular expression and searching for that.  @xref{Regexp
+Search}.
+
+ You can do a backward word search with @kbd{C-r @key{RET} C-w}.
+
address@hidden word-search-forward
address@hidden word-search-backward
+  Forward and backward word searches are implemented by the commands
address@hidden and @code{word-search-backward}.  You can
+bind these commands to keys.  The reason that incremental
+search is programmed to invoke them as well is that @kbd{C-s @key{RET} C-w}
+is the traditional Emacs sequence of keys for word search.
+
address@hidden Regexp Search, Regexps, Word Search, Search
address@hidden Regular Expression Search
address@hidden regular expression
address@hidden regexp
+
+  A @dfn{regular expression} (@dfn{regexp}, for short) is a pattern that
+denotes a (possibly infinite) set of strings.  Searching for matches
+for a regexp is a powerful operation that editors on Unix systems have
+traditionally offered.
+
+ To gain a thorough understanding of regular expressions and how to use
+them to best advantage, we recommend that you study @cite{Mastering
+Regular Expressions, by Jeffrey E.F. Friedl, O'Reilly and Associates,
+1997}. (It's known as the "Hip Owls" book, because of the picture on its
+cover.)  You might also read the manuals to @ref{(gawk)Top},
address@hidden(ed)Top}, @cite{sed}, @cite{grep}, @ref{(perl)Top},
address@hidden(regex)Top}, @ref{(rx)Top}, @cite{pcre}, and @ref{(flex)Top}, 
which
+also make good use of regular expressions.
+
+ The XEmacs regular expression syntax most closely resembles that of
address@hidden, or @cite{grep}, the GNU versions of which all utilize the GNU
address@hidden library.  XEmacs' version of @cite{regex} has recently been
+extended with some Perl--like capabilities, described in the next
+section.
+
+ In XEmacs, you can search for the next match for a regexp either
+incrementally or not.
+
address@hidden M-C-s
address@hidden M-C-r
address@hidden isearch-forward-regexp
address@hidden isearch-backward-regexp
+  Incremental search for a regexp is done by typing @kbd{M-C-s}
+(@code{isearch-forward-regexp}).  This command reads a search string
+incrementally just like @kbd{C-s}, but it treats the search string as a
+regexp rather than looking for an exact match against the text in the
+buffer.  Each time you add text to the search string, you make the regexp
+longer, and the new regexp is searched for.  A reverse regexp search command
address@hidden also exists, bound to @kbd{M-C-r}.
+
+  All of the control characters that do special things within an ordinary
+incremental search have the same functionality in incremental regexp search.
+Typing @kbd{C-s} or @kbd{C-r} immediately after starting a search
+retrieves the last incremental search regexp used:
+incremental regexp and non-regexp searches have independent defaults.
+
address@hidden re-search-forward
address@hidden re-search-backward
+  Non-incremental search for a regexp is done by the functions
address@hidden and @code{re-search-backward}.  You can invoke
+them with @kbd{M-x} or bind them to keys.  You can also call
address@hidden by way of incremental regexp search with
address@hidden @key{RET}}; similarly for @code{re-search-backward} with
address@hidden @key{RET}}.
+
address@hidden Regexps, Search Case, Regexp Search, Search
address@hidden Syntax of Regular Expressions
+
+  Regular expressions have a syntax in which a few characters are
+special constructs and the rest are @dfn{ordinary}.  An ordinary
+character is a simple regular expression that matches that character and
+nothing else.  The special characters are @samp{.}, @samp{*}, @samp{+},
address@hidden, @samp{[}, @samp{]}, @samp{^}, @samp{$}, and @samp{\}; no new
+special characters will be defined in the future.  Any other character
+appearing in a regular expression is ordinary, unless a @samp{\}
+precedes it.
+
+For example, @samp{f} is not a special character, so it is ordinary, and
+therefore @samp{f} is a regular expression that matches the string
address@hidden and no other string.  (It does @emph{not} match the string
address@hidden)  Likewise, @samp{o} is a regular expression that matches
+only @address@hidden
+
+Any two regular expressions @var{a} and @var{b} can be concatenated.  The
+result is a regular expression that matches a string if @var{a} matches
+some amount of the beginning of that string and @var{b} matches the rest of
+the address@hidden
+
+As a simple example, we can concatenate the regular expressions @samp{f}
+and @samp{o} to get the regular expression @samp{fo}, which matches only
+the string @samp{fo}.  Still trivial.  To do something more powerful, you
+need to use one of the special characters.  Here is a list of them:
+
address@hidden 1200
address@hidden @kbd
address@hidden .@: @r{(Period)}
address@hidden @samp{.} in regexp
+is a special character that matches any single character except a newline.
+Using concatenation, we can make regular expressions like @samp{a.b}, which
+matches any three-character string that begins with @samp{a} and ends with
address@hidden@refill
+
address@hidden *
address@hidden @samp{*} in regexp
+is not a construct by itself; it is a quantifying suffix operator that
+means to repeat the preceding regular expression as many times as
+possible.  In @samp{fo*}, the @samp{*} applies to the @samp{o}, so
address@hidden matches one @samp{f} followed by any number of @samp{o}s.
+The case of zero @samp{o}s is allowed: @samp{fo*} does match
address@hidden@refill
+
address@hidden always applies to the @emph{smallest} possible preceding
+expression.  Thus, @samp{fo*} has a repeating @samp{o}, not a
+repeating @address@hidden
+
+The matcher processes a @samp{*} construct by matching, immediately, as
+many repetitions as can be found; it is "greedy".  Then it continues
+with the rest of the pattern.  If that fails, backtracking occurs,
+discarding some of the matches of the @samp{*}-modified construct in
+case that makes it possible to match the rest of the pattern.  For
+example, in matching @samp{ca*ar} against the string @samp{caaar}, the
address@hidden first tries to match all three @samp{a}s; but the rest of the
+pattern is @samp{ar} and there is only @samp{r} left to match, so this
+try fails.  The next alternative is for @samp{a*} to match only two
address@hidden  With this choice, the rest of the regexp matches
address@hidden
+
+Nested repetition operators can be extremely slow if they specify
+backtracking loops.  For example, it could take hours for the regular
+expression @samp{\(x+y*\)*a} to match the sequence
address@hidden  The slowness is because
+Emacs must try each imaginable way of grouping the 35 @samp{x}'s before
+concluding that none of them can work.  To make sure your regular
+expressions run fast, check nested repetitions carefully.
+
address@hidden +
address@hidden @samp{+} in regexp
+is a quantifying suffix operator similar to @samp{*} except that the
+preceding expression must match at least once.  It is also "greedy".
+So, for example, @samp{ca+r} matches the strings @samp{car} and
address@hidden but not the string @samp{cr}, whereas @samp{ca*r} matches
+all three strings.
+
address@hidden ?
address@hidden @samp{?} in regexp
+is a quantifying suffix operator similar to @samp{*}, except that the
+preceding expression can match either once or not at all.  For example,
address@hidden matches @samp{car} or @samp{cr}, but does not match anything
+else.
+
address@hidden *?
address@hidden @samp{*?} in regexp
+works just like @samp{*}, except that rather than matching the longest
+match, it matches the shortest match.  @samp{*?} is known as a
address@hidden quantifier, a regexp construct borrowed from Perl.
address@hidden Did perl get this from somewhere?  What's the real history of *? 
?
+
+This construct is very useful for when you want to match the text inside
+a pair of delimiters.  For instance, @samp{/\*.*?\*/} will match C
+comments in a string.  This could not easily be achieved without the use
+of a non-greedy quantifier.
+
+This construct has not been available prior to XEmacs 20.4.  It is not
+available in FSF Emacs.
+
address@hidden +?
address@hidden @samp{+?} in regexp
+is the non-greedy version of @samp{+}.
+
address@hidden ??
address@hidden @samp{??} in regexp
+is the non-greedy version of @samp{?}.
+
address@hidden address@hidden,address@hidden
address@hidden Note the spacing after the close brace is deliberate.
address@hidden @address@hidden,address@hidden }in regexp
+serves as an interval quantifier, analogous to @samp{*} or @samp{+}, but
+specifies that the expression must match at least @var{n} times, but no
+more than @var{m} times.  This syntax is supported by most Unix regexp
+utilities, and has been introduced to XEmacs for the version 20.3.
+
+Unfortunately, the non-greedy version of this quantifier does not exist
+currently, although it does in Perl.
+
address@hidden [ @dots{} ]
address@hidden character set (in regexp)
address@hidden @samp{[} in regexp
address@hidden @samp{]} in regexp
address@hidden begins a @dfn{character set}, which is terminated by a
address@hidden  In the simplest case, the characters between the two brackets
+form the set.  Thus, @samp{[ad]} matches either one @samp{a} or one
address@hidden, and @samp{[ad]*} matches any string composed of just @samp{a}s
+and @samp{d}s (including the empty string), from which it follows that
address@hidden matches @samp{cr}, @samp{car}, @samp{cdr},
address@hidden, address@hidden
+
+The usual regular expression special characters are not special inside a
+character set.  A completely different set of special characters exists
+inside character sets: @samp{]}, @samp{-} and @address@hidden
+
address@hidden is used for ranges of characters.  To write a range, write two
+characters with a @samp{-} between them.  Thus, @samp{[a-z]} matches any
+lower case letter.  Ranges may be intermixed freely with individual
+characters, as in @samp{[a-z$%.]}, which matches any lower case letter
+or @samp{$}, @samp{%}, or a address@hidden
+
+To include a @samp{]} in a character set, make it the first character.
+For example, @samp{[]a]} matches @samp{]} or @samp{a}.  To include a
address@hidden, write @samp{-} as the first character in the set, or put it
+immediately after a range.  (You can replace one individual character
address@hidden with the range @address@hidden@var{c}} to make a place to put the
address@hidden)  There is no way to write a set containing just @samp{-} and
address@hidden
+
+To include @samp{^} in a set, put it anywhere but at the beginning of
+the set.
+
address@hidden [^ @dots{} ]
address@hidden @samp{^} in regexp
address@hidden begins a @dfn{complement character set}, which matches any
+character except the ones specified.  Thus, @samp{[^a-z0-9A-Z]}
+matches all characters @emph{except} letters and address@hidden
+
address@hidden is not special in a character set unless it is the first
+character.  The character following the @samp{^} is treated as if it
+were first (thus, @samp{-} and @samp{]} are not special there).
+
+Note that a complement character set can match a newline, unless
+newline is mentioned as one of the characters not to match.
+
address@hidden ^
address@hidden @samp{^} in regexp
address@hidden beginning of line in regexp
+is a special character that matches the empty string, but only at the
+beginning of a line in the text being matched.  Otherwise it fails to
+match anything.  Thus, @samp{^foo} matches a @samp{foo} that occurs at
+the beginning of a line.
+
+When matching a string instead of a buffer, @samp{^} matches at the
+beginning of the string or after a newline character @samp{\n}.
+
address@hidden $
address@hidden @samp{$} in regexp
+is similar to @samp{^} but matches only at the end of a line.  Thus,
address@hidden matches a string of one @samp{x} or more at the end of a line.
+
+When matching a string instead of a buffer, @samp{$} matches at the end
+of the string or before a newline character @samp{\n}.
+
address@hidden \
address@hidden @samp{\} in regexp
+has two functions: it quotes the special characters (including
address@hidden), and it introduces additional special constructs.
+
+Because @samp{\} quotes special characters, @samp{\$} is a regular
+expression that matches only @samp{$}, and @samp{\[} is a regular
+expression that matches only @samp{[}, and so on.
+
address@hidden Removed a paragraph here in lispref about doubling backslashes 
inside
address@hidden of Lisp strings.
+
address@hidden table
+
address@hidden note:} For historical compatibility, special characters
+are treated as ordinary ones if they are in contexts where their special
+meanings make no sense.  For example, @samp{*foo} treats @samp{*} as
+ordinary since there is no preceding expression on which the @samp{*}
+can act.  It is poor practice to depend on this behavior; quote the
+special character anyway, regardless of where it address@hidden
+
+For the most part, @samp{\} followed by any character matches only
+that character.  However, there are several exceptions: characters
+that, when preceded by @samp{\}, are special constructs.  Such
+characters are always ordinary when encountered on their own.  Here
+is a table of @samp{\} constructs:
+
address@hidden @kbd
address@hidden \|
address@hidden @samp{|} in regexp
address@hidden regexp alternative
+specifies an alternative.
+Two regular expressions @var{a} and @var{b} with @samp{\|} in
+between form an expression that matches anything that either @var{a} or
address@hidden address@hidden
+
+Thus, @samp{foo\|bar} matches either @samp{foo} or @samp{bar}
+but no other address@hidden
+
address@hidden|} applies to the largest possible surrounding expressions.  Only 
a
+surrounding @samp{\( @dots{} \)} grouping can limit the grouping power of
address@hidden|address@hidden
+
+Full backtracking capability exists to handle multiple uses of @samp{\|}.
+
address@hidden \( @dots{} \)
address@hidden @samp{(} in regexp
address@hidden @samp{)} in regexp
address@hidden regexp grouping
+is a grouping construct that serves three purposes:
+
address@hidden
address@hidden
+To enclose a set of @samp{\|} alternatives for other operations.
+Thus, @samp{\(foo\|bar\)x} matches either @samp{foox} or @samp{barx}.
+
address@hidden
+To enclose an expression for a suffix operator such as @samp{*} to act
+on.  Thus, @samp{ba\(na\)*} matches @samp{bananana}, etc., with any
+(zero or more) number of @samp{na} address@hidden
+
address@hidden
+To record a matched substring for future reference.
address@hidden enumerate
+
+This last application is not a consequence of the idea of a
+parenthetical grouping; it is a separate feature that happens to be
+assigned as a second meaning to the same @samp{\( @dots{} \)} construct
+because there is no conflict in practice between the two meanings.
+Here is an explanation of this feature:
+
address@hidden address@hidden
+matches the same text that matched the @var{digit}th occurrence of a
address@hidden( @dots{} \)} construct.
+
+In other words, after the end of a @samp{\( @dots{} \)} construct.  the
+matcher remembers the beginning and end of the text matched by that
+construct.  Then, later on in the regular expression, you can use
address@hidden followed by @var{digit} to match that same text, whatever it
+may have been.
+
+The strings matching the first nine @samp{\( @dots{} \)} constructs
+appearing in a regular expression are assigned numbers 1 through 9 in
+the order that the open parentheses appear in the regular expression.
+So you can use @samp{\1} through @samp{\9} to refer to the text matched
+by the corresponding @samp{\( @dots{} \)} constructs.
+
+For example, @samp{\(.*\)\1} matches any newline-free string that is
+composed of two identical halves.  The @samp{\(.*\)} matches the first
+half, which may be anything, but the @samp{\1} that follows must match
+the same exact text.
+
address@hidden \(?: @dots{} \)
address@hidden @samp{\(?:} in regexp
address@hidden regexp grouping
+is called a @dfn{shy} grouping operator, and it is used just like
address@hidden( @dots{} \)}, except that it does not cause the matched
+substring to be recorded for future reference.
+
+This is useful when you need a lot of grouping @samp{\( @dots{} \)}
+constructs, but only want to remember one or two -- or if you have
+more than nine groupings and need to use backreferences to refer to
+the groupings at the end.
+
+Using @samp{\(?: @dots{} \)} rather than @samp{\( @dots{} \)} when you
+don't need the captured substrings ought to speed up your programs some,
+since it shortens the code path followed by the regular expression
+engine, as well as the amount of memory allocation and string copying it
+must do.  The actual performance gain to be observed has not been
+measured or quantified as of this writing.
address@hidden This is used to good advantage by the font-locking code, and by
address@hidden `regexp-opt.el'.
+
+The shy grouping operator has been borrowed from Perl, and has not been
+available prior to XEmacs 20.3, nor is it available in FSF Emacs.
+
address@hidden \w
address@hidden @samp{\w} in regexp
+matches any word-constituent character.  The editor syntax table
+determines which characters these are.  @xref{Syntax}.
+
address@hidden \W
address@hidden @samp{\W} in regexp
+matches any character that is not a word constituent.
+
address@hidden address@hidden
address@hidden @samp{\s} in regexp
+matches any character whose syntax is @var{code}.  Here @var{code} is a
+character that represents a syntax code: thus, @samp{w} for word
+constituent, @samp{-} for whitespace, @samp{(} for open parenthesis,
+etc.  @xref{Syntax}, for a list of syntax codes and the characters that
+stand for them.
+
address@hidden address@hidden
address@hidden @samp{\S} in regexp
+matches any character whose syntax is not @var{code}.
address@hidden table
+
+  The following regular expression constructs match the empty string---that is,
+they don't use up any characters---but whether they match depends on the
+context.
+
address@hidden @kbd
address@hidden \`
address@hidden @samp{\`} in regexp
+matches the empty string, but only at the beginning
+of the buffer or string being matched against.
+
address@hidden \'
address@hidden @samp{\'} in regexp
+matches the empty string, but only at the end of
+the buffer or string being matched against.
+
address@hidden \=
address@hidden @samp{\=} in regexp
+matches the empty string, but only at point.
+(This construct is not defined when matching against a string.)
+
address@hidden \b
address@hidden @samp{\b} in regexp
+matches the empty string, but only at the beginning or
+end of a word.  Thus, @samp{\bfoo\b} matches any occurrence of
address@hidden as a separate word.  @samp{\bballs?\b} matches
address@hidden or @samp{balls} as a separate address@hidden
+
address@hidden \B
address@hidden @samp{\B} in regexp
+matches the empty string, but @emph{not} at the beginning or
+end of a word.
+
address@hidden \<
address@hidden @samp{\<} in regexp
+matches the empty string, but only at the beginning of a word.
+
address@hidden \>
address@hidden @samp{\>} in regexp
+matches the empty string, but only at the end of a word.
address@hidden table
+
+  Here is a complicated regexp used by Emacs to recognize the end of a
+sentence together with any whitespace that follows.  It is given in Lisp
+syntax to enable you to distinguish the spaces from the tab characters.  In
+Lisp syntax, the string constant begins and ends with a double-quote.
address@hidden"} stands for a double-quote as part of the regexp, @samp{\\} for 
a
+backslash as part of the regexp, @samp{\t} for a tab and @samp{\n} for a
+newline.
+
address@hidden
+"[.?!][]\"')]*\\($\\|\t\\|  \\)[ \t\n]*"
address@hidden example
+
address@hidden
+This regexp contains four parts: a character set matching
+period, @samp{?} or @samp{!}; a character set matching close-brackets,
+quotes or parentheses, repeated any number of times; an alternative in
+backslash-parentheses that matches end-of-line, a tab or two spaces; and
+a character set matching whitespace characters, repeated any number of
+times.
+
address@hidden Search Case, Replace, Regexps, Search
address@hidden Searching and Case
+
address@hidden case-fold-search
+  All searches in Emacs normally ignore the case of the text they
+are searching through; if you specify searching for @samp{FOO},
address@hidden and @samp{foo} are also considered a match.  Regexps, and in
+particular character sets, are included: @samp{[aB]} matches @samp{a}
+or @samp{A} or @samp{b} or @address@hidden
+
+  If you want a case-sensitive search, set the variable
address@hidden to @code{nil}.  Then all letters must match
+exactly, including case. @code{case-fold-search} is a per-buffer
+variable; altering it affects only the current buffer, but
+there is a default value which you can change as well.  @xref{Locals}. 
+You can also use @b{Case Sensitive Search} from the @b{Options} menu 
+on your screen.
+
address@hidden Replace, Other Repeating Search, Search Case, Search
address@hidden Replacement Commands
address@hidden replacement
address@hidden string substitution
address@hidden global substitution
+
+  Global search-and-replace operations are not needed as often in Emacs as
+they are in other editors, but they are available.  In addition to the
+simple @code{replace-string} command which is like that found in most
+editors, there is a @code{query-replace} command which asks you, for each
+occurrence of a pattern, whether to replace it.
+
+  The replace commands all replace one string (or regexp) with one
+replacement string.  It is possible to perform several replacements in
+parallel using the command @code{expand-region-abbrevs}.  @xref{Expanding
+Abbrevs}.
+
address@hidden
+* Unconditional Replace::  Replacing all matches for a string.
+* Regexp Replace::         Replacing all matches for a regexp.
+* Replacement and Case::   How replacements preserve case of letters.
+* Query Replace::          How to use querying.
address@hidden menu
+
address@hidden Unconditional Replace, Regexp Replace, Replace, Replace
address@hidden Unconditional Replacement
address@hidden replace-string
address@hidden replace-regexp
+
address@hidden @kbd
address@hidden M-x replace-string @key{RET} @var{string} @key{RET} 
@var{newstring} @key{RET}
+Replace every occurrence of @var{string} with @var{newstring}.
address@hidden M-x replace-regexp @key{RET} @var{regexp} @key{RET} 
@var{newstring} @key{RET}
+Replace every match for @var{regexp} with @var{newstring}.
address@hidden table
+
+  To replace every instance of @samp{foo} after point with @samp{bar},
+use the command @kbd{M-x replace-string} with the two arguments
address@hidden and @samp{bar}.  Replacement occurs only after point: if you
+want to cover the whole buffer you must go to the beginning first.  By
+default, all occurrences up to the end of the buffer are replaced.  To
+limit replacement to part of the buffer, narrow to that part of the
+buffer before doing the replacement (@pxref{Narrowing}).
+
+  When @code{replace-string} exits, point is left at the last occurrence
+replaced.  The value of point when the @code{replace-string} command was
+issued is remembered on the mark ring; @kbd{C-u address@hidden moves back
+there.
+
+  A numeric argument restricts replacement to matches that are surrounded
+by word boundaries.
+
address@hidden Regexp Replace, Replacement and Case, Unconditional Replace, 
Replace
address@hidden Regexp Replacement
+
+  @code{replace-string} replaces exact matches for a single string.  The
+similar command @code{replace-regexp} replaces any match for a specified
+pattern.
+
+  In @code{replace-regexp}, the @var{newstring} need not be constant.  It
+can refer to all or part of what is matched by the @var{regexp}.  @samp{\&}
+in @var{newstring} stands for the entire text being replaced.
address@hidden@var{d}} in @var{newstring}, where @var{d} is a digit, stands for
+whatever matched the @var{d}'th parenthesized grouping in @var{regexp}.
+For example,@refill
+
address@hidden
+M-x replace-regexp @key{RET} c[ad]+r @key{RET} \&-safe @key{RET}
address@hidden example
+
address@hidden
+would replace (for example) @samp{cadr} with @samp{cadr-safe} and @samp{cddr}
+with @samp{cddr-safe}.
+
address@hidden
+M-x replace-regexp @key{RET} \(c[ad]+r\)-safe @key{RET} \1 @key{RET}
address@hidden example
+
address@hidden
+would perform exactly the opposite replacements.  To include a @samp{\}
+in the text to replace with, you must give @samp{\\}.
+
address@hidden Replacement and Case, Query Replace, Regexp Replace, Replace
address@hidden Replace Commands and Case
+
address@hidden case-replace
address@hidden case-fold-search
+  If the arguments to a replace command are in lower case, the command
+preserves case when it makes a replacement.  Thus, the following command:
+
address@hidden
+M-x replace-string @key{RET} foo @key{RET} bar @key{RET}
address@hidden example
+
address@hidden
+replaces a lower-case @samp{foo} with a lower case @samp{bar}, @samp{FOO}
+with @samp{BAR}, and @samp{Foo} with @samp{Bar}.  If upper-case letters are
+used in the second argument, they remain upper-case every time that
+argument is inserted.  If upper-case letters are used in the first
+argument, the second argument is always substituted exactly as given, with
+no case conversion.  Likewise, if the variable @code{case-replace} is set
+to @code{nil}, replacement is done without case conversion.  If
address@hidden is set to @code{nil}, case is significant in
+matching occurrences of @samp{foo} to replace; also, case conversion of the
+replacement string is not done.
+
address@hidden Query Replace,, Replacement and Case, Replace
address@hidden Query Replace
address@hidden query replace
+
address@hidden @kbd
address@hidden M-% @var{string} @key{RET} @var{newstring} @key{RET}
address@hidden M-x query-replace @key{RET} @var{string} @key{RET} 
@var{newstring} @key{RET}
+Replace some occurrences of @var{string} with @var{newstring}.
address@hidden M-x query-replace-regexp @key{RET} @var{regexp} @key{RET} 
@var{newstring} @key{RET}
+Replace some matches for @var{regexp} with @var{newstring}.
address@hidden table
+
address@hidden M-%
address@hidden query-replace
+  If you want to change only some of the occurrences of @samp{foo} to
address@hidden, not all of them, you can use @code{query-replace} instead of
address@hidden  This command finds occurrences of @samp{foo} one by one,
+displays each occurrence, and asks you whether to replace it.  A numeric
+argument to @code{query-replace} tells it to consider only occurrences
+that are bounded by word-delimiter address@hidden
+
address@hidden query-replace-regexp
+  Aside from querying, @code{query-replace} works just like
address@hidden, and @code{query-replace-regexp} works
+just like @address@hidden
+
+  The things you can type when you are shown an occurrence of @var{string}
+or a match for @var{regexp} are:
+
address@hidden SPC (query-replace)
address@hidden DEL (query-replace)
address@hidden , (query-replace)
address@hidden ESC (query-replace)
address@hidden . (query-replace)
address@hidden ! (query-replace)
address@hidden ^ (query-replace)
address@hidden C-r (query-replace)
address@hidden C-w (query-replace)
address@hidden C-l (query-replace)
+
address@hidden WideCommands
address@hidden @kbd
address@hidden @key{SPC}
+to replace the occurrence with @var{newstring}.  This preserves case, just
+like @code{replace-string}, provided @code{case-replace} is address@hidden,
+as it normally address@hidden
+
address@hidden @key{DEL}
+to skip to the next occurrence without replacing this one.
+
address@hidden , @r{(Comma)}
+to replace this occurrence and display the result.  You are then
+prompted for another input character.  However, since the replacement has
+already been made, @key{DEL} and @key{SPC} are equivalent.  At this
+point, you can type @kbd{C-r} (see below) to alter the replaced text.  To
+undo the replacement, you can type @kbd{C-x u}. 
+This exits the @code{query-replace}.  If you want to do further
+replacement you must use @kbd{C-x @key{ESC} @key{ESC}} to restart 
(@pxref{Repetition}).
+
address@hidden @key{ESC}
+to exit without doing any more replacements.
+
address@hidden .@: @r{(Period)}
+to replace this occurrence and then exit.
+
address@hidden !
+to replace all remaining occurrences without asking again.
+
address@hidden ^
+to go back to the location of the previous occurrence (or what used to
+be an occurrence), in case you changed it by mistake.  This works by
+popping the mark ring.  Only one @kbd{^} in a row is allowed, because
+only one previous replacement location is kept during @code{query-replace}.
+
address@hidden C-r
+to enter a recursive editing level, in case the occurrence needs to be
+edited rather than just replaced with @var{newstring}.  When you are
+done, exit the recursive editing level with @kbd{C-M-c} and the next
+occurrence will be displayed.  @xref{Recursive Edit}.
+
address@hidden C-w
+to delete the occurrence, and then enter a recursive editing level as
+in @kbd{C-r}.  Use the recursive edit to insert text to replace the
+deleted occurrence of @var{string}.  When done, exit the recursive
+editing level with @kbd{C-M-c} and the next occurrence will be
+displayed.
+
address@hidden C-l
+to redisplay the screen and then give another answer.
+
address@hidden C-h
+to display a message summarizing these options, then give another
+answer.
address@hidden table
+
+  If you type any other character, Emacs exits the @code{query-replace}, and
+executes the character as a command.  To restart the @code{query-replace},
+use @kbd{C-x @key{ESC} @key{ESC}}, which repeats the @code{query-replace} 
because it
+used the minibuffer to read its arguments.  @xref{Repetition, C-x ESC ESC}.
+
address@hidden Other Repeating Search,, Replace, Search
address@hidden Other Search-and-Loop Commands
+
+  Here are some other commands that find matches for a regular expression.
+They all operate from point to the end of the buffer.
+
address@hidden list-matching-lines
address@hidden occur
address@hidden count-matches
address@hidden delete-non-matching-lines
address@hidden delete-matching-lines
address@hidden grosscommands
address@hidden @kbd
address@hidden M-x occur
+Print each line that follows point and contains a match for the
+specified regexp.  A numeric argument specifies the number of context
+lines to print before and after each matching line; the default is
+none.
+
address@hidden C-c C-c (Occur mode)
+The buffer @samp{*Occur*} containing the output serves as a menu for
+finding occurrences in their original context.  Find an occurrence
+as listed in @samp{*Occur*}, position point there, and type @kbd{C-c
+C-c}; this switches to the buffer that was searched and moves point to
+the original of the same occurrence.
+
address@hidden M-x list-matching-lines
+Synonym for @kbd{M-x occur}.
+
address@hidden M-x count-matches
+Print the number of matches following point for the specified regexp.
+
address@hidden M-x delete-non-matching-lines
+Delete each line that follows point and does not contain a match for
+the specified regexp.
+
address@hidden M-x delete-matching-lines
+Delete each line that follows point and contains a match for the
+specified regexp.
address@hidden table
+
address@hidden Fixit, Files, Search, Top
address@hidden Commands for Fixing Typos
address@hidden typos
address@hidden mistakes, correcting
+
+  This chapter describes commands that are especially useful when you
+catch a mistake in your text just after you have made it, or when you 
+change your mind while composing text on line.
+
address@hidden
+* Kill Errors:: Commands to kill a batch of recently entered text.
+* Transpose::   Exchanging two characters, words, lines, lists...
+* Fixing Case:: Correcting case of last word entered.
+* Spelling::    Apply spelling checker to a word, or a whole file.
address@hidden menu
+
address@hidden Kill Errors, Transpose, Fixit, Fixit
address@hidden Killing Your Mistakes
+
address@hidden @kbd
address@hidden @key{DEL}
+Delete last character (@code{delete-backward-char}).
address@hidden address@hidden
+Kill last word (@code{backward-kill-word}).
address@hidden C-x @key{DEL}
+Kill to beginning of sentence (@code{backward-kill-sentence}).
address@hidden table
+
address@hidden DEL
address@hidden delete-backward-char
+  The @key{DEL} character (@code{delete-backward-char}) is the most
+important correction command.  When used among graphic (self-inserting)
+characters, it can be thought of as canceling the last character typed.
+
address@hidden M-DEL
address@hidden C-x DEL
address@hidden backward-kill-word
address@hidden backward-kill-sentence
+  When your mistake is longer than a couple of characters, it might be more
+convenient to use @address@hidden or @kbd{C-x @key{DEL}}.
address@hidden@key{DEL}} kills back to the start of the last word, and @kbd{C-x
address@hidden kills back to the start of the last sentence.  @kbd{C-x
address@hidden is particularly useful when you are thinking of what to write as
+you type it, in case you change your mind about phrasing.
address@hidden@key{DEL}} and @kbd{C-x @key{DEL}} save the killed text for
address@hidden and @kbd{M-y} to retrieve.  @address@hidden
+
+  @address@hidden is often useful even when you have typed only a few
+characters wrong, if you know you are confused in your typing and aren't
+sure exactly what you typed.  At such a time, you cannot correct with
address@hidden except by looking at the screen to see what you did.  It requires
+less thought to kill the whole word and start over.
+
address@hidden Transpose, Fixing Case, Kill Errors, Fixit
address@hidden Transposing Text
+
address@hidden @kbd
address@hidden C-t
+Transpose two characters (@code{transpose-chars}).
address@hidden M-t
+Transpose two words (@code{transpose-words}).
address@hidden C-M-t
+Transpose two balanced expressions (@code{transpose-sexps}).
address@hidden C-x C-t
+Transpose two lines (@code{transpose-lines}).
address@hidden table
+
address@hidden transposition
address@hidden C-t
address@hidden transpose-chars
+  The common error of transposing two adjacent characters can be fixed
+with the @kbd{C-t} command (@code{transpose-chars}).  Normally,
address@hidden transposes the two characters on either side of point.  When
+given at the end of a line, @kbd{C-t} transposes the last two characters
+on the line, rather than transposing the last character of the line with
+the newline, which would be useless.  If you catch a
+transposition error right away, you can fix it with just @kbd{C-t}.
+If you catch the error later,  move the cursor back to between
+the two transposed characters.  If you transposed a space with the last
+character of the word before it, the word motion commands are a good way
+of getting there.  Otherwise, a reverse search (@kbd{C-r}) is often the
+best way.  @xref{Search}.
+
address@hidden C-x C-t
address@hidden transpose-lines
address@hidden M-t
address@hidden transpose-words
address@hidden C-M-t
address@hidden transpose-sexps
+  @kbd{Meta-t} (@code{transpose-words}) transposes the word before point
+with the word after point.  It moves point forward over a word, dragging
+the word preceding or containing point forward as well.  The punctuation
+characters between the words do not move.  For example, @address@hidden, BAR}}
+transposes into @address@hidden, FOO}} rather than @address@hidden FOO,}}.
+
+  @kbd{C-M-t} (@code{transpose-sexps}) is a similar command for transposing
+two expressions (@pxref{Lists}), and @kbd{C-x C-t} (@code{transpose-lines})
+exchanges lines.  It works like @kbd{M-t} but in determines the
+division of the text into syntactic units differently.
+
+  A numeric argument to a transpose command serves as a repeat count: it
+tells the transpose command to move the character (word, sexp, line) before
+or containing point across several other characters (words, sexps, lines).
+For example, @kbd{C-u 3 C-t} moves the character before point forward
+across three other characters.  This is equivalent to repeating @kbd{C-t}
+three times.  @kbd{C-u - 4 M-t} moves the word before point backward across
+four words.  @kbd{C-u - C-M-t} would cancel the effect of plain
address@hidden@refill
+
+  A numeric argument of zero transposes the character (word, sexp, line)
+ending after point with the one ending after the mark (otherwise a
+command with a repeat count of zero would do nothing).
+
address@hidden Fixing Case, Spelling, Transpose, Fixit
address@hidden Case Conversion
+
address@hidden @kbd
address@hidden M-- M-l
+Convert last word to lower case.  Note that @kbd{Meta--} is ``Meta-minus.''
address@hidden M-- M-u
+Convert last word to all upper case.
address@hidden M-- M-c
+Convert last word to lower case with capital initial.
address@hidden table
+
address@hidden downcase-word
address@hidden upcase-word
address@hidden capitalize-word
address@hidden address@hidden M-l
address@hidden address@hidden M-u
address@hidden address@hidden M-c
address@hidden case conversion
address@hidden words
+  A  common error is to type words in the wrong case.  Because of this,
+the word case-conversion commands @kbd{M-l}, @kbd{M-u}, and @kbd{M-c} do
+not move the cursor when used with a negative argument.
+As soon as you see you have mistyped the last word, you can simply
+case-convert it and continue typing.  @address@hidden
+
address@hidden Spelling,, Fixing Case, Fixit
address@hidden Checking and Correcting Spelling
address@hidden spelling
+
address@hidden doublewidecommands
address@hidden @kbd
address@hidden M-$
+Check and correct spelling of word (@code{spell-word}).
address@hidden M-x spell-buffer
+Check and correct spelling of each word in the buffer.
address@hidden M-x spell-region
+Check and correct spelling of each word in the region.
address@hidden M-x spell-string
+Check spelling of specified word.
address@hidden table
+
address@hidden M-$
address@hidden spell-word
+  To check the spelling of the word before point, and optionally correct
+it, use the command @kbd{M-$} (@code{spell-word}).  This command runs an
+inferior process containing the @code{spell} program to see whether the
+word is correct English.  If it is not, it asks you to edit the word (in
+the minibuffer) into a corrected spelling, and then performs a
address@hidden to substitute the corrected spelling for the old
+one throughout the buffer.
+
+  If you exit the minibuffer without altering the original spelling, it
+means you do not want to do anything to that word.  In that case, the
address@hidden is not done.
+
address@hidden spell-buffer
+  @kbd{M-x spell-buffer} checks each word in the buffer the same way that
address@hidden does, doing a @code{query-replace} for
+every incorrect word if address@hidden
+
address@hidden spell-region
+  @kbd{M-x spell-region} is similar to @code{spell-buffer} but operates
+only on the region, not the entire buffer.
+
address@hidden spell-string
+  @kbd{M-x spell-string} reads a string as an argument and checks
+whether that is a correctly spelled English word.  It prints a message
+giving the answer in the echo area.
+
address@hidden Files, Buffers, Fixit, Top
address@hidden File Handling
address@hidden files
+
+  The basic unit of stored data in Unix is the @dfn{file}.  To edit a file,
+you must tell Emacs to examine the file and prepare a buffer containing a
+copy of the file's text.  This is called @dfn{visiting} the file.  Editing
+commands apply directly to text in the buffer; that is, to the copy inside
+Emacs.  Your changes appear in the file itself only when you @dfn{save} the
+buffer back into the file.
+
address@hidden files, remote
address@hidden remote files
+  Emacs is also able to handle ``remote files'' which are stored on
+other hosts.  Not only is Emacs somewhat aware of the special issues
+involved with network file systems, but it can also use FTP and ssh (or
+rsh) to make local copies of the files, and refresh them on the remote
+host automatically when you save the buffer.  The FTP interface is
+provided by the standard @samp{efs} package @ref{Top, EFS, , efs}.  The
+ssh/rsh interface is provided by the optional @samp{tramp} package
address@hidden, TRAMP, , tramp}.  These packages attempt to implement all of
+the operations described below, making remote file use transparent
+(except for unavoidable network delays).
+
+  In addition to visiting and saving files, Emacs can delete, copy, rename,
+and append to files, and operate on file directories.
+
address@hidden
+* File Names::       How to type and edit file name arguments.
+* Visiting::         Visiting a file prepares Emacs to edit the file.
+* Saving::           Saving makes your changes permanent.
+* Reverting::        Reverting cancels all the changes not saved.
+* Auto Save::        Auto Save periodically protects against loss of data.
+* Version Control::  Version control systems (RCS and SCCS).
+* ListDir::          Listing the contents of a file directory.
+* Comparing Files::  Finding where two files differ.
+* Dired::            ``Editing'' a directory to delete, rename, etc.
+                     the files in it.
+* Misc File Ops::    Other things you can do on files.
address@hidden menu
+
address@hidden File Names, Visiting, Files, Files
address@hidden File Names
address@hidden file names
+
+  Most Emacs commands that operate on a file require you to specify the
+file name.  (Saving and reverting are exceptions; the buffer knows which
+file name to use for them.)  File names are specified in the minibuffer
+(@pxref{Minibuffer}).  @dfn{Completion} is available, to make it easier to
+specify long file names.  @xref{Completion}.
+
+  There is always a @dfn{default file name} which is used if you
+enter an empty argument by typing just @key{RET}.  Normally the default
+file name is the name of the file visited in the current buffer; this
+makes it easy to operate on that file with any of the Emacs file
+commands.
+
+The syntax for accessing remote files unfortunately varies depending on
+the method used.  The syntax for using FTP is
address@hidden/@var{user}@@@var{remote-host}:@var{path-on-remote-host}}.  The
+syntax for using ssh is
address@hidden/address@hidden@@@address@hidden
+
+  In both cases the @address@hidden@@} portion is optional (it defaults
+to your local user name).  @var{path-on-remote-host} may use the
address@hidden notation to indicate @var{user}'s home directory on the remote
+host.  The default file name will reflect the remote host information.
+
address@hidden default-directory
+  Each buffer has a default directory, normally the same as the
+directory of the file visited in that buffer.  When Emacs reads a file
+name, the default directory is used if you do not specify a directory.
+If you specify a directory in a relative fashion, with a name that does
+not start with a slash, it is interpreted with respect to the default
+directory.  The default directory of the current buffer is kept in the
+variable @code{default-directory}, which has a separate value in every
+buffer.  The value of the variable should end with a slash.
+
+  For example, if the default file name is @file{/u/rms/gnu/gnu.tasks} then
+the default directory is @file{/u/rms/gnu/}.  If you type just @samp{foo},
+which does not specify a directory, it is short for @file{/u/rms/gnu/foo}.
address@hidden/.login} would stand for @file{/u/rms/.login}.  @samp{new/foo}
+would stand for the filename @file{/u/rms/gnu/new/foo}.
+
+  When visiting a remote file via EFS or TRAMP, the remote directory
+becomes the default directory (@pxref{Visiting}) for that buffer, just
+as a local directory would.
+
address@hidden default-directory-alist
+The variable @code{default-directory-alist} takes an alist of major
+modes and their opinions on @code{default-directory} as a Lisp
+expression to evaluate.  A resulting value of @code{nil} is ignored in
+favor of @code{default-directory}.
+
address@hidden make-directory
address@hidden remove-directory
address@hidden creating directories
address@hidden removing directories
+You can create a new directory with the function @code{make-directory},
+which takes as an argument a file name string. The current directory is
+displayed in the minibuffer when the function is called; you can delete
+the old directory name and supply a new directory name. For example, if
+the current directory is @file{/u/rms/gnu}, you can delete @file{gnu}
+and type @file{oryx} and @key{RET} to create @file{/u/rms/oryx}.
+Removing a directory is similar to creating one.  To remove a directory,
+use @code{remove-directory}; it takes one argument, a file name string.
+
+  The command @kbd{M-x pwd} prints the current buffer's default directory,
+and the command @kbd{M-x cd} sets it (to a value read using the
+minibuffer).  A buffer's default directory changes only when the @code{cd}
+command is used.  A file-visiting buffer's default directory is initialized
+to the directory of the file that is visited there.  If a buffer is created
+with @kbd{C-x b}, its default directory is copied from that of the
+buffer that was current at the time.
+
address@hidden insert-default-directory
+  The default directory name actually appears in the minibuffer when the
+minibuffer becomes active to read a file name.  This serves two
+purposes: it shows you what the default is, so that you can type a
+relative file name and know with certainty what it will mean, and it
+allows you to edit the default to specify a different directory.  To
+inhibit the insertion of the default directory, set the variable
address@hidden to @code{nil}.
+
+  Note that it is legitimate to type an absolute file name after you
+enter the minibuffer, ignoring the presence of the default directory
+name.  The final minibuffer contents may look invalid, but that is not
+so.  @xref{Minibuffer File}.
+
+  @samp{$} in a file name is used to substitute environment variables.  For
+example, if you have used the shell command @samp{setenv FOO rms/hacks} to
+set up an environment variable named @samp{FOO}, then you can use
address@hidden/u/$FOO/test.c} or @file{/u/address@hidden@}/test.c} as an 
abbreviation for
address@hidden/u/rms/hacks/test.c}.  The environment variable name consists of 
all
+the alphanumeric characters after the @samp{$}; alternatively, it may be
+enclosed in braces after the @samp{$}.  Note that the @samp{setenv} command
+affects Emacs only if done before Emacs is started.
+
+  To access a file with @samp{$} in its name, type @samp{$$}.  This pair
+is converted to a single @samp{$} at the same time variable substitution
+is performed for single @samp{$}.  The Lisp function that performs the
+substitution is called @code{substitute-in-file-name}.  The substitution
+is performed only on filenames read as such using the minibuffer.
+
address@hidden Visiting, Saving, File Names, Files
address@hidden Visiting Files
address@hidden visiting files
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x C-f
+Visit a file (@code{find-file}).
address@hidden C-x C-v
+Visit a different file instead of the one visited last
+(@code{find-alternate-file}).
address@hidden C-x 4 C-f
+Visit a file, in another window (@code{find-file-other-window}).  Don't
+change this window.
address@hidden C-x 5 C-f
+Visit a file, in another frame (@code{find-file-other-frame}).  Don't
+change this window or frame.
address@hidden table
+
address@hidden files
address@hidden visiting
address@hidden saving
+  @dfn{Visiting} a file means copying its contents into an Emacs buffer
+so you can edit it.  Emacs creates a new buffer for each file you
+visit.  We say that the buffer is visiting the file that it was created
+to hold.  Emacs constructs the buffer name from the file name by
+throwing away the directory and keeping just the file name.  For example,
+a file named @file{/usr/rms/emacs.tex} is displayed in a buffer named
address@hidden  If a buffer with that name exists, a unique
+name is constructed by appending @samp{<2>}, @samp{<3>},and so on, using
+the lowest number that makes a name that is not already in use.
+
+  Each window's mode line shows the name of the buffer that is being displayed
+in that window, so you can always tell what buffer you are editing.
+
+  The changes you make with Emacs are made in the Emacs buffer.  They do
+not take effect in the file that you visit, or any other permanent
+place, until you @dfn{save} the buffer.  Saving the buffer means that
+Emacs writes the current contents of the buffer into its visited file.
address@hidden
+
address@hidden modified (buffer)
+  If a buffer contains changes that have not been saved, the buffer is said
+to be @dfn{modified}.  This is important because it implies that some
+changes will be lost if the buffer is not saved.  The mode line displays
+two stars near the left margin if the buffer is modified.
+
address@hidden C-x 5 C-f
address@hidden find-file
address@hidden find-file-other-frame
+  To visit a file, use the command @kbd{C-x C-f} (@code{find-file}).  Follow
+the command with the name of the file you wish to visit, terminated by a
address@hidden  If you are using XEmacs under X, you can also use the
address@hidden command from the @b{File} menu bar item. 
+
+  The file name is read using the minibuffer (@pxref{Minibuffer}), with
+defaulting and completion in the standard manner (@pxref{File Names}).
+While in the minibuffer, you can abort @kbd{C-x C-f} by typing @kbd{C-g}.
+
+  @kbd{C-x C-f} has completed successfully when text appears on the
+screen and a new buffer name appears in the mode line.  If the specified
+file does not exist and could not be created or cannot be read, an error
+results.  The error message is printed in the echo area, and includes
+the name of the file that Emacs was trying to visit.
+
+  If you visit a file that is already in Emacs, @kbd{C-x C-f} does not make
+another copy.  It selects the existing buffer containing that file.
+However, before doing so, it checks that the file itself has not changed
+since you visited or saved it last.  If the file has changed, Emacs
+prints a warning message.  @xref{Interlocking,,Simultaneous Editing}.
+
address@hidden find-this-file
+You can switch to a specific file called out in the current buffer by
+calling the function @code{find-this-file}. By providing a prefix
+argument, this function calls @code{filename-at-point} and switches to a
+buffer visiting the file @var{filename}. It creates one if none already
+exists. You can use this function to edit the file mentioned in the
+buffer you are working in or to test if the file exists. You can do that
+by using the minibuffer completion after snatching the all or part of
+the filename.
+
address@hidden find-file-use-truenames
address@hidden buffer-file-name
+If the variable @code{find-file-use-truenames}'s value is
address@hidden, a buffer's visited filename will always be traced back
+to the real file. The filename will never be a symbolic link, and there
+will never be a symbolic link anywhere in its directory path. In other
+words, the @code{buffer-file-name} and @code{buffer-file-truename} will
+be equal.
+
address@hidden find-file-compare-truenames
address@hidden buffer-file-truename
+If the variable @code{find-file-compare-truenames} value is
address@hidden, the @code{find-file} command will check the
address@hidden of all visited files when deciding whether a
+given file is already in a buffer, instead of just
address@hidden  If you attempt to visit another file which is
+a symbolic link to a file that is already in a buffer, the existing
+buffer will be found instead of a newly created one.  This works if any
+component of the pathname (including a non-terminal component) is a
+symbolic link as well, but doesn't work with hard links (nothing does).
+
address@hidden creating files
+   If you want to create a file, just visit it.  Emacs prints
address@hidden(New File)} in the echo area, but in other respects behaves as if 
you
+had visited an existing empty file.  If you make any changes and save them,
+the file is created.
+
address@hidden C-x C-v
address@hidden find-alternate-file
+  If you visit a nonexistent file unintentionally (because you typed the
+wrong file name), use the @kbd{C-x C-v} (@code{find-alternate-file})
+command to visit the file you wanted.  @kbd{C-x C-v} is similar to @kbd{C-x
+C-f}, but it kills the current buffer (after first offering to save it if
+it is modified).  @kbd{C-x C-v} is allowed even if the current buffer
+is not visiting a file.
+
address@hidden find-file-run-dired
+  If the file you specify is actually a directory, Dired is called on
+that directory (@pxref{Dired}).  To inhibit this, set the variable
address@hidden to @code{nil}; then it is an error to try to
+visit a directory.
+
address@hidden C-x 4 f
address@hidden find-file-other-window
+  @kbd{C-x 4 f} (@code{find-file-other-window}) is like @kbd{C-x C-f}
+except that the buffer containing the specified file is selected in another
+window.  The window that was selected before @kbd{C-x 4 f} continues to
+show the same buffer it was already showing.  If you use this command when
+only one window is being displayed, that window is split in two, with one
+window showing the same buffer as before, and the other one showing the
+newly requested file.  @xref{Windows}.
+
address@hidden C-x 5 C-f
address@hidden find-file-other-frame
address@hidden 5 C-f} (@code{find-file-other-frame}) is like @kbd{C-x C-f}
+except that it creates a new frame in which the file is displayed.
+
address@hidden find-this-file-other-window
+ Use the function @code{find-this-file-other-window} to edit a file
+mentioned in the buffer you are editing or to test if that file exists.
+To do this, use the minibuffer completion after snatching the part or
+all of the filename. By providing a prefix argument, the function calls
address@hidden and switches you to a buffer visiting the file
address@hidden in another window. The function creates a buffer if none
+already exists. This function is similar to @code{find-file-other-window}.
+
address@hidden find-file-hooks
address@hidden find-file-not-found-hooks
+  There are two hook variables that allow extensions to modify the
+operation of visiting files.  Visiting a file that does not exist runs the
+functions in the list @code{find-file-not-found-hooks}; the value of this
+variable is expected to be a list of functions which are
+called one by one until one of them returns address@hidden  Any visiting
+of a file, whether extant or not, expects @code{find-file-hooks} to
+contain list of functions and calls them all, one by one.  In both cases
+the functions receive no arguments.  Visiting a nonexistent file
+runs the @code{find-file-not-found-hooks} first.
+
address@hidden Saving, Reverting, Visiting, Files
address@hidden Saving Files
+
+  @dfn{Saving} a buffer in Emacs means writing its contents back into the file
+that was visited in the buffer.
+
address@hidden @kbd
address@hidden C-x C-s
+Save the current buffer in its visited file (@code{save-buffer}).
address@hidden C-x s
+Save any or all buffers in their visited files (@code{save-some-buffers}).
address@hidden M-~
+Forget that the current buffer has been changed (@code{not-modified}).
address@hidden C-x C-w
+Save the current buffer in a specified file, and record that file as
+the one visited in the buffer (@code{write-file}).
address@hidden M-x set-visited-file-name
+Change file the name under which the current buffer will be saved.
address@hidden table
+
address@hidden C-x C-s
address@hidden save-buffer
+  To save a file and make your changes permanent, type
address@hidden C-s} (@code{save-buffer}).  After saving is finished, @kbd{C-x 
C-s}
+prints a message such as:
+
address@hidden
+Wrote /u/rms/gnu/gnu.tasks
address@hidden example
+
address@hidden
+If the selected buffer is not modified (no changes have been made in it
+since the buffer was created or last saved), Emacs does not save it
+because it would have no effect.  Instead, @kbd{C-x C-s} prints a message
+in the echo area saying:
+
address@hidden
+(No changes need to be saved)
address@hidden example
+
address@hidden C-x s
address@hidden save-some-buffers
+  The command @kbd{C-x s} (@code{save-some-buffers}) can save any or all
+modified buffers.  First it asks, for each modified buffer, whether to
+save it.  The questions should be answered with @kbd{y} or @kbd{n}.
address@hidden C-c}, the key that kills Emacs, invokes
address@hidden and therefore asks the same questions.
+
address@hidden M-~
address@hidden not-modified
+  If you have changed a buffer and do not want the changes to be saved,
+you should take some action to prevent it.  Otherwise, you are liable to
+save it by mistake each time you use @code{save-some-buffers} or a
+related command.  One thing you can do is type @kbd{M-~}
+(@code{not-modified}), which removes the indication that the buffer
+is modified.  If you do this, none of the save commands will believe
+that the buffer needs to be saved.  (@samp{~} is often used as a
+mathematical symbol for `not'; thus @kbd{Meta-~} is `not', metafied.)
+You could also use @code{set-visited-file-name} (see below) to mark the
+buffer as visiting a different file name, not in use for
+anything important. 
+
+You can also undo all the changes made since the file was visited or
+saved, by reading the text from the file again.  This is called
address@hidden  @xref{Reverting}.  Alternatively, you can undo all the
+changes by repeating the undo command @kbd{C-x u}; but this only works
+if you have not made more changes than the undo mechanism can remember.
+
address@hidden set-visited-file-name
+  @kbd{M-x set-visited-file-name} alters the name of the file that the
+current buffer is visiting.  It prompts you for the new file name in the
+minibuffer.  You can also use @code{set-visited-file-name} on a buffer
+that is not visiting a file.  The buffer's name is changed to correspond
+to the file it is now visiting unless the new name is already used by a
+different buffer; in that case, the buffer name is not changed.
address@hidden does not save the buffer in the newly
+visited file; it just alters the records inside Emacs so that it will
+save the buffer in that file.  It also marks the buffer as ``modified''
+so that @kbd{C-x C-s} @i{will} save.
+
address@hidden C-x C-w
address@hidden write-file
+  If you wish to mark a buffer as visiting a different file and save it
+right away, use @kbd{C-x C-w} (@code{write-file}).  It is precisely
+equivalent to @code{set-visited-file-name} followed by @kbd{C-x C-s}.
address@hidden C-s} used on a buffer that is not visiting  a file has the
+same effect as @kbd{C-x C-w}; that is, it reads a file name, marks the
+buffer as visiting that file, and saves it there.  The default file name in
+a buffer that is not visiting a file is made by combining the buffer name
+with the buffer's default directory.
+
+  If Emacs is about to save a file and sees that the date of the latest
+version on disk does not match what Emacs last read or wrote, Emacs
+notifies you of this fact, because it probably indicates a problem caused
+by simultaneous editing and requires your immediate attention.
address@hidden,, Simultaneous Editing}.
+
address@hidden require-final-newline
+  If the variable @code{require-final-newline} is address@hidden, Emacs
+puts a newline at the end of any file that doesn't already end in one,
+every time a file is saved or written.
+
address@hidden write-file-hooks
address@hidden after-save-hook
+  Use the hook variable @code{write-file-hooks} to implement other ways
+to write files, and specify things to be done before files are written.  The
+value of this variable should be a list of Lisp functions.  When a file
+is to be written, the functions in the list are called, one by one, with
+no arguments.  If one of them returns a address@hidden value, Emacs
+takes this to mean that the file has been written in some suitable
+fashion; the rest of the functions are not called, and normal writing is
+not done. Use the hook variable @code{after-save-hook} to list
+all the functions to be called after writing out a buffer to a file.
+
address@hidden
+* Backup::       How Emacs saves the old version of your file.
+* Interlocking:: How Emacs protects against simultaneous editing
+                  of one file by two users.
address@hidden menu
+
address@hidden Backup, Interlocking, Saving, Saving
address@hidden Backup Files
address@hidden backup file
address@hidden make-backup-files
+
+  Because Unix does not provide version numbers in file names, rewriting a
+file in Unix automatically destroys all record of what the file used to
+contain.  Thus, saving a file from Emacs throws away the old contents of
+the file---or it would, except that Emacs carefully copies the old contents
+to another file, called the @dfn{backup} file, before actually saving.
+(Make sure that the variable @code{make-backup-files} is address@hidden
+Backup files are not written if this variable is @code{nil}).
+
+  At your option, Emacs can keep either a single backup file or a series of
+numbered backup files for each file you edit.
+
+  Emacs makes a backup for a file only the first time a file is saved
+from one buffer.  No matter how many times you save a file, its backup file
+continues to contain the contents from before the file was visited.
+Normally this means that the backup file contains the contents from before
+the current editing session; however, if you kill the buffer and then visit
+the file again, a new backup file is made by the next save.
+
address@hidden
+* Names: Backup Names.         How backup files are named;
+                               Choosing single or numbered backup files.
+* Deletion: Backup Deletion.   Emacs deletes excess numbered backups.
+* Copying: Backup Copying.     Backups can be made by copying or renaming.
address@hidden menu
+
address@hidden Backup Names, Backup Deletion, Backup, Backup
address@hidden Single or Numbered Backups
+
+  If you choose to have a single backup file (the default),
+the backup file's name is constructed by appending @samp{~} to the
+file name being edited; thus, the backup file for @file{eval.c} is
address@hidden
+
+  If you choose to have a series of numbered backup files, backup file
+names are made by appending @samp{.~}, the number, and another @samp{~} to
+the original file name.  Thus, the backup files of @file{eval.c} would be
+called @file{eval.c.~1~}, @file{eval.c.~2~}, and so on, through names
+like @file{eval.c.~259~} and beyond.
+
+  If protection stops you from writing backup files under the usual names,
+the backup file is written as @file{%backup%~} in your home directory.
+Only one such file can exist, so only the most recently made backup is
+available.
+
address@hidden version-control
+  The choice of single backup or numbered backups is controlled by the
+variable @code{version-control}.  Its possible values are:
+
address@hidden @code
address@hidden t
+Make numbered backups.
address@hidden nil
+Make numbered backups for files that have numbered backups already.
+Otherwise, make single backups.
address@hidden never
+Never make numbered backups; always make single backups.
address@hidden table
+
address@hidden
address@hidden may be set locally in an individual buffer to
+control the making of backups for that buffer's file.  For example,
+Rmail mode locally sets @code{version-control} to @code{never} to make sure
+that there is only one backup for an Rmail file.  @xref{Locals}.
+
address@hidden Backup Deletion, Backup Copying, Backup Names, Backup
address@hidden Automatic Deletion of Backups
+
address@hidden kept-old-versions
address@hidden kept-new-versions
+  To prevent unlimited consumption of disk space, Emacs can delete numbered
+backup versions automatically.  Generally Emacs keeps the first few backups
+and the latest few backups, deleting any in between.  This happens every
+time a new backup is made.  The two variables that control the deletion are
address@hidden and @code{kept-new-versions}.  Their values are, respectively
+the number of oldest (lowest-numbered) backups to keep and the number of
+newest (highest-numbered) ones to keep, each time a new backup is made.
+The values are used just after a new backup version is made;
+that newly made backup is included in the count in @code{kept-new-versions}.
+By default, both variables are 2.
+
address@hidden delete-old-versions
+  If @code{delete-old-versions} is address@hidden,  excess
+middle versions are deleted without notification.  If it is @code{nil}, the
+default, you are asked whether the excess middle versions should
+really be deleted.
+
+  You can also use Dired's @kbd{.} (Period) command to delete old versions.
address@hidden
+
address@hidden Backup Copying,  , Backup Deletion, Backup
address@hidden Copying vs.@: Renaming
+
+  You can make backup files by copying the old file or by renaming it.
+This makes a difference when the old file has multiple names.  If you
+rename the old file into the backup file, the alternate names
+become names for the backup file.  If you copy the old file instead,
+the alternate names remain names for the file that you are editing,
+and the contents accessed by those names will be the new contents.
+
+  How you make a backup file may also affect the file's owner
+and group.  If you use copying, they do not change.  If renaming is used,
+you become the file's owner, and the file's group becomes the default
+(different operating systems have different defaults for the group).
+
+  Having the owner change is usually a good idea, because then the owner
+is always the person who last edited the file.  Occasionally there is a 
+file whose owner should not change.  Since most files should change
+owners, it is a good idea to use local variable lists to set 
address@hidden for the special cases where the 
+owner should not change (@pxref{File Variables}).
+
address@hidden backup-by-copying
address@hidden backup-by-copying-when-linked
address@hidden backup-by-copying-when-mismatch
+  Three variables control the choice of renaming or copying.
+Normally, renaming is done.  If the variable @code{backup-by-copying} is
address@hidden, copying is used.  Otherwise, if the variable
address@hidden is address@hidden, copying is
+done for files that have multiple names, but renaming may still be done when
+the file being edited has only one name.  If the variable
address@hidden is address@hidden, copying is
+done if renaming would cause the file's owner or group to change.  @refill
+
address@hidden Interlocking,  , Backup, Saving
address@hidden Protection Against Simultaneous Editing
+
address@hidden file dates
address@hidden simultaneous editing
+  Simultaneous editing occurs when two users visit the same file, both
+make changes, and both save their changes.  If no one was informed that
+this was happening, and you saved first, you would later find that your
+changes were lost.  On some systems, Emacs notices immediately when the
+second user starts to change a file already being edited, and issues a
+warning.  When this is not possible, or if the second user has started
+to change the file despite the warning, Emacs checks when the file is
+saved, and issues a second warning when a user is about to overwrite a
+file containing another user's changes.  If you are the user editing the
+file, you can take corrective action at this point and prevent actual
+loss of work.
+
address@hidden ask-user-about-lock
+  When you make the first modification in an Emacs buffer that is visiting
+a file, Emacs records that you have locked the file.  (It does this by
+writing another file in a directory reserved for this purpose.)  The lock
+is removed when you save the changes.  The idea is that the file is locked
+whenever the buffer is modified.  If you begin to modify the buffer while
+the visited file is locked by someone else, this constitutes a collision,
+and Emacs asks you what to do.  It does this by calling the Lisp function
address@hidden, which you can redefine to customize what it
+does.  The standard definition of this function asks you a
+question and accepts three possible answers:
+
address@hidden @kbd
address@hidden s
+Steal the lock.  Whoever was already changing the file loses the lock,
+and you get the lock.
address@hidden p
+Proceed.  Go ahead and edit the file despite its being locked by someone else.
address@hidden q
+Quit.  This causes an error (@code{file-locked}) and the modification you
+were trying to make in the buffer does not actually take place.
address@hidden table
+
+  Note that locking works on the basis of a file name; if a file has
+multiple names, Emacs does not realize that the two names are the same file
+and cannot prevent two users from editing it simultaneously under different
+names.  However, basing locking on names means that Emacs can interlock the
+editing of new files that do not really exist until they are saved.
+
+  Some systems are not configured to allow Emacs to make locks.  On
+these systems, Emacs cannot detect trouble in advance, but it can still
+detect it in time to prevent you from overwriting someone else's changes.
+
+  Every time Emacs saves a buffer, it first checks the last-modification
+date of the existing file on disk to see that it has not changed since the
+file was last visited or saved.  If the date does not match, it implies
+that changes were made in the file in some other way, and these changes are
+about to be lost if Emacs actually does save.  To prevent this, Emacs
+prints a warning message and asks for confirmation before saving.
+Occasionally you will know why the file was changed and know that it does
+not matter; then you can answer @kbd{yes} and proceed.  Otherwise, you should
+cancel the save with @kbd{C-g} and investigate the situation.
+
+  The first thing you should do when notified that simultaneous editing
+has already taken place is to list the directory with @kbd{C-u C-x C-d}
+(@pxref{ListDir,,Directory Listing}).  This will show the file's current
+author.  You should attempt to contact that person and ask him not to
+continue editing.  Often the next step is to save the contents of your
+Emacs buffer under a different name, and use @code{diff} to compare the
+two address@hidden
+
+  Simultaneous editing checks are also made when you visit a file that
+is already visited with @kbd{C-x C-f} and when you start to modify a
+file.  This is not strictly necessary, but it is useful to find out
+about such a problem as early as possible, when corrective action takes
+less work.
+
address@hidden set-default-file-modes
address@hidden file protection
+Another way to protect your file is to set the read, write, and
+executable permissions for the file. Use the function
address@hidden to set the UNIX @code{umask} value to the
address@hidden argument. The @code{umask} value is the default protection
+mode for new files.
+
address@hidden Reverting, Auto Save, Saving, Files
address@hidden Reverting a Buffer
address@hidden revert-buffer
address@hidden drastic changes
+
+  If you have made extensive changes to a file and then change your mind
+about them, you can get rid of all changes by reading in the previous
+version of the file.  To do this, use @kbd{M-x revert-buffer}, which
+operates on the current buffer.  Since reverting a buffer can result in
+very extensive changes, you must confirm it with @kbd{yes}.
+
+  You may request that @code{revert-buffer} check for an auto-save file
+that is more recent than the visited file by providing a prefix
+argument.  If a recent auto-save file exists, @code{revert-buffer}
+offers to read the auto-save file instead of the visited file
+(@pxref{Auto Save}).  Emacs asks you about the auto-save file before the
+request for confirmation of the @kbd{revert-buffer} operation, and
+demands @kbd{y} or @kbd{n} as an answer.  If you have started to type
address@hidden to confirm the revert operation, the @kbd{y} will answer the
+question about using the auto-save file, but the @kbd{es} will not be
+valid confirmation for the reversion.  This gives you a chance to cancel
+the operation with @kbd{C-g} and try again with the answers you really
+intend.
+
+  @code{revert-buffer} preserves the value of point (in characters from
+the beginning of the file).  If the file was edited only slightly, you
+will be at approximately the same piece of text after reverting as
+before.  If you have made more extensive changes, after reversion point
+may be in a totally different context than your last edits before
+reversion.
+
+A buffer reverted from its visited file is marked ``not modified'' until
+you make a change.  The buffer's modes will also be recalculated, by
address@hidden
+
+  Some kinds of buffers whose contents reflect data bases other than files,
+such as Dired buffers, can also be reverted.  For them, reverting means
+refreshing their contents from the appropriate data.  Buffers created
+randomly with @kbd{C-x b} cannot be reverted; @code{revert-buffer}
+reports an error when asked to do so.
+
address@hidden Auto Save, Version Control, Reverting, Files
address@hidden Auto-Saving: Protection Against Disasters
address@hidden Auto-Save mode
address@hidden crashes
+
+  Emacs saves all the visited files from time to time (based on counting
+your keystrokes) without being asked.  This is called @dfn{auto-saving}.
+It prevents you from losing more than a limited amount of work if the
+system crashes.
+
+  When Emacs determines it is time for auto-saving, each buffer is
+considered and is auto-saved if auto-saving is turned on for it and it has
+changed since the last time it was auto-saved.  If any auto-saving is
+done, the message @samp{Auto-saving...} is displayed in the echo area until
+auto-saving is finished.  Errors occurring during auto-saving are caught
+so that they do not interfere with the execution of commands you have been
+typing.
+
address@hidden
+* Files: Auto Save Files.
+* Control: Auto Save Control.
+* Recover::            Recovering text from auto-save files.
address@hidden menu
+
address@hidden Auto Save Files, Auto Save Control, Auto Save, Auto Save
address@hidden Auto-Save Files
+
+  Auto-saving does not normally write to the files you visited, because
+it can be undesirable to save a program that is in an inconsistent
+state when you have made only half of a planned change.  Instead, auto-saving
+is done in a different file called the @dfn{auto-save file}, and the
+visited file is changed only when you save explicitly, for example, 
+with @kbd{C-x C-s}.
+
+  Normally, the name of the auto-save file is generated by appending
address@hidden to the front and back of the visited file name.  Thus, a buffer
+visiting file @file{foo.c} would be auto-saved in a file @file{#foo.c#}.
+Most buffers that are not visiting files are auto-saved only if you
+request it explicitly; when they are auto-saved, the auto-save file name
+is generated by appending @samp{#%} to the front and @samp{#} to the
+back of buffer name.  For example, the @samp{*mail*} buffer in which you
+compose messages to be sent is auto-saved in a file named
address@hidden  Names of auto-save files are generated this way
+unless you customize the functions @code{make-auto-save-file-name} and
address@hidden to do something different.  The file name
+to be used for auto-saving a buffer is calculated at the time auto-saving is
+turned on in that buffer.
+
address@hidden auto-save-visited-file-name
+  If you want auto-saving to be done in the visited file, set the variable
address@hidden to be address@hidden  In this mode,
+there is really no difference between auto-saving and explicit saving.
+
address@hidden delete-auto-save-files
+  Emacs deletes a buffer's auto-save file when you explicitly save the
+buffer.  To inhibit the deletion, set the variable
address@hidden to @code{nil}.  Changing the visited file
+name with @kbd{C-x C-w} or @code{set-visited-file-name} renames any
+auto-save file to correspond to the new visited name.
+
address@hidden Auto Save Control, Recover, Auto Save Files, Auto Save
address@hidden Controlling Auto-Saving
+
address@hidden auto-save-default
address@hidden auto-save-mode
+  Each time you visit a file, auto-saving is turned on for that file's
+buffer if the variable @code{auto-save-default} is address@hidden (but
+not in batch mode; @pxref{Entering Emacs}).  The default for this
+variable is @code{t}, so Emacs auto-saves buffers that visit files by
+default.  You can use the command @kbd{M-x auto-save-mode} to turn
+auto-saving for a buffer on or off.  Like other minor mode commands,
address@hidden auto-save-mode} turns auto-saving on with a positive argument,
+off with a zero or negative argument; with no argument, it toggles.
+
address@hidden auto-save-interval
address@hidden do-auto-save
+  Emacs performs auto-saving periodically based on counting how many
+characters you have typed since the last time auto-saving happened.  The
+variable @code{auto-save-interval} specifies the number of characters
+between auto-saves.  By default, it is 300.  Emacs also auto-saves
+whenever you call the function @code{do-auto-save}.
+
+  Emacs also does auto-saving whenever it gets a fatal error.  This
+includes killing the Emacs job with a shell command such as @code{kill
+-emacs}, or disconnecting a phone line or network connection.
+
address@hidden auto-save-timeout
+You can set the number of seconds of idle time before an auto-save is
+done. Setting the value of the variable @code{auto-save-timeout} to zero or 
address@hidden will  disable auto-saving due to idleness.
+
+The actual amount of idle time between auto-saves is logarithmically
+related to the size of the current buffer.  This variable is the number
+of seconds after which an auto-save will happen when the current buffer
+is 50k or less; the timeout will be 2 1/4 times this in a 200k buffer, 3
+3/4 times this in a 1000k buffer, and 4 1/2 times this in a 2000k
+buffer.
+
+For this variable to have any effect, you must do @code{(require 'timer)}.
+
address@hidden Recover,  , Auto Save Control, Auto Save
address@hidden Recovering Data from Auto-Saves
+
address@hidden recover-file
+  If you want to use the contents of an auto-save file to recover from a
+loss of data, use the command @kbd{M-x recover-file @key{RET} @var{file}
address@hidden  Emacs visits @var{file} and then (after your confirmation)
+restores the contents from the auto-save file @address@hidden  You
+can then save the file with @kbd{C-x C-s} to put the recovered text into
address@hidden itself.  For example, to recover file @file{foo.c} from its
+auto-save file @file{#foo.c#}, do:@refill
+
address@hidden
+M-x recover-file @key{RET} foo.c @key{RET}
+C-x C-s
address@hidden example
+
+  Before asking for confirmation, @kbd{M-x recover-file} displays a
+directory listing describing the specified file and the auto-save file,
+so you can compare their sizes and dates.  If the auto-save file
+is older, @kbd{M-x recover-file} does not offer to read it.
+
+  Auto-saving is disabled by @kbd{M-x recover-file} because using
+this command implies that the auto-save file contains valuable data
+from a past session.  If you save the data in the visited file and
+then go on to make new changes, turn auto-saving back on
+with @kbd{M-x auto-save-mode}.
+
address@hidden Version Control, ListDir, Auto Save, Files
address@hidden Version Control
address@hidden version control
+
+  @dfn{Version control systems} are packages that can record multiple
+versions of a source file, usually storing the unchanged parts of the
+file just once.  Version control systems also record history information
+such as the creation time of each version, who created it, and a 
+description of what was changed in that version.
+
+  The GNU project recommends the version control system known as RCS,
+which is free software and available from the Free Software Foundation.
+Emacs supports use of either RCS or SCCS (a proprietary, but widely
+used, version control system that is not quite as powerful as RCS)
+through a facility called VC.  The same Emacs commands work with either
+RCS or SCCS, so you hardly have to know which one of them you are
+using.
+
address@hidden
+* Concepts of VC::              Basic version control information;
+                                  checking files in and out.
+* Editing with VC::             Commands for editing a file maintained
+                                  with version control.
+* Variables for Check-in/out::  Variables that affect the commands used
+                                  to check files in or out.
+* Log Entries::                 Logging your changes.
+* Change Logs and VC::          Generating a change log file from log
+                                  entries. 
+* Old Versions::                Examining and comparing old versions.
+* VC Status::                   Commands to view the VC status of files and
+                                  look at log entries.
+* Renaming and VC::             A command to rename both the source and
+                                  master file correctly.
+* Snapshots::                   How to make and use snapshots, a set of
+                                  file versions that can be treated as a unit.
+* Version Headers::             Inserting version control headers into
+                                  working files.
address@hidden menu
+
address@hidden Concepts of VC, Editing with VC, Version Control, Version Control
address@hidden Concepts of Version Control
+
address@hidden RCS
address@hidden SCCS
address@hidden master file
address@hidden registered file
address@hidden work file
+   When a file is under version control, we also say that it is
address@hidden in the version control system.  Each registered file
+has a corresponding @dfn{master file} which represents the file's
+present state plus its change history, so that you can reconstruct from
+it either the current version or any specified earlier version.  Usually
+the master file also records a @dfn{log entry} for each version describing
+what was changed in that version.
+
+  The file that is maintained under version control is sometimes called
+the @dfn{work file} corresponding to its master file.
+
address@hidden checking out files
address@hidden checking in files
address@hidden locking and version control
+   To examine a file, you @dfn{check it out}.  This extracts a version
+of the source file (typically, the most recent) from the master file.
+If you want to edit the file, you must check it out @dfn{locked}.  Only
+one user can do this at a time for any given source file.  (This kind 
+of locking is completely unrelated to the locking that Emacs uses to
+detect simultaneous editing of a file.)
+
+  When you are done with your editing, you must @dfn{check in} the new
+version.  This records the new version in the master file, and unlocks
+the source file so that other people can lock it and thus modify it.
+
+  Checkin and checkout are the basic operations of version control.  You
+can do both of them with a single Emacs command: @address@hidden C-q}}
+(@code{vc-toggle-read-only}).
+
+  A @dfn{snapshot} is a coherent collection of versions of the various
+files that make up a program.  @xref{Snapshots}.
+
address@hidden Editing with VC, Variables for Check-in/out, Concepts of VC, 
Version Control
address@hidden Editing with Version Control
+
+  When you visit a file that is maintained using version control, the
+mode line displays @samp{RCS} or @samp{SCCS} to inform you that version
+control is in use, and also (in case you care) which low-level system
+the file is actually stored in.  Normally, such a source file is
+read-only, and the mode line indicates this with @samp{%%}.  With RCS,
+the mode line also indicates the number of the head version, which is
+normally also the version you are looking at.
+
+  These are the commands for editing a file maintained with
+version control:
+
address@hidden @kbd
address@hidden C-x C-q
+Check the visited file in or out.
+
address@hidden C-x v u
+Revert the buffer and the file to the last checked in version.
+
address@hidden C-x v c
+Remove the last-entered change from the master for the visited file.
+This undoes your last check-in.
+
address@hidden C-x v i
+Register the visited file in version control.
address@hidden table
+
address@hidden
+(@kbd{C-x v} is the prefix key for version control commands; all of these
+commands except for @kbd{C-x C-q} start with @kbd{C-x v}.)
+
address@hidden C-x C-q @r{(version control)}
+  When you want to modify a file maintained with version control, type
address@hidden C-q} (@code{vc-toggle-read-only}).  This @dfn{checks out} the
+file, and tells RCS or SCCS to lock the file.  This means making the
+file writable for you (but not for anyone else).
+
address@hidden log entry
+  When you are finished editing the file, type @kbd{C-x C-q} again.
+When used on a file that is checked out, this command checks the file
+in.  But check-in does not start immediately; first, you must enter the
address@hidden entry}---a description of the changes in the new version.
address@hidden C-q} pops up a buffer for you to enter this in.  When you are
+finished typing in the log entry, type @kbd{C-c C-c} to terminate it; this is
+when actual check-in takes place.
+
+  Once you have checked in your changes, the file is unlocked, so that
+other users can lock it and modify it.
+
address@hidden vc-make-backup-files
+  Emacs does not save backup files for source files that are maintained
+with version control.  If you want to make backup files despite version
+control, set the variable @code{vc-make-backup-files} to a
address@hidden value.
+
address@hidden vc-keep-workfiles
+  Normally the work file exists all the time, whether it is locked or
+not.  If you set @code{vc-keep-workfiles} to @code{nil}, then checking
+in a new version with @kbd{C-x C-q} deletes the work file; but any
+attempt to visit the file with Emacs creates it again.
+
+  It is not impossible to lock a file that someone else has locked.  If
+you try to check out a file that is locked, @kbd{C-x C-q} asks you
+whether you want to ``steal the lock.''  If you say yes, the file
+becomes locked by you, but a message is sent to the person who had
+formerly locked the file, to inform him of what has happened.  The mode
+line indicates that a file is locked by someone else by displaying the
+login name of that person, before the version number.
+
address@hidden C-x v u
address@hidden vc-revert-buffer
+  If you want to discard your current set of changes and revert to the
+last version checked in, use @kbd{C-x v u} (@code{vc-revert-buffer}).
+This cancels your last check-out, leaving the file unlocked.  If you want
+to make a different set of changes, you must first check the file out
+again.  @kbd{C-x v u} requires confirmation, unless it sees that 
+you haven't made any changes since the last checked-in version.
+
+  @kbd{C-x v u} is also the command to use if you lock a file and then
+don't actually change it.
+
address@hidden C-x v c
address@hidden vc-cancel-version
+  You can cancel a change after checking it in, with @kbd{C-x v c}
+(@code{vc-cancel-version}).  This command discards all record of the
+most recent checked in version, so be careful about using it.  It
+requires confirmation with @kbd{yes}.  By default, @kbd{C-x v c} reverts
+your workfile and buffer to the previous version (the one that precedes
+the version that is deleted), but you can prevent the reversion by
+giving the command a prefix argument.  Then the buffer does not change.
+
+  This command with a prefix argument is useful when you have checked in
+a change and then discover a trivial error in it; you can cancel the
+erroneous check-in, fix the error, and repeat the check-in.
+
+  Be careful when invoking @kbd{C-x v c}, as it is easy to throw away a
+lot of work with it.  To help you be careful, this command always
+requires confirmation with @samp{yes}.
+
address@hidden C-x v i
address@hidden vc-register
address@hidden vc-default-back-end
+  You can register the visited file for version control using
address@hidden@kbd{C-x v i}} (@code{vc-register}).  If the variable
address@hidden is address@hidden, it specifies which
+version control system to use; otherwise, this uses RCS if it is
+installed on your system and SCCS if not.  After @kbd{C-x v i},
+the file is unlocked and read-only.  Type @kbd{C-x C-q} if you wish to
+edit it.
+
+  By default, the initial version number is 1.1.  If you want to use a
+different number, give @kbd{C-x v i} a prefix argument; then it reads
+the initial version number using the minibuffer.
+
address@hidden vc-initial-comment
+  If @code{vc-initial-comment} is address@hidden, @kbd{C-x v i} reads
+an initial comment (much like a log entry) to describe the purpose of
+this source file.
+
address@hidden C-u C-x v v
address@hidden vc-next-action
+  To specify the version number for a subsequent checkin, use the
+command @kbd{C-u C-x v v}.  @kbd{C-x v v} (@code{vc-next-action}) is the
+command that @kbd{C-x C-q} uses to do the ``real work'' when the visited
+file uses version control.  When used for checkin, and given a prefix
+argument, it reads the version number with the minibuffer.
+
address@hidden Variables for Check-in/out, Log Entries, Editing with VC, 
Version Control
address@hidden Variables Affecting Check-in and Check-out
address@hidden There is no need to tell users about vc-master-templates.
+
address@hidden vc-suppress-confirm
+  If @code{vc-suppress-confirm} is address@hidden, then @kbd{C-x C-q}
+and @kbd{C-x v i} can save the current buffer without asking, and
address@hidden v u} also operates without asking for confirmation.
+(This variable does not affect @kbd{C-x v c}; that is so drastic
+that it should always ask for confirmation.)
+
address@hidden vc-command-messages
+  VC mode does much of its work by running the shell commands for RCS
+and SCCS.  If @code{vc-command-messages} is address@hidden, VC displays
+messages to indicate which shell commands it runs, and additional
+messages when the commands finish.
+
+  Normally, VC assumes that it can deduce the locked/unlocked state of
+files by looking at the file permissions of the work file; this is
+fast.  However, if the @file{RCS} or @file{SCCS} subdirectory is
+actually a symbolic link, then VC does not trust the file permissions to
+reflect this status.
+
address@hidden vc-mistrust-permissions
+You can specify the criterion for whether to trust the file permissions
+by setting the variable @code{vc-mistrust-permissions}.  Its value may
+be @code{t} (always mistrust the file permissions and check the master
+file), @code{nil} (always trust the file permissions), or a function of
+one argument which makes the decision.  The argument is the directory
+name of the @file{RCS} or @file{SCCS} subdirectory.  A address@hidden
+value from the function says to mistrust the file permissions.
+
+  If you find that the file permissions of work files are changed
+erroneously, set @code{vc-mistrust-permissions} to @code{t}.  Then VC
+always checks the master file to determine the file's status.
+
address@hidden vc-path
+  You can specify additional directories to search for version control
+programs by setting the variable @code{vc-path}.  These directories
+are searched before the usual search path.  The proper result usually
+happens automatically.
+
address@hidden Log Entries, Change Logs and VC, Variables for Check-in/out, 
Version Control
address@hidden Log Entries
+
+  When you're editing an initial comment or log entry for inclusion in a
+master file, finish your entry by typing @kbd{C-c C-c}.
+
address@hidden @kbd
address@hidden C-c C-c
+Finish the comment edit normally (@code{vc-finish-logentry}).
+This finishes check-in.
address@hidden table
+
+  To abort check-in, just don't type @kbd{C-c C-c} in that buffer.  You
+can switch buffers and do other editing.  As long as you don't try to
+check in another file, the entry you were editing remains in its
+buffer, and you can go back to that buffer at any time to complete the
+check-in.
+
+  If you change several source files for the same reason, it is often
+convenient to specify the same log entry for many of the files.  To do
+this, use the history of previous log entries.  The commands @kbd{M-n},
address@hidden, @kbd{M-s} and @kbd{M-r} for doing this work just like the
+minibuffer history commands (except that these versions are used outside
+the minibuffer).
+
address@hidden vc-log-mode-hook
+  Each time you check in a file, the log entry buffer is put into VC Log
+mode, which involves running two hooks: @code{text-mode-hook} and
address@hidden
+
address@hidden Change Logs and VC, Old Versions, Log Entries, Version Control
address@hidden Change Logs and VC
+
+  If you use RCS for a program and also maintain a change log file for
+it (@pxref{Change Log}), you can generate change log entries
+automatically from the version control log entries:
+
address@hidden @kbd
address@hidden C-x v a
address@hidden C-x v a
address@hidden vc-update-change-log
+Visit the current directory's change log file and create new entries for
+versions checked in since the most recent entry in the change log file
+(@code{vc-update-change-log}).
+
+This command works with RCS only; it does not work with SCCS.
address@hidden table
+
+  For example, suppose the first line of @file{ChangeLog} is dated 10
+April 1992, and that the only check-in since then was by Nathaniel
+Bowditch to @file{rcs2log} on 8 May 1992 with log text @samp{Ignore log
+messages that start with `#'.}.  Then @kbd{C-x v a} visits
address@hidden and inserts text like this:
+
address@hidden
address@hidden
+Fri May  8 21:45:00 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * rcs2log: Ignore log messages that start with `#'.
address@hidden group
address@hidden smallexample
+
address@hidden
+You can then edit the new change log entry further as you wish.
+
+  Normally, the log entry for file @file{foo} is displayed as @samp{*
+foo: @var{text of log entry}}.  The @samp{:} after @file{foo} is omitted
+if the text of the log entry starts with @address@hidden(@var{functionname}):
+}}.  For example, if the log entry for @file{vc.el} is
address@hidden(vc-do-command): Check call-process status.}, then the text in
address@hidden looks like this:
+
address@hidden
address@hidden
+Wed May  6 10:53:00 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * vc.el (vc-do-command): Check call-process status.
address@hidden group
address@hidden smallexample
+
+  When @kbd{C-x v a} adds several change log entries at once, it groups
+related log entries together if they all are checked in by the same
+author at nearly the same time.  If the log entries for several such
+files all have the same text, it coalesces them into a single entry.
+For example, suppose the most recent checkins have the following log
+entries:
+
address@hidden
address@hidden For @file{vc.texinfo}:
+Fix expansion typos.
address@hidden For @file{vc.el}:
+Don't call expand-file-name.
address@hidden For @file{vc-hooks.el}:
+Don't call expand-file-name.
address@hidden example
+
+  They appear like this in @file{ChangeLog}:
+
address@hidden
address@hidden
+Wed Apr  1 08:57:59 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * vc.texinfo: Fix expansion typos.
+
+        * vc.el, vc-hooks.el: Don't call expand-file-name.
address@hidden group
address@hidden smallexample
+
+  Normally, @kbd{C-x v a} separates log entries by a blank line, but you
+can mark several related log entries to be clumped together (without an
+intervening blank line) by starting the text of each related log entry
+with a label of the form @address@hidden@address@hidden@} }}.  The label
+itself is not copied to @file{ChangeLog}.  For example, suppose the log
+entries are:
+
address@hidden
address@hidden For @file{vc.texinfo}:
address@hidden@} Fix expansion typos.
address@hidden For @file{vc.el}:
address@hidden@} Don't call expand-file-name.
address@hidden For @file{vc-hooks.el}:
address@hidden@} Don't call expand-file-name.
address@hidden example
+
address@hidden
+Then the text in @file{ChangeLog} looks like this:
+
address@hidden
address@hidden
+Wed Apr  1 08:57:59 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * vc.texinfo: Fix expansion typos.
+        * vc.el, vc-hooks.el: Don't call expand-file-name.
address@hidden group
address@hidden smallexample
+
+  A log entry whose text begins with @samp{#} is not copied to
address@hidden  For example, if you merely fix some misspellings in
+comments, you can log the change with an entry beginning with @samp{#}
+to avoid putting such trivia into @file{ChangeLog}.
+
address@hidden Old Versions, VC Status, Change Logs and VC, Version Control
address@hidden Examining And Comparing Old Versions
+
address@hidden @kbd
address@hidden C-x v ~ @var{version} @key{RET}
+Examine version @var{version} of the visited file, in a buffer of its
+own (@code{vc-version-other-window}).
+
address@hidden C-x v =
+Compare the current buffer contents with the latest checked-in version
+of the file.
+
address@hidden C-u C-x v = @var{file} @key{RET} @var{oldvers} @key{RET} 
@var{newvers} @key{RET}
+Compare the specified two versions of @var{file}.
address@hidden table
+
address@hidden vc-version-other-window
address@hidden C-x v ~
+  You can examine any version of a file by first visiting it, and then
+using @kbd{C-x v ~ @var{version} @key{RET}}
+(@code{vc-version-other-window}).  This puts the text of version
address@hidden in a file named @address@hidden@var{version}~},
+then visits it in a separate window.
+
address@hidden vc-diff
address@hidden C-x v =
+  To compare two versions of a file, use the command @kbd{C-x v =}
+(@code{vc-diff}).
+
+  Plain @kbd{C-x v =} compares the current buffer contents (saving them
+in the file if necessary) with the last checked-in version of the file.
+With a prefix argument, @kbd{C-x v =} reads a file name and two version
+numbers, then compares those versions of the specified file.
+
+  If you supply a directory name instead of the name of a work file,
+this command compares the two specified versions of all registered files
+in that directory and its subdirectories.  You can also specify a
+snapshot name (@pxref{Snapshots}) instead of one or both version
+numbers.
+
+  You can specify a checked-in version by its number; you can specify
+the most recent checked-in version with an empty version number.
+
+  This command works by running the @code{vcdiff} utility, getting the
+options from the variable @code{diff-switches}.  It displays the output
+in a special buffer in another window.  Unlike the @kbd{M-x diff}
+command, @kbd{C-x v =} does not try to find the changes in the old and
+new versions.  This is because one or both versions normally do not
+exist as files.  They exist only in the records of the master file.
address@hidden Files}, for more information about @kbd{M-x diff}.
+
address@hidden VC Status, Renaming and VC, Old Versions, Version Control
address@hidden VC Status Commands
+
address@hidden C-x v l
address@hidden vc-print-log
+  To view the detailed version control status and history of a file,
+type @kbd{C-x v l} (@code{vc-print-log}).  It displays the history of
+changes to the current file, including the text of the log entries.  The
+output appears in a separate window.
+
address@hidden C-x v d
address@hidden vc-directory
+  When you are working on a large program, it's often useful to find all
+the files that are currently locked, or all the files maintained in
+version control at all.  You can use @kbd{C-x v d} (@code{vc-directory})
+to show all the locked files in or beneath the current directory.  This
+includes all files that are locked by any user.  @kbd{C-u C-x v d} lists
+all files in or beneath the current directory that are maintained with
+version control.
+
+  The list of files is displayed as a buffer that uses an augmented
+Dired mode.  The names of the users locking various files are shown (in
+parentheses) in place of the owner and group.  All the normal Dired
+commands work in this buffer.  Most interactive VC commands work also,
+and apply to the file name on the current line.
+
+  The @kbd{C-x v v} command (@code{vc-next-action}), when used in the
+augmented Dired buffer, operates on all the marked files (or the file on
+the current line).  If it operates on more than one file, it handles
+each file according to its current state; thus, it may check out one
+file and check in another (because it is already checked out).  If it
+has to check in any files, it reads a single log entry, then uses that
+text for all the files being checked in.  This can be convenient for
+registering or checking in several files at once, as part of the same
+change.
+
address@hidden Renaming and VC, Snapshots, VC Status, Version Control
address@hidden Renaming VC Work Files and Master Files
+
address@hidden vc-rename-file
+  When you rename a registered file, you must also rename its master
+file correspondingly to get proper results.  Use @code{vc-rename-file}
+to rename the source file as you specify, and rename its master file
+accordingly.  It also updates any snapshots (@pxref{Snapshots}) that
+mention the file, so that they use the new name; despite this, the
+snapshot thus modified may not completely work (@pxref{Snapshot
+Caveats}).
+
+  You cannot use @code{vc-rename-file} on a file that is locked by
+someone else.
+
address@hidden Snapshots, Version Headers, Renaming and VC, Version Control
address@hidden Snapshots
address@hidden snapshots and version control
+
+  A @dfn{snapshot} is a named set of file versions (one for each
+registered file) that you can treat as a unit.  One important kind of
+snapshot is a @dfn{release}, a (theoretically) stable version of the
+system that is ready for distribution to users.
+
address@hidden
+* Making Snapshots::           The snapshot facilities.
+* Snapshot Caveats::           Things to be careful of when using snapshots.
address@hidden menu
+
address@hidden Making Snapshots, Snapshot Caveats, Snapshots, Snapshots
address@hidden Making and Using Snapshots
+
+  There are two basic commands for snapshots; one makes a
+snapshot with a given name, the other retrieves a named snapshot.
+
address@hidden @code
address@hidden C-x v s
address@hidden vc-create-snapshot
address@hidden C-x v s @var{name} @key{RET}
+Define the last saved versions of every registered file in or under the
+current directory as a snapshot named @var{name}
+(@code{vc-create-snapshot}).
+
address@hidden C-x v r
address@hidden vc-retrieve-snapshot
address@hidden C-x v r @var{name} @key{RET}
+Check out all registered files at or below the current directory level
+using whatever versions correspond to the snapshot @var{name}
+(@code{vc-retrieve-snapshot}).
+
+This command reports an error if any files are locked at or below the
+current directory, without changing anything; this is to avoid
+overwriting work in progress.
address@hidden table
+
+  A snapshot uses a very small amount of resources---just enough to record
+the list of file names and which version belongs to the snapshot.  Thus,
+you need not hesitate to create snapshots whenever they are useful.
+
+  You can give a snapshot name as an argument to @kbd{C-x v =} or
address@hidden v ~} (@pxref{Old Versions}).  Thus, you can use it to compare a
+snapshot against the current files, or two snapshots against each other,
+or a snapshot against a named version.
+
address@hidden Snapshot Caveats,  , Making Snapshots, Snapshots
address@hidden Snapshot Caveats
+
address@hidden named configurations (RCS)
+  VC's snapshot facilities are modeled on RCS's named-configuration
+support.  They use RCS's native facilities for this, so under VC
+snapshots made using RCS are visible even when you bypass VC.
+
address@hidden worded verbosely to avoid overfull hbox.
+  For SCCS, VC implements snapshots itself.  The files it uses contain
+name/file/version-number triples.  These snapshots are visible only
+through VC.
+
+  A snapshot is a set of checked-in versions.  So make sure that all the
+files are checked in and not locked when you make a snapshot.
+
+  File renaming and deletion can create some difficulties with snapshots.
+This is not a VC-specific problem, but a general design issue in version
+control systems that no one has solved very well yet.
+
+  If you rename a registered file, you need to rename its master along
+with it (the command @code{vc-rename-file} does this automatically).  If
+you are using SCCS, you must also update the records of the snapshot, to
+mention the file by its new name (@code{vc-rename-file} does this,
+too).  An old snapshot that refers to a master file that no longer
+exists under the recorded name is invalid; VC can no longer retrieve
+it.  It would be beyond the scope of this manual to explain enough about
+RCS and SCCS to explain how to update the snapshots by hand.
+
+  Using @code{vc-rename-file} makes the snapshot remain valid for
+retrieval, but it does not solve all problems.  For example, some of the
+files in the program probably refer to others by name.  At the very
+least, the makefile probably mentions the file that you renamed.  If you
+retrieve an old snapshot, the renamed file is retrieved under its new
+name, which is not the name that the makefile expects.  So the program
+won't really work as retrieved.
+
address@hidden Version Headers,  , Snapshots, Version Control
address@hidden Inserting Version Control Headers
+
+   Sometimes it is convenient to put version identification strings
+directly into working files.  Certain special strings called
address@hidden headers} are replaced in each successive version by the
+number of that version.
+
address@hidden C-x v h
address@hidden vc-insert-headers
+  You can use the @kbd{C-x v h} command (@code{vc-insert-headers}) to
+insert a suitable header string.
+
address@hidden @kbd
address@hidden C-x v h
+Insert headers in a file for use with your version-control system.
address@hidden table
+
address@hidden vc-header-alist
+  The default header string is @samp{\$Id\$} for RCS and @samp{\%W\%}
+for SCCS. (The actual strings inserted do not have the backslashes
+in them.  They were placed in the Info source file so that the
+strings don't get interpreted as version-control headers when the
+Info source files are maintained under version control.) You can
+specify other headers to insert by setting the variable
address@hidden  Its value is a list of elements of the form
address@hidden(@var{program} . @var{string})} where @var{program} is @code{RCS}
+or @code{SCCS} and @var{string} is the string to use.
+
+  Instead of a single string, you can specify a list of strings; then
+each string in the list is inserted as a separate header on a line of
+its own.
+
+  It is often necessary to use ``superfluous'' backslashes when writing
+the strings that you put in this variable.  This is to prevent the
+string in the constant from being interpreted as a header itself if the
+Emacs Lisp file containing it is maintained with version control.
+
address@hidden vc-comment-alist
+  Each header is inserted surrounded by tabs, inside comment delimiters,
+on a new line at the start of the buffer.  Normally the ordinary comment
+start and comment end strings of the current mode are used, but for
+certain modes, there are special comment delimiters for this purpose;
+the variable @code{vc-comment-alist} specifies them.  Each element of
+this list has the form @code{(@var{mode} @var{starter} @var{ender})}.
+
address@hidden vc-static-header-alist
+  The variable @code{vc-static-header-alist} specifies further strings
+to add based on the name of the buffer.  Its value should be a list of
+elements of the form @code{(@var{regexp} . @var{format})}.  Whenever
address@hidden matches the buffer name, @var{format} is inserted as part
+of the header.  A header line is inserted for each element that matches
+the buffer name, and for each string specified by
address@hidden  The header line is made by processing the
+string from @code{vc-header-alist} with the format taken from the
+element.  The default value for @code{vc-static-header-alist} is:
+
address@hidden
address@hidden
+(("\\.c$" .
+  "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n\
+#endif /* lint */\n"))
address@hidden group
address@hidden example
+
address@hidden
+which specifies insertion of a string of this form:
+
address@hidden
address@hidden
+
+#ifndef lint
+static char vcid[] = "@var{string}";
+#endif /* lint */
address@hidden group
address@hidden example
+
address@hidden ListDir, Comparing Files, Version Control, Files
address@hidden Listing a File Directory
+
address@hidden file directory
address@hidden directory listing
+  Files are organized by Unix into @dfn{directories}.  A @dfn{directory
+listing} is a list of all the files in a directory.  Emacs provides
+directory listings in brief format (file names only) and verbose format
+(sizes, dates, and authors included).
+
address@hidden @kbd
address@hidden C-x C-d @var{dir-or-pattern}
+Print a brief directory listing (@code{list-directory}).
address@hidden C-u C-x C-d @var{dir-or-pattern}
+Print a verbose directory listing.
address@hidden table
+
address@hidden list-directory
address@hidden C-x C-d
+  To print a directory listing, use @kbd{C-x C-d}
+(@code{list-directory}).  This command prompts in the minibuffer for a
+file name which is either a  directory to be listed or pattern
+containing wildcards for the files to be listed.  For example,
+
address@hidden
+C-x C-d /u2/emacs/etc @key{RET}
address@hidden example
+
address@hidden
+lists all the files in directory @file{/u2/emacs/etc}.  An example of
+specifying a file name pattern is:
+
address@hidden
+C-x C-d /u2/emacs/src/*.c @key{RET}
address@hidden example
+
+  Normally, @kbd{C-x C-d} prints a brief directory listing containing just
+file names.  A numeric argument (regardless of value) tells it to print a
+verbose listing (like @code{ls -l}).
+
address@hidden list-directory-brief-switches
address@hidden list-directory-verbose-switches
+  Emacs obtains the text of a directory listing by running @code{ls} in
+an inferior process.  Two Emacs variables control the switches passed to
address@hidden: @code{list-directory-brief-switches} is a string giving the
+switches to use in brief listings (@code{"-CF"} by default).
address@hidden is a string giving the switches
+to use in a verbose listing (@code{"-l"} by default).
+
+The variable @code{directory-abbrev-alist} is an alist of abbreviations
+for file directories.  The list consists of elements of the form
address@hidden(FROM .  TO)}, each meaning to replace @code{FROM} with @code{TO}
+when it appears in a directory name.  This replacement is done when
+setting up the default directory of a newly visited file.  Every @code{FROM}
+string should start with address@hidden'.
+
+Use this feature when you have directories which you normally refer to
+via absolute symbolic links.  Make @code{TO} the name of the link, and
address@hidden the name it is linked to.
+
address@hidden Comparing Files, Dired, ListDir, Files
address@hidden Comparing Files
address@hidden comparing files
+
address@hidden diff
address@hidden diff-switches
+  The command @kbd{M-x diff} compares two files, displaying the
+differences in an Emacs buffer named @samp{*Diff*}.  It works by running
+the @code{diff} program, using options taken from the variable
address@hidden, whose value should be a string.
+
+  The buffer @samp{*Diff*} has Compilation mode as its major mode, so
+you can use @kbd{C-x `} to visit successive changed locations in the two
+source files.  You can also move to a particular hunk of changes and
+type @kbd{C-c C-c} to find the corresponding source location.  You can
+also use the other special commands of Compilation mode: @key{SPC} and
address@hidden for scrolling, and @kbd{M-p} and @kbd{M-n} for cursor motion.
address@hidden
+
address@hidden diff-backup
+  The command @kbd{M-x diff-backup} compares a specified file with its most
+recent backup.  If you specify the name of a backup file,
address@hidden compares it with the source file that it is a backup
+of.
+
address@hidden compare-windows
address@hidden comparing files
+  The command @kbd{M-x compare-windows} compares the text in the current
+window with that in the next window.  Comparison starts at point in each
+window.  Point moves forward in each window, a character at a time in each
+window, until the next characters in the two windows are different.  Then
+the command is finished.  For more information about windows in Emacs,
address@hidden
+
address@hidden compare-ignore-case
+  With a numeric argument, @code{compare-windows} ignores changes in
+whitespace.  If the variable @code{compare-ignore-case} is
address@hidden, it ignores differences in case as well.
+
address@hidden Dired, Misc File Ops, Comparing Files, Files
address@hidden Dired, the Directory Editor
address@hidden Dired
address@hidden deletion (of files)
+
+  Dired makes it easy to delete or visit many of the files in a single
+directory at once.  It creates an Emacs buffer containing a listing of the
+directory.  You can use the normal Emacs commands to move around in this
+buffer and special Dired commands to operate on the files.
+
address@hidden
+* Enter: Dired Enter.         How to invoke Dired.
+* Edit: Dired Edit.           Editing the Dired buffer.
+* Deletion: Dired Deletion.   Deleting files with Dired.
+* Immed: Dired Immed.         Other file operations through Dired.
address@hidden menu
+
address@hidden Dired Enter, Dired Edit, Dired, Dired
address@hidden Entering Dired
+
address@hidden dired
address@hidden C-x d
address@hidden dired-listing-switches
+  To invoke dired, type @kbd{C-x d} or @kbd{M-x dired}.  The command reads a
+directory name or wildcard file name pattern as a minibuffer argument just
+like the @code{list-directory} command, @kbd{C-x C-d}.  Where @code{dired}
+differs from @code{list-directory} is in naming the buffer after the
+directory name or the wildcard pattern used for the listing, and putting
+the buffer into Dired mode so that the special commands of Dired are
+available in it.  The variable @code{dired-listing-switches} is a string
+used as an argument to @code{ls} in making the directory; this string
address@hidden contain @samp{-l}.
+
address@hidden dired-other-window
address@hidden C-x 4 d
+  To display the Dired buffer in another window rather than in the selected
+window, use @kbd{C-x 4 d} (@code{dired-other-window)} instead of @kbd{C-x d}.
+
address@hidden Dired Edit, Dired Deletion, Dired Enter, Dired
address@hidden Editing in Dired
+
+  Once the Dired buffer exists, you can switch freely between it and other
+Emacs buffers.  Whenever the Dired buffer is selected, certain special
+commands are provided that operate on files that are listed.  The Dired
+buffer is ``read-only'', and inserting text in it is not useful, so
+ordinary printing characters such as @kbd{d} and @kbd{x} are used for Dired
+commands.  Most Dired commands operate on the file described by the line
+that point is on.  Some commands perform operations immediately; others
+``flag'' a file to be operated on later.
+
+  Most Dired commands that operate on the current line's file also treat a
+numeric argument as a repeat count, meaning to act on the files of the
+next few lines.  A negative argument means to operate on the files of the
+preceding lines, and leave point on the first of those lines.
+
+  All the usual Emacs cursor motion commands are available in Dired
+buffers.  Some special purpose commands are also provided.  The keys
address@hidden and @kbd{C-p} are redefined so that they try to position
+the cursor at the beginning of the filename on the line, rather than
+at the beginning of the line.
+
+  For extra convenience, @key{SPC} and @kbd{n} in Dired are equivalent to
address@hidden  @kbd{p} is equivalent to @kbd{C-p}.  Moving by lines is done so
+often in Dired that it deserves to be easy to type.  @key{DEL} (move up and
+unflag) is often useful simply for moving address@hidden
+
+  The @kbd{g} command in Dired runs @code{revert-buffer} to reinitialize
+the buffer from the actual disk directory and show any changes made in the
+directory by programs other than Dired.  All deletion flags in the Dired
+buffer are lost when this is done.
+
address@hidden Dired Deletion, Dired Immed, Dired Edit, Dired
address@hidden Deleting Files With Dired
+
+  The primary use of Dired is to flag files for deletion and then delete
+them.
+
address@hidden @kbd
address@hidden d
+Flag this file for deletion.
address@hidden u
+Remove deletion-flag on this line.
address@hidden @key{DEL}
+Remove deletion-flag on previous line, moving point to that line.
address@hidden x
+Delete the files that are flagged for deletion.
address@hidden #
+Flag all auto-save files (files whose names start and end with @samp{#})
+for deletion (@pxref{Auto Save}).
address@hidden ~
+Flag all backup files (files whose names end with @samp{~}) for deletion
+(@pxref{Backup}).
address@hidden .@: @r{(Period)}
+Flag excess numeric backup files for deletion.  The oldest and newest
+few backup files of any one file are exempt; the middle ones are flagged.
address@hidden table
+
+  You can flag a file for deletion by moving to the line describing the
+file and typing @kbd{d} or @kbd{C-d}.  The deletion flag is visible as a
address@hidden at the beginning of the line.  Point is moved to the beginning of
+the next line, so that repeated @kbd{d} commands flag successive files.
+
+  The files are flagged for deletion rather than deleted immediately to
+avoid the danger of deleting a file accidentally.  Until you direct Dired
+to delete the flagged files, you can remove deletion flags using the
+commands @kbd{u} and @key{DEL}.  @kbd{u} works just like @kbd{d}, but
+removes flags rather than making flags.  @key{DEL} moves upward, removing
+flags; it is like @kbd{u} with numeric argument automatically negated.
+
+  To delete the flagged files, type @kbd{x}.  This command first displays a
+list of all the file names flagged for deletion, and requests confirmation
+with @kbd{yes}.  Once you confirm, all the flagged files are deleted, and their
+lines are deleted from the text of the Dired buffer.  The shortened Dired
+buffer remains selected.  If you answer @kbd{no} or quit with @kbd{C-g}, you
+return immediately to Dired, with the deletion flags still present and no
+files actually deleted.
+
+  The @kbd{#}, @kbd{~}, and @kbd{.} commands flag many files for
+deletion, based on their names.  These commands are useful precisely
+because they do not actually delete any files; you can remove the
+deletion flags from any flagged files that you really wish to address@hidden
+
+  @kbd{#} flags for deletion all files that appear to have been made by
+auto-saving (that is, files whose names begin and end with @samp{#}).
address@hidden flags for deletion all files that appear to have been made as
+backups for files that were edited (that is, files whose names end with
address@hidden).
+
address@hidden dired-kept-versions
+  @kbd{.} (Period) flags just some of the backup files for deletion: only
+numeric backups that are not among the oldest few nor the newest few
+backups of any one file.  Normally @code{dired-kept-versions} (not
address@hidden; that applies only when saving) specifies the
+number of newest versions of each file to keep, and
address@hidden specifies the number of oldest versions to keep.
+Period with a positive numeric argument, as in @kbd{C-u 3 .}, specifies the
+number of newest versions to keep, overriding @code{dired-kept-versions}.
+A negative numeric argument overrides @code{kept-old-versions}, using minus
+the value of the argument to specify the number of oldest versions of each
+file to address@hidden
+
address@hidden Dired Immed,  , Dired Deletion, Dired
address@hidden Immediate File Operations in Dired
+
+  Some file operations in Dired take place immediately when they are
+requested.
+
address@hidden @kbd
address@hidden C
+Copies the file described on the current line.  You must supply a file name
+to copy to, using the minibuffer.
address@hidden f
+Visits the file described on the current line.  It is just like typing
address@hidden C-f} and supplying that file name.  If the file on this line is a
+subdirectory, @kbd{f} actually causes Dired to be invoked on that
+subdirectory.  @xref{Visiting}.
address@hidden o
+Like @kbd{f}, but uses another window to display the file's buffer.  The
+Dired buffer remains visible in the first window.  This is like using
address@hidden 4 C-f} to visit the file.  @xref{Windows}.
address@hidden R
+Renames the file described on the current line.  You must supply a file
+name to rename to, using the minibuffer.
address@hidden v
+Views the file described on this line using @kbd{M-x view-file}.  Viewing a
+file is like visiting it, but is slanted toward moving around in the file
+conveniently and does not allow changing the file.  @xref{Misc File
+Ops,View File}.  Viewing a file that is a directory runs Dired on that
address@hidden
address@hidden table
+
address@hidden Misc File Ops,  , Dired, Files
address@hidden Miscellaneous File Operations
+
+  Emacs has commands for performing many other operations on files.
+All operate on one file; they do not accept wildcard file names.
+
address@hidden add-name-to-file
+  You can use the command @kbd{M-x add-name-to-file} to add a name to an
+existing file without removing the old name.  The new name must belong
+on the file system that the file is on.
+
address@hidden append-to-file
+  @kbd{M-x append-to-file} adds the text of the region to the end of the
+specified file.
+
address@hidden copy-file
address@hidden copying files
+  @kbd{M-x copy-file} reads the file @var{old} and writes a new file
+named @var{new} with the same contents.  Confirmation is required if a
+file named @var{new} already exists, because copying overwrites the old
+contents of the file @var{new}.
+
address@hidden delete-file
address@hidden deletion (of files)
+  @kbd{M-x delete-file} deletes a specified file, like the @code{rm}
+command in the shell.  If you are deleting many files in one directory, it
+may be more convenient to use Dired (@pxref{Dired}).
+
address@hidden insert-file
+  @kbd{M-x insert-file} inserts a copy of the contents of a specified
+file into the current buffer at point, leaving point unchanged before the
+contents and the mark after them.  @xref{Mark}.
+
address@hidden make-symbolic-link
+  @kbd{M-x make-symbolic-link} reads two file names @var{old} and
address@hidden, and then creates a symbolic link named @var{linkname}
+and pointing at @var{old}.  Future attempts to open file
address@hidden will then refer to the file named @var{old} at the time
+the opening is done, or will result in an error if the name @var{old} is
+not in use at that time.  Confirmation is required if you create the
+link while @var{linkname} is in use.  Note that not all systems support
+symbolic links.
+
address@hidden rename-file
+  @kbd{M-x rename-file} reads two file names @var{old} and @var{new} using
+the minibuffer, then renames file @var{old} as @var{new}.  If a file named
address@hidden already exists, you must confirm with @kbd{yes} or renaming is 
not
+done; this is because renaming causes the previous meaning of the 
+name @var{new} to be lost.  If @var{old} and @var{new} are on different 
+file systems, the file @var{old} is copied and deleted.
+
address@hidden view-file
address@hidden viewing
+  @kbd{M-x view-file} allows you to scan or read a file by sequential
+screenfuls.  It reads a file name argument using the minibuffer.  After
+reading the file into an Emacs buffer, @code{view-file} reads and displays
+one windowful.  You can then type @key{SPC} to scroll forward one window,
+or @key{DEL} to scroll backward.  Various other commands are provided for
+moving around in the file, but none for changing it; type @kbd{C-h} while
+viewing a file for a list of them.  Most commands are the default Emacs
+cursor motion commands.  To exit from viewing, type @kbd{C-c}.
+
address@hidden Buffers, Windows, Files, Top
address@hidden Using Multiple Buffers
+
address@hidden buffers
+  Text you are editing in Emacs resides in an object called a
address@hidden  Each time you visit a file, Emacs creates a buffer to
+hold the file's text.  Each time you invoke Dired, Emacs creates a buffer
+to hold the directory listing.  If you send a message with @kbd{C-x m},
+a buffer named @samp{*mail*} is used to hold the text of the message.
+When you ask for a command's documentation, it appears in a buffer
+called @samp{*Help*}.
+
address@hidden selected buffer
address@hidden current buffer
+  At any time, one and only one buffer is @dfn{selected}.  It is also
+called the @dfn{current buffer}.  Saying a command operates on ``the
+buffer'' really means that the command operates on the selected
+buffer, as most commands do.
+
+  When Emacs creates multiple windows, each window has a chosen buffer which
+is displayed there, but at any time only one of the windows is selected and
+its chosen buffer is the selected buffer.  Each window's mode line displays
+the name of the buffer the window is displaying (@pxref{Windows}).
+
+  Each buffer has a name which can be of any length but is
+case-sensitive.  You can select a buffer using its name.  Most
+buffers are created when you visit files; their names are derived from
+the files' names.  You can also create an empty buffer with any name you
+want.  A newly started Emacs has a buffer named @samp{*scratch*} which
+you can use for evaluating Lisp expressions in Emacs.
+
+  Each buffer records what file it is visiting, whether it is
+modified, and what major mode and minor modes are in effect in it
+(@pxref{Major Modes}).  Any Emacs variable can be made @dfn{local to} a
+particular buffer, meaning its value in that buffer can be different from
+the value in other buffers.  @xref{Locals}.
+
address@hidden
+* Select Buffer::   Creating a new buffer or reselecting an old one.
+* List Buffers::    Getting a list of buffers that exist.
+* Misc Buffer::     Renaming; changing read-onliness; copying text.
+* Kill Buffer::     Killing buffers you no longer need.
+* Several Buffers:: How to go through the list of all buffers
+                     and operate variously on several of them.
address@hidden menu
+
address@hidden Select Buffer, List Buffers, Buffers, Buffers
address@hidden Creating and Selecting Buffers
address@hidden changing buffers
address@hidden switching buffers
+
address@hidden @kbd
address@hidden C-x b @var{buffer} @key{RET}
+Select or create a buffer named @var{buffer} (@code{switch-to-buffer}).
address@hidden C-x 4 b @var{buffer} @key{RET}
+Similar, but select a buffer named @var{buffer} in another window
+(@code{switch-to-buffer-other-window}).
address@hidden M-x switch-to-other-buffer @var{n}
+Switch to the previous buffer.
address@hidden table
+
address@hidden C-x 4 b
address@hidden C-x 5 b
address@hidden switch-to-buffer-other-window
address@hidden C-x b
address@hidden switch-to-buffer
address@hidden switch-to-buffer-other-frame
+  To select a buffer named @var{bufname}, type @kbd{C-x b @var{bufname}
address@hidden  This is the command @code{switch-to-buffer} with argument
address@hidden  You can use completion on an abbreviation for the buffer
+name you want (@pxref{Completion}).  An empty argument to @kbd{C-x b}
+specifies the most recently selected buffer that is not displayed in any
address@hidden
+
+  Most buffers are created when you visit files, or use Emacs commands
+that display text.  You can also create a buffer explicitly by typing
address@hidden b @var{bufname} @key{RET}}, which creates a new, empty buffer
+that is not visiting any file, and selects it for editing.  The new
+buffer's major mode is determined by the value of
address@hidden (@pxref{Major Modes}).  Buffers not visiting
+files are usually used for making notes to yourself.  If you try to save
+one, you are asked for the file name to use.
+
+ The function @code{switch-to-buffer-other-frame} is similar to
address@hidden except that it creates a new frame in which to
+display the selected buffer.
+
address@hidden switch-to-other-buffer
+Use @kbd{M-x switch-to-other-buffer} to visit the previous buffer. If
+you supply a positive integer @var{n}, the @var{n}th most recent buffer
+is displayed. If you supply an argument of 0, the current buffer is
+moved to the bottom of the buffer stack.
+
+  Note that you can also use @kbd{C-x C-f} and any other command for
+visiting a file to switch buffers.  @xref{Visiting}.
+
address@hidden List Buffers, Misc Buffer, Select Buffer, Buffers
address@hidden Listing Existing Buffers
+
address@hidden @kbd
address@hidden C-x C-b
+List the existing buffers (@code{list-buffers}).
address@hidden table
+
address@hidden C-x C-b
address@hidden list-buffers
+  To print a list of all existing buffers, type @kbd{C-x C-b}.  Each
+line in the list shows one buffer's name, major mode, and visited file.
+A @samp{*} at the beginning of a line indicates the buffer has been
+``modified''.  If several buffers are modified, it may be time to save
+some with @kbd{C-x s} (@pxref{Saving}).  A @samp{%} indicates a read-only
+buffer.  A @samp{.} marks the selected buffer.  Here is an example of a
+buffer list:@refill
+
address@hidden
+ MR Buffer         Size  Mode           File
+ -- ------         ----  ----           ----
+.*  emacs.tex      383402 Texinfo       /u2/emacs/man/emacs.tex
+    *Help*         1287  Fundamental    
+    files.el       23076 Emacs-Lisp     /u2/emacs/lisp/files.el
+  % RMAIL          64042 RMAIL          /u/rms/RMAIL
+ *% man            747   Dired          /u2/emacs/man/
+    net.emacs      343885 Fundamental   /u/rms/net.emacs
+    fileio.c       27691 C              /u2/emacs/src/fileio.c
+    NEWS           67340 Text           /u2/emacs/etc/NEWS
+    *scratch*      0     Lisp Interaction
address@hidden smallexample
+
address@hidden
+Note that the buffer @samp{*Help*} was made by a help request; it is not
+visiting any file.  The buffer @code{man} was made by Dired on the
+directory @file{/u2/emacs/man/}.
+
+As you move the mouse over the @samp{*Buffer List*} buffer, the lines
+are highlighted.  This visual cue indicates that clicking the right
+mouse button (@code{button3}) will pop up a menu of commands on the
+buffer represented by this line.  This menu duplicates most of those
+commands which are bound to keys in the @samp{*Buffer List*} buffer.
+
address@hidden Misc Buffer, Kill Buffer, List Buffers, Buffers
address@hidden Miscellaneous Buffer Operations
+
address@hidden @kbd
address@hidden C-x C-q
+Toggle read-only status of buffer (@code{toggle-read-only}).
address@hidden M-x rename-buffer
+Change the name of the current buffer.
address@hidden M-x view-buffer
+Scroll through a buffer.
address@hidden table
+
address@hidden read-only buffer
address@hidden C-x C-q
address@hidden toggle-read-only
address@hidden buffer-read-only
+  A buffer can be @dfn{read-only}, which means that commands to change
+its text are not allowed.  Normally, read-only buffers are created by
+subsystems such as Dired and Rmail that have special commands to operate
+on the text.  Emacs also creates a read-only buffer if you
+visit a file that is protected.  To make changes in a read-only buffer,
+use the command @kbd{C-x C-q} (@code{toggle-read-only}).  It makes a
+read-only buffer writable, and makes a writable buffer read-only.  This
+works by setting the variable @code{buffer-read-only}, which has a local
+value in each buffer and makes a buffer read-only if its value is
address@hidden
+
address@hidden rename-buffer
+  @kbd{M-x rename-buffer} changes the name of the current buffer,
+prompting for the new name in the minibuffer.  There is no default.  If you
+specify a name that is used by a different buffer, an error is signalled and
+renaming is not done.
+
address@hidden view-buffer
+  @kbd{M-x view-buffer} is similar to @kbd{M-x view-file} (@pxref{Misc
+File Ops}), but it examines an already existing Emacs buffer.  View mode
+provides convenient commands for scrolling through the buffer but not
+for changing it.  When you exit View mode, the resulting value of point
+remains in effect.
+
+To copy text from one buffer to another, use the commands @kbd{M-x
+append-to-buffer} and @kbd{M-x insert-buffer}.  @xref{Accumulating
address@hidden
+
address@hidden Kill Buffer, Several Buffers, Misc Buffer, Buffers
address@hidden Killing Buffers
+
+  After using Emacs for a while, you may accumulate a large number of
+buffers and may want to eliminate the ones you no
+longer need.  There are several commands for doing this.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x k
+Kill a buffer, specified by name (@code{kill-buffer}).
address@hidden M-x kill-some-buffers
+Offer to kill each buffer, one by one.
address@hidden table
+
address@hidden kill-buffer
address@hidden kill-some-buffers
address@hidden C-x k
+ 
+  @kbd{C-x k} (@code{kill-buffer}) kills one buffer, whose name you
+specify in the minibuffer.  If you type just @key{RET} in the
+minibuffer, the default, killing the current buffer, is used.  If the
+current buffer is killed, the buffer that has been selected recently but
+does not appear in any window now is selected.  If the buffer being
+killed contains unsaved changes, you are asked to confirm with @kbd{yes}
+before the buffer is killed.
+
+  The command @kbd{M-x kill-some-buffers} asks about each buffer, one by
+one.  An answer of @kbd{y} means to kill the buffer.  Killing the current
+buffer or a buffer containing unsaved changes selects a new buffer or asks
+for confirmation just like @code{kill-buffer}.
+
address@hidden Several Buffers,, Kill Buffer, Buffers
address@hidden Operating on Several Buffers
address@hidden buffer menu
+
+  The @dfn{buffer-menu} facility is like a ``Dired for buffers''; it allows
+you to request operations on various Emacs buffers by editing a
+buffer containing a list of them.  You can save buffers, kill them
+(here called @dfn{deleting} them, for consistency with Dired), or display
+them.
+
address@hidden @kbd
address@hidden M-x buffer-menu
+Begin editing a buffer listing all Emacs buffers.
address@hidden table
+
address@hidden buffer-menu
+  The command @code{buffer-menu} writes a list of all Emacs buffers into
+the buffer @samp{*Buffer List*}, and selects that buffer in Buffer Menu
+mode.  The buffer is read-only.  You can only change it using the special
+commands described in this section.  Most of the commands are graphic
+characters.  You can use  Emacs cursor motion commands in the
address@hidden List*} buffer.  If the cursor is on a line describing a
+buffer, the following  special commands apply to that buffer:
+
address@hidden @kbd
address@hidden d
+Request to delete (kill) the buffer, then move down.  A @samp{D} before
+the buffer name on a line indicates a deletion request.  Requested
+deletions actually take place when you use the @kbd{x} command.
address@hidden k
+Synonym for @kbd{d}.
address@hidden C-d
+Like @kbd{d} but move up afterwards instead of down.
address@hidden s
+Request to save the buffer.  An @samp{S} before the buffer name on a line
+indicates the request.  Requested saves actually take place when you use
+the @kbd{x} command.  You can request both saving and deletion for the
+same buffer.
address@hidden ~
+Mark buffer ``unmodified''.  The command @kbd{~} does this
+immediately when typed.
address@hidden x
+Perform previously requested deletions and saves.
address@hidden u
+Remove any request made for the current line, and move down.
address@hidden @key{DEL}
+Move to previous line and remove any request made for that line.
address@hidden table
+
+  All commands that add or remove flags to request later operations
+also move down a line.  They accept a numeric argument as a repeat count,
+unless otherwise specified.
+
+  There are also special commands to use the buffer list to select another
+buffer, and to specify one or more other buffers for display in additional
+windows.
+
address@hidden @kbd
address@hidden 1
+Select the buffer in a full-frame window.  This command takes effect
+immediately.
address@hidden 2
+Immediately set up two windows, with this buffer in one and the
+buffer selected before @samp{*Buffer List*} in the other.
address@hidden f
+Immediately select the buffer in place of the @samp{*Buffer List*} buffer.
address@hidden o
+Immediately select the buffer in another window as if by @kbd{C-x 4 b},
+leaving @samp{*Buffer List*} visible.
address@hidden q
+Immediately select this buffer, and display any buffers previously
+flagged with the @kbd{m} command in other windows.  If there are no 
+buffers flagged with @kbd{m}, this command is equivalent to @kbd{1}.
address@hidden m
+Flag this buffer to be displayed in another window if the @kbd{q}
+command is used.  The request shows as a @samp{>} at the beginning of
+the line.  The same buffer may not have both a delete request and a
+display request.
address@hidden table
+
+ Going back between a @code{buffer-menu} buffer and other Emacs buffers is
+easy.  You can, for example, switch from the @samp{*Buffer List*}
+buffer to another Emacs buffer, and edit there.  You can then reselect the
address@hidden buffer and perform operations already
+requested, or you can kill that buffer or pay no further attention to it.
+ All that @code{buffer-menu} does directly is create and select a
+suitable buffer, and turn on Buffer Menu mode.  All the other
+capabilities of the buffer menu are implemented by special commands
+provided in Buffer Menu mode.  
+
+  The only difference between @code{buffer-menu} and @code{list-buffers} is
+that @code{buffer-menu} selects the @samp{*Buffer List*} buffer and
address@hidden does not.  If you run @code{list-buffers} (that is,
+type @kbd{C-x C-b}) and select the buffer list manually, you can use all
+the commands described here.
+
address@hidden Windows, Mule, Buffers, Top
address@hidden Multiple Windows
address@hidden windows
+
+  Emacs can split the frame into two or many windows, which can display
+parts of different buffers or different parts of one buffer.  If you are
+running XEmacs under X, that means you can have the X window that contains
+the Emacs frame have multiple subwindows.
+
address@hidden
+* Basic Window::     Introduction to Emacs windows.
+* Split Window::     New windows are made by splitting existing windows.
+* Other Window::     Moving to another window or doing something to it.
+* Pop Up Window::    Finding a file or buffer in another window.
+* Change Window::    Deleting windows and changing their sizes.
address@hidden menu
+
address@hidden Basic Window, Split Window, Windows, Windows
address@hidden Concepts of Emacs Windows
+
+  When Emacs displays multiple windows, each window has one Emacs
+buffer designated for display.  The same buffer may appear in more
+than one window; if it does, any changes in its text are displayed in all
+the windows that display it.  Windows showing the same buffer can
+show different parts of it, because each window has its own value of point.
+
address@hidden selected window
+  At any time, one  window is the @dfn{selected window}; the buffer
+ displayed by that window is the current buffer.  The cursor
+shows the location of point in that window.  Each other window has a
+location of point as well, but since the terminal has only one cursor, it
+cannot show the location of point in the other windows.
+
+  Commands to move point affect the value of point for the selected Emacs
+window only.  They do not change the value of point in any other Emacs
+window, including those showing the same buffer.  The same is true for commands
+such as @kbd{C-x b} to change the selected buffer in the selected window;
+they do not affect other windows at all.  However, there are other commands
+such as @kbd{C-x 4 b} that select a different window and switch buffers in
+it.  Also, all commands that display information in a window, including
+(for example) @kbd{C-h f} (@code{describe-function}) and @kbd{C-x C-b}
+(@code{list-buffers}), work by switching buffers in a non-selected window
+without affecting the selected window.
+
+  Each window has its own mode line, which displays the buffer name,
+modification status, and major and minor modes of the buffer that is
+displayed in the window.  @xref{Mode Line}, for details on the mode
+line.
+
address@hidden Split Window, Other Window, Basic Window, Windows
address@hidden Splitting Windows
+
address@hidden @kbd
address@hidden C-x 2
+Split the selected window into two windows, one above the other
+(@code{split-window-vertically}).
address@hidden C-x 3
+Split the selected window into two windows positioned side by side
+(@code{split-window-horizontally}).
address@hidden C-x 6
+Save the current window configuration in register @var{reg} (a letter).
address@hidden C-x 7
+Restore (make current) the window configuration in register
address@hidden (a letter).  Use with a register previously set with @kbd{C-x 6}.
address@hidden table
+
address@hidden C-x 2
address@hidden split-window-vertically
+  The command @kbd{C-x 2} (@code{split-window-vertically}) breaks the
+selected window into two windows, one above the other.  Both windows
+start out displaying the same buffer, with the same value of point.  By
+default each of the two windows gets half the height of the window that
+was split.  A numeric argument specifies how many lines to give to the
+top window.
+
address@hidden C-x 3
address@hidden split-window-horizontally
+  @kbd{C-x 3} (@code{split-window-horizontally}) breaks the selected
+window into two side-by-side windows.  A numeric argument specifies how
+many columns to give the one on the left.  A line of vertical bars
+separates the two windows.  Windows that are not the full width of the
+frame have truncated mode lines which do not always appear in inverse
+video, because Emacs display routines cannot display a region of inverse
+video that is only part of a line on the screen.
+
address@hidden truncate-partial-width-windows
+  When a window is less than the full width, many text lines are too
+long to fit.  Continuing all those lines might be confusing.  Set the
+variable @code{truncate-partial-width-windows} to address@hidden to
+force truncation in all windows less than the full width of the frame,
+independent of the buffer and its value for @code{truncate-lines}.
address@hidden address@hidden
+
+  Horizontal scrolling is often used in side-by-side windows.
address@hidden
+
address@hidden jump-to-register
address@hidden window-configuration-to-register
+You can resize a window and store that configuration in a register by
+supplying a @var{register} argument to @code{window-configuration-to-register}
+(@kbd{C-x 6}). To return to the window configuration established with
address@hidden, use @code{jump-to-register}
+(@kbd{C-x j}).
+
address@hidden Other Window, Pop Up Window, Split Window, Windows
address@hidden Using Other Windows
+
address@hidden @kbd
address@hidden C-x o
+Select another window (@code{other-window}).  That is the letter `o', not zero.
address@hidden M-C-v
+Scroll the next window (@code{scroll-other-window}).
address@hidden M-x compare-windows
+Find the next place where the text in the selected window does not match
+the text in the next window.
address@hidden M-x other-window-any-frame @var{n}
+Select the @var{n}th different window on any frame.
address@hidden table
+
address@hidden C-x o
address@hidden other-window
+  To select a different window, use @kbd{C-x o} (@code{other-window}).
+That is an `o', for `other', not a zero.  When there are more than
+two windows, the command moves through all the windows in a cyclic
+order, generally top to bottom and left to right.  From the rightmost
+and bottommost window, it goes back to the one at the upper left corner.
+A numeric argument, @var{n}, moves several steps in the cyclic order of
+windows. A negative numeric argument moves around the cycle in the
+opposite order.  If the optional second argument @var{which-frames} is
address@hidden, the function cycles through all frames.  When the
+minibuffer is active, the minibuffer is the last window in the cycle;
+you can switch from the minibuffer window to one of the other windows,
+and later switch back and finish supplying the minibuffer argument that
+is requested.  @xref{Minibuffer Edit}.
+
address@hidden other-window-any-frame
+ The command @kbd{M-x other-window-any-frame} also selects the window
address@hidden steps away in the cyclic order.  However, unlike 
@code{other-window},
+this command selects a window on the next or previous frame instead of
+wrapping around to the top or bottom of the current frame, when there
+are no more windows.
+
address@hidden C-M-v
address@hidden scroll-other-window
+  The usual scrolling commands (@pxref{Display}) apply to the selected
+window only.  @kbd{M-C-v} (@code{scroll-other-window}) scrolls the
+window that @kbd{C-x o} would select.  Like @kbd{C-v}, it takes positive
+and negative arguments.
+
address@hidden compare-windows
+  The command @kbd{M-x compare-windows} compares the text in the current
+window with the text in the next window.  Comparison starts at point in each
+window.  Point moves forward in each window, a character at a time,
+until the next set of characters in the two windows are different.  Then the
+command is finished.
+
+A prefix argument @var{ignore-whitespace} means ignore changes in
+whitespace.  The variable @code{compare-windows-whitespace} controls how
+whitespace is skipped.
+
+If @code{compare-ignore-case} is address@hidden, changes in case are
+also ignored.
+
address@hidden Pop Up Window, Change Window, Other Window, Windows
address@hidden Displaying in Another Window
+
address@hidden C-x 4
+  @kbd{C-x 4} is a prefix key for commands that select another window
+(splitting the window if there is only one) and select a buffer in that
+window.  Different @kbd{C-x 4} commands have different ways of finding the
+buffer to select.
+
address@hidden switch-to-buffer-other-window
address@hidden find-file-other-window
address@hidden find-tag-other-window
address@hidden dired-other-window
address@hidden mail-other-window
address@hidden @kbd
address@hidden C-x 4 b @var{bufname} @key{RET}
+Select buffer @var{bufname} in another window.  This runs
address@hidden
address@hidden C-x 4 f @var{filename} @key{RET}
+Visit file @var{filename} and select its buffer in another window.  This
+runs @code{find-file-other-window}.  @xref{Visiting}.
address@hidden C-x 4 d @var{directory} @key{RET}
+Select a Dired buffer for directory @var{directory} in another window.
+This runs @code{dired-other-window}.  @xref{Dired}.
address@hidden C-x 4 m
+Start composing a mail message in another window.  This runs
address@hidden, and its same-window version is @kbd{C-x m}
+(@pxref{Sending Mail}).
address@hidden C-x 4 .
+Find a tag in the current tag table in another window.  This runs
address@hidden, the multiple-window variant of @kbd{M-.}
+(@pxref{Tags}).
address@hidden table
+
address@hidden display-buffer-function
+If the variable @code{display-buffer-function} is address@hidden, its value is
+the function to call to handle @code{display-buffer}. It receives two
+arguments, the buffer and a flag that if address@hidden means that the
+currently selected window is not acceptable. Commands such as
address@hidden and @code{find-file-other-window}
+work using this function.
+
address@hidden Change Window,, Pop Up Window, Windows
address@hidden Deleting and Rearranging Windows
+
address@hidden @kbd
address@hidden C-x 0
+Get rid of the selected window (@code{delete-window}).  That is a zero.
+If there is more than one Emacs frame, deleting the sole remaining
+window on that frame deletes the frame as well. If the current frame
+is the only frame, it is not deleted.
address@hidden C-x 1
+Get rid of all windows except the selected one
+(@code{delete-other-windows}).
address@hidden C-x ^
+Make the selected window taller, at the expense of the other(s)
address@hidden(@code{enlarge-window}).
address@hidden C-x @}
+Make the selected window wider (@code{enlarge-window-horizontally}).
address@hidden table
+
address@hidden C-x 0
address@hidden delete-window
+  To delete a window, type @kbd{C-x 0} (@code{delete-window}).  (That is a
+zero.)  The space occupied by the deleted window is distributed among the
+other active windows (but not the minibuffer window, even if that is active
+at the time).  Once a window is deleted, its attributes are forgotten;
+there is no automatic way to make another window of the same shape or
+showing the same buffer.  The buffer continues to exist, and you can
+select it in any window with @kbd{C-x b}.
+
address@hidden C-x 1
address@hidden delete-other-windows
+  @kbd{C-x 1} (@code{delete-other-windows}) is more powerful than @kbd{C-x 0};
+it deletes all the windows except the selected one (and the minibuffer).
+The selected window expands to use the whole frame except for the echo
+area.
+
address@hidden C-x ^
address@hidden enlarge-window
address@hidden C-x @}
address@hidden enlarge-window-horizontally
address@hidden window-min-height
address@hidden window-min-width
+  To readjust the division of space among existing windows, use @kbd{C-x
+^} (@code{enlarge-window}).  It makes the currently selected window
+longer by one line or as many lines as a numeric argument specifies.
+With a negative argument, it makes the selected window smaller.
address@hidden @}} (@code{enlarge-window-horizontally}) makes the selected
+window wider by the specified number of columns.  The extra screen space
+given to a window comes from one of its neighbors, if that is possible;
+otherwise, all the competing windows are shrunk in the same proportion.
+If this makes some windows too small, those windows are deleted and their
+space is divided up.   Minimum window size is specified by the variables
address@hidden and @code{window-min-width}.
+
+You can also resize windows within a frame by clicking the left mouse
+button on a modeline, and dragging.
+
+Clicking the right button on a mode line pops up a menu of common window
+manager operations.  This menu contains the following options:
+
address@hidden Windows menu
address@hidden Pull-down Menus
address@hidden menus
address@hidden @b
address@hidden Delete Window
+Remove the window above this modeline from the frame.
+
address@hidden Delete Other Windows
+Delete all windows on the frame except for the one above this modeline.
+
address@hidden Split Window
+Split the window above the mode line in half, creating another window.
+
address@hidden Split Window Horizontally
+Split the window above the mode line in half horizontally, so that there
+will be two windows side-by-side.
+
address@hidden Balance Windows
+Readjust the sizes of all windows on the frame until all windows have
+roughly the same number of lines.
address@hidden table
address@hidden This is part of the Emacs manual.
address@hidden Copyright (C) 1997 Free Software Foundation, Inc.
address@hidden See file emacs.texi for copying conditions.
address@hidden Mule, Major Modes, Windows, Top
address@hidden World Scripts Support
address@hidden MULE
address@hidden international scripts
address@hidden multibyte characters
address@hidden encoding of characters
+
address@hidden Chinese
address@hidden Greek
address@hidden IPA
address@hidden Japanese
address@hidden Korean
address@hidden Cyrillic
address@hidden Russian
+  If you compile XEmacs with Mule option, it supports a wide variety of
+world scripts, including Latin script, as well as Arabic script,
+Simplified Chinese script (for mainland of China), Traditional Chinese
+script (for Taiwan and Hong-Kong), Greek script, Hebrew script, IPA
+symbols, Japanese scripts (Hiragana, Katakana and Kanji), Korean scripts
+(Hangul and Hanja) and Cyrillic script (for Byelorussian, Bulgarian,
+Russian, Serbian and Ukrainian).  These features have been merged from
+the modified version of Emacs known as MULE (for ``MULti-lingual
+Enhancement to GNU Emacs'').
+
address@hidden
+* Mule Intro::              Basic concepts of Mule.
+* Language Environments::   Setting things up for the language you use.
+* Input Methods::           Entering text characters not on your keyboard.
+* Select Input Method::     Specifying your choice of input methods.
+* Mule and Fonts::          Additional font-related issues
+* Coding Systems::          Character set conversion when you read and
+                              write files, and so on.
+* Recognize Coding::        How XEmacs figures out which conversion to use.
+* Specify Coding::          Various ways to choose which conversion to use.
address@hidden menu
+
address@hidden Mule Intro, Language Environments, Mule, Mule
address@hidden What is Mule?
+
+Mule is the MUltiLingual Extension to XEmacs.  It provides facilities
+not only for handling text written in many different languages, but in
+fact multilingual texts containing several languages in the same buffer.
+This goes beyond the simple facilities offered by Unicode for
+representation of multilingual text.  Mule also supports input methods,
+composing display using fonts in various different encodings, changing
+character syntax and other editing facilities to correspond to local
+language usage, and more.
+
+The most obvious problem is that of the different character coding
+systems used by different languages.  ASCII supplies all the characters
+needed for most computer programming languages and US English (it lacks
+the currency symbol for British English), but other Western European
+languages (French, Spanish, German) require more than 96 code positions
+for accented characters.  In fact, even with 8 bits to represent 96 more
+character (including accented characters and symbols such as currency
+symbols), some languages' alphabets remain incomplete (Croatian,
+Polish).  (The 64 "missing characters" are reserved for control
+characters.)  Furthermore, many European languages have their own
+alphabets, which must conflict with the accented characters since the
+ASCII characters are needed for computer interaction (error and log
+messages are typically in ASCII).
+
+For economy of space, historical practice has been for each language to
+establish its own encoding for the characters it needs.  This allows
+most European languages to represented with one octet (byte) per
+character.  However, many Asian languages have thousands of characters
+and require two or more octets per character.  For multilingual
+purposes, the ISO 2022 standard establishes escape codes that allow
+switching encodings in midstream.  (It's also ISO 2022 that establishes
+the standard that code points 0-31 and 128-159 are control codes.)
+
+However, this is error-prone and complex for internal processing.  For
+this reason XEmacs uses an internal coding system which can encode all
+of the world's scripts.  Unfortunately, for historical reasons, this
+code is not Unicode, although we are moving in that direction.
+
+XEmacs translates between the internal character encoding and various
+other coding systems when reading and writing files, when exchanging
+data with subprocesses, and (in some cases) in the @kbd{C-q} command
+(see below).  The internal encoding is never visible to the user in a
+production XEmacs, but unfortunately the process cannot be completely
+transparent to the user.  This is because the same ranges of octets may
+represent 1-octet ISO-8859-1 (which is satisfactory for most Western
+European use prior to the introduction of the Euro currency), 1-octet
+ISO-8859-15 (which substitutes the Euro for the rarely used "generic
+currency" symbol), 1-octet ISO-8859-5 (Cyrillic), or multioctet EUC-JP
+(Japanese).  There's no way to tell without being able to read!
+
+A number of heuristics are incorporated in Mule for automatic
+recognition, there are facilities for the user to set defaults, and
+where necessary (rarely, we hope) to set coding systems directly.
+
address@hidden C-h h
address@hidden view-hello-file
+  The command @kbd{C-h h} (@code{view-hello-file}) displays the file
address@hidden/HELLO}, which shows how to say ``hello'' in many languages.
+This illustrates various scripts.
+
+  Keyboards, even in the countries where these character sets are used,
+generally don't have keys for all the characters in them.  So XEmacs
+supports various @dfn{input methods}, typically one for each script or
+language, to make it convenient to type them.
+
address@hidden C-x RET
+  The prefix key @kbd{C-x @key{RET}} is used for commands that pertain
+to world scripts, coding systems, and input methods.
+
+
address@hidden Language Environments, Input Methods, Mule Intro, Mule
address@hidden Language Environments
address@hidden language environments
+
+  All supported character sets are supported in XEmacs buffers if it is
+compiled with Mule; there is no need to select a particular language in
+order to display its characters in an XEmacs buffer.  However, it is
+important to select a @dfn{language environment} in order to set various
+defaults.  The language environment really represents a choice of
+preferred script (more or less) rather that a choice of language.
+
+  The language environment controls which coding systems to recognize
+when reading text (@pxref{Recognize Coding}).  This applies to files,
+incoming mail, netnews, and any other text you read into XEmacs.  It may
+also specify the default coding system to use when you create a file.
+Each language environment also specifies a default input method.
+
address@hidden set-language-environment
+  The command to select a language environment is @kbd{M-x
+set-language-environment}.  It makes no difference which buffer is
+current when you use this command, because the effects apply globally to
+the XEmacs session.  The supported language environments include:
+
address@hidden
+ASCII, Chinese-BIG5, Chinese-GB, Croatian, Cyrillic-ALT, Cyrillic-ISO, 
+Cyrillic-KOI8, Cyrillic-Win, Czech, English, Ethiopic, French, German,
+Greek, Hebrew, IPA, Japanese, Korean, Latin-1, Latin-2, Latin-3, Latin-4,
+Latin-5, Norwegian, Polish, Romanian, Slovenian, Thai-XTIS, Vietnamese.
address@hidden quotation
+
+  Some operating systems let you specify the language you are using by
+setting locale environment variables.  XEmacs handles one common special
+case of this: if your locale name for character types contains the
+string @address@hidden, XEmacs automatically selects the
+corresponding language environment.
+
address@hidden C-h L
address@hidden describe-language-environment
+  To display information about the effects of a certain language
+environment @var{lang-env}, use the command @kbd{C-h L @var{lang-env}
address@hidden (@code{describe-language-environment}).  This tells you which
+languages this language environment is useful for, and lists the
+character sets, coding systems, and input methods that go with it.  It
+also shows some sample text to illustrate scripts used in this language
+environment.  By default, this command describes the chosen language
+environment.
+
address@hidden Input Methods, Select Input Method, Language Environments, Mule
address@hidden Input Methods
+
address@hidden input methods
+  An @dfn{input method} is a kind of character conversion designed
+specifically for interactive input.  In XEmacs, typically each language
+has its own input method; sometimes several languages which use the same
+characters can share one input method.  A few languages support several
+input methods.
+
+  The simplest kind of input method works by mapping ASCII letters into
+another alphabet.  This is how the Greek and Russian input methods work.
+
+  A more powerful technique is composition: converting sequences of
+characters into one letter.  Many European input methods use composition
+to produce a single non-ASCII letter from a sequence that consists of a
+letter followed by accent characters.  For example, some methods convert
+the sequence @kbd{'a} into a single accented letter.
+
+  The input methods for syllabic scripts typically use mapping followed
+by composition.  The input methods for Thai and Korean work this way.
+First, letters are mapped into symbols for particular sounds or tone
+marks; then, sequences of these which make up a whole syllable are
+mapped into one syllable sign.
+
+  Chinese and Japanese require more complex methods.  In Chinese input
+methods, first you enter the phonetic spelling of a Chinese word (in
+input method @code{chinese-py}, among others), or a sequence of portions
+of the character (input methods @code{chinese-4corner} and
address@hidden, and others).  Since one phonetic spelling typically
+corresponds to many different Chinese characters, you must select one of
+the alternatives using special XEmacs commands.  Keys such as @kbd{C-f},
address@hidden, @kbd{C-n}, @kbd{C-p}, and digits have special definitions in
+this situation, used for selecting among the alternatives.  @key{TAB}
+displays a buffer showing all the possibilities.
+
+   In Japanese input methods, first you input a whole word using
+phonetic spelling; then, after the word is in the buffer, XEmacs
+converts it into one or more characters using a large dictionary.  One
+phonetic spelling corresponds to many differently written Japanese
+words, so you must select one of them; use @kbd{C-n} and @kbd{C-p} to
+cycle through the alternatives.
+
+  Sometimes it is useful to cut off input method processing so that the
+characters you have just entered will not combine with subsequent
+characters.  For example, in input method @code{latin-1-postfix}, the
+sequence @kbd{e '} combines to form an @samp{e} with an accent.  What if
+you want to enter them as separate characters?
+
+  One way is to type the accent twice; that is a special feature for
+entering the separate letter and accent.  For example, @kbd{e ' '} gives
+you the two characters @samp{e'}.  Another way is to type another letter
+after the @kbd{e}---something that won't combine with that---and
+immediately delete it.  For example, you could type @kbd{e e @key{DEL}
+'} to get separate @samp{e} and @samp{'}.
+
+  Another method, more general but not quite as easy to type, is to use
address@hidden C-\} between two characters to stop them from combining.  This
+is the command @kbd{C-\} (@code{toggle-input-method}) used twice.
address@hidden Input Method}.
+
+  @kbd{C-\ C-\} is especially useful inside an incremental search,
+because stops waiting for more characters to combine, and starts
+searching for what you have already entered.
+
address@hidden input-method-verbose-flag
address@hidden input-method-highlight-flag
+  The variables @code{input-method-highlight-flag} and
address@hidden control how input methods explain what
+is happening.  If @code{input-method-highlight-flag} is address@hidden,
+the partial sequence is highlighted in the buffer.  If
address@hidden is address@hidden, the list of possible
+characters to type next is displayed in the echo area (but not when you
+are in the minibuffer).
+
address@hidden Select Input Method, Mule and Fonts, Input Methods, Mule
address@hidden Selecting an Input Method
+
address@hidden @kbd
address@hidden C-\
+Enable or disable use of the selected input method.
+
address@hidden C-x @key{RET} C-\ @var{method} @key{RET}
+Select a new input method for the current buffer.
+
address@hidden C-h I @var{method} @key{RET}
address@hidden C-h C-\ @var{method} @key{RET}
address@hidden describe-input-method
address@hidden C-h I
address@hidden C-h C-\
+Describe the input method @var{method} (@code{describe-input-method}).
+By default, it describes the current input method (if any).
+
address@hidden M-x list-input-methods
+Display a list of all the supported input methods.
address@hidden table
+
address@hidden select-input-method
address@hidden current-input-method
address@hidden C-x RET C-\
+  To choose an input method for the current buffer, use @kbd{C-x
address@hidden C-\} (@code{select-input-method}).  This command reads the
+input method name with the minibuffer; the name normally starts with the
+language environment that it is meant to be used with.  The variable
address@hidden records which input method is selected.
+  
address@hidden toggle-input-method
address@hidden C-\
+  Input methods use various sequences of ASCII characters to stand for
+non-ASCII characters.  Sometimes it is useful to turn off the input
+method temporarily.  To do this, type @kbd{C-\}
+(@code{toggle-input-method}).  To reenable the input method, type
address@hidden again.
+
+  If you type @kbd{C-\} and you have not yet selected an input method,
+it prompts for you to specify one.  This has the same effect as using
address@hidden @key{RET} C-\} to specify an input method.
+
address@hidden default-input-method
+  Selecting a language environment specifies a default input method for
+use in various buffers.  When you have a default input method, you can
+select it in the current buffer by typing @kbd{C-\}.  The variable
address@hidden specifies the default input method
+(@code{nil} means there is none).
+
address@hidden quail-set-keyboard-layout
+  Some input methods for alphabetic scripts work by (in effect)
+remapping the keyboard to emulate various keyboard layouts commonly used
+for those scripts.  How to do this remapping properly depends on your
+actual keyboard layout.  To specify which layout your keyboard has, use
+the command @kbd{M-x quail-set-keyboard-layout}.
+
address@hidden list-input-methods
+  To display a list of all the supported input methods, type @kbd{M-x
+list-input-methods}.  The list gives information about each input
+method, including the string that stands for it in the mode line.
+
address@hidden Mule and Fonts, Coding Systems, Select Input Method, Mule
address@hidden Mule and Fonts
address@hidden fonts
address@hidden font registry
address@hidden font encoding
address@hidden CCL programs
+
+(This section is X11-specific.)
+
+Text in XEmacs buffers is displayed using various faces.  In addition to
+specifying properties of a face, such as font and color, there are some
+additional properties of Mule charsets that are used in text.
+
+There is currently two properties of a charset that could be adjusted by
+user: font registry and so called @dfn{ccl-program}.
+
+Font registry is a regular expression matching the font registry field
+for this character set.  For example, both the @code{ascii} and
address@hidden@code{latin-iso8859-1}} charsets use the registry 
@code{"ISO8859-1"}.
+This field is used to choose an appropriate font when the user gives a
+general font specification such as @address@hidden,
+i.e. a 14-point upright medium-weight Courier font.
+
+You can set font registry for a charset using
address@hidden function in one of your startup files.  This
+function takes two arguments: character set (as a symbol) and font
+registry (as a string).
+
address@hidden }g., for Cyrillic texts Mule uses @address@hidden
+charset with @samp{"ISO8859-5"} as a default registry, and we want to
+use @samp{"koi8-r"} instead, because fonts in that encoding are
+installed on our system.  Use:
+
address@hidden
+(set-charset-registry 'cyrillic-iso8859-5 "koi8-r")
address@hidden example
+
+(Please note that you probably also want to set font registry for
address@hidden charset so that mixed English/Cyrillic texts be displayed
+using the same font.)
+
+"CCL-programs" are a little special-purpose scripts defined within
+XEmacs or in some package.  Those scripts allow XEmacs to use fonts that
+are in different encoding from the encoding that is used by Mule for
+text in buffer.  Returning to the above example, we need to somehow tell
+XEmacs that we have different encodings of fonts and text and so it
+needs to convert characters between those encodings when displaying.
+That's what @samp{set-charset-ccl-program} function is used for.  There
+are quite a few various CCL programs defined within XEmacs, and there is
+no comprehensive list of them, so you currently have to consult sources.
address@hidden FIXME: there must be a list of CCL programs
+
+We know that there is a CCL program called @samp{ccl-encode-koi8-r-font}
+that is used exactly for needed purpose: to convert characters between
address@hidden encoding and @samp{koi8-r}.  Use:
+
address@hidden
+(set-charset-ccl-program 'cyrillic-iso8859-5 'ccl-encode-koi8-r-font)
address@hidden example
+
+There are several more uses for CCL programs, not related to fonts, but
+those uses are not described here.
+
+
address@hidden Coding Systems, Recognize Coding, Mule and Fonts, Mule
address@hidden Coding Systems
address@hidden coding systems
+
+  Users of various languages have established many more-or-less standard
+coding systems for representing them.  XEmacs does not use these coding
+systems internally; instead, it converts from various coding systems to
+its own system when reading data, and converts the internal coding
+system to other coding systems when writing data.  Conversion is
+possible in reading or writing files, in sending or receiving from the
+terminal, and in exchanging data with subprocesses.
+
+  XEmacs assigns a name to each coding system.  Most coding systems are
+used for one language, and the name of the coding system starts with the
+language name.  Some coding systems are used for several languages;
+their names usually start with @samp{iso}.  There are also special
+coding systems @code{binary} and @code{no-conversion} which do not
+convert printing characters at all.
+
+  In addition to converting various representations of non-ASCII
+characters, a coding system can perform end-of-line conversion.  XEmacs
+handles three different conventions for how to separate lines in a file:
+newline, carriage-return linefeed, and just carriage-return.
+
address@hidden @kbd
address@hidden C-h C @var{coding} @key{RET}
+Describe coding system @var{coding}.
+
address@hidden C-h C @key{RET}
+Describe the coding systems currently in use.
+
address@hidden M-x list-coding-systems
+Display a list of all the supported coding systems.
+
address@hidden C-u M-x list-coding-systems
+Display comprehensive list of specific details of all supported coding
+systems.
address@hidden table
+
address@hidden C-x @key{RET} C
address@hidden describe-coding-system
+  The command @kbd{C-x RET C} (@code{describe-coding-system}) displays
+information about particular coding systems.  You can specify a coding
+system name as argument; alternatively, with an empty argument, it
+describes the coding systems currently selected for various purposes,
+both in the current buffer and as the defaults, and the priority list
+for recognizing coding systems (@pxref{Recognize Coding}).
+
address@hidden list-coding-systems
+  To display a list of all the supported coding systems, type @kbd{M-x
+list-coding-systems}.  The list gives information about each coding
+system, including the letter that stands for it in the mode line
+(@pxref{Mode Line}).
+
+  Each of the coding systems that appear in this list---except for
address@hidden, which means no conversion of any kind---specifies how and
+whether to convert printing characters, but leaves the choice of
+end-of-line conversion to be decided based on the contents of each file.
+For example, if the file appears to use carriage-return linefeed between
+lines, that end-of-line conversion will be used.
+
+  Each of the listed coding systems has three variants which specify
+exactly what to do for end-of-line conversion:
+
address@hidden @code
address@hidden @dots{}-unix
+Don't do any end-of-line conversion; assume the file uses
+newline to separate lines.  (This is the convention normally used
+on Unix and GNU systems.)
+
address@hidden @dots{}-dos
+Assume the file uses carriage-return linefeed to separate lines,
+and do the appropriate conversion.  (This is the convention normally used
+on Microsoft systems.)
+
address@hidden @dots{}-mac
+Assume the file uses carriage-return to separate lines, and do the
+appropriate conversion.  (This is the convention normally used on the
+Macintosh system.)
address@hidden table
+
+  These variant coding systems are omitted from the
address@hidden display for brevity, since they are entirely
+predictable.  For example, the coding system @code{iso-8859-1} has
+variants @code{iso-8859-1-unix}, @code{iso-8859-1-dos} and
address@hidden
+
+  In contrast, the coding system @code{binary} specifies no character
+code conversion at all---none for non-Latin-1 byte values and none for
+end of line.  This is useful for reading or writing binary files, tar
+files, and other files that must be examined verbatim.
+
+  The easiest way to edit a file with no conversion of any kind is with
+the @kbd{M-x find-file-literally} command.  This uses @code{binary}, and
+also suppresses other XEmacs features that might convert the file
+contents before you see them.  @xref{Visiting}.
+
+  The coding system @code{no-conversion} means that the file contains
+non-Latin-1 characters stored with the internal XEmacs encoding.  It
+handles end-of-line conversion based on the data encountered, and has
+the usual three variants to specify the kind of end-of-line conversion.
+
+
address@hidden Recognize Coding, Specify Coding, Coding Systems, Mule
address@hidden Recognizing Coding Systems
+
address@hidden #### This section is out of date.  The following 
set-*-coding-system
address@hidden functions are known:
+
address@hidden set-buffer-file-coding-system 
address@hidden set-buffer-file-coding-system-for-read
address@hidden set-buffer-process-coding-system
address@hidden set-console-tty-coding-system 
address@hidden set-console-tty-input-coding-system
address@hidden set-console-tty-output-coding-system
address@hidden set-default-buffer-file-coding-system
address@hidden set-default-coding-systems    
address@hidden set-default-file-coding-system
address@hidden set-file-coding-system        
address@hidden set-file-coding-system-for-read
address@hidden set-keyboard-coding-system    
address@hidden set-pathname-coding-system    
address@hidden set-process-coding-system     
address@hidden set-process-input-coding-system
address@hidden set-process-output-coding-system
address@hidden set-terminal-coding-system    
+
address@hidden Some are marked as broken.  Agenda: (1) Update this section using
address@hidden docstrings.  Note that they may be inaccurate.  (2) Correct the
address@hidden documentation here, updating docstrings at the same time.
+
address@hidden Document this.
+
address@hidden set-language-environment-coding-systems
+
address@hidden What are these?
+
address@hidden dontusethis-set-value-file-name-coding-system-handler
address@hidden dontusethis-set-value-keyboard-coding-system-handler
address@hidden dontusethis-set-value-terminal-coding-system-handler
+
+  Most of the time, XEmacs can recognize which coding system to use for
+any given file--once you have specified your preferences.
+
+  Some coding systems can be recognized or distinguished by which byte
+sequences appear in the data.  However, there are coding systems that
+cannot be distinguished, not even potentially.  For example, there is no
+way to distinguish between Latin-1 and Latin-2; they use the same byte
+values with different meanings.
+
+  XEmacs handles this situation by means of a priority list of coding
+systems.  Whenever XEmacs reads a file, if you do not specify the coding
+system to use, XEmacs checks the data against each coding system,
+starting with the first in priority and working down the list, until it
+finds a coding system that fits the data.  Then it converts the file
+contents assuming that they are represented in this coding system.
+
+  The priority list of coding systems depends on the selected language
+environment (@pxref{Language Environments}).  For example, if you use
+French, you probably want XEmacs to prefer Latin-1 to Latin-2; if you
+use Czech, you probably want Latin-2 to be preferred.  This is one of
+the reasons to specify a language environment.
+
address@hidden prefer-coding-system
+  However, you can alter the priority list in detail with the command
address@hidden prefer-coding-system}.  This command reads the name of a coding
+system from the minibuffer, and adds it to the front of the priority
+list, so that it is preferred to all others.  If you use this command
+several times, each use adds one element to the front of the priority
+list.
+
address@hidden file-coding-system-alist
+  Sometimes a file name indicates which coding system to use for the
+file.  The variable @code{file-coding-system-alist} specifies this
+correspondence.  There is a special function
address@hidden for adding elements to this list.  For
+example, to read and write all @samp{.txt} using the coding system
address@hidden, you can execute this Lisp expression:
+
address@hidden
+(modify-coding-system-alist 'file "\\.txt\\'" 'china-iso-8bit)
address@hidden smallexample
+
address@hidden
+The first argument should be @code{file}, the second argument should be
+a regular expression that determines which files this applies to, and
+the third argument says which coding system to use for these files.
+
address@hidden coding
+  You can specify the coding system for a particular file using the
address@hidden@dots{}-*-} construct at the beginning of a file, or a local
+variables list at the end (@pxref{File Variables}).  You do this by
+defining a value for the ``variable'' named @code{coding}.  XEmacs does
+not really have a variable @code{coding}; instead of setting a variable,
+it uses the specified coding system for the file.  For example,
address@hidden: C; coding: iso-8859-1;-*-} specifies use of the
+iso-8859-1 coding system, as well as C mode.
+
address@hidden buffer-file-coding-system
+  Once XEmacs has chosen a coding system for a buffer, it stores that
+coding system in @code{buffer-file-coding-system} and uses that coding
+system, by default, for operations that write from this buffer into a
+file.  This includes the commands @code{save-buffer} and
address@hidden  If you want to write files from this buffer using
+a different coding system, you can specify a different coding system for
+the buffer using @code{set-buffer-file-coding-system} (@pxref{Specify
+Coding}).
+
+
address@hidden Specify Coding,  , Recognize Coding, Mule
address@hidden Specifying a Coding System
+
+  In cases where XEmacs does not automatically choose the right coding
+system, you can use these commands to specify one:
+
address@hidden @kbd
address@hidden C-x @key{RET} f @var{coding} @key{RET}
+Use coding system @var{coding} for the visited file
+in the current buffer.
+
address@hidden C-x @key{RET} c @var{coding} @key{RET}
+Specify coding system @var{coding} for the immediately following
+command.
+
address@hidden C-x @key{RET} k @var{coding} @key{RET}
+Use coding system @var{coding} for keyboard input.  (This feature is
+non-functional and is temporarily disabled.)
+
address@hidden C-x @key{RET} t @var{coding} @key{RET}
+Use coding system @var{coding} for terminal output.
+
address@hidden C-x @key{RET} p @var{coding} @key{RET}
+Use coding system @var{coding} for subprocess input and output
+in the current buffer.
address@hidden table
+
address@hidden C-x RET f
address@hidden set-buffer-file-coding-system
+  The command @kbd{C-x RET f} (@code{set-buffer-file-coding-system})
+specifies the file coding system for the current buffer---in other
+words, which coding system to use when saving or rereading the visited
+file.  You specify which coding system using the minibuffer.  Since this
+command applies to a file you have already visited, it affects only the
+way the file is saved.
+
address@hidden C-x RET c
address@hidden universal-coding-system-argument
+  Another way to specify the coding system for a file is when you visit
+the file.  First use the command @kbd{C-x @key{RET} c}
+(@code{universal-coding-system-argument}); this command uses the
+minibuffer to read a coding system name.  After you exit the minibuffer,
+the specified coding system is used for @emph{the immediately following
+command}.
+
+  So if the immediately following command is @kbd{C-x C-f}, for example,
+it reads the file using that coding system (and records the coding
+system for when the file is saved).  Or if the immediately following
+command is @kbd{C-x C-w}, it writes the file using that coding system.
+Other file commands affected by a specified coding system include
address@hidden C-i} and @kbd{C-x C-v}, as well as the other-window variants of
address@hidden C-f}.
+
+  In addition, if you run some file input commands with the precedent
address@hidden, you can specify coding system to read from minibuffer.  So if
+the immediately following command is @kbd{C-x C-f}, for example, it
+reads the file using that coding system (and records the coding system
+for when the file is saved).  Other file commands affected by a
+specified coding system include @kbd{C-x C-i} and @kbd{C-x C-v}, as well
+as the other-window variants of @kbd{C-x C-f}.
+
address@hidden default-buffer-file-coding-system
+  The variable @code{default-buffer-file-coding-system} specifies the
+choice of coding system to use when you create a new file.  It applies
+when you find a new file, and when you create a buffer and then save it
+in a file.  Selecting a language environment typically sets this
+variable to a good choice of default coding system for that language
+environment.
+
address@hidden C-x RET t
address@hidden set-terminal-coding-system
+  The command @kbd{C-x @key{RET} t} (@code{set-terminal-coding-system})
+specifies the coding system for terminal output.  If you specify a
+character code for terminal output, all characters output to the
+terminal are translated into that coding system.
+
+  This feature is useful for certain character-only terminals built to
+support specific languages or character sets---for example, European
+terminals that support one of the ISO Latin character sets.
+
+  By default, output to the terminal is not translated at all.
+
address@hidden C-x RET k
address@hidden set-keyboard-coding-system
+  The command @kbd{C-x @key{RET} k} (@code{set-keyboard-coding-system})
+specifies the coding system for keyboard input.  Character-code
+translation of keyboard input is useful for terminals with keys that
+send non-ASCII graphic characters---for example, some terminals designed
+for ISO Latin-1 or subsets of it.
+
+  By default, keyboard input is not translated at all.
+
+  There is a similarity between using a coding system translation for
+keyboard input, and using an input method: both define sequences of
+keyboard input that translate into single characters.  However, input
+methods are designed to be convenient for interactive use by humans, and
+the sequences that are translated are typically sequences of ASCII
+printing characters.  Coding systems typically translate sequences of
+non-graphic characters.
+
+(This feature is non-functional and is temporarily disabled.)
+
address@hidden C-x RET p
address@hidden set-buffer-process-coding-system
+  The command @kbd{C-x @key{RET} p} (@code{set-buffer-process-coding-system})
+specifies the coding system for input and output to a subprocess.  This
+command applies to the current buffer; normally, each subprocess has its
+own buffer, and thus you can use this command to specify translation to
+and from a particular subprocess by giving the command in the
+corresponding buffer.
+
+  By default, process input and output are not translated at all.
+
address@hidden file-name-coding-system
+  The variable @code{file-name-coding-system} specifies a coding system
+to use for encoding file names.  If you set the variable to a coding
+system name (as a Lisp symbol or a string), XEmacs encodes file names
+using that coding system for all file operations.  This makes it
+possible to use non-Latin-1 characters in file names---or, at least,
+those non-Latin-1 characters which the specified coding system can
+encode.  By default, this variable is @code{nil}, which implies that you
+cannot use non-Latin-1 characters in file names.
+
address@hidden Major Modes, Indentation, Mule, Top
address@hidden Major Modes
address@hidden major modes
address@hidden TAB
address@hidden DEL
address@hidden LFD
+
+  Emacs has many different @dfn{major modes}, each of which customizes
+Emacs for editing text of a particular sort.  The major modes are mutually
+exclusive;  at any time, each buffer has one major mode.  The mode line
+normally contains the name of the current major mode in parentheses.
address@hidden Line}.
+
+  The least specialized major mode is called @dfn{Fundamental mode}.  This
+mode has no mode-specific redefinitions or variable settings.  Each
+Emacs command behaves in its most general manner, and each option is in its
+default state.  For editing any specific type of text, such as Lisp code or
+English text, you should switch to the appropriate major mode, such as Lisp
+mode or Text mode.
+
+  Selecting a major mode changes the meanings of a few keys to become
+more specifically adapted to the language being edited.  @key{TAB},
address@hidden, and @key{LFD} are changed frequently.  In addition, commands
+which handle comments use the mode to determine how to delimit comments.
+Many major modes redefine the syntactical properties of characters
+appearing in the buffer.  @xref{Syntax}.
+
+  The major modes fall into three major groups.  Lisp mode (which has
+several variants), C mode, and Muddle mode are for specific programming
+languages.  Text mode, Nroff mode, @TeX{} mode, and Outline mode are for
+editing English text.  The remaining major modes are not intended for use
+on users' files; they are used in buffers created by Emacs for specific
+purposes and include Dired mode for buffers made by Dired (@pxref{Dired}),
+Mail mode for buffers made by @kbd{C-x m} (@pxref{Sending Mail}), and Shell
+mode for buffers used for communicating with an inferior shell process
+(@pxref{Interactive Shell}).
+
+  Most programming language major modes specify that only blank lines
+separate paragraphs.  This is so that the paragraph commands remain useful.
address@hidden  They also cause Auto Fill mode to use the definition of
address@hidden to indent the new lines it creates.  This is because most lines
+in a program are usually indented.  @xref{Indentation}.
+
address@hidden
+* Choosing Modes::     How major modes are specified or chosen.
address@hidden menu
+
address@hidden Choosing Modes,,Major Modes,Major Modes
address@hidden Choosing Major Modes
+
+  You can select a major mode explicitly for the current buffer, but
+most of the time Emacs determines which mode to use based on the file
+name or some text in the file.
+
+  Use a @kbd{M-x} command to explicitly select a new major mode.  Add
address@hidden to the name of a major mode to get the name of a command to
+select that mode.  For example, to enter Lisp mode, execute @kbd{M-x
+lisp-mode}.
+
address@hidden auto-mode-alist
+  When you visit a file, Emacs usually chooses the right major mode
+based on the file's name.  For example, files whose names end in
address@hidden are edited in C mode.  The variable @code{auto-mode-alist}
+controls the correspondence between file names and major mode.  Its value
+is a list in which each element has the form:
+
address@hidden
+(@var{regexp} . @var{mode-function})
address@hidden example
+
address@hidden
+For example, one element normally found in the list has the form
address@hidden(@t{"\\.c$"} . c-mode)}. It is responsible for selecting C mode
+for files whose names end in @file{.c}.  (Note that @samp{\\} is needed in
+Lisp syntax to include a @samp{\} in the string, which is needed to
+suppress the special meaning of @samp{.} in regexps.)  The only practical
+way to change this variable is with Lisp code.
+
+  You can specify which major mode should be used for editing a certain
+file by a special sort of text in the first non-blank line of the file.
+The mode name should appear in this line both preceded and followed by
address@hidden  Other text may appear on the line as well.  For example,
+
address@hidden
+;-*-Lisp-*-
address@hidden example
+
address@hidden
+tells Emacs to use Lisp mode.  Note how the semicolon is used to make Lisp
+treat this line as a comment.  Such an explicit specification overrides any
+default mode based on the file name.
+
+  Another format of mode specification is:
+
address@hidden
+-*-Mode: @var{modename};-*-
address@hidden example
+
address@hidden
+which allows other things besides the major mode name to be specified.
+However, Emacs does not look for anything except the mode name.
+
+The major mode can also be specified in a local variables list.
address@hidden Variables}.
+
address@hidden default-major-mode
+  When you visit a file that does not specify a major mode to use, or
+when you create a new buffer with @kbd{C-x b}, Emacs uses the major mode
+specified by the variable @code{default-major-mode}.  Normally this
+value is the symbol @code{fundamental-mode}, which specifies Fundamental
+mode.  If @code{default-major-mode} is @code{nil}, the major mode is
+taken from the previously selected buffer.
+
address@hidden Indentation, Text, Major Modes, Top
address@hidden Indentation
address@hidden indentation
+
address@hidden WideCommands
address@hidden @kbd
address@hidden @key{TAB}
+Indent current line ``appropriately'' in a mode-dependent fashion.
address@hidden @key{LFD}
+Perform @key{RET} followed by @key{TAB} (@code{newline-and-indent}).
address@hidden M-^
+Merge two lines (@code{delete-indentation}).  This would cancel out
+the effect of @key{LFD}.
address@hidden C-M-o
+Split line at point; text on the line after point becomes a new line
+indented to the same column that it now starts in (@code{split-line}).
address@hidden M-m
+Move (forward or back) to the first non-blank character on the current
+line (@code{back-to-indentation}).
address@hidden C-M-\
+Indent several lines to same column (@code{indent-region}).
address@hidden C-x @key{TAB}
+Shift block of lines rigidly right or left (@code{indent-rigidly}).
address@hidden M-i
+Indent from point to the next prespecified tab stop column
+(@code{tab-to-tab-stop}).
address@hidden M-x indent-relative
+Indent from point to under an indentation point in the previous line.
address@hidden table
+
address@hidden TAB
address@hidden indentation
+  Most programming languages have some indentation convention.  For Lisp
+code, lines are indented according to their nesting in parentheses.  The
+same general idea is used for C code, though details differ.
+
+   Use the @key{TAB} command to indent a line whatever the language.
+Each major mode defines this command to perform indentation appropriate
+for the particular language.  In Lisp mode, @key{TAB} aligns a line
+according to its depth in parentheses.  No matter where in the line you
+are when you type @key{TAB}, it aligns the line as a whole.  In C mode,
address@hidden implements a subtle and sophisticated indentation style that
+knows about many aspects of C syntax.
+
address@hidden TAB
+  In Text mode, @key{TAB} runs the command @code{tab-to-tab-stop}, which
+indents to the next tab stop column.  You can set the tab stops with
address@hidden edit-tab-stops}.
+
address@hidden
+* Indentation Commands:: Various commands and techniques for indentation.
+* Tab Stops::            You can set arbitrary "tab stops" and then
+                         indent to the next tab stop when you want to.
+* Just Spaces::          You can request indentation using just spaces.
address@hidden menu
+
address@hidden Indentation Commands, Tab Stops, Indentation, Indentation
address@hidden Indentation Commands and Techniques
address@hidden ??? Explain what Emacs has instead of space-indent-flag.
+
+  If you just want to insert a tab character in the buffer, you can type
address@hidden @key{TAB}}.
+
address@hidden M-m
address@hidden back-to-indentation
+  To move over the indentation on a line, type @kbd{Meta-m}
+(@code{back-to-indentation}).  This command, given anywhere on a line,
+positions point at the first non-blank character on the line.
+
+  To insert an indented line before the current line, type @kbd{C-a C-o
address@hidden  To make an indented line after the current line, use
address@hidden @key{LFD}}.
+
address@hidden C-M-o
address@hidden split-line
+  @kbd{C-M-o} (@code{split-line}) moves the text from point to the end of
+the line vertically down, so that the current line becomes two lines.
address@hidden first moves point forward over any spaces and tabs.  Then it
+inserts after point a newline and enough indentation to reach the same
+column point is on.  Point remains before the inserted newline; in this
+regard, @kbd{C-M-o} resembles @kbd{C-o}.
+
address@hidden M-\
address@hidden M-^
address@hidden delete-horizontal-space
address@hidden delete-indentation
+  To join two lines cleanly, use the @kbd{Meta-^}
+(@code{delete-indentation}) command to delete the indentation at the
+front of the current line, and the line boundary as well.  Empty spaces
+are replaced by a single space, or by no space if at the beginning of a
+line, before a close parenthesis, or after an open parenthesis.  
+To delete just the indentation of a line, go to the beginning of the 
+line and use @kbd{Meta-\} (@code{delete-horizontal-space}), which 
+deletes all spaces and tabs around the cursor.
+
address@hidden C-M-\
address@hidden C-x TAB
address@hidden indent-region
address@hidden indent-rigidly
+  There are also commands for changing the indentation of several lines at
+once.  @kbd{Control-Meta-\} (@code{indent-region}) gives each line which
+begins in the region the ``usual'' indentation by invoking @key{TAB} at the
+beginning of the line.  A numeric argument specifies the column to indent
+to.  Each line is shifted left or right so that its first non-blank
+character appears in that column.  @kbd{C-x @key{TAB}}
+(@code{indent-rigidly}) moves all the lines in the region right by its
+argument (left, for negative arguments).  The whole group of lines moves
+rigidly sideways, which is how the command gets its address@hidden
+
address@hidden indent-relative
+  @kbd{M-x indent-relative} indents at point based on the previous line
+(actually, the last non-empty line.)  It inserts whitespace at point, moving
+point, until it is underneath an indentation point in the previous line.
+An indentation point is the end of a sequence of whitespace or the end of
+the line.  If point is farther right than any indentation point in the
+previous line, the whitespace before point is deleted and the first
+indentation point then applicable is used.  If no indentation point is
+applicable even then, @code{tab-to-tab-stop} is run (see next section).
+
+  @code{indent-relative} is the definition of @key{TAB} in Indented Text
+mode.  @xref{Text}.
+
address@hidden Tab Stops, Just Spaces, Indentation Commands, Indentation
address@hidden Tab Stops
+
address@hidden M-i
address@hidden tab-to-tab-stop
+  For typing in tables, you can use Text mode's definition of @key{TAB},
address@hidden  This command inserts indentation before point,
+enough to reach the next tab stop column.  Even if you are not in Text mode,
+this function is associated with @kbd{M-i} anyway.
+
address@hidden edit-tab-stops
address@hidden edit-tab-stops-note-changes
address@hidden C-c C-c (Edit Tab Stops)
address@hidden tab-stop-list
+  You can arbitrarily set the tab stops used by @kbd{M-i}.  They are
+stored as a list of column-numbers in increasing order in the variable
address@hidden
+
+  The convenient way to set the tab stops is using @kbd{M-x edit-tab-stops},
+which creates and selects a buffer containing a description of the tab stop
+settings.  You can edit this buffer to specify different tab stops, and
+then type @kbd{C-c C-c} to make those new tab stops take effect.  In the
+tab stop buffer, @kbd{C-c C-c} runs the function
address@hidden rather than the default
address@hidden  @code{edit-tab-stops} records which buffer was current
+when you invoked it, and stores the tab stops in that buffer.  Normally
+all buffers share the same tab stops and changing them in one buffer
+affects all.  If you make @code{tab-stop-list} local in one
+buffer @code{edit-tab-stops} in that buffer edits only the local
+settings.
+
+  Below is the text representing ordinary tab stops every eight columns:
+
address@hidden
+        :       :       :       :       :       :
+0         1         2         3         4
+0123456789012345678901234567890123456789012345678
+To install changes, type C-c C-c
address@hidden example
+
+  The first line contains a colon at each tab stop.  The remaining lines
+help you see where the colons are and tell you what to do.
+
+  Note that the tab stops that control @code{tab-to-tab-stop} have nothing
+to do with displaying tab characters in the buffer.  @xref{Display Vars},
+for more information on that.
+
address@hidden Just Spaces,, Tab Stops, Indentation
address@hidden Tabs vs. Spaces
+
address@hidden indent-tabs-mode
+  Emacs normally uses both tabs and spaces to indent lines.  If you prefer,
+all indentation can be made from spaces only.  To request this, set
address@hidden to @code{nil}.  This is a per-buffer variable;
+altering the variable affects only the current buffer, but there is a
+default value which you can change as well.  @xref{Locals}.
+
address@hidden tabify
address@hidden untabify
+  There are also commands to convert tabs to spaces or vice versa, always
+preserving the columns of all non-blank text.  @kbd{M-x tabify} scans the
+region for sequences of spaces, and converts sequences of at least three
+spaces to tabs if that is possible without changing indentation.  @kbd{M-x
+untabify} changes all tabs in the region to corresponding numbers of spaces.
+
address@hidden Text, Programs, Indentation, Top
address@hidden Commands for Human Languages
address@hidden text
+
+  The term @dfn{text} has two widespread meanings in our area of the
+computer field.  One is data that is a sequence of characters.  In this
+sense of the word any file that you edit with Emacs is text.  The other
+meaning is more restrictive: a sequence of characters in a human
+language for humans to read (possibly after processing by a text
+formatter), as opposed to a program or commands for a program.
+
+  Human languages have syntactic and stylistic conventions that editor
+commands should support or use to advantage: conventions involving
+words, sentences, paragraphs, and capital letters.  This chapter describes
+Emacs commands for all these things.  There are also commands for
address@hidden, or rearranging paragraphs into lines of approximately equal
+length.  The commands for moving over and killing words, sentences,
+and paragraphs, while intended primarily for editing text, are also often
+useful for editing programs.
+
+  Emacs has several major modes for editing human language text.
+If a file contains plain text, use Text mode, which customizes
+Emacs in small ways for the syntactic conventions of text.  For text which
+contains embedded commands for text formatters, Emacs has other major modes,
+each for a particular text formatter.  Thus, for input to @TeX{}, you can
+use @TeX{} mode; for input to nroff, Nroff mode.
+
address@hidden
+* Text Mode::   The major modes for editing text files.
+* Nroff Mode::  The major mode for editing input to the formatter nroff.
+* TeX Mode::    The major modes for editing input to the formatter TeX.
+* Outline Mode:: The major mode for editing outlines.
+* Words::       Moving over and killing words.
+* Sentences::   Moving over and killing sentences.
+* Paragraphs:: Moving over paragraphs.
+* Pages::      Moving over pages.
+* Filling::     Filling or justifying text
+* Case::        Changing the case of text
address@hidden menu
+
address@hidden Text Mode, Words, Text, Text
address@hidden Text Mode
+
address@hidden tab-to-tab-stop
address@hidden edit-tab-stops
address@hidden Text mode
address@hidden TAB
address@hidden text-mode
+  You should use Text mode---rather than Fundamental or Lisp mode---to
+edit files of text in a human language.  Invoke @kbd{M-x text-mode} to
+enter Text mode.  In Text mode, @key{TAB} runs the function
address@hidden, which allows you to use arbitrary tab stops set
+with @kbd{M-x edit-tab-stops} (@pxref{Tab Stops}).  Features concerned
+with comments in programs are turned off unless they are explicitly invoked.
+The syntax table is changed so that periods are not considered part of a
+word, while apostrophes, backspaces and underlines are.
+
address@hidden indented-text-mode
+  A similar variant mode is Indented Text mode, intended for editing
+text in which most lines are indented.  This mode defines @key{TAB} to
+run @code{indent-relative} (@pxref{Indentation}), and makes Auto Fill
+indent the lines it creates.  As a result, a line made by Auto Filling,
+or by @key{LFD}, is normally indented just like the previous line.  Use
address@hidden indented-text-mode} to select this mode.
+
address@hidden text-mode-hook
+  Entering Text mode or Indented Text mode calls the value of the
+variable @code{text-mode-hook} with no arguments, if that value exists
+and is not @code{nil}.  This value is also called when modes related to
+Text mode are entered; this includes Nroff mode, @TeX{} mode, Outline
+mode, and Mail mode.  Your hook can look at the value of
address@hidden to see which of these modes is actually being entered.
+
+  Two modes similar to Text mode are of use for editing text that is to
+be passed through a text formatter before achieving its final readable form.
+
address@hidden
+* Nroff Mode::  The major mode for editing input to the formatter nroff.
+* TeX Mode::    The major modes for editing input to the formatter TeX.
+
+
+  Another similar mode is used for editing outlines.  It allows you
+to view the text at various levels of detail.  You can view either
+the outline headings alone or both headings and text; you can also
+hide some of the headings at lower levels from view to make the high
+level structure more visible.
+
+
+* Outline Mode:: The major mode for editing outlines.
address@hidden menu
+
address@hidden Nroff Mode, TeX Mode, Text Mode, Text Mode
address@hidden Nroff Mode
+
address@hidden nroff
address@hidden nroff-mode
+  Nroff mode is a mode like Text mode but modified to handle nroff
+commands present in the text.  Invoke @kbd{M-x nroff-mode} to enter this
+mode.  Nroff mode differs from Text mode in only a few ways.  All nroff
+command lines are considered paragraph separators, so that filling never
+garbles the nroff commands.  Pages are separated by @samp{.bp} commands.
+Comments start with backslash-doublequote.  There are also three special
+commands that are not available in Text mode:
+
address@hidden forward-text-line
address@hidden backward-text-line
address@hidden count-text-lines
address@hidden M-n
address@hidden M-p
address@hidden M-?
address@hidden @kbd
address@hidden M-n
+Move to the beginning of the next line that isn't an nroff command
+(@code{forward-text-line}).  An argument is a repeat count.
address@hidden M-p
+Like @kbd{M-n} but move up (@code{backward-text-line}).
address@hidden M-?
+Prints in the echo area the number of text lines (lines that are not
+nroff commands) in the region (@code{count-text-lines}).
address@hidden table
+
address@hidden electric-nroff-mode
+  The other feature of Nroff mode is Electric Nroff newline mode.  
+This is a minor mode that you can turn on or off with
address@hidden electric-nroff-mode} (@pxref{Minor Modes}).  When the mode is
+on and you use @key{RET} to end a line containing an nroff command
+that opens a kind of grouping, Emacs automatically inserts the matching
+nroff command to close that grouping on the following line.  For
+example, if you are at the beginning of a line and type @kbd{.@:(b
address@hidden, the matching command @samp{.)b} will be inserted on a new
+line following point.
+
address@hidden nroff-mode-hook
+  Entering Nroff mode calls the value of the variable
address@hidden with no arguments, if that value exists and is not
address@hidden; then it does the same with the variable
address@hidden
+
address@hidden TeX Mode, Outline Mode, Nroff Mode, Text Mode
address@hidden @TeX{} Mode
address@hidden TeX
address@hidden LaTeX
address@hidden TeX-mode
address@hidden tex-mode
address@hidden plain-tex-mode
address@hidden LaTeX-mode
address@hidden plain-TeX-mode
address@hidden latex-mode
+
+  @TeX{} is a powerful text formatter written by Donald Knuth; like GNU
+Emacs, it is free.  address@hidden is a simplified input format for @TeX{},
+implemented by @TeX{} macros.  It is part of @address@hidden
+
+  Emacs has a special @TeX{} mode for editing @TeX{} input files.
+It provides facilities for checking the balance of delimiters and for
+invoking @TeX{} on all or part of the file.
+
+  @TeX{} mode has two variants, Plain @TeX{} mode and address@hidden mode,
+which are two distinct major modes that differ only slightly.  These
+modes are designed for editing the two different input formats.  The
+command @kbd{M-x tex-mode} looks at the contents of a buffer to
+determine whether it appears to be address@hidden input or not; it then
+selects the appropriate mode.  If it can't tell which is right (e.g.,
+the buffer is empty), the variable @code{tex-default-mode} controls
+which mode is used.
+
+  The commands @kbd{M-x plain-tex-mode} and @kbd{M-x latex-mode}
+explicitly select one of the variants of @TeX{} mode.  Use these
+commands when @kbd{M-x tex-mode} does not guess address@hidden
+
address@hidden
+* Editing: TeX Editing.   Special commands for editing in TeX mode.
+* Printing: TeX Print.    Commands for printing part of a file with TeX.
address@hidden menu
+
+  @TeX{} for Unix systems can be obtained from the University of Washington
+for a distribution fee.
+
+  To order a full distribution, send $140.00 for a 1/2 inch
+9-track tape, $165.00 for two 4-track 1/4 inch cartridge tapes
+(foreign sites $150.00, for 1/2 inch, $175.00 for 1/4 inch, to cover
+the extra postage) payable to the University of Washington to:
+
address@hidden
+The Director
+Northwest Computer Support Group,  DW-10
+University of Washington
+Seattle, Washington 98195
address@hidden display
+
address@hidden
+Purchase orders are acceptable, but there is an extra charge of
+$10.00 to pay for processing charges. (The total cost comes to $150 
+for domestic sites, $175 for foreign sites).
+
+  The normal distribution is a tar tape, blocked 20, 1600 bpi, on an
+industry standard 2400 foot half-inch reel.  The physical format for
+the 1/4 inch streamer cartridges uses QIC-11, 8000 bpi, 4-track
+serpentine recording for the SUN.  Also, SystemV tapes can be written
+in cpio format, blocked 5120 bytes, ASCII headers.
+
address@hidden TeX Editing,TeX Print,TeX Mode,TeX Mode
address@hidden @TeX{} Editing Commands
+
+  Here are the special commands provided in @TeX{} mode for editing the
+text of the file.
+
address@hidden @kbd
address@hidden "
+Insert, according to context, either @samp{``} or @samp{"} or
address@hidden''} (@code{TeX-insert-quote}).
address@hidden @key{LFD}
+Insert a paragraph break (two newlines) and check the previous
+paragraph for unbalanced braces or dollar signs
+(@address@hidden).
address@hidden M-x validate-tex-buffer
+Check each paragraph in the buffer for unbalanced braces or dollar signs.
address@hidden C-c @{
+Insert @address@hidden@}} and position point between them 
(@code{tex-insert-braces}).
address@hidden C-c @}
+Move forward past the next unmatched close brace (@code{up-list}).
address@hidden C-c C-e
+Close a block for address@hidden (@code{tex-close-latex-block}).
address@hidden table
+
address@hidden tex-insert-quote
address@hidden " (TeX mode)
+  In @TeX{}, the character @samp{"} is not normally used; you use @samp{``}
+to start a quotation and @samp{''} to end one.  @TeX{} mode defines the key
address@hidden"} to insert @samp{``} after whitespace or an open brace, @samp{"}
+after a backslash, or @samp{''} otherwise.  This is done by the command
address@hidden  If you need the character @samp{"} itself in
+unusual contexts, use @kbd{C-q} to insert it.  Also, @kbd{"} with a
+numeric argument always inserts that number of @samp{"} characters.
+
+  In @TeX{} mode, @samp{$} has a special syntax code which attempts to
+understand the way @TeX{} math mode delimiters match.  When you insert a
address@hidden that is meant to exit math mode, the position of the matching
address@hidden that entered math mode is displayed for a second.  This is the
+same feature that displays the open brace that matches a close brace that
+is inserted.  However, there is no way to tell whether a @samp{$} enters
+math mode or leaves it; so when you insert a @samp{$} that enters math
+mode, the previous @samp{$} position is shown as if it were a match, even
+though they are actually unrelated.
+
address@hidden tex-insert-braces
address@hidden C-c @{ (TeX mode)
address@hidden up-list
address@hidden C-c @} (TeX mode)
+  If you prefer to keep braces balanced at all times, you can use @kbd{C-c @{}
+(@code{tex-insert-braces}) to insert a pair of braces.  It leaves point
+between the two braces so you can insert the text that belongs inside.
+Afterward, use the command @kbd{C-c @}} (@code{up-list}) to move forward
+past the close brace.
+
address@hidden validate-tex-buffer
address@hidden tex-terminate-paragraph
address@hidden LFD (TeX mode)
+  There are two commands for checking the matching of braces.  @key{LFD}
+(@code{tex-terminate-paragraph}) checks the paragraph before point, and
+inserts two newlines to start a new paragraph.  It prints a message in the
+echo area if any mismatch is found.  @kbd{M-x validate-tex-buffer} checks
+the entire buffer, paragraph by paragraph.  When it finds a paragraph that
+contains a mismatch, it displays point at the beginning of the paragraph
+for a few seconds and pushes a mark at that spot.  Scanning continues
+until the whole buffer has been checked or until you type another key.
+The positions of the last several paragraphs with mismatches can be
+found in the mark ring (@pxref{Mark Ring}).
+
+  Note that square brackets and parentheses, not just braces, are
+matched in @TeX{} mode.  This is wrong if you want to  check @TeX{} syntax.
+However, parentheses and square brackets are likely to be used in text as
+matching delimiters and it is useful for the various motion commands and
+automatic match display to work with them.
+
address@hidden tex-close-latex-block
address@hidden C-c C-f (LaTeX mode)
+  In address@hidden input, @samp{\begin} and @samp{\end} commands must balance.
+After you insert a @samp{\begin}, use @kbd{C-c C-f}
+(@code{tex-close-latex-block}) to insert automatically a matching
address@hidden (on a new line following the @samp{\begin}).  A blank line is
+inserted between the two, and point is left address@hidden
+
address@hidden TeX Print,,TeX Editing,TeX Mode
address@hidden @TeX{} Printing Commands
+
+  You can invoke @TeX{} as an inferior of Emacs on either the entire
+contents of the buffer or just a region at a time.  Running @TeX{} in
+this way on just one chapter is a good way to see what your changes
+look like without taking the time to format the entire file.
+
address@hidden @kbd
address@hidden C-c C-r
+Invoke @TeX{} on the current region, plus the buffer's header
+(@code{tex-region}).
address@hidden C-c C-b
+Invoke @TeX{} on the entire current buffer (@code{tex-buffer}).
address@hidden C-c C-l
+Recenter the window showing output from the inferior @TeX{} so that
+the last line can be seen (@code{tex-recenter-output-buffer}).
address@hidden C-c C-k
+Kill the inferior @TeX{} (@code{tex-kill-job}).
address@hidden C-c C-p
+Print the output from the last @kbd{C-c C-r} or @kbd{C-c C-b} command
+(@code{tex-print}).
address@hidden C-c C-q
+Show the printer queue (@code{tex-show-print-queue}).
address@hidden table
+
address@hidden tex-buffer
address@hidden C-c C-b (TeX mode)
address@hidden tex-print
address@hidden C-c C-p (TeX mode)
address@hidden tex-show-print-queue
address@hidden C-c C-q (TeX mode)
+  You can pass the current buffer through an inferior @TeX{} using
address@hidden C-b} (@code{tex-buffer}).  The formatted output appears in a file
+in @file{/tmp}; to print it, type @kbd{C-c C-p} (@code{tex-print}).
+Afterward use @kbd{C-c C-q} (@code{tex-show-print-queue}) to view the
+progress of your output towards being printed.
+
address@hidden tex-kill-job
address@hidden C-c C-k (TeX mode)
address@hidden tex-recenter-output-buffer
address@hidden C-c C-l (TeX mode)
+  The console output from @TeX{}, including any error messages, appears in a
+buffer called @samp{*TeX-shell*}.  If @TeX{} gets an error, you can switch
+to this buffer and feed it input (this works as in Shell mode;
address@hidden Shell}).  Without switching to this buffer, you can scroll
+it so that its last line is visible by typing @kbd{C-c C-l}.
+
+  Type @kbd{C-c C-k} (@code{tex-kill-job}) to kill the @TeX{} process if
+you see that its output is no longer useful.  Using @kbd{C-c C-b} or
address@hidden C-r} also kills any @TeX{} process still address@hidden
+
address@hidden tex-region
address@hidden C-c C-r (TeX mode)
+  You can pass an arbitrary region through an inferior @TeX{} by typing
address@hidden C-r} (@code{tex-region}).  This is tricky, however, because
+most files of @TeX{} input contain commands at the beginning to set
+parameters and define macros.  Without them, no later part of the file
+will format correctly.  To solve this problem, @kbd{C-c C-r} allows you
+to designate a part of the file as containing essential commands; it is
+included before the specified region as part of the input to @TeX{}.
+The designated part of the file is called the @dfn{header}.
+
address@hidden header (TeX mode)
+  To indicate the bounds of the header in Plain @TeX{} mode, insert two
+special strings in the file: @samp{%**start of header} before the
+header, and @samp{%**end of header} after it.  Each string must appear
+entirely on one line, but there may be other text on the line before or
+after.  The lines containing the two strings are included in the header.
+If @samp{%**start of header} does not appear within the first 100 lines of
+the buffer, @kbd{C-c C-r} assumes there is no header.
+
+  In address@hidden mode, the header begins with @samp{\documentstyle} and ends
+with @address@hidden@address@hidden  These are commands that address@hidden 
requires
+you to use, so you don't need to do anything special to identify the
+header.
+
address@hidden TeX-mode-hook
address@hidden LaTeX-mode-hook
address@hidden plain-TeX-mode-hook
+  When you enter either kind of @TeX{} mode, Emacs calls with no
+arguments the value of the variable @code{text-mode-hook}, if that value
+exists and is not @code{nil}.  Emacs then calls the variable
address@hidden and either @code{plain-TeX-mode-hook} or
address@hidden under the same conditions.
+
address@hidden Outline Mode,, TeX Mode, Text Mode
address@hidden Outline Mode
address@hidden outlines
address@hidden selective display
address@hidden invisible lines
+
+  Outline mode is a major mode similar to Text mode but intended for editing
+outlines.  It allows you to make parts of the text temporarily invisible
+so that you can see just the overall structure of the outline.  Type
address@hidden outline-mode} to turn on Outline mode in the current buffer.
+
address@hidden outline-mode-hook
+  When you enter Outline mode, Emacs calls with no arguments the value
+of the variable @code{text-mode-hook}, if that value exists and is not
address@hidden; then it does the same with the variable
address@hidden
+
+  When a line is invisible in outline mode, it does not appear on the
+screen.  The screen appears exactly as if the invisible line
+were deleted, except that an ellipsis (three periods in a row) appears
+at the end of the previous visible line (only one ellipsis no matter
+how many invisible lines follow).
+
+  All editing commands treat the text of the invisible line as part of the
+previous visible line.  For example, @kbd{C-n} moves onto the next visible
+line.  Killing an entire visible line, including its terminating newline,
+really kills all the following invisible lines as well; yanking
+everything back yanks the invisible lines and they remain invisible.
+
address@hidden
+* Format: Outline Format.        What the text of an outline looks like.
+* Motion: Outline Motion.        Special commands for moving through outlines.
+* Visibility: Outline Visibility. Commands to control what is visible.
address@hidden menu
+
address@hidden Outline Format,Outline Motion,Outline Mode, Outline Mode
address@hidden Format of Outlines
+
address@hidden heading lines (Outline mode)
address@hidden body lines (Outline mode)
+  Outline mode assumes that the lines in the buffer are of two types:
address@hidden lines} and @dfn{body lines}.  A heading line represents a
+topic in the outline.  Heading lines start with one or more stars; the
+number of stars determines the depth of the heading in the outline
+structure.  Thus, a heading line with one star is a major topic; all the
+heading lines with two stars between it and the next one-star heading
+are its subtopics; and so on.  Any line that is not a heading line is a
+body line.  Body lines belong to the preceding heading line.  Here is an
+example:
+
address@hidden
+* Food
+
+This is the body,
+which says something about the topic of food.
+
+** Delicious Food
+
+This is the body of the second-level header.
+
+** Distasteful Food
+
+This could have
+a body too, with
+several lines.
+
+*** Dormitory Food
+
+* Shelter
+
+A second first-level topic with its header line.
address@hidden example
+
+  A heading line together with all following body lines is called
+collectively an @dfn{entry}.  A heading line together with all following
+deeper heading lines and their body lines is called a @dfn{subtree}.
+
address@hidden outline-regexp
+ You can customize the criterion for distinguishing heading lines by
+setting the variable @code{outline-regexp}.  Any line whose beginning
+has a match for this regexp is considered a heading line.  Matches that
+start within a line (not at the beginning) do not count.  The length of
+the matching text determines the level of the heading; longer matches
+make a more deeply nested level.  Thus, for example, if a text formatter
+has commands @samp{@@chapter}, @samp{@@section} and @samp{@@subsection}
+to divide the document into chapters and sections, you can make those
+lines count as heading lines by setting @code{outline-regexp} to
address@hidden"@@chap\\|@@\\(sub\\)*section"}.  Note the trick: the two words
address@hidden and @samp{section} are the same length, but by defining
+the regexp to match only @samp{chap} we ensure that the length of the
+text matched on a chapter heading is shorter, so that Outline mode will
+know that sections are contained in chapters.  This works as long as no
+other command starts with @samp{@@chap}.
+
+  Outline mode makes a line invisible by changing the newline before it
+into an ASCII Control-M (code 015).  Most editing commands that work on
+lines treat an invisible line as part of the previous line because,
+strictly speaking, it @i{is} part of that line, since there is no longer a
+newline in between.  When you save the file in Outline mode, Control-M
+characters are saved as newlines, so the invisible lines become ordinary
+lines in the file.  Saving does not change the visibility status of a
+line inside Emacs.
+
address@hidden Outline Motion,Outline Visibility,Outline Format,Outline Mode
address@hidden Outline Motion Commands
+
+   Some special commands in Outline mode move backward and forward to
+heading lines.
+
address@hidden @kbd
address@hidden C-c C-n
+Move point to the next visible heading line
+(@code{outline-next-visible-heading}).
address@hidden C-c C-p
+Move point to the previous visible heading line @*
+(@code{outline-previous-visible-heading}).
address@hidden C-c C-f
+Move point to the next visible heading line at the same level
+as the one point is on (@code{outline-forward-same-level}).
address@hidden C-c C-b
+Move point to the previous visible heading line at the same level
+(@code{outline-backward-same-level}).
address@hidden C-c C-u
+Move point up to a lower-level (more inclusive) visible heading line
+(@code{outline-up-heading}).
address@hidden table
+
address@hidden outline-next-visible-heading
address@hidden outline-previous-visible-heading
address@hidden C-c C-n (Outline mode)
address@hidden C-c C-p (Outline mode)
+  @kbd{C-c C-n} (@code{next-visible-heading}) moves down to the next
+heading line.  @kbd{C-c C-p} (@code{previous-visible-heading}) moves
+similarly backward.  Both accept numeric arguments as repeat counts.  The
+names emphasize that invisible headings are skipped, but this is not really
+a special feature.  All editing commands that look for lines ignore the
+invisible lines address@hidden
+
address@hidden outline-up-heading
address@hidden outline-forward-same-level
address@hidden outline-backward-same-level
address@hidden C-c C-f (Outline mode)
address@hidden C-c C-b (Outline mode)
address@hidden C-c C-u (Outline mode)
+  More advanced motion commands understand the levels of headings.
+The commands @kbd{C-c C-f} (@code{outline-forward-same-level}) and
address@hidden C-b} (@code{outline-backward-same-level}) move from one
+heading line to another visible heading at the same depth in
+the outline.  @kbd{C-c C-u} (@code{outline-up-heading}) moves
+backward to another heading that is less deeply nested.
+
address@hidden Outline Visibility,,Outline Motion,Outline Mode
address@hidden Outline Visibility Commands
+
+  The other special commands of outline mode are used to make lines visible
+or invisible.  Their names all start with @code{hide} or @code{show}.
+Most of them exist as pairs of opposites.  They are not undoable; instead,
+you can undo right past them.  Making lines visible or invisible is simply
+not recorded by the undo mechanism.
+
address@hidden @kbd
address@hidden M-x hide-body
+Make all body lines in the buffer invisible.
address@hidden M-x show-all
+Make all lines in the buffer visible.
address@hidden C-c C-d
+Make everything under this heading invisible, not including this
+heading itself (@code{hide-subtree}).
address@hidden C-c C-s
+Make everything under this heading visible, including body,
+subheadings, and their bodies (@code{show-subtree}).
address@hidden M-x hide-leaves
+Make the body of this heading line, and of all its subheadings,
+invisible.
address@hidden M-x show-branches
+Make all subheadings of this heading line, at all levels, visible.
address@hidden C-c C-i
+Make immediate subheadings (one level down) of this heading line
+visible (@code{show-children}).
address@hidden M-x hide-entry
+Make this heading line's body invisible.
address@hidden M-x show-entry
+Make this heading line's body visible.
address@hidden table
+
address@hidden hide-entry
address@hidden show-entry
+  Two commands that are exact opposites are @kbd{M-x hide-entry} and
address@hidden show-entry}.  They are used with point on a heading line, and
+apply only to the body lines of that heading.  The subtopics and their
+bodies are not affected.
+
address@hidden hide-subtree
address@hidden show-subtree
address@hidden C-c C-d (Outline mode)
address@hidden C-c C-h (Outline mode)
address@hidden subtree (Outline mode)
+  Two more powerful opposites are @kbd{C-c C-d} (@code{hide-subtree}) and
address@hidden C-s} (@code{show-subtree}).  Both should be used when point is
+on a heading line, and both apply to all the lines of that heading's
address@hidden: its body, all its subheadings, both direct and indirect, and
+all of their bodies.  In other words, the subtree contains everything
+following this heading line, up to and not including the next heading of
+the same or higher address@hidden
+
address@hidden hide-leaves
address@hidden show-branches
+  Intermediate between a visible subtree and an invisible one is having
+all the subheadings visible but none of the body.  There are two commands
+for doing this, one that hides the bodies and one that
+makes the subheadings visible.  They are @kbd{M-x hide-leaves} and
address@hidden show-branches}.
+
address@hidden C-c C-i (Outline mode)
address@hidden show-children
+  A little weaker than @code{show-branches} is @kbd{C-c C-i}
+(@code{show-children}).  It makes just the direct subheadings
+visible---those one level down.  Deeper subheadings remain
address@hidden
+
address@hidden hide-body
address@hidden show-all
+  Two commands have a blanket effect on the whole file.  @kbd{M-x
+hide-body} makes all body lines invisible, so that you see just the
+outline structure.  @kbd{M-x show-all} makes all lines visible.  You can
+think of these commands as a pair of opposites even though @kbd{M-x
+show-all} applies to more than just body lines.
+
address@hidden selective-display-ellipses
+You can turn off the use of ellipses at the ends of visible lines by
+setting @code{selective-display-ellipses} to @code{nil}.  The result is
+no visible indication of the presence of invisible lines.
+
address@hidden Words, Sentences, Text Mode, Text
address@hidden Words
address@hidden words
address@hidden Meta
+
+  Emacs has commands for moving over or operating on words.  By convention,
+the keys for them are all @kbd{Meta-} characters.
+
address@hidden widecommands
address@hidden @kbd
address@hidden M-f
+Move forward over a word (@code{forward-word}).
address@hidden M-b
+Move backward over a word (@code{backward-word}).
address@hidden M-d
+Kill up to the end of a word (@code{kill-word}).
address@hidden address@hidden
+Kill back to the beginning of a word (@code{backward-kill-word}).
address@hidden M-@@
+Mark the end of the next word (@code{mark-word}).
address@hidden M-t
+Transpose two words;  drag a word forward
+or backward across other words (@code{transpose-words}).
address@hidden table
+
+  Notice how these keys form a series that parallels the
+character-based @kbd{C-f}, @kbd{C-b}, @kbd{C-d}, @kbd{C-t} and
address@hidden  @kbd{M-@@} is related to @kbd{C-@@}, which is an alias for
address@hidden@address@hidden
+
address@hidden M-f
address@hidden M-b
address@hidden forward-word
address@hidden backward-word
+  The commands @kbd{Meta-f} (@code{forward-word}) and @kbd{Meta-b}
+(@code{backward-word}) move forward and backward over words.  They are
+analogous to @kbd{Control-f} and @kbd{Control-b}, which move over single
+characters.  Like their @kbd{Control-} analogues, @kbd{Meta-f} and
address@hidden move several words if given an argument.  @kbd{Meta-f} with a
+negative argument moves backward, and @kbd{Meta-b} with a negative argument
+moves forward.  Forward motion stops after the last letter of the
+word, while backward motion stops before the first address@hidden
+
address@hidden M-d
address@hidden kill-word
+  @kbd{Meta-d} (@code{kill-word}) kills the word after point.  To be
+precise, it kills everything from point to the place @kbd{Meta-f} would
+move to.  Thus, if point is in the middle of a word, @kbd{Meta-d} kills
+just the part after point.  If some punctuation comes between point and the
+next word, it is killed along with the word.  (To kill only the
+next word but not the punctuation before it, simply type @kbd{Meta-f} to get
+to the end and kill the word backwards with @address@hidden)
address@hidden takes arguments just like @kbd{Meta-f}.
+
address@hidden backward-kill-word
address@hidden M-DEL
+  @address@hidden (@code{backward-kill-word}) kills the word before
+point.  It kills everything from point back to where @kbd{Meta-b} would
+move to.  If point is after the space in @address@hidden, BAR}}, then
address@hidden@samp{FOO, }} is killed.   To kill just @samp{FOO}, type
address@hidden Meta-d} instead of @address@hidden
+
address@hidden transposition
address@hidden M-t
address@hidden transpose-words
+  @kbd{Meta-t} (@code{transpose-words}) exchanges the word before or
+containing point with the following word.  The delimiter characters
+between the words do not move.  For example, transposing @address@hidden,
+BAR}} results in @address@hidden, FOO}} rather than @address@hidden FOO,}}.
address@hidden, for more on transposition and on arguments to
+transposition commands.
+
address@hidden M-@@
address@hidden mark-word
+  To operate on the next @var{n} words with an operation which applies
+between point and mark, you can either set the mark at point and then move
+over the words, or you can use the command @kbd{Meta-@@} (@code{mark-word})
+which does not move point but sets the mark where @kbd{Meta-f} would move
+to.  It can be given arguments just like @kbd{Meta-f}.
+
address@hidden syntax table
+  The word commands' understanding of syntax is completely controlled by
+the syntax table.  For example, any character can be declared to be a word
+delimiter.  @xref{Syntax}.
+
address@hidden Sentences, Paragraphs, Words, Text
address@hidden Sentences
address@hidden sentences
+
+  The Emacs commands for manipulating sentences and paragraphs are mostly
+on @kbd{Meta-} keys, and therefore are like the word-handling commands.
+
address@hidden @kbd
address@hidden M-a
+Move back to the beginning of the sentence (@code{backward-sentence}).
address@hidden M-e
+Move forward to the end of the sentence (@code{forward-sentence}).
address@hidden M-k
+Kill forward to the end of the sentence (@code{kill-sentence}).
address@hidden C-x @key{DEL}
+Kill back to the beginning of the sentence @*(@code{backward-kill-sentence}).
address@hidden table
+
address@hidden M-a
address@hidden M-e
address@hidden backward-sentence
address@hidden forward-sentence
+  The commands @kbd{Meta-a} and @kbd{Meta-e} (@code{backward-sentence}
+and @code{forward-sentence}) move to the beginning and end of the
+current sentence, respectively.  They resemble @kbd{Control-a} and
address@hidden, which move to the beginning and end of a line.  Unlike
+their counterparts, @kbd{Meta-a} and @kbd{Meta-e} move over successive
+sentences if repeated or given numeric arguments.  Emacs assumes
+the typist's convention is followed, and thus considers a sentence to
+end wherever there is a @samp{.}, @samp{?}, or @samp{!} followed by the
+end of a line or two spaces, with any number of @samp{)}, @samp{]},
address@hidden'}, or @samp{"} characters allowed in between.  A sentence also
+begins or ends wherever a paragraph begins or address@hidden
+
+  Neither @kbd{M-a} nor @kbd{M-e} moves past the newline or spaces beyond
+the sentence edge at which it is stopping.
+
address@hidden M-k
address@hidden C-x DEL
address@hidden kill-sentence
address@hidden backward-kill-sentence
+ @kbd{M-a} and @kbd{M-e} have a corresponding kill command, just like
address@hidden and @kbd{C-e} have @kbd{C-k}.  The command is  @kbd{M-k}
+(@code{kill-sentence}) which kills from point to the end of the
+sentence.  With minus one as an argument it kills back to the beginning
+of the sentence.  Larger arguments serve as repeat address@hidden
+
+  There is a special command, @kbd{C-x @key{DEL}}
+(@code{backward-kill-sentence}), for killing back to the beginning of a
+sentence, which is useful when you change your mind in the middle of
+composing address@hidden
+
address@hidden sentence-end
+  The variable @code{sentence-end} controls recognition of the end of a
+sentence.  It is a regexp that matches the last few characters of a
+sentence, together with the whitespace following the sentence.  Its
+normal value is:
+
address@hidden
+"[.?!][]\"')]*\\($\\|\t\\|  \\)[ \t\n]*"
address@hidden example
+
address@hidden
+This example is explained in the section on regexps.  @xref{Regexps}.
+
address@hidden Paragraphs, Pages, Sentences, Text
address@hidden Paragraphs
address@hidden paragraphs
address@hidden address@hidden
address@hidden address@hidden
address@hidden backward-paragraph
address@hidden forward-paragraph
+
+  The Emacs commands for manipulating paragraphs are also @kbd{Meta-}
+keys.
+
address@hidden @kbd
address@hidden address@hidden
+Move back to previous paragraph beginning @*(@code{backward-paragraph}).
address@hidden address@hidden
+Move forward to next paragraph end (@code{forward-paragraph}).
address@hidden M-h
+Put point and mark around this or next paragraph (@code{mark-paragraph}).
address@hidden table
+
+  @address@hidden moves to the beginning of the current or previous paragraph,
+while @address@hidden moves to the end of the current or next paragraph.
+Blank lines and text formatter command lines separate paragraphs and are
+not part of any paragraph.  An indented line starts a new paragraph.
+
+  In major modes for programs (as opposed to Text mode), paragraphs begin
+and end only at blank lines.  As a result, the paragraph commands continue to
+be useful even though there are no paragraphs per se.
+
+  When there is a fill prefix, paragraphs are delimited by all lines
+which don't start with the fill prefix.  @xref{Filling}.
+
address@hidden M-h
address@hidden mark-paragraph
+   To operate on a paragraph, you can use the command
address@hidden (@code{mark-paragraph}) to set the region around it.  This
+command puts point at the beginning and mark at the end of the paragraph
+point was in.  If point is between paragraphs (in a run of blank lines or
+at a boundary), the paragraph following point is surrounded by point and
+mark.  If there are blank lines preceding the first line of the paragraph,
+one of the blank lines is included in the region.  Thus, for example,
address@hidden C-w} kills the paragraph around or after point.
+
address@hidden paragraph-start
address@hidden paragraph-separate
+  The precise definition of a paragraph boundary is controlled by the
+variables @code{paragraph-separate} and @code{paragraph-start}.  The value
+of @code{paragraph-start} is a regexp that matches any line that
+either starts or separates paragraphs.  The value of
address@hidden is another regexp that  matches only lines
+that separate paragraphs without being part of any paragraph.  Lines that
+start a new paragraph and are contained in it must match both regexps.  For
+example, normally @code{paragraph-start} is @code{"^[ @address@hidden@t{\}f]"}
+and @code{paragraph-separate} is @code{"^[ @address@hidden"address@hidden
+
+  Normally it is desirable for page boundaries to separate paragraphs.
+The default values of these variables recognize the usual separator for
+pages.
+
address@hidden Pages, Filling, Paragraphs, Text
address@hidden Pages
+
address@hidden pages
address@hidden formfeed
+  Files are often thought of as divided into @dfn{pages} by the
address@hidden character (ASCII Control-L, octal code 014).  For
+example, if a file is printed on a line printer, each ``page'' of the
+file starts on a new page of paper.  Emacs treats a page-separator
+character just like any other character.  It can be inserted with
address@hidden C-l} or deleted with @key{DEL}.  You are free to
+paginate your file or not.  However, since pages are often meaningful
+divisions of the file, commands are provided to move over them and
+operate on them.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x [
+Move point to previous page boundary (@code{backward-page}).
address@hidden C-x ]
+Move point to next page boundary (@code{forward-page}).
address@hidden C-x C-p
+Put point and mark around this page (or another page) (@code{mark-page}).
address@hidden C-x l
+Count the lines in this page (@code{count-lines-page}).
address@hidden table
+
address@hidden C-x [
address@hidden C-x ]
address@hidden forward-page
address@hidden backward-page
+  The @kbd{C-x [} (@code{backward-page}) command moves point to
+immediately after the previous page delimiter.  If point is already
+right after a page delimiter, the command skips that one and stops at
+the previous one.  A numeric argument serves as a repeat count.  The
address@hidden ]} (@code{forward-page}) command moves forward past the next
+page delimiter.
+
address@hidden C-x C-p
address@hidden mark-page
+  The @kbd{C-x C-p} command (@code{mark-page}) puts point at the beginning
+of the current page and the mark at the end.  The page delimiter at the end
+is included (the mark follows it).  The page delimiter at the front is
+excluded (point follows it).  You can follow this command  by @kbd{C-w} to
+kill a page you want to move elsewhere.  If you insert the page after a page
+delimiter, at a place where @kbd{C-x ]} or @kbd{C-x [} would take you,
+the page will be properly delimited before and after once again.
+
+  A numeric argument to @kbd{C-x C-p} is used to specify which page to go
+to, relative to the current one.  Zero means the current page.  One means
+the next page, and @minus{}1 means the previous one.
+
address@hidden C-x l
address@hidden count-lines-page
+  The @kbd{C-x l} command (@code{count-lines-page}) can help you decide
+where to break a page in two.  It prints the total number of lines in
+the current page in the echo area, then divides the lines into those
+preceding the current line and those following it, for example
+
address@hidden
+Page has 96 (72+25) lines
address@hidden example
+
address@hidden
+  Notice that the sum is off by one; this is correct if point is not at the
+beginning of a line.
+
address@hidden page-delimiter
+  The variable @code{page-delimiter} should have as its value a regexp that
+matches the beginning of a line that separates pages.  This defines
+where pages begin.  The normal value of this variable is 
@code{"address@hidden"},
+which matches a formfeed character at the beginning of a line.
+
address@hidden Filling, Case, Pages, Text
address@hidden Filling Text
address@hidden filling
+
+  If you use Auto Fill mode, Emacs @dfn{fills} text (breaks it up into
+lines that fit in a specified width) as you insert it.  When you alter
+existing text it is often no longer be properly filled afterwards and
+you can use explicit commands for filling.
+
address@hidden
+* Auto Fill::    Auto Fill mode breaks long lines automatically.
+* Fill Commands:: Commands to refill paragraphs and center lines.
+* Fill Prefix::   Filling when every line is indented or in a comment, etc.
address@hidden menu
+
address@hidden Auto Fill, Fill Commands, Filling, Filling
address@hidden Auto Fill Mode
+
address@hidden Auto Fill mode
+
+  @dfn{Auto Fill} mode is a minor mode in which lines are broken
+automatically when they become too wide.  Breaking happens only when
+you type a @key{SPC} or @key{RET}.
+
address@hidden @kbd
address@hidden M-x auto-fill-mode
+Enable or disable Auto Fill mode.
address@hidden @key{SPC}
address@hidden @key{RET}
+In Auto Fill mode, break lines when appropriate.
address@hidden table
+
address@hidden auto-fill-mode
+  @kbd{M-x auto-fill-mode} turns Auto Fill mode on if it was off, or off
+if it was on.  With a positive numeric argument the command always turns
+Auto Fill mode on, and with a negative argument it always turns it off.
+The presence of the word @samp{Fill} in the mode line, inside the
+parentheses, indicates that Auto Fill mode is in effect.  Auto Fill mode
+is a minor mode; you can turn it on or off for each buffer individually.
address@hidden Modes}.
+
+  In Auto Fill mode, lines are broken automatically at spaces when they get
+longer than desired.  Line breaking and rearrangement takes place
+only when you type @key{SPC} or @key{RET}.  To insert a space
+or newline without permitting line-breaking, type @kbd{C-q @key{SPC}} or
address@hidden @key{LFD}} (recall that a newline is really a linefeed).
address@hidden inserts a newline without line breaking.
+
+  Auto Fill mode works well with Lisp mode: when it makes a new line in
+Lisp mode, it indents that line with @key{TAB}.  If a line ending in a
+Lisp comment gets too long, the text of the comment is split into two
+comment lines.  Optionally, new comment delimiters are inserted at the
+end of the first line and the beginning of the second, so that each line
+is a separate comment.  The variable @code{comment-multi-line} controls
+the choice (@pxref{Comments}).
+
+  Auto Fill mode does not refill entire paragraphs.  It can break lines but
+cannot merge lines.  Editing in the middle of a paragraph can result in
+a paragraph that is not correctly filled.  The easiest way to make the
+paragraph properly filled again is using an explicit fill commands.
+
+  Many users like Auto Fill mode and want to use it in all text files.
+The section on init files explains how you can arrange this
+permanently for yourself.  @xref{Init File}.
+
address@hidden Fill Commands, Fill Prefix, Auto Fill, Filling
address@hidden Explicit Fill Commands
+
address@hidden @kbd
address@hidden M-q
+Fill current paragraph (@code{fill-paragraph}).
address@hidden M-g
+Fill each paragraph in the region (@code{fill-region}).
address@hidden C-x f
+Set the fill column (@code{set-fill-column}).
address@hidden M-x fill-region-as-paragraph
+Fill the region, considering it as one paragraph.
address@hidden M-s
+Center a line.
address@hidden table
+
address@hidden M-q
address@hidden fill-paragraph
+  To refill a paragraph, use the command @kbd{Meta-q}
+(@code{fill-paragraph}).  It causes the paragraph containing point, or
+the one after point if point is between paragraphs, to be refilled.  All
+line breaks are removed, and new ones are inserted where necessary.
address@hidden can be undone with @kbd{C-_}.  @address@hidden
+
address@hidden M-g
address@hidden fill-region
+  To refill many paragraphs, use @kbd{M-g} (@code{fill-region}), which
+divides the region into paragraphs and fills each of them.
+
address@hidden fill-region-as-paragraph
+  @kbd{Meta-q} and @kbd{Meta-g} use the same criteria as @kbd{Meta-h} for
+finding paragraph boundaries (@pxref{Paragraphs}).  For more control, you
+can use @kbd{M-x fill-region-as-paragraph}, which refills everything
+between point and mark.  This command recognizes only blank lines as
+paragraph address@hidden
+
address@hidden justification
+  A numeric argument to @kbd{M-g} or @kbd{M-q} causes it to
address@hidden the text as well as filling it.  Extra spaces are inserted
+to make the right margin line up exactly at the fill column.  To remove
+the extra spaces, use @kbd{M-q} or @kbd{M-g} with no address@hidden
+
address@hidden auto-fill-inhibit-regexp
+The variable @code{auto-fill-inhibit-regexp} takes as a value a regexp to
+match lines that should not be auto-filled.
+
address@hidden M-s
address@hidden centering
address@hidden center-line
+  The command @kbd{Meta-s} (@code{center-line}) centers the current line
+within the current fill column.  With an argument, it centers several lines
+individually and moves past them.
+
address@hidden fill-column
+  The maximum line width for filling is in the variable
address@hidden  Altering the value of @code{fill-column} makes it
+local to the current buffer; until then, the default value---initially
+70---is in effect. @xref{Locals}.
+
address@hidden C-x f
address@hidden set-fill-column
+  The easiest way to set @code{fill-column} is to use the command @kbd{C-x
+f} (@code{set-fill-column}).  With no argument, it sets @code{fill-column}
+to the current horizontal position of point.  With a numeric argument, it
+uses that number as the new fill column.
+
address@hidden Fill Prefix,, Fill Commands, Filling
address@hidden The Fill Prefix
+
address@hidden fill prefix
+  To fill a paragraph in which each line starts with a special marker
+(which might be a few spaces, giving an indented paragraph), use the
address@hidden prefix} feature.  The fill prefix is a string which is not
+included in filling.  Emacs expects every line to start with a fill
+prefix.
+
address@hidden @kbd
address@hidden C-x .
+Set the fill prefix (@code{set-fill-prefix}).
address@hidden M-q
+Fill a paragraph using current fill prefix (@code{fill-paragraph}).
address@hidden M-x fill-individual-paragraphs
+Fill the region, considering each change of indentation as starting a
+new paragraph.
address@hidden table
+
address@hidden C-x .
address@hidden set-fill-prefix
+  To specify a fill prefix, move to a line that starts with the desired
+prefix, put point at the end of the prefix, and give the command
address@hidden@kbd{C-x .}}@: (@code{set-fill-prefix}).  That's a period after 
the
address@hidden  To turn off the fill prefix, specify an empty prefix: type
address@hidden@kbd{C-x .}}@: with point at the beginning of a address@hidden
+
+  When a fill prefix is in effect, the fill commands remove the fill
+prefix from each line before filling and insert it on each line after
+filling.  Auto Fill mode also inserts the fill prefix inserted on new
+lines it creates.  Lines that do not start with the fill prefix are
+considered to start paragraphs, both in @kbd{M-q} and the paragraph
+commands; this is just right if you are using paragraphs with hanging
+indentation (every line indented except the first one).  Lines which are
+blank or indented once the prefix is removed also separate or start
+paragraphs; this is what you want if you are writing multi-paragraph
+comments with a comment delimiter on each line.
+
address@hidden fill-prefix
+  The fill prefix is stored in the variable @code{fill-prefix}.  Its value
+is a string, or @code{nil} when there is no fill prefix.  This is a
+per-buffer variable; altering the variable affects only the current buffer,
+but there is a default value which you can change as well.  @xref{Locals}.
+
address@hidden fill-individual-paragraphs
+  Another way to use fill prefixes is through @kbd{M-x
+fill-individual-paragraphs}.  This function divides the region into groups
+of consecutive lines with the same amount and kind of indentation and fills
+each group as a paragraph, using its indentation as a fill prefix.
+
address@hidden Case,, Filling, Text
address@hidden Case Conversion Commands
address@hidden case conversion
+
+  Emacs has commands for converting either a single word or any arbitrary
+range of text to upper case or to lower case.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden M-l
+Convert following word to lower case (@code{downcase-word}).
address@hidden M-u
+Convert following word to upper case (@code{upcase-word}).
address@hidden M-c
+Capitalize the following word (@code{capitalize-word}).
address@hidden C-x C-l
+Convert region to lower case (@code{downcase-region}).
address@hidden C-x C-u
+Convert region to upper case (@code{upcase-region}).
address@hidden table
+
address@hidden M-l
address@hidden M-u
address@hidden M-c
address@hidden words
address@hidden downcase-word
address@hidden upcase-word
address@hidden capitalize-word
+  The word conversion commands are used most frequently.  @kbd{Meta-l}
+(@code{downcase-word}) converts the word after point to lower case,
+moving past it.  Thus, repeating @kbd{Meta-l} converts successive words.
address@hidden (@code{upcase-word}) converts to all capitals instead,
+while @kbd{Meta-c} (@code{capitalize-word}) puts the first letter of the
+word into upper case and the rest into lower case.  The word conversion
+commands convert several words at once if given an argument.  They are
+especially convenient for converting a large amount of text from all
+upper case to mixed case: you can move through the text using
address@hidden, @kbd{M-u}, or @kbd{M-c} on each word as appropriate,
+occasionally using @kbd{M-f} instead to skip a word.
+
+  When given a negative argument, the word case conversion commands apply
+to the appropriate number of words before point, but do not move point.
+This is convenient when you have just typed a word in the wrong case: you
+can give the case conversion command and continue typing.
+
+  If a word case conversion command is given in the middle of a word, it
+applies only to the part of the word which follows point.  This is just
+like what @kbd{Meta-d} (@code{kill-word}) does.  With a negative argument,
+case conversion applies only to the part of the word before point.
+
address@hidden C-x C-l
address@hidden C-x C-u
address@hidden region
address@hidden downcase-region
address@hidden upcase-region
+  The other case conversion commands are @kbd{C-x C-u}
+(@code{upcase-region}) and @kbd{C-x C-l} (@code{downcase-region}), which
+convert everything between point and mark to the specified case.  Point and
+mark do not address@hidden
+
address@hidden Programs, Running, Text, Top
address@hidden Editing Programs
address@hidden Lisp
address@hidden C
+
+  Emacs has many commands designed to understand the syntax of programming
+languages such as Lisp and C.  These commands can:
+
address@hidden @bullet
address@hidden
+Move over or kill balanced expressions or @dfn{sexps} (@pxref{Lists}).
address@hidden
+Move over or mark top-level balanced expressions (@dfn{defuns}, in Lisp;
+functions, in C).
address@hidden
+Show how parentheses balance (@pxref{Matching}).
address@hidden
+Insert, kill, or align comments (@pxref{Comments}).
address@hidden
+Follow the usual indentation conventions of the language
+(@pxref{Grinding}).
address@hidden itemize
+
+  The commands available for words, sentences, and paragraphs are useful in
+editing code even though their canonical application is for editing human
+language text.  Most symbols contain words (@pxref{Words}); sentences can
+be found in strings and comments (@pxref{Sentences}).  Paragraphs per se
+are not present in code, but the paragraph commands are useful anyway,
+because Lisp mode and C mode define paragraphs to begin and end at blank
+lines (@pxref{Paragraphs}).  Judicious use of blank lines to make the
+program clearer also provides interesting chunks of text for the
+paragraph commands to work on.
+
+  The selective display feature is useful for looking at the overall
+structure of a function (@pxref{Selective Display}).  This feature causes
+only the lines that are indented less than a specified amount to appear
+on the screen.
+
address@hidden
+* Program Modes::       Major modes for editing programs.
+* Lists::               Expressions with balanced parentheses.
+                         There are editing commands to operate on them.
+* Defuns::              Each program is made up of separate functions.
+                         There are editing commands to operate on them.
+* Grinding::            Adjusting indentation to show the nesting.
+* Matching::            Insertion of a close-delimiter flashes matching open.
+* Comments::            Inserting, filling and aligning comments.
+* Balanced Editing::    Inserting two matching parentheses at once, etc.
+* Lisp Completion::     Completion on symbol names in Lisp code.
+* Documentation::       Getting documentation of functions you plan to call.
+* Change Log::          Maintaining a change history for your program.
+* Tags::                Go direct to any function in your program in one
+                         command.  Tags remembers which file it is in.
+* Fortran::            Fortran mode and its special features.
+* Asm Mode::            Asm mode and its special features.
address@hidden menu
+
address@hidden Program Modes, Lists, Programs, Programs
address@hidden Major Modes for Programming Languages
+
address@hidden Lisp mode
address@hidden C mode
address@hidden Scheme mode
+  Emacs has several major modes for the programming languages Lisp, Scheme (a
+variant of Lisp), C, Fortran, and Muddle.  Ideally, a major mode should be
+implemented for each programming language you might want to edit with
+Emacs; but often the mode for one language can serve for other
+syntactically similar languages.  The language modes that exist are those
+that someone decided to take the trouble to write.
+
+  There are several variants of Lisp mode, which differ in the way they
+interface to Lisp execution.  @xref{Lisp Modes}.
+
+  Each of the programming language modes defines the @key{TAB} key to run
+an indentation function that knows the indentation conventions of that
+language and updates the current line's indentation accordingly.  For
+example, in C mode @key{TAB} is bound to @code{c-indent-line}.  @key{LFD}
+is normally defined to do @key{RET} followed by @key{TAB}; thus it, too,
+indents in a mode-specific fashion.
+
address@hidden DEL
address@hidden backward-delete-char-untabify
+  In most programming languages, indentation is likely to vary from line to
+line.  So the major modes for those languages rebind @key{DEL} to treat a
+tab as if it were the equivalent number of spaces (using the command
address@hidden).  This makes it possible to rub out
+indentation one column at a time without worrying whether it is made up of
+spaces or tabs.  In these modes, use @kbd{C-b C-d} to delete a tab
+character before point. 
+
+  Programming language modes define paragraphs to be separated only by
+blank lines, so that the paragraph commands remain useful.  Auto Fill mode,
+if enabled in a programming language major mode, indents the new lines
+which it creates.
+
address@hidden mode hook
address@hidden c-mode-hook
address@hidden lisp-mode-hook
address@hidden emacs-lisp-mode-hook
address@hidden lisp-interaction-mode-hook
address@hidden scheme-mode-hook
address@hidden muddle-mode-hook
+  Turning on a major mode calls a user-supplied function called the
address@hidden hook}, which is the value of a Lisp variable.  For example,
+turning on C mode calls the value of the variable @code{c-mode-hook} if
+that value exists and is address@hidden  Mode hook variables for other
+programming language modes include @code{lisp-mode-hook},
address@hidden, @code{lisp-interaction-mode-hook},
address@hidden, and @code{muddle-mode-hook}.  The mode hook
+function receives no address@hidden
+
address@hidden Lists, Defuns, Program Modes, Programs
address@hidden Lists and Sexps
+
address@hidden Control-Meta
+  By convention, Emacs keys for dealing with balanced expressions are
+usually @kbd{Control-Meta-} characters.  They tend to be analogous in
+function to their @kbd{Control-} and @kbd{Meta-} equivalents.  These commands
+are usually thought of as pertaining to expressions in programming
+languages, but can be useful with any language in which some sort of
+parentheses exist (including English).
+
address@hidden list
address@hidden sexp
address@hidden expression
+  The commands fall into two classes.  Some commands deal only with
address@hidden (parenthetical groupings).  They see nothing except
+parentheses, brackets, braces (depending on what must balance in the
+language you are working with), and escape characters that might be used
+to quote those.
+
+  The other commands deal with expressions or @dfn{sexps}.  The word `sexp'
+is derived from @dfn{s-expression}, the term for a symbolic expression in
+Lisp.  In Emacs, the notion of `sexp' is not limited to Lisp.  It
+refers to an expression in the language  your program is written in.
+Each programming language has its own major mode, which customizes the
+syntax tables so that expressions in that language count as sexps.
+
+  Sexps typically include symbols, numbers, and string constants, as well
+as anything contained in parentheses, brackets, or braces.
+
+  In languages that use prefix and infix operators, such as C, it is not
+possible for all expressions to be sexps.  For example, C mode does not
+recognize @samp{foo + bar} as an sexp, even though it @i{is} a C expression;
+it recognizes @samp{foo} as one sexp and @samp{bar} as another, with the
address@hidden as punctuation between them.  This is a fundamental ambiguity:
+both @samp{foo + bar} and @samp{foo} are legitimate choices for the sexp to
+move over if point is at the @samp{f}.  Note that @samp{(foo + bar)} is a
+sexp in C mode.
+
+  Some languages have obscure forms of syntax for expressions that nobody
+has bothered to make Emacs understand properly.
+
address@hidden doublewidecommands
address@hidden @kbd
address@hidden C-M-f
+Move forward over an sexp (@code{forward-sexp}).
address@hidden C-M-b
+Move backward over an sexp (@code{backward-sexp}).
address@hidden C-M-k
+Kill sexp forward (@code{kill-sexp}).
address@hidden C-M-u
+Move up and backward in list structure (@code{backward-up-list}).
address@hidden C-M-d
+Move down and forward in list structure (@code{down-list}).
address@hidden C-M-n
+Move forward over a list (@code{forward-list}).
address@hidden C-M-p
+Move backward over a list (@code{backward-list}).
address@hidden C-M-t
+Transpose expressions (@code{transpose-sexps}).
address@hidden C-M-@@
+Put mark after following expression (@code{mark-sexp}).
address@hidden table
+
address@hidden C-M-f
address@hidden C-M-b
address@hidden forward-sexp
address@hidden backward-sexp
+  To move forward over an sexp, use @kbd{C-M-f} (@code{forward-sexp}).  If
+the first significant character after point is an opening delimiter
+(@samp{(} in Lisp; @samp{(}, @samp{[}, or @address@hidden in C), @kbd{C-M-f}
+moves past the matching closing delimiter.  If the character begins a
+symbol, string, or number, @kbd{C-M-f} moves over that.  If the character
+after point is a closing delimiter, @kbd{C-M-f} just moves past it.  (This
+last is not really moving across an sexp; it is an exception which is
+included in the definition of @kbd{C-M-f} because it is as useful a
+behavior as anyone can think of for that situation.)@refill
+
+  The command @kbd{C-M-b} (@code{backward-sexp}) moves backward over a
+sexp.  The detailed rules are like those above for @kbd{C-M-f}, but with
+directions reversed.  If there are any prefix characters (single quote,
+back quote, and comma, in Lisp) preceding the sexp, @kbd{C-M-b} moves back
+over them as well.
+
+  @kbd{C-M-f} or @kbd{C-M-b} with an argument repeats that operation the
+specified number of times; with a negative argument, it moves in the
+opposite direction.
+
+In languages such as C where the comment-terminator can be recognized,
+the sexp commands move across comments as if they were whitespace.  In
+Lisp and other languages where comments run until the end of a line, it
+is very difficult to ignore comments when parsing backwards; therefore,
+in such languages the sexp commands treat the text of comments as if it
+were code.
+
address@hidden C-M-k
address@hidden kill-sexp
+  Killing an sexp at a time can be done with @kbd{C-M-k} (@code{kill-sexp}).
address@hidden kills the characters that @kbd{C-M-f} would move over.
+
address@hidden C-M-n
address@hidden C-M-p
address@hidden forward-list
address@hidden backward-list
+  The @dfn{list commands}, @kbd{C-M-n} (@code{forward-list}) and
address@hidden (@code{backward-list}), move over lists like the sexp
+commands but skip over any number of other kinds of sexps (symbols,
+strings, etc).  In some situations, these commands are useful because
+they usually ignore comments, since the comments usually do not contain
+any address@hidden
+
address@hidden C-M-u
address@hidden C-M-d
address@hidden backward-up-list
address@hidden down-list
+  @kbd{C-M-n} and @kbd{C-M-p} stay at the same level in parentheses, when
+that is possible.  To move @i{up} one (or @var{n}) levels, use @kbd{C-M-u}
+(@code{backward-up-list}).
address@hidden moves backward up past one unmatched opening delimiter.  A
+positive argument serves as a repeat count; a negative argument reverses
+direction of motion and also requests repetition, so it moves forward and
+up one or more address@hidden
+
+  To move @i{down} in list structure, use @kbd{C-M-d}
+(@code{down-list}).  In Lisp mode, where @samp{(} is the only opening
+delimiter, this is nearly the same as searching for a @samp{(}.  An
+argument specifies the number of levels of parentheses to go down.
+
address@hidden transposition
address@hidden C-M-t
address@hidden transpose-sexps
address@hidden (@code{transpose-sexps}) drags the previous sexp across
+the next one.  An argument serves as a repeat count, and a negative
+argument drags backwards (thus canceling out the effect of @kbd{C-M-t} with
+a positive argument).  An argument of zero, rather than doing nothing,
+transposes the sexps ending after point and the mark.
+
address@hidden C-M-@@
address@hidden mark-sexp
+  To make the region be the next sexp in the buffer, use @kbd{C-M-@@}
+(@code{mark-sexp}) which sets the mark at the same place that
address@hidden would move to.  @kbd{C-M-@@} takes arguments like
address@hidden  In particular, a negative argument is useful for putting
+the mark at the beginning of the previous sexp.
+
+  The list and sexp commands' understanding of syntax is completely
+controlled by the syntax table.  Any character can, for example, be
+declared to be an opening delimiter and act like an open parenthesis.
address@hidden
+
address@hidden Defuns, Grinding, Lists, Programs
address@hidden Defuns
address@hidden defuns
+
+  In Emacs, a parenthetical grouping at the top level in the buffer is
+called a @dfn{defun}.  The name derives from the fact that most
+top-level lists in Lisp are instances of the special form
address@hidden, but Emacs calls any top-level parenthetical
+grouping counts a defun regardless of its contents or
+the programming language.  For example, in C, the body of a
+function definition is a defun.
+
address@hidden doublewidecommands
address@hidden @kbd
address@hidden C-M-a
+Move to beginning of current or preceding defun
+(@code{beginning-of-defun}).
address@hidden C-M-e
+Move to end of current or following defun (@code{end-of-defun}).
address@hidden C-M-h
+Put region around whole current or following defun (@code{mark-defun}).
address@hidden table
+
address@hidden C-M-a
address@hidden C-M-e
address@hidden C-M-h
address@hidden beginning-of-defun
address@hidden end-of-defun
address@hidden mark-defun
+  The commands to move to the beginning and end of the current defun are
address@hidden (@code{beginning-of-defun}) and @kbd{C-M-e} 
(@code{end-of-defun}).
+
+   To operate on the current defun, use @kbd{C-M-h} (@code{mark-defun})
+which puts point at the beginning and the mark at the end of the current
+or next defun.  This is the easiest way to prepare for moving the defun
+to a different place.  In C mode, @kbd{C-M-h} runs the function
address@hidden, which is almost the same as @code{mark-defun},
+but which backs up over the argument declarations, function name, and
+returned data type so that the entire C function is inside the region.
+
address@hidden compile-defun
+To compile and evaluate the current defun, use @kbd{M-x compile-defun}. 
+This function prints the results in the minibuffer. If you include an 
+argument, it inserts the value in the current buffer after the defun.
+
+  Emacs assumes that any open-parenthesis found in the leftmost column is
+the start of a defun.  Therefore, @i{never put an open-parenthesis at the
+left margin in a Lisp file unless it is the start of a top level list.
+Never put an open-brace or other opening delimiter at the beginning of a
+line of C code unless it starts the body of a function.}  The most likely
+problem case is when you want an opening delimiter at the start of a line
+inside a string.  To avoid trouble, put an escape character (@samp{\} in C
+and Emacs Lisp, @samp{/} in some other Lisp dialects) before the opening
+delimiter.  It will not affect the contents of the string.
+
+  The original Emacs found defuns by moving upward a
+level of parentheses until there were no more levels to go up.  This
+required scanning back to the beginning of the buffer for every
+function.  To speed this up, Emacs was changed to assume
+that any @samp{(} (or other character assigned the syntactic class of
+opening-delimiter) at the left margin is the start of a defun.  This
+heuristic is nearly always right; however, it mandates the convention 
+described above.
+
address@hidden Grinding, Matching, Defuns, Programs
address@hidden Indentation for Programs
address@hidden indentation
address@hidden grinding
+
+  The best way to keep a program properly indented (``ground'') is to
+use Emacs to re-indent it as you change the program.  Emacs has commands
+to indent properly either a single line, a specified number of lines, or
+all of the lines inside a single parenthetical grouping.
+
address@hidden
+* Basic Indent::
+* Multi-line Indent::   Commands to reindent many lines at once.
+* Lisp Indent::                Specifying how each Lisp function should be 
indented.
+* C Indent::           Choosing an indentation style for C code.
address@hidden menu
+
address@hidden Basic Indent, Multi-line Indent, Grinding, Grinding
address@hidden Basic Program Indentation Commands
+
address@hidden WideCommands
address@hidden @kbd
address@hidden @key{TAB}
+Adjust indentation of current line.
address@hidden @key{LFD}
+Equivalent to @key{RET} followed by @key{TAB} (@code{newline-and-indent}).
address@hidden table
+
address@hidden TAB
address@hidden c-indent-line
address@hidden lisp-indent-line
+  The basic indentation command is @key{TAB}, which gives the current
+line the correct indentation as determined from the previous lines.  The
+function that @key{TAB} runs depends on the major mode; it is
address@hidden in Lisp mode, @code{c-indent-line} in C mode,
+etc.  These functions understand different syntaxes for different
+languages, but they all do about the same thing.  @key{TAB} in any
+programming language major mode inserts or deletes whitespace at the
+beginning of the current line, independent of where point is in the
+line.  If point is inside the whitespace at the beginning of the line,
address@hidden leaves it at the end of that whitespace; otherwise, @key{TAB}
+leaves point fixed with respect to the characters around it.
+
+  Use @kbd{C-q @key{TAB}} to insert a tab at point.
+
address@hidden LFD
address@hidden newline-and-indent
+  When entering a large amount of new code, use @key{LFD}
+(@code{newline-and-indent}), which is equivalent to a @key{RET} followed
+by a @key{TAB}.  @key{LFD} creates a blank line, then gives it the
+appropriate indentation.
+
+  @key{TAB} indents the second and following lines of the body of a
+parenthetical grouping each under the preceding one; therefore, if you
+alter one line's indentation to be nonstandard, the lines below tend
+to follow it.  This is the right behavior in cases where the standard
+result of @key{TAB} does not look good.
+
+  Remember that Emacs assumes that an open-parenthesis, open-brace, or
+other opening delimiter at the left margin (including the indentation
+routines) is the start of a function.  You should therefore never have
+an opening delimiter in column zero that is not the beginning of a
+function, not even inside a string.  This restriction is vital for
+making the indentation commands fast. @xref{Defuns}, for more
+information on this behavior.
+
address@hidden Multi-line Indent, Lisp Indent, Basic Indent, Grinding
address@hidden Indenting Several Lines
+
+  Several commands are available to re-indent several lines of code
+which have been altered or moved to a different level in a list
+structure.
+
+
address@hidden @kbd
address@hidden C-M-q
+Re-indent all the lines within one list (@code{indent-sexp}).
address@hidden C-u @key{TAB}
+Shift an entire list rigidly sideways so that its first line
+is properly indented.
address@hidden C-M-\
+Re-indent all lines in the region (@code{indent-region}).
address@hidden table
+
address@hidden C-M-q
address@hidden indent-sexp
address@hidden indent-c-exp
+ To re-indent the contents of a single list, position point before the
+beginning of it and type @kbd{C-M-q}. This key is bound to
address@hidden in Lisp mode, @code{indent-c-exp} in C mode, and
+bound to other suitable functions in other modes.  The indentation of
+the line the sexp starts on is not changed; therefore, only the relative
+indentation within the list, and not its position, is changed.  To
+correct the position as well, type a @key{TAB} before @kbd{C-M-q}.
+
address@hidden C-u TAB
+  If the relative indentation within a list is correct but the
+indentation of its beginning is not, go to the line on which the list
+begins and type @kbd{C-u @key{TAB}}.  When you give @key{TAB} a numeric
+argument, it moves all the lines in the group, starting on the current
+line, sideways the same amount that the current line moves.  The command
+does not move lines that start inside strings, or C
+preprocessor lines when in C mode.
+
address@hidden C-M-\
address@hidden indent-region
+  Another way to specify a range to be re-indented is with point and
+mark.  The command @kbd{C-M-\} (@code{indent-region}) applies @key{TAB}
+to every line whose first character is between point and mark.
+
address@hidden Lisp Indent, C Indent, Multi-line Indent, Grinding
address@hidden Customizing Lisp Indentation
address@hidden customization
+
+  The indentation pattern for a Lisp expression can depend on the function
+called by the expression.  For each Lisp function, you can choose among
+several predefined patterns of indentation, or define an arbitrary one with
+a Lisp program.
+
+  The standard pattern of indentation is as follows: the second line of the
+expression is indented under the first argument, if that is on the same
+line as the beginning of the expression; otherwise, the second line is
+indented underneath the function name.  Each following line is indented
+under the previous line whose nesting depth is the same.
+
address@hidden lisp-indent-offset
+  If the variable @code{lisp-indent-offset} is address@hidden, it overrides
+the usual indentation pattern for the second line of an expression, so that
+such lines are always indented @code{lisp-indent-offset} more columns than
+the containing list.
+
address@hidden lisp-body-indention
+  Certain functions override the standard pattern.  Functions
+whose names start with @code{def} always indent the second line by
address@hidden extra columns beyond the open-parenthesis
+starting the expression.
+
+  Individual functions can override the standard pattern in various
+ways, according to the @code{lisp-indent-function} property of the
+function name.  (Note: @code{lisp-indent-function} was formerly called
address@hidden).  There are four possibilities for this
+property:
+
address@hidden @asis
address@hidden @code{nil}
+This is the same as no property; the standard indentation pattern is used.
address@hidden @code{defun}
+The pattern used for function names that start with @code{def} is used for
+this function also.
address@hidden a number, @var{number}
+The first @var{number} arguments of the function are
address@hidden arguments; the rest are considered the @dfn{body}
+of the expression.  A line in the expression is indented according to
+whether the first argument on it is distinguished or not.  If the
+argument is part of the body, the line is indented @code{lisp-body-indent}
+more columns than the open-parenthesis starting the containing
+expression.  If the argument is distinguished and is either the first
+or second argument, it is indented @i{twice} that many extra columns.
+If the argument is distinguished and not the first or second argument,
+the standard pattern is followed for that line.
address@hidden a symbol, @var{symbol}
address@hidden should be a function name; that function is called to
+calculate the indentation of a line within this expression.  The
+function receives two arguments:
address@hidden @asis
address@hidden @var{state}
+The value returned by @code{parse-partial-sexp} (a Lisp primitive for
+indentation and nesting computation) when it parses up to the
+beginning of this line.
address@hidden @var{pos}
+The position at which the line being indented begins.
address@hidden table
address@hidden
+It should return either a number, which is the number of columns of
+indentation for that line, or a list whose first element is such a
+number.  The difference between returning a number and returning a list
+is that a number says that all following lines at the same nesting level
+should be indented just like this one; a list says that following lines
+might call for different indentations.  This makes a difference when the
+indentation is computed by @kbd{C-M-q}; if the value is a number,
address@hidden need not recalculate indentation for the following lines
+until the end of the list.
address@hidden table
+
address@hidden C Indent,  , Lisp Indent, Grinding
address@hidden Customizing C Indentation
+
+  Two variables control which commands perform C indentation and when.
+
address@hidden c-auto-newline
+  If @code{c-auto-newline} is address@hidden, newlines are inserted both
+before and after braces that you insert and after colons and semicolons.
+Correct C indentation is done on all the lines that are made this way.
+
address@hidden c-tab-always-indent
+  If @code{c-tab-always-indent} is address@hidden, the @key{TAB} command
+in C mode does indentation only if point is at the left margin or within
+the line's indentation.  If there is non-whitespace to the left of point,
address@hidden just inserts a tab character in the buffer.  Normally,
+this variable is @code{nil}, and @key{TAB} always reindents the current line.
+
+  C does not have anything analogous to particular function names for which
+special forms of indentation are desirable.  However, it has a different
+need for customization facilities: many different styles of C indentation
+are in common use.
+
+  There are six variables you can set to control the style that Emacs C
+mode will use.
+
address@hidden @code
address@hidden c-indent-level
+Indentation of C statements within surrounding block.  The surrounding
+block's indentation is the indentation of the line on which the
+open-brace appears.
address@hidden c-continued-statement-offset
+Extra indentation given to a substatement, such as the then-clause of
+an @code{if} or body of a @code{while}.
address@hidden c-brace-offset
+Extra indentation for lines that start with an open brace.
address@hidden c-brace-imaginary-offset
+An open brace following other text is treated as if it were this far
+to the right of the start of its line.
address@hidden c-argdecl-indent
+Indentation level of declarations of C function arguments.
address@hidden c-label-offset
+Extra indentation for a line that is a label, case, or default.
address@hidden table
+
address@hidden c-indent-level
+  The variable @code{c-indent-level} controls the indentation for C
+statements with respect to the surrounding block.  In the example:
+
address@hidden
+    @{
+      foo ();
address@hidden example
+
address@hidden
+the difference in indentation between the lines is @code{c-indent-level}.
+Its standard value is 2.
+
+If the open-brace beginning the compound statement is not at the beginning
+of its line, the @code{c-indent-level} is added to the indentation of the
+line, not the column of the open-brace.  For example,
+
address@hidden
+if (losing) @{
+  do_this ();
address@hidden example
+
address@hidden
+One popular indentation style is that which results from setting
address@hidden to 8 and putting open-braces at the end of a line
+in this way.  Another popular style prefers to put the open-brace on a
+separate line.
+
address@hidden c-brace-imaginary-offset
+  In fact, the value of the variable @code{c-brace-imaginary-offset} is
+also added to the indentation of such a statement.  Normally this variable
+is zero.  Think of this variable as the imaginary position of the open
+brace, relative to the first non-blank character on the line.  By setting
+the variable to 4 and @code{c-indent-level} to 0, you can get this style:
+
address@hidden
+if (x == y) @{
+    do_it ();
+    @}
address@hidden example
+
+  When @code{c-indent-level} is zero, the statements inside most braces
+line up exactly under the open brace.  An exception are braces in column
+zero, like those surrounding a function's body.  The statements inside
+those braces are not placed at column zero.  Instead,
address@hidden and @code{c-continued-statement-offset} (see
+below) are added to produce a typical offset between brace levels, and
+the statements are indented that far.
+
address@hidden c-continued-statement-offset
+  @code{c-continued-statement-offset} controls the extra indentation for
+a line that starts within a statement (but not within parentheses or
+brackets).  These lines are usually statements inside other statements,
+like the then-clauses of @code{if} statements and the bodies of
address@hidden statements.  The @code{c-continued-statement-offset}
+parameter determines the difference in indentation between the two lines in:
+
address@hidden
+if (x == y)
+  do_it ();
address@hidden example
+
address@hidden
+The default value for @code{c-continued-statement-offset} is 2.  Some
+popular indentation styles correspond to a value of zero for
address@hidden
+
address@hidden c-brace-offset
+  @code{c-brace-offset} is the extra indentation given to a line that
+starts with an open-brace.  Its standard value is zero;
+compare:
+
address@hidden
+if (x == y)
+  @{
address@hidden example
+
address@hidden
+with:
+
address@hidden
+if (x == y)
+  do_it ();
address@hidden example
+
address@hidden
+If you set @code{c-brace-offset} to 4, the first example becomes:
+
address@hidden
+if (x == y)
+      @{
address@hidden example
+
address@hidden c-argdecl-indent
+  @code{c-argdecl-indent} controls the indentation of declarations of the
+arguments of a C function.  It is absolute: argument declarations receive
+exactly @code{c-argdecl-indent} spaces.  The standard value is 5 and
+results in code like this:
+
address@hidden
+char *
+index (string, char)
+     char *string;
+     int char;
address@hidden example
+
address@hidden c-label-offset
+  @code{c-label-offset} is the extra indentation given to a line that
+contains a label, a case statement, or a @code{default:} statement.  Its
+standard value is @minus{}2 and results in code like this:
+
address@hidden
+switch (c)
+  @{
+  case 'x':
address@hidden example
+
address@hidden
+If @code{c-label-offset} were zero, the same code would be indented as:
+
address@hidden
+switch (c)
+  @{
+    case 'x':
address@hidden example
+
address@hidden
+This example assumes that the other variables above also have their
+default values. 
+
+Using the indentation style produced by the default settings of the
+variables just discussed and putting open braces on separate lines
+produces clear and readable files.  For an example, look at any of the C
+source files of XEmacs.
+
address@hidden Matching, Comments, Grinding, Programs
address@hidden Automatic Display of Matching Parentheses
address@hidden matching parentheses
address@hidden parentheses
+
+  The Emacs parenthesis-matching feature shows you automatically how
+parentheses match in the text.  Whenever a self-inserting character that
+is a closing delimiter is typed, the cursor moves momentarily to the
+location of the matching opening delimiter, provided that is visible on
+the screen.  If it is not on the screen, some text starting with that
+opening delimiter is displayed in the echo area.  Either way, you see
+the grouping you are closing off. 
+
+  In Lisp, automatic matching applies only to parentheses.  In C, it
+also applies to braces and brackets.  Emacs knows which characters to regard
+as matching delimiters based on the syntax table set by the major
+mode.  @xref{Syntax}.
+
+  If the opening delimiter and closing delimiter are mismatched---as
+in @samp{[x)}---the echo area displays a warning message.  The
+correct matches are specified in the syntax table.
+
address@hidden blink-matching-paren
address@hidden blink-matching-paren-distance
+  Two variables control parenthesis matching displays.
address@hidden turns the feature on or off. The default is 
address@hidden (match display is on); @code{nil} turns it off.
address@hidden specifies how many characters back
+Emacs searches to find a matching opening delimiter.  If the match is
+not found in the specified region, scanning stops, and nothing is
+displayed.  This prevents wasting lots of time scanning when there is no
+match.  The default is 4000.
+
address@hidden Comments, Balanced Editing, Matching, Programs
address@hidden Manipulating Comments
address@hidden comments
address@hidden M-;
address@hidden indentation
address@hidden indent-for-comment
+
+  The comment commands insert, kill and align comments.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden M-;
+Insert or align comment (@code{indent-for-comment}).
address@hidden C-x ;
+Set comment column (@code{set-comment-column}).
address@hidden C-u - C-x ;
+Kill comment on current line (@code{kill-comment}).
address@hidden address@hidden
+Like @key{RET} followed by inserting and aligning a comment
+(@code{indent-new-comment-line}).
address@hidden table
+
+  The command that creates a comment is @kbd{Meta-;}
+(@code{indent-for-comment}).  If there is no comment already on the
+line, a new comment is created and aligned at a specific column called
+the @dfn{comment column}.  Emacs creates the comment by inserting the
+string at the value of @code{comment-start}; see below.  Point is left
+after that string.  If the text of the line extends past the comment
+column, indentation is done to a suitable boundary (usually, at least
+one space is inserted).  If the major mode has specified a string to
+terminate comments, that string is inserted after point, to keep the
+syntax valid.
+
+  You can also use @kbd{Meta-;} to align an existing comment.  If a line
+already contains the string that starts comments, @kbd{M-;} just moves
+point after it and re-indents it to the conventional place.  Exception:
+comments starting in column 0 are not moved.
+
+  Some major modes have special rules for indenting certain kinds of
+comments in certain contexts.  For example, in Lisp code, comments which
+start with two semicolons are indented as if they were lines of code,
+instead of at the comment column.  Comments which start with three
+semicolons are supposed to start at the left margin.  Emacs understands
+these conventions by indenting a double-semicolon comment using @key{TAB}
+and by not changing the indentation of a triple-semicolon comment at all.
+
address@hidden
+;; This function is just an example.
+;;; Here either two or three semicolons are appropriate.
+(defun foo (x)
+;;; And now, the first part of the function:
+  ;; The following line adds one.
+  (1+ x))           ; This line adds one.
address@hidden example
+
+  In C code, a comment preceded on its line by nothing but whitespace
+is indented like a line of code.
+
+  Even when an existing comment is properly aligned, @kbd{M-;} is still
+useful for moving directly to the start of the comment.
+
address@hidden C-u - C-x ;
address@hidden kill-comment
+  @kbd{C-u - C-x ;} (@code{kill-comment}) kills the comment on the
+current line, if there is one.  The indentation before the start of the
+comment is killed as well.  If there does not appear to be a comment in
+the line, nothing happens.  To reinsert the comment on another line,
+move to the end of that line, type first @kbd{C-y}, and then @kbd{M-;}
+to realign the comment.  Note that @kbd{C-u - C-x ;} is not a distinct
+key; it is @kbd{C-x ;} (@code{set-comment-column}) with a negative
+argument.  That command is programmed to call @code{kill-comment} when
+called with a negative argument.  However, @code{kill-comment} is a
+valid command which you could bind directly to a key if you wanted to.
+
address@hidden Multiple Lines of Comments
+
address@hidden M-LFD
address@hidden blank lines
address@hidden Auto Fill mode
address@hidden indent-new-comment-line
+  If you are typing a comment and want to continue it on another line,
+use the command @address@hidden (@code{indent-new-comment-line}),
+which terminates the comment you are typing, creates a new blank line
+afterward, and begins a new comment indented under the old one.  If
+Auto Fill mode is on and you go past the fill column while typing, the 
+comment is continued in just this fashion.  If point is
+not at the end of the line when you type @address@hidden, the text on
+the rest of the line becomes part of the new comment line.
+
address@hidden Options Controlling Comments
+
address@hidden comment-column
address@hidden C-x ;
address@hidden set-comment-column
+  The comment column is stored in the variable @code{comment-column}.  You
+can explicitly set it to a number.  Alternatively, the command @kbd{C-x ;}
+(@code{set-comment-column}) sets the comment column to the column point is
+at.  @kbd{C-u C-x ;} sets the comment column to match the last comment
+before point in the buffer, and then calls @kbd{Meta-;} to align the
+current line's comment under the previous one.  Note that @kbd{C-u - C-x ;}
+runs the function @code{kill-comment} as described above.
+
+  @code{comment-column} is a per-buffer variable; altering the variable
+affects only the current buffer.  You can also change the default value.
address@hidden  Many major modes initialize this variable
+for the current buffer.
+
address@hidden comment-start-skip
+  The comment commands recognize comments based on the regular expression
+that is the value of the variable @code{comment-start-skip}.  This regexp
+should not match the null string.  It may match more than the comment
+starting delimiter in the strictest sense of the word; for example, in C
+mode the value of the variable is @address@hidden"/\\*+ *"}}, which matches 
extra
+stars and spaces after the @samp{/*} itself.  (Note that @samp{\\} is
+needed in Lisp syntax to include a @samp{\} in the string, which is needed
+to deny the first star its special meaning in regexp syntax.  @xref{Regexps}.)
+
address@hidden comment-start
address@hidden comment-end
+  When a comment command makes a new comment, it inserts the value of
address@hidden to begin it.  The value of @code{comment-end} is
+inserted after point and will follow the text you will insert
+into the comment.  In C mode, @code{comment-start} has the value
address@hidden@code{"/* "}} and @code{comment-end} has the value 
@address@hidden" */"}}.
+
address@hidden comment-multi-line
+  @code{comment-multi-line} controls how @address@hidden
+(@code{indent-new-comment-line}) behaves when used inside a comment.  If
address@hidden is @code{nil}, as it normally is, then
address@hidden@key{LFD}} terminates the comment on the starting line and starts
+a new comment on the new following line.  If @code{comment-multi-line}
+is not @code{nil}, then @address@hidden sets up the new following line
+as part of the same comment that was found on the starting line.  This
+is done by not inserting a terminator on the old line and not inserting
+a starter on the new line.  In languages where multi-line comments are legal,
+the value you choose for this variable is a matter of taste.
+
address@hidden comment-indent-hook
+  The variable @code{comment-indent-hook} should contain a function that
+is called to compute the indentation for a newly inserted comment or for
+aligning an existing comment.  Major modes set this variable differently.
+The function is called with no arguments, but with point at the
+beginning of the comment, or at the end of a line if a new comment is to
+be inserted.  The function should return the column in which the comment
+ought to start.  For example, in Lisp mode, the indent hook function
+bases its decision on the number of semicolons that begin an existing
+comment and on the code in the preceding lines.
+
address@hidden Balanced Editing, Lisp Completion, Comments, Programs
address@hidden Editing Without Unbalanced Parentheses
+
address@hidden @kbd
address@hidden M-(
+Put parentheses around next sexp(s) (@code{insert-parentheses}).
address@hidden M-)
+Move past next close parenthesis and re-indent
+(@code{move-over-close-and-reindent}).
address@hidden table
+
address@hidden M-(
address@hidden M-)
address@hidden insert-parentheses
address@hidden move-over-close-and-reindent
+  The commands @kbd{M-(} (@code{insert-parentheses}) and @kbd{M-)}
+(@code{move-over-close-and-reindent}) are designed to facilitate a style of
+editing which keeps parentheses balanced at all times.  @kbd{M-(} inserts a
+pair of parentheses, either together as in @samp{()}, or, if given an
+argument, around the next several sexps, and leaves point after the open
+parenthesis.  Instead of typing @kbd{( F O O )}, you can type @kbd{M-( F O
+O}, which has the same effect except for leaving the cursor before the
+close parenthesis.  You can then type @kbd{M-)}, which moves past the
+close parenthesis, deletes any indentation preceding it (in this example
+there is none), and indents with @key{LFD} after it.
+
address@hidden Lisp Completion, Documentation, Balanced Editing, Programs
address@hidden Completion for Lisp Symbols
address@hidden completion (symbol names)
+
+   Completion usually happens in the minibuffer.  An exception is
+completion for Lisp symbol names, which is available in all buffers.
+
address@hidden M-TAB
address@hidden lisp-complete-symbol
+  The command @address@hidden (@code{lisp-complete-symbol}) takes the
+partial Lisp symbol before point to be an abbreviation, and compares it
+against all non-trivial Lisp symbols currently known to Emacs.  Any
+additional characters that they all have in common are inserted at point.
+Non-trivial symbols are those that have function definitions, values, or
+properties.
+
+  If there is an open-parenthesis immediately before the beginning of
+the partial symbol, only symbols with function definitions are considered
+as completions.
+
+  If the partial name in the buffer has more than one possible completion
+and they have no additional characters in common, a list of all possible
+completions is displayed in another window.
+
address@hidden Documentation, Change Log, Lisp Completion, Programs
address@hidden Documentation Commands
+
address@hidden C-h f
address@hidden describe-function
address@hidden C-h v
address@hidden describe-variable
+  As you edit Lisp code to be run in Emacs, you can use the commands
address@hidden f} (@code{describe-function}) and @kbd{C-h v}
+(@code{describe-variable}) to print documentation of functions and
+variables you want to call.  These commands use the minibuffer to
+read the name of a function or variable to document, and display the
+documentation in a window.
+
+  For extra convenience, these commands provide default arguments based on
+the code in the neighborhood of point.  @kbd{C-h f} sets the default to the
+function called in the innermost list containing point.  @kbd{C-h v} uses
+the symbol name around or adjacent to point as its default.
+
address@hidden manual-entry
+  The @kbd{M-x manual-entry} command gives you access to documentation
+on Unix commands, system calls, and libraries.  The command reads a
+topic as an argument, and displays the Unix manual page for that topic. 
address@hidden always searches all 8 sections of the
+manual and concatenates all the entries it finds.  For example,
+the topic @samp{termcap} finds the description of the termcap library
+from section 3, followed by the description of the termcap data base
+from section 5.
+
address@hidden Change Log, Tags, Documentation, Programs
address@hidden Change Logs
+
address@hidden change log
address@hidden add-change-log-entry
+  The Emacs command @kbd{M-x add-change-log-entry} helps you keep a record
+of when and why you have changed a program.  It assumes that you have a
+file in which you write a chronological sequence of entries describing
+individual changes.  The default is to store the change entries in a file
+called @file{ChangeLog} in the same directory as the file you are editing.
+The same @file{ChangeLog} file therefore records changes for all the files
+in a directory.
+
+  A change log entry starts with a header line that contains your name
+and the current date.  Except for these header lines, every line in the
+change log starts with a tab.  One entry can describe several changes;
+each change starts with a line starting with a tab and a star.  @kbd{M-x
+add-change-log-entry} visits the change log file and creates a new entry
+unless the most recent entry is for today's date and your name.  In
+either case, it adds a new line to start the description of another
+change just after the header line of the entry.  When @kbd{M-x
+add-change-log-entry} is finished, all is prepared for you to edit in
+the description of what you changed and how.  You must then save the
+change log file yourself.
+
+  The change log file is always visited in Indented Text mode, which means
+that @key{LFD} and auto-filling indent each new line like the previous
+line.  This is convenient for entering the contents of an entry, which must
+be indented.  @xref{Text Mode}.
+
+  Here is an example of the formatting conventions used in the change log
+for Emacs:
+
address@hidden
+Wed Jun 26 19:29:32 1985  Richard M. Stallman  (rms at mit-prep)
+
+        * xdisp.c (try_window_id):
+        If C-k is done at end of next-to-last line,
+        this fn updates window_end_vpos and cannot leave
+        window_end_pos nonnegative (it is zero, in fact).
+        If display is preempted before lines are output,
+        this is inconsistent.  Fix by setting
+        blank_end_of_window to nonzero.
+
+Tue Jun 25 05:25:33 1985  Richard M. Stallman  (rms at mit-prep)
+
+        * cmds.c (Fnewline):
+        Call the auto fill hook if appropriate.
+
+        * xdisp.c (try_window_id):
+        If point is found by compute_motion after xp, record that
+        permanently.  If display_text_line sets point position wrong
+        (case where line is killed, point is at eob and that line is
+        not displayed), set it again in final compute_motion.
address@hidden smallexample
+
address@hidden Tags, Fortran, Change Log, Programs
address@hidden Tags Tables
address@hidden tags table
+
+  A @dfn{tags table} is a description of how a multi-file program is
+broken up into files.  It lists the names of the component files and the
+names and positions of the functions (or other named subunits) in each
+file.  Grouping the related files makes it possible to search or replace
+through all the files with one command.  Recording the function names
+and positions makes possible the @kbd{M-.} command which finds the
+definition of a function by looking up which of the files it is in.
+
+  Tags tables are stored in files called @dfn{tags table files}.  The
+conventional name for a tags table file is @file{TAGS}.
+
+  Each entry in the tags table records the name of one tag, the name of the
+file that the tag is defined in (implicitly), and the position in that file
+of the tag's definition.
+
+  Just what names from the described files are recorded in the tags table
+depends on the programming language of the described file.  They
+normally include all functions and subroutines, and may also include
+global variables, data types, and anything else convenient.  Each name
+recorded is called a @dfn{tag}.
+
address@hidden C++ class browser, tags
address@hidden tags, C++
address@hidden class browser, C++
address@hidden Ebrowse
+The Ebrowse is a separate facility tailored for C++, with tags and a
+class browser.  @xref{Top,,, ebrowse, Ebrowse User's Manual}.
+
address@hidden
+* Tag Syntax::         Tag syntax for various types of code and text files.
+* Create Tags Table::  Creating a tags table with @code{etags}.
+* Etags Regexps::       Create arbitrary tags using regular expressions.
+* Select Tags Table::  How to visit a tags table.
+* Find Tag::           Commands to find the definition of a specific tag.
+* Tags Search::                Using a tags table for searching and replacing.
+* List Tags::          Listing and finding tags defined in a file.
address@hidden menu
+
address@hidden Tag Syntax
address@hidden Source File Tag Syntax
+
+  Here is how tag syntax is defined for the most popular languages:
+
address@hidden @bullet
address@hidden
+In C code, any C function or typedef is a tag, and so are definitions of
address@hidden, @code{union} and @code{enum}.  You can tag function
+declarations and external variables in addition to function definitions
+by giving the @samp{--declarations} option to @code{etags}.
address@hidden macro definitions and @code{enum} constants are also
+tags, unless you specify @samp{--no-defines} when making the tags table.
+Similarly, global variables are tags, unless you specify
address@hidden  Use of @samp{--no-globals} and @samp{--no-defines}
+can make the tags table file much smaller.
+
address@hidden
+In C++ code, in addition to all the tag constructs of C code, member
+functions are also recognized, and optionally member variables if you
+use the @samp{--members} option.  Tags for variables and functions in
+classes are named @address@hidden::@var{variable}} and
address@hidden@var{class}::@var{function}}.  @code{operator} functions tags are
+named, for example @samp{operator+}.
+
address@hidden
+In Java code, tags include all the constructs recognized in C++, plus
+the @code{interface}, @code{extends} and @code{implements} constructs.
+Tags for variables and functions in classes are named
address@hidden@address@hidden and @address@hidden@var{function}}.
+
address@hidden
+In address@hidden text, the argument of any of the commands @code{\chapter},
address@hidden, @code{\subsection}, @code{\subsubsection},
address@hidden, @code{\label}, @code{\ref}, @code{\cite}, @code{\bibitem},
address@hidden, @code{\appendix}, @code{\entry}, or @code{\index}, is a
address@hidden
+
+Other commands can make tags as well, if you specify them in the
+environment variable @code{TEXTAGS} before invoking @code{etags}.  The
+value of this environment variable should be a colon-separated list of
+command names.  For example,
+
address@hidden
+TEXTAGS="def:newcommand:newenvironment"
+export TEXTAGS
address@hidden example
+
address@hidden
+specifies (using Bourne shell syntax) that the commands @samp{\def},
address@hidden and @samp{\newenvironment} also define tags.
+
address@hidden
+In Lisp code, any function defined with @code{defun}, any variable
+defined with @code{defvar} or @code{defconst}, and in general the first
+argument of any expression that starts with @samp{(def} in column zero, is
+a tag.
+
address@hidden
+In Scheme code, tags include anything defined with @code{def} or with a
+construct whose name starts with @samp{def}.  They also include variables
+set with @code{set!} at top level in the file.
address@hidden itemize
+
+  Several other languages are also supported:
+
address@hidden @bullet
+
address@hidden
+In Ada code, functions, procedures, packages, tasks, and types are
+tags.  Use the @samp{--packages-only} option to create tags for
+packages only.
+
+With Ada, it is possible to have the same name used for different
+entity kinds (e.g.@: the same name for a procedure and a function).  Also,
+for things like packages, procedures and functions, there is the spec
+(i.e.@: the interface) and the body (i.e.@: the implementation).  To
+facilitate the choice to the user, a tag value is appended with a
+qualifier:
+
address@hidden @asis
address@hidden function
+ @kbd{/f}
address@hidden procedure
+ @kbd{/p}
address@hidden package spec
+ @kbd{/s}
address@hidden package body
+ @kbd{/b}
address@hidden type
+ @kbd{/t}
address@hidden task
+ @kbd{/k}
address@hidden table
+
+So, as an example, @kbd{M-x find-tag bidule/b} will go directly to the
+body of the package @var{bidule} while @kbd{M-x find-tag bidule} will
+just search for any tag @var{bidule}.
+
address@hidden
+In assembler code, labels appearing at the beginning of a line,
+followed by a colon, are tags.
+
address@hidden
+In Bison or Yacc input files, each rule defines as a tag the nonterminal
+it constructs.  The portions of the file that contain C code are parsed
+as C code.
+
address@hidden
+In Cobol code, tags are paragraph names; that is, any word starting in
+column 8 and followed by a period.
+
address@hidden
+In Erlang code, the tags are the functions, records, and macros defined
+in the file.
+
address@hidden
+In Fortran code, functions, subroutines and blockdata are tags.
+
address@hidden
+In makefiles, targets are tags.
+
address@hidden
+In Objective C code, tags include Objective C definitions for classes,
+class categories, methods, and protocols.
+
address@hidden
+In Pascal code, the tags are the functions and procedures defined in
+the file.
+
address@hidden
+In Perl code, the tags are the procedures defined by the @code{sub},
address@hidden and @code{local} keywords.  Use @samp{--globals} if you want
+to tag global variables.
+
address@hidden
+In PostScript code, the tags are the functions.
+
address@hidden
+In Prolog code, a tag name appears at the left margin.
+
address@hidden
+In Python code, @code{def} or @code{class} at the beginning of a line
+generate a tag.
address@hidden itemize
+
+  You can also generate tags based on regexp matching (@pxref{Etags
+Regexps}) to handle other formats and languages.
+
address@hidden Create Tags Table
address@hidden Creating Tags Tables
address@hidden @code{etags} program
+
+  The @code{etags} program is used to create a tags table file.  It knows
+the syntax of several languages, as described in
address@hidden Syntax}.
+Here is how to run @code{etags}:
+
address@hidden
+etags @address@hidden
address@hidden example
+
address@hidden
+The @code{etags} program reads the specified files, and writes a tags
+table named @file{TAGS} in the current working directory.  You can
+intermix compressed and plain text source file names.  @code{etags}
+knows about the most common compression formats, and does the right
+thing.  So you can compress all your source files and have @code{etags}
+look for compressed versions of its file name arguments, if it does not
+find uncompressed versions.  Under MS-DOS, @code{etags} also looks for
+file names like @samp{mycode.cgz} if it is given @samp{mycode.c} on the
+command line and @samp{mycode.c} does not exist.
+
+  @code{etags} recognizes the language used in an input file based on
+its file name and contents.  You can specify the language with the
address@hidden@var{name}} option, described below.
+
+  If the tags table data become outdated due to changes in the files
+described in the table, the way to update the tags table is the same way it
+was made in the first place.  It is not necessary to do this often.
+
+  If the tags table fails to record a tag, or records it for the wrong
+file, then Emacs cannot possibly find its definition.  However, if the
+position recorded in the tags table becomes a little bit wrong (due to
+some editing in the file that the tag definition is in), the only
+consequence is a slight delay in finding the tag.  Even if the stored
+position is very wrong, Emacs will still find the tag, but it must
+search the entire file for it.
+
+  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.
+
+  One tags table can effectively include another.  Specify the included
+tags file name with the @address@hidden option when creating
+the file that is to include it.  The latter file then acts as if it
+contained all the files specified in the included file, as well as the
+files it directly contains.
+
+  If you specify the source files with relative file names when you run
address@hidden, the tags file will contain file names relative to the
+directory where the tags file was initially written.  This way, you can
+move an entire directory tree containing both the tags file and the
+source files, and the tags file will still refer correctly to the source
+files.
+
+  If you specify absolute file names as arguments to @code{etags}, then
+the tags file will contain absolute file names.  This way, the tags file
+will still refer to the same files even if you move it, as long as the
+source files remain in the same place.  Absolute file names start with
address@hidden/}, or with @address@hidden:/} on MS-DOS and MS-Windows.
+
+  When you want to make a tags table from a great number of files, you
+may have problems listing them on the command line, because some systems
+have a limit on its length.  The simplest way to circumvent this limit
+is to tell @code{etags} to read the file names from its standard input,
+by typing a dash in place of the file names, like this:
+
address@hidden
+find . -name "*.[chCH]" -print | etags -
address@hidden smallexample
+
+  Use the option @address@hidden to specify the language
+explicitly.  You can intermix these options with file names; each one
+applies to the file names that follow it.  Specify
address@hidden to tell @code{etags} to resume guessing the
+language from the file names and file contents.  Specify
address@hidden to turn off language-specific processing
+entirely; then @code{etags} recognizes tags by regexp matching alone
+(@pxref{Etags Regexps}).
+
+  @samp{etags --help} prints 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.
+
address@hidden Etags Regexps
address@hidden 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.
+Each @samp{--regex} option adds to the preceding ones, and applies only
+to the following files.  The syntax is:
+
address@hidden
+--regex=/@var{tagregexp}[/@var{nameregexp}]/
address@hidden smallexample
+
address@hidden
+where @var{tagregexp} is used to match the lines to tag.  It is always
+anchored, that is, it behaves as if preceded by @samp{^}.  If you want
+to account for indentation, just match any initial number of blanks by
+beginning your regular expression with @samp{[ \t]*}.  In the regular
+expressions, @samp{\} quotes the next character, and @samp{\t} stands
+for the tab character.  Note that @code{etags} does not handle the other
+C escape sequences for special characters.
+
address@hidden interval operator (in regexps)
+  The syntax of regular expressions in @code{etags} is the same as in
+Emacs, augmented with the @dfn{interval operator}, which works as in
address@hidden and @code{ed}.  The syntax of an interval operator is
address@hidden@address@hidden,@address@hidden, and its meaning is to match the 
preceding
+expression at least @var{m} times and up to @var{n} times.
+
+  You should not match more characters with @var{tagregexp} than that
+needed to recognize what you want to tag.  If the match is such that
+more characters than needed are unavoidably matched by @var{tagregexp}
+(as will usually be the case), you should add a @var{nameregexp}, to
+pick out just the tag.  This will enable Emacs to find tags more
+accurately and to do completion on tag names more reliably.  You can
+find some examples below.
+
+  The option @samp{--ignore-case-regex} (or @samp{-c}) is like
address@hidden, except that the regular expression provided will be
+matched without regard to case, which is appropriate for various
+programming languages.
+
+  The @samp{-R} option deletes all the regexps defined with
address@hidden options.  It applies to the file names following it, as
+you can see from the following example:
+
address@hidden
+etags --regex=/@var{reg1}/ voo.doo --regex=/@var{reg2}/ \
+    bar.ber -R --lang=lisp los.er
address@hidden smallexample
+
address@hidden
+Here @code{etags} chooses the parsing language for @file{voo.doo} and
address@hidden according to their contents.  @code{etags} also uses
address@hidden to recognize additional tags in @file{voo.doo}, and both
address@hidden and @var{reg2} to recognize additional tags in
address@hidden  @code{etags} uses the Lisp tags rules, and no regexp
+matching, to recognize tags in @file{los.er}.
+
+  A regular expression can be bound to a given language, by prepending
+it with @address@hidden@}}.  When you do this, @code{etags} will use the
+regular expression only for files of that language.  @samp{etags --help}
+prints the list of languages recognised by @code{etags}.  The following
+example tags the @code{DEFVAR} macros in the Emacs source files.
address@hidden applies this regular expression to C files only:
+
address@hidden
+--regex='@address@hidden/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/'
address@hidden smallexample
+
address@hidden
+This feature is particularly useful when storing a list of regular
+expressions in a file.  The following option syntax instructs
address@hidden to read two files of regular expressions.  The regular
+expressions contained in the second file are matched without regard to
+case.
+
address@hidden
+--regex=@@first-file --ignore-case-regex=@@second-file
address@hidden smallexample
+
address@hidden
+A regex file contains one regular expressions per line.  Empty lines,
+and lines beginning with space or tab are ignored.  When the first
+character in a line is @samp{@@}, @code{etags} assumes that the rest of
+the line is the name of a file of regular expressions.  This means that
+such files can be nested.  All the other lines are taken to be regular
+expressions.  For example, one can create a file called
address@hidden with the following contents (the first line in the
+file is a comment):
+
address@hidden
+        -- This is for GNU Emacs source files
address@hidden@}/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/\1/
address@hidden smallexample
+
address@hidden
+and then use it like this:
+
address@hidden
+etags --regex=@@emacs.tags *.[ch] */*.[ch]
address@hidden smallexample
+
+  Here are some more examples.  The regexps are quoted to protect them
+from shell interpretation.
+
address@hidden @bullet
+
address@hidden
+Tag Octave files:
+
address@hidden
+etags --language=none \
+      --regex='/[ \t]*function.*=[ \t]*\([^ \t]*\)[ \t]*(/\1/' \
+      --regex='/###key \(.*\)/\1/' \
+      --regex='/[ \t]*global[ \t].*/' \
+      *.m
address@hidden smallexample
+
address@hidden
+Note that tags are not generated for scripts so that you have to add a
+line by yourself of the form `###key <script-name>' if you want to jump
+to it.
+
address@hidden
+Tag Tcl files:
+
address@hidden
+etags --language=none --regex='/proc[ \t]+\([^ \t]+\)/\1/' *.tcl
address@hidden smallexample
+
address@hidden
+Tag VHDL files:
+
address@hidden
+--language=none \
+--regex='/[ \t]*\(ARCHITECTURE\|CONFIGURATION\) +[^ ]* +OF/' \
+--regex='/[ \t]*\(ATTRIBUTE\|ENTITY\|FUNCTION\|PACKAGE\
+\( BODY\)?\|PROCEDURE\|PROCESS\|TYPE\)[ \t]+\([^ \t(]+\)/\3/'
address@hidden smallexample
address@hidden itemize
+
address@hidden Select Tags Table, Find Tag, Etags Regexps, Tags
address@hidden Selecting a Tags Table
+
address@hidden tag-table-alist
+   At any time Emacs has one @dfn{selected} tags table, and all the commands
+for working with tags tables use the selected one.  To select a tags table,
+use the variable @code{tag-table-alist}.
+
+The value of @code{tag-table-alist} is a list that determines which
address@hidden files should be active for a given buffer.  This is not
+really an association list, in that all elements are checked.  The car
+of each element of this list is a pattern against which the buffers file
+name is compared; if it matches, then the cdr of the list should be the
+name of the tags table to use.  If more than one element of this list
+matches the buffers file name, all of the associated tags tables are
+used.  Earlier ones are searched first.
+
+If the car of elements of this list are strings, they are treated
+as regular-expressions against which the file is compared (like the
address@hidden).  If they are not strings, they are evaluated.
+If they evaluate to address@hidden, the current buffer is considered to
+match.
+
+If the cdr of the elements of this list are strings, they are
+assumed to name a tags file.  If they name a directory, the string
address@hidden is appended to them to get the file name.  If they are not 
+strings, they are evaluated and must return an appropriate string.
+
+For example:
+
address@hidden
+  (setq tag-table-alist
+        '(("/usr/src/public/perl/" . "/usr/src/public/perl/perl-3.0/")
+          ("\\.el$" . "/usr/local/emacs/src/")
+          ("/jbw/gnu/" . "/usr15/degree/stud/jbw/gnu/")
+          ("" . "/usr/local/emacs/src/")
+          ))
address@hidden example
+
+The example defines the tags table alist in the following way:
+ 
address@hidden @bullet
address@hidden
+Anything in the directory @file{/usr/src/public/perl/} 
+should use the @file{TAGS} file @file{/usr/src/public/perl/perl-3.0/TAGS}. 
address@hidden
+Files ending in @file{.el} should use the @file{TAGS} file
address@hidden/usr/local/emacs/src/TAGS}. 
address@hidden
+Anything in or below the directory @file{/jbw/gnu/} should use the 
address@hidden file @file{/usr15/degree/stud/jbw/gnu/TAGS}.  
address@hidden itemize
+
+If you had a file called @file{/usr/jbw/foo.el}, it would use both
address@hidden files, @* @file{/usr/local/emacs/src/TAGS} and
address@hidden/usr15/degree/stud/jbw/gnu/TAGS} (in that order), because it
+matches both patterns.
+
+If the buffer-local variable @code{buffer-tag-table} is set, it names a
+tags table that is searched before all others when @code{find-tag} is
+executed from this buffer.
+
+If there is a file called @file{TAGS} in the same directory as the file
+in question, then that tags file will always be used as well (after the
address@hidden but before the tables specified by this list).
+
+If the variable @code{tags-file-name} is set, the @file{TAGS} file it names
+will apply to all buffers (for backwards compatibility.)  It is searched
+first.
+
address@hidden tags-always-build-completion-table
+If the value of the variable @code{tags-always-build-completion-table}
+is @code{t}, the tags file will always be added to the completion table
+without asking first, regardless of the size of the tags file.
+
address@hidden tags-file-name
address@hidden visit-tags-table
+The function @kbd{M-x visit-tags-table}, is largely made obsolete by
+the variable @code{tag-table-alist}, tells tags commands to use the tags
+table file @var{file} first.  The @var{file} should be the name of a
+file created with the @code{etags} program.  A directory name is also
+acceptable; it means the file @file{TAGS} in that directory.  The
+function only stores the file name you provide in the variable
address@hidden  Emacs does not actually read in the tags table
+contents until you try to use them.  You can set the variable explicitly
+instead of using @code{visit-tags-table}.  The value of the variable
address@hidden is the name of the tags table used by all buffers.
+This is for backward compatibility, and is largely supplanted by the
+variable @code{tag-table-alist}.
+ 
address@hidden Find Tag, Tags Search, Select Tags Table, Tags
address@hidden Finding a Tag
+
+  The most important thing that a tags table enables you to do is to find
+the definition of a specific tag.
+
address@hidden @kbd
address@hidden M-.@: @var{tag &optional other-window}
+Find first definition of @var{tag} (@code{find-tag}).
address@hidden C-u M-.
+Find next alternate definition of last tag specified.
address@hidden C-x 4 . @var{tag}
+Find first definition of @var{tag}, but display it in another window
+(@code{find-tag-other-window}).
address@hidden table
+
address@hidden M-.
address@hidden find-tag
+  @kbd{M-.}@: (@code{find-tag}) is the command to find the definition of
+a specified tag.  It searches through the tags table for that tag, as a
+string, then uses the tags table information to determine the file in
+which the definition is used and the approximate character position of
+the definition in the file.  Then @code{find-tag} visits the file,
+moves point to the approximate character position, and starts searching
+ever-increasing distances away for the text that should appear at
+the beginning of the definition.
+
+  If an empty argument is given (by typing @key{RET}), the sexp in the
+buffer before or around point is used as the name of the tag to find.
address@hidden, for information on sexps.
+
+  The argument to @code{find-tag} need not be the whole tag name; it can
+be a substring of a tag name.  However, there can be many tag names
+containing the substring you specify.  Since @code{find-tag} works by
+searching the text of the tags table, it finds the first tag in the table
+that the specified substring appears in.  To find other tags that match
+the substring, give @code{find-tag} a numeric argument, as in @kbd{C-u
+M-.}.  This does not read a tag name, but continues searching the tag
+table's text for another tag containing the same substring last used.
+If your keyboard has a real @key{META} key, @kbd{M-0 M-.}@: is an easier
+alternative to @kbd{C-u M-.}.
+
+If the optional second argument @var{other-window} is address@hidden, it uses
+another window to display the tag.
+Multiple active tags tables and completion are supported.
+
+Variables of note include the following:
+
address@hidden tag-table-alist
address@hidden tags-file-name
address@hidden tags-build-completion-table
address@hidden buffer-tag-table
address@hidden make-tags-files-invisible
address@hidden tag-mark-stack-max
+
address@hidden @kbd
address@hidden tag-table-alist
+Controls which tables apply to which buffers.
address@hidden tags-file-name
+Stores a default tags table.
address@hidden tags-build-completion-table
+Controls completion behavior.
address@hidden buffer-tag-table
+Specifies a buffer-local table.
address@hidden make-tags-files-invisible
+Sets whether tags tables should be very hidden.
address@hidden tag-mark-stack-max
+Specifies how many tags-based hops to remember.
address@hidden table
+
address@hidden C-x 4 .
address@hidden find-tag-other-window
+  Like most commands that can switch buffers, @code{find-tag} has another
+similar command that displays the new buffer in another window.  @kbd{C-x 4
+.}@: invokes the function @code{find-tag-other-window}.  (This key sequence
+ends with a period.)
+
+  Emacs comes with a tags table file @file{TAGS} (in the directory
+containing Lisp libraries) that includes all the Lisp libraries and all
+the C sources of Emacs.  By specifying this file with @code{visit-tags-table}
+and then using @kbd{M-.}@: you can quickly look at the source of any Emacs
+function.
+
address@hidden Tags Search, List Tags, Find Tag, Tags
address@hidden Searching and Replacing with Tags Tables
+
+  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.  A related command is
address@hidden grep} (@pxref{Compilation}).
+
address@hidden @kbd
address@hidden M-x tags-search @key{RET} @var{regexp} @key{RET}
+Search for @var{regexp} through the files in the selected tags
+table.
address@hidden M-x tags-query-replace @key{RET} @var{regexp} @key{RET} 
@var{replacement} @key{RET}
+Perform a @code{query-replace-regexp} on each file in the selected tags table.
address@hidden M-,
+Restart one of the commands above, from the current location of point
+(@code{tags-loop-continue}).
address@hidden table
+
address@hidden tags-search
+  @kbd{M-x tags-search} reads a regexp using the minibuffer, then
+searches for matches in all the files in the selected tags table, one
+file at a time.  It displays the name of the file being searched so you
+can follow its progress.  As soon as it finds an occurrence,
address@hidden returns.
+
address@hidden M-,
address@hidden tags-loop-continue
+  Having found one match, you probably want to find all the rest.  To find
+one more match, type @kbd{M-,} (@code{tags-loop-continue}) to resume the
address@hidden  This searches the rest of the current buffer, followed
+by the remaining files of the tags address@hidden
+
address@hidden tags-query-replace
+  @kbd{M-x tags-query-replace} performs a single
address@hidden through all the files in the tags table.  It
+reads a regexp to search for and a string to replace with, just like
+ordinary @kbd{M-x query-replace-regexp}.  It searches much like @kbd{M-x
+tags-search}, but repeatedly, processing matches according to your
+input.  @xref{Replace}, for more information on query replace.
+
+  It is possible to get through all the files in the tags table with a
+single invocation of @kbd{M-x tags-query-replace}.  But often it is
+useful to exit temporarily, which you can do with any input event that
+has no special query replace meaning.  You can resume the query replace
+subsequently by typing @kbd{M-,}; this command resumes the last tags
+search or replace command that you did.
+
+  The commands in this section carry out much broader searches than the
address@hidden family.  The @code{find-tag} commands search only for
+definitions of tags that match your substring or regexp.  The commands
address@hidden and @code{tags-query-replace} find every occurrence
+of the regexp, as ordinary search commands and replace commands do in
+the current buffer.
+
+  These commands create buffers only temporarily for the files that they
+have to search (those which are not already visited in Emacs buffers).
+Buffers in which no match is found are quickly killed; the others
+continue to exist.
+
+  It may have struck you that @code{tags-search} is a lot like
address@hidden  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
address@hidden matches works like finding the compilation errors.
address@hidden
+
+  If you wish to process all the files in a selected tags table, but
address@hidden tags-search} and @kbd{M-x tags-query-replace} are not giving
+you the desired result, you can use @kbd{M-x next-file}.
+
address@hidden @kbd
address@hidden C-u M-x next-file
+With a numeric argument, regardless of its value, visit the first
+file in the tags table and prepare to advance sequentially by files.
address@hidden M-x next-file
+Visit the next file in the selected tags table.
address@hidden table
+
address@hidden List Tags,  , Tags Search, Tags
address@hidden Tags Table Inquiries
+
address@hidden @kbd
address@hidden M-x list-tags
+Display a list of the tags defined in a specific program file.
address@hidden M-x tags-apropos
+Display a list of all tags matching a specified regexp.
address@hidden table
+
address@hidden list-tags
+  @kbd{M-x list-tags} reads the name of one of the files described by the
+selected tags table, and displays a list of all the tags defined in that
+file.  The ``file name'' argument is really just a string to compare
+against the names recorded in the tags table; it is read as a string rather
+than a file name.  Therefore, completion and defaulting are not
+available, and you must enter the string the same way it appears in the tag
+table.  Do not include a directory as part of the file name unless the file
+name recorded in the tags table contains that directory.
+
address@hidden tags-apropos
+  @kbd{M-x tags-apropos} is like @code{apropos} for tags.  It reads a regexp,
+then finds all the tags in the selected tags table whose entries match that
+regexp, and displays the tag names found.
+
address@hidden Fortran, Asm Mode, Tags, Programs
address@hidden Fortran Mode
address@hidden Fortran mode
+
+  Fortran mode provides special motion commands for Fortran statements and
+subprograms, and indentation commands that understand Fortran conventions
+of nesting, line numbers, and continuation statements.
+
+  Special commands for comments are provided because Fortran comments are
+unlike those of other languages.
+
+  Built-in abbrevs optionally save typing when you insert Fortran keywords.
+
address@hidden fortran-mode
+  Use @kbd{M-x fortran-mode} to switch to this major mode.  Doing so calls
+the value of @code{fortran-mode-hook} as a function of no arguments if
+that variable has a address@hidden value.
+
address@hidden
+* Motion: Fortran Motion.     Moving point by statements or subprograms.
+* Indent: Fortran Indent.     Indentation commands for Fortran.
+* Comments: Fortran Comments. Inserting and aligning comments.
+* Columns: Fortran Columns.   Measuring columns for valid Fortran.
+* Abbrev: Fortran Abbrev.     Built-in abbrevs for Fortran keywords.
address@hidden menu
+
+  Fortran mode was contributed by Michael Prange.
+
address@hidden Fortran Motion, Fortran Indent, Fortran, Fortran
address@hidden Motion Commands
+
+  Fortran mode provides special commands to move by subprograms (functions
+and subroutines) and by statements.  There is also a command to put the
+region around one subprogram, which is convenient for killing it or moving it.
+
address@hidden C-M-a (Fortran mode)
address@hidden C-M-e (Fortran mode)
address@hidden C-M-h (Fortran mode)
address@hidden C-c C-p (Fortran mode)
address@hidden C-c C-n (Fortran mode)
address@hidden beginning-of-fortran-subprogram
address@hidden end-of-fortran-subprogram
address@hidden mark-fortran-subprogram
address@hidden fortran-previous-statement
address@hidden fortran-next-statement
+
address@hidden @kbd
address@hidden C-M-a
+Move to beginning of address@hidden
+(@code{beginning-of-fortran-subprogram}).
address@hidden C-M-e
+Move to end of subprogram (@code{end-of-fortran-subprogram}).
address@hidden C-M-h
+Put point at beginning of subprogram and mark at end
+(@code{mark-fortran-subprogram}).
address@hidden C-c C-n
+Move to beginning of current or next statement
+(@address@hidden).
address@hidden C-c C-p
+Move to beginning of current or previous statement
+(@address@hidden).
address@hidden table
+
address@hidden Fortran Indent, Fortran Comments, Fortran Motion, Fortran
address@hidden Fortran Indentation
+
+  Special commands and features are available for indenting Fortran
+code.  They make sure various syntactic entities (line numbers, comment line
+indicators, and continuation line flags) appear in the columns that are
+required for standard Fortran.
+
address@hidden
+* Commands: ForIndent Commands. Commands for indenting Fortran.
+* Numbers:  ForIndent Num.      How line numbers auto-indent.
+* Conv:     ForIndent Conv.     Conventions you must obey to avoid trouble.
+* Vars:     ForIndent Vars.     Variables controlling Fortran indent style.
address@hidden menu
+
address@hidden ForIndent Commands, ForIndent Num, Fortran Indent, Fortran Indent
address@hidden Fortran Indentation Commands
+
address@hidden @kbd
address@hidden @key{TAB}
+Indent the current line (@code{fortran-indent-line}).
address@hidden address@hidden
+Break the current line and set up a continuation line.
address@hidden C-M-q
+Indent all the lines of the subprogram point is in
+(@code{fortran-indent-subprogram}).
address@hidden table
+
address@hidden fortran-indent-line
+  @key{TAB} is redefined by Fortran mode to reindent the current line for
+Fortran (@code{fortran-indent-line}).  Line numbers and continuation
+markers are indented to their required columns, and the body of the
+statement is independently indented, based on its nesting in the program.
+
address@hidden C-M-q (Fortran mode)
address@hidden fortran-indent-subprogram
+  The key @kbd{C-M-q} is redefined as @code{fortran-indent-subprogram}, a
+command that reindents all the lines of the Fortran subprogram (function or
+subroutine) containing point.
+
address@hidden M-LFD (Fortran mode)
address@hidden fortran-split-line
+  The key @address@hidden is redefined as @code{fortran-split-line}, a
+command to split a line in the appropriate fashion for Fortran.  In a
+non-comment line, the second half becomes a continuation line and is
+indented accordingly.  In a comment line, both halves become separate
+comment lines.
+
address@hidden ForIndent Num, ForIndent Conv, ForIndent Commands, Fortran Indent
address@hidden Line Numbers and Continuation
+
+  If a number is the first non-whitespace in the line, it is assumed to be
+a line number and is moved to columns 0 through 4.  (Columns are always
+counted from 0 in XEmacs.)  If the text on the line starts with the
+conventional Fortran continuation marker @samp{$}, it is moved to column 5.
+If the text begins with any non whitespace character in column 5, it is
+assumed to be an unconventional continuation marker and remains in column
+5.
+
address@hidden fortran-line-number-indent
+  Line numbers of four digits or less are normally indented one space.
+This amount is controlled by the variable @code{fortran-line-number-indent},
+which is the maximum indentation a line number can have.  Line numbers
+are indented to right-justify them to end in column 4 unless that would
+require more than the maximum indentation.  The default value of the
+variable is 1.
+
address@hidden fortran-electric-line-number
+  Simply inserting a line number is enough to indent it according to these
+rules.  As each digit is inserted, the indentation is recomputed.  To turn
+off this feature, set the variable @code{fortran-electric-line-number} to
address@hidden  Then inserting line numbers is like inserting anything else.
+
address@hidden ForIndent Conv, ForIndent Vars, ForIndent Num, Fortran Indent
address@hidden Syntactic Conventions
+
+  Fortran mode assumes that you follow certain conventions that simplify
+the task of understanding a Fortran program well enough to indent it
+properly:
+
address@hidden fortran-continuation-char
address@hidden @bullet
address@hidden
+Two nested @samp{do} loops never share a @samp{continue} statement.
+
address@hidden
+The same character appears in column 5 of all continuation lines.  It
+is the value of the variable @code{fortran-continuation-char}.
+By default, this character is @samp{$}.
address@hidden itemize
+
address@hidden
+If you fail to follow these conventions, the indentation commands may
+indent some lines unaesthetically.  However, a correct Fortran program will
+retain its meaning when reindented even if the conventions are not
+followed.
+
address@hidden ForIndent Vars,  , ForIndent Conv, Fortran Indent
address@hidden Variables for Fortran Indentation
+
address@hidden fortran-do-indent
address@hidden fortran-if-indent
address@hidden fortran-continuation-indent
address@hidden fortran-check-all-num-for-matching-do
address@hidden fortran-minimum-statement-indent
+  Several additional variables control how Fortran indentation works.
+
address@hidden @code
address@hidden fortran-do-indent
+Extra indentation within each level of @samp{do} statement (the default is 3).
+
address@hidden fortran-if-indent
+Extra indentation within each level of @samp{if} statement (the default is 3).
+
address@hidden fortran-continuation-indent
+Extra indentation for bodies of continuation lines (the default is 5).
+
address@hidden fortran-check-all-num-for-matching-do
+If this is @code{nil}, indentation assumes that each @samp{do}
+statement ends on a @samp{continue} statement.  Therefore, when
+computing indentation for a statement other than @samp{continue}, it
+can save time by not checking for a @samp{do} statement ending there.
+If this is address@hidden, indenting any numbered statement must check
+for a @samp{do} that ends there.  The default is @code{nil}.
+
address@hidden fortran-minimum-statement-indent
+Minimum indentation for Fortran statements.  For standard Fortran,
+this is 6.  Statement bodies are always indented at least this much.
address@hidden table
+
address@hidden Fortran Comments, Fortran Columns, Fortran Indent, Fortran
address@hidden Comments
+
+  The usual Emacs comment commands assume that a comment can follow a line
+of code.  In Fortran, the standard comment syntax requires an entire line
+to be just a comment.  Therefore, Fortran mode replaces the standard Emacs
+comment commands and defines some new variables.
+
+  Fortran mode can also handle a non-standard comment syntax where comments
+start with @samp{!} and can follow other text.  Because only some Fortran
+compilers accept this syntax, Fortran mode will not insert such comments
+unless you have specified to do so in advance by setting the variable
address@hidden to @samp{"!"} (@pxref{Variables}).
+
address@hidden @kbd
address@hidden M-;
+Align comment or insert new comment (@code{fortran-comment-indent}).
+
address@hidden C-x ;
+Applies to nonstandard @samp{!} comments only.
+
address@hidden C-c ;
+Turn all lines of the region into comments, or (with arg)
+turn them back into real code (@code{fortran-comment-region}).
address@hidden table
+
+  @kbd{M-;} in Fortran mode is redefined as the command
address@hidden  Like the usual @kbd{M-;} command,
+it recognizes an existing comment and aligns its text appropriately.
+If there is no existing comment, a comment is inserted and aligned.
+
+Inserting and aligning comments is not the same in Fortran mode as in
+other modes.  When a new comment must be inserted, a full-line comment is
+inserted if the current line is blank.  On a non-blank line, a
+non-standard @samp{!} comment is inserted if you previously specified
+you wanted to use them.  Otherwise a full-line comment is inserted on a
+new line before the current line.
+
+  Non-standard @samp{!} comments are aligned like comments in other
+languages, but full-line comments are aligned differently.  In a
+standard full-line comment, the comment delimiter itself must always
+appear in column zero.  What can be aligned is the text within the
+comment.  You can choose from three styles of alignment by setting the
+variable @code{fortran-comment-indent-style} to one of these values:
+
address@hidden fortran-comment-indent-style
address@hidden fortran-comment-line-column
address@hidden @code
address@hidden fixed
+The text is aligned at a fixed column, which is the value of
address@hidden  This is the default.
address@hidden relative
+The text is aligned as if it were a line of code, but with an
+additional @code{fortran-comment-line-column} columns of indentation.
address@hidden nil
+Text in full-line columns is not moved automatically.
address@hidden table
+
address@hidden fortran-comment-indent-char
+  You can also specify the character to be used to indent within
+full-line comments by setting the variable @code{fortran-comment-indent-char}
+to the character you want to use.
+
address@hidden comment-line-start
address@hidden comment-line-start-skip
+  Fortran mode introduces two variables @code{comment-line-start} and
address@hidden, which do for full-line comments what
address@hidden and @code{comment-start-skip} do for
+ordinary text-following comments.  Normally these are set properly by
+Fortran mode, so you do not need to change them.
+
+  The normal Emacs comment command @kbd{C-x ;} has not been redefined.
+It can therefore be used if you use @samp{!} comments, but is useless in
+Fortran mode otherwise. 
+
address@hidden C-c ; (Fortran mode)
address@hidden fortran-comment-region
address@hidden fortran-comment-region
+  The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
+lines of the region into comments by inserting the string @samp{C$$$} at
+the front of each one.  With a numeric arg, the region is turned back into
+live code by deleting @samp{C$$$} from the front of each line.  You can
+control the string used for the comments by setting the variable
address@hidden  Note that here we have an example of a
+command and a variable with the same name; the two uses of the name never
+conflict because in Lisp and in Emacs it is always clear from the context
+which one is referred to.
+
address@hidden Fortran Columns, Fortran Abbrev, Fortran Comments, Fortran
address@hidden Columns
+
address@hidden @kbd
address@hidden C-c C-r
+Displays a ``column ruler'' momentarily above the current line
+(@code{fortran-column-ruler}).
address@hidden C-c C-w
+Splits the current window horizontally so that it is 72 columns wide.
+This may help you avoid going over that limit (@code{fortran-window-create}).
address@hidden table
+
address@hidden C-c C-r (Fortran mode)
address@hidden fortran-column-ruler
+  The command @kbd{C-c C-r} (@code{fortran-column-ruler}) shows a column
+ruler above the current line.  The comment ruler consists of two lines
+of text that show you the locations of columns with special significance
+in Fortran programs.  Square brackets show the limits of the columns for
+line numbers, and curly brackets show the limits of the columns for the
+statement body.  Column numbers appear above them.
+
+  Note that the column numbers count from zero, as always in XEmacs.  As
+a result, the numbers may not be those you are familiar with; but the
+actual positions in the line are standard Fortran.
+
+  The text used to display the column ruler is the value of the variable
address@hidden  By changing this variable, you can change
+the display.
+
address@hidden C-c C-w (Fortran mode)
address@hidden fortran-window-create
+  For even more help, use @kbd{C-c C-w} (@code{fortran-window-create}), a
+command which splits the current window horizontally, resulting in a window 72
+columns wide.  When you edit in this window, you can immediately see
+when a line gets too wide to be correct Fortran.
+
address@hidden Fortran Abbrev,  , Fortran Columns, Fortran
address@hidden Fortran Keyword Abbrevs
+
+  Fortran mode provides many built-in abbrevs for common keywords and
+declarations.  These are the same sort of abbrevs that you can define
+yourself.  To use them, you must turn on Abbrev mode.  @pxref{Abbrevs}.
+
+  The built-in abbrevs are unusual in one way: they all start with a
+semicolon.  You cannot normally use semicolon in an abbrev, but Fortran
+mode makes this possible by changing the syntax of semicolon to ``word
+constituent''.
+
+  For example, one built-in Fortran abbrev is @samp{;c} for
address@hidden  If you insert @samp{;c} and then insert a punctuation
+character such as a space or a newline, the @samp{;c} changes
+automatically to @samp{continue}, provided Abbrev mode is address@hidden
+
+  Type @samp{;?} or @samp{;C-h} to display a list of all built-in
+Fortran abbrevs and what they stand for.
+
address@hidden Asm Mode,  , Fortran, Programs
address@hidden Asm Mode
+
address@hidden Asm mode
+Asm mode is a major mode for editing files of assembler code.  It
+defines these commands:
+
address@hidden @kbd
address@hidden @key{TAB}
address@hidden
address@hidden @key{LFD}
+Insert a newline and then indent using @code{tab-to-tab-stop}.
address@hidden :
+Insert a colon and then remove the indentation from before the label
+preceding colon.  Then do @code{tab-to-tab-stop}.
address@hidden ;
+Insert or align a comment.
address@hidden table
+
+  The variable @code{asm-comment-char} specifies which character
+starts comments in assembler syntax.
+
address@hidden Running, Abbrevs, Programs, Top
address@hidden Compiling and Testing Programs
+
+  The previous chapter discusses the Emacs commands that are useful for
+making changes in programs.  This chapter deals with commands that assist
+in the larger process of developing and maintaining programs.
+
address@hidden
+* Compilation::        Compiling programs in languages other than Lisp
+                        (C, Pascal, etc.)
+* Modes: Lisp Modes.   Various modes for editing Lisp programs, with
+                       different facilities for running the Lisp programs.
+* Libraries: Lisp Libraries.      Creating Lisp programs to run in Emacs.
+* Eval: Lisp Eval.     Executing a single Lisp expression in Emacs.
+* Debug: Lisp Debug.   Debugging Lisp programs running in Emacs.
+* Interaction: Lisp Interaction.  Executing Lisp in an Emacs buffer.
+* External Lisp::      Communicating through Emacs with a separate Lisp.
address@hidden menu
+
address@hidden Compilation, Lisp Modes, Running, Running
address@hidden Running ``make'', or Compilers Generally
address@hidden inferior process
address@hidden make
address@hidden compilation errors
address@hidden error log
+
+  Emacs can run compilers for non-interactive languages like C and
+Fortran as inferior processes, feeding the error log into an Emacs buffer.
+It can also parse the error messages and visit the files in which errors
+are found, moving point to the line where the error occurred.
+
address@hidden @kbd
address@hidden M-x compile
+Run a compiler asynchronously under Emacs, with error messages to
address@hidden buffer.
address@hidden M-x grep
+Run @code{grep} asynchronously under Emacs, with matching lines
+listed in the buffer named @samp{*compilation*}.
address@hidden M-x kill-compilation
+Kill the process made by the @code{M-x compile} command.
address@hidden M-x kill-grep
+Kill the running compilation or @code{grep} subprocess.
address@hidden C-x `
+Visit the next compiler error message or @code{grep} match.
address@hidden table
+
address@hidden compile
+  To run @code{make} or another compiler, type @kbd{M-x compile}.  This
+command reads a shell command line using the minibuffer, then executes
+the specified command line in an inferior shell with output going to the
+buffer named @samp{*compilation*}.  By default, the current buffer's
+default directory is used as the working directory for the execution of
+the command; therefore, the makefile comes from this directory.
+
address@hidden compile-command
+  When the shell command line is read, the minibuffer appears containing a
+default command line (the command you used the last time you typed
address@hidden compile}).  If you type just @key{RET}, the same command line is 
used
+again.  The first @kbd{M-x compile} provides @code{make -k} as the default.
+The default is taken from the variable @code{compile-command}; if the
+appropriate compilation command for a file is something other than
address@hidden -k}, it can be useful to have the file specify a local value for
address@hidden (@pxref{File Variables}).
+
address@hidden compiling files
+  When you start a compilation, the buffer @samp{*compilation*} is
+displayed in another window but not selected.  Its mode line displays
+the word @samp{run} or @samp{exit} in the parentheses to tell you whether
+compilation is finished.  You do not have to keep this buffer visible;
+compilation continues in any case.
+
address@hidden kill-compilation
+  To kill the compilation process, type @kbd{M-x kill-compilation}.  The mode
+line of the @samp{*compilation*} buffer changes to say @samp{signal}
+instead of @samp{run}.  Starting a new compilation also kills any
+running compilation, as only one can occur at any time.  Starting a new
+compilation prompts for confirmation before actually killing a
+compilation that is address@hidden
+
address@hidden C-x `
address@hidden next-error
+  To parse the compiler error messages, type @kbd{C-x `}
+(@code{next-error}).  The character following @kbd{C-x} is the grave
+accent, not the single quote.  The command displays the buffer
address@hidden in one window and the buffer in which the next
+error occurred in another window.  Point in that buffer is moved to the
+line where the error was found.  The corresponding error message is
+scrolled to the top of the window in which @samp{*compilation*} is
+displayed.
+
+  The first time you use @kbd{C-x `} after the start of a compilation, it
+parses all the error messages, visits all the files that have error
+messages, and creates markers pointing at the lines the error messages
+refer to.  It then moves to the first error message location.  Subsequent
+uses of @kbd{C-x `} advance down the data set up by the first use.  When
+the preparsed error messages are exhausted, the next @kbd{C-x `} checks for
+any more error messages that have come in; this is useful if you start
+editing compiler errors while compilation is still going on.  If no
+additional error messages have come in, @kbd{C-x `} reports an error.
+
+  @kbd{C-u C-x `} discards the preparsed error message data and parses the
address@hidden buffer again, then displays the first error.
+This way, you can process the same set of errors again.
+
+  Instead of running a compiler, you can run @code{grep} and see the
+lines on which matches were found.  To do this, type @kbd{M-x grep} with
+an argument line that contains the same arguments you would give to
address@hidden: a @code{grep}-style regexp (usually in single quotes to
+quote the shell's special characters) followed by filenames, which may
+use wildcard characters.  The output from @code{grep} goes in the
address@hidden buffer.  You can use @kbd{C-x `} to find the lines that
+match as if they were compilation errors.
+
+  Note: a shell is used to run the compile command, but the shell is not
+run in interactive mode.  In particular, this means that the shell starts
+up with no prompt.  If you find your usual shell prompt making an
+unsightly appearance in the @samp{*compilation*} buffer, it means you
+have made a mistake in your shell's initialization file (@file{.cshrc}
+or @file{.shrc} or @dots{}) by setting the prompt unconditionally.  The
+shell initialization file should set the prompt only if there already is
+a prompt.  Here's how to do it in @code{csh}:
+
address@hidden
+if ($?prompt) set prompt = ...
address@hidden example
+
address@hidden Lisp Modes, Lisp Libraries, Compilation, Running
address@hidden Major Modes for Lisp
+
+  Emacs has four different major modes for Lisp.  They are the same in
+terms of editing commands, but differ in the commands for executing Lisp
+expressions.
+
address@hidden @asis
address@hidden Emacs-Lisp mode
+The mode for editing source files of programs to run in Emacs Lisp.
+This mode defines @kbd{C-M-x} to evaluate the current defun.
address@hidden Libraries}.
address@hidden Lisp Interaction mode
+The mode for an interactive session with Emacs Lisp.  It defines
address@hidden to evaluate the sexp before point and insert its value in the
+buffer.  @xref{Lisp Interaction}.
address@hidden Lisp mode
+The mode for editing source files of programs that run in other dialects
+of Lisp than Emacs Lisp.  This mode defines @kbd{C-M-x} to send the
+current defun to an inferior Lisp process.  @xref{External Lisp}.
address@hidden Inferior Lisp mode
+The mode for an interactive session with an inferior Lisp process.
+This mode combines the special features of Lisp mode and Shell mode
+(@pxref{Shell Mode}).
address@hidden Scheme mode
+Like Lisp mode but for Scheme programs.
address@hidden Inferior Scheme mode
+The mode for an interactive session with an inferior Scheme process.
address@hidden table
+
address@hidden Lisp Libraries, Lisp Eval, Lisp Modes, Running
address@hidden Libraries of Lisp Code for Emacs
address@hidden libraries
address@hidden loading Lisp code
+
+  Lisp code for Emacs editing commands is stored in files whose names
+conventionally end in @file{.el}.  This ending tells Emacs to edit them in
+Emacs-Lisp mode (@pxref{Lisp Modes}).
+
address@hidden
+* Loading::            Loading libraries of Lisp code into Emacs for use.
+* Compiling Libraries:: Compiling a library makes it load and run faster.
+* Mocklisp::           Converting Mocklisp to Lisp so XEmacs can run it.
address@hidden menu
+
address@hidden Loading, Compiling Libraries, Lisp Libraries, Lisp Libraries
address@hidden Loading Libraries
+
address@hidden @kbd
address@hidden M-x load-file @var{file}
+Load the file @var{file} of Lisp code.
address@hidden M-x load-library @var{library}
+Load the library named @var{library}.
address@hidden M-x locate-library @var{library} &optional @var{nosuffix}
+Show the full path name of Emacs library @var{library}.
address@hidden table
+
address@hidden load-file
+  To execute a file of Emacs Lisp, use @kbd{M-x load-file}.  This
+command reads the file name you provide in the minibuffer, then executes
+the contents of that file as Lisp code.  It is not necessary to visit
+the file first; in fact, this command reads the file as found on
+disk, not the text in an Emacs buffer.
+
address@hidden load
address@hidden load-library
+  Once a file of Lisp code is installed in the Emacs Lisp library
+directories, users can load it using @kbd{M-x load-library}.  Programs can
+load it by calling @code{load-library}, or with @code{load}, a more primitive
+function that is similar but accepts some additional arguments.
+
+  @kbd{M-x load-library} differs from @kbd{M-x load-file} in that it
+searches a sequence of directories and tries three file names in each
+directory.  The three names are: first, the specified name with @file{.elc}
+appended; second, the name with @file{.el} appended; third, the specified
+name alone.  A @file{.elc} file would be the result of compiling the Lisp
+file into byte code;  if possible, it is loaded in preference to the Lisp
+file itself because the compiled file loads and runs faster.
+
address@hidden loading libraries
+  Because the argument to @code{load-library} is usually not in itself
+a valid file name, file name completion is not available.  In fact, when
+using this command, you usually do not know exactly what file name
+will be used.
+
address@hidden load-path
+  The sequence of directories searched by @kbd{M-x load-library} is
+specified by the variable @code{load-path}, a list of strings that are
+directory names.  The elements of this list may not begin with "@samp{~}",
+so you must call @code{expand-file-name} on them before adding them to
+the list.  The default value of the list contains the directory where
+the Lisp code for Emacs itself is stored.  If you have libraries of your
+own, put them in a single directory and add that directory to
address@hidden  @code{nil} in this list stands for the current
+default directory, but it is probably not a good idea to put @code{nil}
+in the list.  If you start wishing that @code{nil} were in the list, you
+should probably use @kbd{M-x load-file} for this case.
+
+The variable is initialized by the @b{EMACSLOADPATH} environment
+variable. If no value is specified, the variable takes the default value
+specified in the file @file{paths.h} when Emacs was built. If a path
+isn't specified in @file{paths.h}, a default value is obtained from the
+file system, near the directory in which the Emacs executable resides.
+
address@hidden locate-library
+ Like @kbd{M-x load-library}, @kbd{M-x locate-library} searches the 
+directories in @code{load-path} to find the file that @kbd{M-x load-library}
+would load.  If the optional second argument @var{nosuffix} is
address@hidden, the suffixes @file{.elc} or @file{.el} are not added to
+the specified name @var{library} (like calling @code{load} instead of
address@hidden).
+
address@hidden autoload
+   You often do not have to give any command to load a library, because the
+commands defined in the library are set up to @dfn{autoload} that library.
+Running any of those commands causes @code{load} to be called to load the
+library; this replaces the autoload definitions with the real ones from the
+library.
+
+  If autoloading a file does not finish, either because of an error or
+because of a @kbd{C-g} quit, all function definitions made by the file
+are undone automatically.  So are any calls to @code{provide}.  As a
+consequence, the entire file is loaded a second time if you use one of
+the autoloadable commands again.  This prevents problems when the
+command is no longer autoloading but is working incorrectly because the file
+was only partially loaded.  Function definitions are undone only for
+autoloading; explicit calls to @code{load} do not undo anything if
+loading is not completed.
+
address@hidden after-load-alist
+The variable @code{after-load-alist} takes an alist of expressions to be
+evaluated when particular files are loaded.  Each element has the form
address@hidden(@var{filename} forms...)}.  When @code{load} is run and the 
filename
+argument is @var{filename}, the forms in the corresponding element are
+executed at the end of loading.
+
address@hidden must match exactly.  Normally @var{filename} is the
+name of a library, with no directory specified, since that is how load
+is normally called.  An error in @code{forms} does not undo the load, but
+it does prevent execution of the rest of the @code{forms}.
+
address@hidden Compiling Libraries, Mocklisp, Loading, Lisp Libraries
address@hidden Compiling Libraries
+
address@hidden byte code
+  Emacs Lisp code can be compiled into byte-code which loads faster,
+takes up less space when loaded, and executes faster.
+
address@hidden @kbd
address@hidden M-x batch-byte-compile
+Run byte-compile-file on the files remaining on the command line.
address@hidden M-x byte-compile-buffer &optional @var{buffer}
+Byte-compile and evaluate contents of @var{buffer} (default is current 
+buffer).
address@hidden M-x byte-compile-file
+Compile a file of Lisp code named @var{filename} into a file of byte code.
address@hidden M-x byte-compile-and-load-file @var{filename}
+Compile a file of Lisp code named @var{filename} into a file of byte
+code and load it.
address@hidden M-x byte-recompile-directory @var{directory}
+Recompile every @file{.el} file in @var{directory} that needs recompilation.
address@hidden M-x disassemble
+Print disassembled code for @var{object} on (optional) @var{stream}.
address@hidden make-obsolete
address@hidden M-x make-obsolete @var{function new} 
+Make the byte-compiler warn that @var{function} is obsolete and @var{new} 
+should be used instead.
address@hidden table
+
address@hidden byte-compile-file
address@hidden byte-compile-and-load-file
address@hidden byte-compile-buffer
+ @kbd{byte-compile-file} creates a byte-code compiled file from an
+Emacs-Lisp source file.  The default argument for this function is the
+file visited in the current buffer.  The function reads the specified
+file, compiles it into byte code, and writes an output file whose name
+is made by appending @file{c} to the input file name.  Thus, the file
address@hidden would be compiled into @file{rmail.elc}. To compile a
+file of Lisp code named @var{filename} into a file of byte code and
+then load it, use @code{byte-compile-and-load-file}. To compile and
+evaluate Lisp code in a given buffer, use @code{byte-compile-buffer}.
+
address@hidden byte-recompile-directory
+  To recompile all changed Lisp files in a directory, use @kbd{M-x
+byte-recompile-directory}.  Specify just the directory name as an argument.
+Each @file{.el} file that has been byte-compiled before is byte-compiled
+again if it has changed since the previous compilation.  A numeric argument
+to this command tells it to offer to compile each @file{.el} file that has
+not been compiled yet.  You must answer @kbd{y} or @kbd{n} to each
+offer.
+
address@hidden batch-byte-compile
+  You can use the function @code{batch-byte-compile} to invoke Emacs
+non-interactively from the shell to do byte compilation.  When you use
+this function, the files to be compiled are specified with command-line
+arguments.  Use a shell command of the form:
+
address@hidden
+emacs -batch -f batch-byte-compile @var{files}...
address@hidden example
+
+  Directory names may also be given as arguments; in that case,
address@hidden is invoked on each such directory.
address@hidden uses all remaining command-line arguments as
+file or directory names, then kills the Emacs process.
+
address@hidden disassemble
+  @kbd{M-x disassemble} explains the result of byte compilation.  Its
+argument is a function name.  It displays the byte-compiled code in a help
+window in symbolic form, one instruction per line.  If the instruction
+refers to a variable or constant, that is shown, too.
+
address@hidden Mocklisp,,Compiling Libraries,Lisp Libraries
address@hidden Converting Mocklisp to Lisp
+
address@hidden mocklisp
address@hidden convert-mocklisp-buffer
+  XEmacs can run Mocklisp files by converting them to Emacs Lisp first.
+To convert a Mocklisp file, visit it and then type @kbd{M-x
+convert-mocklisp-buffer}.  Then save the resulting buffer of Lisp file in a
+file whose name ends in @file{.el} and use the new file as a Lisp library.
+
+  You cannot currently byte-compile converted Mocklisp code.
+The reason is that converted Mocklisp code uses some special Lisp features
+to deal with Mocklisp's incompatible ideas of how arguments are evaluated
+and which values signify ``true'' or ``false''.
+
address@hidden Lisp Eval, Lisp Debug, Lisp Libraries, Running
address@hidden Evaluating Emacs-Lisp Expressions
address@hidden Emacs-Lisp mode
+
address@hidden emacs-lisp-mode
+  Lisp programs intended to be run in Emacs should be edited in
+Emacs-Lisp mode; this will happen automatically for file names ending in
address@hidden  By contrast, Lisp mode itself should be used for editing
+Lisp programs intended for other Lisp systems.  Emacs-Lisp mode can be
+selected with the command @kbd{M-x emacs-lisp-mode}.
+
+  For testing of Lisp programs to run in Emacs, it is useful to be able
+to evaluate part of the program as it is found in the Emacs buffer.  For
+example, if you change the text of a Lisp function definition and then
+evaluate the definition, Emacs installs the change for future calls to the
+function.  Evaluation of Lisp expressions is also useful in any kind of
+editing task for invoking non-interactive functions (functions that are
+not commands).
+
address@hidden @kbd
address@hidden M-:
+Read a Lisp expression in the minibuffer, evaluate it, and print the
+value in the minibuffer (@code{eval-expression}).
address@hidden C-x C-e
+Evaluate the Lisp expression before point, and print the value in the
+minibuffer (@code{eval-last-sexp}).
address@hidden C-M-x
+Evaluate the defun containing point or after point, and print the value in
+the minibuffer (@code{eval-defun}).
address@hidden M-x eval-region
+Evaluate all the Lisp expressions in the region.
address@hidden M-x eval-current-buffer
+Evaluate all the Lisp expressions in the buffer.
address@hidden table
+
address@hidden M-:
address@hidden eval-expression
+  @kbd{M-:} (@code{eval-expression}) is the most basic command
+for evaluating a Lisp expression interactively.  It reads the expression
+using the minibuffer, so you can execute any expression on a buffer
+regardless of what the buffer contains.  When evaluation is complete,
+the current buffer is once again the buffer that was current when
address@hidden:} was typed.
+
address@hidden C-M-x
address@hidden eval-defun
+  In Emacs-Lisp mode, the key @kbd{C-M-x} is bound to the function
address@hidden, which parses the defun containing point or following point
+as a Lisp expression and evaluates it.  The value is printed in the echo
+area.  This command is convenient for installing in the Lisp environment
+changes that you have just made in the text of a function definition.
+
address@hidden C-x C-e
address@hidden eval-last-sexp
+  The command @kbd{C-x C-e} (@code{eval-last-sexp}) performs a similar job
+but is available in all major modes, not just Emacs-Lisp mode.  It finds
+the sexp before point, reads it as a Lisp expression, evaluates it, and
+prints the value in the echo area.  It is sometimes useful to type in an
+expression and then, with point still after it, type @kbd{C-x C-e}.
+
+  If @kbd{C-M-x} or @kbd{C-x C-e} are given a numeric argument, they
+print the value by inserting it into the current buffer at point, rather
+than in the echo area.  The argument value does not matter.
+
address@hidden eval-region
address@hidden eval-current-buffer
+  The most general command for evaluating Lisp expressions from a buffer
+is @code{eval-region}.  @kbd{M-x eval-region} parses the text of the
+region as one or more Lisp expressions, evaluating them one by one.
address@hidden eval-current-buffer} is similar, but it evaluates the entire
+buffer.  This is a reasonable way to install the contents of a file of
+Lisp code that you are just ready to test.  After finding and fixing a
+bug, use @kbd{C-M-x} on each function that you change, to keep the Lisp
+world in step with the source file.
+
address@hidden Lisp Debug, Lisp Interaction, Lisp Eval, Running
address@hidden The Emacs-Lisp Debugger
address@hidden debugger
+
address@hidden debug-on-error
address@hidden debug-on-quit
+  XEmacs contains a debugger for Lisp programs executing inside it.
+This debugger is normally not used; many commands frequently get Lisp
+errors when invoked in inappropriate contexts (such as @kbd{C-f} at the
+end of the buffer) and it would be unpleasant to enter a special
+debugging mode in this case.  When you want to make Lisp errors invoke
+the debugger, you must set the variable @code{debug-on-error} to
address@hidden  Quitting with @kbd{C-g} is not considered an error, and
address@hidden has no effect on the handling of @kbd{C-g}.
+However, if you set @code{debug-on-quit} to be address@hidden, @kbd{C-g} will
+invoke the debugger.  This can be useful for debugging an infinite loop;
+type @kbd{C-g} once the loop has had time to reach its steady state.
address@hidden has no effect on address@hidden
+
address@hidden debug-on-entry
address@hidden cancel-debug-on-entry
address@hidden debug
+  You can make Emacs enter the debugger when a specified function
+is called or at a particular place in Lisp code.  Use @kbd{M-x
+debug-on-entry} with argument @var{fun-name} to have Emacs enter the
+debugger as soon as @var{fun-name} is called. Use
address@hidden cancel-debug-on-entry} to make the function stop entering the
+debugger when called.  (Redefining the function also does this.)  To enter
+the debugger from some other place in Lisp code, you must insert the
+expression @code{(debug)} there and install the changed code with
address@hidden  @xref{Lisp address@hidden
+
+  When the debugger is entered, it displays the previously selected buffer
+in one window and a buffer named @samp{*Backtrace*} in another window.  The
+backtrace buffer contains one line for each level of Lisp function
+execution currently going on.  At the beginning of the buffer is a message
+describing the reason that the debugger was invoked, for example, an
+error message if it was invoked due to an error.
+
+  The backtrace buffer is read-only and is in Backtrace mode, a special
+major mode in which letters are defined as debugger commands.  The
+usual Emacs editing commands are available; you can switch windows to
+examine the buffer that was being edited at the time of the error, and
+you can switch buffers, visit files, and perform any other editing
+operations.  However, the debugger is a recursive editing level
+(@pxref{Recursive Edit}); it is a good idea to return to the backtrace
+buffer and explicitly exit the debugger when you don't want to use it any
+more.  Exiting the debugger kills the backtrace buffer.
+
address@hidden current stack frame
+  The contents of the backtrace buffer show you the functions that are
+executing and the arguments that were given to them.  It also allows you
+to specify a stack frame by moving point to the line describing that
+frame.  The frame whose line point is on is considered the @dfn{current
+frame}.  Some of the debugger commands operate on the current frame.
+Debugger commands are mainly used for stepping through code one
+expression at a time.  Here is a list of them:
+
address@hidden @kbd
address@hidden c
+Exit the debugger and continue execution.  In most cases, execution of
+the program continues as if the debugger had never been entered (aside
+from the effect of any variables or data structures you may have changed
+while inside the debugger).  This includes entry to the debugger due to
+function entry or exit, explicit invocation, and quitting or certain
+errors.  Most errors cannot be continued; trying to continue an error usually
+causes the same error to occur again.
address@hidden d
+Continue execution, but enter the debugger the next time a Lisp
+function is called.  This allows you to step through the
+subexpressions of an expression, and see what the subexpressions do and
+what values they compute.
+
+When you enter the debugger this way, Emacs flags the stack frame for the
+function call from which you entered.  The same function is then called
+when you exit the frame.  To cancel this flag, use @kbd{u}.
address@hidden b
+Set up to enter the debugger when the current frame is exited.  Frames
+that invoke the debugger on exit are flagged with stars.
address@hidden u
+Don't enter the debugger when the current frame is exited.  This
+cancels a @kbd{b} command on a frame.
address@hidden e
+Read a Lisp expression in the minibuffer, evaluate it, and print the
+value in the echo area.  This is equivalent to the command @kbd{M-:}.
address@hidden q
+Terminate the program being debugged; return to top-level Emacs
+command execution.
+
+If the debugger was entered due to a @kbd{C-g} but you really want
+to quit, not to debug, use the @kbd{q} command.
address@hidden r
+Return a value from the debugger.  The value is computed by reading an
+expression with the minibuffer and evaluating it.
+
+The value returned by the debugger makes a difference when the debugger
+was invoked due to exit from a Lisp call frame (as requested with @kbd{b});
+then the value specified in the @kbd{r} command is used as the value of
+that frame.
+
+The debugger's return value also matters with many errors.  For example,
address@hidden errors will use the debugger's return value
+instead of the invalid argument; @code{no-catch} errors will use the
+debugger value as a throw tag instead of the tag that was not found.
+If an error was signaled by calling the Lisp function @code{signal},
+the debugger's return value is returned as the value of @code{signal}.
address@hidden table
+
address@hidden Lisp Interaction, External Lisp, Lisp Debug, Running
address@hidden Lisp Interaction Buffers
+
+  The buffer @samp{*scratch*}, which is selected when Emacs starts up, is
+provided for evaluating Lisp expressions interactively inside Emacs.  Both
+the expressions you evaluate and their output goes in the buffer.
+
+  The @samp{*scratch*} buffer's major mode is Lisp Interaction mode, which
+is the same as Emacs-Lisp mode except for one command, @key{LFD}.  In
+Emacs-Lisp mode, @key{LFD} is an indentation command.  In Lisp
+Interaction mode, @key{LFD} is bound to @code{eval-print-last-sexp}.  This
+function reads the Lisp expression before point, evaluates it, and inserts
+the value in printed representation before point.
+
+ The way to use the @samp{*scratch*} buffer is to insert Lisp
+expressions at the end, ending each one with @key{LFD} so that it will
+be evaluated.  The result is a complete typescript of the expressions
+you have evaluated and their values.
+
address@hidden lisp-interaction-mode
+  The rationale for this feature is that Emacs must have a buffer when it
+starts up, but that buffer is not useful for editing files since a new
+buffer is made for every file that you visit.  The Lisp interpreter
+typescript is the most useful thing I can think of for the initial buffer
+to do.  @kbd{M-x lisp-interaction-mode} will put any buffer in Lisp
+Interaction mode.
+
address@hidden External Lisp,, Lisp Interaction, Running
address@hidden Running an External Lisp
+
+  Emacs has facilities for running programs in other Lisp systems.  You can
+run a Lisp process as an inferior of Emacs, and pass expressions to it to
+be evaluated.  You can also pass changed function definitions directly from
+the Emacs buffers in which you edit the Lisp programs to the inferior Lisp
+process.
+
address@hidden run-lisp
+  To run an inferior Lisp process, type @kbd{M-x run-lisp}.  This runs the
+program named @code{lisp}, the same program you would run by typing
address@hidden as a shell command, with both input and output going through an
+Emacs buffer named @samp{*lisp*}.  In other words, any ``terminal output''
+from Lisp will go into the buffer, advancing point, and any ``terminal
+input'' for Lisp comes from text in the buffer.  To give input to Lisp, go
+to the end of the buffer and type the input, terminated by @key{RET}.  The
address@hidden buffer is in Inferior Lisp mode, which has all the
+special characteristics of Lisp mode and Shell mode (@pxref{Shell Mode}).
+
address@hidden lisp-mode
+  Use Lisp mode to run the source files of programs in external Lisps.
+You can select this mode with @kbd{M-x lisp-mode}.  It is used automatically
+for files whose names end in @file{.l} or @file{.lisp}, as most Lisp
+systems usually expect.
+
address@hidden C-M-x
address@hidden lisp-send-defun
+  When you edit a function in a Lisp program you are running, the easiest
+way to send the changed definition to the inferior Lisp process is the key
address@hidden  In Lisp mode, this key runs the function @code{lisp-send-defun},
+which finds the defun around or following point and sends it as input to
+the Lisp process.  (Emacs can send input to any inferior process regardless
+of what buffer is current.)
+
+  Contrast the meanings of @kbd{C-M-x} in Lisp mode (for editing programs
+to be run in another Lisp system) and Emacs-Lisp mode (for editing Lisp
+programs to be run in Emacs): in both modes it has the effect of installing
+the function definition that point is in, but the way of doing so is
+different according to where the relevant Lisp environment is found.
address@hidden Modes}.
address@hidden This is part of the XEmacs manual.
address@hidden Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software 
Foundation, Inc.
address@hidden See file xemacs.texi for copying conditions.
address@hidden Packages, Basic, Startup Paths, Top
address@hidden  node-name,  next,  previous,  up
+
address@hidden Packages
address@hidden packages
+
+The XEmacs 21 distribution comes only with a very basic set of
+built-in modes and packages.  Most of the packages that were part of
+the distribution of earlier versions of XEmacs are now available
+separately.  The installer as well as the user can choose which
+packages to install; the actual installation process is easy.
+This gives an installer the ability to tailor an XEmacs installation for
+local needs with safe removal of unnecessary code.
+
address@hidden
+* Package Terminology:: Understanding different kinds of packages.
+* Installing Packages:: How to install packages.
+* Building Packages::   Building packages from CVS sources.
+* Local.rules File::    This is an important file that you must create.
+* Creating Packages::   The basics.
+* Available Packages::  A brief directory of packaged LISP.
address@hidden menu
+
address@hidden Package Terminology, Installing Packages, , Packages
address@hidden  node-name,  next,  previous,  up
address@hidden Package Terminology:
address@hidden Package Flavors
+
+There are two main flavors of packages.
+
address@hidden @bullet
address@hidden
+Regular Packages
address@hidden regular packages
+A regular package is one in which multiple files are involved and one
+may not in general safely remove any of them.
+
address@hidden
+Single-File Packages
address@hidden single-file packages
+A single-file package is an aggregate collection of thematically
+related but otherwise independent lisp files.  These files are bundled 
+together for download convenience and individual files may be deleted at
+will without any loss of functionality.  However, we would recommend
+that you follow this rule of thumb: "When in doubt, don't delete".
address@hidden itemize
+
address@hidden Package Distributions
address@hidden package distributions
+XEmacs Lisp packages are distributed in two ways, depending on the
+intended use.  Binary Packages are for installers and end-users that can
+be installed directly into an XEmacs package directory.  Source Packages
+are for developers and include all files necessary for rebuilding
+bytecompiled lisp and creating tarballs for distribution.
+
address@hidden Binary Packages
address@hidden binary packages
+Binary packages may be installed directly into an XEmacs package
+hierarchy.
+
address@hidden Source Packages
address@hidden source packages
+Source packages contain all of the Package author's (where appropriate
+in regular packages) source code plus all of the files necessary to
+build distribution tarballs (Unix Tar format files, gzipped for space
+savings).
+
+Currently, source packages are only available via CVS.  See
address@hidden://cvs.xemacs.org/} for details.
address@hidden Installing Packages, Building Packages, Package Terminology, 
Packages
address@hidden  node-name,  next,  previous,  up
address@hidden installing packages
address@hidden install
address@hidden Installing Packages:
address@hidden Getting Started
+
+When you first download XEmacs 21, you will usually first grab the
address@hidden distribution},
address@hidden core distribution
+a file called
address@hidden (Replace the @t{21.x.x} by the current version
+number.)  The core distribution contains the sources of XEmacs and a
+minimal set of Emacs Lisp files, which are in the subdirectory named
address@hidden  This subdirectory used to contain all Emacs Lisp files
+distributed with XEmacs.  Now, to conserve disk space, most
+non-essential packages were made optional.
+
address@hidden Choosing the Packages You Need
address@hidden choosing packages
+The @ref{Available Packages} can currently be found in the same ftp directory
+where you grabbed the core distribution from, and are located in the
+subdirectory @file{packages}.  Package file names follow
+the naming convention @file{<package-name>-<version>-pkg.tar.gz}.
+
+If you have @ref{(EFS)}, packages can be installed over the network.
+Alternatively, if you have copies of the packages locally, you can
+install packages from a local disk or CDROM.
+
+The file @file{etc/PACKAGES} in the core distribution contains a list of
+the @ref{Available Packages} at the time of the XEmacs release.
+
+You can also get a list of available packages, and whether or not they
+are installed, using the visual package browser and installer.  You can
+access it via the menus:
+
address@hidden
+        Tools -> Packages -> List and Install
address@hidden example
+
+Or, you can get to it via the keyboard:
+
address@hidden
+M-x pui-list-packages
address@hidden example
+
+Hint to system administrators of multi-user systems: it might be a good
+idea to install all packages and not interfere with the wishes of your
+users.
+
+If you can't find which package provides the feature you require, try
+using the @code{package-get-package-provider} function. Eg., if you know 
+that you need @code{thingatpt}, type:
+
address@hidden
+M-x package-get-package-provider RET thingatpt
address@hidden example
+
+which will return something like (fsf-compat "1.08"). You can the use
+one of the methods above for installing the package you want.
+
address@hidden XEmacs and Installing Packages
+
+There are three main ways to install packages:
+
address@hidden
+* Sumo::              All at once, using the 'Sumo Tarball'.
+* Manually::          Using individual package tarballs.
+* Automatically::     Using the package tools from XEmacs.
+* Which Packages::    Which packages to install.
+* Removing Packages:: Removing packages.
address@hidden menu
+
+But regardless of the method you use to install packages, they can only
+be used by XEmacs after a restart.
+
address@hidden Sumo, Manually, ,Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden sumo package install
address@hidden Installing the Sumo Packages:
+Those with little time, cheap connections and plenty of disk space can
+install all the packages at once using the sumo tarballs.
+Download the file: @file{xemacs-sumo.tar.gz}
+
+For an XEmacs compiled with Mule you also need: @file{xemacs-mule-sumo.tar.gz}
+
+N.B. They are called 'Sumo Tarballs' for good reason. They are
+currently about 19MB and 4.5MB (gzipped) respectively.
+
+Install them by:
+
address@hidden $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xvf - RET}
+
+Or, if you have GNU tar:
+
address@hidden $prefix/lib/xemacs ; tar zxvf /path/to/<tarballname> RET}
+
+As the Sumo tarballs are not regenerated as often as the individual
+packages, it is recommended that you use the automatic package tools
+afterwards to pick up any recent updates.
+
address@hidden Manually, Automatically, Sumo, Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden manual package install
address@hidden Manual Package Installation:
+Fetch the packages from the FTP site, CD-ROM whatever. The filenames
+have the form @file{name-<version>-pkg.tar.gz} and are gzipped tar files. For
+a fresh install it is sufficient to untar the file at the top of the
+package hierarchy. 
+
+Note: If you are upgrading packages already installed, it's best to
+remove the old package first @ref{Removing Packages}.
+
+For example if we are installing the @file{xemacs-base}
+package (version 1.48):
+
address@hidden
+   mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/xemacs-packages RET
+   gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
+
+Or if you have GNU tar, the last step can be:
+
+   tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
address@hidden example
+
+For MULE related packages, it is best to untar into the mule-packages
+hierarchy, i.e. for the @file{mule-base} package, version 1.37:
+
address@hidden
+   mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/mule-packages RET
+   gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
+
+Or if you have GNU tar, the last step can be:
+
+   tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
address@hidden example
+
address@hidden Automatically, Which Packages ,Manually, Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden automatic package install
address@hidden package tools
address@hidden Automatic Package Installation:
+XEmacs comes with some tools to make the periodic updating and
+installing easier. It will notice if new packages or versions are
+available and will fetch them from the FTP site.
+
+Unfortunately this requires that a few packages are already in place.
+You will have to install them by hand as above or use a SUMO tarball.
+This requirement will hopefully go away in the future. The packages
+you need are:
+
address@hidden
+   efs          - To fetch the files from the FTP site or mirrors.
+   xemacs-base  - Needed by efs.
+
+and optionally:
+
+   mule-base    - Needed if you want to use XEmacs with MULE.
address@hidden example
+
+After installing these by hand, fire up XEmacs and follow these
+steps.
+
address@hidden 1
address@hidden
+Choose a download site.
+via menu: Tools -> Packages -> Add Download Site 
+via keyb: @code{M-x customize-variable RET package-get-remote RET}
+(put in the details of remote host and directory)
+
+If the package tarballs _AND_ the package-index file are in a
+local directory, you can: @code{M-x pui-add-install-directory RET}
+
address@hidden
+Obtain a list of packages and display the list in a buffer named
address@hidden
+menu: Tools -> Packages -> List & Install
+keyb: @code{M-x pui-list-packages RET}
+
+XEmacs will now connect to the remote site and download the
+latest package-index file.  If you see an error about the
+package-index entries not being PGP signed, you can safely
+ignore this because PGP has not been integrated into the XEmacs
+package tools yet.
+
+The visual package browser will then display a list of all packages.
+Help information will be displayed at the very bottom of the buffer; you
+may have to scroll down to see it.  You can also press @kbd{?} to get
+the same help.  From this buffer, you can tell the package status by the
+character in the first column:
+
address@hidden @kbd
address@hidden -
+The package has not been installed.
address@hidden *
+The package has been installed, but a newer version is available.  The
+current version is out-of-date.
address@hidden +
+The package has been marked for installation/update.
address@hidden table
+
+If there is no character in the first column, the package has been
+installed and is up to date.
+
+From here, you can select or unselect packages for installation using
+the @key{RET} key, the @kbd{Mouse-2} button or selecting "Select" from
+the (Popup) Menu.
+Once you've finished selecting the packages, you can
+press the @kbd{x} key (or use the menu) to actually install the
+packages. Note that you will have to restart XEmacs for XEmacs to
+recognize any new packages.
+
+Key summary:
+
address@hidden @kbd
address@hidden ?
+Display simple help.
address@hidden @key{RET}
address@hidden @key{Mouse-2}
+Toggle between selecting and unselecting a package for installation.
address@hidden x
+Install selected packages.
address@hidden @key{SPC}
+View, in the minibuffer, additional information about the package, such
+as the package date (not the build date) and the package author.  Moving 
+the mouse over a package name will also do the same thing.
address@hidden v
+Toggle between verbose and non-verbose package display.
address@hidden g
+Refresh the package display.
address@hidden q
+Kill the package buffer.
address@hidden table
+
+Moving the mouse over a package will also cause additional information
+about the package to be displayed in the minibuffer.
+
+
address@hidden
+Choose the packages you wish to install.
+mouse: Click button 2 on the package name.
+ keyb: @kbd{RET} on the package name
+
address@hidden
+Make sure you have everything you need.
+menu: Packages -> Add Required
+keyb: @kbd{r}
+
+XEmacs will now search for packages that are required by the
+ones that you have chosen to install and offer to select
+those packages also.
+
+For novices and gurus alike, this step can save your bacon.
+It's easy to forget to install a critical package.
+
address@hidden
+Download and install the packages.
+menu: Packages -> Install/Remove Selected
+keyb: @kbd{x}
address@hidden enumerate
+
+You can also install packages using a semi-manual interface:
+
address@hidden
+M-x package-get-all <return>
address@hidden example
+
+Enter the name of the package (e.g., @code{prog-modes}), and XEmacs
+will search for the latest version and install it and any packages that
+it depends upon.
+
address@hidden Which Packages, Removing Packages, Automatically, Installing 
Packages
address@hidden  node-name,  next,  previous,  up
address@hidden which packages
address@hidden choosing packages
address@hidden Which Packages to Install:
+This is difficult to say. When in doubt install a package. If you
+administrate a big site it might be a good idea to just install
+everything. A good minimal set of packages for XEmacs-latin1 would be
+
+xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
+edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
+text-modes, time
+
+If you are using the XEmacs package tools, don't forget to do:
+
+       Packages -> Add Required
+
+To make sure you have everything that the packages you have chosen to
+install need.
+
+See also @ref{Available Packages} for further descriptions of the individual
+packages.
+
address@hidden Removing Packages, ,Which Packages, Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden removing packages
address@hidden deleting packages
address@hidden Removing Packages:
+Because the exact files and their locations contained in a package may
+change it is recommended to remove a package first before installing a
+new version. In order to facilitate removal each package contains an
address@hidden/MANIFEST.pkgname} file which list all the files belonging
+to the package. 
+
+No need to panic, you don't have to go through the
address@hidden/MANIFEST.pkgname} and manually delete the files.  Instead, use
address@hidden package-get-delete-package RET}.
+
+Note that the interactive package tools included with XEmacs already do
+this for you.
+
address@hidden Building Packages, Local.rules File, Installing Packages, 
Packages
address@hidden  node-name,  next,  previous,  up
address@hidden building packages
address@hidden package building
address@hidden Building Packages:
+Currently, source packages are only available via anonymous CVS.  See
address@hidden://cvs.xemacs.org/} for details of checking out the
address@hidden module.
+
address@hidden Prerequisites for Building Source Packages
+
address@hidden @code
address@hidden GNU cp
address@hidden GNU install 
+(or a BSD compatible install program).
address@hidden GNU make 
+(3.75 or later preferred).
address@hidden makeinfo 
+(1.68 from texinfo-3.11 or later required).
address@hidden GNU tar
+(or equivalent).
address@hidden GNU gzip
+(or equivalent).
address@hidden A properly configured @file{Local.rules} file.
address@hidden File}.
address@hidden table
+And of course, XEmacs 21.0 or higher.
+
address@hidden What You Can Do With Source Packages
+
+The packages CVS sources are most useful for creating XEmacs package
+tarballs for installation into your own XEmacs installations or for
+distributing to others.
+
+Supported operations from @file{make} are:
+
address@hidden @code
address@hidden all
+Bytecompile all files, build and bytecompile byproduct files like
address@hidden and @file{custom-load.el}.  Create info version
+of TeXinfo documentation if present.
+
address@hidden bindist
+Does a @code{make all} as well as create a binary package tarball in the
+staging directory.
+
address@hidden install
+Bytecompile all files, build and bytecompile byproduct files like
address@hidden and @file{custom-load.el}.  Create info version
+of TeXinfo documentation if present.  And install everything into the
+staging directory.
+
address@hidden srckit
+Usually aliased to @code{srckit-std}.  This does a @code{make
+distclean} and creates a package source tarball in the staging
+directory.  This is generally only of use for package maintainers.
+
address@hidden binkit
+May be aliased to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
address@hidden, or
address@hidden @code{sourceonly} indicates there is
+nothing to install in a data directory or info directory.
address@hidden indicates that source and info files are to be
+installed.  @code{sourcedata} indicates that source and etc (data) files
+are to be installed.  @code{sourcedatainfo} indicates source, etc
+(data), and info files are to be installed.  A few packages have needs
+beyond the basic templates so this is not yet complete.
+
address@hidden dist
+Runs the rules @code{srckit} followed by @code{binkit}.  This is
+primarily of use by XEmacs maintainers producing files for distribution.
+
address@hidden clean
+Remove all built files except @file{auto-autoloads.el} and 
@file{custom-load.el}.
+
address@hidden distclean
+Remove all created files.
address@hidden table
+
address@hidden Local.rules File, Creating Packages, Building Packages, Packages
address@hidden  node-name,  next,  previous,  up
address@hidden local.rules
address@hidden The Local.rules File:
+This file is used when building and installing packages from source.  In
+the top level of the CVS module, @file{xemacs-packages}, contains the
+file, @file{Local.rules.template}.  Simply copy that to
address@hidden and edit it to suit your needs.
+
+These are the variables in 'Local.rules' that you will need to
+address. 
+
address@hidden @var
address@hidden symlink = 
+Set this to 't' if you want to do a "run in place".
+Setting this doesn't work well with 'make bindist'
+
address@hidden XEMACS_PACKAGES =
+This is where you set the normal packages that you
+want to install. eg:
address@hidden
+      XEMACS_PACKAGES = xemacs-packages/xemacs-base xemacs-packages/bbdb
address@hidden example
+
address@hidden XEMACS_STAGING = address@hidden@}/../Packages
+Set this to where you want normal packages to be
+installed to.
+
address@hidden PACKAGE_INDEX = package-index
+If you want the package-index file to have a different
+name, change this.
+
address@hidden BUILD_WITHOUT_MULE =
+Building from CVS defaults to building the Mule
+packages.  Set this to 't' if you don't want/have Mule
+
address@hidden MULE_PACKAGES =
+Same as for 'XEMACS_PACKAGES' except you list the Mule
+packages you want to install here. eg:
address@hidden
+      MULE_PACKAGES = mule-packages/mule-base mule-packages/skk
address@hidden example
+
address@hidden MULE_STAGING = address@hidden@}/../Mule-Packages
+Set this to where you want Mule packages installed
+to.  Note:  'make bindist' does not use this variable.
+
address@hidden XEMACS = xemacs
+If your XEmacs isn't in your path, change this.
+
address@hidden XEMACS_NATIVE_NT =
+Set this to 't' if you are building on WinNT.
+
address@hidden INSTALL = install -c
+The path to your BSD compatible install program.
+
address@hidden TAR = tar
+The path to your tar program
+
address@hidden BZIP2 =
+If you want bzip2 tarballs, set this.
+
address@hidden MAKEINFO = makeinfo
+The path to your makeinfo program
address@hidden table
+
+
address@hidden Creating Packages, Available Packages, Local.rules File, Packages
address@hidden  node-name,  next,  previous,  up
address@hidden creating packages
address@hidden Creating Packages:
+Creating a package from an existing Lisp library is not very difficult.
+
+In addition to the Lisp libraries themselves, you need a
address@hidden file and a simple @file{Makefile}.  The rest is
+done by @file{XEmacs.rules}, part of the packaging system
+infrastructure.
+
address@hidden contains a single Lisp form like this:
+
address@hidden
+(name                               ; your package's name
+  (standards-version 1.1
+   version VERSION
+   author-version AUTHOR_VERSION
+   date DATE
+   build-date BUILD_DATE
+   maintainer MAINTAINER
+   distribution xemacs              ; change to "mule" if MULE is needed
+   priority high
+   category CATEGORY
+   dump nil
+   description "description"        ; a one-line description string
+   filename FILENAME
+   md5sum MD5SUM
+   size SIZE
+   provides (feature1 feature2)     ; one for every `provides' form
+   requires (REQUIRES)
+   type regular
+))
address@hidden example
+
+You must fill in the four commented lines.  The value of @code{name} is
+the name of your package as an unquoted symbol.  Normally it is the name
+of the main Lisp file or principal feature provided.  The allowed values
+for distribution are @code{xemacs} and @code{mule}.  Write them as
+unquoted symbols.  The @code{description} is a quoted Lisp string; use
+the usual conventions.  The value for @code{provides} is a list of
+feature symbols (written unquoted).  All of the features provided by
+libraries in your package should be elements of this list.  Implementing
+an automatic method for generating the @file{provides} line is
+desirable, but as yet undone.
+
+The variables in upper-case are references to variables set in the
address@hidden or automatically generated.  Do not change them; they
+are automatically filled in by the build process.
+
+The remaining lines refer to implementation constants
+(@code{standards-version}), or features that are unimplemented or have
+been removed (@code{priority} and @code{dump}).  The @code{type} line is
+not normally relevant to external maintainers; the alternate value is
address@hidden, which refers to packages consed up out of a number
+of single-file libraries that are more or less thematically related.  An
+example is @code{prog-modes}.  Single-file packages are basically for
+administrative convenience, and new packages should generally be created
+as regular packages.
+
+The @file{Makefile} is quite stylized.  The idea is similar to an
address@hidden or an @code{automake} file: the complexity is hidden in
+generic rules files, in this case the @file{XEmacs.rules} include file
+in the top directory of the packages hierarchy.  Although a number of
+facilities are available for complex libraries, most simple packages'
address@hidden contain a copyright notice, a few variable definitions,
+an include for @file{XEmacs.rules}, and a couple of standard targets.
+
+The first few @code{make} variables defined are @code{VERSION},
address@hidden, @code{MAINTAINER}, @code{PACKAGE},
address@hidden, @code{REQUIRES}, and @code{CATEGORY}.  All but one were
+described in the description of @file{package-info.in}.  The last is an
+administrative grouping.  Current categories include @code{standard},
+and @code{mule}.
+
+Next, define the variable @code{ELCS}.  This contains the list of the
+byte-compiled Lisp files used by the package.  These files and their
address@hidden versions will be included in the binary package.  If there
+are other files (such as extra Lisp sources or an upstream
address@hidden) that are normally placed in the installed Lisp
+directory, but not byte-compiled, they can be listed as the value of
address@hidden
+
+The include is simply
address@hidden
+include ../../XEmacs.rules
address@hidden example
+
+The standard targets follow.  These are
+
address@hidden
+all:: $(ELCS) auto-autoloads.elc
+
+srckit: srckit-alias
+
+binkit: binkit-alias
address@hidden example
+
+Other targets (such as Texinfo sources) may need to be added as
+dependencies for the @code{all} target.  Dependencies for @code{srckit}
+and @code{binkit} (that is, values for @var{srckit-alias} and
address@hidden) are defined in @file{XEmacs.rules}.  The most useful
+of these values are given in the following table.
+
address@hidden @var
address@hidden srckit-alias
+Usually set to @code{srckit-std}.
+
address@hidden binkit-alias
+May be set to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
address@hidden, or
address@hidden  @code{sourceonly} indicates there is
+nothing to install in a data directory or info directory.
address@hidden indicates that source and info files are to be
+installed.  @code{sourcedata} indicates that source and etc (data) files
+are to be installed.  @code{sourcedatainfo} indicates source, etc
+(data), and info files are to be installed.
address@hidden table
+
+Data files include things like pixmaps for a package-specific toolbar,
+and are normally installed in @file{etc/@var{PACKAGE_NAME}}.  A few
+packages have needs beyond the basic templates.  See @file{XEmacs.rules}
+or a future revision of this manual for details.
+
address@hidden Available Packages,  , Creating Packages, Packages
address@hidden  node-name,  next,  previous,  up
address@hidden available packages
address@hidden packages
address@hidden Available Packages:
+This section lists the Lisp packages that are currently available from
+xemacs.org and it's mirrors.  If a particular package that you are
+looking for isn't here, please send a message to the
address@hidden@@xemacs.org, XEmacs Beta list}.
+
+This data is up to date as of September 22, 2002.
+
address@hidden Normal Packages
+A very broad selection of elisp packages.
+
address@hidden @file
address@hidden Sun
+Support for Sparcworks.
+
address@hidden ada
+Ada language support.
+
address@hidden apel
+A Portable Emacs Library.  Used by XEmacs MIME support.
+
address@hidden auctex
+Basic TeX/LaTeX support.
+
address@hidden bbdb
+The Big Brother Data Base: a rolodex-like database program.
+
address@hidden build
+Build XEmacs using custom widgets.
+
address@hidden c-support
+Basic single-file add-ons for editing C code.
+
address@hidden calc
+Emacs calculator.
+
address@hidden calendar
+Calendar and diary support.
+
address@hidden cc-mode
+C, C++ and Java language support.
+
address@hidden clearcase
+Support for the Clearcase version control system.
+
address@hidden cookie
+"Fortune cookie"-style messages. Includes Spook (suspicious phrases) 
+and Yow (Zippy quotes).
+
address@hidden crisp
+Crisp/Brief emulation.
+
address@hidden debug
+GUD, gdb, dbx debugging support.
+
address@hidden dictionary
+Interface to RFC2229 dictionary servers.
+
address@hidden dired
+The DIRectory EDitor is for manipulating, and running commands on
+files in a directory.
+
address@hidden docbookide
+DocBook editing support.
+
address@hidden ecrypto
+Crypto functionality in Emacs Lisp.
+
address@hidden edebug
+A Lisp debugger.
+
address@hidden ediff
+Interface over patch.
+
address@hidden edit-utils
+Single file lisp packages for various XEmacs goodies.  Load this and
+weed out the junk you don't want.
+
address@hidden edt
+DEC EDIT/EDT emulation.
+
address@hidden efs
+Treat files on remote systems the same as local files.
+
address@hidden eieio
+Enhanced Implementation of Emacs Interpreted Objects.
+
address@hidden elib
+Portable Emacs Lisp utilities library.
+
address@hidden emerge
+Another interface over patch.
+
address@hidden eshell
+Command shell implemented entirely in Emacs Lisp.
+
address@hidden ess
+ESS: Emacs Speaks Statistics.
+
address@hidden eterm
+Terminal emulator.
+
address@hidden eudc
+Emacs Unified Directory Client (LDAP, PH).
+
address@hidden footnote
+Footnoting in mail message editing modes.
+
address@hidden forms
+Forms editing support (obsolete, use the built-in Widget instead).
+
address@hidden fortran-modes
+Fortran language support.
+
address@hidden frame-icon
+Provide a WM icon based on major mode.
+
address@hidden fsf-compat
+GNU Emacs compatibility files.
+
address@hidden games
+Tetris, Sokoban, and Snake.
+
address@hidden gnats
+XEmacs bug reports.
+
address@hidden gnus
+The Gnus Newsreader and Mailreader.
+
address@hidden haskell-mode
+Haskell language support.
+
address@hidden hm--html-menus
+HTML editing.
+
address@hidden ibuffer
+Advanced replacement for buffer-menu.
+
address@hidden idlwave
+Editing and Shell mode for the Interactive Data Language.
+
address@hidden igrep
+Enhanced front-end for Grep.
+
address@hidden ilisp
+Front-end for interacting with Inferior Lisp (external lisps).
+
address@hidden ispell
+Spell-checking with ispell.
+
address@hidden jde
+Java language and development support.
+
address@hidden liece
+IRC (Internet Relay Chat) client for Emacs.
+
address@hidden mail-lib
+Fundamental lisp files for providing email support.
+
address@hidden mailcrypt
+Support for messaging encryption with PGP.
+
address@hidden mew
+Messaging in an Emacs World; a MIME-based email program.
+
address@hidden mh-e
+Front end support for MH.
+
address@hidden mine
+Elisp implementation of the game 'Minehunt'.
+
address@hidden misc-games
+Other amusements and diversions.
+
address@hidden mmm-mode
+Support for Multiple Major Modes within a single buffer.
+
address@hidden net-utils
+Miscellaneous Networking Utilities.  This is a single-file package and 
+files may be deleted at will.
+
address@hidden os-utils
+Miscellaneous single-file O/S utilities, for printing, archiving,
+compression, remote shells, etc.
+
address@hidden ocaml
+Objective Caml language support.
+
address@hidden pc
+PC style interface emulation.
+
address@hidden pcl-cvs
+CVS frontend.
+
address@hidden pcomplete
+Provides programmatic completion.
+
address@hidden perl-modes
+Perl language support.
+
address@hidden prog-modes
+Miscellaneous single-file lisp files for various programming languages.
+
address@hidden ps-print
+Print buffers to PostScript printers.
+
address@hidden psgml
+Validated HTML/SGML editing.
+
address@hidden psgml-dtds
+A collection of DTDs for psgml.  Note that this package is deprecated
+and will be removed in the future, most likely Q2/2003.  Instead of using
+this, you should install needed DTDs yourself.
+
address@hidden python-modes
+Python language support.
+
address@hidden reftex
+Emacs support for LaTeX cross-references, citations.
+
address@hidden rmail
+An obsolete Emacs mailer.  If you do not already use it don't start.
+
address@hidden ruby-modes
+Ruby language support.
+
address@hidden sasl
+Simple Authentication and Security Layer (SASL) library.
+
address@hidden scheme
+Front-end support for Inferior Scheme.
+
address@hidden semantic
+Semantic bovinator.
+
address@hidden sgml
+SGML/Linuxdoc-SGML editing.
+
address@hidden sh-script
+Support for editing shell scripts.
+
address@hidden sieve
+Manage Sieve email filtering scripts.
+
address@hidden slider
+User interface tool.
+
address@hidden sml-mode
+Standard ML editing support.
+
address@hidden sounds-au
+XEmacs Sun sound files.
+
address@hidden sounds-wav
+XEmacs Microsoft sound files.
+
address@hidden speedbar
+Provides a separate frame with convenient references.
+
address@hidden strokes
+Mouse enhancement utility.
+
address@hidden supercite
+An Emacs citation tool.  Useful with all Emacs Mailers and Newsreaders.
+
address@hidden texinfo
+XEmacs TeXinfo support.
+
address@hidden text-modes
+Various single file lisp packages for editing text files.
+
address@hidden textools
+Single-file TeX support.
+
address@hidden time
+Display time & date on the modeline.
+
address@hidden tm
+Emacs MIME support. Not needed for Gnus >= 5.8.0
+
address@hidden tooltalk
+Support for building with Tooltalk.
+
address@hidden tpu
+DEC EDIT/TPU support.
+
address@hidden tramp
+Remote shell-based file editing.  This is similar to EFS or Ange-FTP,
+but works with rsh/ssh and rcp/scp.
+
address@hidden vc
+Version Control for Free systems.
+
address@hidden vc-cc
+Version Control for ClearCase.  This package will shortly be
+replaced with clearcase.el
+
address@hidden vhdl
+Support for VHDL.
+
address@hidden view-process
+A Unix process browsing tool.
+
address@hidden viper
+VI emulation support.
+
address@hidden vm
+An Emacs mailer.
+
address@hidden w3
+A Web browser.
+
address@hidden xemacs-base
+Fundamental XEmacs support.  Install this unless you wish a totally
+naked XEmacs.
+
address@hidden xemacs-devel
+XEmacs Lisp developer support.  This package contains utilities for
+supporting Lisp development.  It is a single-file package so it may be 
+tailored.
+
address@hidden xslide
+XSL editing support.
+
address@hidden xslt-process
+A minor mode for (X)Emacs which allows running an XSLT processor on a
+buffer.
+
address@hidden zenirc
+ZENIRC IRC Client.
address@hidden table
+
address@hidden Mule Support (mule)
+
+MULti-lingual Enhancement.  Support for world scripts such as
+Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.
+To use these packages your XEmacs must be compiled with Mule
+support.
+
address@hidden @file
address@hidden edict
+Lisp Interface to EDICT, Kanji Dictionary.
+
address@hidden egg-its
+Wnn (4.2 and 6) support.  SJ3 support.  Must be installed prior to
+XEmacs build.
+
address@hidden latin-unity
+Unify character sets in a buffer. When characters belong to disjoint
+character sets, this attempts to translate the characters so
+that they belong to one character set. If the buffer coding system is
+not sufficient, this suggests different coding systems.
+
address@hidden leim
+Quail.  Used for everything other than English and Japanese.
+
address@hidden locale
+Used for localized menubars (French and Japanese) and localized splash
+screens (Japanese).
+
address@hidden lookup
+Dictionary support. (This isn't an English dictionary program)
+
address@hidden mule-base
+Basic Mule support.  Must be installed prior to building with Mule.
+
address@hidden mule-ucs
+Extended coding systems (including Unicode) for XEmacs.
+
address@hidden skk
+Another Japanese Language Input Method.  Can be used without a
+separate process running as a dictionary server.
address@hidden table
+
+
address@hidden Abbrevs, Picture, Running, Top
address@hidden Abbrevs
address@hidden abbrevs
address@hidden expansion (of abbrevs)
+
+  An @dfn{abbrev} is a word which @dfn{expands} into some
+different text.  Abbrevs are defined by the user to expand in specific
+ways.  For example, you might define @samp{foo} as an abbrev expanding to
address@hidden outer otter}.  With this abbrev defined, you would be able to
+get @samp{find outer otter } into the buffer by typing @kbd{f o o @key{SPC}}.
+
address@hidden abbrev-mode
address@hidden abbrev-mode
+  Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
+Disabling Abbrev mode does not cause abbrev definitions to be discarded,
+but they do not expand until Abbrev mode is enabled again.  The command
address@hidden abbrev-mode} toggles Abbrev mode; with a numeric argument, it
+turns Abbrev mode on if the argument is positive, off otherwise.
address@hidden Modes}.  @code{abbrev-mode} is also a variable; Abbrev mode is
+on when the variable is address@hidden  The variable @code{abbrev-mode}
+automatically becomes local to the current buffer when it is set.
+
+  Abbrev definitions can be @dfn{mode-specific}---active only in one major
+mode.  Abbrevs can also have @dfn{global} definitions that are active in
+all major modes.  The same abbrev can have a global definition and various
+mode-specific definitions for different major modes.  A mode-specific
+definition for the current major mode overrides a global definition.
+
+ You can define Abbrevs interactively during an editing session.  You
+can also save lists of abbrev definitions in files and reload them in later
+sessions.  Some users keep extensive lists of abbrevs that they load in
+every session.
+
+  A second kind of abbreviation facility is called the @dfn{dynamic
+expansion}.  Dynamic abbrev expansion happens only when you give an
+explicit command and the result of the expansion depends only on the
+current contents of the buffer.  @xref{Dynamic Abbrevs}.
+
address@hidden
+* Defining Abbrevs::  Defining an abbrev, so it will expand when typed.
+* Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
+* Editing Abbrevs::   Viewing or editing the entire list of defined abbrevs.
+* Saving Abbrevs::    Saving the entire list of abbrevs for another session.
+* Dynamic Abbrevs::   Abbreviations for words already in the buffer.
address@hidden menu
+
address@hidden Defining Abbrevs, Expanding Abbrevs, Abbrevs, Abbrevs
address@hidden Defining Abbrevs
+
address@hidden @kbd
address@hidden C-x a g
+Define an abbrev to expand into some text before point
+(@code{add-global-abbrev}).
address@hidden C-x a l
+Similar, but define an abbrev available only in the current major mode
+(@code{add-mode-abbrev}).
address@hidden C-x a i g
+Define a word in the buffer as an abbrev (@code{inverse-add-global-abbrev}).
address@hidden C-x a i l
+Define a word in the buffer as a mode-specific abbrev
+(@code{inverse-add-mode-abbrev}).
address@hidden M-x kill-all-abbrevs
+After this command, no abbrev definitions remain in effect.
address@hidden table
+
address@hidden C-x a g
address@hidden add-global-abbrev
+  The usual way to define an abbrev is to enter the text you want the
+abbrev to expand to, position point after it, and type @kbd{C-x a g}
+(@code{add-global-abbrev}).  This reads the abbrev itself using the
+minibuffer, and then defines it as an abbrev for one or more words
+before point.  Use a numeric argument to say how many words before point
+should be taken as the expansion.  For example, to define the abbrev
address@hidden as in the example above, insert the text @samp{find outer
+otter}, then type @address@hidden 3 C-x a g f o o @key{RET}}.
+
+  An argument of zero to @kbd{C-x a g} means to use the contents of the
+region as the expansion of the abbrev being defined.
+
address@hidden C-x a l
address@hidden add-mode-abbrev
+  The command @kbd{C-x a l} (@code{add-mode-abbrev}) is similar, but
+defines a mode-specific abbrev.  Mode-specific abbrevs are active only in a
+particular major mode.  @kbd{C-x a l} defines an abbrev for the major mode
+in effect at the time @kbd{C-x a l} is typed.  The arguments work the
+same way they do for @kbd{C-x a g}.
+
address@hidden C-x a i g
address@hidden inverse-add-global-abbrev
address@hidden C-x a i l
address@hidden inverse-add-mode-abbrev
+  If the text of an abbrev you want is already in the buffer instead of
+the expansion, use command @kbd{C-x a i g} (@code{inverse-add-global-abbrev})
+instead of @kbd{C-x a g}, or use @kbd{C-x a i l}
+(@code{inverse-add-mode-abbrev}) instead of @kbd{C-x a l}.  These commands
+are called ``inverse'' because they invert the meaning of the argument
+found in the buffer and the argument read using the address@hidden
+
+  To change the definition of an abbrev, just add the new definition.  You
+will be asked to confirm if the abbrev has a prior definition.  To remove
+an abbrev definition, give a negative argument to @kbd{C-x a g} or @kbd{C-x
+a l}.  You must choose the command to specify whether to kill a global
+definition or a mode-specific definition for the current mode, since those
+two definitions are independent for one abbrev.
+
address@hidden kill-all-abbrevs
+  @kbd{M-x kill-all-abbrevs} removes all existing abbrev definitions.
+
address@hidden Expanding Abbrevs, Editing Abbrevs, Defining Abbrevs, Abbrevs
address@hidden Controlling Abbrev Expansion
+
+  An abbrev expands whenever it is in a buffer just before point and you
+type a self-inserting punctuation character (@key{SPC}, comma,
+etc.@:).  Most often an abbrev is used by inserting the abbrev followed
+by punctuation.
+
address@hidden abbrev-all-caps
+  Abbrev expansion preserves case; thus, @samp{foo} expands into @samp{find
+outer otter}, @samp{Foo} into @samp{Find outer otter}, and @samp{FOO} into
address@hidden OUTER OTTER} or @samp{Find Outer Otter} according to the
+variable @code{abbrev-all-caps} (a address@hidden value chooses the first
+of the two expansions)address@hidden
+
+   Two commands are available to control abbrev expansion:
+
address@hidden @kbd
address@hidden M-'
+Separate a prefix from a following abbrev to be expanded
+(@code{abbrev-prefix-mark}).
address@hidden C-x a e
address@hidden expand-abbrev
+Expand the abbrev before point (@code{expand-abbrev}).
+This is effective even when Abbrev mode is not enabled.
address@hidden M-x unexpand-abbrev
+Undo last abbrev expansion.
address@hidden M-x expand-region-abbrevs
+Expand some or all abbrevs found in the region.
address@hidden table
+
address@hidden M-'
address@hidden abbrev-prefix-mark
+  You may wish to expand an abbrev with a prefix attached.  For example,
+if @samp{cnst} expands into @samp{construction}, you may want to use it
+to enter @samp{reconstruction}.  It does not work to type @kbd{recnst},
+because that is not necessarily a defined abbrev.  Instead, you can use
+the command @kbd{M-'} (@code{abbrev-prefix-mark}) between the prefix
address@hidden and the abbrev @samp{cnst}.  First, insert @samp{re}.  Then
+type @kbd{M-'}; this inserts a minus sign in the buffer to indicate that
+it has done its work.  Then insert the abbrev @samp{cnst}.  The buffer
+now contains @samp{re-cnst}.  Now insert a punctuation character to
+expand the abbrev @samp{cnst} into @samp{construction}.  The minus sign
+is deleted at this point by @kbd{M-'}.  The resulting text is the
+desired @address@hidden
+
+  If you actually want the text of the abbrev in the buffer, rather than
+its expansion, insert the following punctuation with @kbd{C-q}.  Thus,
address@hidden C-q -} leaves @samp{foo-} in the buffer.
+
address@hidden unexpand-abbrev
+  If you expand an abbrev by mistake, you can undo the expansion (replace
+the expansion by the original abbrev text) with @kbd{M-x unexpand-abbrev}.
+You can also use @kbd{C-_} (@code{undo}) to undo the expansion; but that
+will first undo the insertion of the punctuation character.
+
address@hidden expand-region-abbrevs
+  @kbd{M-x expand-region-abbrevs} searches through the region for defined
+abbrevs, and  offers to replace each one it finds with its expansion.
+This command is useful if you have typed text using abbrevs but forgot
+to turn on Abbrev mode first.  It may also be useful together with a
+special set of abbrev definitions for making several global replacements at
+once.  The command is effective even if Abbrev mode is not enabled.
+
address@hidden Editing Abbrevs, Saving Abbrevs, Expanding Abbrevs, Abbrevs
address@hidden Examining and Editing Abbrevs
+
address@hidden @kbd
address@hidden M-x list-abbrevs
+Print a list of all abbrev definitions.
address@hidden M-x edit-abbrevs
+Edit a list of abbrevs; you can add, alter, or remove definitions.
address@hidden table
+
address@hidden list-abbrevs
+  The output from @kbd{M-x list-abbrevs} looks like this:
+
address@hidden
+(lisp-mode-abbrev-table)
+"dk"           0    "define-key"
+(global-abbrev-table)
+"dfn"          0    "definition"
address@hidden example
+
address@hidden
+(Some blank lines of no semantic significance, and some other abbrev
+tables, have been omitted.)
+
+  A line containing a name in parentheses is the header for abbrevs in a
+particular abbrev table; @code{global-abbrev-table} contains all the global
+abbrevs, and the other abbrev tables that are named after major modes
+contain the mode-specific abbrevs.
+
+  Within each abbrev table, each non-blank line defines one abbrev.  The
+word at the beginning is the abbrev.  The number that appears is the number
+of times the abbrev has been expanded.  Emacs keeps track of this to help
+you see which abbrevs you actually use, in case you want to eliminate
+those that you don't use often.  The string at the end of the line is the
+expansion.
+
address@hidden edit-abbrevs
address@hidden C-c C-c (Edit Abbrevs)
address@hidden edit-abbrevs-redefine
+  @kbd{M-x edit-abbrevs} allows you to add, change or kill abbrev
+definitions by editing a list of them in an Emacs buffer.  The list has
+the format described above.  The buffer of abbrevs is called
address@hidden, and is in Edit-Abbrevs mode.  This mode redefines the
+key @kbd{C-c C-c} to install the abbrev definitions as specified in the
+buffer.  The  @code{edit-abbrevs-redefine} command does this.
+Any abbrevs not described in the buffer are eliminated when this is
+done.
+
+  @code{edit-abbrevs} is actually the same as @code{list-abbrevs}, except
+that it selects the buffer @samp{*Abbrevs*} whereas @code{list-abbrevs}
+merely displays it in another window.
+
address@hidden Saving Abbrevs, Dynamic Abbrevs, Editing Abbrevs, Abbrevs
address@hidden Saving Abbrevs
+
+  These commands allow you to keep abbrev definitions between editing
+sessions.
+
address@hidden @kbd
address@hidden M-x write-abbrev-file
+Write a file describing all defined abbrevs.
address@hidden M-x read-abbrev-file
+Read such an abbrev file and define abbrevs as specified there.
address@hidden M-x quietly-read-abbrev-file
+Similar, but do not display a message about what is going on.
address@hidden M-x define-abbrevs
+Define abbrevs from buffer.
address@hidden M-x insert-abbrevs
+Insert all abbrevs and their expansions into the buffer.
address@hidden table
+
address@hidden write-abbrev-file
+  Use @kbd{M-x write-abbrev-file} to save abbrev definitions for use in
+a later session.  The command reads a file name using the minibuffer and
+writes a description of all current abbrev definitions into the
+specified file.  The text stored in the file looks like the output of
address@hidden list-abbrevs}.
+
+
address@hidden read-abbrev-file
address@hidden quietly-read-abbrev-file
address@hidden abbrev-file-name
+  @kbd{M-x read-abbrev-file} prompts for a file name using the
+minibuffer and reads the specified file, defining abbrevs according to
+its contents.  @kbd{M-x quietly-read-abbrev-file} is the same but does
+not display a message in the echo area; it is actually useful primarily
+in the init file.  @xref{Init File}. If you give an empty argument to
+either of these functions, the file name Emacs uses is the value of the
+variable @code{abbrev-file-name}, which is by default
address@hidden"~/.abbrev_defs"}.
+
address@hidden save-abbrevs
+  Emacs offers to save abbrevs automatically if you have changed any of
+them, whenever it offers to save all files (for @kbd{C-x s} or @kbd{C-x
+C-c}).  Set the variable @code{save-abbrevs} to @code{nil} to inhibit
+this feature.
+
address@hidden insert-abbrevs
address@hidden define-abbrevs
+  The commands @kbd{M-x insert-abbrevs} and @kbd{M-x define-abbrevs} are
+similar to the previous commands but work on text in an Emacs buffer.
address@hidden insert-abbrevs} inserts text into the current buffer before 
point,
+describing all current abbrev definitions; @kbd{M-x define-abbrevs} parses
+the entire current buffer and defines abbrevs address@hidden
+
address@hidden Dynamic Abbrevs,, Saving Abbrevs, Abbrevs
address@hidden Dynamic Abbrev Expansion
+
+  The abbrev facility described above operates automatically as you insert
+text, but all abbrevs must be defined explicitly.  By contrast,
address@hidden abbrevs} allow the meanings of abbrevs to be determined
+automatically from the contents of the buffer, but dynamic abbrev expansion
+happens only when you request it explicitly.
+
address@hidden M-/
address@hidden dabbrev-expand
address@hidden @kbd
address@hidden M-/
+Expand the word in the buffer before point as a @dfn{dynamic abbrev},
+by searching in the buffer for words starting with that abbreviation
+(@code{dabbrev-expand}).
address@hidden table
+
+  For example, if the buffer contains @samp{does this follow } and you type
address@hidden o M-/}, the effect is to insert @samp{follow} because that is the
+last word in the buffer that starts with @samp{fo}.  A numeric argument to
address@hidden/} says to take the second, third, etc.@: distinct expansion found
+looking backward from point.  Repeating @kbd{M-/} searches for an
+alternative expansion by looking farther back.  After the entire buffer
+before point has been considered, the buffer after point is searched.
+
+  Dynamic abbrev expansion is completely independent of Abbrev mode; the
+expansion of a word with @kbd{M-/} is completely independent of whether it
+has a definition as an ordinary abbrev.
+
address@hidden Picture, Sending Mail, Abbrevs, Top
address@hidden Editing Pictures
address@hidden pictures
address@hidden edit-picture
+
+  If you want to create a picture made out of text characters (for example,
+a picture of the division of a register into fields, as a comment in a
+program), use the command @code{edit-picture} to enter Picture mode.
+
+  In Picture mode, editing is based on the @dfn{quarter-plane} model of
+text.  In this model, the text characters lie studded on an area that
+stretches infinitely far to the right and downward.  The concept of the end
+of a line does not exist in this model; the most you can say is where the
+last non-blank character on the line is found.
+
+  Of course, Emacs really always considers text as a sequence of
+characters, and lines really do have ends.  But in Picture mode most
+frequently-used keys are rebound to commands that simulate the
+quarter-plane model of text.  They do this by inserting spaces or by
+converting tabs to spaces.
+
+  Most of the basic editing commands of Emacs are redefined by Picture mode
+to do essentially the same thing but in a quarter-plane way.  In addition,
+Picture mode defines various keys starting with the @kbd{C-c} prefix to
+run special picture editing commands.
+
+  One of these keys, @kbd{C-c C-c}, is pretty important.  Often a picture
+is part of a larger file that is usually edited in some other major mode.
address@hidden edit-picture} records the name of the previous major mode. 
+You can then use the @kbd{C-c C-c} command (@code{picture-mode-exit}) to
+restore that mode.  @kbd{C-c C-c} also deletes spaces from the ends of
+lines, unless you give it a numeric argument.
+
+  The commands used in Picture mode all work in other modes (provided the
address@hidden library is loaded), but are only  bound to keys in
+Picture mode.  Note that the descriptions below talk of moving ``one
+column'' and so on, but all the picture mode commands handle numeric
+arguments as their normal equivalents do.
+
address@hidden picture-mode-hook
+  Turning on Picture mode calls the value of the variable
address@hidden as a function, with no arguments, if that value
+exists and is address@hidden
+
address@hidden
+* Basic Picture::         Basic concepts and simple commands of Picture Mode.
+* Insert in Picture::     Controlling direction of cursor motion
+                           after "self-inserting" characters.
+* Tabs in Picture::       Various features for tab stops and indentation.
+* Rectangles in Picture:: Clearing and superimposing rectangles.
address@hidden menu
+
address@hidden Basic Picture, Insert in Picture, Picture, Picture
address@hidden Basic Editing in Picture Mode
+
address@hidden picture-forward-column
address@hidden picture-backward-column
address@hidden picture-move-down
address@hidden picture-move-up
+  Most keys do the same thing in Picture mode that they usually do, but do
+it in a quarter-plane style.  For example, @kbd{C-f} is rebound to run
address@hidden, which moves point one column to
+the right, by inserting a space if necessary, so that the actual end of the
+line makes no difference.  @kbd{C-b} is rebound to run
address@hidden, which always moves point left one column,
+converting a tab to multiple spaces if necessary.  @kbd{C-n} and @kbd{C-p}
+are rebound to run @code{picture-move-down} and @code{picture-move-up},
+which can either insert spaces or convert tabs as necessary to make sure
+that point stays in exactly the same column.  @kbd{C-e} runs
address@hidden, which moves to after the last non-blank
+character on the line.  There was no need to change @kbd{C-a}, as the choice
+of screen model does not affect beginnings of address@hidden
+
address@hidden picture-newline
+  Insertion of text is adapted to the quarter-plane screen model through
+the use of Overwrite mode (@pxref{Minor Modes}).  Self-inserting characters
+replace existing text, column by column, rather than pushing existing text
+to the right.  @key{RET} runs @code{picture-newline}, which just moves to
+the beginning of the following line so that new text will replace that
+line.
+
address@hidden picture-backward-clear-column
address@hidden picture-clear-column
address@hidden picture-clear-line
+  Text is erased instead of deleted and killed.  @key{DEL}
+(@code{picture-backward-clear-column}) replaces the preceding character
+with a space rather than removing it.  @kbd{C-d}
+(@code{picture-clear-column}) does the same in a forward direction.
address@hidden (@code{picture-clear-line}) really kills the contents of lines,
+but never removes the newlines from a address@hidden
+
address@hidden picture-open-line
+  To do actual insertion, you must use special commands.  @kbd{C-o}
+(@code{picture-open-line}) creates a blank line, but does so after
+the current line; it never splits a line.  @kbd{C-M-o}, @code{split-line},
+makes sense in Picture mode, so it remains unchanged.  @key{LFD}
+(@code{picture-duplicate-line}) inserts another line
+with the same contents below the current address@hidden
+
address@hidden C-c C-d (Picture mode)
address@hidden delete-char
+ 
+  To actually delete parts of the picture, use @kbd{C-w}, or with
address@hidden C-d} (which is defined as @code{delete-char}, as @kbd{C-d} is
+in other modes), or with one of the picture rectangle commands
+(@pxref{Rectangles in Picture}).
+
address@hidden Insert in Picture, Tabs in Picture, Basic Picture, Picture
address@hidden Controlling Motion After Insert
+
address@hidden picture-movement-up
address@hidden picture-movement-down
address@hidden picture-movement-left
address@hidden picture-movement-right
address@hidden picture-movement-nw
address@hidden picture-movement-ne
address@hidden picture-movement-sw
address@hidden picture-movement-se
address@hidden C-c < (Picture mode)
address@hidden C-c > (Picture mode)
address@hidden C-c ^ (Picture mode)
address@hidden C-c . (Picture mode)
address@hidden C-c ` (Picture mode)
address@hidden C-c ' (Picture mode)
address@hidden C-c / (Picture mode)
address@hidden C-c \ (Picture mode)
+  Since ``self-inserting'' characters just overwrite and move point in
+Picture mode, there is no essential restriction on how point should be
+moved.  Normally point moves right, but you can specify any of the eight
+orthogonal or diagonal directions for motion after a ``self-inserting''
+character.  This is useful for drawing lines in the buffer.
+
address@hidden @kbd
address@hidden C-c <
+Move left after insertion (@code{picture-movement-left}).
address@hidden C-c >
+Move right after insertion (@code{picture-movement-right}).
address@hidden C-c ^
+Move up after insertion (@code{picture-movement-up}).
address@hidden C-c .
+Move down after insertion (@code{picture-movement-down}).
address@hidden C-c `
+Move up and left (``northwest'') after insertion 
@*(@code{picture-movement-nw}).
address@hidden C-c '
+Move up and right (``northeast'') after insertion @*
+(@code{picture-movement-ne}).
address@hidden C-c /
+Move down and left (``southwest'') after insertion
address@hidden(@code{picture-movement-sw}).
address@hidden C-c \
+Move down and right (``southeast'') after insertion
address@hidden(@code{picture-movement-se}).
address@hidden table
+
address@hidden C-c C-f (Picture mode)
address@hidden C-c C-b (Picture mode)
address@hidden picture-motion
address@hidden picture-motion-reverse
+  Two motion commands move based on the current Picture insertion
+direction.  The command @kbd{C-c C-f} (@code{picture-motion}) moves in the
+same direction as motion after ``insertion'' currently does, while @kbd{C-c
+C-b} (@code{picture-motion-reverse}) moves in the opposite direction.
+
address@hidden Tabs in Picture, Rectangles in Picture, Insert in Picture, 
Picture
address@hidden Picture Mode Tabs
+ 
address@hidden M-TAB
address@hidden picture-tab-search
address@hidden picture-tab-chars
+  Two kinds of tab-like action are provided in Picture mode.
+Context-based tabbing is done with @address@hidden
+(@code{picture-tab-search}).  With no argument, it moves to a point
+underneath the next ``interesting'' character that follows whitespace in
+the previous non-blank line.  ``Next'' here means ``appearing at a
+horizontal position greater than the one point starts out at''.  With an
+argument, as in @kbd{C-u address@hidden, the command moves to the next such
+interesting character in the current line.  @address@hidden does not
+change the text; it only moves point.  ``Interesting'' characters are
+defined by the variable @code{picture-tab-chars}, which contains a string
+of characters considered interesting.  Its default value is
address@hidden"!-~"address@hidden
+
address@hidden picture-tab
+  @key{TAB} itself runs @code{picture-tab}, which operates based on the
+current tab stop settings; it is the Picture mode equivalent of
address@hidden  Without arguments it just moves point, but with
+a numeric argument it clears the text that it moves over.
+
address@hidden C-c TAB (Picture mode)
address@hidden picture-set-tab-stops
+  The context-based and tab-stop-based forms of tabbing are brought
+together by the command @kbd{C-c @key{TAB}} (@code{picture-set-tab-stops}.)
+This command sets the tab stops to the positions which @address@hidden
+would consider significant in the current line.  If you use this command
+with @key{TAB}, you can get the effect of context-based tabbing.  But
address@hidden@key{TAB}} is more convenient in the cases where it is sufficient.
+
address@hidden Rectangles in Picture,, Tabs in Picture, Picture
address@hidden Picture Mode Rectangle Commands
address@hidden rectangle
+
+  Picture mode defines commands for working on rectangular pieces of the
+text in ways that fit with the quarter-plane model.  The standard rectangle
+commands may also be useful (@pxref{Rectangles}).
+
address@hidden @kbd
address@hidden C-c C-k
+Clear out the region-rectangle (@code{picture-clear-rectangle}).  With
+argument, kill it.
address@hidden C-c C-w @var{r}
+Similar but save rectangle contents in register @var{r} first
+(@code{picture-clear-rectangle-to-register}).
address@hidden C-c C-y
+Copy last killed rectangle into the buffer by overwriting, with upper
+left corner at point (@code{picture-yank-rectangle}).  With argument,
+insert instead.
address@hidden C-c C-x @var{r}
+Similar, but use the rectangle in register @address@hidden
+(@code{picture-yank-rectangle-from-register}).
address@hidden table
+
address@hidden C-c C-k (Picture mode)
address@hidden C-c C-w (Picture mode)
address@hidden picture-clear-rectangle
address@hidden picture-clear-rectangle-to-register
+  The picture rectangle commands @kbd{C-c C-k}
+(@code{picture-clear-rectangle}) and @kbd{C-c C-w}
+(@code{picture-clear-rectangle-to-register}) differ from the standard
+rectangle commands in that they normally clear the rectangle instead of
+deleting it; this is analogous with the way @kbd{C-d} is changed in Picture
address@hidden
+
+  However, deletion of rectangles can be useful in Picture mode, so these
+commands delete the rectangle if given a numeric argument.
+
address@hidden C-c C-y (Picture mode)
address@hidden C-c C-x (Picture mode)
address@hidden picture-yank-rectangle
address@hidden picture-yank-rectangle-from-register
+  The Picture mode commands for yanking rectangles differ from the standard
+ones in overwriting instead of inserting.  This is the same way that
+Picture mode insertion of other text is different from other modes.
address@hidden C-y} (@code{picture-yank-rectangle}) inserts (by overwriting) the
+rectangle that was most recently killed, while @kbd{C-c C-x}
+(@code{picture-yank-rectangle-from-register}) does for the
+rectangle found in a specified register.
+
+Since most region commands in Picture mode operate on rectangles, when you
+select a region of text with the mouse in Picture mode, it is highlighted
+as a rectangle.
+
address@hidden Sending Mail, Reading Mail, Picture, Top
address@hidden Sending Mail
address@hidden mail
address@hidden message
+
+  To send a message in Emacs, start by typing the command (@kbd{C-x m})
+to select and initialize the @samp{*mail*} buffer.  You can then edit the text
+and headers of the message in the mail buffer, and type the command
+(@kbd{C-c C-c}) to send the message.
+
address@hidden @kbd
address@hidden C-x m
+Begin composing a message to send (@code{mail}).
address@hidden C-x 4 m
+Likewise, but display the message in another window
+(@code{mail-other-window}).
address@hidden C-c C-c
+In Mail mode, send the message and switch to another buffer
+(@code{mail-send-and-exit}).
address@hidden table
+
address@hidden C-x m
address@hidden mail
address@hidden C-x 4 m
address@hidden mail-other-window
+  The command @kbd{C-x m} (@code{mail}) selects a buffer named
address@hidden and initializes it with the skeleton of an outgoing message.
address@hidden 4 m} (@code{mail-other-window}) selects the @samp{*mail*} buffer
+in a different window, leaving the previous current buffer address@hidden
+
+  Because the buffer for mail composition is an ordinary Emacs buffer, you can
+switch to other buffers while in the middle of composing mail, and switch
+back later (or never).  If you use the @kbd{C-x m} command again when you
+have been composing another message but have not sent it, a new mail
+buffer will be created; in this way, you can compose multiple messages
+at once.  You can switch back to and complete an unsent message by using
+the normal buffer selection mechanisms.  
+
address@hidden C-x m} is another way to switch back to a message in progress:
+it will search for an existing, unsent mail message buffer and select it.
+
address@hidden
+* Format: Mail Format.    Format of the mail being composed.
+* Headers: Mail Headers.  Details of allowed mail header fields.
+* Mode: Mail Mode.        Special commands for editing mail being composed.
address@hidden menu
+
address@hidden Mail Format, Mail Headers, Sending Mail, Sending Mail
address@hidden The Format of the Mail Buffer
+
+  In addition to the @dfn{text} or contents, a message has @dfn{header
+fields}, which say who sent it, when, to whom, why, and so on.  Some header
+fields, such as the date and sender, are created automatically after the
+message is sent.  Others, such as the recipient names, must be specified by
+you in order to send the message properly.
+
+  Mail mode provides a few commands to help you edit some header fields,
+and some are preinitialized in the buffer automatically at times.  You can
+insert or edit any header fields using ordinary editing commands.
+
+  The line in the buffer that says:
+
address@hidden
+--text follows this line--
address@hidden example
+
address@hidden mail-header-separator
address@hidden
+is a special delimiter that separates the headers you have specified from
+the text.  Whatever follows this line is the text of the message; the
+headers precede it.  The delimiter line itself does not appear in the
+message actually sent.  The text used for the delimiter line is controlled
+by the variable @code{mail-header-separator}.
+
+Here is an example of what the headers and text in the @samp{*mail*} buffer
+might look like.
+
address@hidden
+To: rms@@mc
+CC: mly@@mc, rg@@oz
+Subject: The XEmacs User's Manual
+--Text follows this line--
+Please ignore this message.
address@hidden example
+
address@hidden Mail Headers, Mail Mode, Mail Format, Sending Mail
address@hidden Mail Header Fields
address@hidden headers (of mail message)
+
+  There are several header fields you can use in the @samp{*mail*} buffer.
+Each header field starts with a field name at the beginning of a line,
+terminated by a colon.  It does not matter whether you use upper or lower
+case in the field name.  After the colon and optional whitespace comes the
+contents of the field.
+
address@hidden @samp
address@hidden To
+This field contains the mailing addresses of the message.
+
address@hidden Subject
+The contents of the @samp{Subject} field should be a piece of text that
+says what the message is about.  Subject fields are useful because most
+mail-reading programs can provide a summary of messages, listing the
+subject of each message but not its text.
+
address@hidden CC
+This field contains additional mailing addresses to send the message
+to, but whose readers should not regard the message as addressed to
+them.
+
address@hidden BCC
+This field contains additional mailing addresses to send the message
+to, but which should not appear in the header of the message actually
+sent.
+
address@hidden FCC
+This field contains the name of one file (in Unix mail file format) to
+which a copy of the message should be appended when the message is
+sent.
+
address@hidden From
+Use the @samp{From} field to say who you are, when the account you are
+using to send the mail is not your own.  The contents of the
address@hidden field should be a valid mailing address, since replies
+will normally go there.
+
address@hidden Reply-To
+Use the @samp{Reply-To} field to direct replies to a different
+address, not your own. @samp{From} and
address@hidden have the same effect on where replies go, but they convey a
+different meaning to the person who reads the message.
+
address@hidden In-Reply-To
+This field contains a piece of text describing a message you are
+replying to.  Some mail systems can use the information to correlate
+related pieces of mail.  This field is normally filled in by your mail
+handling package when you are replying to a message and you never need
+to think about it.
address@hidden table
+
address@hidden
+The @samp{To}, @samp{CC}, @samp{BCC} and @samp{FCC} fields can appear
+any number of times, to specify many places to send the message.
+
address@hidden
+The @samp{To}, @samp{CC}, and @samp{BCC}, fields can have continuation
+lines.  All the lines starting with whitespace, following the line on
+which the field starts, are considered part of the field.  For
+example,@refill
+
address@hidden
+To: foo@@here, this@@there,
+  me@@gnu.cambridge.mass.usa.earth.spiral3281
address@hidden example
+
address@hidden
address@hidden mail-abbrev-mailrc-file
+If you have a @file{~/.mailrc} file, Emacs scans it for mail aliases the
+first time you try to send mail in an Emacs session.  Emacs expands
+aliases found in the @samp{To}, @samp{CC}, and @samp{BCC} fields where
+appropriate. You can set the variable @code{mail-abbrev-mailrc-file} to
+the name of the file with mail aliases.  If @code{nil}, @file{~/.mailrc}
+is used.
+
address@hidden .mailrc file
+Your @file{.mailrc} file ensures that word-abbrevs are defined for each
+of your mail aliases when point is in a @samp{To}, @samp{CC},
address@hidden, or @samp{From} field.  The aliases are defined in your
address@hidden file or in a file specified by the @b{MAILRC}
+environment variable if it exists.  Your mail aliases expand any time
+you type a word-delimiter at the end of an abbreviation.
+
+In this version of Emacs, what you see is what you get: in contrast to
+some other versions, no abbreviations are expanded after you have sent the
+mail.  This means you don't suffer the annoyance of having the system do
+things behind your back---if the system rewrites an address you typed,
+you know it immediately, instead of after the mail has been sent and
+it's too late to do anything about it.  For example, you will never
+again be in trouble because you forgot to delete an old alias from your
address@hidden and a new local user is given a userid which conflicts
+with one of your aliases.
+
address@hidden mail-abbrev-mode-regexp 
+Your mail alias abbrevs are in effect only when point is in an
+appropriate header field. The mail aliases will not expand in the body
+of the message, or in other header fields.  The default mode-specific
+abbrev table @code{mail-mode-abbrev-table} is used instead if defined.
+That means if you have been using mail-mode specific abbrevs, this code
+will not adversely affect you.  You can control which header fields the
+abbrevs are used in by changing the variable @code{mail-abbrev-mode-regexp}.
+
+If auto-fill mode is on, abbrevs wrap at commas instead of at word
+boundaries, and header continuation lines will be properly indented.
+
address@hidden mail-interactive-insert-alias
+You can also insert a mail alias with @code{mail-interactive-insert-alias}.
+This function, which is bound to @kbd{C-c C-a}, prompts you for an alias
+(with completion) and inserts its expansion at point.
+
+In this version of Emacs, it is possible to have lines like the
+following in your @file{.mailrc} file:
+
address@hidden
+     alias someone "John Doe <doe@@quux.com>"
address@hidden example
+
+That is, if you want an address to have embedded spaces, simply surround
+it with double-quotes.  The quotes are necessary because the format of
+the @file{.mailrc} file uses spaces as address delimiters.  
+
+Aliases in the @file{.mailrc} file may be nested. For example, assume
+you define aliases like:
address@hidden
+     alias group1 fred ethel
+     alias group2 larry curly moe
+     alias everybody group1 group2
address@hidden example
+
+When you now type @samp{everybody} on the @samp{To} line, it will expand to:
address@hidden
+     fred, ethyl, larry, curly, moe
address@hidden example
+
+Aliases may contain forward references; the alias of @samp{everybody} in the
+example above can precede the aliases of @samp{group1} and @samp{group2}.
+
+In this version of Emacs, you can use the @code{source} @file{.mailrc} command
+for reading aliases from some other file as well.
+
+Aliases may contain hyphens, as in @code{"alias foo-bar foo@@bar"}, even
+though word-abbrevs normally cannot contain hyphens.
+
+To read in the contents of another @file{.mailrc}-type file from Emacs, use the
+command @code{M-x merge-mail-aliases}.  The @code{rebuild-mail-aliases}
+command is similar, but deletes existing aliases first.
+
address@hidden mail-alias-separator-string
+If you want multiple addresses separated by a string other than @samp{,}
+(a comma), then set the variable @code{mail-alias-separator-string} to
+it.  This has to be a comma bracketed by whitespace if you want any kind
+ of reasonable behavior.
+
address@hidden mail-archive-file-name
+  If the variable @code{mail-archive-file-name} is address@hidden, it
+should be a string naming a file.  Each time you start to edit a message
+to send, an @samp{FCC} field is entered for that file.  Unless you
+remove the @samp{FCC} field, every message is written into that
+file when it is sent.
+
address@hidden Mail Mode,, Mail Headers, Sending Mail
address@hidden Mail Mode
+
+  The major mode used in the @samp{*mail*} buffer is Mail mode.  Mail
+mode is similar to Text mode, but several commands are provided on
+the @kbd{C-c} prefix.  These commands all deal specifically with
+editing or sending the message.
+
address@hidden @kbd
address@hidden C-c C-s
+Send the message, and leave the @samp{*mail*} buffer selected
+(@code{mail-send}).
address@hidden C-c C-c
+Send the message, and select some other buffer (@code{mail-send-and-exit}).
address@hidden C-c C-f C-t
+Move to the @samp{To} header field, creating one if there is none
+(@code{mail-to}).
address@hidden C-c C-f C-s
+Move to the @samp{Subject} header field, creating one if there is
+none (@code{mail-subject}).
address@hidden C-c C-f C-c
+Move to the @samp{CC} header field, creating one if there is none
+(@code{mail-cc}).
address@hidden C-c C-w
+Insert the file @file{~/.signature} at the end of the message text
+(@code{mail-signature}).
address@hidden C-c C-y
+Yank the selected message (@code{mail-yank-original}).
address@hidden C-c C-q
+Fill all paragraphs of yanked old messages, each individually
+(@code{mail-fill-yanked-message}).
address@hidden @key{button3}
+Pops up a menu of useful mail-mode commands.
address@hidden table
+
address@hidden C-c C-s (Mail mode)
address@hidden C-c C-c (Mail mode)
address@hidden mail-send
address@hidden mail-send-and-exit
+  There are two ways to send a message.  @kbd{C-c C-c}
+(@code{mail-send-and-exit}) is the usual way to send the message.  It
+sends the message and then deletes the window (if there is another
+window) or switches to another buffer.  It puts the @samp{*mail*} buffer
+at the lowest priority for automatic reselection, since you are finished
+with using it.  @kbd{C-c C-s} (@code{mail-send}) sends the
+message and marks the @samp{*mail*} buffer unmodified, but leaves that
+buffer selected so that you can modify the message (perhaps with new
+recipients) and send it again.
+
address@hidden C-c C-f C-t (Mail mode)
address@hidden mail-to
address@hidden C-c C-f C-s (Mail mode)
address@hidden mail-subject
address@hidden C-c C-f C-c (Mail mode)
address@hidden mail-cc
+  Mail mode provides some other special commands that are useful for
+editing the headers and text of the message before you send it.  There are
+three commands defined to move point to particular header fields, all based
+on the prefix @kbd{C-c C-f} (@samp{C-f} is for ``field'').  They are
address@hidden C-f C-t} (@code{mail-to}) to move to the @samp{To} field, 
@kbd{C-c
+C-f C-s} (@code{mail-subject}) for the @samp{Subject} field, and @kbd{C-c
+C-f C-c} (@code{mail-cc}) for the @samp{CC} field.  These fields have
+special motion commands because they are edited most frequently. 
+
+
address@hidden C-c C-w (Mail mode)
address@hidden mail-signature
+  @kbd{C-c C-w} (@code{mail-signature}) adds a standard piece of text at
+the end of the message to say more about who you are.  The text comes
+from the file @file{.signature} in your home directory.
+
address@hidden C-c C-y (Mail mode)
address@hidden mail-yank-original
+  When you use an Rmail command to send mail from the Rmail mail reader,
+you can use @kbd{C-c C-y} @code{mail-yank-original} inside the
address@hidden buffer to insert the
+text of the message you are replying to.  Normally Rmail indents each line
+of that message four spaces and eliminates most header fields.  A
+numeric argument specifies the number of spaces to indent.  An argument
+of just @kbd{C-u} says not to indent at all and not to eliminate
+anything.  @kbd{C-c C-y} always uses the current message from the
address@hidden buffer, so you can insert several old messages by selecting
+one in @samp{RMAIL}, switching to @samp{*mail*} and yanking it, then
+switching back to @samp{RMAIL} to select address@hidden
+
address@hidden C-c C-q (Mail mode)
address@hidden mail-fill-yanked-message
+  After using @kbd{C-c C-y}, you can use the command @kbd{C-c C-q}
+(@code{mail-fill-yanked-message}) to fill the paragraphs of the yanked
+old message or messages.  One use of @kbd{C-c C-q} fills all such
+paragraphs, each one separately.
+
+  Clicking the right mouse button in a mail buffer pops up a menu of
+the above commands, for easy access.
+
address@hidden mail-mode-hook
+  Turning on Mail mode (which @kbd{C-x m} does automatically) calls the
+value of @code{text-mode-hook}, if it is not void or @code{nil}, and
+then calls the value of @code{mail-mode-hook} if that is not void or
address@hidden
+
address@hidden Reading Mail, Calendar/Diary, Sending Mail, Top
address@hidden Reading Mail
address@hidden mail
address@hidden message
+
+XEmacs provides three separate mail-reading packages.  Each one comes with
+its own manual, which is included standard with the XEmacs distribution.
+
+The recommended mail-reading package for new users is VM.  VM works
+with standard Unix-mail-format folders and was designed as a replacement
+for the older Rmail.
+
+XEmacs also provides a sophisticated and comfortable front-end to the
+MH mail-processing system, called @samp{mh-e}.  Unlike in other
+mail programs, folders in MH are stored as file-system directories,
+with each message occupying one (numbered) file.  This facilitates
+working with mail using shell commands, and many other features of
+MH are also designed to integrate well with the shell and with
+shell scripts.  Keep in mind, however, that in order to use mh-e
+you must have the MH mail-processing system installed on your
+computer.
+
+Finally, XEmacs provides the Rmail package.  Rmail is (currently) the
+only mail reading package distributed with FSF GNU Emacs, and is
+powerful in its own right.  However, it stores mail folders in a special
+format called @samp{Babyl}, that is incompatible with all other
+frequently-used mail programs.  A utility program is provided for
+converting Babyl folders to standard Unix-mail format; however, unless
+you already have mail in Babyl-format folders, you should consider
+using VM or mh-e instead. (If at times you have to use FSF Emacs, it
+is not hard to obtain and install VM for that editor.)
address@hidden Calendar/Diary, Sorting, Reading Mail, Top
address@hidden Calendar Mode and the Diary
address@hidden calendar
address@hidden calendar
+
+  Emacs provides the functions of a desk calendar, with a diary of
+planned or past events.  To enter the calendar, type @kbd{M-x calendar};
+this displays a three-month calendar centered on the current month, with
+point on the current date.  With a numeric argument, as in @kbd{C-u M-x
+calendar}, it prompts you for the month and year to be the center of the
+three-month calendar.  The calendar uses its own buffer, whose major
+mode is Calendar mode.
+
+  @kbd{Button2} in the calendar brings up a menu of operations on a
+particular date; @kbd{Buttons3} brings up a menu of commonly used
+calendar features that are independent of any particular date.  To exit
+the calendar, type @kbd{q}.  @xref{Calendar, Customizing the Calendar
+and Diary,, lispref, The XEmacs Lisp Reference Manual}, for customization
+information about the calendar and diary.
+ 
address@hidden
+* Calendar Motion::        Moving through the calendar; selecting a date.
+* Scroll Calendar::        Bringing earlier or later months onto the screen.
+* Mark and Region::        Remembering dates, the mark ring.
+* General Calendar::       Exiting or recomputing the calendar.
+* LaTeX Calendar::         Print a calendar using LaTeX.
+* Holidays::               Displaying dates of holidays.
+* Sunrise/Sunset::         Displaying local times of sunrise and sunset.
+* Lunar Phases::           Displaying phases of the moon.
+* Other Calendars::        Converting dates to other calendar systems.
+* Diary::                  Displaying events from your diary.
+* Calendar Customization:: Altering the behavior of the features above.
address@hidden menu
+
address@hidden Calendar Motion, Scroll Calendar, Calendar/Diary, Calendar/Diary
address@hidden Movement in the Calendar
+
address@hidden moving inside the calendar
+  Calendar mode lets you move through the calendar in logical units of
+time such as days, weeks, months, and years.  If you move outside the
+three months originally displayed, the calendar display ``scrolls''
+automatically through time to make the selected date visible.  Moving to
+a date lets you view its holidays or diary entries, or convert it to other
+calendars; moving longer time periods is also useful simply to scroll the
+calendar.
+
address@hidden
+* Calendar Unit Motion::       Moving by days, weeks, months, and years.
+* Move to Beginning or End::   Moving to start/end of weeks, months, and years.
+* Specified Dates::            Moving to the current date or another 
+                               specific date.
address@hidden menu
+
address@hidden Calendar Unit Motion, Move to Beginning or End, Calendar Motion, 
Calendar Motion
address@hidden Motion by Integral Days, Weeks, Months, Years
+
+  The commands for movement in the calendar buffer parallel the
+commands for movement in text.  You can move forward and backward by
+days, weeks, months, and years.
+
address@hidden @kbd
address@hidden C-f
+Move point one day forward (@code{calendar-forward-day}).
address@hidden C-b
+Move point one day backward (@code{calendar-backward-day}).
address@hidden C-n
+Move point one week forward (@code{calendar-forward-week}).
address@hidden C-p
+Move point one week backward (@code{calendar-backward-week}).
address@hidden address@hidden
+Move point one month forward (@code{calendar-forward-month}).
address@hidden address@hidden
+Move point one month backward (@code{calendar-backward-month}).
address@hidden C-x ]
+Move point one year forward (@code{calendar-forward-year}).
address@hidden C-x [
+Move point one year backward (@code{calendar-backward-year}).
address@hidden table
+
address@hidden C-f @r{(Calendar mode)}
address@hidden calendar-forward-day
address@hidden C-b @r{(Calendar mode)}
address@hidden calendar-backward-day
address@hidden C-n @r{(Calendar mode)}
address@hidden calendar-forward-week
address@hidden C-p @r{(Calendar mode)}
address@hidden calendar-backward-week
+  The day and week commands are natural analogues of the usual Emacs
+commands for moving by characters and by lines.  Just as @kbd{C-n}
+usually moves to the same column in the following line, in Calendar
+mode it moves to the same day in the following week.  And @kbd{C-p}
+moves to the same day in the previous week.
+
+  The arrow keys are equivalent to @kbd{C-f}, @kbd{C-b}, @kbd{C-n} and
address@hidden, just as they normally are in other modes.
+
address@hidden address@hidden @r{(Calendar mode)}
address@hidden calendar-forward-month
address@hidden address@hidden @r{(Calendar mode)}
address@hidden calendar-backward-month
address@hidden C-x ] @r{(Calendar mode)}
address@hidden calendar-forward-year
address@hidden C-x [ @r{(Calendar mode)}
address@hidden calendar-forward-year
+  The commands for motion by months and years work like those for
+weeks, but move a larger distance.  The month commands @address@hidden and
address@hidden@{} move forward or backward by an entire month's time.  The
+year commands @kbd{C-x ]} and @address@hidden [}} move forward or backward a
+whole year.
+
+  The easiest way to remember these commands is to consider months and
+years analogous to paragraphs and pages of text, respectively.  But the
+commands themselves are not quite analogous.  The ordinary Emacs paragraph
+commands move to the beginning or end of a paragraph, whereas these month
+and year commands move by an entire month or an entire year, which usually
+involves skipping across the end of a month or year.
+
+  All these commands accept a numeric argument as a repeat count.
+For convenience, the digit keys and the minus sign specify numeric
+arguments in Calendar mode even without the Meta modifier.  For example,
address@hidden C-f} moves point 100 days forward from its present location.
+
address@hidden Move to Beginning or End, Specified Dates, Calendar Unit Motion, 
Calendar Motion
address@hidden Beginning or End of Week, Month or Year
+
+  A week (or month, or year) is not just a quantity of days; we think of
+weeks (months, years) as starting on particular dates.  So Calendar mode
+provides commands to move to the beginning or end of a week, month or
+year:
+ 
address@hidden @kbd
address@hidden C-a @r{(Calendar mode)}
address@hidden calendar-beginning-of-week
address@hidden C-a
+Move point to start of week (@code{calendar-beginning-of-week}).
address@hidden C-e @r{(Calendar mode)}
address@hidden calendar-end-of-week
address@hidden C-e
+Move point to end of week (@code{calendar-end-of-week}).
address@hidden M-a @r{(Calendar mode)}
address@hidden calendar-beginning-of-month
address@hidden M-a
+Move point to start of month (@code{calendar-beginning-of-month}).
address@hidden M-e @r{(Calendar mode)}
address@hidden calendar-end-of-month
address@hidden M-e
+Move point to end of month (@code{calendar-end-of-month}).
address@hidden M-< @r{(Calendar mode)}
address@hidden calendar-beginning-of-year
address@hidden M-<
+Move point to start of year (@code{calendar-beginning-of-year}).
address@hidden M-> @r{(Calendar mode)}
address@hidden calendar-end-of-year
address@hidden M->
+Move point to end of year (@code{calendar-end-of-year}).
address@hidden table
+
+  These commands also take numeric arguments as repeat counts, with the
+repeat count indicating how many weeks, months, or years to move
+backward or forward.
+
address@hidden calendar-week-start-day
address@hidden weeks, which day they start on
address@hidden calendar, first day of week
+  By default, weeks begin on Sunday.  To make them begin on Monday
+instead, set the variable @code{calendar-week-start-day} to 1.
+
address@hidden Specified Dates,,Move to Beginning or End, Calendar Motion
address@hidden Particular Dates
+
+  Calendar mode provides commands for moving to a particular date
+specified in various ways.
+
address@hidden @kbd
address@hidden g d
+Move point to specified date (@code{calendar-goto-date}).
address@hidden o
+Center calendar around specified month (@code{calendar-other-month}).
address@hidden .
+Move point to today's date (@code{calendar-goto-today}).
address@hidden table
+
address@hidden g d @r{(Calendar mode)}
address@hidden calendar-goto-date
+  @kbd{g d} (@code{calendar-goto-date}) prompts for a year, a month, and a day
+of the month, and then moves to that date.  Because the calendar includes all
+dates from the beginning of the current era, you must type the year in its
+entirety; that is, type @samp{1990}, not @samp{90}.
+
address@hidden o @r{(Calendar mode)}
address@hidden calendar-other-month
+  @kbd{o} (@code{calendar-other-month}) prompts for a month and year,
+then centers the three-month calendar around that month.
+
address@hidden . @r{(Calendar mode)}
address@hidden calendar-goto-today
+  You can return to today's date with @kbd{.}@:
+(@code{calendar-goto-today}).
+
address@hidden Scroll Calendar, Mark and Region, Calendar Motion, Calendar/Diary
address@hidden Scrolling the Calendar through Time
+
address@hidden scrolling in the calendar
+  The calendar display scrolls automatically through time when you move out
+of the visible portion.  You can also scroll it manually.  Imagine that the
+calendar window contains a long strip of paper with the months on it.
+Scrolling it means moving the strip so that new months become visible in
+the window.
+
address@hidden @kbd
address@hidden C-x <
+Scroll calendar one month forward (@code{scroll-calendar-left}).
address@hidden C-x >
+Scroll calendar one month backward (@code{scroll-calendar-right}).
address@hidden C-v
address@hidden @key{NEXT}
+Scroll calendar three months forward
+(@code{scroll-calendar-left-three-months}).
address@hidden M-v
address@hidden @key{PRIOR}
+Scroll calendar three months backward
+(@code{scroll-calendar-right-three-months}).
address@hidden table
+
address@hidden C-x < @r{(Calendar mode)}
address@hidden scroll-calendar-left
address@hidden C-x > @r{(Calendar mode)}
address@hidden scroll-calendar-right
+  The most basic calendar scroll commands scroll by one month at a
+time.  This means that there are two months of overlap between the
+display before the command and the display after.  @kbd{C-x <} scrolls
+the calendar contents one month to the left; that is, it moves the
+display forward in time.  @kbd{C-x >} scrolls the contents to the
+right, which moves backwards in time.
+
address@hidden C-v @r{(Calendar mode)}
address@hidden scroll-calendar-left-three-months
address@hidden M-v @r{(Calendar mode)}
address@hidden scroll-calendar-right-three-months
+  The commands @kbd{C-v} and @kbd{M-v} scroll the calendar by an entire
+``screenful''---three months---in analogy with the usual meaning of
+these commands.  @kbd{C-v} makes later dates visible and @kbd{M-v} makes
+earlier dates visible.  These commands take a numeric argument as a
+repeat count; in particular, since @kbd{C-u} multiplies the next command
+by four, typing @kbd{C-u C-v} scrolls the calendar forward by a year and
+typing @kbd{C-u M-v} scrolls the calendar backward by a year.
+
+  The function keys @key{NEXT} and @key{PRIOR} are equivalent to
address@hidden and @kbd{M-v}, just as they are in other modes.
+
+
address@hidden Mark and Region, General Calendar, Scroll Calendar, 
Calendar/Diary
address@hidden The Mark and the Region
+
+  The concept of the mark applies to the calendar just as to any other
+buffer, but it marks a @emph{date}, not a @emph{position} in the buffer.
+The region consists of the days between the mark and point (including
+the starting and stopping dates).
+
address@hidden @kbd
address@hidden C-SPC
+Set the mark to today's date (@code{calendar-set-mark}).
address@hidden C-@@
+The same.
address@hidden C-x C-x
+Interchange mark and point (@code{calendar-exchange-point-and-mark}).
address@hidden M-=
+Display the number of days in the current region
+(@code{calendar-count-days-region}).
address@hidden table
+
address@hidden C-@@ @r{(Calendar mode)}
address@hidden C-SPC @r{(Calendar mode)}
address@hidden calendar-set-mark
address@hidden C-x C-x @r{(Calendar mode)}
address@hidden calendar-exchange-point-and-mark
+  You set the mark in the calendar, as in any other buffer, by using @kbd{C-@@}
+or @kbd{C-SPC} (@code{calendar-set-mark}).  You return to the marked date
+with the command @kbd{C-x C-x} (@code{calendar-exchange-point-and-mark})
+which puts the mark where point was and point where mark was.  The calendar
+is scrolled as necessary, if the marked date was not visible on the
+screen.  This does not change the extent of the region.
+
address@hidden M-= @r{(Calendar mode)}
address@hidden calendar-count-days-region
+  To determine the number of days in the region, type @kbd{M-=}
+(@code{calendar-count-days-region}).  The numbers of days printed is
address@hidden; that is, it includes the days specified by mark and
+point.
+
address@hidden mark ring
+  The main use of the mark in the calendar is to remember dates that you may
+want to go back to.  To make this feature more useful, the mark ring
+(@pxref{Mark Ring}) operates exactly as in other buffers:  Emacs remembers
+16 previous locations of the mark.  To return to a marked date, type @kbd{C-u
+C-SPC} (or @kbd{C-u C-@@}); this is the command @code{calendar-set-mark} given
+a numeric argument.  It moves point to where the mark was, restores the mark
+from the ring of former marks, and stores the previous point at the end of
+the mark ring.  So, repeated use of this command moves point through all
+the old marks on the ring, one by one.
+
address@hidden General Calendar, LaTeX Calendar, Mark and Region, Calendar/Diary
address@hidden Miscellaneous Calendar Commands
+
address@hidden @kbd
address@hidden p d
+Display day-in-year (@code{calendar-print-day-of-year}).
address@hidden ?
+Briefly describe calendar commands (@code{describe-calendar-mode}).
address@hidden C-c C-l
+Regenerate the calendar window (@code{redraw-calendar}).
address@hidden SPC
+Scroll the next window (@code{scroll-other-window}).
address@hidden q
+Exit from calendar (@code{exit-calendar}).
address@hidden table
+
address@hidden p d @r{(Calendar mode)}
address@hidden day of year
address@hidden calendar-print-day-of-year
+  If you want to know how many days have elapsed since the start of
+the year, or the number of days remaining in the year, type the @kbd{p d}
+command (@code{calendar-print-day-of-year}).  This displays both
+of those numbers in the echo area.
+
address@hidden ? @r{(Calendar mode)}
address@hidden describe-calendar-mode
+  To display a brief description of the calendar commands, type @kbd{?}
+(@code{describe-calendar-mode}).  For a fuller description, type @kbd{C-h m}.
+
address@hidden SPC @r{(Calendar mode)}
address@hidden scroll-other-window
+  You can use @kbd{SPC} (@code{scroll-other-window}) to scroll the other
+window.  This is handy when you display a list of holidays or diary entries
+in another window.
+
address@hidden C-c C-l @r{(Calendar mode)}
address@hidden redraw-calendar
+  If the calendar window text gets corrupted, type @kbd{C-c C-l}
+(@code{redraw-calendar}) to redraw it.  (This can only happen if you use
+non-Calendar-mode editing commands.)
+
address@hidden SPC @r{(Calendar mode)}
+  In Calendar mode, you can use @kbd{SPC} (@code{scroll-other-window})
+to scroll the other window.  This is handy when you display a list of
+holidays or diary entries in another window.
+
address@hidden q @r{(Calendar mode)}
address@hidden exit-calendar
+  To exit from the calendar, type @kbd{q} (@code{exit-calendar}).  This
+buries all buffers related to the calendar, selecting other buffers.
+(If a frame contains a dedicated calendar window, exiting from the
+calendar iconifies that frame.)
+
address@hidden LaTeX Calendar, Holidays, General Calendar, Calendar/Diary
address@hidden LaTeX Calendar
address@hidden calendar and address@hidden
+
+   The Calendar address@hidden commands produce a buffer of address@hidden 
code that
+prints as a calendar.  Depending on the command you use, the printed
+calendar covers the day, week, month or year that point is in.
+
address@hidden t @r{(Calendar mode)}
address@hidden @kbd
address@hidden t m
+Generate a one-month calendar (@code{cal-tex-cursor-month}).
address@hidden t M
+Generate a sideways-printing one-month calendar
+(@code{cal-tex-cursor-month-landscape}).
address@hidden t d
+Generate a one-day calendar
+(@code{cal-tex-cursor-day}).
address@hidden t w 1
+Generate a one-page calendar for one week
+(@code{cal-tex-cursor-week}).
address@hidden t w 2
+Generate a two-page calendar for one week
+(@code{cal-tex-cursor-week2}).
address@hidden t w 3
+Generate an ISO-style calendar for one week
+(@code{cal-tex-cursor-week-iso}).
address@hidden t w 4
+Generate a calendar for one Monday-starting week
+(@code{cal-tex-cursor-week-monday}).
address@hidden t f w
+Generate a Filofax-style two-weeks-at-a-glance calendar
+(@code{cal-tex-cursor-filofax-2week}).
address@hidden t f W
+Generate a Filofax-style one-week-at-a-glance calendar
+(@code{cal-tex-cursor-filofax-week}).
address@hidden t y
+Generate a calendar for one year
+(@code{cal-tex-cursor-year}).
address@hidden t Y
+Generate a sideways-printing calendar for one year
+(@code{cal-tex-cursor-year-landscape}).
address@hidden t f y
+Generate a Filofax-style calendar for one year
+(@code{cal-tex-cursor-filofax-year}).
address@hidden table
+
+  Some of these commands print the calendar sideways (in ``landscape
+mode''), so it can be wider than it is long.  Some of them use Filofax
+paper size (3.75in x 6.75in).  All of these commands accept a prefix
+argument which specifies how many days, weeks, months or years to print
+(starting always with the selected one).
+
+  If the variable @code{cal-tex-holidays} is address@hidden (the
+default), then the printed calendars show the holidays in
address@hidden  If the variable @code{cal-tex-diary} is
address@hidden (the default is @code{nil}), diary entries are included
+also (in weekly and monthly calendars only).
+
address@hidden Holidays, Sunrise/Sunset, LaTeX Calendar, Calendar/Diary
address@hidden Holidays
address@hidden holidays
+
+  The Emacs calendar knows about all major and many minor holidays,
+and can display them.
+
address@hidden @kbd
address@hidden h
+Display holidays for the selected date
+(@code{calendar-cursor-holidays}).
address@hidden Button2 Holidays
+Display any holidays for the date you click on.
address@hidden x
+Mark holidays in the calendar window (@code{mark-calendar-holidays}).
address@hidden u
+Unmark calendar window (@code{calendar-unmark}).
address@hidden a
+List all holidays for the displayed three months in another window
+(@code{list-calendar-holidays}).
address@hidden M-x holidays
+List all holidays for three months around today's date in another
+window.
address@hidden M-x list-holidays
+List holidays in another window for a specified range of years.
address@hidden table
+
address@hidden h @r{(Calendar mode)}
address@hidden calendar-cursor-holidays
+  To see if any holidays fall on a given date, position point on that
+date in the calendar window and use the @kbd{h} command.  Alternatively,
+click on that date with @kbd{Button2} and then choose @kbd{Holidays}
+from the menu that appears.  Either way, this displays the holidays for
+that date, in the echo area if they fit there, otherwise in a separate
+window.
+
address@hidden x @r{(Calendar mode)}
address@hidden mark-calendar-holidays
address@hidden u @r{(Calendar mode)}
address@hidden calendar-unmark
+  To view the distribution of holidays for all the dates shown in the
+calendar, use the @kbd{x} command.  This displays the dates that are
+holidays in a different face (or places a @samp{*} after these dates, if 
+display with multiple faces is not available). The command applies both
+to the currently visible months and to other months that subsequently
+become visible by scrolling.  To turn marking off and erase the current
+marks, type @kbd{u}, which also erases any diary marks (@pxref{Diary}).
+
address@hidden a @r{(Calendar mode)}
address@hidden list-calendar-holidays
+  To get even more detailed information, use the @kbd{a} command, which
+displays a separate buffer containing a list of all holidays in the
+current three-month range.  You can use @key{SPC} in the calendar window
+to scroll that list.
+
address@hidden holidays
+  The command @kbd{M-x holidays} displays the list of holidays for the
+current month and the preceding and succeeding months; this works even
+if you don't have a calendar window.  If you want the list of holidays
+centered around a different month, use @kbd{C-u M-x holidays}, which
+prompts for the month and year.
+
+  The holidays known to Emacs include United States holidays and the
+major Christian, Jewish, and Islamic holidays; also the solstices and
+equinoxes.
+
address@hidden list-holidays
+   The command @kbd{M-x list-holidays} displays the list of holidays for
+a range of years.  This function asks you for the starting and stopping
+years, and allows you to choose all the holidays or one of several
+categories of holidays.  You can use this command even if you don't have
+a calendar window.
+
+  The dates used by Emacs for holidays are based on @emph{current
+practice}, not historical fact.  Historically, for instance, the start
+of daylight savings time and even its existence have varied from year to
+year, but present United States law mandates that daylight savings time
+begins on the first Sunday in April.  When the daylight savings rules
+are set up for the United States, Emacs always uses the present
+definition, even though it is wrong for some prior years.
+
address@hidden Sunrise/Sunset, Lunar Phases, Holidays, Calendar/Diary
address@hidden Times of Sunrise and Sunset
address@hidden sunrise and sunset
+
+  Special calendar commands can tell you, to within a minute or two, the
+times of sunrise and sunset for any date.
+
address@hidden @kbd
address@hidden S
+Display times of sunrise and sunset for the selected date
+(@code{calendar-sunrise-sunset}).
address@hidden Button2 Sunrise/Sunset
+Display times of sunrise and sunset for the date you click on.
address@hidden M-x sunrise-sunset
+Display times of sunrise and sunset for today's date.
address@hidden C-u M-x sunrise-sunset
+Display times of sunrise and sunset for a specified date.
address@hidden table
+
address@hidden S @r{(Calendar mode)}
address@hidden calendar-sunrise-sunset
address@hidden sunrise-sunset
+  Within the calendar, to display the @emph{local times} of sunrise and
+sunset in the echo area, move point to the date you want, and type
address@hidden  Alternatively, click @kbd{Button2} on the date, then choose
address@hidden/Sunset} from the menu that appears.  The command @kbd{M-x
+sunrise-sunset} is available outside the calendar to display this
+information for today's date or a specified date.  To specify a date
+other than today, use @kbd{C-u M-x sunrise-sunset}, which prompts for
+the year, month, and day.
+
+  You can display the times of sunrise and sunset for any location and
+any date with @kbd{C-u C-u M-x sunrise-sunset}.  This asks you for a
+longitude, latitude, number of minutes difference from Coordinated
+Universal Time, and date, and then tells you the times of sunrise and
+sunset for that location on that date.
+
+  Because the times of sunrise and sunset depend on the location on
+earth, you need to tell Emacs your latitude, longitude, and location
+name before using these commands.  Here is an example of what to set:
+
address@hidden calendar-location-name
address@hidden calendar-longitude
address@hidden calendar-latitude
address@hidden
+(setq calendar-latitude 40.1)
+(setq calendar-longitude -88.2)
+(setq calendar-location-name "Urbana, IL")
address@hidden example
+
address@hidden
+Use one decimal place in the values of @code{calendar-latitude} and
address@hidden
+
+  Your time zone also affects the local time of sunrise and sunset.
+Emacs usually gets time zone information from the operating system, but
+if these values are not what you want (or if the operating system does
+not supply them), you must set them yourself.  Here is an example:
+
address@hidden calendar-time-zone
address@hidden calendar-standard-time-zone-name
address@hidden calendar-daylight-time-zone-name
address@hidden
+(setq calendar-time-zone -360)
+(setq calendar-standard-time-zone-name "CST")
+(setq calendar-daylight-time-zone-name "CDT")
address@hidden example
+
address@hidden
+The value of @code{calendar-time-zone} is the number of minutes
+difference between your local standard time and Coordinated Universal
+Time (Greenwich time).  The values of
address@hidden and
address@hidden are the abbreviations used in
+your time zone.  Emacs displays the times of sunrise and sunset
address@hidden for daylight savings time}.  @xref{Daylight Savings},
+for how daylight savings time is determined.
+
+  As a user, you might find it convenient to set the calendar location
+variables for your usual physical location in your init file.  And when
+you install Emacs on a machine, you can create a @file{default.el} file
+which sets them properly for the typical location of most users of that
+machine.  @xref{Init File}.
+
address@hidden Lunar Phases, Other Calendars, Sunrise/Sunset, Calendar/Diary
address@hidden Phases of the Moon
address@hidden phases of the moon
address@hidden moon, phases of
+
+  These calendar commands display the dates and times of the phases of
+the moon (new moon, first quarter, full moon, last quarter).  This
+feature is useful for debugging problems that ``depend on the phase of
+the moon.''
+
address@hidden @kbd
address@hidden M
+Display the dates and times for all the quarters of the moon for the
+three-month period shown (@code{calendar-phases-of-moon}).
address@hidden M-x phases-of-moon
+Display dates and times of the quarters of the moon for three months around
+today's date.
address@hidden table
+
address@hidden M @r{(Calendar mode)}
address@hidden calendar-phases-of-moon
+  Within the calendar, use the @kbd{M} command to display a separate
+buffer of the phases of the moon for the current three-month range.  The
+dates and times listed are accurate to within a few minutes.
+
address@hidden phases-of-moon
+  Outside the calendar, use the command @kbd{M-x phases-of-moon} to
+display the list of the phases of the moon for the current month and the
+preceding and succeeding months.  For information about a different
+month, use @kbd{C-u M-x phases-of-moon}, which prompts for the month and
+year.
+ 
+  The dates and times given for the phases of the moon are given in
+local time (corrected for daylight savings, when appropriate); but if
+the variable @code{calendar-time-zone} is void, Coordinated Universal
+Time (the Greenwich time zone) is used.  @xref{Daylight Savings}.
+
address@hidden Other Calendars, Calendar Systems, Lunar Phases, Calendar/Diary
address@hidden  Conversion To and From Other Calendars
+
address@hidden Gregorian calendar
+  The Emacs calendar displayed is @emph{always} the Gregorian calendar,
+sometimes called the ``new style'' calendar, which is used in most of
+the world today.  However, this calendar did not exist before the
+sixteenth century and was not widely used before the eighteenth century;
+it did not fully displace the Julian calendar and gain universal
+acceptance until the early twentieth century.  The Emacs calendar can
+display any month since January, year 1 of the current era, but the
+calendar displayed is the Gregorian, even for a date at which the
+Gregorian calendar did not exist.
+
+  While Emacs cannot display other calendars, it can convert dates to
+and from several other calendars.
+
address@hidden
+* Calendar Systems::      The calendars Emacs understands
+                            (aside from Gregorian).
+* To Other Calendar::     Converting the selected date to various calendars.
+* From Other Calendar::   Moving to a date specified in another calendar.
+* Mayan Calendar::        Moving to a date specified in a Mayan calendar.
address@hidden menu
+
+  If you are interested in these calendars, you can convert dates one at a
+time.  Put point on the desired date of the Gregorian calendar and press the
+appropriate keys.  The @kbd{p} is a mnemonic for ``print'' since Emacs
+``prints' the equivalent date in the echo area.
address@hidden Calendar Systems, To Other Calendar, Other Calendars, Other 
Calendars
address@hidden Supported Calendar Systems
+
address@hidden ISO commercial calendar
+  The ISO commercial calendar is used largely in Europe.
+
address@hidden Julian calendar
+  The Julian calendar, named after Julius Caesar, was the one used in Europe
+throughout medieval times, and in many countries up until the nineteenth
+century.
+
address@hidden Julian day numbers
address@hidden astronomical day numbers
+  Astronomers use a simple counting of days elapsed since noon, Monday,
+January 1, 4713 B.C. on the Julian calendar.  The number of days elapsed
+is called the @emph{Julian day number} or the @emph{Astronomical day number}.
+
address@hidden Hebrew calendar
+  The Hebrew calendar is used by tradition in the Jewish religion.  The
+Emacs calendar program uses the Hebrew calendar to determine the dates
+of Jewish holidays.  Hebrew calendar dates begin and end at sunset.
+
address@hidden Islamic calendar
+  The Islamic calendar is used in many predominantly Islamic countries.
+Emacs uses it to determine the dates of Islamic holidays.  There is no
+universal agreement in the Islamic world about the calendar; Emacs uses
+a widely accepted version, but the precise dates of Islamic holidays
+often depend on proclamation by religious authorities, not on
+calculations.  As a consequence, the actual dates of observance can vary
+slightly from the dates computed by Emacs.  Islamic calendar dates begin
+and end at sunset.
+
address@hidden French Revolutionary calendar
+  The French Revolutionary calendar was created by the Jacobins after the 1789
+revolution, to represent a more secular and nature-based view of the annual
+cycle, and to install a 10-day week in a rationalization measure similar to
+the metric system.  The French government officially abandoned this
+calendar at the end of 1805.
+
address@hidden Mayan calendar
+  The Maya of Central America used three separate, overlapping calendar
+systems, the @emph{long count}, the @emph{tzolkin}, and the @emph{haab}.
+Emacs knows about all three of these calendars.  Experts dispute the
+exact correlation between the Mayan calendar and our calendar; Emacs uses the
+Goodman-Martinez-Thompson correlation in its calculations.
+
address@hidden Coptic calendar
address@hidden Ethiopic calendar
+  The Copts use a calendar based on the ancient Egyptian solar calendar.
+Their calendar consists of twelve 30-day months followed by an extra
+five-day period.  Once every fourth year they add a leap day to this
+extra period to make it six days.  The Ethiopic calendar is identical in
+structure, but has different year numbers and month names.
+
address@hidden Persian calendar
+  The Persians use a solar calendar based on a design of Omar Khayyam.
+Their calendar consists of twelve months of which the first six have 31
+days, the next five have 30 days, and the last has 29 in ordinary years
+and 30 in leap years.  Leap years occur in a complicated pattern every
+four or five years.
+
address@hidden Chinese calendar
+  The Chinese calendar is a complicated system of lunar months arranged
+into solar years.  The years go in cycles of sixty, each year containing
+either twelve months in an ordinary year or thirteen months in a leap
+year; each month has either 29 or 30 days.  Years, ordinary months, and
+days are named by combining one of ten ``celestial stems'' with one of
+twelve ``terrestrial branches'' for a total of sixty names that are
+repeated in a cycle of sixty.
+
address@hidden To Other Calendar, From Other Calendar, Calendar Systems, Other 
Calendars
address@hidden Converting To Other Calendars
+
+  The following commands describe the selected date (the date at point)
+in various other calendar systems:
+
address@hidden @kbd
address@hidden Button2  Other Calendars
+Display the date that you click on, expressed in various other calendars.
address@hidden p @r{(Calendar mode)}
address@hidden calendar-print-iso-date
address@hidden p c
+Display ISO commercial calendar equivalent for selected day
+(@code{calendar-print-iso-date}).
address@hidden calendar-print-julian-date
address@hidden p j
+Display Julian date for selected day (@code{calendar-print-julian-date}).
address@hidden calendar-print-astro-day-number
address@hidden p a
+Display astronomical (Julian) day number for selected day
+(@code{calendar-print-astro-day-number}).
address@hidden calendar-print-hebrew-date
address@hidden p h
+Display Hebrew date for selected day (@code{calendar-print-hebrew-date}).
address@hidden calendar-print-islamic-date
address@hidden p i
+Display Islamic date for selected day (@code{calendar-print-islamic-date}).
address@hidden calendar-print-french-date
address@hidden p f
+Display French Revolutionary date for selected day
+(@code{calendar-print-french-date}).
address@hidden calendar-print-chinese-date
address@hidden p C
+Display Chinese date for selected day
+(@code{calendar-print-chinese-date}).
address@hidden calendar-print-coptic-date
address@hidden p k
+Display Coptic date for selected day
+(@code{calendar-print-coptic-date}).
address@hidden calendar-print-ethiopic-date
address@hidden p e
+Display Ethiopic date for selected day
+(@code{calendar-print-ethiopic-date}).
address@hidden calendar-print-persian-date
address@hidden p p
+Display Persian date for selected day
+(@code{calendar-print-persian-date}).
address@hidden calendar-print-mayan-date
address@hidden p m
+Display Mayan date for selected day (@code{calendar-print-mayan-date}).
address@hidden table
+
+  If you are using X, the easiest way to translate a date into other
+calendars is to click on it with @kbd{Button2}, then choose @kbd{Other
+Calendars} from the menu that appears.  This displays the equivalent
+forms of the date in all the calendars Emacs understands, in the form of
+a menu.  (Choosing an alternative from this menu doesn't actually do
+anything---the menu is used only for display.)
+
+  Put point on the desired date of the Gregorian calendar, then type the
+appropriate keys.  The @kbd{p} is a mnemonic for ``print'' since Emacs
+``prints'' the equivalent date in the echo area.
+
address@hidden From Other Calendar, Mayan Calendar, To Other Calendar, Other 
Calendars
address@hidden Converting From Other Calendars
+
+  You can use the other supported calendars to specify a date to move
+to.  This section describes the commands for doing this using calendars
+other than Mayan; for the Mayan calendar, see the following section.
+
address@hidden g @var{char} @r{(Calendar mode)}
address@hidden calendar-goto-iso-date
address@hidden calendar-goto-julian-date
address@hidden calendar-goto-astro-day-number
address@hidden calendar-goto-hebrew-date
address@hidden calendar-goto-islamic-date
address@hidden calendar-goto-french-date
address@hidden calendar-goto-chinese-date
address@hidden calendar-goto-persian-date
address@hidden calendar-goto-coptic-date
address@hidden calendar-goto-ethiopic-date
address@hidden @kbd
address@hidden g c
+Move to a date specified in the ISO commercial calendar
+(@code{calendar-goto-iso-date}).
address@hidden g j
+Move to a date specified in the Julian calendar
+(@code{calendar-goto-julian-date}).
address@hidden g a
+Move to a date specified in astronomical (Julian) day number
+(@code{calendar-goto-astro-day-number}).
address@hidden g h
+Move to a date specified in the Hebrew calendar
+(@code{calendar-goto-hebrew-date}).
address@hidden g i
+Move to a date specified in the Islamic calendar
+(@code{calendar-goto-islamic-date}).
address@hidden g f
+Move to a date specified in the French Revolutionary calendar
+(@code{calendar-goto-french-date}).
address@hidden g C
+Move to a date specified in the Chinese calendar
+(@code{calendar-goto-chinese-date}).
address@hidden g p
+Move to a date specified in the Persian calendar
+(@code{calendar-goto-persian-date}).
address@hidden g k
+Move to a date specified in the Coptic calendar
+(@code{calendar-goto-coptic-date}).
address@hidden g e
+Move to a date specified in the Ethiopic calendar
+(@code{calendar-goto-ethiopic-date}).
address@hidden table
+
+  These commands ask you for a date on the other calendar, move point to
+the Gregorian calendar date equivalent to that date, and display the
+other calendar's date in the echo area.  Emacs uses strict completion
+(@pxref{Completion}) whenever it asks you to type a month name, so you
+don't have to worry about the spelling of Hebrew, Islamic, or French names.
+
address@hidden list-yahrzeit-dates
address@hidden yahrzeits
+  One common question concerning the Hebrew calendar is the computation
+of the anniversary of a date of death, called a ``yahrzeit.''  The Emacs
+calendar includes a facility for such calculations.  If you are in the
+calendar, the command @kbd{M-x list-yahrzeit-dates} asks you for a
+range of years and then displays a list of the yahrzeit dates for those
+years for the date given by point.  If you are not in the calendar,
+this command first asks you for the date of death and the range of
+years, and then displays the list of yahrzeit dates.
+
address@hidden Mayan Calendar, Diary ,From Other Calendar ,Other Calendars
address@hidden Converting from the Mayan Calendar
+
+  Here are the commands to select dates based on the Mayan calendar:
+
address@hidden @kbd
address@hidden g m l
+Move to a date specified by the long count calendar
+(@code{calendar-goto-mayan-long-count-date}).
address@hidden g m n t
+Move to the next occurrence of a place in the
+tzolkin calendar (@code{calendar-next-tzolkin-date}).
address@hidden g m p t
+Move to the previous occurrence of a place in the
+tzolkin calendar (@code{calendar-previous-tzolkin-date}).
address@hidden g m n h
+Move to the next occurrence of a place in the
+haab calendar (@code{calendar-next-haab-date}).
address@hidden g m p h
+Move to the previous occurrence of a place in the
+haab calendar (@code{calendar-previous-haab-date}).
address@hidden g m n c
+Move to the next occurrence of a place in the
+calendar round (@code{calendar-next-calendar-round-date}).
address@hidden g m p c
+Move to the previous occurrence of a place in the
+calendar round (@code{calendar-previous-calendar-round-date}).
address@hidden table
+
address@hidden Mayan long count
+  To understand these commands, you need to understand the Mayan calendars.
+The @dfn{long count} is a counting of days with these units:
+ 
address@hidden
+1 kin = 1 day@ @ @ 1 uinal = 20 kin@ @ @ 1 tun = 18 uinal
+1 katun = 20 tun@ @ @ 1 baktun = 20 katun
address@hidden display
+
address@hidden g m l @r{(Calendar mode)}
address@hidden calendar-goto-mayan-long-count-date
address@hidden
+Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11
+tun, 16 uinal, and 6 kin.  The Emacs calendar can handle Mayan long
+count dates as early as 7.17.18.13.1, but no earlier.  When you use the
address@hidden m l} command, type the Mayan long count date with the baktun,
+katun, tun, uinal, and kin separated by periods.
+
address@hidden calendar-previous-tzolkin-date
address@hidden calendar-next-tzolkin-date
address@hidden Mayan tzolkin calendar
+  The Mayan tzolkin calendar is a cycle of 260 days formed by a pair of
+independent cycles of 13 and 20 days.  Since this cycle repeats
+endlessly, Emacs provides commands to move backward and forward to the
+previous or next point in the cycle.  Type @kbd{g m p t} to go to the
+previous tzolkin date; Emacs asks you for a tzolkin date and moves point
+to the previous occurrence of that date.  Similarly, type @kbd{g m n t}
+to go to the next occurrence of a tzolkin date.
+
address@hidden calendar-previous-haab-date
address@hidden calendar-next-haab-date
address@hidden Mayan haab calendar
+  The Mayan haab calendar is a cycle of 365 days arranged as 18 months
+of 20 days each, followed a 5-day monthless period.  Like the tzolkin
+cycle, this cycle repeats endlessly, and there are commands to move
+backward and forward to the previous or next point in the cycle.  Type
address@hidden m p h} to go to the previous haab date; Emacs asks you for a haab
+date and moves point to the previous occurrence of that date.
+Similarly, type @kbd{g m n h} to go to the next occurrence of a haab
+date.
+
address@hidden This is omitted because it is too long for smallbook format.
address@hidden @findex calendar-previous-calendar-round-date
address@hidden calendar-next-calendar-round-date
address@hidden Mayan calendar round
+  The Maya also used the combination of the tzolkin date and the haab
+date.  This combination is a cycle of about 52 years called a
address@hidden round}.  If you type @kbd{g m p c}, Emacs asks you for
+both a haab and a tzolkin date and then moves point to the previous
+occurrence of that combination.  Use @kbd{g m n c} to move point to the
+next occurrence of a combination.  These commands signal an error if the
+haab/tzolkin date combination you have typed is impossible.
+
+  Emacs uses strict completion (@pxref{Completion}) whenever it
+asks you to type a Mayan name, so you don't have to worry about
+spelling.
+
address@hidden Diary, Calendar Customization, Mayan Calendar, Calendar/Diary
address@hidden The Diary
address@hidden diary
+
+  The Emacs diary keeps track of appointments or other events on a daily
+basis, in conjunction with the calendar.  To use the diary feature, you
+must first create a @dfn{diary file} containing a list of events and
+their dates.  Then Emacs can automatically pick out and display the
+events for today, for the immediate future, or for any specified
+date.
+
+  By default, Emacs uses @file{~/diary} as the diary file.  This is the
+same file that the @code{calendar} utility uses.  A sample
address@hidden/diary} file is:
+
address@hidden
+12/22/1988 Twentieth wedding anniversary!!
+&1/1. Happy New Year!
+10/22 Ruth's birthday.
+* 21, *: Payday
+Tuesday--weekly meeting with grad students at 10am
+         Supowit, Shen, Bitner, and Kapoor to attend.
+1/13/89 Friday the thirteenth!!
+&thu 4pm squash game with Lloyd.
+mar 16 Dad's birthday
+April 15, 1989 Income tax due.
+&* 15 time cards due.
address@hidden example
+
address@hidden
+This example uses extra spaces to align the event descriptions of most
+of the entries.  Such formatting is purely a matter of taste.
+
+  Although you probably will start by creating a diary manually, Emacs
+provides a number of commands to let you view, add, and change diary
+entries.  You can also share diary entries with other users
+(@pxref{Included Diary Files}).
+
address@hidden
+* Diary Commands::         Viewing diary entries and associated calendar dates.
+* Format of Diary File::   Entering events in your diary.
+* Date Formats::           Various ways you can specify dates.
+* Adding to Diary::        Commands to create diary entries.
+* Special Diary Entries::  Anniversaries, blocks of dates, cyclic entries, etc.
address@hidden menu
+
address@hidden Diary Commands, Format of Diary File, Diary, Diary
address@hidden Commands Displaying Diary Entries
+
+  Once you have created a @file{~/diary} file, you can use the calendar
+to view it.  You can also view today's events outside of Calendar mode.
+
address@hidden @kbd
address@hidden d
+Display all diary entries for the selected date
+(@code{view-diary-entries}).
address@hidden Button2 Diary
+Display all diary entries for the date you click on.
address@hidden s
+Display the entire diary file (@code{show-all-diary-entries}).
address@hidden m
+Mark all visible dates that have diary entries
+(@code{mark-diary-entries}).
address@hidden u
+Unmark the calendar window (@code{calendar-unmark}).
address@hidden M-x print-diary-entries
+Print hard copy of the diary display as it appears.
address@hidden M-x diary
+Display all diary entries for today's date.
address@hidden M-x diary-mail-entries
+Mail yourself email reminders about upcoming diary entries.
address@hidden table
+
address@hidden d @r{(Calendar mode)}
address@hidden view-diary-entries
+  Displaying the diary entries with @kbd{d} shows in a separate window
+the diary entries for the selected date in the calendar.  The mode line
+of the new window shows the date of the diary entries and any holidays
+that fall on that date.  If you specify a numeric argument with @kbd{d},
+it shows all the diary entries for that many successive days.  Thus,
address@hidden d} displays all the entries for the selected date and for the
+following day.
+
+  Another way to display the diary entries for a date is to click
address@hidden on the date, and then choose @kbd{Diary} from the menu
+that appears.
+
address@hidden m @r{(Calendar mode)}
address@hidden mark-diary-entries
address@hidden u @r{(Calendar mode)}
address@hidden calendar-unmark
+  To get a broader view of which days are mentioned in the diary, use
+the @kbd{m} command.  This displays the dates that have diary entries
+in a different face (or places a @samp{+} after these dates, if
+display with multiple faces is not available).  The command applies both
+to the currently visible months and to other months that subsequently
+become visible by scrolling.  To turn marking off and erase the current
+marks, type @kbd{u}, which also turns off holiday marks
+(@pxref{Holidays}).
+
address@hidden s @r{(Calendar mode)}
address@hidden show-all-diary-entries
+  To see the full diary file, rather than just some of the entries, use
+the @kbd{s} command.
+
+  Display of selected diary entries uses the selective display feature
+to hide entries that don't apply.
+
address@hidden print-diary-entries
+  The diary buffer as you see it is an illusion, so simply printing the
+buffer does not print what you see on your screen.  There is a special
+command to print hard copy of the diary buffer @emph{as it appears};
+this command is @kbd{M-x print-diary-entries}.  It sends the data
+directly to the printer.  You can customize it like @code{lpr-region}
+(@pxref{Hardcopy}).
+
address@hidden diary
+  The command @kbd{M-x diary} displays the diary entries for the current
+date, independently of the calendar display, and optionally for the next
+few days as well; the variable @code{number-of-diary-entries} specifies
+how many days to include (@pxref{Customization}).
+
+  If you put @code{(diary)} in your init file, this
+automatically displays a window with the day's diary entries, when you
+enter Emacs.  @xref{Init File}.  The mode line of the displayed window
+shows the date and any holidays that fall on that date.
+
address@hidden diary-mail-entries
address@hidden diary-mail-days
+  Many users like to receive notice of events in their diary as email.
+To send such mail to yourself, use the command @kbd{M-x
+diary-mail-entries}.  A prefix argument specifies how many days
+(starting with today) to check; otherwise, the variable
address@hidden says how many days.
+
address@hidden Format of Diary File, Date Formats, Diary Commands, Diary
address@hidden The Diary File
address@hidden diary file
+
address@hidden diary-file
+  Your @dfn{diary file} is a file that records events associated with
+particular dates.  The name of the diary file is specified by the
+variable @code{diary-file}; @file{~/diary} is the default.  The
address@hidden utility program supports a subset of the format allowed
+by the Emacs diary facilities, so you can use that utility to view the
+diary file, with reasonable results aside from the entries it cannot
+understand.
+
+  Each entry in the diary file describes one event and consists of one
+or more lines.  An entry always begins with a date specification at the
+left margin.  The rest of the entry is simply text to describe the
+event.  If the entry has more than one line, then the lines after the
+first must begin with whitespace to indicate they continue a previous
+entry.  Lines that do not begin with valid dates and do not continue a
+preceding entry are ignored.
+
+  You can inhibit the marking of certain diary entries in the calendar
+window; to do this, insert an ampersand (@samp{&}) at the beginning of
+the entry, before the date.  This has no effect on display of the entry
+in the diary window; it affects only marks on dates in the calendar
+window.  Nonmarking entries are especially useful for generic entries
+that would otherwise mark many different dates.
+
+  If the first line of a diary entry consists only of the date or day
+name with no following blanks or punctuation, then the diary window
+display doesn't include that line; only the continuation lines appear.
+For example, this entry:
+
address@hidden
+02/11/1989
+      Bill B. visits Princeton today
+      2pm Cognitive Studies Committee meeting
+      2:30-5:30 Liz at Lawrenceville
+      4:00pm Dentist appt
+      7:30pm Dinner at George's
+      8:00-10:00pm concert
address@hidden example
+
address@hidden
+appears in the diary window without the date line at the beginning.
+This style of entry looks neater when you display just a single day's
+entries, but can cause confusion if you ask for more than one day's
+entries.
+
+  You can edit the diary entries as they appear in the window, but it is
+important to remember that the buffer displayed contains the @emph{entire}
+diary file, with portions of it concealed from view.  This means, for
+instance, that the @kbd{C-f} (@code{forward-char}) command can put point
+at what appears to be the end of the line, but what is in reality the
+middle of some concealed line.  
+
+  @emph{Be careful when editing the diary entries!}  Inserting
+additional lines or adding/deleting characters in the middle of a
+visible line cannot cause problems, but editing at the end of a line may
+not do what you expect.  Deleting a line may delete other invisible
+entries that follow it.  Before editing the diary, it is best to display
+the entire file with @kbd{s} (@code{show-all-diary-entries}).
+
address@hidden Date Formats,Adding to Diary ,Format of Diary File, Diary
address@hidden Date Formats
+
+  Here are some sample diary entries, illustrating different ways of
+formatting a date.  The examples all show dates in American order
+(month, day, year), but Calendar mode supports European order (day,
+month, year) as an option.
+
address@hidden
+4/20/93  Switch-over to new tabulation system
+apr. 25  Start tabulating annual results
+4/30  Results for April are due
+*/25  Monthly cycle finishes
+Friday  Don't leave without backing up files
address@hidden example
+
+  The first entry appears only once, on April 20, 1993.  The second and
+third appear every year on the specified dates, and the fourth uses a
+wildcard (asterisk) for the month, so it appears on the 25th of every
+month.  The final entry appears every week on Friday.
+
+  You can use just numbers to express a date, as in
address@hidden@var{month}/@var{day}} or @address@hidden/@var{day}/@var{year}}.
+This must be followed by a nondigit.  In the date itself, @var{month}
+and @var{day} are numbers of one or two digits.  The optional @var{year}
+is also a number, and may be abbreviated to the last two digits; that
+is, you can use @samp{11/12/1989} or @samp{11/12/89}.
+
+  Dates can also have the form @address@hidden @var{day}} or
address@hidden@var{monthname} @var{day}, @var{year}}, where the month's name can
+be spelled in full or abbreviated to three characters (with or without a
+period).  Case is not significant.
+
+  A date may be @dfn{generic}; that is, partially unspecified.  Then the
+entry applies to all dates that match the specification.  If the date
+does not contain a year, it is generic and applies to any year.
+Alternatively, @var{month}, @var{day}, or @var{year} can be a @samp{*};
+this matches any month, day, or year, respectively.  Thus, a diary entry
address@hidden/*/*} matches any day in March of any year; so does @samp{march
+*}.
+
address@hidden european-calendar-style
address@hidden european-calendar
address@hidden american-calendar
+  If you prefer the European style of writing dates---in which the day
+comes before the month---type @kbd{M-x european-calendar} while in the
+calendar, or set the variable @code{european-calendar-style} to @code{t}
address@hidden using any calendar or diary command.  This mode interprets
+all dates in the diary in the European manner, and also uses European
+style for displaying diary dates.  (Note that there is no comma after
+the @var{monthname} in the European style.)  To go back to the (default)
+American style of writing dates, type @kbd{M-x american-calendar}.
+ 
+  You can use the name of a day of the week as a generic date which
+applies to any date falling on that day of the week.  You can abbreviate
+the day of the week to three letters (with or without a period) or spell
+it in full; case is not significant.
+
address@hidden Adding to Diary, Special Diary Entries, Date Formats, Diary
address@hidden Commands to Add to the Diary
+
+  While in the calendar, there are several commands to create diary
+entries:
+
address@hidden @kbd
address@hidden i d
+Add a diary entry for the selected date (@code{insert-diary-entry}).
address@hidden i w
+Add a diary entry for the selected day of the week 
(@code{insert-weekly-diary-entry}).
address@hidden i m
+Add a diary entry for the selected day of the month 
(@code{insert-monthly-diary-entry}).
address@hidden i y
+Add a diary entry for the selected day of the year 
(@code{insert-yearly-diary-entry}).
address@hidden table
+
address@hidden i d @r{(Calendar mode)}
address@hidden insert-diary-entry
+  You can make a diary entry for a specific date by selecting that date
+in the calendar window and typing the @kbd{i d} command.  This command
+displays the end of your diary file in another window and inserts the
+date; you can then type the rest of the diary entry.
+
address@hidden i w @r{(Calendar mode)}
address@hidden insert-weekly-diary-entry
address@hidden i m @r{(Calendar mode)}
address@hidden insert-monthly-diary-entry
address@hidden i y @r{(Calendar mode)}
address@hidden insert-yearly-diary-entry
+  If you want to make a diary entry that applies to a specific day of
+the week, select that day of the week (any occurrence will do) and type
address@hidden w}.  This inserts the day-of-week as a generic date; you can then
+type the rest of the diary entry.  You can make a monthly diary entry in
+the same fashion.  Select the day of the month, use the @kbd{i m}
+command, and type rest of the entry.  Similarly, you can insert a yearly
+diary entry with the @kbd{i y} command.
+
+  All of the above commands make marking diary entries by default.  To
+make a nonmarking diary entry, give a numeric argument to the command.
+For example, @kbd{C-u i w} makes a nonmarking weekly diary entry.
+
+  When you modify the diary file, be sure to save the file before
+exiting Emacs.
+ 
address@hidden Special Diary Entries,, Adding to Diary, Diary
address@hidden Special Diary Entries
+
+  In addition to entries based on calendar dates, the diary file can
+contain @dfn{sexp entries} for regular events such as anniversaries.
+These entries are based on Lisp expressions (sexps) that Emacs evaluates
+as it scans the diary file.  Instead of a date, a sexp entry contains
address@hidden followed by a Lisp expression which must begin and end with
+parentheses.  The Lisp expression determines which dates the entry
+applies to.
+
+  Calendar mode provides commands to insert certain commonly used
+sexp entries:
+
address@hidden @kbd
address@hidden i a
+Add an anniversary diary entry for the selected date 
+(@code{insert-anniversary-diary-entry}).
address@hidden i b
+Add a block diary entry for the current region 
+(@code{insert-block-diary-entry}).
address@hidden i c
+Add a cyclic diary entry starting at the date 
+(@code{insert-cyclic-diary-entry}).
address@hidden table
+
address@hidden i a @r{(Calendar mode)}
address@hidden insert-anniversary-diary-entry
+  If you want to make a diary entry that applies to the anniversary of a
+specific date, move point to that date and use the @kbd{i a} command.
+This displays the end of your diary file in another window and inserts
+the anniversary description; you can then type the rest of the diary
+entry. The entry looks like this:
+
address@hidden diary-anniversary
+  The effect of @kbd{i a} is to add a @code{diary-anniversary} sexp to your
+diary file.  You can also add one manually, for instance:
+
address@hidden
+%%(diary-anniversary 10 31 1948) Arthur's birthday
address@hidden example
+
address@hidden
+This entry applies to October 31 in any year after 1948; @samp{10 31
+1948} specifies the date.  (If you are using the European calendar
+style, the month and day are interchanged.)  The reason this expression
+requires a beginning year is that advanced diary functions can use it to
+calculate the number of elapsed years.
+
+  A @dfn{block} diary entry applies to a specified range of consecutive
+dates.  Here is a block diary entry that applies to all dates from June
+24, 1990 through July 10, 1990:
+
address@hidden diary-block
address@hidden
+%%(diary-block 6 24 1990 7 10 1990) Vacation
address@hidden example
+
address@hidden
+The @samp{6 24 1990} indicates the starting date and the @samp{7 10 1990}
+indicates the stopping date.  (Again, if you are using the European calendar
+style, the month and day are interchanged.)
+
address@hidden i b @r{(Calendar mode)}
address@hidden insert-block-diary-entry
+  To insert a block entry, place point and the mark on the two
+dates that begin and end the range, and type @kbd{i b}.  This command
+displays the end of your diary file in another window and inserts the
+block description; you can then type the diary entry.
+
address@hidden i c @r{(Calendar mode)}
address@hidden insert-cyclic-diary-entry
+   @dfn{Cyclic} diary entries repeat after a fixed interval of days.  To
+create one, select the starting date and use the @kbd{i c} command.  The
+command prompts for the length of interval, then inserts the entry,
+which looks like this:
+
address@hidden diary-cyclic
address@hidden
+%%(diary-cyclic 50 3 1 1990) Renew medication
address@hidden example
+
address@hidden
+This entry applies to March 1, 1990 and every 50th day following;
address@hidden 1 1990} specifies the starting date.  (If you are using the
+European calendar style, the month and day are interchanged.)
+
+  All three of these commands make marking diary entries.  To insert a
+nonmarking entry, give a numeric argument to the command.  For example,
address@hidden i a} makes a nonmarking anniversary diary entry.
+
+  Marking sexp diary entries in the calendar is @emph{extremely}
+time-consuming, since every date visible in the calendar window must be
+individually checked.  So it's a good idea to make sexp diary entries
+nonmarking (with @samp{&}) when possible.
+
+  Another sophisticated kind of sexp entry, a @dfn{floating} diary entry,
+specifies a regularly occurring event by offsets specified in days,
+weeks, and months.  It is comparable to a crontab entry interpreted by
+the @code{cron} utility.  Here is a nonmarking, floating diary entry
+that applies to the last Thursday in November:
+ 
address@hidden diary-float
address@hidden
+&%%(diary-float 11 4 -1) American Thanksgiving
address@hidden example
+
address@hidden
+The 11 specifies November (the eleventh month), the 4 specifies Thursday
+(the fourth day of the week, where Sunday is numbered zero), and the
address@hidden specifies ``last'' (1 would mean ``first'', 2 would mean
+``second'', @minus{}2 would mean ``second-to-last'', and so on).  The
+month can be a single month or a list of months.  Thus you could change
+the 11 above to @samp{'(1 2 3)} and have the entry apply to the last
+Thursday of January, February, and March.  If the month is @code{t}, the
+entry applies to all months of the address@hidden
+
+  The sexp feature of the diary allows you to specify diary entries
+based on any Emacs Lisp expression.  You can use the library of built-in
+functions or you can write your own functions.  The built-in functions
+include the ones shown in this section, plus a few others (@pxref{Sexp
+Diary Entries}).
+
+  The generality of sexps lets you specify any diary entry that you can
+describe algorithmically.  Suppose you get paid on the 21st of the month
+if it is a weekday, and to the Friday before if the 21st is on a
+weekend.  The diary entry
+
address@hidden
+&%%(let ((dayname (calendar-day-of-week date))
+         (day (car (cdr date))))
+      (or (and (= day 21) (memq dayname '(1 2 3 4 5)))
+          (and (memq day '(19 20)) (= dayname 5)))
+         ) Pay check deposited
address@hidden example
+
address@hidden
+to just those dates.  This example illustrates how the sexp can depend
+on the variable @code{date}; this variable is a list (@var{month}
address@hidden @var{year}) that gives the Gregorian date for which the diary
+entries are being found.  If the value of the sexp is @code{t}, the
+entry applies to that date.  If the sexp evaluates to @code{nil}, the
+entry does @emph{not} apply to that date.
+
+
address@hidden Calendar Customization,,Diary, Calendar/Diary
address@hidden Customizing the Calendar and Diary
+
+  There are many customizations that you can use to make the calendar and
+diary suit your personal tastes.
+
address@hidden
+* Calendar Customizing::   Defaults you can set.
+* Holiday Customizing::    Defining your own holidays.
+* Date Display Format::    Changing the format.
+* Time Display Format::    Changing the format.
+* Daylight Savings::       Changing the default.
+* Diary Customizing::      Defaults you can set.
+* Hebrew/Islamic Entries:: How to obtain them.
+* Fancy Diary Display::    Enhancing the diary display, sorting entries.
+* Included Diary Files::   Sharing a common diary file.
+* Sexp Diary Entries::     Fancy things you can do.
+* Appt Customizing::      Customizing appointment reminders.
address@hidden menu
+
address@hidden Calendar Customizing
address@hidden Customizing the Calendar
address@hidden view-diary-entries-initially
+
+  If you set the variable @code{view-diary-entries-initially} to
address@hidden, calling up the calendar automatically displays the diary
+entries for the current date as well.  The diary dates appear only if
+the current date is visible.  If you add both of the following lines to
+your init file:@refill
+
address@hidden
+(setq view-diary-entries-initially t)
+(calendar)
address@hidden example
+
address@hidden
+this displays both the calendar and diary windows whenever you start
+Emacs.  @xref{Init File}.
+
address@hidden view-calendar-holidays-initially
+  Similarly, if you set the variable
address@hidden to @code{t}, entering the
+calendar automatically displays a list of holidays for the current
+three-month period.  The holiday list appears in a separate
+window.
+ 
address@hidden mark-diary-entries-in-calendar
+  You can set the variable @code{mark-diary-entries-in-calendar} to
address@hidden in order to mark any dates with diary entries.  This takes
+effect whenever the calendar window contents are recomputed.  There are
+two ways of marking these dates: by changing the face (@pxref{Faces}),
+if the display supports that, or by placing a plus sign (@samp{+})
+beside the date otherwise.
+
address@hidden mark-holidays-in-calendar
+  Similarly, setting the variable @code{mark-holidays-in-calendar} to
address@hidden marks holiday dates, either with a change of face or with an
+asterisk (@samp{*}).
+
address@hidden calendar-holiday-marker
address@hidden diary-entry-marker
+  The variable @code{calendar-holiday-marker} specifies how to mark a
+date as being a holiday.  Its value may be a character to insert next to
+the date, or a face name to use for displaying the date.  Likewise, the
+variable @code{diary-entry-marker} specifies how to mark a date that has
+diary entries.  The calendar creates faces named @code{holiday-face} and
address@hidden for these purposes; those symbols are the default
+values of these variables, when Emacs supports multiple faces on your
+terminal.
+
address@hidden calendar-load-hook
+  The variable @code{calendar-load-hook} is a normal hook run when the
+calendar package is first loaded (before actually starting to display
+the calendar).
+
address@hidden initial-calendar-window-hook
+  Starting the calendar runs the normal hook
address@hidden  Recomputation of the calendar
+display does not run this hook.  But if you leave the calendar with the
address@hidden command and reenter it, the hook runs address@hidden
+
address@hidden today-visible-calendar-hook
+  The variable @code{today-visible-calendar-hook} is a normal hook run
+after the calendar buffer has been prepared with the calendar when the
+current date is visible in the window.  One use of this hook is to
+replace today's date with asterisks; to do that, use the hook function
address@hidden
+
address@hidden calendar-star-date
address@hidden
+(add-hook 'today-visible-calendar-hook 'calendar-star-date)
address@hidden example
+
address@hidden
+Another standard hook function marks the current date, either by
+changing its face or by adding an asterisk.  Here's how to use it:
+
address@hidden calendar-mark-today
address@hidden
+(add-hook 'today-visible-calendar-hook 'calendar-mark-today)
address@hidden example
+
address@hidden
address@hidden calendar-today-marker
+The variable @code{calendar-today-marker} specifies how to mark today's
+date.  Its value should be a character to insert next to the date or a
+face name to use for displaying the date.  A face named
address@hidden is provided for this purpose; that symbol is
+the default for this variable when Emacs supports multiple faces on your
+terminal.
+
address@hidden today-invisible-calendar-hook
address@hidden
+  A similar normal hook, @code{today-invisible-calendar-hook} is run if
+the current date is @emph{not} visible in the window.
+
address@hidden Holiday Customizing
address@hidden Customizing the Holidays
+
address@hidden calendar-holidays
address@hidden christian-holidays
address@hidden hebrew-holidays
address@hidden islamic-holidays
+  Emacs knows about holidays defined by entries on one of several lists.
+You can customize these lists of holidays to your own needs, adding or
+deleting holidays.  The lists of holidays that Emacs uses are for
+general holidays (@code{general-holidays}), local holidays
+(@code{local-holidays}), Christian holidays (@code{christian-holidays}),
+Hebrew (Jewish) holidays (@code{hebrew-holidays}), Islamic (Moslem)
+holidays (@code{islamic-holidays}), and other holidays
+(@code{other-holidays}).
+
address@hidden general-holidays
+  The general holidays are, by default, holidays common throughout the
+United States.  To eliminate these holidays, set @code{general-holidays}
+to @code{nil}.
+
address@hidden local-holidays
+  There are no default local holidays (but sites may supply some).  You
+can set the variable @code{local-holidays} to any list of holidays, as
+described below.
+
address@hidden all-christian-calendar-holidays
address@hidden all-hebrew-calendar-holidays
address@hidden all-islamic-calendar-holidays
+  By default, Emacs does not include all the holidays of the religions
+that it knows, only those commonly found in secular calendars.  For a
+more extensive collection of religious holidays, you can set any (or
+all) of the variables @code{all-christian-calendar-holidays},
address@hidden, or
address@hidden to @code{t}.  If you want to
+eliminate the religious holidays, set any or all of the corresponding
+variables @code{christian-holidays}, @code{hebrew-holidays}, and
address@hidden to @address@hidden
+
address@hidden other-holidays
+  You can set the variable @code{other-holidays} to any list of
+holidays.  This list, normally empty, is intended for individual use.
+
address@hidden holiday forms
+  Each of the lists (@code{general-holidays}, @code{local-holidays},
address@hidden, @code{hebrew-holidays},
address@hidden, and @code{other-holidays}) is a list of
address@hidden forms}, each holiday form describing a holiday (or
+sometimes a list of holidays).
+
+  Here is a table of the possible kinds of holiday form.  Day numbers
+and month numbers count starting from 1, but ``dayname'' numbers
+count Sunday as 0.  The element @var{string} is always the
+name of the holiday, as a string.
+
address@hidden @code
address@hidden (holiday-fixed @var{month} @var{day} @var{string})
+A fixed date on the Gregorian calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-float @var{month} @var{dayname} @var{k} @var{string})
+The @var{k}th @var{dayname} in @var{month} on the Gregorian calendar
+(@var{dayname}=0 for Sunday, and so on); negative @var{k} means count back
+from the end of the month.  @var{string} is the name of the holiday.
+
address@hidden (holiday-hebrew @var{month} @var{day} @var{string})
+A fixed date on the Hebrew calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-islamic @var{month} @var{day} @var{string})
+A fixed date on the Islamic calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-julian @var{month} @var{day} @var{string})
+A fixed date on the Julian calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-sexp @var{sexp} @var{string})
+A date calculated by the Lisp expression @var{sexp}.  The expression
+should use the variable @code{year} to compute and return the date of a
+holiday, or @code{nil} if the holiday doesn't happen this year.  The
+value of @var{sexp} must represent the date as a list of the form
address@hidden(@var{month} @var{day} @var{year})}.  @var{string} is the name of
+the holiday.
+
address@hidden (if @var{condition} @var{holiday-form} &optional 
@var{holiday-form})
+A holiday that happens only if @var{condition} is true.
+
address@hidden (@var{function} @address@hidden@r{]})
+A list of dates calculated by the function @var{function}, called with
+arguments @var{args}.
address@hidden table
+
+  For example, suppose you want to add Bastille Day, celebrated in
+France on July 14.  You can do this by adding the following line
+to your init file:
+
address@hidden
+(setq other-holidays '((holiday-fixed 7 14 "Bastille Day")))
address@hidden smallexample
+
address@hidden File}.
+
address@hidden
+The holiday form @code{(holiday-fixed 7 14 "Bastille Day")} specifies the
+fourteenth day of the seventh month (July).
+
+  Many holidays occur on a specific day of the week, at a specific time
+of month.  Here is a holiday form describing Hurricane Supplication Day,
+celebrated in the Virgin Islands on the fourth Monday in August:
+
address@hidden
+(holiday-float 8 1 4 "Hurricane Supplication Day")
address@hidden smallexample
+
address@hidden
+Here the 8 specifies August, the 1 specifies Monday (Sunday is 0,
+Tuesday is 2, and so on), and the 4 specifies the fourth occurrence in
+the month (1 specifies the first occurrence, 2 the second occurrence,
address@hidden the last occurrence, @minus{}2 the second-to-last occurrence, and
+so on).
+
+  You can specify holidays that occur on fixed days of the Hebrew,
+Islamic, and Julian calendars too.  For example,
+
address@hidden
+(setq other-holidays
+      '((holiday-hebrew 10 2 "Last day of Hanukkah")
+        (holiday-islamic 3 12 "Mohammed's Birthday")
+        (holiday-julian 4 2 "Jefferson's Birthday")))
address@hidden smallexample
+
address@hidden
+adds the last day of Hanukkah (since the Hebrew months are numbered with
+1 starting from Nisan), the Islamic feast celebrating Mohammed's
+birthday (since the Islamic months are numbered from 1 starting with
+Muharram), and Thomas Jefferson's birthday, which is 2 April 1743 on the
+Julian calendar.
+
+  To include a holiday conditionally, use either Emacs Lisp's @code{if} or the
address@hidden form.  For example, American presidential elections
+occur on the first Tuesday after the first Monday in November of years
+divisible by 4:
+
address@hidden
+(holiday-sexp (if (= 0 (% year 4))
+                   (calendar-gregorian-from-absolute
+                 (1+ (calendar-dayname-on-or-before
+                       1 (+ 6 (calendar-absolute-from-gregorian
+                                (list 11 1 year))))))
+              "US Presidential Election"))
address@hidden smallexample
+
address@hidden
+or
+
address@hidden
+(if (= 0 (% displayed-year 4))
+    (fixed 11
+           (extract-calendar-day
+             (calendar-gregorian-from-absolute
+               (1+ (calendar-dayname-on-or-before
+                     1 (+ 6 (calendar-absolute-from-gregorian
+                              (list 11 1 displayed-year)))))))
+           "US Presidential Election"))
address@hidden smallexample
+
+  Some holidays just don't fit into any of these forms because special
+calculations are involved in their determination.  In such cases you
+must write a Lisp function to do the calculation.  To include eclipses,
+for example, add @code{(eclipses)} to @code{other-holidays}
+and write an Emacs Lisp function @code{eclipses} that returns a
+(possibly empty) list of the relevant Gregorian dates among the range
+visible in the calendar window, with descriptive strings, like this:
+
address@hidden
+(((6 27 1991) "Lunar Eclipse") ((7 11 1991) "Solar Eclipse") ... )
address@hidden smallexample
+
address@hidden Date Display Format
address@hidden Date Display Format
address@hidden calendar-date-display-form
+
+  You can customize the manner of displaying dates in the diary, in mode
+lines, and in messages by setting @code{calendar-date-display-form}.
+This variable holds a list of expressions that can involve the variables
address@hidden, @code{day}, and @code{year}, which are all numbers in
+string form, and @code{monthname} and @code{dayname}, which are both
+alphabetic strings.  In the American style, the default value of this
+list is as follows:
+
address@hidden
+((if dayname (concat dayname ", ")) monthname " " day ", " year)
address@hidden smallexample
+
address@hidden
+while in the European style this value is the default:
+
address@hidden
+((if dayname (concat dayname ", ")) day " " monthname " " year)
address@hidden smallexample
+
address@hidden
+The ISO standard date representation is this:
+
address@hidden
+(year "-" month "-" day)
address@hidden smallexample
+
address@hidden
+This specifies a typical American format:
+
address@hidden
+(month "/" day "/" (substring year -2))
address@hidden smallexample
+
address@hidden Time Display Format
address@hidden Time Display Format
address@hidden calendar-time-display-form
+
+  The calendar and diary by default display times of day in the
+conventional American style with the hours from 1 through 12, minutes,
+and either @samp{am} or @samp{pm}.  If you prefer the European style,
+also known in the US as military, in which the hours go from 00 to 23,
+you can alter the variable @code{calendar-time-display-form}.  This
+variable is a list of expressions that can involve the variables
address@hidden, @code{24-hours}, and @code{minutes}, which are all
+numbers in string form, and @code{am-pm} and @code{time-zone}, which are
+both alphabetic strings.  The default value of
address@hidden is as follows:
+
address@hidden
+(12-hours ":" minutes am-pm
+          (if time-zone " (") time-zone (if time-zone ")"))
address@hidden smallexample
+
address@hidden
+Here is a value that provides European style times:
+
address@hidden
+(24-hours ":" minutes
+          (if time-zone " (") time-zone (if time-zone ")"))
address@hidden smallexample
+
address@hidden
+gives military-style times like @samp{21:07 (UT)} if time zone names are
+defined, and times like @samp{21:07} if they are not.
+
address@hidden Daylight Savings
address@hidden Daylight Savings Time
address@hidden daylight savings time
+
+  Emacs understands the difference between standard time and daylight
+savings time---the times given for sunrise, sunset, solstices,
+equinoxes, and the phases of the moon take that into account.  The rules
+for daylight savings time vary from place to place and have also varied
+historically from year to year.  To do the job properly, Emacs needs to
+know which rules to use.
+
+  Some operating systems keep track of the rules that apply to the place
+where you are; on these systems, Emacs gets the information it needs
+from the system automatically.  If some or all of this information is
+missing, Emacs fills in the gaps with the rules currently used in
+Cambridge, Massachusetts.  If the resulting rules are not what you want,
+you can tell Emacs the rules to use by setting certain variables.
+
address@hidden calendar-daylight-savings-starts
address@hidden calendar-daylight-savings-ends
+  If the default choice of rules is not appropriate for your location,
+you can tell Emacs the rules to use by setting the variables
address@hidden and
address@hidden  Their values should be Lisp
+expressions that refer to the variable @code{year}, and evaluate to the
+Gregorian date on which daylight savings time starts or (respectively)
+ends, in the form of a list @code{(@var{month} @var{day} @var{year})}.
+The values should be @code{nil} if your area does not use daylight
+savings time.
+
+  Emacs uses these expressions to determine the starting date of
+daylight savings time for the holiday list  and for correcting times of
+day in the solar and lunar calculations.
+ 
+  The values for Cambridge, Massachusetts are as follows:
+
address@hidden
address@hidden
+(calendar-nth-named-day 1 0 4 year)
+(calendar-nth-named-day -1 0 10 year)
address@hidden group
address@hidden example
+
address@hidden
+That is, the first 0th day (Sunday) of the fourth month (April) in
+the year specified by @code{year}, and the last Sunday of the tenth month
+(October) of that year.  If daylight savings time were
+changed to start on October 1, you would set
address@hidden to this:
+
address@hidden
+(list 10 1 year)
address@hidden example
+
+  For a more complex example, suppose daylight savings time begins on
+the first of Nisan on the Hebrew calendar.  You should set
address@hidden to this value:
+
address@hidden
+(calendar-gregorian-from-absolute
+  (calendar-absolute-from-hebrew
+    (list 1 1 (+ year 3760))))
address@hidden example
+
address@hidden
+because Nisan is the first month in the Hebrew calendar and the Hebrew
+year differs from the Gregorian year by 3760 at Nisan.
+
+  If there is no daylight savings time at your location, or if you want
+all times in standard time, set @code{calendar-daylight-savings-starts}
+and @code{calendar-daylight-savings-ends} to @code{nil}.
+
address@hidden calendar-daylight-time-offset
+  The variable @code{calendar-daylight-time-offset} specifies the
+difference between daylight savings time and standard time, measured in
+minutes.  The value for Cambridge, Massachusetts is 60.
+
address@hidden @vindex calendar-daylight-savings-starts-time  too long!
address@hidden calendar-daylight-savings-ends-time
+  The two variables @code{calendar-daylight-savings-starts-time} and
address@hidden specify the number of minutes
+after midnight local time when the transition to and from daylight
+savings time should occur.  For Cambridge, Massachusetts both variables'
+values are 120.
+ 
address@hidden Diary Customizing
address@hidden Customizing the Diary
+
address@hidden holidays-in-diary-buffer
+  Ordinarily, the mode line of the diary buffer window indicates any
+holidays that fall on the date of the diary entries.  The process of
+checking for holidays can take several seconds, so including holiday
+information delays the display of the diary buffer noticeably.  If you'd
+prefer to have a faster display of the diary buffer but without the
+holiday information, set the variable @code{holidays-in-diary-buffer} to
address@hidden@refill
+
address@hidden number-of-diary-entries
+  The variable @code{number-of-diary-entries} controls the number of
+days of diary entries to be displayed at one time.  It affects the
+initial display when @code{view-diary-entries-initially} is @code{t}, as
+well as the command @kbd{M-x diary}.  For example, the default value is
+1, which says to display only the current day's diary entries.  If the
+value is 2, both the current day's and the next day's entries are
+displayed.  The value can also be a vector of seven elements: for
+example, if the value is @code{[0 2 2 2 2 4 1]} then no diary entries
+appear on Sunday, the current date's and the next day's diary entries
+appear Monday through Thursday, Friday through Monday's entries appear
+on Friday, while on Saturday only that day's entries appear.
+
address@hidden print-diary-entries-hook
address@hidden print-diary-entries
+  The variable @code{print-diary-entries-hook} is a normal hook run
+after preparation of a temporary buffer containing just the diary
+entries currently visible in the diary buffer.  (The other, irrelevant
+diary entries are really absent from the temporary buffer; in the diary
+buffer, they are merely hidden.)  The default value of this hook does
+the printing with the command @code{lpr-buffer}.  If you want to use a
+different command to do the printing, just change the value of this
+hook.  Other uses might include, for example, rearranging the lines into
+order by day and time.
+
address@hidden diary-date-forms
+  You can customize the form of dates in your diary file, if neither the
+standard American nor European styles suits your needs, by setting the
+variable @code{diary-date-forms}.  This variable is a list of patterns
+for recognizing a date.  Each date pattern is a list whose elements may
+be regular expressions (@pxref{Regexps}) or the symbols
address@hidden, @code{day}, @code{year}, @code{monthname}, and
address@hidden  All these elements serve as patterns that match certain
+kinds of text in the diary file.  In order for the date pattern, as a
+whole, to match, all of its elements must match consecutively.
+
+  A regular expression in a date pattern matches in its usual fashion,
+using the standard syntax table altered so that @samp{*} is a word
+constituent.
+
+  The symbols @code{month}, @code{day}, @code{year}, @code{monthname},
+and @code{dayname} match the month number, day number, year number,
+month name, and day name of the date being considered.  The symbols that
+match numbers allow leading zeros; those that match names allow
+three-letter abbreviations and capitalization.  All the symbols can
+match @samp{*}; since @samp{*} in a diary entry means ``any day'', ``any
+month'', and so on, it should match regardless of the date being
+considered.
+
+  The default value of @code{diary-date-forms} in the American style is
+this:
+
address@hidden
+((month "/" day "[^/0-9]")
+ (month "/" day "/" year "[^0-9]")
+ (monthname " *" day "[^,0-9]")
+ (monthname " *" day ", *" year "[^0-9]")
+ (dayname "\\W"))
address@hidden example
+
address@hidden
+Emacs matches of the diary entries with the date forms is done with the
+standard syntax table from Fundamental mode
+(@pxref{Syntax Tables,,,lispref,XEmacs Lisp Reference Manual}),
+but with the @samp{*} changed so that it is a word address@hidden
+
+  The date patterns in the list must be @emph{mutually exclusive} and
+must not match any portion of the diary entry itself, just the date and
+one character of whitespace.  If, to be mutually exclusive, the pattern
+must match a portion of the diary entry text---beyond the whitespace
+that ends the date---then the first element of the date pattern
address@hidden be @code{backup}.  This causes the date recognizer to back
+up to the beginning of the current word of the diary entry, after
+finishing the match.  Even if you use @code{backup}, the date pattern
+must absolutely not match more than a portion of the first word of the
+diary entry.  The default value of @code{diary-date-forms} in the
+European style is this list:
+
address@hidden
+((day "/" month "[^/0-9]")
+ (day "/" month "/" year "[^0-9]")
+ (backup day " *" monthname "\\W+\\<[^*0-9]")
+ (day " *" monthname " *" year "[^0-9]")
+ (dayname "\\W"))
address@hidden example
+
address@hidden
+Notice the use of @code{backup} in the third pattern, because it needs
+to match part of a word beyond the date itself to distinguish it from
+the fourth pattern.
+ 
address@hidden Hebrew/Islamic Entries
address@hidden Hebrew- and Islamic-Date Diary Entries
+
+  Your diary file can have entries based on Hebrew or Islamic dates, as
+well as entries based on the world-standard Gregorian calendar.
+However, because recognition of such entries is time-consuming and most
+people don't use them, you must explicitly enable their use.  If you
+want the diary to recognize Hebrew-date diary entries, for example, 
+you must do this:
+ 
address@hidden nongregorian-diary-listing-hook
address@hidden nongregorian-diary-marking-hook
address@hidden list-hebrew-diary-entries
address@hidden mark-hebrew-diary-entries
address@hidden
+(add-hook 'nongregorian-diary-listing-hook 'list-hebrew-diary-entries)
+(add-hook 'nongregorian-diary-marking-hook 'mark-hebrew-diary-entries)
address@hidden smallexample
+
address@hidden
+If you want Islamic-date entries, do this:
+
address@hidden list-islamic-diary-entries
address@hidden mark-islamic-diary-entries
address@hidden
+(add-hook 'nongregorian-diary-listing-hook 'list-islamic-diary-entries)
+(add-hook 'nongregorian-diary-marking-hook 'mark-islamic-diary-entries)
address@hidden smallexample
+
+  Hebrew- and Islamic-date diary entries have the same formats as
+Gregorian-date diary entries, except that @samp{H} precedes a Hebrew
+date and @samp{I} precedes an Islamic date.  Moreover, because the
+Hebrew and Islamic month names are not uniquely specified by the first
+three letters, you may not abbreviate them.  For example, a diary entry
+for the Hebrew date Heshvan 25 could look like this:
+
address@hidden
+HHeshvan 25 Happy Hebrew birthday!
address@hidden smallexample
+
address@hidden
+and would appear in the diary for any date that corresponds to Heshvan 25
+on the Hebrew calendar.  And here is  Islamic-date diary entry  that matches
+Dhu al-Qada 25:
+
address@hidden
+IDhu al-Qada 25 Happy Islamic birthday!
address@hidden smallexample
+
address@hidden
+and would appear in the diary for any date that corresponds to Dhu al-Qada 25
+on the Islamic calendar.
+
+  As with Gregorian-date diary entries, Hebrew- and Islamic-date entries
+are nonmarking if they are preceded with an ampersand (@samp{&}).
+
+  Here is a table of commands used in the calendar to create diary entries
+that match the selected date and other dates that are similar in the Hebrew
+or Islamic calendar:
+ 
address@hidden @kbd
address@hidden i h d
+Add a diary entry for the Hebrew date corresponding to the selected date
+(@code{insert-hebrew-diary-entry}).
address@hidden i h m
+Add a diary entry for the day of the Hebrew month corresponding to the
+selected date (@code{insert-monthly-hebrew-diary-entry}).  This diary
+entry matches any date that has the same Hebrew day-within-month as the
+selected date.
address@hidden i h y
+Add a diary entry for the day of the Hebrew year corresponding to the
+selected date (@code{insert-yearly-hebrew-diary-entry}).  This diary 
+entry matches any date which has the same Hebrew month and day-within-month
+as the selected date.
address@hidden i i d
+Add a diary entry for the Islamic date corresponding to the selected date
+(@code{insert-islamic-diary-entry}).
address@hidden i i m
+Add a diary entry for the day of the Islamic month corresponding to the
+selected date (@code{insert-monthly-islamic-diary-entry}).
address@hidden i i y
+Add a diary entry for the day of the Islamic year corresponding to the
+selected date (@code{insert-yearly-islamic-diary-entry}).
address@hidden table
+
address@hidden insert-hebrew-diary-entry
address@hidden insert-monthly-hebrew-diary-entry
address@hidden insert-yearly-hebrew-diary-entry
address@hidden insert-islamic-diary-entry
address@hidden insert-monthly-islamic-diary-entry
address@hidden insert-yearly-islamic-diary-entry
+  These commands work much like the corresponding commands for ordinary
+diary entries: they apply to the date that point is on in the calendar
+window, and what they do is insert just the date portion of a diary entry
+at the end of your diary file.  You must then insert the rest of the 
+diary entry.
+ 
address@hidden Fancy Diary Display
address@hidden Fancy Diary Display
address@hidden diary-display-hook
address@hidden simple-diary-display
+
+  Diary display works by preparing the diary buffer and then running the
+hook @code{diary-display-hook}.  The default value of this hook
+(@code{simple-diary-display}) hides the irrelevant diary entries and
+then displays the buffer.  However, if you specify the hook as follows,
+ 
address@hidden diary buffer
address@hidden fancy-diary-display
address@hidden
+(add-hook 'diary-display-hook 'fancy-diary-display)
address@hidden example
+
address@hidden
+this enables fancy diary display.  It displays diary entries and
+holidays by copying them into a special buffer that exists only for the
+sake of display.  Copying to a separate buffer provides an opportunity
+to change the displayed text to make it prettier---for example, to sort
+the entries by the dates they apply to.
+
+  As with simple diary display, you can print a hard copy of the buffer
+with @code{print-diary-entries}.  To print a hard copy of a day-by-day
+diary for a week by positioning point on Sunday of that week, type
address@hidden d} and then do @kbd{M-x print-diary-entries}.  As usual, the
+inclusion of the holidays slows down the display slightly; you can speed
+things up by setting the variable @code{holidays-in-diary-buffer} to
address@hidden
+
address@hidden diary-list-include-blanks
+  Ordinarily, the fancy diary buffer does not show days for which there are
+no diary entries, even if that day is a holiday.  If you want such days to be
+shown in the fancy diary buffer, set the variable
address@hidden to @address@hidden
+
address@hidden sorting diary entries
+  If you use the fancy diary display, you can use the normal hook
address@hidden to sort each day's diary entries by their
+time of day.  Add this line to your init file:
+
address@hidden sort-diary-entries
address@hidden
+(add-hook 'list-diary-entries-hook 'sort-diary-entries t)
address@hidden example
+
address@hidden File}.
+
address@hidden
+For each day, this sorts diary entries that begin with a recognizable
+time of day according to their times.  Diary entries without times come
+first within each day.
+
address@hidden Included Diary Files
address@hidden Included Diary Files
+
+  Fancy diary display also has the ability to process included diary
+files.  This permits a group of people to share a diary file for events
+that apply to all of them.  Lines in the diary file of this form:
+ 
address@hidden
+#include "@var{filename}"
address@hidden smallexample
+
address@hidden
+includes the diary entries from the file @var{filename} in the fancy
+diary buffer.  The include mechanism is recursive, so that included files
+can include other files, and so on; you must be careful not to have a
+cycle of inclusions, of course.  Here is how to enable the include
+facility:
+
address@hidden list-diary-entries-hook
address@hidden mark-diary-entries-hook
address@hidden include-other-diary-files
address@hidden mark-included-diary-files
address@hidden
+(add-hook 'list-diary-entries-hook 'include-other-diary-files)
+(add-hook 'mark-diary-entries-hook 'mark-included-diary-files)
address@hidden smallexample
+
+The include mechanism works only with the fancy diary display, because
+ordinary diary display shows the entries directly from your diary file.
+
address@hidden Sexp Diary Entries
address@hidden Sexp Entries and the Fancy Diary Display
address@hidden sexp diary entries
+
+  Sexp diary entries allow you to do more than just have complicated
+conditions under which a diary entry applies.  If you use the fancy
+diary display, sexp entries can generate the text of the entry depending
+on the date itself.  For example, an anniversary diary entry can insert
+the number of years since the anniversary date into the text of the
+diary entry.  Thus the @samp{%d} in this dairy entry:
+
address@hidden diary-anniversary
address@hidden
+%%(diary-anniversary 10 31 1948) Arthur's birthday (%d years old)
address@hidden smallexample
+
address@hidden
+gets replaced by the age, so on October 31, 1990 the entry appears in
+the fancy diary buffer like this:
+
address@hidden
+Arthur's birthday (42 years old)
address@hidden smallexample
+
address@hidden
+If the diary file instead contains this entry:
+
address@hidden
+%%(diary-anniversary 10 31 1948) Arthur's %d%s birthday
address@hidden smallexample
+
address@hidden
+the entry in the fancy diary buffer for October 31, 1990 appears like this:
+
address@hidden
+Arthur's 42nd birthday
address@hidden smallexample
+
+  Similarly, cyclic diary entries can interpolate the number of repetitions
+that have occurred:
+
address@hidden diary-cyclic
address@hidden
+%%(diary-cyclic 50 1 1 1990) Renew medication (%d%s time)
address@hidden smallexample
+
address@hidden
+looks like this:
+
address@hidden
+Renew medication (5th time)
address@hidden smallexample
+
address@hidden
+in the fancy diary display on September 8, 1990.
+
+  The generality of sexp diary entries lets you specify any diary entry
+that you can describe algorithmically.  A sexp diary entry contains an
+expression that computes whether the entry applies to any given date.
+If its value is address@hidden, the entry applies to that date;
+otherwise, it does not.  The expression can use the variable  @code{date}
+to find the date being considered; its value is a list (@var{month}
address@hidden @var{year}) that refers to the Gregorian calendar.
+
+  Suppose you get paid on the 21st of the month if it is a weekday, and
+on the Friday before if the 21st is on a weekend.  Here is how to write
+a sexp diary entry that matches those dates:
+
address@hidden
+&%%(let ((dayname (calendar-day-of-week date))
+         (day (car (cdr date))))
+      (or (and (= day 21) (memq dayname '(1 2 3 4 5)))
+          (and (memq day '(19 20)) (= dayname 5)))
+         ) Pay check deposited
address@hidden smallexample
+
address@hidden
+applies to just those dates.  This example illustrates how the sexp can
+depend on the variable @code{date}; this variable is a list (@var{month}
address@hidden @var{year}) that gives the Gregorian date for which the diary
+entries are being found.  If the value of the expression is @code{t},
+the entry applies to that date.  If the expression evaluates to
address@hidden, the entry does @emph{not} apply to that date.
+
+  The following sexp diary entries take advantage of the ability (in the fancy
+diary display) to concoct diary entries whose text varies based on the date:
+
address@hidden diary-sunrise-sunset
address@hidden diary-phases-of-moon
address@hidden diary-day-of-year
address@hidden diary-iso-date
address@hidden diary-julian-date
address@hidden diary-astro-day-number
address@hidden diary-hebrew-date
address@hidden diary-islamic-date
address@hidden diary-french-date
address@hidden diary-mayan-date
address@hidden @code
address@hidden %%(diary-sunrise-sunset)
+Make a diary entry for the local times of today's sunrise and sunset.
address@hidden %%(diary-phases-of-moon)
+Make a diary entry for the phases (quarters) of the moon.
address@hidden %%(diary-day-of-year)
+Make a diary entry with today's day number in the current year and the number
+of days remaining in the current year.
address@hidden %%(diary-iso-date)
+Make a diary entry with today's equivalent ISO commercial date.
address@hidden %%(diary-julian-date)
+Make a diary entry with today's equivalent date on the Julian calendar.
address@hidden %%(diary-astro-day-number)
+Make a diary entry with today's equivalent astronomical (Julian) day number.
address@hidden %%(diary-hebrew-date)
+Make a diary entry with today's equivalent date on the Hebrew calendar.
address@hidden %%(diary-islamic-date)
+Make a diary entry with today's equivalent date on the Islamic calendar.
address@hidden %%(diary-french-date)
+Make a diary entry with today's equivalent date on the French Revolutionary
+calendar.
address@hidden %%(diary-mayan-date)
+Make a diary entry with today's equivalent date on the Mayan calendar.
address@hidden table
+
address@hidden
+Thus including the diary entry
+
address@hidden
+&%%(diary-hebrew-date)
address@hidden smallexample
+
address@hidden
+causes every day's diary display to contain the equivalent date on the
+Hebrew calendar, if you are using the fancy diary display.  (With simple
+diary display, the line @samp{&%%(diary-hebrew-date)} appears in the
+diary for any date, but does nothing particularly useful.)
+
+  These functions can be used to construct sexp diary entries based on
+the Hebrew calendar in certain standard ways:
+ 
address@hidden rosh hodesh
address@hidden diary-rosh-hodesh
address@hidden parasha, weekly
address@hidden diary-parasha
address@hidden candle lighting times
address@hidden diary-sabbath-candles
address@hidden omer count
address@hidden diary-omer
address@hidden yahrzeits
address@hidden diary-yahrzeit
address@hidden @code
address@hidden %%(diary-rosh-hodesh)
+Make a diary entry that tells the occurrence and ritual announcement of each
+new Hebrew month.
address@hidden %%(diary-parasha)
+Make a Saturday diary entry that tells the weekly synagogue scripture reading.
address@hidden %%(diary-sabbath-candles)
+Make a Friday diary entry that tells the @emph{local time} of Sabbath
+candle lighting.
address@hidden %%(diary-omer)
+Make a diary entry that gives the omer count, when appropriate.
address@hidden %%(diary-yahrzeit @var{month} @var{day} @var{year}) @var{name}
+Make a diary entry marking the anniversary of a date of death.  The date
+is the @emph{Gregorian} (civil) date of death.  The diary entry appears
+on the proper Hebrew calendar anniversary and on the day before.  (In
+the European style, the order of the parameters is changed to @var{day},
address@hidden, @var{year}.)
address@hidden table
+
address@hidden Appt Customizing
address@hidden Customizing Appointment Reminders
+
+  You can specify exactly how Emacs reminds you of an appointment, and
+how far in advance it begins doing so, by setting these variables:
+
address@hidden appt-message-warning-time
address@hidden appt-audible
address@hidden appt-visible
address@hidden appt-display-mode-line
address@hidden appt-msg-window
address@hidden appt-display-duration
address@hidden @code
address@hidden appt-message-warning-time
+The time in minutes before an appointment that the reminder begins.  The
+default is 10 minutes.
address@hidden appt-audible
+If this is @code{t} (the default), Emacs rings the terminal bell for
+appointment reminders.
address@hidden appt-visible
+If this is @code{t} (the default), Emacs displays the appointment
+message in echo area.
address@hidden appt-display-mode-line
+If this is @code{t} (the default), Emacs displays the number of minutes
+to the appointment on the mode line.
address@hidden appt-msg-window
+If this is @code{t} (the default), Emacs displays the appointment
+message in another window.
address@hidden appt-display-duration
+The number of seconds an appointment message is displayed.  The default
+is 5 seconds.
address@hidden table
+
+
address@hidden Sorting, Shell, Calendar/Diary, Top
address@hidden Sorting Text
address@hidden sorting
+
+  XEmacs provides several commands for sorting text in a buffer.  All
+operate on the contents of the region (the text between point and the
+mark).  They divide the text of the region into many @dfn{sort records},
+identify a @dfn{sort key} for each record, and then reorder the records
+using the order determined by the sort keys.  The records are ordered so
+that their keys are in alphabetical order, or, for numerical sorting, in
+numerical order.  In alphabetical sorting, all upper-case letters `A'
+through `Z' come before lower-case `a', in accordance with the ASCII
+character sequence.
+
+  The sort commands differ in how they divide the text into sort
+records and in which part of each record they use as the sort key.  Most of
+the commands make each line a separate sort record, but some commands use
+paragraphs or pages as sort records.  Most of the sort commands use each
+entire sort record as its own sort key, but some use only a portion of the
+record as the sort key.
+
address@hidden sort-lines
address@hidden sort-paragraphs
address@hidden sort-pages
address@hidden sort-fields
address@hidden sort-numeric-fields
address@hidden @kbd
address@hidden M-x sort-lines
+Divide the region into lines and sort by comparing the entire
+text of a line.  A prefix argument means sort in descending order.
+
address@hidden M-x sort-paragraphs
+Divide the region into paragraphs and sort by comparing the entire
+text of a paragraph (except for leading blank lines).  A prefix
+argument means sort in descending order.
+
address@hidden M-x sort-pages
+Divide the region into pages and sort by comparing the entire
+text of a page (except for leading blank lines).  A prefix
+argument means sort in descending order.
+
address@hidden M-x sort-fields
+Divide the region into lines and sort by comparing the contents of
+one field in each line.  Fields are defined as separated by
+whitespace, so the first run of consecutive non-whitespace characters
+in a line constitutes field 1, the second such run constitutes field
+2, etc.
+
+You specify which field to sort by with a numeric argument: 1 to sort
+by field 1, etc.  A negative argument means sort in descending
+order.  Thus, minus 2 means sort by field 2 in reverse-alphabetical
+order.
+
address@hidden M-x sort-numeric-fields
+Like @kbd{M-x sort-fields}, except the specified field is converted
+to a number for each line and the numbers are compared.  @samp{10}
+comes before @samp{2} when considered as text, but after it when
+considered as a number.
+
address@hidden M-x sort-columns
+Like @kbd{M-x sort-fields}, except that the text within each line
+used for comparison comes from a fixed range of columns.  An explanation
+is given below.
address@hidden table
+
+For example, if the buffer contains:
+
address@hidden
+On systems where clash detection (locking of files being edited) is
+implemented, XEmacs also checks the first time you modify a buffer
+whether the file has changed on disk since it was last visited or
+saved.  If it has, you are asked to confirm that you want to change
+the buffer.
address@hidden smallexample
+
address@hidden
+then if you apply @kbd{M-x sort-lines} to the entire buffer you get:
+
address@hidden
+On systems where clash detection (locking of files being edited) is
+implemented, XEmacs also checks the first time you modify a buffer
+saved.  If it has, you are asked to confirm that you want to change
+the buffer.
+whether the file has changed on disk since it was last visited or
address@hidden smallexample
+
address@hidden
+where the upper case `O' comes before all lower case letters.  If you apply
+instead @kbd{C-u 2 M-x sort-fields} you get:
+
address@hidden
+saved.  If it has, you are asked to confirm that you want to change
+implemented, XEmacs also checks the first time you modify a buffer
+the buffer.
+On systems where clash detection (locking of files being edited) is
+whether the file has changed on disk since it was last visited or
address@hidden smallexample
+
address@hidden
+where the sort keys were @samp{If}, @samp{XEmacs}, @samp{buffer},
address@hidden, and @address@hidden
+
address@hidden sort-columns
+  @kbd{M-x sort-columns} requires more explanation.  You specify the
+columns by putting point at one of the columns and the mark at the other
+column.  Because this means you cannot put point or the mark at the
+beginning of the first line to sort, this command uses an unusual
+definition of `region': all of the line point is in is considered part of
+the region, and so is all of the line the mark is in.
+
+  For example, to sort a table by information found in columns 10 to 15,
+you could put the mark on column 10 in the first line of the table, and
+point on column 15 in the last line of the table, and then use this command.
+Or you could put the mark on column 15 in the first line and point on
+column 10 in the last line.
+
+  This can be thought of as sorting the rectangle specified by point and
+the mark, except that the text on each line to the left or right of the
+rectangle moves along with the text inside the rectangle.
address@hidden
+
address@hidden Shell, Narrowing, Sorting, Top
address@hidden Running Shell Commands from XEmacs
address@hidden subshell
address@hidden shell commands
+
+  XEmacs has commands for passing single command lines to inferior shell
+processes; it can also run a shell interactively with input and output to
+an XEmacs buffer @samp{*shell*}.
+
address@hidden @kbd
address@hidden M-!
+Run a specified shell command line and display the output
+(@code{shell-command}).
address@hidden M-|
+Run a specified shell command line with region contents as input;
+optionally replace the region with the output
+(@code{shell-command-on-region}).
address@hidden M-x shell
+Run a subshell with input and output through an XEmacs buffer.
+You can then give commands interactively.
address@hidden M-x term
+Run a subshell with input and output through an XEmacs buffer.
+You can then give commands interactively.
+Full terminal emulation is available.
address@hidden table
+
address@hidden
+* Single Shell::         How to run one shell command and return.
+* Interactive Shell::    Permanent shell taking input via XEmacs.
+* Shell Mode::           Special XEmacs commands used with permanent shell.
+* Terminal emulator::    An XEmacs window as a terminal emulator.
+* Term Mode::            Special XEmacs commands used in Term mode.
+* Paging in Term::       Paging in the terminal emulator.
address@hidden menu
+
address@hidden Single Shell, Interactive Shell, Shell, Shell
address@hidden Single Shell Commands
+
address@hidden M-!
address@hidden shell-command
+  @kbd{M-!} (@code{shell-command}) reads a line of text using the
+minibuffer and creates an inferior shell to execute the line as a command.
+Standard input from the command comes from the null device.  If the shell
+command produces any output, the output goes to an XEmacs buffer named
address@hidden Command Output*}, which is displayed in another window but not
+selected.  A numeric argument, as in @kbd{M-1 M-!}, directs this command to
+insert any output into the current buffer.  In that case, point is left
+before the output and the mark is set after the output.
+
address@hidden M-|
address@hidden shell-command-on-region
+  @kbd{M-|} (@code{shell-command-on-region}) is like @kbd{M-!} but passes
+the contents of the region as input to the shell command, instead of no
+input.  If a numeric argument is used to direct  output to the current
+buffer, then the old region is deleted first and the output replaces it as
+the contents of the address@hidden
+
address@hidden shell-file-name
address@hidden environment
+  Both @kbd{M-!} and @kbd{M-|} use @code{shell-file-name} to specify the
+shell to use.  This variable is initialized based on your @code{SHELL}
+environment variable when you start XEmacs.  If the file name does not
+specify a directory, the directories in the list @code{exec-path} are
+searched; this list is initialized based on the @code{PATH} environment
+variable when you start XEmacs.  You can override either or both of these
+default initializations in your init file. @xref{Init address@hidden
+
+  When you use @kbd{M-!} and @kbd{M-|}, XEmacs has to wait until the
+shell command completes.  You can quit with @kbd{C-g}; that terminates
+the shell command.
+
address@hidden Interactive Shell, Shell Mode, Single Shell, Shell
address@hidden Interactive Inferior Shell
+
address@hidden shell
+  To run a subshell interactively with its typescript in an XEmacs
+buffer, use @kbd{M-x shell}.  This creates (or reuses) a buffer named
address@hidden and runs a subshell with input coming from and output going
+to that buffer.  That is to say, any ``terminal output'' from the subshell
+will go into the buffer, advancing point, and any ``terminal input'' for
+the subshell comes from text in the buffer.  To give input to the subshell,
+go to the end of the buffer and type the input, terminated by @key{RET}.
+
+  XEmacs does not wait for the subshell to do anything.  You can switch
+windows or buffers and edit them while the shell is waiting, or while it is
+running a command.  Output from the subshell waits until XEmacs has time to
+process it; this happens whenever XEmacs is waiting for keyboard input or
+for time to elapse.
+
+ To get multiple subshells, change the name of buffer
address@hidden to something different by using @kbd{M-x rename-buffer}.  The
+next use of @kbd{M-x shell} creates a new buffer @samp{*shell*} with
+its own subshell.  By renaming this buffer as well you can create a third
+one, and so on.  All the subshells run independently and in parallel.
+
address@hidden explicit-shell-file-name
+  The file name used to load the subshell is the value of the variable
address@hidden, if that is address@hidden  Otherwise, the
+environment variable @code{ESHELL} is used, or the environment variable
address@hidden if there is no @code{ESHELL}.  If the file name specified
+is relative, the directories in the list @code{exec-path} are searched
+(@pxref{Single Shell,Single Shell Commands})address@hidden
+
+  As soon as the subshell is started, it is sent as input the contents of
+the file @file{~/address@hidden, if that file exists, where
address@hidden is the name of the file that the shell was loaded from.
+For example, if you use @code{csh}, the file sent to it is
address@hidden/address@hidden
+
address@hidden shell-pushd-regexp
address@hidden shell-popd-regexp
address@hidden shell-cd-regexp
+  @code{cd}, @code{pushd}, and @code{popd} commands given to the inferior
+shell are watched by XEmacs so it can keep the @samp{*shell*} buffer's
+default directory the same as the shell's working directory.  These
+commands are recognized syntactically by examining lines of input that are
+sent.  If you use aliases for these commands, you can tell XEmacs to
+recognize them also.  For example, if the value of the variable
address@hidden matches the beginning of a shell command line,
+that line is regarded as a @code{pushd} command.  Change this variable when
+you add aliases for @samp{pushd}.  Likewise, @code{shell-popd-regexp} and
address@hidden are used to recognize commands with the meaning of
address@hidden and @address@hidden
+
address@hidden shell-resync-dirs} queries the shell and resynchronizes XEmacs'
+idea of what the current directory stack is.  @kbd{M-x
+shell-dirtrack-toggle} turns directory tracking on and off.
+
address@hidden input-ring-size
+XEmacs keeps a history of the most recent commands you have typed in the
address@hidden buffer.  If you are at the beginning of a shell command
+line and type @key{M-p}, the previous shell input is inserted into the
+buffer before point.  Immediately typing @key{M-p} again deletes that
+input and inserts the one before it.  By repeating @key{M-p} you can
+move backward through your commands until you find one you want to
+repeat.  You may then edit the command before typing @key{RET} if you
+wish. @key{M-n} moves forward through the command history, in case you
+moved backward past the one you wanted while using @key{M-p}.  If you
+type the first few characters of a previous command and then type
address@hidden, the most recent shell input starting with those characters is
+inserted.  This can be very convenient when you are repeating a sequence
+of shell commands.  The variable @code{input-ring-size} controls how
+many commands are saved in your input history.  The default is 30.
+
+
address@hidden Shell Mode, Terminal emulator, Interactive Shell, Shell
address@hidden Shell Mode
+
address@hidden Shell mode
+  The shell buffer uses Shell mode, which defines several special keys
+attached to the @kbd{C-c} prefix.  They are chosen to resemble the usual
+editing and job control characters present in shells that are not under
+XEmacs, except that you must type @kbd{C-c} first.  Here is a list
+of the special key bindings of Shell mode:
+
address@hidden RET (Shell mode)
address@hidden C-c C-d (Shell mode)
address@hidden C-d (Shell mode)
address@hidden C-c C-u (Shell mode)
address@hidden C-c C-w (Shell mode)
address@hidden C-c C-c (Shell mode)
address@hidden C-c C-z (Shell mode)
address@hidden C-c C-\ (Shell mode)
address@hidden C-c C-o (Shell mode)
address@hidden C-c C-r (Shell mode)
address@hidden C-c C-y (Shell mode)
address@hidden M-p (Shell mode)
address@hidden M-n (Shell mode)
address@hidden TAB (Shell mode)
address@hidden send-shell-input
address@hidden shell-send-eof
address@hidden comint-delchar-or-maybe-eof
address@hidden interrupt-shell-subjob
address@hidden stop-shell-subjob
address@hidden quit-shell-subjob
address@hidden kill-output-from-shell
address@hidden show-output-from-shell
address@hidden copy-last-shell-input
address@hidden comint-previous-input
address@hidden comint-next-input
address@hidden comint-dynamic-complete
address@hidden shell-prompt-pattern
address@hidden @kbd
address@hidden @key{RET}
+At end of buffer send line as input; otherwise, copy current line to end of
+buffer and send it (@code{send-shell-input}).  When a line is copied, any
+text at the beginning of the line that matches the variable
address@hidden is left out; this variable's value should be a
+regexp string that matches the prompts that you use in your subshell.
address@hidden C-c C-d
+Send end-of-file as input, probably causing the shell or its current
+subjob to finish (@code{shell-send-eof}).
address@hidden C-d
+If point is not at the end of the buffer, delete the next character just
+like most other modes.  If point is at the end of the buffer, send
+end-of-file as input, instead of generating an error as in other modes
+(@code{comint-delchar-or-maybe-eof}).
address@hidden C-c C-u
+Kill all text that has yet to be sent as input (@code{kill-shell-input}).
address@hidden C-c C-w
+Kill a word before point (@code{backward-kill-word}).
address@hidden C-c C-c
+Interrupt the shell or its current subjob if any
+(@code{interrupt-shell-subjob}).
address@hidden C-c C-z
+Stop the shell or its current subjob if any (@code{stop-shell-subjob}).
address@hidden C-c C-\
+Send quit signal to the shell or its current subjob if any
+(@code{quit-shell-subjob}).
address@hidden C-c C-o
+Delete last batch of output from shell (@code{kill-output-from-shell}).
address@hidden C-c C-r
+Scroll top of last batch of output to top of window
+(@code{show-output-from-shell}).
address@hidden C-c C-y
+Copy the previous bunch of shell input and insert it into the
+buffer before point (@code{copy-last-shell-input}).  No final newline
+is inserted, and the input copied is not resubmitted until you type
address@hidden
address@hidden M-p
+Move backward through the input history.  Search for a matching command
+if you have typed the beginning of a command (@code{comint-previous-input}).
address@hidden M-n
+Move forward through the input history.  Useful when you are
+using @key{M-p} quickly and go past the desired command 
+(@code{comint-next-input}).
address@hidden @key{TAB}
+Complete the file name preceding point (@code{comint-dynamic-complete}).
address@hidden table
+
address@hidden Terminal emulator, Term Mode, Shell Mode, Shell
address@hidden Interactive Inferior Shell with Terminal Emulator
address@hidden term
+
+  To run a subshell in a terminal emulator, putting its typescript in an XEmacs
+buffer, use @kbd{M-x term}.  This creates (or reuses) a buffer named
address@hidden and runs a subshell with input coming from your keyboard and
+output going to that buffer.
+
+All the normal keys that you type are sent without any interpretation
+by XEmacs directly to the subshell, as ``terminal input.''
+Any ``echo'' of your input is the responsibility of the subshell.
+(The exception is the terminal escape character,
+which by default is @kbd{C-c}. @pxref{Term Mode}.)
+Any ``terminal output'' from the subshell goes into the buffer,
+advancing point.
+
+  Some programs (such as XEmacs itself) need to control the
+appearance on the terminal screen in detail.  They do this by
+sending special control codes.  The exact control
+codes needed vary from terminal to terminal, but nowadays
+most terminals and terminal emulators (including xterm)
+understand the so-called "ANSI escape sequences" (first
+popularized by the Digital's VT100 family of terminal).
+The term mode also understands these escape sequences,
+and for each control code does the appropriate thing
+to change the buffer so that the appearance of the window
+will match what it would be on a real terminal.
+Thus you can actually run XEmacs inside an XEmacs Term window!
+
+   XEmacs does not wait for the subshell to do anything.  You can switch
+windows or buffers and edit them while the shell is waiting, or while
+it is running a command.  Output from the subshell waits until XEmacs
+has time to process it; this happens whenever XEmacs is waiting for
+keyboard input or for time to elapse.
+
+   To make multiple terminal emulators, rename the buffer @samp{*term*}
+to something different using @kbd{M-x rename-uniquely},
+just as with Shell mode.
+
+   The file name used to load the subshell is determined
+the same way as for Shell mode.
+
+Unlike Shell mode, Term mode does not track the current directory
+by examining your input.  Instead, if you use a programmable
+shell, you can have it tell Term what the current directory is.
+This is done automatically by bash for version 1.15 and later.
+
address@hidden Term Mode, Paging in Term, Terminal emulator, Shell
address@hidden Term Mode
address@hidden Term mode
address@hidden mode, Term
+
+  Term uses Term mode, which has two input modes:
+In line mode, Term basically acts like Shell mode.  @xref{Shell Mode}.
+In Char mode, each character is sent directly to the inferior subshell,
+except for the Term escape character, normally @kbd{C-c}.
+
+To switch between line and char mode, use these commands:
address@hidden @kbd
address@hidden C-c C-j @r{(Term mode)}
+findex term-char-mode
address@hidden C-c C-j
+Switch to line mode.  Do nothing if already in line mode.
+
address@hidden C-c C-k @r{(Term mode)}
address@hidden term-line-mode
address@hidden C-c C-k
+Switch to char mode.  Do nothing if already in char mode.
address@hidden table
+
+The following commands are only available in Char mode:
address@hidden @kbd
address@hidden C-c C-c
+Send a literal @key{C-c} to the sub-shell.
+
address@hidden C-c C-x
+A prefix command to conveniently access the global @key{C-x} commands.
+For example, @kbd{C-c C-x o} invokes the global binding of
address@hidden o}, which is normally @samp{other-window}.
address@hidden table
+
address@hidden Paging in Term,, Term Mode, Shell
address@hidden Paging in the terminal emulator
+
+Term mode has a pager feature.  When the pager is enabled,
+term mode will pause at the end of each screenful.
+
address@hidden @kbd
address@hidden C-c C-q @r{(Term mode)}
address@hidden term-pager-toggle
address@hidden C-c C-q
+Toggles the pager feature:  Disables the pager if it is enabled,
+and vice versa.  This works in both line and char modes.
+If the pager enabled, the mode-line contains the word @samp{page}.
address@hidden table
+
+If the pager is enabled, and Term receives more than a screenful
+of output since your last input, Term will enter More break mode.
+This is indicated by @samp{**MORE**} in the mode-line.
+Type a @kbd{Space} to display the next screenful of output.
+Type @kbd{?} to see your other options.  The interface is similar
+to the Unix @samp{more} program.
+
address@hidden Narrowing, Hardcopy, Shell, Top
address@hidden Narrowing
address@hidden widening
address@hidden restriction
address@hidden narrowing
+
+  @dfn{Narrowing} means focusing in on some portion of the buffer, making
+the rest temporarily invisible and inaccessible.  Cancelling the narrowing
+and making the entire buffer once again visible is called @dfn{widening}.
+The amount of narrowing in effect in a buffer at any time is called the
+buffer's @dfn{restriction}.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x n n
+Narrow down to between point and mark (@code{narrow-to-region}).
address@hidden C-x n w
+Widen to make the entire buffer visible again (@code{widen}).
address@hidden table
+
+  Narrowing sometimes makes it easier to concentrate on a single
+subroutine or paragraph by eliminating clutter.  It can also be used to
+restrict the range of operation of a replace command or repeating
+keyboard macro.  The word @samp{Narrow} appears in the mode line
+whenever narrowing is in effect.  When you have narrowed to a part of the
+buffer, that part appears to be all there is.  You can't see the rest,
+can't move into it (motion commands won't go outside the visible part),
+and can't change it in any way.  However, the invisible text is not
+gone; if you save the file, it will be saved.
+
address@hidden C-x n n
address@hidden narrow-to-region
+  The primary narrowing command is @kbd{C-x n n} (@code{narrow-to-region}).
+It sets the current buffer's restrictions so that the text in the current
+region remains visible but all text before the region or after the region
+is invisible.  Point and mark do not change.
+
+  Because narrowing can easily confuse users who do not understand it,
address@hidden is normally a disabled command.  Attempting to use
+this command asks for confirmation and gives you the option of enabling it;
+once you enable the command, confirmation will no longer be required.  
@xref{Disabling}.
+
address@hidden C-x n w
address@hidden widen
+   To undo narrowing, use @kbd{C-x n w} (@code{widen}).  This makes all
+text in the buffer accessible again.
+
+   Use the @kbd{C-x =} command to get information on what part of the
+buffer you narrowed down.  @xref{Position Info}.
+
address@hidden Hardcopy, Recursive Edit, Narrowing, Top
address@hidden Hardcopy Output
address@hidden hardcopy
+
+  The XEmacs commands for making hardcopy derive their names from the
+Unix commands @samp{print} and @samp{lpr}.
+
address@hidden @kbd
address@hidden M-x print-buffer
+Print hardcopy of current buffer using Unix command @samp{print}
address@hidden(@samp{lpr -p}).  This command adds page headings containing the 
file name
+and page number.
address@hidden M-x lpr-buffer
+Print hardcopy of current buffer using Unix command @samp{lpr}.
+This command does not add page headings.
address@hidden M-x print-region
+Like @code{print-buffer}, but prints only the current region.
address@hidden M-x lpr-region
+Like @code{lpr-buffer}, but prints only the current region.
address@hidden table
+
address@hidden print-buffer
address@hidden print-region
address@hidden lpr-buffer
address@hidden lpr-region
address@hidden lpr-switches
+  All the hardcopy commands pass extra switches to the @code{lpr} program
+based on the value of the variable @code{lpr-switches}.  Its value should
+be a list of strings, each string a switch starting with @samp{-}.  For
+example, the value could be @code{("-Pfoo")} to print on printer
address@hidden
+
address@hidden Recursive Edit, Dissociated Press, Hardcopy, Top
address@hidden Recursive Editing Levels
address@hidden recursive editing level
address@hidden editing level, recursive
+
+  A @dfn{recursive edit} is a situation in which you are using XEmacs
+commands to perform arbitrary editing while in the middle of another
+XEmacs command.  For example, when you type @kbd{C-r} inside a
address@hidden, you enter a recursive edit in which you can change
+the current buffer.  When you exit from the recursive edit, you go back to
+the @code{query-replace}.
+
address@hidden C-M-c
address@hidden exit-recursive-edit
address@hidden exiting
+  @dfn{Exiting} a recursive edit means returning to the unfinished
+command, which continues execution.  For example, exiting the recursive
+edit requested by @kbd{C-r} in @code{query-replace} causes query replacing
+to resume.  Exiting is done with @kbd{C-M-c} (@code{exit-recursive-edit}).
+
address@hidden C-]
address@hidden abort-recursive-edit
+  You can also @dfn{abort} a recursive edit.  This is like exiting, but
+also quits the unfinished command immediately.  Use the command @kbd{C-]}
+(@code{abort-recursive-edit}) for this.  @xref{Quitting}.
+
+  The mode line shows you when you are in a recursive edit by displaying
+square brackets around the parentheses that always surround the major
+and minor mode names.  Every window's mode line shows the square
+brackets, since XEmacs as a whole, rather than any particular buffer, is
+in a recursive edit.
+
address@hidden top-level
+  It is possible to be in recursive edits within recursive edits.  For
+example, after typing @kbd{C-r} in a @code{query-replace}, you might
+type a command that entered the debugger.  In such a case, two or
+more sets of square brackets appear in the mode line(s).  Exiting the
+inner recursive edit (here with the debugger @kbd{c} command)
+resumes the query-replace command where it called the debugger.  After
+the end of the query-replace command, you would be able to exit the
+first recursive edit.  Aborting exits only one level of recursive edit;
+it returns to the command level of the previous recursive edit.  You can
+then abort that one as well.
+
+  The command @kbd{M-x top-level} aborts all levels of
+recursive edits, returning immediately to the top level command reader.
+
+  The text you edit inside the recursive edit need not be the same text
+that you were editing at top level.  If the command that invokes the
+recursive edit selects a different buffer first, that is the buffer you
+will edit recursively.  You can switch buffers within the recursive edit
+in the normal manner (as long as the buffer-switching keys have not been
+rebound).  While you could theoretically do the rest of your editing
+inside the recursive edit, including visiting files, this could have
+surprising effects (such as stack overflow) from time to time.  It is
+best if you always exit or abort a recursive edit when you no longer
+need it.
+
+  In general, XEmacs tries to avoid using recursive edits.  It is
+usually preferable to allow users to switch among the possible editing
+modes in any order they like.  With recursive edits, the only way to get
+to another state is to go ``back'' to the state that the recursive edit
+was invoked from.
+
address@hidden Dissociated Press, CONX, Recursive Edit, Top
address@hidden Dissociated Press
+
address@hidden dissociated-press
+  @kbd{M-x dissociated-press} is a command for scrambling a file of text
+either word by word or character by character.  Starting from a buffer of
+straight English, it produces extremely amusing output.  The input comes
+from the current XEmacs buffer.  Dissociated Press writes its output in a
+buffer named @samp{*Dissociation*}, and redisplays that buffer after every
+couple of lines (approximately) to facilitate reading it.
+
+  @code{dissociated-press} asks every so often whether to continue
+operating.  Answer @kbd{n} to stop it.  You can also stop at any time by
+typing @kbd{C-g}.  The dissociation output remains in the @samp{*Dissociation*}
+buffer for you to copy elsewhere if you wish.
+
address@hidden presidentagon
+  Dissociated Press operates by jumping at random from one point in the
+buffer to another.  In order to produce plausible output rather than
+gibberish, it insists on a certain amount of overlap between the end of one
+run of consecutive words or characters and the start of the next.  That is,
+if it has just printed out `president' and then decides to jump to a
+different point in the file, it might spot the `ent' in `pentagon' and
+continue from there, producing `presidentagon'.  Long sample texts produce
+the best results.
+
address@hidden againformation
+  A positive argument to @kbd{M-x dissociated-press} tells it to operate
+character by character, and specifies the number of overlap characters.  A
+negative argument tells it to operate word by word and specifies the number
+of overlap words.  In this mode, whole words are treated as the elements to
+be permuted, rather than characters.  No argument is equivalent to an
+argument of two.  For your againformation, the output goes only into the
+buffer @samp{*Dissociation*}.  The buffer you start with is not changed.
+
address@hidden Markov chain
address@hidden ignoriginal
address@hidden techniquitous
+  Dissociated Press produces nearly the same results as a Markov chain
+based on a frequency table constructed from the sample text.  It is,
+however, an independent, ignoriginal invention.  Dissociated Press
+techniquitously copies several consecutive characters from the sample
+between random choices, whereas a Markov chain would choose randomly for
+each word or character.  This makes for more plausible sounding results
+and runs faster.
+
address@hidden outragedy
address@hidden buggestion
address@hidden properbose
+  It is a mustatement that too much use of Dissociated Press can be a
+developediment to your real work.  Sometimes to the point of outragedy.
+And keep dissociwords out of your documentation, if you want it to be well
+userenced and properbose.  Have fun.  Your buggestions are welcome.
+
address@hidden CONX, Amusements, Dissociated Press, Top
address@hidden CONX
address@hidden random sentences
+
+Besides producing a file of scrambled text with Dissociated Press, you 
+can generate random sentences by using CONX.
+
address@hidden @kbd
address@hidden M-x conx
+Generate random sentences in the @code{*conx*} buffer.
address@hidden M-x conx-buffer
+Absorb the text in the current buffer into the @code{conx} database.
address@hidden M-x conx-init
+Forget the current word-frequency tree.
address@hidden M-x conx-load
+Load a @code{conx} database that has been previously saved with 
address@hidden conx-save}.
address@hidden M-x conx-region
+Absorb the text in the current buffer into the @code{conx} database.
address@hidden M-x conx-save
+Save the current @code{conx} database to a file for future retrieval.
address@hidden table
+
address@hidden conx
address@hidden conx-buffer
address@hidden conx-load
address@hidden conx-region
address@hidden conx-init
address@hidden conx-save
+
+Copy text from a buffer using @kbd{M-x conx-buffer} or @kbd{M-x conx-region}
+and then type @kbd{M-x conx}.  Output is continuously generated until you
+type @key{^G}. You can save the @code{conx} database to a file with
address@hidden conx-save}, which you can retrieve with @code{M-x conx-load}. 
+To clear the database, use @code{M-x conx-init}.
+
address@hidden Amusements, Emulation, CONX, Top
address@hidden Other Amusements
address@hidden boredom
address@hidden hanoi
address@hidden yow
+
+  If you are a little bit bored, you can try @kbd{M-x hanoi}.  If you are
+considerably bored, give it a numeric argument.  If you are very, very
+bored, try an argument of 9.  Sit back and watch.
+
+  When you are frustrated, try the famous Eliza program.  Just do
address@hidden doctor}.  End each input by typing @kbd{RET} twice.
+
+  When you are feeling strange, type @kbd{M-x yow}.
+
address@hidden Emulation, Customization, Amusements, Top
address@hidden  node-name,  next,  previous,  up
address@hidden Emulation
address@hidden other editors
address@hidden vi
address@hidden EDT
+
+  XEmacs can be programmed to emulate (more or less) most other
+editors.  Standard facilities can emulate these:
+
address@hidden @asis
address@hidden Viper (a vi emulator)
address@hidden Viper
+In XEmacs, Viper is the preferred emulation of vi within XEmacs.
+Viper is designed to allow you to take advantage of the best
+features of XEmacs while still doing your basic editing in a
+familiar, vi-like fashion.  Viper provides various different
+levels of vi emulation, from a quite complete emulation that
+allows almost no access to native XEmacs commands, to an
+``expert'' mode that combines the most useful vi commands with
+the most useful XEmacs commands.
+
+To start Viper, put the command
+
address@hidden
+(viper-mode)
address@hidden example
+
+in your init file.  @xref{Init File}.
+
+Viper comes with a separate manual that is provided standard
+with the XEmacs distribution.
+
+
address@hidden EDT (DEC VMS editor)
address@hidden edt-emulation-on
address@hidden edt-emulation-off
+Turn on EDT emulation with @kbd{M-x edt-emulation-on}.  @kbd{M-x
address@hidden restores normal Emacs command bindings.
+
+Most of the EDT emulation commands are keypad keys, and most standard
+Emacs key bindings are still available.  The EDT emulation rebindings
+are done in the global keymap, so there is no problem switching
+buffers or major modes while in EDT emulation.
+
address@hidden Gosling Emacs
address@hidden set-gosmacs-bindings
address@hidden set-gnu-bindings
+Turn on emulation of Gosling Emacs (aka Unipress Emacs) with @kbd{M-x
+set-gosmacs-bindings}.  This redefines many keys, mostly on the
address@hidden and @kbd{ESC} prefixes, to work as they do in Gosmacs.
address@hidden set-gnu-bindings} returns to normal XEmacs by rebinding
+the same keys to the definitions they had at the time @kbd{M-x
+set-gosmacs-bindings} was done.
+
+It is also possible to run Mocklisp code written for Gosling Emacs.
address@hidden
address@hidden table
+
address@hidden Customization, Quitting, Emulation, Top
address@hidden Customization
address@hidden customization
+
+  This chapter talks about various topics relevant to adapting the
+behavior of Emacs in minor ways.
+
+  All kinds of customization affect only the particular Emacs job that you
+do them in.  They are completely lost when you kill the Emacs job, and
+have no effect on other Emacs jobs you may run at the same time or
+later.  The only way an Emacs job can affect anything outside of it is
+by writing a file; in particular, the only way to make a customization
+`permanent' is to put something in your init file or other appropriate
+file to do the customization in each session.  @xref{Init File}.
+
address@hidden
+* Minor Modes::     Each minor mode is one feature you can turn on
+                     independently of any others.
+* Variables::       Many Emacs commands examine Emacs variables
+                     to decide what to do; by setting variables,
+                     you can control their functioning.
+* Keyboard Macros:: A keyboard macro records a sequence of keystrokes
+                     to be replayed with a single command.
+* Key Bindings::    The keymaps say what command each key runs.
+                     By changing them, you can "redefine keys".
+* Syntax::          The syntax table controls how words and expressions
+                     are parsed.
+* Init File::       How to write common customizations in the init file.
+* Audible Bell::    Changing how Emacs sounds the bell.
+* Faces::           Changing the fonts and colors of a region of text.
+* Frame Components::  Controlling the presence and positions of the
+                     menubar, toolbars, and gutters.
+* X Resources::     X resources controlling various aspects of the
+                     behavior of XEmacs.
address@hidden menu
+
address@hidden Minor Modes
address@hidden Minor Modes
address@hidden minor modes
+
address@hidden mode line
+  Minor modes are options which you can use or not.  For example, Auto
+Fill mode is a minor mode in which @key{SPC} breaks lines between words
+as you type.  All the minor modes are independent of each other and of
+the selected major mode.  Most minor modes inform you in the mode line
+when they are on; for example, @samp{Fill} in the mode line means that
+Auto Fill mode is on.
+
+  Append @code{-mode} to the name of a minor mode to get the name of a
+command function that turns the mode on or off.  Thus, the command to
+enable or disable Auto Fill mode is called @kbd{M-x auto-fill-mode}.  These
+commands are usually invoked with @kbd{M-x}, but you can bind keys to them
+if you wish.  With no argument, the function turns the mode on if it was
+off and off if it was on.  This is known as @dfn{toggling}.  A positive
+argument always turns the mode on, and an explicit zero argument or a
+negative argument always turns it off.
+
address@hidden Auto Fill mode
address@hidden auto-fill-mode
+  Auto Fill mode allows you to enter filled text without breaking lines
+explicitly.  Emacs inserts newlines as necessary to prevent lines from
+becoming too long.  @xref{Filling}.
+
address@hidden Overwrite mode
address@hidden overwrite-mode
+  Overwrite mode causes ordinary printing characters to replace existing
+text instead of moving it to the right.  For example, if point is in
+front of the @samp{B} in @samp{FOOBAR}, and you type a @kbd{G} in Overwrite
+mode, it changes to @samp{FOOGAR}, instead of @address@hidden
+
address@hidden Abbrev mode
address@hidden abbrev-mode
+  Abbrev mode allows you to define abbreviations that automatically expand
+as you type them.  For example, @samp{amd} might expand to @samp{abbrev
+mode}.  @xref{Abbrevs}, for full information.
+
address@hidden Variables
address@hidden Variables
address@hidden variable
address@hidden option
+
+  A @dfn{variable} is a Lisp symbol which has a value.  Variable names
+can contain any characters, but by convention they are words separated
+by hyphens.  A variable can also have a documentation string, which
+describes what kind of value it should have and how the value will be
+used.
+
+  Lisp allows any variable to have any kind of value, but most variables
+that Emacs uses require a value of a certain type.  Often the value has
+to be a string or a number.  Sometimes we say that a certain feature is
+turned on if a variable is address@hidden,'' meaning that if the
+variable's value is @code{nil}, the feature is off, but the feature is
+on for @i{any} other value.  The conventional value to turn on the
+feature---since you have to pick one particular value when you set the
+variable---is @code{t}.
+
+  Emacs uses many Lisp variables for internal recordkeeping, as any Lisp
+program must, but the most interesting variables for you are the ones that
+exist for the sake of customization.  Emacs does not (usually) change the
+values of these variables; instead, you set the values, and thereby alter
+and control the behavior of certain Emacs commands.  These variables are
+called @dfn{options}.  Most options are documented in this manual and
+appear in the Variable Index (@pxref{Variable Index}).
+
+  One example of a variable which is an option is @code{fill-column}, which
+specifies the position of the right margin (as a number of characters from
+the left margin) to be used by the fill commands (@pxref{Filling}).
+
address@hidden
+* Examining::           Examining or setting one variable's value.
+* Easy Customization::  Convenient and easy customization of variables.
+* Edit Options::        Examining or editing list of all variables' values.
+* Locals::              Per-buffer values of variables.
+* File Variables::      How files can specify variable values.
address@hidden menu
+
address@hidden Examining
address@hidden Examining and Setting Variables
address@hidden setting variables
+
address@hidden @kbd
address@hidden C-h v
address@hidden M-x describe-variable
+Print the value and documentation of a variable.
address@hidden set-variable
address@hidden M-x set-variable
+Change the value of a variable.
address@hidden table
+
address@hidden C-h v
address@hidden describe-variable
+  To examine the value of a single variable, use @kbd{C-h v}
+(@code{describe-variable}), which reads a variable name using the
+minibuffer, with completion.  It prints both the value and the
+documentation of the variable.
+
address@hidden
+C-h v fill-column @key{RET}
address@hidden example
+
address@hidden
+prints something like:
+
address@hidden
+fill-column's value is 75
+
+Documentation:
+*Column beyond which automatic line-wrapping should happen.
+Automatically becomes local when set in any fashion.
address@hidden smallexample
+
address@hidden option
address@hidden
+The star at the beginning of the documentation indicates that this variable
+is an option.  @kbd{C-h v} is not restricted to options; it allows any
+variable name.
+
address@hidden set-variable
+  If you know which option you want to set, you can use @kbd{M-x
+set-variable} to set it.  This prompts for the variable name in the
+minibuffer (with completion), and then prompts for a Lisp expression for the
+new value using the minibuffer a second time.  For example,
+
address@hidden
+M-x set-variable @key{RET} fill-column @key{RET} 75 @key{RET}
address@hidden example
+
address@hidden
+sets @code{fill-column} to 75, as if you had executed the Lisp expression
address@hidden(setq fill-column 75)}.
+
+  Setting variables in this way, like all means of customizing Emacs
+except where explicitly stated, affects only the current Emacs session.
+
address@hidden Easy Customization
address@hidden Easy Customization Interface
+
address@hidden customize
address@hidden customization buffer
+  A convenient way to find the user option variables that you want to
+change, and then change them, is with @kbd{M-x customize} (or use a
+keyboard shortcut, @kbd{C-h C}.  This command
+creates a @dfn{customization buffer} with which you can browse through
+the Emacs user options in a logically organized structure, then edit and
+set their values.  You can also use the customization buffer to save
+settings permanently.  (Not all Emacs user options are included in this
+structure as of yet, but we are adding the rest.)
+
address@hidden
+* Groups: Customization Groups.
+                             How options are classified in a structure.
+* Changing an Option::       How to edit a value and set an option.
+* Face Customization::       How to edit the attributes of a face.
+* Specific Customization::   Making a customization buffer for specific
+                                options, faces, or groups.
address@hidden menu
+
address@hidden Customization Groups
address@hidden Customization Groups
address@hidden customization groups
+
+  For customization purposes, user options are organized into
address@hidden to help you find them.  Groups are collected into bigger
+groups, all the way up to a master group called @code{Emacs}.
+
+  @kbd{M-x customize} (or @kbd{C-h C}) creates a customization buffer that
+shows the top-level @code{Emacs} group and the second-level groups immediately
+under it.  It looks like this, in part:
+
address@hidden
+/- Emacs group: ---------------------------------------------------\
+      [State]: visible group members are all at standard settings.
+   Customization of the One True Editor.
+   See also [Manual].
+
+ [Open] Editing group
+Basic text editing facilities.
+
+ [Open] External group
+Interfacing to external utilities.
+
address@hidden second-level groups}
+
+\- Emacs group end ------------------------------------------------/
+
address@hidden smallexample
+
address@hidden
+This says that the buffer displays the contents of the @code{Emacs}
+group.  The other groups are listed because they are its contents.  But
+they are listed differently, without indentation and dashes, because
address@hidden contents are not included.  Each group has a single-line
+documentation string; the @code{Emacs} group also has a @samp{[State]}
+line.
+
address@hidden editable fields (customization buffer)
address@hidden active fields (customization buffer)
+  Most of the text in the customization buffer is read-only, but it
+typically includes some @dfn{editable fields} that you can edit.  There
+are also @dfn{active fields}; this means a field that does something
+when you @dfn{invoke} it.  To invoke an active field, either click on it
+with @kbd{Mouse-1}, or move point to it and type @key{RET}.
+
+  For example, the phrase @samp{[Open]} that appears in a second-level
+group is an active field.  Invoking the @samp{[Open]} field for a group
+opens up a new customization buffer, which shows that group and its
+contents.  This field is a kind of hypertext link to another group.
+
+  The @code{Emacs} group does not include any user options itself, but
+other groups do.  By examining various groups, you will eventually find
+the options and faces that belong to the feature you are interested in
+customizing.  Then you can use the customization buffer to set them.
+
address@hidden customize-browse
+  You can view the structure of customization groups on a larger scale
+with @kbd{M-x customize-browse}.  This command creates a special kind of
+customization buffer which shows only the names of the groups (and
+options and faces), and their structure.
+
+  In this buffer, you can show the contents of a group by invoking
address@hidden  When the group contents are visible, this button changes to
address@hidden; invoking that hides the group contents.
+
+  Each group, option or face name in this buffer has an active field
+which says @samp{[Group]}, @samp{[Option]} or @samp{[Face]}.  Invoking
+that active field creates an ordinary customization buffer showing just
+that group and its contents, just that option, or just that face.
+This is the way to set values in it.
+
address@hidden Changing an Option
address@hidden Changing an Option
+
+  Here is an example of what a user option looks like in the
+customization buffer:
+
address@hidden
+Kill Ring Max: [Hide] 30
+   [State]: this option is unchanged from its standard setting.
+Maximum length of kill ring before oldest elements are thrown away.
address@hidden smallexample
+
+  The text following @samp{[Hide]}, @samp{30} in this case, indicates
+the current value of the option.  If you see @samp{[Show]} instead of
address@hidden, it means that the value is hidden; the customization
+buffer initially hides values that take up several lines.  Invoke
address@hidden to show the value.
+
+  The line after the option name indicates the @dfn{customization state}
+of the option: in the example above, it says you have not changed the
+option yet.  The word @samp{[State]} at the beginning of this line is
+active; you can get a menu of various operations by invoking it with
address@hidden or @key{RET}.  These operations are essential for
+customizing the variable.
+
+  The line after the @samp{[State]} line displays the beginning of the
+option's documentation string.  If there are more lines of
+documentation, this line ends with @samp{[More]}; invoke this to show
+the full documentation string.
+
+  To enter a new value for @samp{Kill Ring Max}, move point to the value
+and edit it textually.  For example, you can type @kbd{M-d}, then insert
+another number.
+
+  When you begin to alter the text, you will see the @samp{[State]} line
+change to say that you have edited the value:
+
address@hidden
+[State]: you have edited the value as text, but not set the option.
address@hidden smallexample
+
address@hidden setting option value
+  Editing the value does not actually set the option variable.  To do
+that, you must @dfn{set} the option.  To do this, invoke the word
address@hidden and choose @samp{Set for Current Session}.
+
+  The state of the option changes visibly when you set it:
+
address@hidden
+[State]: you have set this option, but not saved it for future sessions.
address@hidden smallexample
+
+   You don't have to worry about specifying a value that is not valid;
+setting the option checks for validity and will not really install an
+unacceptable value.
+
address@hidden M-TAB @r{(customization buffer)}
address@hidden widget-complete
+  While editing a value or field that is a file name, directory name,
+command name, or anything else for which completion is defined, you can
+type @address@hidden (@code{widget-complete}) to do completion.
+
+  Some options have a small fixed set of possible legitimate values.
+These options don't let you edit the value textually.  Instead, an
+active field @samp{[Value Menu]} appears before the value; invoke this
+field to edit the value.  For a boolean ``on or off'' value, the active
+field says @samp{[Toggle]}, and it changes to the other value.
address@hidden Menu]} and @samp{[Toggle]} edit the buffer; the changes
+take effect when you use the @samp{Set for Current Session} operation.
+
+  Some options have values with complex structure.  For example, the
+value of @code{load-path} is a list of directories.  Here is how it
+appears in the customization buffer:
+
address@hidden
+Load Path:
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/site-lisp
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/site-lisp
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/leim
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/lisp
+[INS] [DEL] [Current dir?]: /build/emacs/e19/lisp
+[INS] [DEL] [Current dir?]: /build/emacs/e19/lisp/gnus
+[INS]
+   [State]: this item has been changed outside the customization buffer.
+List of directories to search for files to load....
address@hidden smallexample
+
address@hidden
+Each directory in the list appears on a separate line, and each line has
+several editable or active fields.
+
+  You can edit any of the directory names.  To delete a directory from
+the list, invoke @samp{[DEL]} on that line.  To insert a new directory in
+the list, invoke @samp{[INS]} at the point where you want to insert it.
+
+  You can also invoke @samp{[Current dir?]} to switch between including
+a specific named directory in the path, and including @code{nil} in the
+path.  (@code{nil} in a search path means ``try the current
+directory.'')
+
address@hidden TAB @r{(customization buffer)}
address@hidden S-TAB @r{(customization buffer)}
address@hidden widget-forward
address@hidden widget-backward
+  Two special commands, @key{TAB} and @address@hidden, are useful for
+moving through the customization buffer.  @key{TAB}
+(@code{widget-forward}) moves forward to the next active or editable
+field; @address@hidden (@code{widget-backward}) moves backward to the
+previous active or editable field.
+
+  Typing @key{RET} on an editable field also moves forward, just like
address@hidden  The reason for this is that people have a tendency to type
address@hidden when they are finished editing a field.  If you have occasion
+to insert a newline in an editable field, use @kbd{C-o} or @kbd{C-q
+C-j},
+
address@hidden saving option value
+  Setting the option changes its value in the current Emacs session;
address@hidden the value changes it for future sessions as well.  This
+works by writing code into your init file so as to set the option
+variable again each time you start Emacs.  @xref{Init File}.  To save
+the option, invoke @samp{[State]} and select the @samp{Save for Future
+Sessions} operation.
+
+  You can also restore the option to its standard value by invoking
address@hidden and selecting the @samp{Reset} operation.  There are
+actually three reset operations:
+
address@hidden @samp
address@hidden Reset to Current
+If you have made some modifications and not yet set the option,
+this restores the text in the customization buffer to match
+the actual value.
+
address@hidden Reset to Saved
+This restores the value of the option to the last saved value,
+and updates the text accordingly.
+
address@hidden Reset to Standard Settings
+This sets the option to its standard value, and updates the text
+accordingly.  This also eliminates any saved value for the option,
+so that you will get the standard value in future Emacs sessions.
address@hidden table
+
+  The state of a group indicates whether anything in that group has been
+edited, set or saved.  You can select @samp{Set for Current Session},
address@hidden for Future Sessions} and the various kinds of @samp{Reset}
+operation for the group; these operations on the group apply to all
+options in the group and its subgroups.
+
+  Near the top of the customization buffer there are two lines
+containing several active fields:
+
address@hidden
+ [Set] [Save] [Reset]  [Done]
address@hidden smallexample
+
address@hidden
+Invoking @samp{[Done]} buries this customization buffer.  Each of the
+other fields performs an operation---set, save or reset---on each of the
+items in the buffer that could meaningfully be set, saved or reset.
+
address@hidden Face Customization
address@hidden Customizing Faces
address@hidden customizing faces
address@hidden bold font
address@hidden italic font
address@hidden fonts and faces
+
+  In addition to user options, some customization groups also include
+faces.  When you show the contents of a group, both the user options and
+the faces in the group appear in the customization buffer.  Here is an
+example of how a face looks:
+
address@hidden
+Custom Changed Face: (sample)
+   [State]: this face is unchanged from its standard setting.
+Face used when the customize item has been changed.
+Parent groups: [Custom Magic Faces]
+Attributes: [ ] Bold: [Toggle]  off (nil)
+            [ ] Italic: [Toggle]  off (nil)
+            [ ] Underline: [Toggle]  off (nil)
+            [ ] Foreground: white       (sample)
+            [ ] Background: blue        (sample)
+            [ ] Inverse: [Toggle]  off (nil)
+            [ ] Stipple: 
+            [ ] Font Family: 
+            [ ] Size: 
+            [ ] Strikethru: off
address@hidden smallexample
+
+  Each face attribute has its own line.  The @address@hidden field
+before the attribute name indicates whether the attribute is
address@hidden; @samp{X} means that it is.  You can enable or disable the
+attribute by invoking that field.  When the attribute is enabled, you
+can change the attribute value in the usual ways.
+
address@hidden, for description of how @code{face-frob-from-locale-first}
+variable affects changing @samp{Bold} and @samp{Italic} attributes.
+
address@hidden Is this true for XEmacs?
address@hidden  On a black-and-white display, the colors you can use for the
address@hidden background are @samp{black}, @samp{white}, @samp{gray}, 
@samp{gray1},
address@hidden and @samp{gray3}.  Emacs supports these shades of gray by using
address@hidden background stipple patterns instead of a color.
address@hidden 
+  Setting, saving and resetting a face work like the same operations for
+options (@pxref{Changing an Option}).
+
+  A face can specify different appearances for different types of
+display.  For example, a face can make text red on a color display, but
+use a bold font on a monochrome display.  To specify multiple
+appearances for a face, select @samp{Show Display Types} in the menu you
+get from invoking @samp{[State]}.
+
address@hidden It would be cool to implement this
address@hidden @findex modify-face
address@hidden   Another more basic way to set the attributes of a specific 
face is
address@hidden with @kbd{M-x modify-face}.  This command reads the name of a 
face, then
address@hidden reads the attributes one by one.  For the color and stipple 
attributes,
address@hidden the attribute's current value is the default---type just 
@key{RET} if
address@hidden you don't want to change that attribute.  Type @samp{none} if 
you want
address@hidden to clear out the attribute.
+
address@hidden Specific Customization
address@hidden Customizing Specific Items
+
+  Instead of finding the options you want to change by moving down
+through the structure of groups, you can specify the particular option,
+face or group that you want to customize.
+
address@hidden @kbd
address@hidden M-x customize-option @key{RET} @var{option} @key{RET}
+Set up a customization buffer with just one option, @var{option}.
address@hidden M-x customize-face @key{RET} @var{face} @key{RET}
+Set up a customization buffer with just one face, @var{face}.
address@hidden M-x customize-group @key{RET} @var{group} @key{RET}
+Set up a customization buffer with just one group, @var{group}.
address@hidden M-x customize-apropos @key{RET} @var{regexp} @key{RET}
+Set up a customization buffer with all the options, faces and groups
+that match @var{regexp}.
address@hidden M-x customize-saved 
+Set up a customization buffer containing all options and faces that you
+have saved with customization buffers.
address@hidden M-x customize-customized
+Set up a customization buffer containing all options and faces that you
+have customized but not saved.
address@hidden table
+
address@hidden customize-option
+  If you want to alter a particular user option variable with the
+customization buffer, and you know its name, you can use the command
address@hidden customize-option} and specify the option name.  This sets up
+the customization buffer with just one option---the one that you asked
+for.  Editing, setting and saving the value work as described above, but
+only for the specified option.
+
address@hidden customize-face
+  Likewise, you can modify a specific face, chosen by name, using
address@hidden customize-face}.
+
address@hidden customize-group
+  You can also set up the customization buffer with a specific group,
+using @kbd{M-x customize-group}.  The immediate contents of the chosen
+group, including option variables, faces, and other groups, all appear
+as well.  However, these subgroups' own contents start out hidden.  You
+can show their contents in the usual way, by invoking @samp{[Show]}.
+
address@hidden customize-apropos
+  To control more precisely what to customize, you can use @kbd{M-x
+customize-apropos}.  You specify a regular expression as argument; then
+all options, faces and groups whose names match this regular expression
+are set up in the customization buffer.  If you specify an empty regular
+expression, this includes @emph{all} groups, options and faces in the
+customization buffer (but that takes a long time).
+
address@hidden customize-saved
address@hidden customize-customized
+  If you change option values and then decide the change was a mistake,
+you can use two special commands to revisit your previous changes.  Use
address@hidden to look at the options and faces that you have
+saved.  Use @kbd{M-x customize-customized} to look at the options and
+faces that you have set but not saved.
+
address@hidden Edit Options
address@hidden Editing Variable Values
+
address@hidden @kbd
address@hidden M-x list-options
+Display a buffer listing names, values, and documentation of all options.
address@hidden M-x edit-options
+Change option values by editing a list of options.
address@hidden table
+
address@hidden list-options
+  @kbd{M-x list-options} displays a list of all Emacs option variables in
+an Emacs buffer named @samp{*List Options*}.  Each option is shown with its
+documentation and its current value.  Here is what a portion of it might
+look like:
+
address@hidden
+;; exec-path:
+("." "/usr/local/bin" "/usr/ucb" "/bin" "/usr/bin" "/u2/emacs/etc")
+*List of directories to search programs to run in subprocesses.
+Each element is a string (directory name)
+or nil (try the default directory).
+;;
+;; fill-column:
+75
+*Column beyond which automatic line-wrapping should happen.
+Automatically becomes local when set in any fashion.
+;;
address@hidden smallexample
+
address@hidden edit-options
+  @kbd{M-x edit-options} goes one step further and immediately selects the
address@hidden Options*} buffer; this buffer uses the major mode Options mode,
+which provides commands that allow you to point at an option and change its
+value:
+
address@hidden @kbd
address@hidden s
+Set the variable point is in or near to a new value read using the
+minibuffer.
address@hidden x
+Toggle the variable point is in or near: if the value was @code{nil},
+it becomes @code{t}; otherwise it becomes @code{nil}.
address@hidden 1
+Set the variable point is in or near to @code{t}.
address@hidden 0
+Set the variable point is in or near to @code{nil}.
address@hidden n
address@hidden p
+Move to the next or previous variable.
address@hidden table
+
address@hidden Locals
address@hidden Local Variables
+
address@hidden @kbd
address@hidden M-x make-local-variable
+Make a variable have a local value in the current buffer.
address@hidden M-x kill-local-variable
+Make a variable use its global value in the current buffer.
address@hidden M-x make-variable-buffer-local
+Mark a variable so that setting it will make it local to the
+buffer that is current at that time.
address@hidden table
+
address@hidden local variables
+   You can make any variable @dfn{local} to a specific Emacs buffer.
+This means that the variable's value in that buffer is independent of
+its value in other buffers.  A few variables are always local in every
+buffer.  All other Emacs variables have a @dfn{global} value which is in
+effect in all buffers that have not made the variable local.
+
+  Major modes always make the variables they set local to the buffer.
+This is why changing major modes in one buffer has no effect on other
+buffers.
+
address@hidden make-local-variable
+  @kbd{M-x make-local-variable} reads the name of a variable and makes it
+local to the current buffer.  Further changes in this buffer will not
+affect others, and changes in the global value will not affect this
+buffer.
+
address@hidden make-variable-buffer-local
address@hidden per-buffer variables
+  @kbd{M-x make-variable-buffer-local} reads the name of a variable and
+changes the future behavior of the variable so that it automatically
+becomes local when it is set.  More precisely, once you have marked a
+variable in this way, the usual ways of setting the
+variable will automatically invoke @code{make-local-variable} first.  We
+call such variables @dfn{per-buffer} variables.
+
+  Some important variables have been marked per-buffer already.  They
+include @code{abbrev-mode}, @code{auto-fill-function},
address@hidden, @code{comment-column}, @code{ctl-arrow},
address@hidden, @code{fill-prefix}, @code{indent-tabs-mode},
address@hidden, @address@hidden, @code{overwrite-mode},
address@hidden, @address@hidden,
address@hidden, and @code{truncate-lines}.  Some other variables are
+always local in every buffer, but they are used for internal
address@hidden
+
+Note: the variable @code{auto-fill-function} was formerly named
address@hidden
+
address@hidden kill-local-variable
+  If you want a variable to cease to be local to the current buffer,
+call @kbd{M-x kill-local-variable} and provide the name of a variable to
+the prompt.  The global value of the variable
+is again in effect in this buffer.  Setting the major mode kills all
+the local variables of the buffer.
+
address@hidden setq-default
+  To set the global value of a variable, regardless of whether the
+variable has a local value in the current buffer, you can use the
+Lisp function @code{setq-default}.  It works like @code{setq}.
+If there is a local value in the current buffer, the local value is
+not affected by @code{setq-default}; thus, the new global value may
+not be visible until you switch to another buffer, as in the case of:
+
address@hidden
+(setq-default fill-column 75)
address@hidden example
+
address@hidden
address@hidden is the only way to set the global value of a variable
+that has been marked with @code{make-variable-buffer-local}.
+
address@hidden default-value
+  Programs can look at a variable's default value with @code{default-value}.
+This function takes a symbol as an argument and returns its default value.
+The argument is evaluated; usually you must quote it explicitly, as in
+the case of:
+
address@hidden
+(default-value 'fill-column)
address@hidden example
+
address@hidden File Variables
address@hidden Local Variables in Files
address@hidden local variables in files
+
+  A file can contain a @dfn{local variables list}, which specifies the
+values to use for certain Emacs variables when that file is edited.
+Visiting the file checks for a local variables list and makes each variable
+in the list local to the buffer in which the file is visited, with the
+value specified in the file.
+
+  A local variables list goes near the end of the file, in the last page.
+(It is often best to put it on a page by itself.)  The local variables list
+starts with a line containing the string @samp{Local Variables:}, and ends
+with a line containing the string @samp{End:}.  In between come the
+variable names and values, one set per line, as @address@hidden:@:
address@hidden  The @var{value}s are not evaluated; they are used literally.
+
+  The line which starts the local variables list does not have to say
+just @samp{Local Variables:}.  If there is other text before @samp{Local
+Variables:}, that text is called the @dfn{prefix}, and if there is other
+text after, that is called the @dfn{suffix}.  If a prefix or suffix are
+present, each entry in the local variables list should have the prefix
+before it and the suffix after it.  This includes the @samp{End:} line.
+The prefix and suffix are included to disguise the local variables list
+as a comment so the compiler or text formatter  will ignore it.
+If you do not need to disguise the local variables list as a comment in
+this way, there is no need to include a prefix or a address@hidden
+
+  Two ``variable'' names are special in a local variables list: a value
+for the variable @code{mode} sets the major mode, and a value for the
+variable @code{eval} is simply evaluated as an expression and the value
+is ignored.  These are not real variables; setting them in any other
+context does not have the same effect.  If @code{mode} is used in a
+local variables list, it should be the first entry in the list.
+
+Here is an example of a local variables list:
address@hidden
+;;; Local Variables: ***
+;;; mode:lisp ***
+;;; comment-column:0 ***
+;;; comment-start: ";;; "  ***
+;;; comment-end:"***" ***
+;;; End: ***
address@hidden example
+
+  Note that the prefix is @samp{;;; } and the suffix is @samp{ ***}.
+Note also that comments in the file begin with and end with the same
+strings.  Presumably the file contains code in a language which is
+enough like Lisp for Lisp mode to be useful but in which comments
+start and end differently.  The prefix and suffix are used in the local
+variables list to make the list look like several lines of comments when
+the compiler or interpreter for that language reads the file. 
+
+  The start of the local variables list must be no more than 3000
+characters from the end of the file, and must be in the last page if the
+file is divided into pages.  Otherwise, Emacs will not notice it is
+there.  The purpose is twofold: a stray @samp{Local Variables:}@: not in
+the last page does not confuse Emacs, and Emacs never needs to search a
+long file that contains no page markers and has no local variables list.
+
+  You may be tempted to turn on Auto Fill mode with a local variable
+list.  That is inappropriate.  Whether you use Auto Fill mode or not is
+a matter of personal taste, not a matter of the contents of particular
+files.  If you want to use Auto Fill, set up major mode hooks with your
+init file to turn it on (when appropriate) for you alone
+(@pxref{Init File}).  Don't try to use a local variable list that would
+impose your taste on everyone working with the file.
+
+XEmacs allows you to specify local variables in the first line
+of a file, in addition to specifying them in the @code{Local Variables}
+section at the end of a file.
+
+If the first line of a file contains two occurrences of @code{`-*-'},
+XEmacs uses the information between them to determine what the major
+mode and variable settings should be.  For example, these are all legal:
+
address@hidden
+        ;;; -*- mode: emacs-lisp -*-
+        ;;; -*- mode: postscript; version-control: never -*-
+        ;;; -*- tags-file-name: "/foo/bar/TAGS" -*-
address@hidden example
+
+For historical reasons, the syntax @code{`-*- modename -*-'} is allowed
+as well; for example, you can use:
+
address@hidden
+        ;;; -*- emacs-lisp -*-
address@hidden example
+
address@hidden enable-local-variables
+The variable @code{enable-local-variables} controls the use of local
+variables lists in files you visit.  The value can be @code{t},
address@hidden, or something else.  A value of @code{t} means local variables
+lists are obeyed; @code{nil} means they are ignored; anything else means
+query.
+
+The command @code{M-x normal-mode} always obeys local variables lists
+and ignores this variable.
+
address@hidden Keyboard Macros
address@hidden Keyboard Macros
+
address@hidden keyboard macros
+  A @dfn{keyboard macro} is a command defined by the user to abbreviate a
+sequence of keys.  For example, if you discover that you are about to type
address@hidden C-d} forty times, you can speed your work by defining a keyboard
+macro to invoke @kbd{C-n C-d} and calling it with a repeat count of forty.
+
address@hidden widecommands
address@hidden @kbd
address@hidden C-x (
+Start defining a keyboard macro (@code{start-kbd-macro}).
address@hidden C-x )
+End the definition of a keyboard macro (@code{end-kbd-macro}).
address@hidden C-x e
+Execute the most recent keyboard macro (@code{call-last-kbd-macro}).
address@hidden C-u C-x (
+Re-execute last keyboard macro, then add more keys to its definition.
address@hidden C-x q
+When this point is reached during macro execution, ask for confirmation
+(@code{kbd-macro-query}).
address@hidden M-x name-last-kbd-macro
+Give a command name (for the duration of the session) to the most
+recently defined keyboard macro.
address@hidden M-x insert-kbd-macro
+Insert in the buffer a keyboard macro's definition, as Lisp code.
address@hidden table
+
+  Keyboard macros differ from other Emacs commands in that they are
+written in the Emacs command language rather than in Lisp.  This makes it
+easier for the novice to write them and makes them more convenient as
+temporary hacks.  However, the Emacs command language is not powerful
+enough as a programming language to be useful for writing anything
+general or complex.  For such things, Lisp must be used.
+
+  You define a keyboard macro by executing the commands which are its
+definition.  Put differently, as you are defining a keyboard macro, the
+definition is being executed for the first time.  This way, you see
+what the effects of your commands are, and don't have to figure
+them out in your head.  When you are finished, the keyboard macro is
+defined and also has been executed once.  You can then execute the same
+set of commands again by invoking the macro.
+
address@hidden
+* Basic Kbd Macro::     Defining and running keyboard macros.
+* Save Kbd Macro::      Giving keyboard macros names; saving them in files.
+* Kbd Macro Query::     Keyboard macros that do different things each use.
address@hidden menu
+
address@hidden Basic Kbd Macro
address@hidden Basic Use
+
address@hidden C-x (
address@hidden C-x )
address@hidden C-x e
address@hidden start-kbd-macro
address@hidden end-kbd-macro
address@hidden call-last-kbd-macro
+  To start defining a keyboard macro, type @kbd{C-x (}
+(@code{start-kbd-macro}).  From then on, anything you type continues to be
+executed, but also becomes part of the definition of the macro.  @samp{Def}
+appears in the mode line to remind you of what is going on.  When you are
+finished, the @kbd{C-x )} command (@code{end-kbd-macro}) terminates the
+definition, without becoming part of it. 
+
+  For example,
+
address@hidden
+C-x ( M-f foo C-x )
address@hidden example
+
address@hidden
+defines a macro to move forward a word and then insert @samp{foo}.
+
+You can give @kbd{C-x )} a repeat count as an argument, in which case it
+repeats the macro that many times right after defining it, but defining
+the macro counts as the first repetition (since it is executed as you
+define it).  If you give @kbd{C-x )} an argument of 4, it executes the
+macro immediately 3 additional times.  An argument of zero to @kbd{C-x
+e} or @kbd{C-x )} means repeat the macro indefinitely (until it gets an
+error or you type @kbd{C-g}).
+
+  Once you have defined a macro, you can invoke it again with the
address@hidden e} command (@code{call-last-kbd-macro}).  You can give the
+command a repeat count numeric argument to execute the macro many times.
+
+  To repeat an operation at regularly spaced places in the
+text, define a macro and include as part of the macro the commands to move
+to the next place you want to use it.  For example, if you want to change
+each line, you should position point at the start of a line, and define a
+macro to change that line and leave point at the start of the next line.
+Repeating the macro will then operate on successive lines.
+
+  After you have terminated the definition of a keyboard macro, you can add
+to the end of its definition by typing @kbd{C-u C-x (}.  This is equivalent
+to plain @kbd{C-x (} followed by retyping the whole definition so far.  As
+a consequence it re-executes the macro as previously defined.
+
address@hidden Save Kbd Macro
address@hidden Naming and Saving Keyboard Macros
+
address@hidden name-last-kbd-macro
+  To save a keyboard macro for longer than until you define the
+next one, you must give it a name using @kbd{M-x name-last-kbd-macro}.
+This reads a name as an argument using the minibuffer and defines that name
+to execute the macro.  The macro name is a Lisp symbol, and defining it in
+this way makes it a valid command name for calling with @kbd{M-x} or for
+binding a key to with @code{global-set-key} (@pxref{Keymaps}).  If you
+specify a name that has a prior definition other than another keyboard
+macro, Emacs prints an error message and nothing is changed.
+
address@hidden insert-kbd-macro
+  Once a macro has a command name, you can save its definition in a file.
+You can then use it in another editing session.  First visit the file
+you want to save the definition in.  Then use the command:
+
address@hidden
+M-x insert-kbd-macro @key{RET} @var{macroname} @key{RET}
address@hidden example
+
address@hidden
+This inserts some Lisp code that, when executed later, will define the same
+macro with the same definition it has now.  You need not understand Lisp
+code to do this, because @code{insert-kbd-macro} writes the Lisp code for you.
+Then save the file.  You can load the file with @code{load-file}
+(@pxref{Lisp Libraries}).  If the file you save in is your initialization file
+(@pxref{Init File}), then the macro will be defined each
+time you run Emacs.
+
+  If you give @code{insert-kbd-macro} a prefix argument, it creates
+additional Lisp code to record the keys (if any) that you have bound to the
+keyboard macro, so that the macro is reassigned the same keys when you
+load the file.
+
address@hidden Kbd Macro Query
address@hidden Executing Macros With Variations
+
address@hidden C-x q
address@hidden kbd-macro-query
+  You can use @kbd{C-x q} (@code{kbd-macro-query}), to get an effect similar
+to that of @code{query-replace}.  The macro asks you  each time
+whether to make a change.  When you are defining the macro, type @kbd{C-x
+q} at the point where you want the query to occur.  During macro
+definition, the @kbd{C-x q} does nothing, but when you invoke the macro,
address@hidden q} reads a character from the terminal to decide whether to
+continue.
+
+  The special answers to a @kbd{C-x q} query are @key{SPC}, @key{DEL},
address@hidden, @kbd{C-l}, and @kbd{C-r}.  Any other character terminates
+execution of the keyboard macro and is then read as a command.
address@hidden means to continue.  @key{DEL} means to skip the remainder of
+this repetition of the macro, starting again from the beginning in the
+next repetition.  @kbd{C-d} means to skip the remainder of this
+repetition and cancel further repetition.  @kbd{C-l} redraws the frame
+and asks you again for a character to specify what to do.  @kbd{C-r} enters
+a recursive editing level, in which you can perform editing that is not
+part of the macro.  When you exit the recursive edit using @kbd{C-M-c},
+you are asked again how to continue with the keyboard macro.  If you
+type a @key{SPC} at this time, the rest of the macro definition is
+executed.  It is up to you to leave point and the text in a state such
+that the rest of the macro will do what you address@hidden
+
+  @kbd{C-u C-x q}, which is @kbd{C-x q} with a numeric argument, performs a
+different function.  It enters a recursive edit reading input from the
+keyboard, both when you type it during the definition of the macro and
+when it is executed from the macro.  During definition, the editing you do
+inside the recursive edit does not become part of the macro.  During macro
+execution, the recursive edit gives you a chance to do some particularized
+editing.  @xref{Recursive Edit}.
+
address@hidden Key Bindings
address@hidden Customizing Key Bindings
+
+  This section deals with the @dfn{keymaps} that define the bindings
+between keys and functions, and shows how you can customize these bindings.
address@hidden command
address@hidden function
address@hidden command name
+
+  A command is a Lisp function whose definition provides for interactive
+use.  Like every Lisp function, a command has a function name, which is
+a Lisp symbol whose name usually consists of lower case letters and
+hyphens.
+
address@hidden
+* Keymaps::    Definition of the keymap data structure.
+               Names of Emacs's standard keymaps.
+* Rebinding::  How to redefine one key's meaning conveniently.
+* Disabling::  Disabling a command means confirmation is required
+                before it can be executed.  This is done to protect
+                beginners from surprises.
address@hidden menu
+
address@hidden Keymaps
address@hidden Keymaps
address@hidden keymap
+
address@hidden global keymap
address@hidden global-map
+  The bindings between characters and command functions are recorded in
+data structures called @dfn{keymaps}.  Emacs has many of these.  One, the
address@hidden keymap, defines the meanings of the single-character keys that
+are defined regardless of major mode.  It is the value of the variable
address@hidden
+
address@hidden local keymap
address@hidden c-mode-map
address@hidden lisp-mode-map
+  Each major mode has another keymap, its @dfn{local keymap}, which
+contains overriding definitions for the single-character keys that are
+redefined in that mode.  Each buffer records which local keymap is
+installed for it at any time, and the current buffer's local keymap is
+the only one that directly affects command execution.  The local keymaps
+for Lisp mode, C mode, and many other major modes always exist even when
+not in use.  They are the values of the variables @code{lisp-mode-map},
address@hidden, and so on.  For less frequently used major modes, the
+local keymap is sometimes constructed only when the mode is used for the
+first time in a session, to save space.
+
address@hidden minibuffer
address@hidden minibuffer-local-map
address@hidden minibuffer-local-ns-map
address@hidden minibuffer-local-completion-map
address@hidden minibuffer-local-must-match-map
address@hidden repeat-complex-command-map
address@hidden isearch-mode-map
+  There are local keymaps for the minibuffer, too; they contain various
+completion and exit commands.
+
address@hidden @bullet
address@hidden
address@hidden is used for ordinary input (no completion).
address@hidden
address@hidden is similar, except that @key{SPC} exits
+just like @key{RET}.  This is used mainly for Mocklisp compatibility.
address@hidden
address@hidden is for permissive completion.
address@hidden
address@hidden is for strict completion and
+for cautious completion.
address@hidden
address@hidden is for use in @kbd{C-x @key{ESC} @key{ESC}}.
address@hidden
address@hidden contains the bindings of the special keys which
+are bound in the pseudo-mode entered with @kbd{C-s} and @kbd{C-r}.
address@hidden itemize
+
address@hidden ctl-x-map
address@hidden help-map
address@hidden esc-map
+  Finally, each prefix key has a keymap which defines the key sequences
+that start with it.  For example, @code{ctl-x-map} is the keymap used for
+characters following a @kbd{C-x}.
+
address@hidden @bullet
address@hidden
address@hidden is the variable name for the map used for characters that
+follow @kbd{C-x}.
address@hidden
address@hidden is used for characters that follow @kbd{C-h}.
address@hidden
address@hidden is for characters that follow @key{ESC}. All Meta
+characters are actually defined by this map.
address@hidden
address@hidden is for characters that follow @kbd{C-x 4}.
address@hidden
address@hidden is for characters that follow @kbd{C-c}.
address@hidden itemize
+
+  The definition of a prefix key is the keymap to use for looking up
+the following character.  Sometimes the definition is actually a Lisp
+symbol whose function definition is the following character keymap.  The
+effect is the same, but it provides a command name for the prefix key that
+you can use as a description of what the prefix key is for.  Thus the
+binding of @kbd{C-x} is the symbol @code{Ctl-X-Prefix}, whose function
+definition is the keymap for @kbd{C-x} commands, the value of
address@hidden@refill
+
+  Prefix key definitions can appear in either the global
+map or a local map.  The definitions of @kbd{C-c}, @kbd{C-x}, @kbd{C-h},
+and @key{ESC} as prefix keys appear in the global map, so these prefix
+keys are always available.  Major modes can locally redefine a key as a
+prefix by putting a prefix key definition for it in the local
address@hidden
+
+  A mode can also put a prefix definition of a global prefix character such
+as @kbd{C-x} into its local map.  This is how major modes override the
+definitions of certain keys that start with @kbd{C-x}.  This case is
+special, because the local definition does not entirely replace the global
+one.  When both the global and local definitions of a key are other
+keymaps, the next character is looked up in both keymaps, with the local
+definition overriding the global one.  The character after the
address@hidden is looked up in both the major mode's own keymap for redefined
address@hidden commands and in @code{ctl-x-map}.  If the major mode's own keymap
+for @kbd{C-x} commands contains @code{nil}, the definition from the global
+keymap for @kbd{C-x} commands is address@hidden
+
address@hidden Rebinding
address@hidden Changing Key Bindings
address@hidden key rebinding, this session
address@hidden rebinding keys, this session
+
+  You can redefine an Emacs key by changing its entry in a keymap.
+You can change the global keymap, in which case the change is effective in
+all major modes except those that have their own overriding local
+definitions for the same key.  Or you can change the current buffer's
+local map, which affects all buffers using the same major mode.
+
address@hidden
+* Interactive Rebinding::      Changing Key Bindings Interactively   
+* Programmatic Rebinding::     Changing Key Bindings Programmatically
+* Key Bindings Using Strings:: Using Strings for Changing Key Bindings 
address@hidden menu
+
address@hidden Interactive Rebinding
address@hidden Changing Key Bindings Interactively
address@hidden global-set-key
address@hidden local-set-key
address@hidden local-unset-key
+
address@hidden @kbd
address@hidden M-x global-set-key @key{RET} @var{key} @var{cmd} @key{RET}
+Defines @var{key} globally to run @var{cmd}.
address@hidden M-x local-set-key @key{RET} @var{keys} @var{cmd} @key{RET} 
+Defines @var{key} locally (in the major mode now in effect) to run
address@hidden
address@hidden M-x local-unset-key @key{RET} @var{keys} @key{RET}
+Removes the local binding of @var{key}.
address@hidden table
+
address@hidden is a symbol naming an interactively-callable function.
+
+When called interactively, @var{key} is the next complete key sequence
+that you type.  When called as a function, @var{key} is a string, a
+vector of events, or a vector of key-description lists as described in
+the @code{define-key} function description.  The binding goes in
+the current buffer's local map, which is shared with other buffers in
+the same major mode.
+
+The following example:
+
address@hidden
+M-x global-set-key @key{RET} C-f next-line @key{RET}
address@hidden example
+
address@hidden
+redefines @kbd{C-f} to move down a line.  The fact that @var{cmd} is
+read second makes it serve as a kind of confirmation for @var{key}.
+
+  These functions offer no way to specify a particular prefix keymap as
+the one to redefine in, but that is not necessary, as you can include
+prefixes in @var{key}.  @var{key} is read by reading characters one by
+one until they amount to a complete key (that is, not a prefix key).
+Thus, if you type @kbd{C-f} for @var{key}, Emacs enters
+the minibuffer immediately to read @var{cmd}.  But if you type
address@hidden, another character is read; if that character is @kbd{4},
+another character is read, and so on.  For example,@refill
+
address@hidden
+M-x global-set-key @key{RET} C-x 4 $ spell-other-window @key{RET}
address@hidden example
+
address@hidden
+redefines @kbd{C-x 4 $} to run the (fictitious) command
address@hidden
+
address@hidden define-key
address@hidden substitute-key-definition
+  The most general way to modify a keymap is the function
address@hidden, used in Lisp code (such as your init file).
address@hidden takes three arguments: the keymap, the key to modify
+in it, and the new definition.  @xref{Init File}, for an example.
address@hidden is used similarly; it takes three
+arguments, an old definition, a new definition, and a keymap, and
+redefines in that keymap all keys that were previously defined with the
+old definition to have the new definition instead.
+
address@hidden Programmatic Rebinding
address@hidden Changing Key Bindings Programmatically
+
+  You can use the functions @code{global-set-key} and @code{define-key}
+to rebind keys under program control.
+
address@hidden define-key
address@hidden global-set-key
+
address@hidden @kbd
address@hidden  @code{(global-set-key @var{keys} @var{cmd})}
+Defines @var{keys} globally to run @var{cmd}.
address@hidden @code{(define-key @var{keymap} @var{keys} @var{def})}
+Defines @var{keys} to run @var{def} in the keymap @var{keymap}.
address@hidden table
+ 
address@hidden is a keymap object.
+
address@hidden is the sequence of keystrokes to bind.
+
address@hidden is anything that can be a key's definition:
+
address@hidden @bullet
address@hidden
address@hidden, meaning key is undefined in this keymap
address@hidden
+A command, that is, a Lisp function suitable for interactive calling
address@hidden
+A string or key sequence vector, which is treated as a keyboard macro
address@hidden
+A keymap to define a prefix key
address@hidden
+A symbol so that when the key is looked up, the symbol stands for its
+function definition, which should at that time be one of the above,
+or another symbol whose function definition is used, and so on
address@hidden
+A cons, @code{(string . defn)}, meaning that @var{defn} is the definition
+(@var{defn} should be a valid definition in its own right)
address@hidden
+A cons, @code{(keymap . char)}, meaning use the definition of
address@hidden in map @var{keymap}
address@hidden itemize
+
+For backward compatibility, XEmacs allows you to specify key
+sequences as strings.  However, the preferred method is to use the
+representations of key sequences as vectors of keystrokes.
address@hidden, for more information about the rules for constructing
+key sequences.
+
+Emacs allows you to abbreviate representations for key sequences in 
+most places where there is no ambiguity.
+Here are some rules for abbreviation:
+
address@hidden @bullet
address@hidden
+The keysym by itself is equivalent to a list of just that keysym, i.e.,
address@hidden is equivalent to @code{(f1)}.
address@hidden
+A keystroke by itself is equivalent to a vector containing just that
+keystroke, i.e.,  @code{(control a)} is equivalent to @code{[(control a)]}.
address@hidden
+You can use ASCII codes for keysyms that have them. i.e.,
address@hidden is equivalent to @code{A}. (This is not so much an
+abbreviation as an alternate representation.)
address@hidden itemize
+
+Here are some examples of programmatically binding keys:
+
address@hidden
+
+;;;  Bind @code{my-command} to @key{f1}
+(global-set-key 'f1 'my-command)                
+
+;;;  Bind @code{my-command} to @kbd{Shift-f1}
+(global-set-key '(shift f1) 'my-command)
+
+;;; Bind @code{my-command} to @kbd{C-c Shift-f1}
+(global-set-key '[(control c) (shift f1)] 'my-command)  
+
+;;; Bind @code{my-command} to the middle mouse button.
+(global-set-key 'button2 'my-command)
+
+;;; Bind @code{my-command} to @address@hidden @key{CTL} @key{Right Mouse 
Button}}
+;;; in the keymap that is in force when you are running @code{dired}.
+(define-key dired-mode-map '(meta control button3) 'my-command)
+
address@hidden example
+
address@hidden ;; note that these next four lines are not synonymous:
address@hidden ;;
address@hidden (global-set-key '(meta control delete) 'my-command)
address@hidden (global-set-key '(meta control backspace) 'my-command)
address@hidden (global-set-key '(meta control h) 'my-command)
address@hidden (global-set-key '(meta control H) 'my-command)
address@hidden 
address@hidden ;; note that this binds two key sequences: ``control-j'' and 
``linefeed''.
address@hidden ;;
address@hidden (global-set-key "\^J" 'my-command)
+
address@hidden Key Bindings Using Strings
address@hidden Using Strings for Changing Key Bindings 
+
+  For backward compatibility, you can still use strings to represent
+key sequences.  Thus you can use commands like the following:
+
address@hidden
+;;; Bind @code{end-of-line} to @kbd{C-f}
+(global-set-key "\C-f" 'end-of-line)
address@hidden example
+
+Note, however, that in some cases you may be binding more than one
+key sequence by using a single command.  This situation can 
+arise because in ASCII, @kbd{C-i} and @key{TAB} have
+the same representation.  Therefore, when Emacs sees:
+
address@hidden
+(global-set-key "\C-i" 'end-of-line)
address@hidden example
+
+it is unclear whether the user intended to bind @kbd{C-i} or @key{TAB}.
+The solution XEmacs adopts is to bind both of these key
+sequences.
+
address@hidden redefining keys
+After binding a command to two key sequences with a form like:
+
address@hidden
+        (define-key global-map "\^X\^I" 'command-1)
address@hidden example
+
+it is possible to redefine only one of those sequences like so:
+
address@hidden
+        (define-key global-map [(control x) (control i)] 'command-2)
+        (define-key global-map [(control x) tab] 'command-3)
address@hidden example
+
+This applies only when running under a window system.  If you are
+talking to Emacs through an ASCII-only channel, you do not get any of
+these features.
+
+Here is a table of pairs of key sequences that behave in a
+similar fashion:
+
address@hidden
+        control h      backspace           
+        control l      clear
+        control i      tab 
+        control m      return              
+        control j      linefeed 
+        control [      escape
+        control @@      control space
address@hidden example
+
address@hidden Disabling
address@hidden Disabling Commands
address@hidden disabled command
+
+  Disabling a command marks it as requiring confirmation before it
+can be executed.  The purpose of disabling a command is to prevent
+beginning users from executing it by accident and being confused.
+
+  The direct mechanism for disabling a command is to have a address@hidden
address@hidden property on the Lisp symbol for the command.  These
+properties are normally set by the user's init file with
+Lisp expressions such as:
+
address@hidden
+(put 'delete-region 'disabled t)
address@hidden example
+
address@hidden File}.
+
+  If the value of the @code{disabled} property is a string, that string
+is included in the message printed when the command is used:
+
address@hidden
+(put 'delete-region 'disabled
+     "Text deleted this way cannot be yanked back!\n")
address@hidden example
+
address@hidden disable-command
address@hidden enable-command
+  You can disable a command either by editing the init file
+directly or with the command @kbd{M-x disable-command}, which edits the
+init file for you.  @xref{Init File}.
+
+  When you attempt to invoke a disabled command interactively in Emacs,
+a window is displayed containing the command's name, its
+documentation, and some instructions on what to do next; then
+Emacs asks for input saying whether to execute the command as requested,
+enable it and execute, or cancel it.  If you decide to enable the
+command, you are asked whether to do this permanently or just for the
+current session.  Enabling permanently works by automatically editing
+your init file.  You can use @kbd{M-x enable-command} at any
+time to enable any command permanently.
+
+  Whether a command is disabled is independent of what key is used to
+invoke it; it also applies if the command is invoked using @kbd{M-x}.
+Disabling a command has no effect on calling it as a function from Lisp
+programs.
+
address@hidden Syntax
address@hidden The Syntax Table
address@hidden syntax table
+
+  All the Emacs commands which parse words or balance parentheses are
+controlled by the @dfn{syntax table}.  The syntax table specifies which
+characters are opening delimiters, which are parts of words, which are
+string quotes, and so on.  Actually, each major mode has its own syntax
+table (though sometimes related major modes use the same one) which it
+installs in each buffer that uses that major mode.  The syntax table
+installed in the current buffer is the one that all commands use, so we
+call it ``the'' syntax table.  A syntax table is a Lisp object, a vector of
+length 256 whose elements are numbers.
+
address@hidden
+* Entry: Syntax Entry.    What the syntax table records for each character.
+* Change: Syntax Change.  How to change the information.
address@hidden menu
+
address@hidden Syntax Entry
address@hidden Information About Each Character
+
+  The syntax table entry for a character is a number that encodes six
+pieces of information:
+
address@hidden @bullet
address@hidden
+The syntactic class of the character, represented as a small integer
address@hidden
+The matching delimiter, for delimiter characters only
+(the matching delimiter of @samp{(} is @samp{)}, and vice versa)
address@hidden
+A flag saying whether the character is the first character of a
+two-character comment starting sequence
address@hidden
+A flag saying whether the character is the second character of a
+two-character comment starting sequence
address@hidden
+A flag saying whether the character is the first character of a
+two-character comment ending sequence
address@hidden
+A flag saying whether the character is the second character of a
+two-character comment ending sequence
address@hidden itemize
+
+  The syntactic classes are stored internally as small integers, but are
+usually described to or by the user with characters.  For example, @samp{(}
+is used to specify the syntactic class of opening delimiters.  Here is a
+table of syntactic classes, with the characters that specify them.
+
address@hidden @samp
address@hidden @w{-}
+The class of whitespace characters.  Please don't use the formerly
+advertised @w{ }, which is not supported by GNU Emacs.
address@hidden w
+The class of word-constituent characters.
address@hidden _
+The class of characters that are part of symbol names but not words.
+This class is represented by @samp{_} because the character @samp{_}
+has this class in both C and Lisp.
address@hidden .
+The class of punctuation characters that do not fit into any other
+special class.
address@hidden (
+The class of opening delimiters.
address@hidden )
+The class of closing delimiters.
address@hidden '
+The class of expression-adhering characters.  These characters are
+part of a symbol if found within or adjacent to one, and are part
+of a following expression if immediately preceding one, but are like
+whitespace if surrounded by whitespace.
address@hidden "
+The class of string-quote characters.  They match each other in pairs,
+and the characters within the pair all lose their syntactic
+significance except for the @samp{\} and @samp{/} classes of escape
+characters, which can be used to include a string-quote inside the
+string.
address@hidden $
+The class of self-matching delimiters.  This is intended for @TeX{}'s
address@hidden, which is used both to enter and leave math mode.  Thus,
+a pair of matching @samp{$} characters surround each piece of math mode
address@hidden input.  A pair of adjacent @samp{$} characters act like a single
+one for purposes of matching.
+
address@hidden /
+The class of escape characters that always just deny the following
+character its special syntactic significance.  The character after one
+of these escapes is always treated as alphabetic.
address@hidden \
+The class of C-style escape characters.  In practice, these are
+treated just like @samp{/}-class characters, because the extra
+possibilities for C escapes (such as being followed by digits) have no
+effect on where the containing expression ends.
address@hidden <
+The class of comment-starting characters.  Only single-character
+comment starters (such as @samp{;} in Lisp mode) are represented this
+way.
address@hidden >
+The class of comment-ending characters.  Newline has this syntax in
+Lisp mode.
address@hidden table
+
address@hidden parse-sexp-ignore-comments
+  The characters flagged as part of two-character comment delimiters can
+have other syntactic functions most of the time.  For example, @samp{/} and
address@hidden in C code, when found separately, have nothing to do with
+comments.  The comment-delimiter significance overrides when the pair of
+characters occur together in the proper order.  Only the list and sexp
+commands use the syntax table to find comments; the commands specifically
+for comments have other variables that tell them where to find comments.
+Moreover, the list and sexp commands notice comments only if
address@hidden is address@hidden  This variable is set
+to @code{nil} in modes where comment-terminator sequences are liable to
+appear where there is no comment, for example, in Lisp mode where the
+comment terminator is a newline but not every newline ends a comment.
+
address@hidden Syntax Change
address@hidden Altering Syntax Information
+
+  It is possible to alter a character's syntax table entry by storing a new
+number in the appropriate element of the syntax table, but it would be hard
+to determine what number to use.  Emacs therefore provides a command that
+allows you to specify the syntactic properties of a character in a
+convenient way.
+
address@hidden modify-syntax-entry
+  @kbd{M-x modify-syntax-entry} is the command to change a character's
+syntax.  It can be used interactively and is also used by major
+modes to initialize their own syntax tables.  Its first argument is the
+character to change.  The second argument is a string that specifies the
+new syntax.  When called from Lisp code, there is a third, optional
+argument, which specifies the syntax table in which to make the change.  If
+not supplied, or if this command is called interactively, the third
+argument defaults to the current buffer's syntax table.
+
address@hidden
address@hidden
+The first character in the string specifies the syntactic class.  It
+is one of the characters in the previous table (@pxref{Syntax Entry}).
+
address@hidden
+The second character is the matching delimiter.  For a character that
+is not an opening or closing delimiter, this should be a space, and may
+be omitted if no following characters are needed.
+
address@hidden
+The remaining characters are flags.  The flag characters allowed are:
+
address@hidden @samp
address@hidden 1
+Flag this character as the first of a two-character comment starting sequence.
address@hidden 2
+Flag this character as the second of a two-character comment starting sequence.
address@hidden 3
+Flag this character as the first of a two-character comment ending sequence.
address@hidden 4
+Flag this character as the second of a two-character comment ending sequence.
address@hidden table
address@hidden enumerate
+
address@hidden C-h s
address@hidden describe-syntax
+  Use @kbd{C-h s} (@code{describe-syntax}) to display a description of
+the contents of the current syntax table.  The description of each
+character includes both the string you have to pass to
address@hidden to set up that character's current syntax,
+and some English to explain that string if necessary.
+
address@hidden Init File
address@hidden The Init File
address@hidden init file
address@hidden Emacs initialization file
address@hidden key rebinding, permanent
address@hidden rebinding keys, permanently
+
+  When you start Emacs, it normally loads either @file{.xemacs/init.el}
+or the file @file{.emacs} (whichever comes first) in your home directory.
+This file, if it exists, should contain Lisp code.  It is called your
+initialization file or @dfn{init file}.  Use the command line switch
address@hidden to tell Emacs whether to load an init file (@pxref{Entering
+Emacs}).  Use the command line switch @samp{-user-init-file}
+(@pxref{Command Switches}) to tell Emacs to load a different file
+instead of @file{~/.xemacs/init.el}/@file{~/.emacs}.
+
+When the init file is read, the variable @code{user-init-file} says
+which init file was loaded.
+
+  At some sites there is a @dfn{default init file}, which is the
+library named @file{default.el}, found via the standard search path for
+libraries.  The Emacs distribution contains no such library; your site
+may create one for local customizations.  If this library exists, it is
+loaded whenever you start Emacs.  But your init file, if any, is loaded
+first; if it sets @code{inhibit-default-init} address@hidden, then
address@hidden is not loaded.
+
+  If you have a large amount of code in your init file, you should
+byte-compile it to @file{~/.xemacs/init.elc} or @file{~/.emacs.elc}.
+
address@hidden
+* Init Syntax::     Syntax of constants in Emacs Lisp.
+* Init Examples::   How to do some things with an init file.
+* Terminal Init::   Each terminal type can have an init file.
address@hidden menu
+
address@hidden Init Syntax
address@hidden Init File Syntax
+
+  The init file contains one or more Lisp function call
+expressions.  Each consists of a function name followed by
+arguments, all surrounded by parentheses.  For example, @code{(setq
+fill-column 60)} represents a call to the function @code{setq} which is
+used to set the variable @code{fill-column} (@pxref{Filling}) to 60.
+
+  The second argument to @code{setq} is an expression for the new value
+of the variable.  This can be a constant, a variable, or a function call
+expression.  In the init file, constants are used most of the time.
+They can be:
+
address@hidden @asis
address@hidden Numbers
+Integers are written in decimal, with an optional initial minus sign.
+
+If a sequence of digits is followed by a period and another sequence
+of digits, it is interpreted as a floating point number.
+
+The number prefixes @samp{#b}, @samp{#o}, and @samp{#x} are supported to
+represent numbers in binary, octal, and hexadecimal notation (or radix).
+
address@hidden Strings
+Lisp string syntax is the same as C string syntax with a few extra
+features.  Use a double-quote character to begin and end a string constant.
+
+Newlines and special characters may be present literally in strings.  They
+can also be represented as backslash sequences: @samp{\n} for newline,
address@hidden for backspace, @samp{\r} for return, @samp{\t} for tab,
address@hidden for formfeed (control-l), @samp{\e} for escape, @samp{\\} for a
+backslash, @samp{\"} for a double-quote, or @address@hidden for the
+character whose octal code is @var{ooo}.  Backslash and double-quote are
+the only characters for which backslash sequences are mandatory.
+
+You can use @samp{\C-} as a prefix for a control character, as in
address@hidden for ASCII Control-S, and @samp{\M-} as a prefix for
+a Meta character, as in @samp{\M-a} for Meta-A or @samp{\M-\C-a} for
address@hidden
+
address@hidden Characters
+Lisp character constant syntax consists of a @samp{?} followed by
+either a character or an escape sequence starting with @samp{\}.
+Examples: @code{?x}, @code{?\n}, @code{?\"}, @code{?\)}.  Note that
+strings and characters are not interchangeable in Lisp; some contexts
+require one and some contexts require the other.
+
address@hidden True
address@hidden stands for `true'.
+
address@hidden False
address@hidden stands for `false'.
+
address@hidden Other Lisp objects
+Write a single-quote (') followed by the Lisp object you want.
address@hidden table
+
address@hidden Init Examples
address@hidden Init File Examples
+
+  Here are some examples of doing certain commonly desired things with
+Lisp expressions:
+
address@hidden @bullet
address@hidden
+Make @key{TAB} in C mode just insert a tab if point is in the middle of a
+line.
+
address@hidden
+(setq c-tab-always-indent nil)
address@hidden example
+
+Here we have a variable whose value is normally @code{t} for `true'
+and the alternative is @code{nil} for `false'.
+
address@hidden
+Make searches case sensitive by default (in all buffers that do not
+override this).
+
address@hidden
+(setq-default case-fold-search nil)
address@hidden example
+
+This sets the default value, which is effective in all buffers that do
+not have local values for the variable.  Setting @code{case-fold-search}
+with @code{setq} affects only the current buffer's local value, which
+is probably not what you want to do in an init file.
+
address@hidden
+Make Text mode the default mode for new buffers.
+
address@hidden
+(setq default-major-mode 'text-mode)
address@hidden example
+
+Note that @code{text-mode} is used because it is the command for entering
+the mode we want.  A single-quote is written before it to make a symbol
+constant; otherwise, @code{text-mode} would be treated as a variable name.
+
address@hidden
+Turn on Auto Fill mode automatically in Text mode and related modes.
+
address@hidden
+(setq text-mode-hook
+  '(lambda () (auto-fill-mode 1)))
address@hidden example
+
+Here we have a variable whose value should be a Lisp function.  The
+function we supply is a list starting with @code{lambda}, and a single
+quote is written in front of it to make it (for the purpose of this
address@hidden) a list constant rather than an expression.  Lisp functions
+are not explained here; for mode hooks it is enough to know that
address@hidden(auto-fill-mode 1)} is an expression that will be executed when
+Text mode is entered.  You could replace it with any other expression
+that you like, or with several expressions in a row.
+
address@hidden
+(setq text-mode-hook 'turn-on-auto-fill)
address@hidden example
+
+This is another way to accomplish the same result.
address@hidden is a symbol whose function definition is
address@hidden(lambda () (auto-fill-mode 1))}.
+
address@hidden
+Load the installed Lisp library named @file{foo} (actually a file
address@hidden or @file{foo.el} in a standard Emacs directory).
+
address@hidden
+(load "foo")
address@hidden example
+
+When the argument to @code{load} is a relative pathname, not starting
+with @samp{/} or @samp{~}, @code{load} searches the directories in
address@hidden (@pxref{Loading}).
+
address@hidden
+Load the compiled Lisp file @file{foo.elc} from your home directory.
+
address@hidden
+(load "~/foo.elc")
address@hidden example
+
+Here an absolute file name is used, so no searching is done.
+
address@hidden
+Rebind the key @kbd{C-x l} to run the function @code{make-symbolic-link}.
+
address@hidden
+(global-set-key "\C-xl" 'make-symbolic-link)
address@hidden example
+
+or
+
address@hidden
+(define-key global-map "\C-xl" 'make-symbolic-link)
address@hidden example
+
+Note once again the single-quote used to refer to the symbol
address@hidden instead of its value as a variable.
+
address@hidden
+Do the same thing for C mode only.
+
address@hidden
+(define-key c-mode-map "\C-xl" 'make-symbolic-link)
address@hidden example
+
address@hidden
+Bind the function key @key{F1} to a command in C mode.
+Note that the names of function keys must be lower case.
+
address@hidden
+(define-key c-mode-map 'f1 'make-symbolic-link)
address@hidden example
+
address@hidden
+Bind the shifted version of @key{F1} to a command.
+
address@hidden
+(define-key c-mode-map '(shift f1) 'make-symbolic-link)
address@hidden example
+
address@hidden
+Redefine all keys which now run @code{next-line} in Fundamental mode
+to run @code{forward-line} instead.
+
address@hidden
+(substitute-key-definition 'next-line 'forward-line
+                           global-map)
address@hidden example
+
address@hidden
+Make @kbd{C-x C-v} undefined.
+
address@hidden
+(global-unset-key "\C-x\C-v")
address@hidden example
+
+One reason to undefine a key is so that you can make it a prefix.
+Simply defining @kbd{C-x C-v @var{anything}} would make @kbd{C-x C-v}
+a prefix, but @kbd{C-x C-v} must be freed of any non-prefix definition
+first.
+
address@hidden
+Make @samp{$} have the syntax of punctuation in Text mode.
+Note the use of a character constant for @samp{$}.
+
address@hidden
+(modify-syntax-entry ?\$ "." text-mode-syntax-table)
address@hidden example
+
address@hidden
+Enable the use of the command @code{eval-expression} without confirmation.
+
address@hidden
+(put 'eval-expression 'disabled nil)
address@hidden example
address@hidden itemize
+
address@hidden Terminal Init
address@hidden Terminal-Specific Initialization
+
+  Each terminal type can have a Lisp library to be loaded into Emacs when
+it is run on that type of terminal.  For a terminal type named
address@hidden, the library is called @file{term/@var{termtype}} and it is
+found by searching the directories @code{load-path} as usual and trying the
+suffixes @samp{.elc} and @samp{.el}.  Normally it appears in the
+subdirectory @file{term} of the directory where most Emacs libraries are
address@hidden
+
+  The usual purpose of the terminal-specific library is to define the
+escape sequences used by the terminal's function keys using the library
address@hidden  See the file
address@hidden/vt100.el} for an example of how this is address@hidden
+
+  When the terminal type contains a hyphen, only the part of the name
+before the first hyphen is significant in choosing the library name.
+Thus, terminal types @samp{aaa-48} and @samp{aaa-30-rv} both use
+the library @file{term/aaa}.  The code in the library can use
address@hidden(getenv "TERM")} to find the full terminal type address@hidden
+
address@hidden term-file-prefix
+  The library's name is constructed by concatenating the value of the
+variable @code{term-file-prefix} and the terminal type.  Your init
+file can prevent the loading of the terminal-specific library by setting
address@hidden to @code{nil}.  @xref{Init File}.
+
address@hidden term-setup-hook
+  The value of the variable @code{term-setup-hook}, if not @code{nil}, is
+called as a function of no arguments at the end of Emacs initialization,
+after both your init file and any terminal-specific library have been
+read.  @xref{Init File}.  You can set the value in the init file to
+override part of any of the terminal-specific libraries and to define
+initializations for terminals that do not have a address@hidden
+
address@hidden Audible Bell
address@hidden Changing the Bell Sound
address@hidden audible bell, changing
address@hidden bell, changing
address@hidden sound-alist
address@hidden load-default-sounds
address@hidden play-sound
+
+You can now change how the audible bell sounds using the variable
address@hidden
+
address@hidden's value is an list associating symbols with, among
+other things, strings of audio-data.  When @code{ding} is called with
+one of the symbols, the associated sound data is played instead of the
+standard beep.  This only works if you are logged in on the console of a
+machine with audio hardware. To listen to a sound of the provided type,
+call the function @code{play-sound} with the argument @var{sound}. You
+can also set the volume of the sound with the optional argument 
address@hidden@refill
address@hidden ding
+
+Each element of @code{sound-alist} is a list describing a sound.
+The first element of the list is the name of the sound being defined.
+Subsequent elements of the list are alternating keyword/value pairs:
+
address@hidden @code
address@hidden sound
+A string of raw sound data, or the name of another sound to play.   
+The symbol @code{t} here means use the default X beep.
+
address@hidden volume
+An integer from 0-100, defaulting to @code{bell-volume}.
+
address@hidden pitch
+If using the default X beep, the pitch (Hz) to generate.
+
address@hidden duration
+If using the default X beep, the duration (milliseconds).
address@hidden table
+
+For compatibility, elements of `sound-alist' may also be of the form:
+
address@hidden
+( @var{sound-name} . @var{<sound>} )
+( @var{sound-name} @var{<volume>} @var{<sound>} )
address@hidden example
+
+You should probably add things to this list by calling the function
address@hidden
+
+Note that you can only play audio data if running on the console screen
+of a machine with audio hardware which emacs understands, which at this
+time means a Sun SparcStation, SGI, or HP9000s700.
+
+Also note that the pitch, duration, and volume options are available
+everywhere, but most X servers ignore the `pitch' option.
+
address@hidden bell-volume
+The variable @code{bell-volume} should be an integer from 0 to 100,
+with 100 being loudest, which controls how loud the sounds emacs makes
+should be.  Elements of the @code{sound-alist} may override this value.
+This variable applies to the standard X bell sound as well as sound files.
+
+If the symbol @code{t} is in place of a sound-string, Emacs uses the
+default X beep.  This allows you to define beep-types of 
+different volumes even when not running on the console.
+
address@hidden load-sound-file
+You can add things to this list by calling the function
address@hidden, which reads in an audio-file and adds its data to
+the sound-alist. You can specify the sound with the @var{sound-name}
+argument and the file into which the sounds are loaded with the
address@hidden argument. The optional @var{volume} argument sets the
+volume.
+
address@hidden (@var{filename sound-name} &optional @var{volume})}
+
+To load and install some sound files as beep-types, use the function
address@hidden (note that this only works if you are on
+display 0 of a machine with audio hardware).
+
+The following beep-types are used by Emacs itself. Other Lisp
+packages may use other beep types, but these are the ones that the C
+kernel of Emacs uses.
+
address@hidden @code
address@hidden auto-save-error
+An auto-save does not succeed
+
address@hidden command-error
+The Emacs command loop catches an error
+
address@hidden undefined-key
+You type a key that is undefined
+
address@hidden undefined-click
+You use an undefined mouse-click combination
+
address@hidden no-completion
+Completion was not possible
+
address@hidden y-or-n-p
+You type something other than the required @code{y} or @code{n}
+
address@hidden yes-or-no-p       
+You type something other than @code{yes} or @code{no}
address@hidden table
+
address@hidden  node-name,  next,  previous,  up
address@hidden Faces
address@hidden Faces
+
+XEmacs has objects called extents and faces.  An @dfn{extent}
+is a region of text and a @dfn{face} is a collection of textual
+attributes, such as fonts and colors.  Every extent is displayed in some
+face; therefore, changing the properties of a face immediately updates the
+display of all associated extents.  Faces can be frame-local: you can
+have a region of text that displays with completely different
+attributes when its buffer is viewed from a different X window.
+
+The display attributes of faces may be specified either in Lisp or through
+the X resource manager.
+
address@hidden Customizing Faces
+
+You can change the face of an extent with the functions in
+this section.  All the functions prompt for a @var{face} as an
+argument; use completion for a list of possible values.
+
address@hidden @kbd
address@hidden M-x invert-face
+Swap the foreground and background colors of the given @var{face}.
address@hidden M-x make-face-bold
+Make the font of the given @var{face} bold.  When called from a
+program, returns @code{nil} if this is not possible.
address@hidden M-x make-face-bold-italic
+Make the font of the given @var{face} bold italic.  
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-italic
+Make the font of the given @var{face} italic.  
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-unbold
+Make the font of the given @var{face} non-bold.  
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-unitalic
+Make the font of the given @var{face} non-italic.
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-larger
+Make the font of the given @var{face} a little larger.
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-smaller
+Make the font of the given @var{face} a little smaller.
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x set-face-background 
+Change the background color of the given @var{face}.
address@hidden M-x set-face-background-pixmap
+Change the background pixmap of the given @var{face}.
address@hidden M-x set-face-font 
+Change the font of the given @var{face}.
address@hidden M-x set-face-foreground
+Change the foreground color of the given @var{face}.
address@hidden M-x set-face-underline-p
+Change whether the given @var{face} is underlined.
address@hidden table
+
address@hidden make-face-larger
address@hidden make-face-smaller
+
address@hidden invert-face
+You can exchange the foreground and background color of the selected
address@hidden with the function @code{invert-face}. If the face does not
+specify both foreground and background, then its foreground and
+background are set to the background and foreground of the default face.
+When calling this from a program, you can supply the optional argument 
address@hidden to specify which frame is affected; otherwise, all frames
+are affected.
+
address@hidden make-face-bold
address@hidden make-face-bold-italic
address@hidden make-face-italic
address@hidden make-face-unbold
address@hidden make-face-unitalic
address@hidden face-frob-from-locale-first
+The work of @code{make-face-bold}, @code{make-face-bold-italic},
address@hidden, @code{make-face-unbold},
address@hidden functions is affected by
address@hidden variable.  If it is @code{nil}, those
+functions first try to manipulate device specific data like X font names
+to obtain the desired font face specification.  This may be unsuitable
+in environments using different font face specifications for different
+frames, non-Mule environments in particular.
+
+If the variable is address@hidden, those functions first try to figure
+out whether the face font is the same as one of predefined faces:
address@hidden, @code{bold}, @code{italic}, @code{bold-italic}.  If it
+is the same, then the new face font specification is set to be the same
+as that of a corresponding predefined face.  Thus if the predefined face
+is set up properly for different frames, the same will hold for the face
+being changed by the functions.  This is the behavior one might desire
+in non-Mule environments mentioned above: face being changed still looks
+right in all frames.
+
+How predefined faces might be set up for different frames in such an
+environments is described in @ref{Face Resources}.
+
address@hidden set-face-background
+You can set the background color of the specified @var{face} with the
+function @code{set-face-background}.  The argument @code{color} should
+be a string, the name of a color.  When called from a program, if the
+optional @var{frame} argument is provided, the face is changed only 
+in that frame; otherwise, it is changed in all frames.
+
address@hidden set-face-background-pixmap
+You can set the background pixmap of the specified @var{face} with the
+function @code{set-face-background-pixmap}.  The pixmap argument
address@hidden should be a string, the name of a file of pixmap data.  The
+directories listed in the @code{x-bitmap-file-path} variable are
+searched.  The bitmap may also be a list of the form @code{(@var{width
+height data})}, where @var{width} and @var{height} are the size in
+pixels, and @var{data} is a string containing the raw bits of the
+bitmap.  If the optional @var{frame} argument is provided, the face is
+changed only in that frame; otherwise, it is changed in all frames.
+
+The variable @code{x-bitmap-file-path} takes as a value a list of the
+directories in which X bitmap files may be found.  If the value is
address@hidden, the list is initialized from the @code{*bitmapFilePath}
+resource.
+
+If the environment variable @b{XBMLANGPATH} is set, then it is consulted
+before the @code{x-bitmap-file-path} variable.
+
address@hidden set-face-font
+You can set the font of the specified @var{face} with the function
address@hidden  The @var{font} argument should be a string, the
+name of a font.  When called from a program, if the
+optional @var{frame} argument is provided, the face is changed only 
+in that frame; otherwise, it is changed in all frames.
+
address@hidden set-face-foreground 
+You can set the foreground color of the specified @var{face} with the
+function @code{set-face-foreground}.  The argument @var{color} should be
+a string, the name of a color.  If the optional @var{frame} argument is
+provided, the face is changed only in that frame; otherwise, it is
+changed in all frames.
+
address@hidden set-face-underline-p
+You can set underline the specified @var{face} with the function
address@hidden The argument @var{underline-p} can be used
+to make underlining an attribute of the face or not. If the optional
address@hidden argument is provided, the face is changed only in that
+frame; otherwise, it is changed in all frames.
+
address@hidden Frame Components
address@hidden Frame Components
+
+You can control the presence and position of most frame components, such
+as the menubar, toolbars, and gutters.
+
+This section is not written yet.  Try the Lisp Reference Manual:
address@hidden,,,lispref,}, @ref{Toolbar Intro,,,lispref,}, and
address@hidden Intro,,,lispref,}.
+
address@hidden X Resources
address@hidden X Resources
address@hidden X resources
address@hidden x-create-frame
+
+Historically, XEmacs has used the X resource application class @samp{Emacs}
+for its resources.  Unfortunately, GNU Emacs uses the same application
+class, and resources are not compatible between the two Emacsen.  This
+sharing of the application class often leads to trouble if you want to
+run both variants.
+
+Starting with XEmacs 21, XEmacs uses the class @samp{XEmacs} if it finds
+any XEmacs resources in the resource database when the X connection is
+initialized.  Otherwise, it will use the class @samp{Emacs} for
+backwards compatibility.  The variable @var{x-emacs-application-class}
+may be consulted to determine the application class being used.
+
+The examples in this section assume the application class is @samp{Emacs}.
+
+The Emacs resources are generally set per-frame. Each Emacs frame can have 
+its own name or the same name as another, depending on the name passed to the 
address@hidden function.
+
+You can specify resources for all frames with the syntax:
+
address@hidden
+Emacs*parameter: value
address@hidden example
address@hidden
+
+or
+
address@hidden
+Emacs*EmacsFrame.parameter:value
address@hidden example
address@hidden
+
+You can specify resources for a particular frame with the syntax:
+
address@hidden
+Emacs*FRAME-NAME.parameter: value
address@hidden example
address@hidden
+
address@hidden
+* Geometry Resources::     Controlling the size and position of frames.
+* Iconic Resources::       Controlling whether frames come up iconic.
+* Resource List::          List of resources settable on a frame or device.
+* Face Resources::         Controlling faces using resources.
+* Widgets::                The widget hierarchy for XEmacs.
+* Menubar Resources::      Specifying resources for the menubar.
address@hidden menu
+
address@hidden Geometry Resources
address@hidden Geometry Resources
+
+To make the default size of all Emacs frames be 80 columns by 55 lines,
+do this:
+
address@hidden
+Emacs*EmacsFrame.geometry: 80x55
address@hidden example
address@hidden
+
+To set the geometry of a particular frame named @samp{fred}, do this:
+
address@hidden
+Emacs*fred.geometry: 80x55
address@hidden example
address@hidden
+
+Important! Do not use the following syntax:
+
address@hidden
+Emacs*geometry: 80x55
address@hidden example
address@hidden
+
+You should never use @code{*geometry} with any X application. It does
+not say "make the geometry of Emacs be 80 columns by 55 lines."  It
+really says, "make Emacs and all subwindows thereof be 80x55 in whatever
+units they care to measure in."  In particular, that is both telling the
+Emacs text pane to be 80x55 in characters, and telling the menubar pane
+to be 80x55 pixels, which is surely not what you want.
+
+As a special case, this geometry specification also works (and sets the
+default size of all Emacs frames to 80 columns by 55 lines):
+
address@hidden
+Emacs.geometry: 80x55
address@hidden example
address@hidden
+
+since that is the syntax used with most other applications (since most
+other applications have only one top-level window, unlike Emacs).  In
+general, however, the top-level shell (the unmapped ApplicationShell
+widget named @samp{Emacs} that is the parent of the shell widgets that
+actually manage the individual frames) does not have any interesting
+resources on it, and you should set the resources on the frames instead.
+
+The @code{-geometry} command-line argument sets only the geometry of the
+initial frame created by Emacs.
+
+A more complete explanation of geometry-handling is
+
address@hidden @bullet
address@hidden
+The @code{-geometry} command-line option sets the @code{Emacs.geometry}
+resource, that is, the geometry of the ApplicationShell.
+
address@hidden
+For the first frame created, the size of the frame is taken from the
+ApplicationShell if it is specified, otherwise from the geometry of the
+frame.
+
address@hidden
+For subsequent frames, the order is reversed: First the frame, and then
+the ApplicationShell.
+
address@hidden
+For the first frame created, the position of the frame is taken from the
+ApplicationShell (@code{Emacs.geometry}) if it is specified, otherwise
+from the geometry of the frame.
+
address@hidden
+For subsequent frames, the position is taken only from the frame, and 
+never from the ApplicationShell.
address@hidden itemize
+
+This is rather complicated, but it does seem to provide the most
+intuitive behavior with respect to the default sizes and positions of
+frames created in various ways.
+
address@hidden Iconic Resources
address@hidden Iconic Resources
+
+Analogous to @code{-geometry}, the @code{-iconic} command-line option
+sets the iconic flag of the ApplicationShell (@code{Emacs.iconic}) and
+always applies to the first frame created regardless of its name.
+However, it is possible to set the iconic flag on particular frames (by
+name) by using the @code{Emacs*FRAME-NAME.iconic} resource.
+
address@hidden Resource List
address@hidden Resource List
+
+Emacs frames accept the following resources:
+
address@hidden @asis
address@hidden @code{geometry} (class @code{Geometry}): string
+Initial geometry for the frame.  @xref{Geometry Resources}, for a
+complete discussion of how this works.
+
address@hidden @code{iconic} (class @code{Iconic}): boolean
+Whether this frame should appear in the iconified state.
+
address@hidden @code{internalBorderWidth} (class @code{InternalBorderWidth}): 
int
+How many blank pixels to leave between the text and the edge of the 
+window.
+
address@hidden @code{interline} (class @code{Interline}): int
+How many pixels to leave between each line (may not be implemented).
+
address@hidden @code{menubar} (class @code{Menubar}): boolean
+Whether newly-created frames should initially have a menubar.  Set to
+true by default.
+
address@hidden @code{initiallyUnmapped} (class @code{InitiallyUnmapped}): 
boolean
+Whether XEmacs should leave the initial frame unmapped when it starts
+up.  This is useful if you are starting XEmacs as a server (e.g. in
+conjunction with gnuserv or the external client widget).  You can also
+control this with the @code{-unmapped} command-line option.
+
address@hidden @code{barCursor} (class @code{BarColor}): boolean
+Whether the cursor should be displayed as a bar, or the traditional box.
+
address@hidden @code{cursorColor} (class @code{CursorColor}): color-name
+The color of the text cursor.
+
address@hidden @code{scrollBarWidth} (class @code{ScrollBarWidth}): integer
+How wide the vertical scrollbars should be, in pixels; 0 means no
+vertical scrollbars.  You can also use a resource specification of the
+form @code{*scrollbar.width}, or the usual toolkit scrollbar resources:
address@hidden (Motif), @code{*XlwScrollBar.width} (Lucid),
+or @code{*Scrollbar.thickness} (Athena).  We don't recommend that you
+use the toolkit resources, though, because they're dependent on how
+exactly your particular build of XEmacs was configured.
+
address@hidden @code{scrollBarHeight} (class @code{ScrollBarHeight}): integer
+How high the horizontal scrollbars should be, in pixels; 0 means no
+horizontal scrollbars.  You can also use a resource specification of the
+form @code{*scrollbar.height}, or the usual toolkit scrollbar resources:
address@hidden (Motif), @code{*XlwScrollBar.height} (Lucid),
+or @code{*Scrollbar.thickness} (Athena).  We don't recommend that you use
+the toolkit resources, though, because they're dependent on how exactly
+your particular build of XEmacs was configured.
+
address@hidden @code{scrollBarPlacement} (class @code{ScrollBarPlacement}): 
string
+Where the horizontal and vertical scrollbars should be positioned.  This
+should be one of the four strings @samp{BOTTOM_LEFT},
address@hidden, @samp{TOP_LEFT}, and @samp{TOP_RIGHT}.  Default is
address@hidden for the Motif and Lucid scrollbars and
address@hidden for the Athena scrollbars.
+
address@hidden @code{topToolBarHeight} (class @code{TopToolBarHeight}): integer
address@hidden @code{bottomToolBarHeight} (class @code{BottomToolBarHeight}): 
integer
address@hidden @code{leftToolBarWidth} (class @code{LeftToolBarWidth}): integer
address@hidden @code{rightToolBarWidth} (class @code{RightToolBarWidth}): 
integer
+Height and width of the four possible toolbars.
+
address@hidden @code{topToolBarShadowColor} (class 
@code{TopToolBarShadowColor}): color-name
address@hidden @code{bottomToolBarShadowColor} (class 
@code{BottomToolBarShadowColor}): color-name
+Color of the top and bottom shadows for the toolbars.  NOTE: These resources
+do @emph{not} have anything to do with the top and bottom toolbars (i.e. the
+toolbars at the top and bottom of the frame)!  Rather, they affect the top
+and bottom shadows around the edges of all four kinds of toolbars.
+
address@hidden @code{topToolBarShadowPixmap} (class 
@code{TopToolBarShadowPixmap}): pixmap-name
address@hidden @code{bottomToolBarShadowPixmap} (class 
@code{BottomToolBarShadowPixmap}): pixmap-name
+Pixmap of the top and bottom shadows for the toolbars.  If set, these
+resources override the corresponding color resources. NOTE: These
+resources do @emph{not} have anything to do with the top and bottom
+toolbars (i.e. the toolbars at the top and bottom of the frame)!
+Rather, they affect the top and bottom shadows around the edges of all
+four kinds of toolbars.
+
address@hidden @code{toolBarShadowThickness} (class 
@code{ToolBarShadowThickness}): integer
+Thickness of the shadows around the toolbars, in pixels.
+
address@hidden @code{visualBell} (class @code{VisualBell}): boolean
+Whether XEmacs should flash the screen rather than making an audible beep.
+
address@hidden @code{bellVolume} (class @code{BellVolume}): integer
+Volume of the audible beep.
+
address@hidden @code{useBackingStore} (class @code{UseBackingStore}): boolean
+Whether XEmacs should set the backing-store attribute of the X windows
+it creates.  This increases the memory usage of the X server but decreases
+the amount of X traffic necessary to update the screen, and is useful
+when the connection to the X server goes over a low-bandwidth line
+such as a modem connection.
address@hidden table
+
+Emacs devices accept the following resources:
+
address@hidden @asis
address@hidden @code{textPointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over text.  This resource is used to
+initialize the variable @code{x-pointer-shape}.
+
address@hidden @code{selectionPointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over a selectable text region (an
+extent with the @samp{highlight} property; for example, an Info
+cross-reference).  This resource is used to initialize the variable
address@hidden
+
address@hidden @code{spacePointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over a blank space in a buffer (that
+is, after the end of a line or after the end-of-file).  This resource is
+used to initialize the variable @code{x-nontext-pointer-shape}.
+
address@hidden @code{modeLinePointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over a modeline.  This resource is
+used to initialize the variable @code{x-mode-pointer-shape}.
+
address@hidden @code{gcPointer} (class @code{Cursor}): cursor-name
+The cursor to display when a garbage-collection is in progress.  This
+resource is used to initialize the variable @code{x-gc-pointer-shape}.
+
address@hidden @code{scrollbarPointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over the scrollbar.  This resource
+is used to initialize the variable @code{x-scrollbar-pointer-shape}.
+
address@hidden @code{pointerColor} (class @code{Foreground}): color-name
address@hidden @code{pointerBackground} (class @code{Background}): color-name
+The foreground and background colors of the mouse cursor.  These
+resources are used to initialize the variables
address@hidden and @code{x-pointer-background-color}.
address@hidden table
+
address@hidden Face Resources
address@hidden Face Resources
+
+The attributes of faces are also per-frame. They can be specified as:
+
address@hidden
+Emacs.FACE_NAME.parameter: value
address@hidden example
address@hidden
+
+or
+
address@hidden
+Emacs*FRAME_NAME.FACE_NAME.parameter: value
address@hidden example
address@hidden
+
+Faces accept the following resources:
+
address@hidden @asis
address@hidden @code{attributeFont} (class @code{AttributeFont}): font-name
+The font of this face.
+
address@hidden @code{attributeForeground} (class @code{AttributeForeground}): 
color-name
address@hidden @code{attributeBackground} (class @code{AttributeBackground}): 
color-name
+The foreground and background colors of this face.
+
address@hidden @code{attributeBackgroundPixmap} (class 
@code{AttributeBackgroundPixmap}): file-name
+The name of an @sc{xbm} file (or @sc{xpm} file, if your version of Emacs
+supports @sc{xpm}), to use as a background stipple.
+
address@hidden @code{attributeUnderline} (class @code{AttributeUnderline}): 
boolean
+Whether text in this face should be underlined.
address@hidden table
+
+All text is displayed in some face, defaulting to the face named
address@hidden  To set the font of normal text, use
address@hidden To set it in the frame named
address@hidden, use @code{Emacs*fred.default.attributeFont}.
+
+These are the names of the predefined faces:
+
address@hidden @code
address@hidden default
+Everything inherits from this.
+
address@hidden bold
+If this is not specified in the resource database, Emacs tries to find a
+bold version of the font of the default face.
+
address@hidden italic
+If this is not specified in the resource database, Emacs tries to find
+an italic version of the font of the default face.
+
address@hidden bold-italic
+If this is not specified in the resource database, Emacs tries to find a
+bold-italic version of the font of the default face.
+
address@hidden modeline
+This is the face that the modeline is displayed in.  If not specified in
+the resource database, it is determined from the default face by
+reversing the foreground and background colors.
+
address@hidden highlight
+This is the face that highlighted extents (for example, Info
+cross-references and possible completions, when the mouse passes over
+them) are displayed in.
+
address@hidden left-margin
address@hidden right-margin
+These are the faces that the left and right annotation margins are
+displayed in.
+
address@hidden zmacs-region
+This is the face that mouse selections are displayed in.
+ 
address@hidden isearch
+This is the face that the matched text being searched for is displayed
+in.
+
address@hidden info-node
+This is the face of info menu items.  If unspecified, it is copied from
address@hidden
+
address@hidden info-xref
+This is the face of info cross-references.  If unspecified, it is copied
+from @code{bold}. (Note that, when the mouse passes over a
+cross-reference, the cross-reference's face is determined from a
+combination of the @code{info-xref} and @code{highlight} faces.)
address@hidden table
+
+Other packages might define their own faces; to see a list of all faces,
+use any of the interactive face-manipulation commands such as
address@hidden and type @samp{?} when you are prompted for the
+name of a face.
+
+If the @code{bold}, @code{italic}, and @code{bold-italic} faces are not
+specified in the resource database, then XEmacs attempts to derive them
+from the font of the default face.  It can only succeed at this if you
+have specified the default font using the XLFD (X Logical Font
+Description) format, which looks like
+
address@hidden
+*-courier-medium-r-*-*-*-120-*-*-*-*-*-*
address@hidden example
address@hidden
+
+If you use any of the other, less strict font name formats, some of which
+look like
+
address@hidden
+lucidasanstypewriter-12
+fixed
+9x13
address@hidden example
+
+then XEmacs won't be able to guess the names of the bold and italic
+versions.  All X fonts can be referred to via XLFD-style names, so you
+should use those forms.  See the man pages for @samp{X(1)},
address@hidden(1)}, and @samp{xfontsel(1)}.
+
address@hidden Widgets
address@hidden Widgets
+
+There are several structural widgets between the terminal EmacsFrame
+widget and the top level ApplicationShell; the exact names and types of
+these widgets change from release to release (for example, they changed
+between 19.8 and 19.9, 19.9 and 19.10, and 19.10 and 19.12) and are
+subject to further change in the future, so you should avoid mentioning
+them in your resource database.  The above-mentioned syntaxes should be
+forward- compatible.  As of 19.13, the exact widget hierarchy is as
+follows:
+
address@hidden
+INVOCATION-NAME            "shell"       "container"     FRAME-NAME
+x-emacs-application-class  "EmacsShell"  "EmacsManager"  "EmacsFrame"
address@hidden example
+
+where INVOCATION-NAME is the terminal component of the name of the
+XEmacs executable (usually @samp{xemacs}), and
address@hidden is generally @samp{Emacs}.
+
address@hidden Menubar Resources
address@hidden Menubar Resources
+
+As the menubar is implemented as a widget which is not a part of XEmacs
+proper, it does not use the face mechanism for specifying fonts and
+colors: It uses whatever resources are appropriate to the type of widget
+which is used to implement it.
+
+If Emacs was compiled to use only the Lucid Motif-lookalike menu widgets,
+then one way to specify the font of the menubar would be
+
address@hidden
+Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
address@hidden example
+
+If both the Lucid Motif-lookalike menu widgets and X Font Sets are 
+configured to allow multilingual menubars, then one uses
+
address@hidden
+*menubar*FontSet:       -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \
+                        -*-*-*-*-*-*-*-120-*-jisx0208.1983-0
address@hidden example
+
+That would specify fonts for a Japanese menubar.  Specifying only one
+XLFD is acceptable; specifying more than one for a given registry
+(language) is also allowed.  When X Font Sets are configured, some .font
+resources (eg, menubars) are ignored in favor of the corresponding
+.fontSet resources.
+
+If the Motif library is being used, then one would have to use 
+
address@hidden
+Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
address@hidden example
+
+because the Motif library uses the @code{fontList} resource name instead
+of @code{font}, which has subtly different semantics.
+
+The same is true of the scrollbars: They accept whichever resources are 
+appropriate for the toolkit in use.
+
+
address@hidden Quitting, Lossage, Customization, Top
address@hidden Quitting and Aborting
address@hidden quitting
+
address@hidden @kbd
address@hidden C-g
+Quit.  Cancel running or partially typed command.
address@hidden C-]
+Abort innermost recursive editing level and cancel the command which
+invoked it (@code{abort-recursive-edit}).
address@hidden M-x top-level
+Abort all recursive editing levels that are currently executing.
address@hidden C-x u
+Cancel an already-executed command, usually (@code{undo}).
address@hidden table
+
+  There are two ways of cancelling commands which are not finished
+executing: @dfn{quitting} with @kbd{C-g}, and @dfn{aborting} with @kbd{C-]}
+or @kbd{M-x top-level}.  Quitting is cancelling a partially typed command
+or one which is already running.  Aborting is getting out of a recursive
+editing level and cancelling the command that invoked the recursive edit.
+
address@hidden quitting
address@hidden C-g
+  Quitting with @kbd{C-g} is used for getting rid of a partially typed
+command or a numeric argument that you don't want.  It also stops a
+running command in the middle in a relatively safe way, so you can use
+it if you accidentally start executing a command that takes a long
+time.  In particular, it is safe to quit out of killing; either your
+text will @var{all} still be there, or it will @var{all} be in the kill
+ring (or maybe both).  Quitting an incremental search does special
+things documented under searching; in general, it may take two
+successive @kbd{C-g} characters to get out of a search.  @kbd{C-g} works
+by setting the variable @code{quit-flag} to @code{t} the instant
address@hidden is typed; Emacs Lisp checks this variable frequently and quits
+if it is address@hidden  @kbd{C-g} is only actually executed as a
+command if it is typed while Emacs is waiting for input.
+
+If you quit twice in a row before the first @kbd{C-g} is recognized, you
+activate the ``emergency escape'' feature and return to the shell.
address@hidden Escape}.
+
address@hidden recursive editing level
address@hidden editing level, recursive
address@hidden aborting
address@hidden abort-recursive-edit
address@hidden C-]
+  You can use @kbd{C-]} (@code{abort-recursive-edit}) to get out
+of a recursive editing level and cancel the command which invoked it.
+Quitting with @kbd{C-g} does not do this, and could not do this because it
+is used to cancel a partially typed command @i{within} the recursive
+editing level.  Both operations are useful.  For example, if you are in the
+Emacs debugger (@pxref{Lisp Debug}) and have typed @kbd{C-u 8} to enter a
+numeric argument, you can cancel that argument with @kbd{C-g} and remain in
+the debugger.
+
address@hidden top-level
+  The command @kbd{M-x top-level} is equivalent to ``enough'' @kbd{C-]}
+commands to get you out of all the levels of recursive edits that you are
+in.  @kbd{C-]} only gets you out one level at a time, but @kbd{M-x top-level}
+goes out all levels at once.  Both @kbd{C-]} and @kbd{M-x top-level} are
+like all other commands and unlike @kbd{C-g} in that they are effective
+only when Emacs is ready for a command.  @kbd{C-]} is an ordinary key and
+has its meaning only because of its binding in the keymap.
address@hidden Edit}.
+
+  @kbd{C-x u} (@code{undo}) is not strictly speaking a way of cancelling a
+command, but you can think of it as cancelling a command already finished
+executing.  @xref{Undo}.
+
address@hidden Lossage, Bugs, Quitting, Top
address@hidden Dealing With Emacs Trouble
+
+  This section describes various conditions in which Emacs fails to work,
+and how to recognize them and correct them.
+
address@hidden
+* Stuck Recursive::    `[...]' in mode line around the parentheses.
+* Screen Garbled::     Garbage on the screen.
+* Text Garbled::       Garbage in the text.
+* Unasked-for Search:: Spontaneous entry to incremental search.
+* Emergency Escape::   Emergency escape---
+                        What to do if Emacs stops responding.
+* Total Frustration::  When you are at your wits' end.
address@hidden menu
+
address@hidden Stuck Recursive, Screen Garbled, Lossage, Lossage
address@hidden Recursive Editing Levels
+
+  Recursive editing levels are important and useful features of Emacs, but
+they can seem like malfunctions to the user who does not understand them.
+
+  If the mode line has square brackets @address@hidden around the parentheses
+that contain the names of the major and minor modes, you have entered a
+recursive editing level.  If you did not do this on purpose, or if you
+don't understand what that means, you should just get out of the recursive
+editing level.  To do so, type @kbd{M-x top-level}.  This is called getting
+back to top level.  @xref{Recursive Edit}.
+
address@hidden Screen Garbled, Text Garbled, Stuck Recursive, Lossage
address@hidden Garbage on the Screen
+
+  If the data on the screen looks wrong, the first thing to do is see
+whether the text is actually wrong.  Type @kbd{C-l}, to redisplay the
+entire screen.  If the text appears correct after this, the problem was
+entirely in the previous screen update.
+
+  Display updating problems often result from an incorrect termcap entry
+for the terminal you are using.  The file @file{etc/TERMS} in the Emacs
+distribution gives the fixes for known problems of this sort.
address@hidden contains general advice for these problems in one of its
+sections.  Very likely there is simply insufficient padding for certain
+display operations.  To investigate the possibility that you have this
+sort of problem, try Emacs on another terminal made by a different
+manufacturer.  If problems happen frequently on one kind of terminal but
+not another kind, the real problem is likely to be a bad termcap entry,
+though it could also be due to a bug in Emacs that appears for terminals
+that have or lack specific features.
+
address@hidden Text Garbled, Unasked-for Search, Screen Garbled, Lossage
address@hidden Garbage in the Text
+
+  If @kbd{C-l} shows that the text is wrong, try undoing the changes to it
+using @kbd{C-x u} until it gets back to a state you consider correct.  Also
+try @kbd{C-h l} to find out what command you typed to produce the observed
+results.
+
+  If a large portion of text appears to be missing at the beginning or
+end of the buffer, check for the word @samp{Narrow} in the mode line.
+If it appears, the text is still present, but marked off-limits.
+To make it visible again, type @kbd{C-x n w}.  @xref{Narrowing}.
+
address@hidden Unasked-for Search, Emergency Escape, Text Garbled, Lossage
address@hidden Spontaneous Entry to Incremental Search
+
+  If Emacs spontaneously displays @samp{I-search:} at the bottom of the
+screen, it means that the terminal is sending @kbd{C-s} and @kbd{C-q}
+according to the poorly designed xon/xoff ``flow control'' protocol.  You
+should try to prevent this by putting the terminal in a mode where it will
+not use flow control, or by giving it enough padding that it will never send a
address@hidden  If that cannot be done, you must tell Emacs to expect flow
+control to be used, until you can get a properly designed terminal.
+
+  Information on how to do these things can be found in the file
address@hidden in the Emacs distribution.
+
address@hidden Emergency Escape, Total Frustration, Unasked-for Search, Lossage
address@hidden Emergency Escape
+
+  Because at times there have been bugs causing Emacs to loop without
+checking @code{quit-flag}, a special feature causes Emacs to be suspended
+immediately if you type a second @kbd{C-g} while the flag is already set,
+so you can always get out of XEmacs.  Normally Emacs recognizes and
+clears @code{quit-flag} (and quits!) quickly enough to prevent this from
+happening.
+
+  When you resume Emacs after a suspension caused by multiple @kbd{C-g}, it
+asks two questions before going back to what it had been doing:
+
address@hidden
+Auto-save? (y or n)
+Abort (and dump core)? (y or n)
address@hidden example
+
address@hidden
+Answer each one with @kbd{y} or @kbd{n} followed by @key{RET}.
+
+  Saying @kbd{y} to @samp{Auto-save?} causes immediate auto-saving of all
+modified buffers in which auto-saving is enabled.
+
+  Saying @kbd{y} to @samp{Abort (and dump core)?} causes an illegal
+instruction to be executed, dumping core.  This is to enable a wizard to
+figure out why Emacs was failing to quit in the first place.  Execution
+does not continue after a core dump.  If you answer @kbd{n}, execution
+does continue.  With luck, Emacs will ultimately check
address@hidden and quit normally.  If not, and you type another
address@hidden, it is suspended again.
+
+  If Emacs is not really hung, but is just being slow, you may invoke
+the double @kbd{C-g} feature without really meaning to.  In that case,
+simply resume and answer @kbd{n} to both questions, and you will arrive
+at your former state.  Presumably the quit you requested will happen
+soon.
+
+  The address@hidden feature may be turned off when Emacs is running under
+a window system, since the window system always enables you to kill Emacs
+or to create another window and run another program.
+
address@hidden Total Frustration,, Emergency Escape, Lossage
address@hidden Help for Total Frustration
address@hidden Eliza
address@hidden doctor
+
+  If using Emacs (or something else) becomes terribly frustrating and none
+of the techniques described above solve the problem, Emacs can still help
+you.
+
+  First, if the Emacs you are using is not responding to commands, type
address@hidden C-g} to get out of it and then start a new one.
+
address@hidden doctor
+  Second, type @kbd{M-x doctor @key{RET}}.
+
+  The doctor will make you feel better.  Each time you say something to
+the doctor, you must end it by typing @key{RET} @key{RET}.  This lets the
+doctor know you are finished.
+
address@hidden Bugs,, Lossage, Top
address@hidden Reporting Bugs
+
address@hidden bugs
+  Sometimes you will encounter a bug in Emacs.  Although we cannot promise
+we can or will fix the bug, and we might not even agree that it is a bug,
+we want to hear about bugs you encounter in case we do want to fix them.
+
+  To make it possible for us to fix a bug, you must report it.  In order
+to do so effectively, you must know when and how to do it.
+
address@hidden When Is There a Bug
+
+  If Emacs executes an illegal instruction, or dies with an operating
+system error message that indicates a problem in the program (as opposed to
+something like ``disk full''), then it is certainly a bug.
+
+  If Emacs updates the display in a way that does not correspond to what is
+in the buffer, then it is certainly a bug.  If a command seems to do the
+wrong thing but the problem corrects itself if you type @kbd{C-l}, it is a
+case of incorrect display updating.
+
+  Taking forever to complete a command can be a bug, but you must make
+certain that it was really Emacs's fault.  Some commands simply take a long
+time.  Type @kbd{C-g} and then @kbd{C-h l} to see whether the input Emacs
+received was what you intended to type; if the input was such that you
address@hidden it should have been processed quickly, report a bug.  If you
+don't know whether the command should take a long time, find out by looking
+in the manual or by asking for assistance.
+
+  If a command you are familiar with causes an Emacs error message in a
+case where its usual definition ought to be reasonable, it is probably a
+bug.
+
+  If a command does the wrong thing, that is a bug.  But be sure you know
+for certain what it ought to have done.  If you aren't familiar with the
+command, or don't know for certain how the command is supposed to work,
+then it might actually be working right.  Rather than jumping to
+conclusions, show the problem to someone who knows for certain.
+
+  Finally, a command's intended definition may not be best for editing
+with.  This is a very important sort of problem, but it is also a matter of
+judgment.  Also, it is easy to come to such a conclusion out of ignorance
+of some of the existing features.  It is probably best not to complain
+about such a problem until you have checked the documentation in the usual
+ways, feel confident that you understand it, and know for certain that what
+you want is not available.  If you are not sure what the command is
+supposed to do after a careful reading of the manual, check the index and
+glossary for any terms that may be unclear.  If you still do not
+understand, this indicates a bug in the manual.  The manual's job is to
+make everything clear.  It is just as important to report documentation
+bugs as program bugs.
+
+  If the online documentation string of a function or variable disagrees
+with the manual, one of them must be wrong, so report the bug.
+
address@hidden How to Report a Bug
+
address@hidden emacs-version
+  When you decide that there is a bug, it is important to report it and to
+report it in a way which is useful.  What is most useful is an exact
+description of what commands you type, starting with the shell command to
+run Emacs, until the problem happens.  Always include the version number
+of Emacs that you are using; type @kbd{M-x emacs-version} to print this.
+
+  The most important principle in reporting a bug is to report @var{facts},
+not hypotheses or categorizations.  It is always easier to report the facts,
+but people seem to prefer to strain to posit explanations and report
+them instead.  If the explanations are based on guesses about how Emacs is
+implemented, they will be useless; we will have to try to figure out what
+the facts must have been to lead to such speculations.  Sometimes this is
+impossible.  But in any case, it is unnecessary work for us.
+
+  For example, suppose that you type @kbd{C-x C-f /glorp/baz.ugh
address@hidden, visiting a file which (you know) happens to be rather large,
+and Emacs prints out @samp{I feel pretty today}.  The best way to report
+the bug is with a sentence like the preceding one, because it gives all the
+facts and nothing but the facts.
+
+  Do not assume that the problem is due to the size of the file and say,
+``When I visit a large file, Emacs prints out @samp{I feel pretty today}.''
+This is what we mean by ``guessing explanations''.  The problem is just as
+likely to be due to the fact that there is a @samp{z} in the file name.  If
+this is so, then when we got your report, we would try out the problem with
+some ``large file'', probably with no @samp{z} in its name, and not find
+anything wrong.  There is no way in the world that we could guess that we
+should try visiting a file with a @samp{z} in its name.
+
+  Alternatively, the problem might be due to the fact that the file starts
+with exactly 25 spaces.  For this reason, you should make sure that you
+inform us of the exact contents of any file that is needed to reproduce the
+bug.  What if the problem only occurs when you have typed the @kbd{C-x a l}
+command previously?  This is why we ask you to give the exact sequence of
+characters you typed since starting to use Emacs.
+
+  You should not even say ``visit a file'' instead of @kbd{C-x C-f} unless
+you @i{know} that it makes no difference which visiting command is used.
+Similarly, rather than saying ``if I have three characters on the line,''
+say ``after I type @address@hidden A B C @key{RET} C-p},'' if that is
+the way you entered the address@hidden
+
+  If you are not in Fundamental mode when the problem occurs, you should
+say what mode you are in.
+
+  If the manifestation of the bug is an Emacs error message, it is
+important to report not just the text of the error message but a backtrace
+showing how the Lisp program in Emacs arrived at the error.  To make the
+backtrace, you must execute the Lisp expression 
address@hidden(setq @w{debug-on-error t})} before the error happens (that is to
+say, you must execute that expression and then make the bug happen).  This
+causes the Lisp debugger to run (@pxref{Lisp Debug}).  The debugger's
+backtrace can be copied as text into the bug report.  This use of the
+debugger is possible only if you know how to make the bug happen again.  Do
+note the error message the first time the bug happens, so if you can't make
+it happen again, you can report at least that.
+
+  Check whether any programs you have loaded into the Lisp world, including
+your init file, set any variables that may affect the functioning of
+Emacs.  @xref{Init File}.  Also, see whether the problem happens in a
+freshly started Emacs without loading your init file (start Emacs with
+the @code{-q} switch to prevent loading the init file).  If the problem
+does @var{not} occur then, it is essential that we know the contents of
+any programs that you must load into the Lisp world in order to cause
+the problem to occur.
+
+  If the problem does depend on an init file or other Lisp programs that
+are not part of the standard Emacs system, then you should make sure it is
+not a bug in those programs by complaining to their maintainers first.
+After they verify that they are using Emacs in a way that is supposed to
+work, they should report the bug.
+
+  If you can tell us a way to cause the problem without visiting any files,
+please do so.  This makes it much easier to debug.  If you do need files,
+make sure you arrange for us to see their exact contents.  For example, it
+can often matter whether there are spaces at the ends of lines, or a
+newline after the last line in the buffer (nothing ought to care whether
+the last line is terminated, but tell that to the bugs).
+
address@hidden open-dribble-file
address@hidden dribble file
+  The easy way to record the input to Emacs precisely is to write a
+dribble file; execute the Lisp expression:
+
address@hidden
+(open-dribble-file "~/dribble")
address@hidden example
+
address@hidden
+using @address@hidden or from the @samp{*scratch*} buffer just after starting
+Emacs.  From then on, all Emacs input will be written in the specified
+dribble file until the Emacs process is killed.
+
address@hidden open-termscript
address@hidden termscript file
+  For possible display bugs, it is important to report the terminal type
+(the value of environment variable @code{TERM}), the complete termcap entry
+for the terminal from @file{/etc/termcap} (since that file is not identical
+on all machines), and the output that Emacs actually sent to the terminal.
+The way to collect this output is to execute the Lisp expression:
+
address@hidden
+(open-termscript "~/termscript")
address@hidden example
+
address@hidden using @address@hidden or from the @samp{*scratch*} buffer
+just after starting Emacs.  From then on, all output from Emacs to the
+terminal will be written in the specified termscript file as well, until
+the Emacs process is killed.  If the problem happens when Emacs starts
+up, put this expression into your init file so that the termscript file
+will be open when Emacs displays the screen for the first time.
address@hidden File}. Be warned: it is often difficult, and sometimes
+impossible, to fix a terminal-dependent bug without access to a terminal
+of the type that stimulates the address@hidden
+
+The newsgroup @samp{comp.emacs.xemacs} may be used for bug reports,
+other discussions and requests for assistance.  
+
+If you don't have access to this newgroup, you can subscribe to the
+mailing list version: the newsgroup is bidirectionally gatewayed into
+the mailing list @samp{xemacs@@xemacs.org}.
+
+To be added or removed from this mailing list, send mail to
address@hidden@@xemacs.org}.  Do not send requests for addition
+to the mailing list itself.
+
+The mailing lists and newsgroups are archived on our anonymous FTP server,
address@hidden, and at various other archive sites around the net. You 
+should also check the @samp{FAQ} in @samp{/pub/xemacs} on our anonymous 
+FTP server. It provides some introductory information and help for initial 
+configuration problems.
+
+
+
address@hidden Glossary, Manifesto, Intro, Top
address@hidden Glossary
+
address@hidden @asis
address@hidden Abbrev
+An abbrev is a text string which expands into a different text string
+when present in the buffer.  For example, you might define a short
+word as an abbrev for a long phrase that you want to insert
+frequently.  @xref{Abbrevs}.
+
address@hidden Aborting
+Aborting means getting out of a recursive edit (q.v.@:).  You can use
+the commands @kbd{C-]} and @kbd{M-x top-level} for this.
address@hidden
+
address@hidden Auto Fill mode
+Auto Fill mode is a minor mode in which text you insert is
+automatically broken into lines of fixed width.  @xref{Filling}.
+
address@hidden Auto Saving
+Auto saving means that Emacs automatically stores the contents of an
+Emacs buffer in a specially-named file so the information will not be
+lost if the buffer is lost due to a system error or user error.
address@hidden Save}.
+
address@hidden Backup File
+A backup file records the contents that a file had before the current
+editing session.  Emacs creates backup files automatically to help you
+track down or cancel changes you later regret.  @xref{Backup}.
+
address@hidden Balance Parentheses
+Emacs can balance parentheses manually or automatically.  Manual
+balancing is done by the commands to move over balanced expressions
+(@pxref{Lists}).  Automatic balancing is done by blinking the
+parenthesis that matches one just inserted (@pxref{Matching,,Matching
+Parens}).
+
address@hidden Bind
+To bind a key is to change its binding (q.v.@:).  @xref{Rebinding}.
+
address@hidden Binding
+A key gets its meaning in Emacs by having a binding which is a
+command (q.v.@:), a Lisp function that is run when the key is typed.
address@hidden,Binding}.  Customization often involves rebinding a
+character to a different command function.  The bindings of all keys
+are recorded in the keymaps (q.v.@:).  @xref{Keymaps}.
+
address@hidden Blank Lines
+Blank lines are lines that contain only whitespace.  Emacs has several
+commands for operating on the blank lines in a buffer.
+
address@hidden Buffer
+The buffer is the basic editing unit; one buffer corresponds to one
+piece of text being edited.  You can have several buffers, but at any
+time you are editing only one, the `selected' buffer, though several
+buffers can be visible when you are using multiple windows.  @xref{Buffers}.
+
address@hidden Buffer Selection History
+Emacs keeps a buffer selection history which records how recently each
+Emacs buffer was selected.  Emacs uses this list when choosing a buffer to
+select.  @xref{Buffers}.
+
address@hidden C-
address@hidden in the name of a character is an abbreviation for Control.
address@hidden,C-}.
+
address@hidden C-M-
address@hidden in the name of a character is an abbreviation for
+Control-Meta.  @xref{Keystrokes,C-M-}.
+
address@hidden Case Conversion
+Case conversion means changing text from upper case to lower case or
+vice versa.  @xref{Case}, for the commands for case conversion.
+
address@hidden Characters
+Characters form the contents of an Emacs buffer; also, Emacs commands
+are invoked by keys (q.v.@:), which are sequences of one or more
+characters.  @xref{Keystrokes}.
+
address@hidden Command
+A command is a Lisp function specially defined to be able to serve as a
+key binding in Emacs.  When you type a key (q.v.@:), Emacs looks up its
+binding (q.v.@:) in the relevant keymaps (q.v.@:) to find the command to
+run.  @xref{Commands}.
+
address@hidden Command Name
+A command name is the name of a Lisp symbol which is a command
+(@pxref{Commands}).  You can invoke any command by its name using
address@hidden (@pxref{M-x}).
+
address@hidden Comments
+A comment is text in a program which is intended only for the people
+reading the program, and is marked specially so that it will be
+ignored when the program is loaded or compiled.  Emacs offers special
+commands for creating, aligning, and killing comments.
address@hidden
+
address@hidden Compilation
+Compilation is the process of creating an executable program from
+source code.  Emacs has commands for compiling files of Emacs Lisp
+code (@pxref{Lisp Libraries}) and programs in C and other languages
+(@pxref{Compilation}).
+
address@hidden Complete Key
+A complete key is a character or sequence of characters which, when typed
+by the user, fully specifies one action to be performed by Emacs.  For
+example, @kbd{X} and @kbd{Control-f} and @kbd{Control-x m} are keys.  Keys
+derive their meanings from being bound (q.v.@:) to commands (q.v.@:).
+Thus, @kbd{X} is conventionally bound to a command to insert @samp{X} in
+the buffer; @kbd{C-x m} is conventionally bound to a command to begin
+composing a mail message. @xref{Keystrokes}.
+
address@hidden Completion
+When Emacs automatically fills an abbreviation for a name into the
+entire name, that process is called completion.  Completion is done for
+minibuffer (q.v.@:) arguments when the set of possible valid inputs is
+known; for example, on command names, buffer names, and file names.
+Completion occurs when you type @key{TAB}, @key{SPC}, or @key{RET}.
address@hidden@refill
+
address@hidden Continuation Line
+When a line of text is longer than the width of the frame, it
+takes up more than one screen line when displayed.  We say that the
+text line is continued, and all screen lines used for it after the
+first are called continuation lines.  @xref{Basic,Continuation,Basic
+Editing}.
+
address@hidden Control-Character
+ASCII characters with octal codes 0 through 037, and also code 0177,
+do not have graphic images assigned to them.  These are the control
+characters.  Any control character can be typed by holding down the
address@hidden key and typing some other character; some have special keys
+on the keyboard.  @key{RET}, @key{TAB}, @key{ESC}, @key{LFD}, and
address@hidden are all control characters.  @address@hidden
+
address@hidden Copyleft
+A copyleft is a notice giving the public legal permission to redistribute
+a program or other work of art.  Copylefts are used by leftists to enrich
+the public just as copyrights are used by rightists to gain power over
+the public.
+
address@hidden Current Buffer
+The current buffer in Emacs is the Emacs buffer on which most editing
+commands operate.  You can select any Emacs buffer as the current one.
address@hidden
+
address@hidden Current Line
+The line point is on (@pxref{Point}).
+
address@hidden Current Paragraph
+The paragraph that point is in.  If point is between paragraphs, the
+current paragraph is the one that follows point.  @xref{Paragraphs}.
+
address@hidden Current Defun
+The defun (q.v.@:) that point is in.  If point is between defuns, the
+current defun is the one that follows point.  @xref{Defuns}.
+
address@hidden Cursor
+The cursor is the rectangle on the screen which indicates the position
+called point (q.v.@:) at which insertion and deletion takes place.
+The cursor is on or under the character that follows point.  Often
+people speak of `the cursor' when, strictly speaking, they mean
+`point'.  @xref{Basic,Cursor,Basic Editing}.
+
address@hidden Customization
+Customization is making minor changes in the way Emacs works.  It is
+often done by setting variables (@pxref{Variables}) or by rebinding
+keys (@pxref{Keymaps}).
+
address@hidden Default Argument
+The default for an argument is the value that is used if you do not
+specify one.  When Emacs prompts you in the minibuffer for an argument,
+the default argument is used if you just type @key{RET}.
address@hidden
+
address@hidden Default Directory
+When you specify a file name that does not start with @samp{/} or @samp{~},
+it is interpreted relative to the current buffer's default directory.
address@hidden File,Default Directory}.
+
address@hidden Defun
+A defun is a list at the top level of parenthesis or bracket structure
+in a program.  It is so named because most such lists in Lisp programs
+are calls to the Lisp function @code{defun}.  @xref{Defuns}.
+
address@hidden @key{DEL}
+The @key{DEL} character runs the command that deletes one character of
+text.  @xref{Basic,DEL,Basic Editing}.
+
address@hidden Deletion
+Deleting text means erasing it without saving it.  Emacs deletes text
+only when it is expected not to be worth saving (all whitespace, or
+only one character).  The alternative is killing (q.v.@:).
address@hidden,Deletion}.
+
address@hidden Deletion of Files
+Deleting a file means removing it from the file system.
address@hidden File Ops}.
+
address@hidden Deletion of Messages
+Deleting a message means flagging it to be eliminated from your mail
+file.  Until the mail file is expunged, you can undo this by undeleting
+the message.
+
address@hidden Deletion of Frames
+When working under the multi-frame X-based version of XEmacs,
+you can delete individual frames using the @b{Close} menu item from the
address@hidden menu.
+
address@hidden Deletion of Windows
+When you delete a subwindow of an Emacs frame, you eliminate it from
+the frame.  Other windows expand to use up the space.  The deleted
+window can never come back, but no actual text is lost.  @xref{Windows}.
+
address@hidden Directory
+Files in the Unix file system are grouped into file directories.
address@hidden,,Directories}.
+
address@hidden Dired
+Dired is the Emacs facility that displays the contents of a file
+directory and allows you to ``edit the directory'', performing
+operations on the files in the directory.  @xref{Dired}.
+
address@hidden Disabled Command
+A disabled command is one that you may not run without special
+confirmation.  Commands are usually disabled because they are
+confusing for beginning users.  @xref{Disabling}.
+
address@hidden Dribble File
+A file into which Emacs writes all the characters that the user types
+on the keyboard.  Dribble files are used to make a record for
+debugging Emacs bugs.  Emacs does not make a dribble file unless you
+tell it to.  @xref{Bugs}.
+
address@hidden Echo Area
+The area at the bottom of the Emacs frame which is used for echoing the
+arguments to commands, for asking questions, and for printing brief
+messages (including error messages).  @xref{Echo Area}.
+
address@hidden Echoing
+Echoing refers to acknowledging the receipt of commands by displaying them
+(in the echo area).  Emacs never echoes single-character keys; longer
+keys echo only if you pause while typing them.
+
address@hidden Error
+An error occurs when an Emacs command cannot execute in the current
+circumstances.  When an error occurs, execution of the command stops
+(unless the command has been programmed to do otherwise) and Emacs
+reports the error by printing an error message (q.v.).  Type-ahead
+is discarded.  Then Emacs is ready to read another editing command.
+
address@hidden Error Messages
+Error messages are single lines of output printed by Emacs when the
+user asks for something impossible to do (such as killing text
+forward when point is at the end of the buffer).  They appear in the
+echo area, accompanied by a beep.
+
address@hidden @key{ESC}
address@hidden is a character used as a prefix for typing Meta characters on
+keyboards lacking a @key{META} key.  Unlike the @key{META} key (which,
+like the @key{SHIFT} key, is held down while another character is
+typed), the @key{ESC} key is pressed and released, and applies to the
+next character typed.
+
address@hidden Fill Prefix
+The fill prefix is a string that Emacs enters at the beginning
+of each line when it performs filling.  It is not regarded as part of the
+text to be filled.  @xref{Filling}.
+
address@hidden Filling
+Filling text means moving text from line to line so that all the lines
+are approximately the same length.  @xref{Filling}.
+
address@hidden Frame
+When running Emacs on a TTY terminal, ``frame'' means the terminal's
+screen.  When running Emacs under X, you can have multiple frames,
+each corresponding to a top-level X window and each looking like
+the screen on a TTY.  Each frame contains one or more non-overlapping
+Emacs windows (possibly with associated scrollbars, under X), an
+echo area, and (under X) possibly a menubar, toolbar, and/or gutter.
+
address@hidden Global
+Global means `independent of the current environment; in effect
address@hidden Emacs'.  It is the opposite of local (q.v.@:).
+Examples of the use of `global' appear below.
+
address@hidden Global Abbrev
+A global definition of an abbrev (q.v.@:) is effective in all major
+modes that do not have local (q.v.@:) definitions for the same abbrev.
address@hidden
+
address@hidden Global Keymap
+The global keymap (q.v.@:) contains key bindings that are in effect
+unless local key bindings in a major mode's local
+keymap (q.v.@:) override address@hidden
+
address@hidden Global Substitution
+Global substitution means replacing each occurrence of one string by
+another string through a large amount of text.  @xref{Replace}.
+
address@hidden Global Variable
+The global value of a variable (q.v.@:) takes effect in all buffers
+that do not have their own local (q.v.@:) values for the variable.
address@hidden
+
address@hidden Graphic Character
+Graphic characters are those assigned pictorial images rather than
+just names.  All the non-Meta (q.v.@:) characters except for the
+Control (q.v.@:) character are graphic characters.  These include
+letters, digits, punctuation, and spaces; they do not include
address@hidden or @key{ESC}.  In Emacs, typing a graphic character inserts
+that character (in ordinary editing modes).  @xref{Basic,,Basic Editing}.
+
address@hidden Grinding
+Grinding means adjusting the indentation in a program to fit the
+nesting structure.  @xref{Indentation,Grinding}.
+
address@hidden Hardcopy
+Hardcopy means printed output.  Emacs has commands for making printed
+listings of text in Emacs buffers.  @xref{Hardcopy}.
+
address@hidden @key{HELP}
+You can type @key{HELP} at any time to ask what options you have, or
+to ask what any command does.  @key{HELP} is really @kbd{Control-h}.
address@hidden
+
address@hidden Inbox
+An inbox is a file in which mail is delivered by the operating system.
+Some mail handlers transfers mail from inboxes to mail files (q.v.) in
+which the mail is then stored permanently or until explicitly deleted.
+
address@hidden Indentation
+Indentation means blank space at the beginning of a line.  Most
+programming languages have conventions for using indentation to
+illuminate the structure of the program, and Emacs has special
+features to help you set up the correct indentation.
address@hidden
+
address@hidden Insertion
+Insertion means copying text into the buffer, either from the keyboard
+or from some other place in Emacs.
+
address@hidden Justification
+Justification means adding extra spaces to lines of text to make them
+come exactly to a specified width.  @xref{Filling,Justification}.
+
address@hidden Keyboard Macros
+Keyboard macros are a way of defining new Emacs commands from
+sequences of existing ones, with no need to write a Lisp program.
address@hidden Macros}.
+
address@hidden Key
+A key is a sequence of characters that, when input to Emacs, specify
+or begin to specify a single action for Emacs to perform.  That is,
+the sequence is considered a single unit.  If the key is enough to
+specify one action, it is a complete key (q.v.); if it is less than
+enough, it is a prefix key (q.v.).  @xref{Keystrokes}.
+
address@hidden Keymap
+The keymap is the data structure that records the bindings (q.v.@:) of
+keys to the commands that they run.  For example, the keymap binds the
+character @kbd{C-n} to the command function @code{next-line}.
address@hidden
+
address@hidden Kill Ring
+The kill ring is the place where all text you have killed recently is saved.
+You can re-insert any of the killed text still in the ring; this is
+called yanking (q.v.@:).  @xref{Yanking}.
+
address@hidden Killing
+Killing means erasing text and saving it on the kill ring so it can be
+yanked (q.v.@:) later.  Some other systems call this ``cutting.''
+Most Emacs commands to erase text do killing, as opposed to deletion
+(q.v.@:).  @xref{Killing}.
+
address@hidden Killing Jobs
+Killing a job (such as, an invocation of Emacs) means making it cease
+to exist.  Any data within it, if not saved in a file, is lost.
address@hidden
+
address@hidden List
+A list is, approximately, a text string beginning with an open
+parenthesis and ending with the matching close parenthesis.  In C mode
+and other non-Lisp modes, groupings surrounded by other kinds of matched
+delimiters appropriate to the language, such as braces, are also
+considered lists.  Emacs has special commands for many operations on
+lists.  @xref{Lists}.
+
address@hidden Local
+Local means `in effect only in a particular context'; the relevant
+kind of context is a particular function execution, a particular
+buffer, or a particular major mode.  Local is the opposite of `global'
+(q.v.@:).  Specific uses of `local' in Emacs terminology appear below.
+
address@hidden Local Abbrev
+A local abbrev definition is effective only if a particular major mode
+is selected.  In that major mode, it overrides any global definition
+for the same abbrev.  @xref{Abbrevs}.
+
address@hidden Local Keymap
+A local keymap is used in a particular major mode; the key bindings
+(q.v.@:) in the current local keymap override global bindings of the
+same keys.  @xref{Keymaps}.
+
address@hidden Local Variable
+A local value of a variable (q.v.@:) applies to only one buffer.
address@hidden
+
address@hidden M-
address@hidden in the name of a character is an abbreviation for @key{META},
+one of the modifier keys that can accompany any character.
address@hidden
+
address@hidden M-C-
address@hidden in the name of a character is an abbreviation for
+Control-Meta; it means the same thing as @samp{C-M-}.  If your
+terminal lacks a real @key{META} key, you type a Control-Meta character by
+typing @key{ESC} and then typing the corresponding Control character.
address@hidden,C-M-}.
+
address@hidden M-x
address@hidden is the key which is used to call an Emacs command by name.
+You use it to call commands that are not bound to keys.
address@hidden
+
address@hidden Mail
+Mail means messages sent from one user to another through the computer
+system, to be read at the recipient's convenience.  Emacs has commands for
+composing and sending mail, and for reading and editing the mail you have
+received.  @xref{Sending Mail}.
+
address@hidden Major Mode
+The major modes are a mutually exclusive set of options each of which
+configures Emacs for editing a certain sort of text.  Ideally, each
+programming language has its own major mode.  @xref{Major Modes}.
+
address@hidden Mark
+The mark points to a position in the text.  It specifies one end of the
+region (q.v.@:), point being the other end.  Many commands operate on
+the whole region, that is, all the text from point to the mark.
address@hidden
+
address@hidden Mark Ring
+The mark ring is used to hold several recent previous locations of the
+mark, just in case you want to move back to them.  @xref{Mark Ring}.
+
address@hidden Message
+See `mail'.
+
address@hidden Meta
+Meta is the name of a modifier bit which a command character may have.
+It is present in a character if the character is typed with the
address@hidden key held down.  Such characters are given names that start
+with @kbd{Meta-}.  For example, @kbd{Meta-<} is typed by holding down
address@hidden and at the same time typing @kbd{<} (which itself is done,
+on most terminals, by holding down @key{SHIFT} and typing @kbd{,}).
address@hidden,Meta}.
+
address@hidden Meta Character
+A Meta character is one whose character code includes the Meta bit.
+
address@hidden Minibuffer
+The minibuffer is the window that Emacs displays inside the
+echo area (q.v.@:) when it prompts you for arguments to commands.
address@hidden
+
address@hidden Minor Mode
+A minor mode is an optional feature of Emacs which can be switched on
+or off independent of the major mode.  Each minor mode has a
+command to turn it on or off.  @xref{Minor Modes}.
+
address@hidden Mode Line
+The mode line is the line at the bottom of each text window (q.v.@:),
+which gives status information on the buffer displayed in that window.
address@hidden Line}.
+
address@hidden Modified Buffer
+A buffer (q.v.@:) is modified if its text has been changed since the
+last time the buffer was saved (or since it was created, if it
+has never been saved).  @xref{Saving}.
+
address@hidden Moving Text
+Moving text means erasing it from one place and inserting it in
+another.  This is done by killing (q.v.@:) and then yanking (q.v.@:).
address@hidden
+
address@hidden Named Mark
+A named mark is a register (q.v.@:) in its role of recording a
+location in text so that you can move point to that location.
address@hidden
+
address@hidden Narrowing
+Narrowing means creating a restriction (q.v.@:) that limits editing in
+the current buffer to only a part of the text in the buffer.  Text
+outside that part is inaccessible to the user until the boundaries are
+widened again, but it is still there, and saving the file saves the
+invisible text.  @xref{Narrowing}.
+
address@hidden Newline
address@hidden characters in the buffer terminate lines of text and are
+called newlines.  @xref{Keystrokes,Newline}.
+
address@hidden Numeric Argument
+A numeric argument is a number, specified before a command, to change
+the effect of the command.  Often the numeric argument serves as a
+repeat count.  @xref{Arguments}.
+
address@hidden Option
+An option is a variable (q.v.@:) that allows you to customize
+Emacs by giving it a new value.  @xref{Variables}.
+
address@hidden Overwrite Mode
+Overwrite mode is a minor mode.  When it is enabled, ordinary text
+characters replace the existing text after point rather than pushing
+it to the right.  @xref{Minor Modes}.
+
address@hidden Page
+A page is a unit of text, delimited by formfeed characters (ASCII
+Control-L, code 014) coming at the beginning of a line.  Some Emacs
+commands are provided for moving over and operating on pages.
address@hidden
+
address@hidden Paragraphs
+Paragraphs are the medium-size unit of English text.  There are
+special Emacs commands for moving over and operating on paragraphs.
address@hidden
+
address@hidden Parsing
+We say that Emacs parses words or expressions in the text being
+edited.  Really, all it knows how to do is find the other end of a
+word or expression.  @xref{Syntax}.
+
address@hidden Point
+Point is the place in the buffer at which insertion and deletion
+occur.  Point is considered to be between two characters, not at one
+character.  The terminal's cursor (q.v.@:) indicates the location of
+point.  @xref{Basic,Point}.
+
address@hidden Prefix Key
+A prefix key is a key (q.v.@:) whose sole function is to introduce a
+set of multi-character keys.  @kbd{Control-x} is an example of a prefix
+key; any two-character sequence starting with @kbd{C-x} is also
+a legitimate key.  @xref{Keystrokes}.
+
address@hidden Prompt
+A prompt is text printed to ask the user for input.  Printing a prompt
+is called prompting.  Emacs prompts always appear in the echo area
+(q.v.@:).  One kind of prompting happens when the minibuffer is used
+to read an argument (@pxref{Minibuffer}); the echoing which happens
+when you pause in the middle of typing a multi-character key is also a
+kind of prompting (@pxref{Echo Area}).
+
address@hidden Quitting
+Quitting means cancelling a partially typed command or a running
+command, using @kbd{C-g}.  @xref{Quitting}.
+
address@hidden Quoting
+Quoting means depriving a character of its usual special significance.
+In Emacs this is usually done with @kbd{Control-q}.  What constitutes special
+significance depends on the context and on convention.  For example,
+an ``ordinary'' character as an Emacs command inserts itself; so in
+this context, a special character is any character that does not
+normally insert itself (such as @key{DEL}, for example), and quoting
+it makes it insert itself as if it were not special.  Not all contexts
+allow quoting.  @xref{Basic,Quoting,Basic Editing}.
+
address@hidden Read-only Buffer
+A read-only buffer is one whose text you are not allowed to change.
+Normally Emacs makes buffers read-only when they contain text which
+has a special significance to Emacs, such as Dired buffers.
+Visiting a file that is write-protected also makes a read-only buffer.
address@hidden
+
address@hidden Recursive Editing Level
+A recursive editing level is a state in which part of the execution of
+a command involves asking the user to edit some text.  This text may
+or may not be the same as the text to which the command was applied.
+The mode line indicates recursive editing levels with square brackets
+(@samp{[} and @samp{]}).  @xref{Recursive Edit}.
+
address@hidden Redisplay
+Redisplay is the process of correcting the image on the screen to
+correspond to changes that have been made in the text being edited.
address@hidden,Redisplay}.
+
address@hidden Regexp
+See `regular expression'.
+
address@hidden Region
+The region is the text between point (q.v.@:) and the mark (q.v.@:).
+Many commands operate on the text of the region.  @xref{Mark,Region}.
+
address@hidden Registers
+Registers are named slots in which text or buffer positions or
+rectangles can be saved for later use.  @xref{Registers}.
+
address@hidden Regular Expression
+A regular expression is a pattern that can match various text strings;
+for example, @samp{l[0-9]+} matches @samp{l} followed by one or more
+digits.  @xref{Regexps}.
+
address@hidden Replacement
+See `global substitution'.
+
address@hidden Restriction
+A buffer's restriction is the amount of text, at the beginning or the
+end of the buffer, that is temporarily invisible and inaccessible.
+Giving a buffer a nonzero amount of restriction is called narrowing
+(q.v.).  @xref{Narrowing}.
+
address@hidden @key{RET}
address@hidden is the character than runs the command to insert a
+newline into the text.  It is also used to terminate most arguments
+read in the minibuffer (q.v.@:).  @xref{Keystrokes,Return}.
+
address@hidden Saving
+Saving a buffer means copying its text into the file that was visited
+(q.v.@:) in that buffer.  To actually change a file you have edited in
+Emacs, you have to save it.  @xref{Saving}.
+
address@hidden Scrolling
+Scrolling means shifting the text in the Emacs window to make a
+different part of the buffer visible.  @xref{Display,Scrolling}.
+
address@hidden Searching
+Searching means moving point to the next occurrence of a specified
+string.  @xref{Search}.
+
address@hidden Selecting
+Selecting a buffer means making it the current (q.v.@:) buffer.
address@hidden,Selecting}.
+
address@hidden Self-documentation
+Self-documentation is the feature of Emacs which can tell you what any
+command does, or can give you a list of all commands related to a topic
+you specify.  You ask for self-documentation with the help character,
address@hidden  @xref{Help}.
+
address@hidden Sentences
+Emacs has commands for moving by or killing by sentences.
address@hidden
+
address@hidden Sexp
+An sexp (short for `s-expression,' itself short for `symbolic
+expression') is the basic syntactic unit of Lisp
+in its textual form: either a list, or Lisp atom.  Many Emacs commands
+operate on sexps.  The term `sexp' is generalized to languages other
+than Lisp to mean a syntactically recognizable expression.
address@hidden,Sexps}.
+
address@hidden Simultaneous Editing
+Simultaneous editing means two users modifying the same file at once.
+If simultaneous editing is not detected, you may lose your
+work.  Emacs detects all cases of simultaneous editing and warns the
+user to investigate them.  @xref{Interlocking,,Simultaneous Editing}.
+
address@hidden String
+A string is a kind of Lisp data object which contains a sequence of
+characters.  Many Emacs variables are intended to have strings as
+values.  The Lisp syntax for a string consists of the characters in
+the string with a @samp{"} before and another @samp{"} after. Write a
address@hidden"} that is part of the string as @samp{\"} and a
address@hidden that is part of the string as @samp{\\}.  You can include all
+other characters, including newline, just by writing
+them inside the string. You can also include escape sequences as in C, such as
address@hidden for newline or @samp{\241} using an octal character code.
+
address@hidden String Substitution
+See `global substitution'.
+
address@hidden Syntax Table
+The syntax table tells Emacs which characters are part of a word,
+which characters balance each other like parentheses, etc.
address@hidden
+
address@hidden Tag Table
+A tag table is a file that serves as an index to the function
+definitions in one or more other files.  @xref{Tags}.
+
address@hidden Termscript File
+A termscript file contains a record of all characters Emacs sent to
+the terminal.  It is used for tracking down bugs in Emacs redisplay.
+Emacs does not make a termscript file unless explicitly instructed to do
+so.
address@hidden
+
address@hidden Text
+Text has two meanings (@pxref{Text}):
+
address@hidden @bullet
address@hidden
+Data consisting of a sequence of characters, as opposed to binary
+numbers, images, graphics commands, executable programs, and the like.
+The contents of an Emacs buffer are always text in this sense.
address@hidden
+Data consisting of written human language, as opposed to programs,
+or something that follows the stylistic conventions of human language.
address@hidden itemize
+
address@hidden Top Level
+Top level is the normal state of Emacs, in which you are editing the
+text of the file you have visited.  You are at top level whenever you
+are not in a recursive editing level (q.v.@:) or the minibuffer
+(q.v.@:), and not in the middle of a command.  You can get back to top
+level by aborting (q.v.@:) and quitting (q.v.@:).  @xref{Quitting}.
+
address@hidden Transposition
+Transposing two units of text means putting each one into the place
+formerly occupied by the other.  There are Emacs commands to transpose
+two adjacent characters, words, sexps (q.v.@:), or lines
+(@pxref{Transpose}).
+
address@hidden Truncation
+Truncating text lines in the display means leaving out any text on a
+line that does not fit within the right margin of the window
+displaying it.  See also `continuation line'.
address@hidden,Truncation,Basic Editing}.
+
address@hidden Undoing
+Undoing means making your previous editing go in reverse, bringing
+back the text that existed earlier in the editing session.
address@hidden
+
address@hidden Variable
+A variable is Lisp object that can store an arbitrary value.  Emacs uses
+some variables for internal purposes, and has others (known as `options'
+(q.v.@:)) you can set to control the behavior of Emacs.  The variables
+used in Emacs that you are likely to be interested in are listed in the
+Variables Index of this manual.  @xref{Variables}, for information on
+variables.
+
address@hidden Visiting
+Visiting a file means loading its contents into a buffer (q.v.@:)
+where they can be edited.  @xref{Visiting}.
+
address@hidden Whitespace
+Whitespace is any run of consecutive formatting characters (spaces,
+tabs, newlines, and backspaces).
+
address@hidden Widening
+Widening is removing any restriction (q.v.@:) on the current buffer;
+it is the opposite of narrowing (q.v.@:).  @xref{Narrowing}.
+
address@hidden Window
+Emacs divides the frame into one or more windows, each of which can
+display the contents of one buffer (q.v.@:) at any time.
address@hidden, for basic information on how Emacs uses the frame.
address@hidden, for commands to control the use of windows. Note that if
+you are running Emacs under X, terminology can be confusing: Each Emacs
+frame occupies a separate X window and can, in turn, be divided into
+different subwindows.
+
address@hidden Word Abbrev
+Synonymous with `abbrev'.
+
address@hidden Word Search
+Word search is searching for a sequence of words, considering the
+punctuation between them as insignificant.  @xref{Word Search}.
+
address@hidden Yanking
+Yanking means reinserting text previously killed.  It can be used to
+undo a mistaken kill, or for copying or moving text.  Some other
+systems call this ``pasting''.  @xref{Yanking}.
address@hidden table
+
address@hidden Manifesto, Key Index, Glossary, Top
address@hidden The GNU Manifesto
+
address@hidden What's GNU?  GNU's Not Unix!
+
+GNU, which stands for GNU's Not Unix, is the name for the complete
+Unix-compatible software system which I am writing so that I can give it
+away free to everyone who can use it.  Several other volunteers are helping
+me.  Contributions of time, money, programs, and equipment are greatly
+needed.
+
+So far we have an Emacs text editor with Lisp for writing editor commands,
+a source level debugger, a yacc-compatible parser generator, a linker, and
+around 35 utilities.  A shell (command interpreter) is nearly completed.  A
+new portable optimizing C compiler has compiled itself and may be released
+this year.  An initial kernel exists, but many more features are needed to
+emulate Unix.  When the kernel and compiler are finished, it will be
+possible to distribute a GNU system suitable for program development.  We
+will use @TeX{} as our text formatter, but an nroff is being worked on.  We
+will use the free, portable X window system as well.  After this we will
+add a portable Common Lisp, an Empire game, a spreadsheet, and hundreds of
+other things, plus online documentation.  We hope to supply, eventually,
+everything useful that normally comes with a Unix system, and more.
+
+GNU will be able to run Unix programs, but will not be identical to Unix.
+We will make all improvements that are convenient, based on our experience
+with other operating systems.  In particular, we plan to have longer
+filenames, file version numbers, a crashproof file system, filename
+completion perhaps, terminal-independent display support, and perhaps
+eventually a Lisp-based window system through which several Lisp programs
+and ordinary Unix programs can share a screen.  Both C and Lisp will be
+available as system programming languages.  We will try to support UUCP,
+MIT Chaosnet, and Internet protocols for communication.
+
+GNU is aimed initially at machines in the 68000/16000 class with virtual
+memory, because they are the easiest machines to make it run on.  The extra
+effort to make it run on smaller machines will be left to someone who wants
+to use it on them.
+
+To avoid horrible confusion, please pronounce the `G' in the word `GNU'
+when it is the name of this project.
+
address@hidden
address@hidden Why I Must Write GNU
+
+I consider that the golden rule requires that if I like a program I must
+share it with other people who like it.  Software sellers want to divide
+the users and conquer them, making each user agree not to share with
+others.  I refuse to break solidarity with other users in this way.  I
+cannot in good conscience sign a nondisclosure agreement or a software
+license agreement.  For years I worked within the Artificial Intelligence
+Lab to resist such tendencies and other inhospitalities, but eventually
+they had gone too far: I could not remain in an institution where such
+things are done for me against my will.
+
+So that I can continue to use computers without dishonor, I have decided to
+put together a sufficient body of free software so that I will be able to
+get along without any software that is not free.  I have resigned from the
+AI lab to deny MIT any legal excuse to prevent me from giving GNU away.
+
address@hidden Why GNU Will Be Compatible With Unix
+
+Unix is not my ideal system, but it is not too bad.  The essential features
+of Unix seem to be good ones, and I think I can fill in what Unix lacks
+without spoiling them.  And a system compatible with Unix would be
+convenient for many other people to adopt.
+
address@hidden How GNU Will Be Available
+
+GNU is not in the public domain.  Everyone will be permitted to modify and
+redistribute GNU, but no distributor will be allowed to restrict its
+further redistribution.  That is to say, proprietary modifications will not
+be allowed.  I want to make sure that all versions of GNU remain free.
+
address@hidden Why Many Other Programmers Want to Help
+
+I have found many other programmers who are excited about GNU and want to
+help.
+
+Many programmers are unhappy about the commercialization of system
+software.  It may enable them to make more money, but it requires them to
+feel in conflict with other programmers in general rather than feel as
+comrades.  The fundamental act of friendship among programmers is the
+sharing of programs; marketing arrangements now typically used essentially
+forbid programmers to treat others as friends.  The purchaser of software
+must choose between friendship and obeying the law.  Naturally, many decide
+that friendship is more important.  But those who believe in law often do
+not feel at ease with either choice.  They become cynical and think that
+programming is just a way of making money.
+
+By working on and using GNU rather than proprietary programs, we can be
+hospitable to everyone and obey the law.  In addition, GNU serves as an
+example to inspire and a banner to rally others to join us in sharing.
+This can give us a feeling of harmony which is impossible if we use
+software that is not free.  For about half the programmers I talk to, this
+is an important happiness that money cannot replace.
+
address@hidden How You Can Contribute
+
+I am asking computer manufacturers for donations of machines and money.
+I'm asking individuals for donations of programs and work.
+
+One consequence you can expect if you donate machines is that GNU will run
+on them at an early date.  The machines should be complete, ready-to-use
+systems, approved for use in a residential area, and not in need of
+sophisticated cooling or power.
+
+I have found very many programmers eager to contribute part-time work for
+GNU.  For most projects, such part-time distributed work would be very hard
+to coordinate; the independently-written parts would not work together.
+But for the particular task of replacing Unix, this problem is absent.  A
+complete Unix system contains hundreds of utility programs, each of which
+is documented separately.  Most interface specifications are fixed by Unix
+compatibility.  If each contributor can write a compatible replacement for
+a single Unix utility, and make it work properly in place of the original
+on a Unix system, then these utilities will work right when put together.
+Even allowing for Murphy to create a few unexpected problems, assembling
+these components will be a feasible task.  (The kernel will require closer
+communication and will be worked on by a small, tight group.)
+
+If I get donations of money, I may be able to hire a few people full or
+part time.  The salary won't be high by programmers' standards, but I'm
+looking for people for whom building community spirit is as important as
+making money.  I view this as a way of enabling dedicated people to devote
+their full energies to working on GNU by sparing them the need to make a
+living in another way.
+
address@hidden Why All Computer Users Will Benefit
+
+Once GNU is written, everyone will be able to obtain good system software
+free, just like air.
+
+This means much more than just saving everyone the price of a Unix license.
+It means that much wasteful duplication of system programming effort will
+be avoided.  This effort can go instead into advancing the state of the
+art.
+
+Complete system sources will be available to everyone.  As a result, a user
+who needs changes in the system will always be free to make them himself,
+or hire any available programmer or company to make them for him.  Users
+will no longer be at the mercy of one programmer or company which owns the
+sources and is in sole position to make changes.
+
+Schools will be able to provide a much more educational environment by
+encouraging all students to study and improve the system code.  Harvard's
+computer lab used to have the policy that no program could be installed on
+the system if its sources were not on public display, and upheld it by
+actually refusing to install certain programs.  I was very much inspired by
+this.
+
+Finally, the overhead of considering who owns the system software and what
+one is or is not entitled to do with it will be lifted.
+
+Arrangements to make people pay for using a program, including licensing of
+copies, always incur a tremendous cost to society through the cumbersome
+mechanisms necessary to figure out how much (that is, which programs) a
+person must pay for.  And only a police state can force everyone to obey
+them.  Consider a space station where air must be manufactured at great
+cost: charging each breather per liter of air may be fair, but wearing the
+metered gas mask all day and all night is intolerable even if everyone can
+afford to pay the air bill.  And the TV cameras everywhere to see if you
+ever take the mask off are outrageous.  It's better to support the air
+plant with a head tax and chuck the masks.
+
+Copying all or parts of a program is as natural to a programmer as
+breathing, and as productive.  It ought to be as free.
+
address@hidden Some Easily Rebutted Objections to GNU's Goals
+
address@hidden
+``Nobody will use it if it is free, because that means they can't rely
+on any support.''
+
+``You have to charge for the program to pay for providing the
+support.''
address@hidden quotation
+
+If people would rather pay for GNU plus service than get GNU free without
+service, a company to provide just service to people who have obtained GNU
+free ought to be profitable.
+
+We must distinguish between support in the form of real programming work
+and mere handholding.  The former is something one cannot rely on from a
+software vendor.  If your problem is not shared by enough people, the
+vendor will tell you to get lost.
+
+If your business needs to be able to rely on support, the only way is to
+have all the necessary sources and tools.  Then you can hire any available
+person to fix your problem; you are not at the mercy of any individual.
+With Unix, the price of sources puts this out of consideration for most
+businesses.  With GNU this will be easy.  It is still possible for there to
+be no available competent person, but this problem cannot be blamed on
+distribution arrangements.  GNU does not eliminate all the world's problems,
+only some of them.
+
+Meanwhile, the users who know nothing about computers need handholding:
+doing things for them which they could easily do themselves but don't know
+how.
+
+Such services could be provided by companies that sell just hand-holding
+and repair service.  If it is true that users would rather spend money and
+get a product with service, they will also be willing to buy the service
+having got the product free.  The service companies will compete in quality
+and price; users will not be tied to any particular one.  Meanwhile, those
+of us who don't need the service should be able to use the program without
+paying for the service.
+
address@hidden
+``You cannot reach many people without advertising,
+and you must charge for the program to support that.''
+
+``It's no use advertising a program people can get free.''
address@hidden quotation
+
+There are various forms of free or very cheap publicity that can be used to
+inform numbers of computer users about something like GNU.  But it may be
+true that one can reach more microcomputer users with advertising.  If this
+is really so, a business which advertises the service of copying and
+mailing GNU for a fee ought to be successful enough to pay for its
+advertising and more.  This way, only the users who benefit from the
+advertising pay for it.
+
+On the other hand, if many people get GNU from their friends, and such
+companies don't succeed, this will show that advertising was not really
+necessary to spread GNU.  Why is it that free market advocates don't want
+to let the free market decide this?
address@hidden
address@hidden
+``My company needs a proprietary operating system
+to get a competitive edge.''
address@hidden quotation
+
+GNU will remove operating system software from the realm of competition.
+You will not be able to get an edge in this area, but neither will your
+competitors be able to get an edge over you.  You and they will compete in
+other areas, while benefitting mutually in this one.  If your business is
+selling an operating system, you will not like GNU, but that's tough on
+you.  If your business is something else, GNU can save you from being
+pushed into the expensive business of selling operating systems.
+
+I would like to see GNU development supported by gifts from many
+manufacturers and users, reducing the cost to each.
+
address@hidden
+``Don't programmers deserve a reward for their creativity?''
address@hidden quotation
+
+If anything deserves a reward, it is social contribution.  Creativity can
+be a social contribution, but only in so far as society is free to use the
+results.  If programmers deserve to be rewarded for creating innovative
+programs, by the same token they deserve to be punished if they restrict
+the use of these programs.
+
address@hidden
+``Shouldn't a programmer be able to ask for a reward for his creativity?''
address@hidden quotation
+
+There is nothing wrong with wanting pay for work, or seeking to maximize
+one's income, as long as one does not use means that are destructive.  But
+the means customary in the field of software today are based on
+destruction.
+
+Extracting money from users of a program by restricting their use of it is
+destructive because the restrictions reduce the amount and the ways that
+the program can be used.  This reduces the amount of wealth that humanity
+derives from the program.  When there is a deliberate choice to restrict,
+the harmful consequences are deliberate destruction.
+
+The reason a good citizen does not use such destructive means to become
+wealthier is that, if everyone did so, we would all become poorer from the
+mutual destructiveness.  This is Kantian ethics; or, the Golden Rule.
+Since I do not like the consequences that result if everyone hoards
+information, I am required to consider it wrong for one to do so.
+Specifically, the desire to be rewarded for one's creativity does not
+justify depriving the world in general of all or part of that creativity.
+
address@hidden
+``Won't programmers starve?''
address@hidden quotation
+
+I could answer that nobody is forced to be a programmer.  Most of us cannot
+manage to get any money for standing on the street and making faces.  But
+we are not, as a result, condemned to spend our lives standing on the
+street making faces, and starving.  We do something else.
+
+But that is the wrong answer because it accepts the questioner's implicit
+assumption: that without ownership of software, programmers cannot possibly
+be paid a cent.  Supposedly it is all or nothing.
+
+The real reason programmers will not starve is that it will still be
+possible for them to get paid for programming; just not paid as much as
+now.
+
+Restricting copying is not the only basis for business in software.  It is
+the most common basis because it brings in the most money.  If it were
+prohibited, or rejected by the customer, software business would move to
+other bases of organization which are now used less often.  There are
+always numerous ways to organize any kind of business.
+
+Probably programming will not be as lucrative on the new basis as it is
+now.  But that is not an argument against the change.  It is not considered
+an injustice that sales clerks make the salaries that they now do.  If
+programmers made the same, that would not be an injustice either.  (In
+practice they would still make considerably more than that.)
+
address@hidden
+``Don't people have a right to control how their creativity is used?''
address@hidden quotation
+
+``Control over the use of one's ideas'' really constitutes control over
+other people's lives; and it is usually used to make their lives more
+difficult.
+
+People who have studied the issue of intellectual property rights carefully
+(such as lawyers) say that there is no intrinsic right to intellectual
+property.  The kinds of supposed intellectual property rights that the
+government recognizes were created by specific acts of legislation for
+specific purposes.
+
+For example, the patent system was established to encourage inventors to
+disclose the details of their inventions.  Its purpose was to help society
+rather than to help inventors.  At the time, the life span of 17 years for
+a patent was short compared with the rate of advance of the state of the
+art.  Since patents are an issue only among manufacturers, for whom the
+cost and effort of a license agreement are small compared with setting up
+production, the patents often do not do much harm.  They do not obstruct
+most individuals who use patented products.
+
+The idea of copyright did not exist in ancient times, when authors
+frequently copied other authors at length in works of non-fiction.  This
+practice was useful, and is the only way many authors' works have survived
+even in part.  The copyright system was created expressly for the purpose
+of encouraging authorship.  In the domain for which it was
+invented---books, which could be copied economically only on a printing
+press---it did little harm, and did not obstruct most of the individuals
+who read the books.
+
+All intellectual property rights are just licenses granted by society
+because it was thought, rightly or wrongly, that society as a whole would
+benefit by granting them.  But in any particular situation, we have to ask:
+are we really better off granting such license?  What kind of act are we
+licensing a person to do?
+
+The case of programs today is very different from that of books a hundred
+years ago.  The fact that the easiest way to copy a program is from one
+neighbor to another, the fact that a program has both source code and
+object code which are distinct, and the fact that a program is used rather
+than read and enjoyed, combine to create a situation in which a person who
+enforces a copyright is harming society as a whole both materially and
+spiritually; in which a person should not do so regardless of whether the
+law enables him to.
+
address@hidden
+``Competition makes things get done better.''
address@hidden quotation
+
+The paradigm of competition is a race: by rewarding the winner, we
+encourage everyone to run faster.  When capitalism really works this way,
+it does a good job; but its defenders are wrong in assuming it always works
+this way.  If the runners forget why the reward is offered and become
+intent on winning, no matter how, they may find other strategies---such as,
+attacking other runners.  If the runners get into a fist fight, they will
+all finish late.
+
+Proprietary and secret software is the moral equivalent of runners in a
+fist fight.  Sad to say, the only referee we've got does not seem to
+object to fights; he just regulates them (``For every ten yards you run,
+you can fire one shot'').  He really ought to break them up, and penalize
+runners for even trying to fight.
+
address@hidden
+``Won't everyone stop programming without a monetary incentive?''
address@hidden quotation
+
+Actually, many people will program with absolutely no monetary incentive.
+Programming has an irresistible fascination for some people, usually the
+people who are best at it.  There is no shortage of professional musicians
+who keep at it even though they have no hope of making a living that way.
+
+But really this question, though commonly asked, is not appropriate to the
+situation.  Pay for programmers will not disappear, only become less.  So
+the right question is, will anyone program with a reduced monetary
+incentive?  My experience shows that they will.
+
+For more than ten years, many of the world's best programmers worked at the
+Artificial Intelligence Lab for far less money than they could have had
+anywhere else.  They got many kinds of non-monetary rewards: fame and
+appreciation, for example.  And creativity is also fun, a reward in itself.
address@hidden
+Then most of them left when offered a chance to do the same interesting
+work for a lot of money.
+
+What the facts show is that people will program for reasons other than
+riches; but if given a chance to make a lot of money as well, they will
+come to expect and demand it.  Low-paying organizations do poorly in
+competition with high-paying ones, but they do not have to do badly if the
+high-paying ones are banned.
+
address@hidden
+``We need the programmers desperately.  If they demand that we
+stop helping our neighbors, we have to obey.''
address@hidden quotation
+
+You're never so desperate that you have to obey this sort of demand.
+Remember: millions for defense, but not a cent for tribute!
+
address@hidden
+``Programmers need to make a living somehow.''
address@hidden quotation
+
+In the short run, this is true.  However, there are plenty of ways that
+programmers could make a living without selling the right to use a program.
+This way is customary now because it brings programmers and businessmen the
+most money, not because it is the only way to make a living.  It is easy to
+find other ways if you want to find them.  Here are a number of examples.
+
+A manufacturer introducing a new computer will pay for the porting of
+operating systems onto the new hardware.
+
+The sale of teaching, hand-holding, and maintenance services could also
+employ programmers.
+
+People with new ideas could distribute programs as freeware and ask for
+donations from satisfied users or sell hand-holding services.  I have
+met people who are already working this way successfully.
+
+Users with related needs can form users' groups and pay dues.  A group
+would contract with programming companies to write programs that the
+group's members would like to use.
+
+All sorts of development can be funded with a Software Tax:
+
address@hidden
+Suppose everyone who buys a computer has to pay a certain percent of
+the price as a software tax.  The government gives this to
+an agency like the NSF to spend on software development.
+
+But if the computer buyer makes a donation to software development
+himself, he can take a credit against the tax.  He can donate to
+the project of his own choosing---often, chosen because he hopes to
+use the results when
address@hidden 
+it is done.  He can take a credit for any amount
+of donation up to the total tax he had to pay.
+
+The total tax rate could be decided by a vote of the payers of
+the tax, weighted according to the amount they will be taxed on.
+
+The consequences:
+
address@hidden @bullet
address@hidden
+The computer-using community supports software development.
address@hidden
+This community decides what level of support is needed.
address@hidden
+Users who care which projects their share is spent on
+can choose this for themselves.
address@hidden itemize
address@hidden quotation
+
+In the long run, making programs free is a step toward the post-scarcity
+world, where nobody will have to work very hard just to make a living.
+People will be free to devote themselves to activities that are fun, such
+as programming, after spending the necessary ten hours a week on required
+tasks such as legislation, family counseling, robot repair, and asteroid
+prospecting.  There will be no need to be able to make a living from
+programming.
+
+We have already greatly reduced the amount of work that the whole society
+must do for its actual productivity, but only a little of this has
+translated itself into leisure for workers because much nonproductive
+activity is required to accompany productive activity.  The main causes of
+this are bureaucracy and isometric struggles against competition.  Free
+software will greatly reduce these drains in the area of software
+production.  We must do this, in order for technical gains in productivity
+to translate into less work for us.
+
address@hidden Key Index, Command Index, Manifesto, Top
address@hidden Key (Character) Index
address@hidden ky
+
address@hidden Command Index, Variable Index, Key Index, Top
address@hidden Command and Function Index
address@hidden fn
+
address@hidden Variable Index, Concept Index, Command Index, Top
address@hidden Variable Index
address@hidden vr
+
address@hidden Concept Index, Frame, Variable Index, Top
address@hidden Concept Index
address@hidden cp
+
address@hidden
address@hidden
address@hidden

Index: xemacs_manual/res_info/texi_xemacs/xemacs.texi.first
===================================================================
RCS file: xemacs_manual/res_info/texi_xemacs/xemacs.texi.first
diff -N xemacs_manual/res_info/texi_xemacs/xemacs.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ xemacs_manual/res_info/texi_xemacs/xemacs.texi.first        2 Aug 2009 
13:12:00 -0000       1.1
@@ -0,0 +1,24400 @@
+\input texinfo  @c -*-texinfo-*-
address@hidden xemacs.info
address@hidden  node-name,  next,  previous,  up
+
+
address@hidden XEmacs Editor
address@hidden
+* XEmacs: (xemacs).            XEmacs Editor.
address@hidden direntry
+
+This file documents the XEmacs editor.
+
+Copyright (C) 1985, 1986, 1988 Richard M. Stallman.
+Copyright @copyright{} 1991, 1992, 1993, 1994 Lucid, Inc.
+Copyright @copyright{} 1993, 1994 Sun Microsystems, Inc.
+Copyright @copyright{} 1995 Amdahl Corporation.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that the
+sections entitled ``The GNU Manifesto'', ``Distribution'' and ``GNU
+General Public License'' are included exactly as in the original, and
+provided that the entire resulting derived work is distributed under the
+terms of a permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that the sections entitled ``The GNU Manifesto'',
+``Distribution'' and ``GNU General Public License'' may be included in a
+translation approved by the author instead of in the original English.
address@hidden
address@hidden odd
address@hidden XEmacs User's Manual
address@hidden
address@hidden
address@hidden Top, License,, (dir)
address@hidden The XEmacs Editor
+
+
+XEmacs is the extensible, customizable, self-documenting real-time
+display editor.  This Info file describes how to edit with Emacs
+and some of how to customize it, but not how to extend it.  It
+corresponds to XEmacs version 21.0.
+
+This manual is intended as a detailed reference to XEmacs.  If
+you are looking for an introductory manual, see the New User's
+Guide.
+
address@hidden
+* License::     The GNU General Public License gives you permission
+               to redistribute XEmacs on certain terms; and also
+               explains that there is no warranty.
+* Distrib::     How to get XEmacs.
+* Intro::       An introduction to XEmacs concepts.
+* Glossary::    The glossary.
+* Manifesto::   What's GNU?  Gnu's Not Unix!
+
+Indices, nodes containing large menus
+* Key Index::      An item for each standard XEmacs key sequence.
+* Command Index::  An item for each command name.
+* Variable Index:: An item for each documented variable.
+* Concept Index::  An item for each concept.
+
+Important General Concepts
+* Frame::      How to interpret what you see on the screen.
+* Keystrokes::  Keyboard gestures XEmacs recognizes.
+* Pull-down Menus:: 
+                The XEmacs Pull-down Menus available under X.
+* Entering Emacs::    
+                Starting Emacs from the shell.
+* Exiting::     Stopping or killing XEmacs.
+* Command Switches::  
+                Hairy startup options.
+* Startup Paths::
+                How XEmacs finds Directories and Files.
+* Packages::    How XEmacs organizes its high-level functionality.
+
+Fundamental Editing Commands
+* Basic::       The most basic editing commands.
+* Undo::        Undoing recently made changes in the text.
+* Minibuffer::  Entering arguments that are prompted for.
+* M-x::         Invoking commands by their names.
+* Help::        Commands for asking XEmacs about its commands.
+
+Important Text-Changing Commands
+* Mark::        The mark: how to delimit a ``region'' of text.
+* Mouse Selection:: 
+                Selecting text with the mouse.
+* Additional Mouse Operations::
+                Other operations available from the mouse.
+* Killing::     Killing text.
+* Yanking::     Recovering killed text.  Moving text.
+* Using X Selections::
+                Using primary selection, cut buffers, and highlighted regions.
+* Accumulating Text::
+                Other ways of copying text.
+* Rectangles::  Operating on the text inside a rectangle on the screen.
+* Registers::   Saving a text string or a location in the buffer.
+* Display::     Controlling what text is displayed.
+* Search::      Finding or replacing occurrences of a string.
+* Fixit::       Commands especially useful for fixing typos.
+
+Larger Units of Text
+* Files::       All about handling files.
+* Buffers::     Multiple buffers; editing several files at once.
+* Windows::     Viewing two pieces of text at once.
+* Mule::       Using world scripts.
+
+Advanced Features
+* Major Modes:: Text mode vs. Lisp mode vs. C mode ...
+* Indentation:: Editing the white space at the beginnings of lines.
+* Text::        Commands and modes for editing English.
+* Programs::    Commands and modes for editing programs.
+* Running::     Compiling, running and debugging programs.
+* Abbrevs::     How to define text abbreviations to reduce
+                 the number of characters you must type.
+* Picture::     Editing pictures made up of characters
+                 using the quarter-plane screen model.
+* Sending Mail:: Sending mail in XEmacs.
+* Reading Mail:: Reading mail in XEmacs.
+* Calendar/Diary:: A Calendar and diary facility in XEmacs.
+* Sorting::    Sorting lines, paragraphs or pages within XEmacs.
+* Shell::       Executing shell commands from XEmacs.
+* Narrowing::   Restricting display and editing to a portion
+                 of the buffer.
+* Hardcopy::   Printing buffers or regions.
+* Recursive Edit::
+                A command can allow you to do editing
+                 "within the command".  This is called a
+                 `recursive editing level'.
+* Dissociated Press::  Dissociating text for fun.
+* CONX::              A different kind of dissociation.
+* Amusements::         Various games and hacks.
+* Emulation::         Emulating some other editors with XEmacs.
+* Customization::      Modifying the behavior of XEmacs.
+
+Recovery from Problems.
+* Quitting::    Quitting and aborting.
+* Lossage::     What to do if XEmacs is hung or malfunctioning.
+* Bugs::        How and when to report a bug.
+
+Here are some other nodes which are really inferiors of the ones
+already listed, mentioned here so you can get to them in one step:
+
+ --- The Detailed Node Listing ---
+
+The Organization of the Frame
+
+* Point::              The place in the text where editing commands operate.  
+* Echo Area::           Short messages appear at the bottom of the frame.  
+* Mode Line::          Interpreting the mode line.  
+* XEmacs under X::      Some information on using XEmacs under the X 
+                        Window System. 
+
+Keystrokes
+
+* Intro to Keystrokes::      Keystrokes as building blocks of key sequences.
+* Representing Keystrokes::  Using lists of modifiers and keysyms to
+                             represent keystrokes.
+* Key Sequences::            Combine key strokes into key sequences you can
+                             bind to commands.
+* String Key Sequences::     Available for upward compatibility.
+* Meta Key::                 Using @key{ESC} to represent @key{Meta}
+* Super and Hyper Keys::     Adding modifier keys on certain keyboards.
+* Character Representation:: How characters appear in XEmacs buffers.
+* Commands::                 How commands are bound to key sequences.
+                    
+Pull-down Menus
+
+* File Menu::           Items on the File menu.
+* Edit Menu::           Items on the Edit menu.
+* Apps Menu::          Items on the Apps menu.
+* Options Menu::        Items on the Options menu. 
+* Buffers Menu::        Information about the Buffers menu.
+* Tools Menu::         Items on the Tools menu.
+* Help Menu::           Items on the Help menu. 
+* Menu Customization::  Adding and removing menu items and related
+                        operations.
+
+Packages
+
+* Packages::            Introduction to XEmacs Packages.
+* Package Terminology:: Understanding different kinds of packages.
+* Installing Packages:: How to install packages.
+* Building Packages::   Building packages from sources.
+* Local.rules File::    An important part of building packages.
+* Creating Packages::   The basics.
+* Available Packages::  A brief directory of packaged LISP.
+
+Basic Editing Commands
+
+* Blank Lines::        Commands to make or delete blank lines.
+* Continuation Lines:: Lines too wide for the frame.
+* Position Info::      What page, line, row, or column is point on?
+* Arguments::         Numeric arguments for repeating a command.
+
+The Minibuffer
+
+* File: Minibuffer File.  Entering file names with the minibuffer.
+* Edit: Minibuffer Edit.  How to edit in the minibuffer.
+* Completion::           An abbreviation facility for minibuffer input.
+* Repetition::           Re-executing commands that used the minibuffer.
+
+The Mark and the Region
+
+* Setting Mark::       Commands to set the mark.
+* Using Region::       Summary of ways to operate on contents of the region.
+* Marking Objects::    Commands to put region around textual units.
+* Mark Ring::          Previous mark positions saved so you can go back there.
+
+Yanking
+
+* Kill Ring::       Where killed text is stored.  Basic yanking.
+* Appending Kills:: Several kills in a row all yank together.
+* Earlier Kills::   Yanking something killed some time ago.
+
+Using X Selections
+
+* X Clipboard Selection::      Pasting to the X clipboard.
+* X Selection Commands::       Other operations on the selection.
+* X Cut Buffers::              X cut buffers are available for compatibility.
+* Active Regions::             Using zmacs-style highlighting of the
+                                selected region.
+
+Registers
+
+* Position: RegPos.           Saving positions in registers.
+* Text: RegText.              Saving text in registers.
+* Rectangle: RegRect.         Saving rectangles in registers.
+* Configurations: RegConfig.  Saving window configurations in registers.
+* Files: RegFiles.            File names in registers.
+* Numbers: RegNumbers.        Numbers in registers.
+* Bookmarks::                 Bookmarks are like registers, but persistent.
+
+Controlling the Display
+
+* Scrolling::             Moving text up and down in a window.
+* Horizontal Scrolling::   Moving text left and right in a window.
+* Selective Display::      Hiding lines with lots of indentation.
+* Display Vars::           Information on variables for customizing display.
+
+Searching and Replacement
+
+* Incremental Search::     Search happens as you type the string.
+* Non-Incremental Search:: Specify entire string and then search.
+* Word Search::            Search for sequence of words.
+* Regexp Search::          Search for match for a regexp.
+* Regexps::                Syntax of regular expressions.
+* Search Case::            To ignore case while searching, or not.
+* Replace::                Search, and replace some or all matches.
+* Other Repeating Search:: Operating on all matches for some regexp.
+
+Replacement Commands
+
+* Unconditional Replace::  Replacing all matches for a string.
+* Regexp Replace::         Replacing all matches for a regexp.
+* Replacement and Case::   How replacements preserve case of letters.
+* Query Replace::          How to use querying.
+
+Commands for Fixing Typos
+
+* Kill Errors:: Commands to kill a batch of recently entered text.
+* Transpose::   Exchanging two characters, words, lines, lists...
+* Fixing Case:: Correcting case of last word entered.
+* Spelling::    Apply spelling checker to a word, or a whole file.
+
+File Handling
+
+* File Names::       How to type and edit file name arguments.
+* Visiting::         Visiting a file prepares XEmacs to edit the file.
+* Saving::           Saving makes your changes permanent.
+* Reverting::        Reverting cancels all the changes not saved.
+* Auto Save::        Auto Save periodically protects against loss of data.
+* Version Control::  Version control systems (RCS and SCCS).
+* ListDir::          Listing the contents of a file directory.
+* Comparing Files::  Finding where two files differ.
+* Dired::            ``Editing'' a directory to delete, rename, etc.
+                     the files in it.
+* Misc File Ops::    Other things you can do on files.
+
+Saving Files
+
+* Backup::       How XEmacs saves the old version of your file.
+* Interlocking:: How XEmacs protects against simultaneous editing
+                  of one file by two users.
+
+Backup Files
+
+* Names: Backup Names.         How backup files are named;
+                               Choosing single or numbered backup files.
+* Deletion: Backup Deletion.   XEmacs deletes excess numbered backups.
+* Copying: Backup Copying.     Backups can be made by copying or renaming.
+
+Auto-Saving: Protection Against Disasters
+
+* Files: Auto Save Files.
+* Control: Auto Save Control.
+* Recover::            Recovering text from auto-save files.
+
+Version Control
+
+* Concepts of VC::             Basic version control information;
+                                 checking files in and out.
+* Editing with VC::            Commands for editing a file maintained
+                                 with version control.
+* Variables for Check-in/out:: Variables that affect the commands used
+                                 to check files in or out.
+* Log Entries::                        Logging your changes.
+* Change Logs and VC::         Generating a change log file from log
+                                 entries. 
+* Old Versions::               Examining and comparing old versions.
+* VC Status::                  Commands to view the VC status of files and
+                                 look at log entries.
+* Renaming and VC::            A command to rename both the source and
+                                 master file correctly.
+* Snapshots::                  How to make and use snapshots, a set of
+                                 file versions that can be treated as a unit.
+* Version Headers::            Inserting version control headers into
+                                 working files.
+
+Snapshots
+
+* Making Snapshots::           The snapshot facilities.
+* Snapshot Caveats::           Things to be careful of when using snapshots.
+
+Dired, the Directory Editor
+
+* Enter: Dired Enter.         How to invoke Dired.
+* Edit: Dired Edit.           Editing the Dired buffer.
+* Deletion: Dired Deletion.   Deleting files with Dired.
+* Immed: Dired Immed.         Other file operations through Dired.
+
+Using Multiple Buffers
+
+* Select Buffer::   Creating a new buffer or reselecting an old one.
+* List Buffers::    Getting a list of buffers that exist.
+* Misc Buffer::     Renaming; changing read-onliness; copying text.
+* Kill Buffer::     Killing buffers you no longer need.
+* Several Buffers:: How to go through the list of all buffers
+                     and operate variously on several of them.
+
+Multiple Windows
+
+* Basic Window::     Introduction to XEmacs windows.
+* Split Window::     New windows are made by splitting existing windows.
+* Other Window::     Moving to another window or doing something to it.
+* Pop Up Window::    Finding a file or buffer in another window.
+* Change Window::    Deleting windows and changing their sizes.
+
+Major Modes
+
+* Choosing Modes::     How major modes are specified or chosen.
+
+Indentation
+
+* Indentation Commands:: Various commands and techniques for indentation.
+* Tab Stops::            You can set arbitrary "tab stops" and then
+                         indent to the next tab stop when you want to.
+* Just Spaces::          You can request indentation using just spaces.
+
+Commands for Human Languages
+
+* Text Mode::   The major modes for editing text files.
+* Nroff Mode::  The major mode for editing input to the formatter nroff.
+* TeX Mode::    The major modes for editing input to the formatter TeX.
+* Outline Mode:: The major mode for editing outlines.
+* Words::       Moving over and killing words.
+* Sentences::   Moving over and killing sentences.
+* Paragraphs:: Moving over paragraphs.
+* Pages::      Moving over pages.
+* Filling::     Filling or justifying text
+* Case::        Changing the case of text
+
address@hidden Mode
+
+* Editing: TeX Editing.   Special commands for editing in TeX mode.
+* Printing: TeX Print.    Commands for printing part of a file with TeX.
+
+Outline Mode
+
+* Format: Outline Format.        What the text of an outline looks like.
+* Motion: Outline Motion.        Special commands for moving through outlines.
+* Visibility: Outline Visibility. Commands to control what is visible.
+
+Filling Text
+
+* Auto Fill::    Auto Fill mode breaks long lines automatically.
+* Fill Commands:: Commands to refill paragraphs and center lines.
+* Fill Prefix::   Filling when every line is indented or in a comment, etc.
+
+Editing Programs
+
+* Program Modes::       Major modes for editing programs.
+* Lists::               Expressions with balanced parentheses.
+                         There are editing commands to operate on them.
+* Defuns::              Each program is made up of separate functions.
+                         There are editing commands to operate on them.
+* Grinding::            Adjusting indentation to show the nesting.
+* Matching::            Insertion of a close-delimiter flashes matching open.
+* Comments::            Inserting, filling and aligning comments.
+* Balanced Editing::    Inserting two matching parentheses at once, etc.
+* Lisp Completion::     Completion on symbol names in Lisp code.
+* Documentation::       Getting documentation of functions you plan to call.
+* Change Log::          Maintaining a change history for your program.
+* Tags::                Go directly to any function in your program in one
+                         command.  Tags remembers which file it is in.
+* Fortran::            Fortran mode and its special features.
+* Asm Mode::            Asm mode and its special features.
+
+Indentation for Programs
+
+* Basic Indent::
+* Multi-line Indent::   Commands to reindent many lines at once.
+* Lisp Indent::                Specifying how each Lisp function should be 
indented.
+* C Indent::           Choosing an indentation style for C code.
+
+Tags Tables
+
+* Tag Syntax::         Tag syntax for various types of code and text files.  
+* Create Tags Table::  Creating a tags table with @code{etags}.
+* Select Tags Table::  How to visit a tags table.
+* Find Tag::           Commands to find the definition of a specific tag. 
+* Tags Search::                Using a tags table for searching and replacing.
+* List Tags::          Listing and finding tags defined in a file.
+
+Fortran Mode
+
+* Motion: Fortran Motion.     Moving point by statements or subprograms.
+* Indent: Fortran Indent.     Indentation commands for Fortran.
+* Comments: Fortran Comments. Inserting and aligning comments.
+* Columns: Fortran Columns.   Measuring columns for valid Fortran.
+* Abbrev: Fortran Abbrev.     Built-in abbrevs for Fortran keywords.
+
+Fortran Indentation
+
+* Commands: ForIndent Commands. Commands for indenting Fortran.
+* Numbers:  ForIndent Num.      How line numbers auto-indent.
+* Conv:     ForIndent Conv.     Conventions you must obey to avoid trouble.
+* Vars:     ForIndent Vars.     Variables controlling Fortran indent style.
+
+Compiling and Testing Programs
+
+* Compilation::        Compiling programs in languages other than Lisp
+                        (C, Pascal, etc.)
+* Modes: Lisp Modes.   Various modes for editing Lisp programs, with
+                       different facilities for running the Lisp programs.
+* Libraries: Lisp Libraries.      Creating Lisp programs to run in XEmacs.
+* Eval: Lisp Eval.     Executing a single Lisp expression in XEmacs.
+* Debug: Lisp Debug.   Debugging Lisp programs running in XEmacs.
+* Interaction: Lisp Interaction.  Executing Lisp in an XEmacs buffer.
+* External Lisp::      Communicating through XEmacs with a separate Lisp.
+
+Lisp Libraries
+
+* Loading::            Loading libraries of Lisp code into XEmacs for use.
+* Compiling Libraries:: Compiling a library makes it load and run faster.
+* Mocklisp::           Converting Mocklisp to Lisp so XEmacs can run it.
+
+Abbrevs
+
+* Defining Abbrevs::  Defining an abbrev, so it will expand when typed.
+* Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
+* Editing Abbrevs::   Viewing or editing the entire list of defined abbrevs.
+* Saving Abbrevs::    Saving the entire list of abbrevs for another session.
+* Dynamic Abbrevs::   Abbreviations for words already in the buffer.
+
+Editing Pictures
+
+* Basic Picture::         Basic concepts and simple commands of Picture Mode.
+* Insert in Picture::     Controlling direction of cursor motion
+                           after "self-inserting" characters.
+* Tabs in Picture::       Various features for tab stops and indentation.
+* Rectangles in Picture:: Clearing and superimposing rectangles.
+
+Sending Mail
+
+* Format: Mail Format.    Format of the mail being composed.
+* Headers: Mail Headers.  Details of allowed mail header fields.
+* Mode: Mail Mode.        Special commands for editing mail being composed.
+
+Running Shell Commands from XEmacs
+
+* Single Shell::         How to run one shell command and return.
+* Interactive Shell::    Permanent shell taking input via XEmacs.
+* Shell Mode::           Special XEmacs commands used with permanent shell.
+
+Customization
+
+* Minor Modes::     Each minor mode is one feature you can turn on
+                     independently of any others.
+* Variables::       Many XEmacs commands examine XEmacs variables
+                     to decide what to do; by setting variables,
+                     you can control their functioning.
+* Keyboard Macros:: A keyboard macro records a sequence of keystrokes
+                     to be replayed with a single command.
+* Key Bindings::    The keymaps say what command each key runs.
+                     By changing them, you can "redefine keys".
+* Syntax::          The syntax table controls how words and expressions
+                     are parsed.
+* Init File::       How to write common customizations in the init file.
+* Audible Bell::    Changing how XEmacs sounds the bell. 
+* Faces::           Changing the fonts and colors of a region of text. 
+* X Resources::            X resources controlling various aspects of the
+                     behavior of XEmacs.
+
+Variables
+
+* Examining::           Examining or setting one variable's value.
+* Easy Customization::  Convenient and easy customization of variables.
+* Edit Options::        Examining or editing list of all variables' values.
+* Locals::              Per-buffer values of variables.
+* File Variables::      How files can specify variable values.
+
+Keyboard Macros
+
+* Basic Kbd Macro::     Defining and running keyboard macros.
+* Save Kbd Macro::      Giving keyboard macros names; saving them in files.
+* Kbd Macro Query::     Keyboard macros that do different things each use.
+
+Customizing Key Bindings
+
+* Keymaps::    Definition of the keymap data structure.
+               Names of XEmacs's standard keymaps.
+* Rebinding::  How to redefine one key's meaning conveniently.
+* Disabling::  Disabling a command means confirmation is required
+                before it can be executed.  This is done to protect
+                beginners from surprises.
+
+The Syntax Table
+
+* Entry: Syntax Entry.    What the syntax table records for each character.
+* Change: Syntax Change.  How to change the information.
+
+The Init File
+
+* Init Syntax::     Syntax of constants in Emacs Lisp.
+* Init Examples::   How to do some things with an init file.
+* Terminal Init::   Each terminal type can have an init file.
+
+Dealing with XEmacs Trouble
+
+* Stuck Recursive::    `[...]' in mode line around the parentheses.
+* Screen Garbled::     Garbage on the screen.
+* Text Garbled::       Garbage in the text.
+* Unasked-for Search:: Spontaneous entry to incremental search.
+* Emergency Escape::   Emergency escape---
+                        What to do if XEmacs stops responding.
+* Total Frustration::  When you are at your wits' end.
+
address@hidden menu
+
+
address@hidden  node-name,  next,  previous,  up
address@hidden License, Distrib, Top, Top
address@hidden GNU GENERAL PUBLIC LICENSE
address@hidden Version 1, February 1989
address@hidden license to copy XEmacs
address@hidden General Public License
+
address@hidden
+Copyright @copyright{} 1989 Free Software Foundation, Inc.
+675 Mass Ave, Cambridge, MA 02139, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
address@hidden display
+
address@hidden Preamble
+
+  The license agreements of most software companies try to keep users
+at the mercy of those companies.  By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software---to make sure the software is free for all its users.  The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must tell them their rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
address@hidden TERMS AND CONDITIONS
+
address@hidden
address@hidden
+This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License.  The
+``Program'', below, refers to any such program or work, and a ``work based
+on the Program'' means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications.  Each
+licensee is addressed as ``you''.
+
address@hidden
address@hidden Distribution
+You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program.  You may charge a fee for the physical act of
+transferring a copy.
+
address@hidden
+You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
address@hidden @bullet
address@hidden
+cause the modified files to carry prominent notices stating that
+you changed the files and the date of any change; and
+
address@hidden
+cause the whole of any work that you distribute or publish, that
+in whole or in part contains the Program or any part thereof, either
+with or without modifications, to be licensed at no charge to all
+third parties under the terms of this General Public License (except
+that you may choose to grant warranty protection to some or all
+third parties, at your option).
+
address@hidden
+If the modified program normally reads commands interactively when
+run, you must cause it, when started running for such interactive use
+in the simplest and most usual way, to print or display an
+announcement including an appropriate copyright notice and a notice
+that there is no warranty (or else, saying that you provide a
+warranty) and that users may redistribute the program under these
+conditions, and telling the user how to view a copy of this General
+Public License.
+
address@hidden
+You may charge a fee for the physical act of transferring a
+copy, and you may at your option offer warranty protection in
+exchange for a fee.
address@hidden itemize
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
address@hidden
+You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
address@hidden @bullet
address@hidden
+accompany it with the complete corresponding machine-readable
+source code, which must be distributed under the terms of
+Paragraphs 1 and 2 above; or,
+
address@hidden
+accompany it with a written offer, valid for at least three
+years, to give any third party free (except for a nominal charge
+for the cost of distribution) a complete machine-readable copy of the
+corresponding source code, to be distributed under the terms of
+Paragraphs 1 and 2 above; or,
+
address@hidden
+accompany it with the information you received as to where the
+corresponding source code may be obtained.  (This alternative is
+allowed only for noncommercial distribution and only if you
+received the program in object code or executable form alone.)
address@hidden itemize
+
+Source code for a work means the preferred form of the work for making
+modifications to it.  For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
address@hidden
+You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License.  However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
address@hidden
+By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
address@hidden
+Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions.  You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
address@hidden
address@hidden
+The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of the license which applies to it and ``any
+later version'', you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
address@hidden
+If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
address@hidden NO WARRANTY
+
address@hidden
+BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
address@hidden
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
+LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
+SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE
+WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
address@hidden enumerate
+
address@hidden END OF TERMS AND CONDITIONS
+
address@hidden
address@hidden Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+  To do so, attach the following notices to the program.  It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+``copyright'' line and a pointer to where the full notice is found.
+
address@hidden
address@hidden line to give the program's name and a brief idea of what it 
does.}
+Copyright (C) address@hidden  @var{name of author}
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
address@hidden smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
address@hidden
+Gnomovision version 69, Copyright (C) address@hidden @var{name of author}
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type `show c' for details.
address@hidden smallexample
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than `show w' and `show
+c'; they could even be mouse-clicks or menu items---whatever suits your
+program.
+
address@hidden
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a ``copyright disclaimer'' for the program, if
+necessary.  Here a sample; alter the names:
+
address@hidden
+Yoyodyne, Inc., hereby disclaims all copyright interest in the
+program `Gnomovision' (a program to direct compilers to make passes
+at assemblers) written by James Hacker.
+
address@hidden of Ty Coon}, 1 April 1989
+Ty Coon, President of Vice
address@hidden example
+
+That's all there is to it!
+
address@hidden  node-name,  next,  previous,  up
address@hidden Distrib, Intro, License, Top
address@hidden Distribution
+
+XEmacs is @dfn{free}; this means that everyone is free to use it and
+free to redistribute it on a free basis.  XEmacs is not in the public
+domain; it is copyrighted and there are restrictions on its
+distribution, but these restrictions are designed to permit everything
+that a good cooperating citizen would want to do.  What is not allowed
+is to try to prevent others from further sharing any version of XEmacs
+that they might get from you.  The precise conditions are found in
+the GNU General Public License that comes with XEmacs and also appears
+following this section.
+
+The easiest way to get a copy of XEmacs is from someone else who has it.
+You need not ask for permission to do so, or tell any one else; just copy
+it.
+
+If you have access to the Internet, you can get the latest version of
+XEmacs from the anonymous FTP server @file{ftp.xemacs.org} in the directory
address@hidden/pub/xemacs}.  It can also be found at numerous other archive
+sites around the world; check the file @file{etc/DISTRIB} in an XEmacs
+distribution for the latest known list.
+
+
address@hidden Getting Other Versions of Emacs
+
+The Free Software Foundation's version of Emacs (called @dfn{FSF Emacs}
+in this manual and often referred to as @dfn{GNU Emacs}) is available
+by anonymous FTP from @file{prep.ai.mit.edu}.
+
+Win-Emacs, an older version of XEmacs that runs on Microsoft Windows
+and Windows NT, is available by anonymous FTP from @file{ftp.netcom.com}
+in the directory @file{/pub/pe/pearl}, or from @file{ftp.cica.indiana.edu}
+as the files @file{wemdemo*.zip} in the directory @file{/pub/pc/win3/demo}.
+
address@hidden Intro, Glossary, Distrib, Top
address@hidden Introduction
+
+  You are reading about XEmacs, an incarnation of the advanced,
+self-documenting, customizable, extensible real-time display editor
+Emacs.  XEmacs provides many powerful display and user-interface
+capabilities not found in other Emacsen and is mostly upwardly
+compatible with GNU Emacs from the Free Software Foundation
+(referred to as @dfn{FSF Emacs} in this manual).  XEmacs also
+comes standard with a great number of useful packages.
+
+  We say that XEmacs is a @dfn{display} editor because normally the text
+being edited is visible on the screen and is updated automatically as you
+type.  @xref{Frame,Display}.
+
+  We call XEmacs a @dfn{real-time} editor because the display is updated very
+frequently, usually after each character or pair of characters you
+type.  This minimizes the amount of information you must keep in your
+head as you edit.  @xref{Basic,Real-time,Basic Editing}.
+
+  We call XEmacs advanced because it provides facilities that go beyond
+simple insertion and deletion: filling of text; automatic indentation of
+programs; viewing two or more files at once; and dealing in terms of
+characters, words, lines, sentences, paragraphs, and pages, as well as
+expressions and comments in several different programming languages.  It is
+much easier to type one command meaning ``go to the end of the paragraph''
+than to find that spot with simple cursor keys.
+
+  @dfn{Self-documenting} means that at any time you can type a special
+character, @kbd{Control-h}, to find out what your options are.  You can
+also use @kbd{C-h} to find out what a command does, or to find all the
+commands relevant to a topic.  @xref{Help}.
+
+  @dfn{Customizable} means you can change the definitions of XEmacs
+commands.  For example, if you use a programming language in
+which comments start with @samp{<**} and end with @samp{**>}, you can tell
+the XEmacs comment manipulation commands to use those strings
+(@pxref{Comments}).  Another sort of customization is rearrangement of the
+command set.  For example, you can set up the four basic cursor motion
+commands (up, down, left and right) on keys in a diamond pattern on the
+keyboard if you prefer.  @xref{Customization}.
+
+  @dfn{Extensible} means you can go beyond simple customization and
+write entirely new commands, programs in the Lisp language to be run by
+XEmacs's own Lisp interpreter.  XEmacs is an ``on-line extensible''
+system: it is divided into many functions that call each other.  You can
+redefine any function in the middle of an editing session and replace
+any part of XEmacs without making a separate copy of all of XEmacs.  Most
+of the editing commands of XEmacs are written in Lisp; the few
+exceptions could have been written in Lisp but are written in C for
+efficiency.  Only a programmer can write an extension to XEmacs, but anybody
+can use it afterward.
+
address@hidden Frame, Keystrokes, Concept Index, Top
address@hidden  node-name,  next,  previous,  up
address@hidden The XEmacs Frame
address@hidden frame
address@hidden window
address@hidden buffer
+
address@hidden @asis
address@hidden Frame
+In many environments, such as a tty terminal, an XEmacs frame
+literally takes up the whole screen.  If you are
+running XEmacs in a multi-window system like the X Window System, the
+XEmacs frame takes up one X window.  @xref{XEmacs under X}, for more
address@hidden
+
address@hidden Window
+No matter what environment you are running in, XEmacs allows you to look
+at several buffers at the same time by having several windows be part of
+the frame.  Often, the whole frame is taken up by just one window, but
+you can split the frame into two or more subwindows.  If you are
+running XEmacs under the X window system, that means you can have several
address@hidden windows} inside the X window that contains the XEmacs frame.
+You can even have multiple frames in different X windows, each with
+their own set of subwindows.
address@hidden
address@hidden table
+
+Each XEmacs frame displays a variety of information:
address@hidden @bullet
address@hidden
+The biggest area usually displays the text you are editing.  It may
+consist of one window or of two or more windows if you need to look at two
+buffers a the same time.
address@hidden
+Below each text window's last line is a @dfn{mode line} (@pxref{Mode
+Line}), which describes what is going on in that window.  The mode line
+is in inverse video if the terminal supports that.  If there are several
+XEmacs windows in one frame, each window has its own mode line.
address@hidden
+At the bottom of each XEmacs frame is the @dfn{echo area} or @dfn{minibuffer
+window}(@pxref{Echo Area}).  It is used by XEmacs to exchange information
+with the user.  There is only one echo area per XEmacs frame.
address@hidden
+If you are running XEmacs under a graphical windowing system, a
+menu bar at the top of the frame makes shortcuts to several of the
+commands available (@pxref{Pull-down Menus}).
address@hidden
+Under a graphical windowing system, a
+toolbar at the top of the frame, just under the menu bar if it exists,
+provides ``one-touch'' shortcuts to several commands.  (Not yet
+documented.)
address@hidden
+Under a graphical windowing system, a
+gutter at the top (under the toolbar) and/or bottom of the frame
+provides advanced GUI facilities like tab controls for rapid switching
+among related windows and progress bars for time-consuming operations
+like downloads across the Internet.  Gutters are an experimental feature
+introduced in XEmacs version 21.2.  (Not yet documented.)
address@hidden itemize
+
+  You can subdivide the XEmacs frame into multiple text windows, and use
+each window for a different file (@pxref{Windows}).  Multiple XEmacs
+windows are tiled vertically on the XEmacs frame.  The upper XEmacs window
+is separated from the lower window by its mode line.
+
+  When there are multiple, tiled XEmacs windows on a single XEmacs frame,
+the XEmacs window receiving input from the keyboard has the @dfn{keyboard
+focus} and is called the @dfn{selected window}.  The selected window
+contains the cursor, which indicates the insertion point.  If you are
+working in an environment that permits multiple XEmacs frames, and you
+move the focus from one XEmacs frame into another, the
+selected window is the one that was last selected in that frame.
+
+  The same text can be displayed simultaneously in several XEmacs
+windows, which can be in different XEmacs frames.  If you alter the text
+in an XEmacs buffer by editing it in one XEmacs window, the changes are
+visible in all XEmacs windows containing that buffer.
+
+
address@hidden
+* Point::              The place in the text where editing commands operate.
+* Echo Area::           Short messages appear at the bottom of the frame.
+* Mode Line::          Interpreting the mode line.
+* GUI Components::      Menubar, toolbars, gutters.
+* XEmacs under X::      Some information on using XEmacs under the X
+                        Window System.
+* XEmacs under MS Windows:: Some information on using XEmacs under
+                        Microsoft Windows.
address@hidden menu
+
address@hidden Point, Echo Area, Frame, Frame
address@hidden  node-name,  next,  previous,  up
address@hidden Point
address@hidden point
address@hidden cursor
+
+  When XEmacs is running, the cursor shows the location at which editing
+commands will take effect.  This location is called @dfn{point}.  You
+can use keystrokes or the mouse cursor to move point through the text
+and edit the text at different places.
+
+  While the cursor appears to point @var{at} a character, you should
+think of point as @var{between} two characters: it points @var{before}
+the character on which the cursor appears.  The exception is at the
+end of the line, where the cursor appears after the last character of
+the line.  Where the display is capable, the cursor at the end of the
+line will appear differently from a cursor over whitespace at the end
+of the line.  (In an X Windows frame, the end-of-line cursor is half
+the width of a within-line cursor.)  Sometimes people speak of ``the
+cursor'' when they mean ``point,'' or speak of commands that move
+point as ``cursor motion'' commands.
+
+ Each XEmacs frame has only one cursor.  When output is in progress, the cursor
+must appear where the typing is being done.  This does not mean that
+point is moving.  It is only that XEmacs has no way to show you the
+location of point except when the terminal is idle.
+
+  If you are editing several files in XEmacs, each file has its own point
+location.  A file that is not being displayed remembers where point is.
+Point becomes visible at the correct location when you look at the file again.
+
+  When there are multiple text windows, each window has its own point
+location.  The cursor shows the location of point in the selected
+window.  The visible cursor also shows you which window is selected.  If
+the same buffer appears in more than one window, point can be moved in
+each window independently.
+
+  The term `point' comes from the character @samp{.}, which was the
+command in TECO (the language in which the original Emacs was written)
+for accessing the value now called `point'.
+
address@hidden Echo Area, Mode Line, Point, Frame
address@hidden The Echo Area
address@hidden echo area
+
+  The line at the bottom of the frame (below the mode line) is the
address@hidden area}.  XEmacs uses this area to communicate with the user:
+
address@hidden @bullet
address@hidden
+  @dfn{Echoing} means printing out the characters that the user types.  XEmacs
+never echoes single-character commands.  Multi-character commands are
+echoed only if you pause while typing them: As soon as you pause for more
+than one second in the middle of a command, all the characters of the command
+so far are echoed.  This is intended to @dfn{prompt} you for the rest of
+the command.  Once echoing has started, the rest of the command is echoed
+immediately as you type it.  This behavior is designed to give confident
+users fast response, while giving hesitant users maximum feedback.  You
+can change this behavior by setting a variable (@pxref{Display Vars}).
address@hidden
+  If you issue a command that cannot be executed, XEmacs may print an
address@hidden message} in the echo area.  Error messages are accompanied by
+a beep or by flashing the frame.  Any input you have typed ahead is
+thrown away when an error happens.
address@hidden
+  Some commands print informative messages in the echo area.  These
+messages look similar to error messages, but are not announced with a
+beep and do not throw away input.  Sometimes a message tells you what the
+command has done, when this is not obvious from looking at the text being
+edited.  Sometimes the sole purpose of a command is to print a message
+giving you specific information.  For example, the command @kbd{C-x =} is
+used to print a message describing the character position of point in the
+text and its current column in the window.  Commands that take a long time
+often display messages ending in @samp{...} while they are working, and
+add @samp{done} at the end when they are finished.
address@hidden
+  The echo area is also used to display the @dfn{minibuffer}, a window
+that is used for reading arguments to commands, such as the name of a
+file to be edited.  When the minibuffer is in use, the echo area displays
+with a prompt string that usually ends with a colon.  The cursor
+appears after the prompt.  You can always get out of the minibuffer by
+typing @kbd{C-g}.  @xref{Minibuffer}.
address@hidden itemize
+
address@hidden Mode Line, GUI Components, Echo Area, Frame
address@hidden  node-name,  next,  previous,  up
address@hidden The Mode Line
address@hidden mode line
address@hidden top level
+
+  Each text window's last line is a @dfn{mode line} which describes what is
+going on in that window.  When there is only one text window, the mode line
+appears right above the echo area.  The mode line is in inverse video if
+the terminal supports that, starts and ends with dashes, and contains text
+like @samp{XEmacs:@: @var{something}}.
+
+  If a mode line has something else in place of @samp{XEmacs:@:
address@hidden, the window above it is in a special subsystem
+such as Dired.  The mode line then indicates the status of the
+subsystem.
+
+  Normally, the mode line has the following appearance:
+
address@hidden
address@hidden: @var{buf}      (@var{major} @var{minor})address@hidden
address@hidden example
+
address@hidden
+This gives information about the buffer being displayed in the window: the
+buffer's name, what major and minor modes are in use, whether the buffer's
+text has been changed, and how far down the buffer you are currently
+looking.
+
+  @var{ch} contains two stars (@samp{**}) if the text in the buffer has been
+edited (the buffer is ``modified''), or two dashes (@samp{--}) if the
+buffer has not been edited.  Exception: for a read-only buffer, it is
address@hidden
+
+  @var{buf} is the name of the window's chosen @dfn{buffer}.  The chosen
+buffer in the selected window (the window that the cursor is in) is also
+XEmacs's selected buffer, the buffer in which editing takes place.  When
+we speak of what some command does to ``the buffer'', we mean the
+currently selected buffer.  @xref{Buffers}.
+
+  @var{pos} tells you whether there is additional text above the top of
+the screen or below the bottom.  If your file is small and it is
+completely visible on the screen, @var{pos} is @samp{All}.  Otherwise,
address@hidden is @samp{Top} if you are looking at the beginning of the file,
address@hidden if you are looking at the end of the file, or
address@hidden@var{nn}%}, where @var{nn} is the percentage of the file above the
+top of the address@hidden
+
+  @var{major} is the name of the @dfn{major mode} in effect in the buffer.  At
+any time, each buffer is in one and only one major mode.
+The available major modes include Fundamental mode (the least specialized),
+Text mode, Lisp mode, and C mode.  @xref{Major Modes}, for details
+on how the modes differ and how you select address@hidden
+
+  @var{minor} is a list of some of the @dfn{minor modes} that are turned on
+in the window's chosen buffer.  For example, @samp{Fill} means that Auto
+Fill mode is on.  @code{Abbrev} means that Word Abbrev mode is on.
address@hidden means that Overwrite mode is on.  @xref{Minor Modes}, for more
+information.  @samp{Narrow} means that the buffer being displayed has
+editing restricted to only a portion of its text.  This is not really a
+minor mode, but is like one.  @xref{Narrowing}.  @code{Def} means that a
+keyboard macro is being defined.  @xref{Keyboard Macros}.
+
+  Some buffers display additional information after the minor modes.  For
+example, Rmail buffers display the current message number and the total
+number of messages.  Compilation buffers and Shell mode display the status
+of the subprocess.
+
+  If XEmacs is currently inside a recursive editing level, square
+brackets (@address@hidden) appear around the parentheses that surround
+the modes.  If XEmacs is in one recursive editing level within another,
+double square brackets appear, and so on.  Since information on
+recursive editing applies to XEmacs in general and not to any one buffer,
+the square brackets appear in every mode line on the screen or not in
+any of them.  @xref{Recursive address@hidden
+
address@hidden display-time
+  XEmacs can optionally display the time and system load in all mode lines.
+To enable this feature, type @kbd{M-x display-time}.  The information added
+to the mode line usually appears after the file name, before the mode names
+and their parentheses.  It looks like this:
+
address@hidden
address@hidden:@var{mm}pm @var{l.ll} address@hidden
address@hidden example
+
address@hidden
+(Some fields may be missing if your operating system cannot support them.)
address@hidden and @var{mm} are the hour and minute, followed always by 
@samp{am}
+or @samp{pm}.  @var{l.ll} is the average number of running processes in the
+whole system recently.  @var{d} is an approximate index of the ratio of
+disk activity to CPU activity for all users.
+
+The word @samp{Mail} appears after the load level if there is mail for
+you that you have not read yet.
+
address@hidden mode-line-inverse-video
+  Customization note: the variable @code{mode-line-inverse-video}
+controls whether the mode line is displayed in inverse video (assuming
+the terminal supports it); @code{nil} means no inverse video.  The
+default is @code{t}.  For X frames, simply set the foreground and
+background colors appropriately.
+
address@hidden GUI Components, XEmacs under X, Mode Line, Frame
address@hidden  node-name,  next,  previous,  up
address@hidden GUI Components
+
+When executed in a graphical windowing environment such as the X Window
+System or Microsoft Windows, XEmacs displays several graphical user
+interface components such as scrollbars, menubars, toolbars, and
+gutters.  By default there is a vertical scrollbar at the right of each
+frame, and at the top of the frame there is a menubar, a toolbar, and a
+gutter, in that order.  Gutters can contain any of several widgets, but
+the default configuration puts a set of "notebook tabs" which you can
+use as a shortcut for selecting any of several related buffers in a
+given frame.  Operating the GUI components is "obvious":  click on the
+menubar to pull down a menu, on a button in the toolbar to invoke a
+function, and on a tab in the gutter to switch buffers.
+
address@hidden
+* Menubar Basics::      How XEmacs uses the menubar.
+* Scrollbar Basics::    How XEmacs uses scrollbars.
+* Mode Line Basics::    How XEmacs uses modelines.
+* Toolbar Basics::      How XEmacs uses toolbars.
+* Gutter Basics::       How XEmacs uses gutters.
+* Inhibiting::          What if you don't like GUI?
+* Customizing::         Position, orientation, and appearance of GUI objects.
address@hidden menu
+
address@hidden Menubar Basics, Scrollbar Basics, , GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden The XEmacs Menubar
+
+The XEmacs menubar is intended to be conformant to the usual conventions
+for menubars, although conformance is not yet perfect.  The menu at the
+extreme right is the @samp{Help} menu, which should always be
+available.  It provides access to all the XEmacs help facilities
+available through @kbd{C-h}, as well as samples of various configuration
+files like @samp{~/.Xdefaults} and @samp{~/.emacs}.  At the extreme left
+is the @samp{Files} menu, which provides the usual file reading,
+writing, and printing operations, as well as operations like revert
+buffer from most recent save.  The next menu from the left is the
address@hidden menu, which provides the @samp{Undo} operation as well as
+cutting and pasting, searching, and keyboard macro definition and
+execution.
+
address@hidden #### w3.el and VM should get cross-references here.
+XEmacs provides a very dynamic environment, and the Lisp language makes
+for highly flexible applications.  The menubar reflects this: many menus
+(eg, the @samp{Buffers} menu, @pxref{Buffers Menu}) contain items
+determined by the current state of XEmacs, and most major modes and many
+minor modes add items to menus and even whole menus to the menubar.  In
+fact, some applications like w3.el and VM provide so many menus that
+they define a whole new menubar and add a button that allows convenient
+switching between the ``XEmacs menubar'' and the ``application
+menubar''.  Such applications normally bind themselves to a particular
+frame, and this switching only takes place on frames where such an
+application is active (ie, the current window of the frame is displaying
+a buffer in the appropriate major mode).
+
+Other menus which are typically available are the @samp{Options},
address@hidden, @samp{Buffers}, @samp{Apps}, and @samp{Mule} menus.  For
+detailed descriptions of these menus, @ref{Pull-down Menus}.  (In 21.2
+XEmacsen, the @samp{Mule} menu will be moved under @samp{Options}.)
+
address@hidden Scrollbar Basics, Mode Line Basics, Menubar Basics, GUI 
Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Scrollbars
+
+XEmacs scrollbars provide the usual interface.  Arrow buttons at either
+end allow for line by line scrolling, including autorepeat.  Clicking in
+the scrollbar itself provides scrolling by windowsfull, depending on
+which side of the slider is clicked.  The slider itself may be dragged
+for smooth scrolling.
+
+The position of the slider corresponds to the position of the window in
+the buffer.  In particular, the length of the slider is proportional to
+the fraction of the buffer which appears in the window.
+
+The presence of the scrollbars is under control of the application or
+may be customized by the user.  By default a vertical scrollbar is
+present in all windows (except the minibuffer), and there is no
+horizontal scrollbar.
+
address@hidden Mode Line Basics, Toolbar Basics, Scrollbar Basics, GUI 
Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Mode Lines
+
+When used in a windowing system, the XEmacs modelines can be dragged
+vertically. The effect is to resize the windows above and below the
+modeline (this includes the minibuffer window).
+
+Additionally, a modeline can be dragged horizontally, in which case it
+scrolls its own text. This behavior is not enabled by default because it
+could be considered as disturbing when dragging vertically. When this
+behavior is enabled, the modeline's text can be dragged either in the
+same direction as the mouse, or in the opposite sense, making the
+modeline act as a scrollbar for its own text.
+
+You can select the behavior you want from the @samp{Display} submenu of
+the @samp{Options} menu.
+
address@hidden Toolbar Basics, Gutter Basics, Mode Line Basics, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Toolbars
+
+XEmacs has a default toolbar which provides shortcuts for some of the
+commonly used operations (such as opening files) and applications (such
+as the Info manual reader).  Operations which require arguments will pop
+up dialogs to get them.
+
+The position of the default toolbar can be customized.  Also, several
+toolbars may be present simultaneously (in different positions).  VM,
+for example, provides an application toolbar which shortcuts for
+mail-specific operations like sending, saving, and deleting messages.
+
address@hidden Gutter Basics, Inhibiting, Toolbar Basics, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Gutters
+
+Gutters are the most flexible of the GUI components described in this
+section.  In theory, the other GUI components could be implemented by
+customizing a gutter, but in practice the other components were
+introduced earlier and have their own special implementations.  Gutters
+tend to be more transient than the other components.  Buffer tabs, for
+example, change every time the selected buffer in the frame changes.
+And for progress gauges a gutter to contain the gauge is typically
+created on the fly when needed, then destroyed when the operation whose
+staus is being displayed is completed.
+
+Buffer tabs, having somewhat complex behavior, deserve a closer look.
+By default, a row of buffer tabs is displayed at the top of every frame.
+(The tabs could be placed in the bottom gutter, but would be oriented
+the same way and look rather odd.  The horizontal orientation makes
+putting them in a side gutter utterly impractical.)  The buffer
+displayed in the current window of a frame can be changed to a specific
+buffer by clicking [mouse-1] on the corresponding tab in the gutter.
+
+Each tab contains the name of its buffer.  The tab for the current
+buffer in each frame is displayed in raised relief.  The list of buffers
+chosen for display in the buffer tab row is derived by filtering the
+buffer list (like the @code{Buffers} menu).  The list starts out with
+all existing buffers, with more recently selected buffers coming earlier
+in the list.
+
+Then "uninteresting" buffers, like internal XEmacs buffers, the
address@hidden Log*} buffer, and so on are deleted from the list.  Next,
+the frame's selected buffer is determined.  Buffers with a different
+major mode from the selected buffer are removed from the list.  Finally,
+if the list is too long, the least recently used buffers are deleted
+from the list.  By default up to 6 most recently used buffers with the
+same mode are displayed on tabs in the gutter.
+
address@hidden Inhibiting, Customizing, Gutter Basics, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden Inhibiting Display of GUI Components
+
+Use of GUI facilities is a personal thing.  Almost everyone agrees that
+drawing via keyboard-based "turtle graphics" is acceptable to hardly
+anyone if a mouse is available, but conversely emulating a keyboard with
+a screenful of buttons is a painful experience.  But between those
+extremes the complete novice will require a fair amount of time before
+toolbars and menus become dispensable, but many an "Ancien Haquer" sees
+them as a complete waste of precious frame space that could be filled
+with text.
+
+Display of all of the GUI components created by XEmacs can be inhibited
+through the use of Customize.  Customize can be accessed through
address@hidden | Customize} in the menu bar, or via @kbd{M-x customize}.
+Then navigate through the Customize tree to @samp{Emacs | Environment}.
+Scrollbar and toolbar visibility is controlled via the @samp{Display}
+group, options @samp{Scrollbars visible} and  @samp{Toolbar visible}
+respectively.  Gutter visibility is controlled by group @samp{Gutter},
+option @samp{Visible}.
+
+Or they can be controlled directly by @kbd{M-x customize-variable}, by
+changing the values of the variables @code{menubar-visible-p},
address@hidden, @code{toolbar-visible-p}, or
address@hidden respectively.  (The strange form of
+the last variable is due to the fact that gutters are often used to
+display transient widgets like progress gauges, which you probably don't
+want to inhibit.  It is more likely that you want to inhibit the default
+display of the buffers tab widget, which is what that variable controls.
+This interface is subject to change depending on developer experience
+and user feedback.)
+
+Control of frame configuration can controlled automatically according to
+various parameters such as buffer or frame because these are
address@hidden @ref{Specifiers, , , lispref}.  Using these features
+requires programming in Lisp; Customize is not yet that sophisticated.
+Also, components that appear in various positions and orientations can
+have display suppressed according to position.  @kbd{C-h a visible-p}
+gives a list of variables which can be customized.  E.g., to control the
+visibility of specifically the left-side toolbar only, customize
address@hidden
+
address@hidden Customizing, , Inhibiting, GUI Components
address@hidden  node-name,  next,  previous,  up
address@hidden Changing the Position, Orientation, and Appearance of GUI 
Components
+
+  #### Not documented yet.
+
address@hidden XEmacs under X, XEmacs under MS Windows, GUI Components, Frame
address@hidden Using XEmacs Under the X Window System
address@hidden  node-name,  next,  previous,  up
+
+XEmacs can be used with the X Window System and a window manager like
+MWM or TWM.  In that case, the X window manager opens, closes, and
+resizes XEmacs frames.  You use the window manager's mouse gestures to
+perform the operations.  Consult your window manager guide or reference
+manual for information on manipulating X windows.
+
+When you are working under X, each X window (that is, each XEmacs frame)
+has a menu bar for mouse-controlled operations (@pxref{Pull-down Menus}).
+
address@hidden multi-frame XEmacs
address@hidden make-frame
+XEmacs under X is also a multi-frame XEmacs.  You can use the @b{New
+Frame} menu item from the @b{File} menu to create a new XEmacs frame in a
+new X window from the same process.  The different frames will share the
+same buffer list, but you can look at different buffers in the different
+frames.
+
address@hidden find-file-other-frame
+The function @code{find-file-other-frame} is just like @code{find-file},
+but creates a new frame to display the buffer in first.  This is
+normally bound to @kbd{C-x 5 C-f}, and is what the @b{Open File, New
+Frame} menu item does.
+
address@hidden switch-to-buffer-other-frame
+The function @code{switch-to-buffer-other-frame} is just like
address@hidden, but creates a new frame to display the buffer
+in first.  This is normally bound to @kbd{C-x 5 b}.
+
address@hidden default-frame-alist
address@hidden default-frame-plist
+You can specify a different default frame size other than the one provided.
+Use the variable @code{default-frame-plist}, which is a plist of default
+values for frame creation other than the first one.  These may be set in
+your init file, like this:
+
address@hidden
+  (setq default-frame-plist '(width 80 height 55))
address@hidden example
+
+This variable has replaced @code{default-frame-alist}, which is
+considered obsolete.
+
address@hidden x-frame-defaults
+For values specific to the first XEmacs frame, you must use X resources.
+The variable @code{x-frame-defaults} takes an alist of default frame
+creation parameters for X window frames.  These override what is
+specified in @file{~/.Xdefaults} but are overridden by the arguments to
+the particular call to @code{x-create-frame}.
+
address@hidden create-frame-hook
+When you create a new frame, the variable @code{create-frame-hook}
+is called with one argument, the frame just created.
+
+If you want to close one or more of the X windows you created using
address@hidden Frame}, use the @b{Delete Frame} menu item from the @b{File} 
menu.
+
address@hidden frame-title-format
address@hidden frame-icon-title-format
+If you are working with multiple frames, some special information
+applies:
address@hidden @bullet
address@hidden
+Two variables, @code{frame-title-format} and
address@hidden determine the title of the frame and
+the title of the icon that results if you shrink the frame.
+
address@hidden auto-lower-frame
address@hidden auto-raise-frame
address@hidden
+The variables @code{auto-lower-frame} and @code{auto-raise-frame}
+position a frame. If true, @code{auto-lower-frame} lowers a frame to
+the bottom when it is no longer selected. If true,
address@hidden raises a frame to the top when it is
+selected. Under X, most ICCCM-compliant window managers will have
+options to do this for you, but these variables are provided in case you
+are using a broken window manager.
+
address@hidden
+There is a new frame/modeline format directive, %S, which expands to
+the name of the current frame (a frame's name is distinct from its
+title; the name is used for resource lookup, among other things, and the
+title is simply what appears above the window.)
address@hidden itemize
+
address@hidden XEmacs under MS Windows, , XEmacs under X, Frame
address@hidden Using XEmacs Under Microsoft Windows
address@hidden  node-name,  next,  previous,  up
+
+Use of XEmacs under MS Windows is not separately documented here, but
+most operations available under the X Window System are also available
+with MS Windows.
+
+Where possible, native MS Windows GUI components and capabilities are
+used in XEmacs.
+
address@hidden Keystrokes, Pull-down Menus, Frame, Top
address@hidden Keystrokes, Key Sequences, and Key Bindings
+
+
address@hidden
+* Intro to Keystrokes::      Keystrokes as building blocks of key sequences.
+* Representing Keystrokes::  Using lists of modifiers and keysyms to
+                             represent keystrokes.
+* Key Sequences::            Combine key strokes into key sequences you can
+                             bind to commands.
+* String Key Sequences::     Available for upward compatibility.
+* Meta Key::                 Using @key{ESC} to represent @key{Meta}
+* Super and Hyper Keys::     Adding modifier keys on certain keyboards.
+* Character Representation:: How characters appear in Emacs buffers.
+* Commands::                 How commands are bound to key sequences.
address@hidden menu
+ 
address@hidden Intro to Keystrokes, Representing Keystrokes, Keystrokes, 
Keystrokes
address@hidden Keystrokes as Building Blocks of Key Sequences
address@hidden character set
address@hidden ASCII
address@hidden keystroke
+
+      Earlier versions of Emacs used only the ASCII character set,
+which defines 128 different character codes.  Some of these codes are
+assigned graphic symbols like @samp{a} and @samp{=}; the rest are
+control characters, such as @kbd{Control-a} (also called @kbd{C-a}).
address@hidden means you hold down the @key{CTRL} key and then press
address@hidden@refill
+
+   Keybindings in XEmacs are not restricted to the set of
+keystrokes that can be represented in ASCII.  XEmacs can tell the
+difference between, for example, @kbd{Control-h}, @kbd{Control-Shift-h},
+and @kbd{Backspace}.
+  
address@hidden modifier key
address@hidden keysym
address@hidden meta key
address@hidden control key
address@hidden hyper key
address@hidden super key
address@hidden shift key
address@hidden button1 
address@hidden button2
address@hidden button3
address@hidden button1up
address@hidden button2up
address@hidden button3up
+
+  A keystroke is like a piano chord: you get it by simultaneously
+striking several keys.  To be more precise, a keystroke consists
+of a possibly empty set of modifiers followed by a single
address@hidden  The set of modifiers is small; it consists of
address@hidden, @kbd{Meta}, @kbd{Super}, @kbd{Hyper}, and @kbd{Shift}.
+
+  The rest of the keys on your keyboard, along with the mouse buttons,
+make up the set of keysyms.  A keysym is usually what is printed on the
+keys on your keyboard.  Here is a table of some of the symbolic names
+for keysyms:
address@hidden @kbd
address@hidden a,b,c...
+alphabetic keys
address@hidden f1,f2...
+function keys
address@hidden button1
+left mouse button
address@hidden button2
+middle mouse button
address@hidden button3
+right mouse button
address@hidden button1up 
+upstroke on the left mouse button
address@hidden button2up
+upstroke on the middle mouse button
address@hidden button3up
+upstroke on the right mouse button
address@hidden return
+Return key
address@hidden table
+
address@hidden keyboard-translate-table
+Use the variable @code{keyboard-translate-table} only if you are on a
+dumb tty, as it cannot handle input that cannot be represented as ASCII.
+The value of this variable is a string used as a translate table for
+keyboard input or @code{nil}.  Each character is looked up in this
+string and the contents used instead.  If the string is of length
address@hidden, character codes @code{N} and up are untranslated.  If you are
+running Emacs under X, you should do the translations with the
address@hidden program instead.
+
+
address@hidden Representing Keystrokes, Key Sequences, Intro to Keystrokes, 
Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Representing Keystrokes
address@hidden hyper key
address@hidden super key
address@hidden read-key-sequence
+
+  XEmacs represents keystrokes as lists. Each list consists of
+an arbitrary combination of modifiers followed by a single keysym at the
+end of the list.  If the keysym corresponds to an ASCII character, you
+can use its character code.  (A keystroke may also be represented by an
+event object, as returned by the @code{read-key-sequence} function;
+non-programmers need not worry about this.)
+
+The following table gives some examples of how to list representations
+for keystrokes.  Each list consists of sets of modifiers followed by
+keysyms:
+
address@hidden @kbd
address@hidden (control a)
+Pressing @key{CTRL} and @kbd{a} simultaneously.
address@hidden (control ?a)
+Another way of writing the keystroke @kbd{C-a}.
address@hidden (control 65)
+Yet another way of writing the keystroke @kbd{C-a}.
address@hidden (break)
+Pressing the @key{BREAK} key.
address@hidden (control meta button2up)
+Release the middle mouse button, while pressing @key{CTRL} and
address@hidden 
address@hidden table
address@hidden shift modifier
+  Note: As you define keystrokes, you can use the @kbd{shift} key only
+as a modifier with characters that do not have a second keysym on the
+same key, such as @kbd{backspace} and @kbd{tab}.  It is an error to
+define a keystroke using the @key{shift} modifier with keysyms such as
address@hidden and @kbd{=}.  The correct forms are @kbd{A} and @kbd{+}.
+
address@hidden Key Sequences, String Key Sequences, Representing Keystrokes, 
Keystrokes
address@hidden Representing Key Sequences
+
+  A @dfn{complete key sequence} is a sequence of keystrokes that Emacs
+understands as a unit.  Key sequences are significant because you can
+bind them to commands.  Note that not all sequences of keystrokes are
+possible key sequences.  In particular, the initial keystrokes in a key
+sequence must make up a @dfn{prefix key sequence}.
+
+  Emacs represents a key sequence as a vector of keystrokes.  Thus, the
+schematic representation of a complete key sequence is as follows:
+
address@hidden
+  [(modifier .. modifier keysym) ... (modifier .. modifier keysym)]
address@hidden example
+
+  Here are some examples of complete key sequences:
+
address@hidden @kbd
address@hidden [(control c) (control a)]
+Typing @kbd{C-c} followed by @kbd{C-a}
address@hidden [(control c) (control 65)]
+Typing @kbd{C-c} followed by @kbd{C-a}. (Using the ASCII code
+for the character `a')@refill
address@hidden [(control c) (break)]
+Typing @kbd{C-c} followed by the @kbd{break} address@hidden
address@hidden table
+
address@hidden C-c
address@hidden C-x
address@hidden C-h
address@hidden ESC
address@hidden prefix key sequence
+
+  A @dfn{prefix key sequence} is the beginning of a series of longer
+sequences that are valid key sequences; adding any single keystroke to
+the end of a prefix results in a valid key sequence.  For example,
address@hidden is standardly defined as a prefix.  Thus there is a
+two-character key sequence starting with @kbd{C-x} for each valid
+keystroke, giving numerous possibilities.  Here are some samples:
+
address@hidden @bullet
address@hidden
address@hidden(control x) (c)]}
address@hidden
address@hidden(control x) (control c)]}
address@hidden itemize
+
+  Adding one character to a prefix key does not have to form a complete
+key.  It could make another, longer prefix.  For example, @kbd{[(control
+x) (\4)]} is itself a prefix that leads to any number of different
+three-character keys, including @kbd{[(control x) (\4) (f)]},
address@hidden(control x) (\4) (b)]} and so on.  It would be possible to define
+one of those three-character sequences as a prefix, creating a series of
+four-character keys, but we did not define any of them this address@hidden
+
+  By contrast, the two-character sequence @kbd{[(control f) (control
+k)]} is not a key, because the @kbd{(control f)} is a complete key
+sequence in itself.  You cannot give @kbd{[(control f (control k)]} an
+independent meaning as a command while @kbd{(control f)} is a complete
+sequence, because Emacs would understand @key{C-f C-k} as two
address@hidden
+
+ The predefined prefix key sequences in Emacs are @kbd{(control c)},
address@hidden(control x)}, @kbd{(control h)}, @kbd{[(control x) (\4)]}, and
address@hidden  You can customize Emacs and could make new prefix keys or
+eliminate the default key sequences.  @xref{Key Bindings}.  For example,
+if you redefine @kbd{(control f)} as a prefix, @kbd{[(control f)
+(control k)]} automatically becomes a valid key sequence (complete,
+unless you define it as a prefix as well).  Conversely, if you remove
+the prefix definition of @kbd{[(control x) (\4)]}, @kbd{[(control x)
+(\4) (f)]} (or @kbd{[(control x) (\4) @var{anything}]}) is no longer a
+valid key sequence.
+
+Note that the above paragraphs uses \4 instead of simply 4, because \4
+is the symbol whose name is "4", and plain 4 is the integer 4, which
+would have been interpreted as the ASCII value.  Another way of
+representing the symbol whose name is "4" is to write ?4, which would be
+interpreted as the number 52, which is the ASCII code for the character
+"4".  We could therefore actually have written 52 directly, but that is
+far less clear.
+
address@hidden String Key Sequences, Meta Key, Key Sequences, Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden  String Key Sequences
+For backward compatibility, you may also represent a key sequence using
+strings.  For example, we have the following equivalent representations:
+
address@hidden @kbd
address@hidden "\C-c\C-c"
address@hidden(control c) (control c)]}
address@hidden "\e\C-c"
address@hidden(meta control c)]}
address@hidden table
+
address@hidden LFD
address@hidden TAB
+
address@hidden Meta Key, Super and Hyper Keys, String Key Sequences, Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Assignment of the @key{META} Key
+ 
address@hidden META
address@hidden ESC
+  Not all terminals have the complete set of modifiers.  
+Terminals that have a @key{Meta} key allow you to type Meta characters
+by just holding that key down.  To type @kbd{Meta-a}, hold down
address@hidden and press @kbd{a}.  On those terminals, the @key{META} key
+works like the @key{SHIFT} key.  Such a key is not always labeled
address@hidden, however, as this function is often a special option for a
+key with some other primary address@hidden
+
+  If there is no @key{META} key, you can still type Meta characters
+using two-character sequences starting with @key{ESC}.  To enter
address@hidden, you could type @address@hidden a}.  To enter @kbd{C-M-a}, you
+would type @kbd{ESC C-a}.  @key{ESC} is allowed on terminals with
+Meta keys, too, in case you have formed a habit of using address@hidden
+
+If you are running under X and do not have a @key{META} key, it 
+is possible to reconfigure some other key to be a @key{META} 
+key.  @xref{Super and Hyper Keys}. @refill
+
address@hidden meta-flag
+  Emacs believes the terminal has a @key{META} key if the variable
address@hidden is address@hidden  Normally this is set automatically
+according to the termcap entry for your terminal type.  However, sometimes
+the termcap entry is wrong, and then it is useful to set this variable
+yourself.  @xref{Variables}, for how to do this.
+
+Note: If you are running under the X window system, the setting of
+the @code{meta-flag} variable is irrelevant. 
+
address@hidden Super and Hyper Keys, Character Representation, Meta Key, 
Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Assignment of the @key{SUPER} and @key{HYPER} Keys
address@hidden hyper key
address@hidden super key
+
+  Most keyboards do not, by default, have @key{SUPER} or @key{HYPER}
+modifier keys.  Under X, you can simulate the @key{SUPER} or
address@hidden key if you want to bind keys to sequences using @kbd{super}
+and @kbd{hyper}.  You can use the @code{xmodmap} program to do this.
+
+  For example, to turn your @key{CAPS-LOCK} key into a @key{SUPER} key,
+do the following:
+
+  Create a file called @code{~/.xmodmap}.  In this file, place the lines
+
address@hidden
+        remove Lock = Caps_Lock
+        keysym Caps_Lock = Super_L
+        add Mod2 = Super_L
address@hidden example
+
+The first line says that the key that is currently called @code{Caps_Lock}
+should no longer behave as a ``lock'' key.  The second line says that
+this should now be called @code{Super_L} instead.  The third line says that 
+the key called @code{Super_L} should be a modifier key, which produces the
address@hidden modifier.
+
+To create a @key{META} or @key{HYPER} key instead of a @key{SUPER} key,
+replace the word @code{Super} above with @code{Meta} or @code{Hyper}.
+
+Just after you start up X, execute the command @code{xmodmap /.xmodmap}.
+You can add this command to the appropriate initialization file to have
+the command executed address@hidden
+
+If you have problems, see the documentation for the @code{xmodmap}
+program.  The X keyboard model is quite complicated, and explaining
+it is beyond the scope of this manual.  However, we reprint the 
+following description from the X Protocol document for your convenience:
+
address@hidden keysyms
address@hidden keycode
+
+ A list of keysyms is associated with each keycode. If that list
+(ignoring trailing @code{NoSymbol} entries) is a single keysym @samp{K},
+then the list is treated as if it were the list 
address@hidden NoSymbol K NoSymbol''}. If the list (ignoring trailing 
address@hidden entries) is a pair of keysyms @samp{K1 K2}, then the 
+list is treated as if it were the list @code{``K1 K2 K1 K2''}. If the 
+list (ignoring trailing @code{NoSymbol} entries) is a triple of keysyms 
address@hidden K2 K3}, then the list is treated as if it were the list 
address@hidden K2 K3 NoSymbol''}.
+
+ The first four elements of the list are split into two groups of 
+keysyms. Group 1 contains the first and second keysyms; Group 2 contains
+third and fourth keysyms. Within each group, if the second element of
+the group is NoSymbol, then the group should be treated as if the second
+element were the same as the first element, except when the first
+element is an alphabetic keysym @samp{K} for which both lowercase and 
+uppercase forms are defined. In that case, the group should be treated 
+as if the first element were the lowercase form of @samp{K} and the second 
+element were the uppercase form of @samp{K}.
+
+ The standard rules for obtaining a keysym from a KeyPress event make use of 
+only the Group 1 and Group 2 keysyms; no interpretation of other keysyms in 
+the list is given here. (That is, the last four keysyms are unused.)
+
+ Which group to use is determined by modifier state. Switching between
+groups is controlled by the keysym named @code{Mode_switch}. Attach that
+keysym to some keycode and attach that keycode to any one of the
+modifiers Mod1 through Mod5. This modifier is called the @dfn{group
+modifier}. For any keycode, Group 1 is used when the group modifier is
+off, and Group 2 is used when the group modifier is on.
+
+ Within a group, which keysym to use is also determined by modifier
+state. The first keysym is used when the @code{Shift} and @code{Lock} 
+modifiers are off. The second keysym is used when the @code{Shift} 
+modifier is on, or when the @code{Lock} modifier is on and the second 
+keysym is uppercase alphabetic, or when the @code{Lock} modifier is on 
+and is interpreted as @code{ShiftLock}. Otherwise, when the @code{Lock} 
+modifier is on and is interpreted as @code{CapsLock}, the state of the 
address@hidden modifier is applied first to select a keysym, 
+but if that keysym is lower-case alphabetic, then the corresponding 
+upper-case keysym is used instead.
+
+ In addition to the above information on keysyms, we also provide the 
+following description of modifier mapping from the InterClient 
+Communications Conventions Manual:
+
address@hidden modifier mapping
+
+ X11 supports 8 modifier bits, of which 3 are pre-assigned to 
address@hidden, @code{Lock}, and @code{Control}. Each modifier bit is 
+controlled by the state of a set of keys, and these sets are specified 
+in a table accessed by @code{GetModifierMapping()} and 
address@hidden()}.
+
+ A client needing to use one of the pre-assigned modifiers should assume
+that the modifier table has been set up correctly to control these
+modifiers. The @code{Lock} modifier should be interpreted as @code{Caps
+Lock} or @code{Shift Lock} according to whether the keycodes in its
+controlling set include @code{XK_Caps_Lock} or @code{XK_Shift_Lock}.
+
+ Clients should determine the meaning of a modifier bit from the keysyms 
+being used to control it.
+
+A client needing to use an extra modifier, for example @code{Meta}, should:
+
address@hidden
address@hidden
+Scan the existing modifier mappings.
+
address@hidden
address@hidden
+If it finds a modifier that contains a keycode whose set of keysyms 
+includes @code{XK_Meta_L} or @code{XK_Meta_R}, it should use that 
+modifier bit.
+
address@hidden
+If there is no existing modifier controlled by @code{XK_Meta_L} or 
address@hidden, it should select an unused modifier bit (one with 
+an empty controlling set) and:
address@hidden enumerate
+
address@hidden
+If there is a keycode with @code{XL_Meta_L} in its set of keysyms, 
+add that keycode to the set for the chosen modifier, and then:
+
address@hidden
address@hidden
+If there is a keycode with @code{XL_Meta_R} in its set of keysyms, 
+add that keycode to the set for the chosen modifier, and then:
+
address@hidden
+If the controlling set is still empty, interact with the user to 
+select one or more keys to be @code{Meta}.
address@hidden enumerate
+
+
address@hidden
+If there are no unused modifier bits, ask the user to take corrective action.
address@hidden enumerate
+
+ This means that the @code{Mod1} modifier does not necessarily mean 
address@hidden, although some applications (such as twm and emacs 18) 
+assume that. Any of the five unassigned modifier bits could mean 
address@hidden; what matters is that a modifier bit is generated by a 
+keycode which is bound to the keysym @code{Meta_L} or @code{Meta_R}.
+
+ Therefore, if you want to make a @key{META} key, the right way 
+is to make the keycode in question generate both a @code{Meta} keysym 
+and some previously-unassigned modifier bit.
+
address@hidden Character Representation, Commands, Super and Hyper Keys, 
Keystrokes
address@hidden  node-name,  next,  previous,  up
address@hidden Representation of Characters
+
+This section briefly discusses how characters are represented in Emacs
+buffers.  @xref{Key Sequences}, for information on representing key
+sequences to create key bindings. 
+
+  ASCII graphic characters in Emacs buffers are displayed with their
+graphics.  @key{LFD} is the same as a newline character; it is displayed
+by starting a new line.  @key{TAB} is displayed by moving to the next
+tab stop column (usually every 8 spaces).  Other control characters are
+displayed as a caret (@samp{^}) followed by the non-control version of
+the character; thus, @kbd{C-a} is displayed as @samp{^A}.  Non-ASCII
+characters 128 and up are displayed with octal escape sequences; thus,
+character code 243 (octal), also called @kbd{M-#} when used as an input
+character, is displayed as @samp{\243}.
+
+The variable @code{ctl-arrow} may be used to alter this behavior.
address@hidden Vars}.
+
address@hidden Commands, , Character Representation, Keystrokes
address@hidden Keys and Commands
+
address@hidden binding
address@hidden customization
address@hidden keymap
address@hidden function
address@hidden command
+  This manual is full of passages that tell you what particular keys do.
+But Emacs does not assign meanings to keys directly.  Instead, Emacs
+assigns meanings to @dfn{functions}, and then gives keys their meanings
+by @dfn{binding} them to functions.
+
+ A function is a Lisp object that can be executed as a program.  Usually
+it is a Lisp symbol that has been given a function definition; every
+symbol has a name, usually made of a few English words separated by
+dashes, such as @code{next-line} or @code{forward-word}.  It also has a
address@hidden, which is a Lisp program.  Only some functions can be the
+bindings of keys; these are functions whose definitions use
address@hidden to specify how to call them interactively.  Such
+functions are called @dfn{commands}, and their names are @dfn{command
+names}.  More information on this subject will appear in the @i{XEmacs
+Lisp Reference Manual}.
+
+  The bindings between keys and functions are recorded in various tables
+called @dfn{keymaps}.  @xref{Key Bindings}, for more information on key
+sequences you can bind commands to.  @xref{Keymaps}, for information on
+creating keymaps.
+
+  When we say  address@hidden moves down vertically one line'' we are
+glossing over a distinction that is irrelevant in ordinary use but is
+vital in understanding how to customize Emacs.  The function
address@hidden is programmed to move down vertically.  @kbd{C-n}
+has this effect @i{because} it is bound to that function.  If you rebind
address@hidden to the function @code{forward-word} then @kbd{C-n} will move
+forward by words instead.  Rebinding keys is a common method of
address@hidden
+
+   The rest of this manual usually ignores this subtlety to keep
+things simple.  To give the customizer the information needed, we often
+state the name of the command that really does the work in parentheses
+after mentioning the key that runs it.  For example, we will say that
+``The command @kbd{C-n} (@code{next-line}) moves point vertically
+down,'' meaning that @code{next-line} is a command that moves vertically
+down and @kbd{C-n} is a key that is standardly bound to it.
+
address@hidden variables
+  While we are on the subject of information for customization only,
+it's a good time to tell you about @dfn{variables}.  Often the
+description of a command will say, ``To change this, set the variable
address@hidden''  A variable is a name used to remember a value.
+Most of the variables documented in this manual exist just to facilitate
+customization: some command or other part of Emacs uses the variable
+and behaves differently depending on its setting.  Until you are interested in
+customizing, you can ignore the information about variables.  When you
+are ready to be interested, read the basic information on variables, and 
+then the information on individual variables will make sense.
address@hidden
+
address@hidden Pull-down Menus, Entering Emacs, Keystrokes, Top
address@hidden  node-name,  next,  previous,  up
address@hidden XEmacs Pull-down Menus 
+
+If you are running XEmacs under X, a menu bar on top of the
+Emacs frame provides access to pull-down menus of file, edit, and
+help-related commands. The menus provide convenient shortcuts and an
+easy interface for novice users.  They do not provide additions to the
+functionality available via key commands; you can still invoke commands
+from the keyboard as in previous versions of Emacs.
+        
address@hidden @b
address@hidden File
+Perform file and buffer-related operations, such as opening and closing
+files, saving and printing buffers, as well as exiting Emacs.
address@hidden File menu
+
address@hidden Edit
+Perform standard editing operations, such as 
+cutting, copying, pasting, and killing selected text.
address@hidden Edit menu
+
address@hidden #### The Mule menu needs to be documented, but this is not the 
place
address@hidden for it since Ben just moved it.
+
address@hidden Apps
+Access to sub-applications implemented within XEmacs, such as the mail
+reader, the World Wide Web browser, the spell-checker, and the calendar
+program.
address@hidden Apps menu
+
address@hidden Options
+Control various options regarding the way XEmacs works, such as controlling
+which elements of the frame are visible, selecting the fonts to be used for
+text, specifying whether searches are case-sensitive, etc.
address@hidden Options menu
+
address@hidden Buffers
+Present a menu of buffers for selection as well as the option to display
+a buffer list.
address@hidden Buffers menu
+
address@hidden Tools
+Perform various actions designed to automate software development and
+similar technical work, such as searching through many files, compiling
+a program, and comparing or merging two or three files.
address@hidden Tools menu
+
address@hidden Help
+Access to Emacs Info.
address@hidden Help menu
address@hidden table
address@hidden Pull-down Menus
address@hidden menus
+
+There are two ways of selecting an item from a pull-down menu:
+
address@hidden @bullet
address@hidden
+Select an item in the menu bar by moving the cursor over it and click the
+left mouse-button.  Then move the cursor over the menu item you want to choose
+and click left again.
address@hidden
+Select an item in the menu bar by moving the cursor over it and click and
+hold the left mouse-button.  With the mouse-button depressed, move the
+cursor over the menu item you want, then release it to make your selection. 
address@hidden itemize
+
+If a command in the pull-down menu is not applicable in a given
+situation, the command is disabled and its name appears faded.  You
+cannot invoke items that are faded.  For example, many commands on the
address@hidden menu appear faded until you select text on which they are to
+operate; after you select a block of text, edit commands are enabled.
address@hidden Selection}, for information on using the mouse to select
+text.  @xref{Using X Selections}, for related information.
+
+There are also @kbd{M-x} equivalents for each menu item.  To find the
+equivalent for any left-button menu item, do the following:
+
address@hidden
address@hidden
+Type @kbd{C-h k} to get the @code{Describe Key} prompt. 
address@hidden
+Select the menu item and click. 
address@hidden enumerate
+
+Emacs displays the function associated with the menu item in a separate
+window, usually together with some documentation. 
+
address@hidden
+* File Menu::           Items on the File menu.
+* Edit Menu::           Items on the Edit menu.
+* Apps Menu::          Items on the Apps menu.
+* Options Menu::        Items on the Options menu. 
+* Buffers Menu::        Information about the Buffers menu.
+* Tools Menu::         Items on the Tools menu.
+* Help Menu::           Items on the Help menu. 
+* Menu Customization::  Adding and removing menu items and related
+                        operations.
address@hidden menu
+
address@hidden File Menu
address@hidden The File Menu
+
address@hidden File menu
+
+The @b{File} menu bar item contains the items @b{New Frame}, @b{Open
+File...}, @b{Save Buffer}, @b{Save Buffer As...}, @b{Revert Buffer},
address@hidden Buffer}, @b{Delete Frame}, @b{Kill Buffer} and @b{Exit Emacs}
+on the pull-down menu.  If you select a menu item, Emacs executes the
+equivalent command.
+
address@hidden Open File, New Frame... menu item
address@hidden Open File... menu item
address@hidden Insert File... menu item
address@hidden Save Buffer menu item
address@hidden Save Buffer As ... menu item
address@hidden Revert Buffer menu item
address@hidden Kill Buffer menu item
address@hidden Print Buffer menu item
address@hidden New Frame menu item
address@hidden Delete Frame menu item
address@hidden Split Frame
address@hidden Un-split (Keep This)
address@hidden Un-split (Keep Others)
address@hidden Exit Emacs menu item
+
address@hidden @b
address@hidden Open File, New Frame...
+Prompts you for a filename and loads that file into a new buffer in a
+new Emacs frame, that is, a new X window running under the same Emacs
+process.  You can remove the frame using the @b{Delete Frame} menu
+item.  When you remove the last frame, you exit Emacs and are prompted
+for confirmation. @refill
+
address@hidden Open File...
+Prompts you for a filename and loads that file into a new buffer. 
address@hidden File...} is equivalent to the Emacs command @code{find-file} 
(@kbd{C-x
+C-f})address@hidden 
+
address@hidden Insert File...
+Prompts you for a filename and inserts the contents of that file into
+the current buffer.  The file associated with the current buffer is
+not changed by this command.  This is equivalent to the Emacs command
address@hidden (@kbd{C-x i})address@hidden 
+
address@hidden Save Buffer 
+Writes and saves the current Emacs buffer as the latest
+version of the current visited file.  @b{Save Buffer} is equivalent to the
+Emacs command @code{save-buffer} (@kbd{C-x C-s})address@hidden
+
address@hidden Save Buffer As... 
+Writes and saves the current Emacs buffer to the filename you specify.
address@hidden Buffer As...} is equivalent to the Emacs command
address@hidden (@kbd{C-x C-w})address@hidden
+
address@hidden Revert Buffer
+Restores the last saved version of the file to the current buffer.  When
+you edit a buffer containing a text file, you must save the buffer
+before your changes become effective.  Use @b{Revert Buffer} if you do
+not want to keep the changes you have made in the buffer.  @b{Revert
+Buffer} is equivalent to the Emacs command @code{revert-file} (@kbd{M-x
+revert-buffer})address@hidden
+
address@hidden Kill Buffer
+Kills the current buffer, prompting you first if there are unsaved
+changes.  This is roughly equivalent to the Emacs command 
address@hidden (@kbd{C-x k}), except that @code{kill-buffer} 
+prompts for the name of a buffer to kill. @refill
+
address@hidden Print Buffer
+Prints a hardcopy of the current buffer.  Equivalent
+to the Emacs command @code{print-buffer} (@kbd{M-x print-buffer})address@hidden
+
address@hidden New Frame
+Creates a new Emacs frame displaying the @code{*scratch*} buffer.  This
+is like the @b{Open File, New Frame...} menu item, except that it does
+not prompt for or load a address@hidden
+
address@hidden Delete Frame 
+Allows you to close all but one of the frames created by @b{New Frame}.
+If you created several Emacs frames belonging to the same Emacs
+process, you can close all but one of them.  When you attempt to close the
+last frame, Emacs informs you that you are attempting to delete the
+last frame.  You have to choose @b{Exit Emacs} for address@hidden
+
address@hidden Split Frame
+Divides the current window on the current frame into two equal-sized
+windows, both displaying the same buffer.  Equivalent to the Emacs
+command @code{split-window-vertically} (@kbd{C-x 2})address@hidden
+
address@hidden Un-split (Keep This)
+If the frame is divided into multiple windows, this removes all windows
+other than the selected one.  Equivalent to the Emacs command
address@hidden (@kbd{C-x 1})address@hidden
+
address@hidden Un-split (Keep Others)
+If the frame is divided into multiple windows, this removes the
+selected window from the frame, giving the space back to one of the
+other windows.  Equivalent to the Emacs command @code{delete-window}
+(@kbd{C-x 0})address@hidden
+
address@hidden Exit Emacs
+Shuts down (kills) the Emacs process.  Equivalent to the Emacs command
address@hidden (@kbd{C-x C-c}).  Before killing the
+Emacs process, the system asks which unsaved buffers to save by going through
+the list of all buffers in that Emacs address@hidden
address@hidden table
+
address@hidden Edit Menu
address@hidden The Edit Menu
address@hidden Edit menu
+
+The @b{Edit} pull-down menu contains the @b{Undo}, @b{Cut}, @b{Copy},
address@hidden, and @b{Clear} menu items.  When you select a menu item, Emacs
+executes the equivalent command.  Most commands on the @b{Edit} menu
+work on a block of text, the X selection.  They appear faded until you
+select a block of text (activate a region) with the mouse.  @xref{Using
+X Selections}, @pxref{Killing}, and @pxref{Yanking} for more
address@hidden
+
address@hidden  **** zmacs-regions is on by default these days - jwz
address@hidden
address@hidden Note: By default, you can use the @b{Edit} menu items on the 
region between
address@hidden point and the mark as well as regions selected with the mouse. 
To change
address@hidden this behavior, set the variable @code{zmacs-regions} to
address@hidden @code{t}. @xref{Active Regions} for more information.
+
address@hidden Undo menu item
address@hidden Cut menu item
address@hidden Copy menu item
address@hidden Paste menu item
address@hidden Clear menu item
address@hidden Start Macro Recording menu item
address@hidden End Macro Recording menu item
address@hidden Execute Last Macro menu item
address@hidden @b
address@hidden Undo 
+Undoes the previous command.  @b{Undo} is equivalent to
+the Emacs command @code{undo} (@kbd{C-x u})address@hidden
+
address@hidden Cut
+Removes the selected text block from the current buffer, makes it the X
+clipboard selection, and places it in the kill ring.  Before executing
+this command, you have to select a region using Emacs region selection
+commands or with the address@hidden 
+
address@hidden Copy 
+Makes a selected text block the X clipboard selection, and places it in
+the kill ring.  You can select text using one of the Emacs region
+selection commands or by selecting a text region with the address@hidden
+
address@hidden Paste 
+Inserts the current value of the X clipboard selection in the current
+buffer.  Note that this is not necessarily the same as the Emacs
address@hidden command, because the Emacs kill ring and the X clipboard
+selection are not the same thing.  You can paste in text you
+have placed in the clipboard using @b{Copy} or @b{Cut}.  You can also
+use @b{Paste} to insert text that was pasted into the clipboard from other
+applications.
+
address@hidden Clear
+Removes the selected text block from the current buffer but does not
+place it in the kill ring or the X clipboard selection. 
+
address@hidden Start Macro Recording
+After selecting this, Emacs will remember every keystroke you type until
address@hidden Macro Recording} is selected.  This is the same as the Emacs 
+command @code{start-kbd-macro} (@kbd{C-x (}).
+
address@hidden End Macro Recording
+Selecting this tells emacs to stop remembering your keystrokes.  This is
+the same as the Emacs command @code{end-kbd-macro} (@kbd{C-x )}).
+
address@hidden Execute Last Macro
+Selecting this item will cause emacs to re-interpret all of the
+keystrokes which were saved between selections of the @b{Start Macro
+Recording} and @b{End Macro Recording} menu items.  This is the same
+as the Emacs command @code{call-last-kbd-macro} (@kbd{C-x e}).
address@hidden table
+
address@hidden Apps Menu
address@hidden The Apps Menu
address@hidden Apps menu
+
+The @b{Apps} pull-down menu contains the @b{Read Mail (VM)...}, @b{Read
+Mail (MH)...}, @b{Send Mail...}, @b{Usenet News}, @b{Browse the Web},
address@hidden, @b{Spell-Check Buffer} and @b{Emulate VI} menu items,
+and the @b{Calendar} and @b{Games} sub-menus.  When you select a menu
+item, Emacs executes the equivalent command.  For some of the menu
+items, there are sub-menus which you will need to select.
+
address@hidden Options Menu
address@hidden The Options Menu
address@hidden Options menu
+
+The @b{Options} pull-down menu contains the @b{Read Only}, @b{Case 
+Sensitive Search}, @b{Overstrike}, @b{Auto Delete Selection}, 
address@hidden Extended Commands}, @b{Syntax Highlighting}, @b{Paren 
+Highlighting}, @b{Font}, @b{Size}, @b{Weight}, @b{Buffers Menu 
+Length...}, @b{Buffers Sub-Menus} and @b{Save Options} menu items. 
+When you select a menu item, Emacs executes the equivalent command. 
+For some of the menu items, there are sub-menus which you will need 
+to select.
+
address@hidden Read Only menu item
address@hidden Case Sensitive Search menu item
address@hidden Overstrike menu item
address@hidden Auto Delete Selection menu item
address@hidden Teach Extended Commands menu item
address@hidden Syntax Highlighting menu item
address@hidden Paren Highlighting menu item
address@hidden Font menu item
address@hidden Size menu item
address@hidden Weight menu item
address@hidden Buffers Menu Length... menu item
address@hidden Buffers Sub-Menus menu item
address@hidden Save Options
address@hidden @b
address@hidden Read Only
+Selecting this item will cause the buffer to visit the file in a 
+read-only mode. Changes to the file will not be allowed. This is 
+equivalent to the Emacs command @code{toggle-read-only} 
+(@kbd{C-x C-q}).
+
address@hidden Case Sensitive Search
+Selecting this item will cause searches to be case-sensitive. If 
+its not selected then searches will ignore case. This option is 
+local to the buffer.
+
address@hidden Overstrike
+After selecting this item, when you type letters they will replace 
+existing text on a one-to-one basis, rather than pushing it to the 
+right. At the end of a line, such characters extend the line. Before 
+a tab, such characters insert until the tab is filled in. This is the 
+same as Emacs command @code{quoted-insert} (@kbd{C-q}).
+
address@hidden Auto Delete Selection
+Selecting this item will cause automatic deletion of the selected 
+region. The typed text will replace the selection if the selection 
+is active (i.e. if its highlighted). If the option is not selected 
+then the typed text is just inserted at the point.
+
address@hidden Teach Extended Commands
+After you  select this item, any time you execute a command with 
address@hidden has a shorter keybinding, you will be shown the 
+alternate binding before the command executes.
+
address@hidden Syntax Highlighting
+You can customize your init file to include the font-lock mode so that
+when you select this item, the comments will be displayed in one face,
+strings in another, reserved words in another, and so on. @xref{Init
+File}.  When @b{Fonts} is selected, different parts of the program will
+appear in different Fonts. When @b{Colors} is selected, then the program
+will be displayed in different colors. Selecting @b{None} causes the
+program to appear in just one Font and Color. Selecting @b{Less} resets
+the Fonts and Colors to a fast, minimal set of decorations. Selecting
address@hidden resets the Fonts and Colors to a larger set of decorations. For
+example, if @b{Less} is selected (which is the default setting) then you
+might have all comments in green color.  Whereas, if @b{More} is
+selected then a function name in the comments themselves might appear in
+a different Color or address@hidden
+
address@hidden Paren Highlighting
+After selecting @b{Blink} from this item, if you place the cursor 
+on a parenthesis, the matching parenthesis will blink. If you select 
address@hidden and place the cursor on a parenthesis, the whole 
+expression of the parenthesis under the cursor will be highlighted. 
+Selecting @b{None} will turn off the options (regarding @b{Paren 
+Highlighting}) which you had selected address@hidden
+
address@hidden Font
+You can select any Font for your program by choosing from one of the 
+available Fonts.
+
address@hidden Size
+You can select any size ranging from @b{2} to @b{24} by selecting the 
+appropriate address@hidden
+
address@hidden Weight
+You can choose either @b{Bold} or @b{Medium} for the address@hidden
+
address@hidden Buffers Menu Length...
+Prompts you for the number of buffers to display. Then it will display 
+that number of most recently selected buffers.
+
address@hidden Buffers Sub-Menus
+After selection of this item the Buffers menu will contain several 
+commands, as submenus of each buffer line. If this item is unselected, 
+then there are no submenus for each buffer line, the only command 
+available will be selecting that buffer.
+
address@hidden Save Options
+Selecting this item will save the current settings of your Options 
+menu to your init file.  @xref{Init File}.
address@hidden table
+
address@hidden Buffers Menu
address@hidden The Buffers Menu
address@hidden Buffers menu
+The @b{Buffers} menu provides a selection of up to ten buffers and the
+item @b{List All Buffers}, which provides a Buffer List. @xref{List
+Buffers}, for more information.  
+
address@hidden Tools Menu
address@hidden The Tools Menu
address@hidden Tools menu
+
+The @b{Tools} pull-down menu contains the @b{Grep...}, @b{Compile...},
address@hidden Command...}, @b{Shell Command on Region...}, @b{Debug(GDB)...}
+and @b{Debug(DBX)...} menu items, and the @b{Compare}, @b{Merge},
address@hidden Patch} and @b{Tags} sub-menus.  When you select a menu item,
+Emacs executes the equivalent command.  For some of the menu items,
+there are sub-menus which you will need to select.
+
address@hidden Help Menu
address@hidden The Help Menu
address@hidden Help menu
+
+The Help Menu gives you access to Emacs Info and provides a menu
+equivalent for each of the choices you have when using @kbd{C-h}. 
address@hidden, for more information. 
+
+The Help menu also gives access to UNIX online manual pages via the
address@hidden Manual Page} option.  
+
address@hidden Menu Customization
address@hidden Customizing XEmacs Menus
+
+You can customize any of the pull-down menus by adding or removing menu
+items and disabling or enabling existing menu items.
+ 
+The following functions are available: 
address@hidden @kbd
address@hidden add-menu: (@var{menu-path} @var{menu-name} @var{menu-items} 
&optional @var{before})
+Add a menu to the menu bar or one of its submenus.
address@hidden add-menu-item: (@var{menu-path} @var{item-name} @var{function}
address@hidden &optional @var{before})
+Add a menu item to a menu, creating the menu first if necessary.
address@hidden delete-menu-item: (@var{path})
+Remove the menu item defined by @var{path} from the menu hierarchy.
address@hidden disable-menu-item: (@var{path})
+Disable the specified menu item.
address@hidden enable-menu-item: (@var{path})
+Enable the specified previously disabled menu item.
address@hidden relabel-menu-item: (@var{path} @var{new-name})
+Change the string of the menu item specified by @var{path} to
address@hidden
+
address@hidden table
+
address@hidden add-menu
address@hidden adding menus
+Use the function @code{add-menu} to add a new menu or submenu.
+If a menu or submenu of the given name exists already, it is changed.
+
address@hidden identifies the menu under which the new menu should be
+inserted.  It is a list of strings; for example, @code{("File")} names
+the top-level @b{File} menu.  @code{("File" "Foo")} names a hypothetical
+submenu of @b{File}.  If @var{menu-path} is @code{nil}, the menu is
+added to the menu bar itself.
+
address@hidden is the string naming the menu to be added.  
+
address@hidden is a list of menu item descriptions.  Each menu item
+should be a vector of three elements:
+
address@hidden @bullet
address@hidden 
+A string, which is the name of the menu item
address@hidden 
+A symbol naming a command, or a form to evaluate
address@hidden 
address@hidden or @code{nil} to indicate whether the item is selectable
address@hidden itemize
+
+The optional argument @var{before} is the name of the menu before which
+the new menu or submenu should be added.  If the menu is already
+present, it is not moved.
+
address@hidden add-menu-item
address@hidden adding menu items
+The function @code{add-menu-item} adds a menu item to the specified
+menu, creating the menu first if necessary.  If the named item already
+exists, the menu remains unchanged.
+
address@hidden identifies the menu into which the new menu item should
+be inserted.  It is a list of strings; for example, @code{("File")}
+names the top-level @b{File} menu.  @code{("File" "Foo")} names a
+hypothetical submenu of @b{File}.
+
address@hidden is the string naming the menu item to add.
+
address@hidden is the command to invoke when this menu item is selected.
+If it is a symbol, it is invoked with @code{call-interactively}, in the
+same way that functions bound to keys are invoked.  If it is a list, the
+list is simply evaluated.
+
address@hidden controls whether the item is selectable or not.
+It should be @code{t}, @code{nil}, or a form to evaluate to decide.  
+This form will be evaluated just before the menu is displayed, and 
+the menu item will be selectable if that form returns address@hidden
+
+For example, to make the @code{rename-file} command available from the
address@hidden menu, use the following code:
+
address@hidden
+(add-menu-item '("File") "Rename File" 'rename-file t)
address@hidden example
+
+To add a submenu of file management commands using a @b{File Management}
+item, use the following code: 
+
address@hidden
+(add-menu-item '("File" "File Management") "Copy File" 'copy-file t)
+(add-menu-item '("File" "File Management") "Delete File" 'delete-file t)
+(add-menu-item '("File" "File Management") "Rename File" 'rename-file t)
address@hidden example
+
+The optional @var{before} argument is the name of a menu item before
+which the new item should be added.  If the item is already present, it
+is not moved.
+
address@hidden delete-menu-item
address@hidden deleting menu items
+To remove a specified menu item from the menu hierarchy, use
address@hidden
+
address@hidden is a list of strings that identify the position of the menu
+item in the menu hierarchy.  @code{("File" "Save")} means the menu item
+called @b{Save} under the top level @b{File} menu.  @code{("Menu" "Foo"
+"Item")} means the menu item called @b{Item} under the @b{Foo} submenu
+of @b{Menu}.
+
address@hidden disable-menu-item
address@hidden enable-menu-item
address@hidden enabling menu items
address@hidden disabling menu items
+
+To disable a menu item, use @code{disable-menu-item}.  The disabled
+menu item is grayed and can no longer be selected.  To make the
+item selectable again, use @code{enable-menu-item}.
address@hidden and @code{enable-menu-item} both have the
+argument @var{path}.
+
address@hidden relabel-menu-item
address@hidden changing menu items
+To change the string of the specified menu item, use
address@hidden This function also takes the argument @var{path}.
+
address@hidden is the string to which the menu item will be changed.
address@hidden This is part of the XEmacs manual.
address@hidden Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995 Free Software 
Foundation, Inc.
address@hidden See file xemacs.texi for copying conditions.
address@hidden Entering Emacs, Exiting, Pull-down Menus, Top
address@hidden Entering and Exiting Emacs
address@hidden entering XEmacs
address@hidden starting XEmacs
+
+  The usual way to invoke XEmacs is to type @kbd{xemacs @key{RET}} at
+the shell.  XEmacs clears the screen and then displays an initial
+advisory message and copyright notice.  You can begin typing XEmacs
+commands immediately afterward.
+
+  Some operating systems insist on discarding all type-ahead when XEmacs
+starts up; they give XEmacs no way to prevent this.  Therefore, it is
+advisable to wait until XEmacs clears the screen before typing your first
+editing command.
+
+  If you run XEmacs from a shell window under the X Window System, run it
+in the background with @samp{xemacs&}.  This way, XEmacs does not tie up
+the shell window, so you can use that to run other shell commands while
+XEmacs operates its own X windows.  You can begin typing XEmacs commands
+as soon as you direct your keyboard input to the XEmacs frame.
+
address@hidden initial-major-mode
+  Before Emacs reads the first command, you have not had a chance to
+give a command to specify a file to edit.  Since Emacs must always have
+a current buffer for editing, it presents a buffer, by default, a buffer
+named @samp{*scratch*}.  The buffer is in Lisp Interaction mode; you can
+use it to type Lisp expressions and evaluate them, or you can ignore
+that capability and simply doodle.  (You can specify a different major
+mode for this buffer by setting the variable @code{initial-major-mode}
+in your init file.  @xref{Init File}.)
+
+  It is possible to specify files to be visited, Lisp files to be
+loaded, and functions to be called, by giving Emacs arguments in the
+shell command line.  @xref{Command Switches}.  But we don't recommend
+doing this.  The feature exists mainly for compatibility with other
+editors.
+
+  Many other editors are designed to be started afresh each time you
+want to edit.  You edit one file and then exit the editor.  The next
+time you want to edit either another file or the same one, you must run
+the editor again.  With these editors, it makes sense to use a
+command-line argument to say which file to edit.
+
+  But starting a new Emacs each time you want to edit a different file
+does not make sense.  For one thing, this would be annoyingly slow.  For
+another, this would fail to take advantage of Emacs's ability to visit
+more than one file in a single editing session.  And it would lose the
+other accumulated context, such as registers, undo history, and the mark
+ring.
+
+  The recommended way to use XEmacs is to start it only once, just
+after you log in, and do all your editing in the same Emacs session.
+Each time you want to edit a different file, you visit it with the
+existing Emacs, which eventually comes to have many files in it ready
+for editing.  Usually you do not kill the Emacs until you are about to
+log out.  @xref{Files}, for more information on visiting more than one
+file.
+
address@hidden Exiting, Command Switches, Entering Emacs, Top
address@hidden Exiting Emacs
address@hidden exiting
address@hidden killing Emacs
address@hidden suspending
address@hidden leaving Emacs
address@hidden quitting Emacs
address@hidden shrinking XEmacs frame
+
+  There are two commands for exiting Emacs because there are two kinds
+of exiting: @dfn{suspending} Emacs and @dfn{killing} Emacs.
+
+  @dfn{Suspending} means stopping Emacs temporarily and returning
+control to its parent process (usually a shell), allowing you to resume
+editing later in the same Emacs job, with the same buffers, same kill
+ring, same undo history, and so on.  This is the usual way to exit.
+
+  @dfn{Killing} Emacs means destroying the Emacs job.  You can run Emacs
+again later, but you will get a fresh Emacs; there is no way to resume
+the same editing session after it has been killed.
+
address@hidden @kbd
address@hidden C-z
+Suspend Emacs or iconify a frame
+(@code{suspend-emacs-or-iconify-frame}).  If used under the X window
+system, shrink the X window containing the Emacs frame to an icon (see
+below).
address@hidden C-x C-c
+Kill Emacs (@code{save-buffers-kill-emacs}).
address@hidden table
+
+If you use XEmacs under the X window system, @kbd{C-z} shrinks
+the X window containing the Emacs frame to an icon.  The Emacs process
+is stopped temporarily, and control is returned to the window manager.
+If more than one frame is associated with the Emacs process, only the
+frame from which you used @kbd{C-z} is iconified.
+
+To activate the "suspended" Emacs, use the appropriate window manager
+mouse gestures.  Usually left-clicking on the icon reactivates and
+reopens the X window containing the Emacs frame, but the window manager
+you use determines what exactly happens.  To actually kill the Emacs
+process, use @kbd{C-x C-c} or the @b{Exit XEmacs} item on the @b{File}
+menu.
+
address@hidden C-z
address@hidden suspend-emacs
+  To suspend Emacs, type @kbd{C-z} (@code{suspend-emacs}).  This takes
+you back to the shell from which you invoked Emacs.  You can resume
+Emacs with the shell command @samp{%xemacs} in most common shells.
+
+  On systems that do not support suspending programs, @kbd{C-z} starts
+an inferior shell that communicates directly with the terminal.
+Emacs waits until you exit the subshell.  (The way to do that is
+probably with @kbd{C-d} or @samp{exit}, but it depends on which shell
+you use.)  The only way on these systems to get back to the shell from
+which Emacs was run (to log out, for example) is to kill Emacs.
+
+  Suspending also fails if you run Emacs under a shell that doesn't
+support suspending programs, even if the system itself does support it.
+In such a case, you can set the variable @code{cannot-suspend} to a
address@hidden value to force @kbd{C-z} to start an inferior shell.
+(One might also describe Emacs's parent shell as ``inferior'' for
+failing to support job control properly, but that is a matter of taste.)
+
+  When Emacs communicates directly with an X server and creates its own
+dedicated X windows, @kbd{C-z} has a different meaning.  Suspending an
+applications that uses its own X windows is not meaningful or useful.
+Instead, @kbd{C-z} runs the command @code{iconify-or-deiconify-frame},
+which temporarily closes up the selected Emacs frame.
+The way to get back to a shell window is with the window manager.
+
address@hidden C-x C-c
address@hidden save-buffers-kill-emacs
+  To kill Emacs, type @kbd{C-x C-c} (@code{save-buffers-kill-emacs}).  A
+two-character key is used for this to make it harder to type.  Selecting
+the @b{Exit XEmacs} option of the @b{File} menu is an alternate way of
+issuing the command.
+
+Unless a numeric argument is used, this command first offers to save any
+modified file-visiting buffers.  If you do not save all buffers, you are
+asked for reconfirmation with @kbd{yes} before killing Emacs, since any
+changes not saved will be lost forever.  If any subprocesses are still
+running, @kbd{C-x C-c} asks you to confirm killing them, since killing
+Emacs will kill the subprocesses immediately.
+
+  There is no way to restart an Emacs session once you have killed it.
+You can, however, arrange for Emacs to record certain session
+information, such as which files are visited, when you kill it, so that
+the next time you restart Emacs it will try to visit the same files and
+so on.
address@hidden @xref{Saving Emacs Sessions}.
+
+  The operating system usually listens for certain special characters
+whose meaning is to kill or suspend the program you are running.
address@hidden operating system feature is turned off while you are in Emacs.}
+The meanings of @kbd{C-z} and @kbd{C-x C-c} as keys in Emacs were
+inspired by the use of @kbd{C-z} and @kbd{C-c} on several operating
+systems as the characters for stopping or killing a program, but that is
+their only relationship with the operating system.  You can customize
+these keys to run any commands of your choice (@pxref{Keymaps}).
+
address@hidden Command Switches, Startup Paths, Exiting, Top
address@hidden Command Line Switches and Arguments
address@hidden command line arguments
address@hidden arguments (from shell)
+
+  XEmacs supports command line arguments you can use to request
+various actions when invoking Emacs.  The commands are for compatibility
+with other editors and for sophisticated activities.  If you are using
+XEmacs under the X window system, you can also use a number of
+standard Xt command line arguments. Command line arguments are not usually
+needed for editing with Emacs; new users can skip this section.
+
+  Many editors are designed to be started afresh each time you want to
+edit.  You start the editor to edit one file; then exit the editor.  The
+next time you want to edit either another file or the same one, you
+start the editor again.  Under these circumstances, it makes sense to use a
+command line argument to say which file to edit.
+
+  The recommended way to use XEmacs is to start it only once, just
+after you log in, and do all your editing in the same Emacs process.
+Each time you want to edit a file, you visit it using the existing
+Emacs.  Emacs creates a new buffer for each file, and (unless you kill
+some of the buffers) Emacs eventually has many files in it ready for
+editing.  Usually you do not kill the Emacs process until you are about
+to log out.  Since you usually read files by typing commands to Emacs,
+command line arguments for specifying a file when Emacs is started are seldom
+needed.
+
+  Emacs accepts command-line arguments that specify files to visit,
+functions to call, and other activities and operating modes.  If you
+are running XEmacs under the X window system, a number of standard Xt
+command line arguments are available, as well as a few X parameters
+that are XEmacs-specific.
+
+  Options with long names with a single initial hyphen are also
+recognized with the GNU double initial hyphen syntax.  (The reverse
+is not true.)
+
+The following subsections list:
address@hidden @bullet
address@hidden 
+Command line arguments that you can always use
address@hidden 
+Command line arguments that have to appear at the beginning of the
+argument list
address@hidden
+Command line arguments that are only relevant if you are running XEmacs
+under X
address@hidden itemize
+
address@hidden Command Line Arguments for Any Position
+ Command line arguments are processed in the order they appear on the
+command line; however, certain arguments (the ones in the
+second table) must be at the front of the list if they are used.
+
+  Here are the arguments allowed:
+
address@hidden @samp
address@hidden @var{file}
+Visit @var{file} using @code{find-file}.  @xref{Visiting}.
+
address@hidden address@hidden @var{file}
+Visit @var{file} using @code{find-file}, then go to line number
address@hidden in it.
+
address@hidden -load @var{file}
address@hidden -l @var{file}
+Load a file @var{file} of Lisp code with the function @code{load}.
address@hidden Libraries}.
+
address@hidden -funcall @var{function}
address@hidden -f @var{function}
+Call Lisp function @var{function} with no arguments.
+
address@hidden -eval @var{function}
+Interpret the next argument as a Lisp expression, and evaluate it.
+You must be very careful of the shell quoting here.
+
address@hidden -insert @var{file}
address@hidden -i @var{file}
+Insert the contents of @var{file} into the current buffer.  This is like
+what @kbd{M-x insert-buffer} does; @xref{Misc File Ops}.
+
address@hidden -kill
+Exit from Emacs without asking for confirmation.  Always the last
+argument processed, no matter where it appears in the command line.
+
address@hidden -version
address@hidden -V
+Prints version information.  This implies @samp{-batch}.
+
address@hidden
+% xemacs -version
+XEmacs 19.13 of Mon Aug 21 1995 on willow (usg-unix-v) [formerly Lucid Emacs]
address@hidden example
+
address@hidden -help
+Prints a summary of command-line options and then exits.
address@hidden table
+
address@hidden Command Line Arguments (Beginning of Line Only)
+  The following arguments are recognized only at the beginning of the
+command line.  If more than one of them appears, they must appear in the
+order in which they appear in this table.
+
address@hidden @samp
address@hidden --show-dump-id
address@hidden -sd
+Print the ID for the new portable dumper's dump file on the terminal and
+exit.  (Prints an error message and exits if XEmacs was not configured
address@hidden)
+
address@hidden --no-dump-file
address@hidden -nd
+Don't load the dump file.  Roughly equivalent to old temacs.  (Ignored if
+XEmacs was not configured @samp{--pdump}.)
+
address@hidden --terminal @var{file}
address@hidden -t @var{file}
+Use @var{file} instead of the terminal for input and output.  This
+implies the @samp{-nw} option, documented below.
+
address@hidden batch mode
address@hidden -batch
+Run Emacs in @dfn{batch mode}, which means that the text being edited is
+not displayed and the standard Unix interrupt characters such as
address@hidden and @kbd{C-c} continue to have their normal effect.  Emacs in
+batch mode outputs to @code{stderr} only what would normally be printed
+in the echo area under program control.
+
+Batch mode is used for running programs written in Emacs Lisp from shell
+scripts, makefiles, and so on.  Normally the @samp{-l} switch or
address@hidden switch will be used as well, to invoke a Lisp program to do
+the batch processing.
+
address@hidden implies @samp{-q} (do not load an init file).  It also
+causes Emacs to kill itself after all command switches have been
+processed.  In addition, auto-saving is not done except in buffers for
+which it has been explicitly requested.
+
address@hidden --no-windows
address@hidden -nw
+Start up XEmacs in TTY mode (using the TTY XEmacs was started from),
+rather than trying to connect to an X display.  Note that this happens
+automatically if the @samp{DISPLAY} environment variable is not set.
+
address@hidden -debug-init
+Enter the debugger if an error in the init file occurs.
+
address@hidden -debug-paths
+Displays information on how XEmacs constructs the various paths into its
+hierarchy on startup.  (See also @pxref{Startup Paths}.)
+
address@hidden -unmapped
+Do not map the initial frame.  This is useful if you want to start up
+XEmacs as a server (e.g. for gnuserv screens or external client widgets).
+
address@hidden -no-init-file
address@hidden -q
+Do not load your Emacs init file.  @xref{Init File}.
+
address@hidden -no-site-file
+Do not load the site-specific init file @file{lisp/site-start.el}.
+
address@hidden -no-autoloads
+Do not load global symbol files (@file{auto-autoloads}) at startup.
+This implies @samp{-vanilla}. 
+
address@hidden -no-early-packages
+Do not process early packages.  (For more information on startup issues
+concerning the package system, @xref{Startup Paths}.)
+
address@hidden -vanilla
+This is equivalent to @samp{-q -no-site-file -no-early-packages}.
+
address@hidden -user-init-file @var{file}
+Load @var{file} as your Emacs init file instead of
address@hidden/.xemacs/init.el}/@file{~/.emacs}.
+
address@hidden -user-init-directory @var{directory}
+Use @var{directory} as the location of your early package hierarchies
+and the various user-specific initialization files.
+
address@hidden -user @var{user}
address@hidden -u @var{user}
+Equivalent to @samp{-user-init-file address@hidden/.xemacs/init.el
+-user-init-directory address@hidden/.xemacs}, or @samp{-user-init-file
address@hidden/.emacs -user-init-directory address@hidden/.xemacs}, whichever
+init file comes first.  @xref{Init File}.
+
address@hidden table
+
address@hidden command-line-args
+  Note that the init file can get access to the command line argument
+values as the elements of a list in the variable
address@hidden  (The arguments in the second table above will
+already have been processed and will not be in the list.)  The init file
+can override the normal processing of the other arguments by setting
+this variable.
+
+  One way to use command switches is to visit many files automatically:
+
address@hidden
+xemacs *.c
address@hidden example
+
address@hidden
+passes each @code{.c} file as a separate argument to Emacs, so that
+Emacs visits each file (@pxref{Visiting}).
+
+  Here is an advanced example that assumes you have a Lisp program file
+called @file{hack-c-program.el} which, when loaded, performs some useful
+operation on the current buffer, expected to be a C program.
+
address@hidden
+xemacs -batch foo.c -l hack-c-program -f save-buffer -kill > log
address@hidden example
+
address@hidden
+Here Emacs is told to visit @file{foo.c}, load @file{hack-c-program.el}
+(which makes changes in the visited file), save @file{foo.c} (note that
address@hidden is the function that @kbd{C-x C-s} is bound to), and
+then exit to the shell from which the command was executed.  @samp{-batch}
+guarantees there will be no problem redirecting output to @file{log},
+because Emacs will not assume that it has a display terminal to work
+with.
+
address@hidden Command Line Arguments (for XEmacs Under X)
address@hidden frame-title-format
address@hidden frame-icon-title-format
+If you are running XEmacs under X, a number of options are
+available to control color, border, and window title and icon name:
+
address@hidden @samp
address@hidden -title @var{title}
address@hidden -wn @var{title}
address@hidden -T @var{title}
+Use @var{title} as the window title. This sets the
address@hidden variable, which controls the title of the X
+window corresponding to the selected frame.  This is the same format as
address@hidden
+
address@hidden -iconname @var{title}
address@hidden -in @var{title}
+Use @var{title} as the icon name. This sets the
address@hidden variable, which controls the title of
+the icon corresponding to the selected frame.
+
address@hidden -mc @var{color}
+Use @var{color} as the mouse color.
+
address@hidden -cr @var{color}
+Use @var{color} as the text-cursor foreground color.
+
address@hidden -private
+Install a private colormap for XEmacs.
address@hidden table
+
+In addition, XEmacs allows you to use a number of standard Xt
+command line arguments. 
+
address@hidden @samp
+
address@hidden -background @var{color}
address@hidden -bg @var{color}
+Use @var{color} as the background color.
+
address@hidden -bordercolor @var{color}
address@hidden -bd @var{color}
+Use @var{color} as the border color.
+
address@hidden -borderwidth @var{width}
address@hidden -bw @var{width}
+Use @var{width} as the border width.
+
address@hidden -display @var{display}
address@hidden -d @var{display}
+When running under the X window system, create the window containing the
+Emacs frame on the display named @var{display}.
+
address@hidden -foreground @var{color}
address@hidden -fg @var{color}
+Use @var{color} as the foreground color.
+
address@hidden -font @var{name}
address@hidden -fn @var{name}
+Use @var{name} as the default font.
+
address@hidden -geometry @var{spec}
address@hidden -geom @var{spec}
address@hidden -g @var{spec}
+Use the geometry (window size and/or position) specified by @var{spec}.
+
address@hidden -iconic
+Start up iconified.
+
address@hidden -rv
+Bring up Emacs in reverse video.
+
address@hidden -name @var{name}
+Use the resource manager resources specified by @var{name}.
+The default is to use the name of the program (@code{argv[0]}) as
+the resource manager name.
+
address@hidden -xrm
+Read something into the resource database for this invocation of Emacs only.
+
address@hidden table
address@hidden Startup Paths, Packages, Command Switches, Top
address@hidden  node-name,  next,  previous,  up
address@hidden How XEmacs finds Directories and Files
+
address@hidden startup paths
address@hidden directories
+
+XEmacs deals with a multitude of files during operation.  These files
+are spread over many directories, and XEmacs determines the location of
+most of these directories at startup and organizes them into various
+paths.  (A @dfn{path},
address@hidden path
+for the purposes of this section, is simply a list of directories which
+XEmacs searches successively in order to locate a file.)
+
address@hidden XEmacs Directory Hierarchies
address@hidden hierarchies
address@hidden directory hierarchies
+
+Many of the files XEmacs looks for are located within the XEmacs
+installation itself.  However, there are several views of what actually
+constitutes the "XEmacs installation": XEmacs may be run from the
+compilation directory, it may be installed into arbitrary directories,
+spread over several directories unrelated to each other.  Moreover, it
+may subsequently be moved to a different place.  (This last case is not
+as uncommon as it sounds.  Binary kits work this way.)  Consequently,
+XEmacs has quite complex procedures in place to find directories, no
+matter where they may be hidden.
+
+XEmacs will always respect directory options passed to @code{configure}.
+However, if it cannot locate a directory at the configured place, it
+will initiate a search for the directory in any of a number of
address@hidden rooted under a directory which XEmacs assumes contain
+parts of the XEmacs installation; it may locate several such hierarchies
+and search across them.  (Typically, there are just one or two
+hierarchies: the hierarchy where XEmacs was or will be installed, and
+the one where it is being built.)  Such a directory containing a
+hierarchy is called a @dfn{root}.
address@hidden root of a hierarchy
+Whenever this section refers to a directory using the shorthand
address@hidden<root>}, it means that XEmacs searches for it under all
+hierarchies XEmacs was able to scrounge up.  In a
+running XEmacs, the hierarchy roots are stored in the variable
address@hidden
address@hidden emacs-roots
+
address@hidden Package Hierarchies
address@hidden package hierarchies
+
+Many relevant directories and files XEmacs uses are actually not part of
+the core installation.  They are part of any of the many packages
+usually installed on top of an XEmacs installation.  (@xref{Packages}.)
+Hence, they play a prominent role in the various paths XEmacs sets up.
+
+XEmacs locates packages in any of a number of package hierarchies.
+Package hierarchies fall into three groups: @dfn{early}, @dfn{late},
+and @dfn{last},
address@hidden early package hierarchies
address@hidden late package hierarchies
address@hidden last package hierarchies
+according to the relative location at which they show
+up in the various XEmacs paths.  Early package hierarchies are at the
+very front, late ones somewhere in the middle, and last hierarchies are
+(you guessed it) last.
+
+By default, XEmacs expects an early package hierarchy in the
+subdirectory @file{.xemacs/xemacs-packages} of the user's home
+directory.
+
+Moreover, XEmacs expects late hierarchies in the subdirectories
address@hidden, @file{mule-packages}, and @file{xemacs-packages}
+(in that order) of the @file{<root>/lib/xemacs} subdirectory of one of
+the installation hierarchies.  (If you run in-place, these are direct
+subdirectories of the build directory.)  Furthermore, XEmacs will also
+search these subdirectories in the @file{<root>/lib/xemacs-<VERSION>}
+subdirectory and prefer directories found there.
+
+By default, XEmacs does not have a pre-configured last package
+hierarchy.  Last hierarchies are primarily for using package hierarchies
+of outdated versions of XEmacs as a fallback option.  For example, it is
+possible to run XEmacs 21 with the 20.4 package hierarchy as a last
+hierarchy.
+
+It is possible to specify at configure-time the location of the various
+package hierarchies with the @code{--package-path} option to configure.
address@hidden package path
+The early, late, and last components of the package path are separated
+by double instead of single colons.  If all three components are
+present, they locate the early, late, and last package hierarchies
+respectively.  If two components are present, they locate the early and
+late hierarchies.  If only one component is present, it locates the
+late hierarchy.  At run time, the package path may also be specified via
+the @code{EMACSPACKAGEPATH} environment variable.
+
+An XEmacs package is laid out just like a normal installed XEmacs lisp
+directory.  It may have @file{lisp}, @file{etc}, @file{info}, and
address@hidden subdirectories.  XEmacs adds these at appropriate places
+within the various system-wide paths.
+
+There may be any number of package hierarchy directories.
+
address@hidden Directories and Paths
address@hidden paths
+
+Here is a list of the various directories and paths XEmacs tries to
+locate during startup.  XEmacs distinguishes between directories and
+paths specific to @dfn{version}, @dfn{site}, and @dfn{architecture}
+when looking for them.
+
address@hidden @code
address@hidden version-specific
address@hidden version-specific directories
+directories are specific to the version of XEmacs they belong to and
+typically reside under @file{<root>/lib/xemacs-<VERSION>}.
address@hidden site-specific
address@hidden site-specific directories
+directories are independent of the version of XEmacs they belong to and
+typically reside under @file{<root>/lib/xemacs}
address@hidden architecture-specific
address@hidden architecture-specific directories
+directories are specific both to the version of XEmacs and the
+architecture it runs on and typically reside under
address@hidden<root>/lib/xemacs-<VERSION>/<ARCHITECTURE>}.
address@hidden table
+
+During installation, all of these directories may also reside directly
+under @file{<root>}, because that is where they are in the XEmacs tarball.
+
+If XEmacs runs with the @code{-debug-paths} option (@pxref{Command
+Switches}), it will print the values of these variables, hopefully
+aiding in debugging any problems which come up.
+
address@hidden @code
+
address@hidden lisp-directory
address@hidden lisp-directory
+Contains the version-specific location of the Lisp files that come with
+the core distribution of XEmacs.  XEmacs will search it recursively to a
+depth of 1 when setting up @code{load-path}.
+
address@hidden load-path
address@hidden load-path
+Is where XEmacs searches for XEmacs Lisp files with commands like
address@hidden
address@hidden load-library
+It contains the package lisp directories (see further down) and the
+version-specific core Lisp directories.  If the environment variable
address@hidden is set at startup, its directories are prepended to
address@hidden
address@hidden EMACSLOADPATH
+
address@hidden Info-directory-list
address@hidden Info-directory-list
+Contains the location of info files.  (See @ref{(info)}.)  It contains
+the package info directories and the version-specific core
+documentation.  Moreover, XEmacs will add @file{/usr/info},
address@hidden/usr/local/info} as well as the directories of the environment
+variable @code{INFOPATH}
address@hidden INFOPATH
+to @code{Info-directory-list}.
+
address@hidden exec-directory
address@hidden exec-directory
+Is the directory of architecture-dependent files that come with XEmacs,
+especially executable programs intended for XEmacs to invoke.
+
address@hidden exec-path
address@hidden exec-path
+Is the path for executables which XEmacs may want to start.  It contains
+the package executable paths as well as @code{exec-directory}, and the
+directories of the environment variables @code{PATH}
address@hidden PATH
+and @code{EMACSPATH}.
address@hidden EMACSPATH
+
address@hidden doc-directory
address@hidden doc-directory
+Is the directory containing the architecture-specific @file{DOC} file
+that contains documentation for XEmacs' commands.
+
address@hidden data-directory
address@hidden data-directory
+Is the version-specific directory that contains core data files XEmacs uses.
+It may be initialized from the @code{EMACSDATA}
address@hidden EMACSDATA
+environment variable.
+
address@hidden data-directory-list
address@hidden data-directory-list
+Is the path where XEmacs looks for data files.  It contains package data
+directories as well as @code{data-directory}.
+
address@hidden table
+
+
address@hidden This is part of the XEmacs manual.
address@hidden Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software 
Foundation, Inc.
address@hidden See file xemacs.texi for copying conditions.
address@hidden Basic, Undo, Packages, Top
address@hidden Basic Editing Commands
+
address@hidden C-h t
address@hidden help-with-tutorial
+  We now give the basics of how to enter text, make corrections, and
+save the text in a file.  If this material is new to you, you might
+learn it more easily by running the Emacs learn-by-doing tutorial.  To
+use the tutorial, run Emacs and type @kbd{Control-h t}
+(@code{help-with-tutorial}).  You can also use @b{Tutorials} item from
+the @b{Help} menu.
+
+XEmacs comes with many translations of tutorial.  If your XEmacs is with
+MULE and you set up language environment correctly, XEmacs chooses right
+tutorial when available (@pxref{Language Environments}).  If you want
+specific translation, give @kbd{C-h t} a prefix argument, like @kbd{C-u
+C-h t}.
+
+  To clear the screen and redisplay, type @kbd{C-l} (@code{recenter}).
+
address@hidden
+
+* Inserting Text::      Inserting text by simply typing it.
+* Moving Point::        How to move the cursor to the place where you want to
+                         change something.
+* Erasing::            Deleting and killing text.
+* Files: Basic Files.   Visiting, creating, and saving files.
+* Help: Basic Help.     Asking what a character does.
+* Blank Lines::                Commands to make or delete blank lines.
+* Continuation Lines::  Lines too wide for the screen.
+* Position Info::       What page, line, row, or column is point on?
+* Arguments::          Numeric arguments for repeating a command.
address@hidden * Repeating::           A short-cut for repeating the previous 
command.
address@hidden menu
+
address@hidden Inserting Text, Moving Point, , Basic
address@hidden Inserting Text
+
address@hidden insertion
address@hidden point
address@hidden cursor
address@hidden graphic characters
+  To insert printing characters into the text you are editing, just type
+them.  This inserts the characters you type into the buffer at the
+cursor (that is, at @dfn{point}; @pxref{Point}).  The cursor moves
+forward, and any text after the cursor moves forward too.  If the text
+in the buffer is @samp{FOOBAR}, with the cursor before the @samp{B},
+then if you type @kbd{XX}, you get @samp{FOOXXBAR}, with the cursor
+still before the @samp{B}.
+
address@hidden BS
address@hidden deletion
+   To @dfn{delete} text you have just inserted, use @key{BS}.  @key{BS}
+deletes the character @emph{before} the cursor (not the one that the
+cursor is on top of or under; that is the character @var{after} the
+cursor).  The cursor and all characters after it move backwards.
+Therefore, if you type a printing character and then type @key{BS}, they
+cancel out.
+
address@hidden RET
address@hidden newline
+   To end a line and start typing a new one, type @key{RET}.  This
+inserts a newline character in the buffer.  If point is in the middle of
+a line, @key{RET} splits the line.  Typing @key{DEL} when the cursor is
+at the beginning of a line deletes the preceding newline, thus joining
+the line with the preceding line.
+
+  Emacs can split lines automatically when they become too long, if you
+turn on a special minor mode called @dfn{Auto Fill} mode.
address@hidden, for how to use Auto Fill mode.
+
+  If you prefer to have text characters replace (overwrite) existing
+text rather than shove it to the right, you can enable Overwrite mode,
+a minor mode.  @xref{Minor Modes}.
+
address@hidden quoting
address@hidden C-q
address@hidden quoted-insert
+  Direct insertion works for printing characters and @key{SPC}, but other
+characters act as editing commands and do not insert themselves.  If you
+need to insert a control character or a character whose code is above 200
+octal, you must @dfn{quote} it by typing the character @kbd{Control-q}
+(@code{quoted-insert}) first.  (This character's name is normally written
address@hidden for short.)  There are two ways to use @kbd{C-q}:
+
address@hidden @bullet
address@hidden
address@hidden followed by any non-graphic character (even @kbd{C-g})
+inserts that character.
+
address@hidden
address@hidden followed by a sequence of octal digits inserts the character
+with the specified octal character code.  You can use any number of
+octal digits; any non-digit terminates the sequence.  If the terminating
+character is @key{RET}, it serves only to terminate the sequence; any
+other non-digit is itself used as input after terminating the sequence.
+(The use of octal sequences is disabled in ordinary non-binary Overwrite
+mode, to give you a convenient way to insert a digit instead of
+overwriting with it.)
address@hidden itemize
+
address@hidden
+A numeric argument to @kbd{C-q} specifies how many copies of the quoted
+character should be inserted (@pxref{Arguments}).
+
address@hidden backward-or-forward-delete-char
address@hidden newline
address@hidden self-insert
+  Customization information: @key{DEL}, in most modes, runs the command
address@hidden; @key{RET} runs the command
address@hidden, and self-inserting printing characters run the command
address@hidden, which inserts whatever character was typed to invoke
+it.  Some major modes rebind @key{DEL} to other commands.
+
address@hidden Moving Point, Erasing, Inserting Text, Basic
address@hidden Changing the Location of Point
+
address@hidden arrow keys
address@hidden LEFT
address@hidden RIGHT
address@hidden UP
address@hidden DOWN
address@hidden moving point
address@hidden movement
address@hidden cursor motion
address@hidden moving the cursor
+  To do more than insert characters, you have to know how to move point
+(@pxref{Point}).  The simplest way to do this is with arrow keys, or by
+clicking the left mouse button where you want to move to.
+
+  NOTE: Many of the following commands have two versions, one that uses
+the function keys (e.g. @key{LEFT} or @key{END}) and one that doesn't.
+The former versions may only be available on X terminals (i.e. not on
+TTY's), but the latter are available on all terminals.
+
address@hidden C-a
address@hidden C-e
address@hidden C-f
address@hidden C-b
address@hidden C-n
address@hidden C-p
address@hidden C-l
address@hidden C-t
address@hidden C-v
address@hidden M-v
address@hidden M->
address@hidden M-<
address@hidden M-r
address@hidden LEFT
address@hidden RIGHT
address@hidden UP
address@hidden DOWN
address@hidden HOME
address@hidden END
address@hidden PGUP
address@hidden PGDN
address@hidden C-LEFT
address@hidden C-RIGHT
address@hidden C-HOME
address@hidden C-END
address@hidden beginning-of-line
address@hidden end-of-line
address@hidden forward-char
address@hidden backward-char
address@hidden next-line
address@hidden previous-line
address@hidden recenter
address@hidden transpose-chars
address@hidden beginning-of-buffer
address@hidden end-of-buffer
address@hidden goto-char
address@hidden goto-line
address@hidden move-to-window-line
address@hidden @kbd
address@hidden C-a
address@hidden HOME
+Move to the beginning of the line (@code{beginning-of-line}).
address@hidden C-e
address@hidden END
+Move to the end of the line (@code{end-of-line}).
address@hidden C-f
address@hidden RIGHT
+Move forward one character (@code{forward-char}).
address@hidden C-b
address@hidden LEFT
+Move backward one character (@code{backward-char}).
address@hidden M-f
address@hidden C-RIGHT
+Move forward one word (@code{forward-word}).
address@hidden M-b
address@hidden C-LEFT
+Move backward one word (@code{backward-word}).
address@hidden C-n
address@hidden DOWN
+Move down one line, vertically (@code{next-line}).  This command
+attempts to keep the horizontal position unchanged, so if you start in
+the middle of one line, you end in the middle of the next.  When on the
+last line of text, @kbd{C-n} creates a new line and moves onto it.
address@hidden C-p
address@hidden UP
+Move up one line, vertically (@code{previous-line}).
address@hidden C-v
address@hidden PGDN
+Move down one page, vertically (@code{scroll-up}).
address@hidden M-v
address@hidden PGUP
+Move up one page, vertically (@code{scroll-down}).
address@hidden C-l
+Clear the frame and reprint everything (@code{recenter}).  Text moves
+on the frame to bring point to the center of the window.
address@hidden M-r
+Move point to left margin, vertically centered in the window
+(@code{move-to-window-line}).  Text does not move on the screen.
+
+A numeric argument says which screen line to place point on.  It counts
+screen lines down from the top of the window (zero for the top line).  A
+negative argument counts lines from the bottom (@minus{}1 for the bottom
+line).
address@hidden C-t
+Transpose two characters, the ones before and after the cursor
+(@code{transpose-chars}).
address@hidden M-<
address@hidden C-HOME
+Move to the top of the buffer (@code{beginning-of-buffer}).  With
+numeric argument @var{n}, move to @var{n}/10 of the way from the top.
address@hidden, for more information on numeric address@hidden
address@hidden M->
address@hidden C-END
+Move to the end of the buffer (@code{end-of-buffer}).
address@hidden M-x goto-char
+Read a number @var{n} and move point to buffer position @var{n}.
+Position 1 is the beginning of the buffer.
address@hidden M-g
+Read a number @var{n} and move point to line number @var{n}
+(@code{goto-line}).  Line 1 is the beginning of the buffer.
address@hidden @item C-x C-n
address@hidden M-x set-goal-column
address@hidden set-goal-column
+Use the current column of point as the @dfn{semi-permanent goal column} for
address@hidden and @kbd{C-p} (@code{set-goal-column}).  Henceforth, those
+commands always move to this column in each line moved into, or as
+close as possible given the contents of the line.  This goal column remains
+in effect until canceled.
address@hidden @item C-u C-x C-n
address@hidden C-u M-x set-goal-column
+Cancel the goal column.  Henceforth, @kbd{C-n} and @kbd{C-p} once
+again try to avoid changing the horizontal position, as usual.
address@hidden table
+
address@hidden track-eol
+  If you set the variable @code{track-eol} to a address@hidden value,
+then @kbd{C-n} and @kbd{C-p} when at the end of the starting line move
+to the end of another line.  Normally, @code{track-eol} is @code{nil}.
address@hidden, for how to set variables such as @code{track-eol}.
+
address@hidden next-line-add-newlines
+  Normally, @kbd{C-n} on the last line of a buffer appends a newline to
+it.  If the variable @code{next-line-add-newlines} is @code{nil}, then
address@hidden gets an error instead (like @kbd{C-p} on the first line).
+
address@hidden Erasing, Basic Files, Moving Point, Basic
address@hidden Erasing Text
+
address@hidden @kbd
address@hidden @key{DEL}
+Delete the character before or after point
+(@code{backward-or-forward-delete-char}).  You can customize
+this behavior by setting the variable @code{delete-key-deletes-forward}.
address@hidden C-d
+Delete the character after point (@code{delete-char}).
address@hidden C-k
+Kill to the end of the line (@code{kill-line}).
address@hidden M-d
+Kill forward to the end of the next word (@code{kill-word}).
address@hidden address@hidden
+Kill back to the beginning of the previous word
+(@code{backward-kill-word}).
address@hidden table
+
address@hidden killing characters and lines
address@hidden deleting characters and lines
address@hidden erasing characters and lines
+  You already know about the @key{DEL} key which deletes the character
+before point (that is, before the cursor).  Another key, @kbd{Control-d}
+(@kbd{C-d} for short), deletes the character after point (that is, the
+character that the cursor is on).  This shifts the rest of the text on
+the line to the left.  If you type @kbd{C-d} at the end of a line, it
+joins together that line and the next line.
+
+  To erase a larger amount of text, use the @kbd{C-k} key, which kills a
+line at a time.  If you type @kbd{C-k} at the beginning or middle of a
+line, it kills all the text up to the end of the line.  If you type
address@hidden at the end of a line, it joins that line and the next line.
+
+  @xref{Killing}, for more flexible ways of killing text.
+
address@hidden Basic Files, Basic Help, Erasing, Basic
address@hidden Files
+
address@hidden files
+  The commands described above are sufficient for creating and altering
+text in an Emacs buffer; the more advanced Emacs commands just make
+things easier.  But to keep any text permanently you must put it in a
address@hidden  Files are named units of text which are stored by the
+operating system for you to retrieve later by name.  To look at or use
+the contents of a file in any way, including editing the file with
+Emacs, you must specify the file name.
+
+  Consider a file named @file{/usr/rms/foo.c}.  To begin editing
+this file from Emacs, type:
+
address@hidden
+C-x C-f /usr/rms/foo.c @key{RET}
address@hidden example
+
address@hidden
+Here the file name is given as an @dfn{argument} to the command @kbd{C-x
+C-f} (@code{find-file}).  That command uses the @dfn{minibuffer} to
+read the argument, and you type @key{RET} to terminate the argument
+(@pxref{Minibuffer}).
+
+  You can also use the @b{Open...} menu item from the @b{File} menu, then
+type the name of the file to the prompt.
+
+  Emacs obeys the command by @dfn{visiting} the file: creating a buffer,
+copying the contents of the file into the buffer, and then displaying
+the buffer for you to edit.  If you alter the text, you can @dfn{save}
+the new text in the file by typing @kbd{C-x C-s} (@code{save-buffer}) or
+choosing @b{Save Buffer} from the @b{File} menu.  This makes the changes
+permanent by copying the altered buffer contents back into the file
address@hidden/usr/rms/foo.c}.  Until you save, the changes exist only inside
+Emacs, and the file @file{foo.c} is unaltered.
+
+  To create a file, visit the file with @kbd{C-x C-f} as if it already
+existed or choose @b{Open...} from the @b{File} menu and provide the
+name for the new file.  Emacs will create an empty buffer in which you
+can insert the text you want to put in the file.  When you save the
+buffer with @kbd{C-x C-s}, or by choosing @b{Save Buffer} from the
address@hidden menu, the file is created.
+
+  To learn more about using files, @xref{Files}.
+
address@hidden Basic Help, Blank Lines, Basic Files, Basic
address@hidden Help
+
address@hidden getting help with keys
+  If you forget what a key does, you can find out with the Help
+character, which is @kbd{C-h} (or @key{F1}, which is an alias for
address@hidden).  Type @kbd{C-h k} followed by the key you want to know
+about; for example, @kbd{C-h k C-n} tells you all about what @kbd{C-n}
+does.  @kbd{C-h} is a prefix key; @kbd{C-h k} is just one of its
+subcommands (the command @code{describe-key}).  The other subcommands of
address@hidden provide different kinds of help.  Type @kbd{C-h} twice to get
+a description of all the help facilities.  @xref{Help}.
+
address@hidden Blank Lines, Continuation Lines, Basic Help, Basic
address@hidden Blank Lines
+
address@hidden inserting blank lines
address@hidden deleting blank lines
+  Here are special commands and techniques for putting in and taking out
+blank lines.
+
address@hidden widecommands
address@hidden @kbd
address@hidden C-o
+Insert one or more blank lines after the cursor (@code{open-line}).
address@hidden C-x C-o
+Delete all but one of many consecutive blank lines
+(@code{delete-blank-lines}).
address@hidden table
+
address@hidden C-o
address@hidden C-x C-o
address@hidden blank lines
address@hidden open-line
address@hidden delete-blank-lines
+  When you want to insert a new line of text before an existing line, you
+can do it by typing the new line of text, followed by @key{RET}.
+However, it may be easier to see what you are doing if you first make a
+blank line and then insert the desired text into it.  This is easy to do
+using the key @kbd{C-o} (@code{open-line}), which inserts a newline
+after point but leaves point in front of the newline.  After @kbd{C-o},
+type the text for the new line.  @kbd{C-o F O O} has the same effect as
address@hidden@kbd{F O O @key{RET}}}, except for the final location of point.
+
+  You can make several blank lines by typing @kbd{C-o} several times, or
+by giving it a numeric argument to tell it how many blank lines to make.
address@hidden, for how.  If you have a fill prefix, then @kbd{C-o}
+command inserts the fill prefix on the new line, when you use it at the
+beginning of a line.  @xref{Fill Prefix}.
+
+  The easy way to get rid of extra blank lines is with the command
address@hidden C-o} (@code{delete-blank-lines}).  @kbd{C-x C-o} in a run of
+several blank lines deletes all but one of them.  @kbd{C-x C-o} on a
+solitary blank line deletes that blank line.  When point is on a
+nonblank line, @kbd{C-x C-o} deletes any blank lines following that
+nonblank line.
+
address@hidden Continuation Lines, Position Info, Blank Lines, Basic
address@hidden Continuation Lines
+
address@hidden continuation line
address@hidden wrapping
address@hidden line wrapping
+  If you add too many characters to one line without breaking it with
address@hidden, the line will grow to occupy two (or more) lines on the
+screen, with a curved arrow at the extreme right margin of all but the
+last of them.  The curved arrow says that the following screen line is
+not really a distinct line in the text, but just the @dfn{continuation}
+of a line too long to fit the screen.  Continuation is also called
address@hidden wrapping}.
+
+  Sometimes it is nice to have Emacs insert newlines automatically when
+a line gets too long.  Continuation on the screen does not do that.  Use
+Auto Fill mode (@pxref{Filling}) if that's what you want.
+
address@hidden truncate-lines
address@hidden truncation
+  Instead of continuation, long lines can be displayed by @dfn{truncation}.
+This means that all the characters that do not fit in the width of the
+frame or window do not appear at all.  They remain in the buffer,
+temporarily invisible.  Right arrow in the last column (instead of the
+curved arrow) inform you that truncation is in effect.
+
+  Truncation instead of continuation happens whenever horizontal
+scrolling is in use, and optionally in all side-by-side windows
+(@pxref{Windows}).  You can enable truncation for a particular buffer by
+setting the variable @code{truncate-lines} to address@hidden in that
+buffer.  (@xref{Variables}.)  Altering the value of
address@hidden makes it local to the current buffer; until that
+time, the default value is in effect.  The default is initially
address@hidden  @xref{Locals}.
+
+  @xref{Display Vars}, for additional variables that affect how text is
+displayed.
+
address@hidden Position Info, Arguments, Continuation Lines, Basic
address@hidden Cursor Position Information
+
+  If you are accustomed to other display editors, you may be surprised
+that Emacs does not always display the page number or line number of
+point in the mode line.  In Emacs, this information is only rarely
+needed, and a number of commands are available to compute and print it.
+Since text is stored in a way that makes it difficult to compute the
+information, it is not displayed all the time.
+
address@hidden @kbd
address@hidden M-x what-page
+Print page number of point, and line number within page.
address@hidden M-x what-line
+Print line number of point in the buffer.
address@hidden M-x line-number-mode
+Toggle automatic display of current line number.
address@hidden M-=
+Print number of lines and characters in the current region
+(@code{count-lines-region}).  @xref{Mark}, for information about the
+region.
address@hidden C-x =
+Print character code of character after point, character position of
+point, and column of point (@code{what-cursor-position}).
address@hidden table
+
address@hidden what-page
address@hidden what-line
address@hidden line number
address@hidden page number
address@hidden M-=
address@hidden count-lines-region
+
+  There are several commands for printing line numbers:
+
address@hidden @bullet
address@hidden
address@hidden what-line} counts lines from the beginning of the file and
+prints the line number point is on.  The first line of the file is line
+number 1.  You can use these numbers as arguments to @kbd{M-x
+goto-line}.
address@hidden
address@hidden what-page} counts pages from the beginning of the file, and
+counts lines within the page, printing both of them.  @xref{Pages}, for
+the command @kbd{C-x l}, which counts the lines in the current page.
address@hidden
address@hidden (@code{count-lines-region}) prints the number of lines in the
+region (@pxref{Mark}).  @xref{Pages}, for the command @kbd{C-x l} which
+counts the lines in the
address@hidden itemize
+
address@hidden C-x =
address@hidden what-cursor-position
+  The command @kbd{C-x =} (@code{what-cursor-position}) can be used to find out
+the column that the cursor is in, and other miscellaneous information about
+point.  It prints a line in the echo area that looks like this:
+
address@hidden
+Char: c (0143, 99, 0x63)  point=18862 of 24800(76%)  column 53 
address@hidden example
+
address@hidden
+(In fact, this is the output produced when point is before @samp{column
+53} in the example.)
+
+  The four values after @samp{Char:} describe the character that follows
+point, first by showing it and then by giving its character code in
+octal, decimal and hex. 
+
+  @samp{point=} is followed by the position of point expressed as a character
+count.  The front of the buffer counts as position 1, one character later
+as 2, and so on.  The next, larger number is the total number of characters
+in the buffer.  Afterward in parentheses comes the position expressed as a
+percentage of the total size.
+
+  @samp{column} is followed by the horizontal position of point, in
+columns from the left edge of the window.
+
+  If the buffer has been narrowed, making some of the text at the
+beginning and the end temporarily invisible, @kbd{C-x =} prints
+additional text describing the current visible range.  For example, it
+might say:
+
address@hidden
+Char: c (0143, 99, 0x63)  point=19674 of 24575(80%) <19591 - 19703>  column 69 
address@hidden smallexample
+
address@hidden
+where the two extra numbers give the smallest and largest character position
+that point is allowed to assume.  The characters between those two positions
+are the visible ones.  @xref{Narrowing}.
+
+  If point is at the end of the buffer (or the end of the visible part),
address@hidden =} omits any description of the character after point.
+The output looks like
+
address@hidden
+point=563026 of 563025(100%)  column 0
address@hidden smallexample
+
address@hidden Arguments,, Position Info, Basic
address@hidden Numeric Arguments
address@hidden numeric arguments
+
+  In mathematics and computer usage, the word @dfn{argument} means
+``data provided to a function or operation.''  Any Emacs command can be
+given a @dfn{numeric argument} (also called a @dfn{prefix argument}).
+Some commands interpret the argument as a repetition count.  For
+example, giving an argument of ten to the key @kbd{C-f} (the command
address@hidden, move forward one character) moves forward ten
+characters.  With these commands, no argument is equivalent to an
+argument of one.  Negative arguments are allowed.  Often they tell a
+command to move or act  in the opposite direction.
+
address@hidden M-1
address@hidden address@hidden
address@hidden digit-argument
address@hidden negative-argument
+  If your keyboard has a @key{META} key (labelled with a diamond on
+Sun-type keyboards and labelled @samp{Alt} on some other keyboards), the
+easiest way to specify a numeric argument is to type digits and/or a
+minus sign while holding down the @key{META} key.  For example,
address@hidden
+M-5 C-n
address@hidden example
address@hidden
+would move down five lines.  The characters @kbd{Meta-1}, @kbd{Meta-2},
+and so on, as well as @kbd{Meta--}, do this because they are keys bound
+to commands (@code{digit-argument} and @code{negative-argument}) that
+are defined to contribute to an argument for the next command.  Digits
+and @kbd{-} modified with Control, or Control and Meta, also specify
+numeric arguments.
+
address@hidden C-u
address@hidden universal-argument
+  Another way of specifying an argument is to use the @kbd{C-u}
+(@code{universal-argument}) command followed by the digits of the
+argument.  With @kbd{C-u}, you can type the argument digits without
+holding down modifier keys; @kbd{C-u} works on all terminals.  To type a
+negative argument, type a minus sign after @kbd{C-u}.  Just a minus sign
+without digits normally means @minus{}1.
+
+  @kbd{C-u} followed by a character which is neither a digit nor a minus
+sign has the special meaning of ``multiply by four''.  It multiplies the
+argument for the next command by four.  @kbd{C-u} twice multiplies it by
+sixteen.  Thus, @kbd{C-u C-u C-f} moves forward sixteen characters.  This
+is a good way to move forward ``fast'', since it moves about 1/5 of a line
+in the usual size frame.  Other useful combinations are @kbd{C-u C-n},
address@hidden C-u C-n} (move down a good fraction of a frame), @kbd{C-u C-u
+C-o} (make ``a lot'' of blank lines), and @kbd{C-u C-k} (kill four
+lines).
+
+  Some commands care only about whether there is an argument and not about
+its value.  For example, the command @kbd{M-q} (@code{fill-paragraph}) with
+no argument fills text; with an argument, it justifies the text as well.
+(@xref{Filling}, for more information on @kbd{M-q}.)  Just @kbd{C-u} is a
+handy way of providing an argument for such commands.
+
+  Some commands use the value of the argument as a repeat count, but do
+something peculiar when there is no argument.  For example, the command
address@hidden (@code{kill-line}) with argument @var{n} kills @var{n} lines,
+including their terminating newlines.  But @kbd{C-k} with no argument is
+special: it kills the text up to the next newline, or, if point is right at
+the end of the line, it kills the newline itself.  Thus, two @kbd{C-k}
+commands with no arguments can kill a non-blank line, just like @kbd{C-k}
+with an argument of one.  (@xref{Killing}, for more information on
address@hidden)
+
+  A few commands treat a plain @kbd{C-u} differently from an ordinary
+argument.  A few others may treat an argument of just a minus sign
+differently from an argument of @minus{}1.  These unusual cases are
+described when they come up; they are always for reasons of convenience
+of use of the individual command.
+
+  You can use a numeric argument to insert multiple copies of a
+character.  This is straightforward unless the character is a digit; for
+example, @kbd{C-u 6 4 a} inserts 64 copies of the character @samp{a}.
+But this does not work for inserting digits; @kbd{C-u 6 4 1} specifies
+an argument of 641, rather than inserting anything.  To separate the
+digit to insert from the argument, type another @kbd{C-u}; for example,
address@hidden 6 4 C-u 1} does insert 64 copies of the character @samp{1}.
+
+  We use the term ``prefix argument'' as well as ``numeric argument'' to
+emphasize that you type the argument before the command, and to
+distinguish these arguments from minibuffer arguments that come after
+the command.
+
+
address@hidden Undo, Minibuffer, Basic, Top
address@hidden Undoing Changes
address@hidden undo
address@hidden mistakes, correcting
+
+  Emacs allows you to undo all changes you make to the text of a buffer,
+up to a certain amount of change (8000 characters).  Each buffer records
+changes individually, and the undo command always applies to the
+current buffer.  Usually each editing command makes a separate entry
+in the undo records, but some commands such as @code{query-replace}
+make many entries, and very simple commands such as self-inserting
+characters are often grouped to make undoing less tedious.
+
address@hidden @kbd
address@hidden C-x u
+Undo one batch of changes (usually, one command's worth) (@code{undo}).
address@hidden C-_
+The same.
address@hidden table
+
address@hidden C-x u
address@hidden C-_
address@hidden undo
+  The command @kbd{C-x u} or @kbd{C-_} allows you to undo changes.  The
+first time you give this command, it undoes the last change.  Point
+moves to the text affected by the undo, so you can see what was undone.
+
+  Consecutive repetitions of the @kbd{C-_} or @kbd{C-x u} commands undo
+earlier and earlier changes, back to the limit of what has been
+recorded.  If all recorded changes have already been undone, the undo
+command prints an error message and does nothing.
+
+  Any command other than an undo command breaks the sequence of undo
+commands.  Starting at this moment, the previous undo commands are
+considered ordinary changes that can themselves be undone.  Thus, you can
+redo changes you have undone by typing @kbd{C-f} or any other command
+that have no important effect, and then using more undo commands.
+
+  If you notice that a buffer has been modified accidentally, the
+easiest way to recover is to type @kbd{C-_} repeatedly until the stars
+disappear from the front of the mode line.  When that happens, all the
+modifications you made have been canceled.  If you do not remember
+whether you changed the buffer deliberately, type @kbd{C-_} once. When
+you see Emacs undo the last change you made, you probably remember why you
+made it.  If the change was an accident, leave it undone.  If it was
+deliberate, redo the change as described in the preceding paragraph.
+
+  Whenever an undo command makes the stars disappear from the mode line,
+the buffer contents is the same as it was when the file was last read in
+or saved.
+
+  Not all buffers record undo information.  Buffers whose names start with
+spaces don't; these buffers are used internally by Emacs and its extensions
+to hold text that users don't normally look at or edit.  Minibuffers,
+help buffers, and documentation buffers also don't record undo information.
+
+  Emacs can remember at most 8000 or so characters of deleted or
+modified text in any one buffer for reinsertion by the undo command.
+There is also a limit on the number of individual insert, delete, or
+change actions that Emacs can remember.
+
+  There are two keys to run the @code{undo} command, @kbd{C-x u} and
address@hidden, because on some keyboards, it is not obvious how to type
address@hidden @kbd{C-x u} is an alternative you can type in the same
+fashion on any terminal.
+
address@hidden Minibuffer, M-x, Undo, Top
address@hidden The Minibuffer
address@hidden minibuffer
+
+  The @dfn{minibuffer} is the facility used by XEmacs commands to read
+arguments more complicated than a single number.  Minibuffer arguments
+can be file names, buffer names, Lisp function names, XEmacs command
+names, Lisp expressions, and many other things, depending on the command
+reading the argument.  You can use the usual XEmacs editing commands in
+the minibuffer to edit the argument text.
+
address@hidden prompt
+  When the minibuffer is in use, it appears in the echo area, and the
+cursor moves there.  The beginning of the minibuffer line displays a
address@hidden which says what kind of input you should supply and how it
+will be used.  Often this prompt is derived from the name of the command
+that the argument is for.  The prompt normally ends with a colon.
+
address@hidden default argument
+  Sometimes a @dfn{default argument} appears in parentheses after the
+colon; it, too, is part of the prompt.  The default is used as the
+argument value if you enter an empty argument (e.g., by just typing @key{RET}).
+For example, commands that read buffer names always show a default, which
+is the name of the buffer that will be used if you type just @key{RET}.
+
address@hidden C-g
+  The simplest way to enter a minibuffer argument is to type the text
+you want, terminated by @key{RET} which exits the minibuffer.  You can
+cancel the command that wants the argument, and get out of the
+minibuffer, by typing @kbd{C-g}.
+
+  Since the minibuffer uses the screen space of the echo area, it can
+conflict with other ways XEmacs customarily uses the echo area.  Here is
+how XEmacs handles such conflicts:
+
address@hidden @bullet
address@hidden
+If a command gets an error while you are in the minibuffer, this does
+not cancel the minibuffer.  However, the echo area is needed for the
+error message and therefore the minibuffer itself is hidden for a
+while.  It comes back after a few seconds, or as soon as you type
+anything.
+
address@hidden
+If in the minibuffer you use a command whose purpose is to print a
+message in the echo area, such as @kbd{C-x =}, the message is printed
+normally, and the minibuffer is hidden for a while.  It comes back
+after a few seconds, or as soon as you type anything.
+
address@hidden
+Echoing of keystrokes does not take place while the minibuffer is in
+use.
address@hidden itemize
+
address@hidden
+* File: Minibuffer File.  Entering file names with the minibuffer.
+* Edit: Minibuffer Edit.  How to edit in the minibuffer.
+* Completion::           An abbreviation facility for minibuffer input.
+* Minibuffer History::    Reusing recent minibuffer arguments.
+* Repetition::           Re-executing commands that used the minibuffer.
address@hidden menu
+
address@hidden Minibuffer File, Minibuffer Edit, Minibuffer, Minibuffer
address@hidden Minibuffers for File Names
+
+  Sometimes the minibuffer starts out with text in it.  For example, when
+you are supposed to give a file name, the minibuffer starts out containing
+the @dfn{default directory}, which ends with a slash.  This is to inform
+you which directory the file will be found in if you do not specify a
+directory.
+
+  For example, the minibuffer might start out with these contents:
+
address@hidden
+Find File: /u2/emacs/src/
address@hidden example
+
address@hidden
+where @samp{Find File:@: } is the prompt.  Typing @kbd{buffer.c}
+specifies the file @file{/u2/emacs/src/buffer.c}.  To find files in
+nearby directories, use @kbd{..}; thus, if you type
address@hidden/lisp/simple.el}, you will get the file named
address@hidden/u2/emacs/lisp/simple.el}.  Alternatively, you can kill with
address@hidden@key{DEL}} the directory names you don't want (@pxref{Words}).
+
+  If you don't want any of the default, you can kill it with @kbd{C-a
+C-k}.  But you don't need to kill the default; you can simply ignore it.
+Insert an absolute file name, one starting with a slash or a tilde,
+after the default directory.  For example, to specify the file
address@hidden/etc/termcap}, just insert that name, giving these minibuffer
+contents:
+
address@hidden
+Find File: /u2/emacs/src//etc/termcap
address@hidden example
+
address@hidden
address@hidden // in file name
address@hidden double slash in file name
address@hidden slashes repeated in file name
+XEmacs gives a special meaning to a double slash (which is not normally
+a useful thing to write): it means, ``ignore everything before the
+second slash in the pair.''  Thus, @samp{/u2/emacs/src/} is ignored in
+the example above, and you get the file @file{/etc/termcap}.
+
address@hidden insert-default-directory
+If you set @code{insert-default-directory} to @code{nil}, the default
+directory is not inserted in the minibuffer.  This way, the minibuffer
+starts out empty.  But the name you type, if relative, is still
+interpreted with respect to the same default directory.
+
address@hidden Minibuffer Edit, Completion, Minibuffer File, Minibuffer
address@hidden Editing in the Minibuffer
+
+  The minibuffer is an XEmacs buffer (albeit a peculiar one), and the
+usual XEmacs commands are available for editing the text of an argument
+you are entering.
+
+  Since @key{RET} in the minibuffer is defined to exit the minibuffer,
+you can't use it to insert a newline in the minibuffer.  To do that,
+type @kbd{C-o} or @kbd{C-q C-j}.  (Recall that a newline is really the
+character control-J.)
+
+  The minibuffer has its own window which always has space on the screen
+but acts as if it were not there when the minibuffer is not in use.
+When the minibuffer is in use, its window is just like the others; you
+can switch to another window with @kbd{C-x o}, edit text in other
+windows and perhaps even visit more files, before returning to the
+minibuffer to submit the argument.  You can kill text in another window,
+return to the minibuffer window, and then yank the text to use it in the
+argument.  @xref{Windows}.
+
+  There are some restrictions on the use of the minibuffer window,
+however.  You cannot switch buffers in it---the minibuffer and its
+window are permanently attached.  Also, you cannot split or kill the
+minibuffer window. But you can make it taller in the normal fashion with
address@hidden ^}.  If you enable Resize-Minibuffer mode, then the
+minibuffer window expands vertically as necessary to hold the text that
+you put in the minibuffer.  Use @kbd{M-x resize-minibuffer-mode} to
+enable or disable this minor mode (@pxref{Minor Modes}).
+
address@hidden C-M-v
+  If while in the minibuffer you issue a command that displays help text
+of any sort in another window, you can use the @kbd{C-M-v} command while
+in the minibuffer to scroll the help text.  This lasts until you exit
+the minibuffer.  This feature is especially useful if a completing
+minibuffer gives you a list of possible completions.  @xref{Other Window}.
+
address@hidden minibuffer-confirm-incomplete
+If the variable @code{minibuffer-confirm-incomplete} is @code{t}, you
+are asked for confirmation if there is no known completion for the text
+you typed. For example, if you attempted to visit a non-existent file,
+the minibuffer might read:
address@hidden
+        Find File: chocolate_bar.c [no completions, confirm]
address@hidden example
+If you press @kbd{Return} again, that confirms the filename. Otherwise,
+you can continue editing it. 
+
+ XEmacs supports recursive use of the minibuffer.  However, it is easy
+to do this by accident (because of autorepeating keyboards, for example)
+and get confused.  Therefore, most XEmacs commands that use the
+minibuffer refuse to operate if the minibuffer window is selected.  If
+the minibuffer is active but you have switched to a different window,
+recursive use of the minibuffer is allowed---if you know enough to try
+to do this, you probably will not get confused.
+
address@hidden enable-recursive-minibuffers
+  If you set the variable @code{enable-recursive-minibuffers} to a
address@hidden, recursive use of the minibuffer is always allowed.
+
address@hidden Completion, Minibuffer History, Minibuffer Edit, Minibuffer
address@hidden Completion
address@hidden completion
+
+  For certain kinds of arguments, you can use @dfn{completion} to enter
+the argument value.  Completion means that you type part of the
+argument, then XEmacs visibly fills in the rest, or as much as
+can be determined from the part you have typed.
+
+  When completion is available, certain address@hidden, @key{RET}, and
address@hidden rebound to complete the text present in the
+minibuffer into a longer string that it stands for, by matching it
+against a set of @dfn{completion alternatives} provided by the command
+reading the argument.  @kbd{?} is defined to display a list of possible
+completions of what you have inserted.
+
+  For example, when @kbd{M-x} uses the minibuffer to read the name of a
+command, it provides a list of all available XEmacs command names to
+complete against.  The completion keys match the text in the minibuffer
+against all the command names, find any additional name characters
+implied by the ones already present in the minibuffer, and add those
+characters to the ones you have given.  This is what makes it possible
+to type @kbd{M-x inse @key{SPC} b @key{RET}} instead of @kbd{M-x
+insert-buffer @key{RET}} (for example).
+
+  Case is normally significant in completion because it is significant
+in most of the names that you can complete (buffer names, file names and
+command names).  Thus, @samp{fo} does not complete to @samp{Foo}.  When
+you are completing a name in which case does not matter, case may be
+ignored for completion's sake if specified by program.
+
+When a completion list is displayed, the completions will highlight as
+you move the mouse over them.  Clicking the middle mouse button on any 
+highlighted completion will ``select'' it just as if you had typed it in
+and hit @key{RET}.
+
address@hidden
+* Example: Completion Example.
+* Commands: Completion Commands.
+* Strict Completion::
+* Options: Completion Options.
address@hidden menu
+
address@hidden Completion Example, Completion Commands, Completion, Completion
address@hidden Completion Example
+
address@hidden TAB
address@hidden minibuffer-complete
+  A concrete example may help here.  If you type @kbd{M-x au @key{TAB}},
+the @key{TAB} looks for alternatives (in this case, command names) that
+start with @samp{au}.  There are several, including
address@hidden and @code{auto-save-mode}---but they are all the
+same as far as @code{auto}, so the @samp{au} in the minibuffer changes
+to @samp{auto}.
+
+  If you type @key{TAB} again immediately, there are multiple
+possibilities for the very next character---it could be any of
address@hidden no more characters are added; instead, @key{TAB}
+displays a list of all possible completions in another window.
+
+  If you go on to type @kbd{-f @key{TAB}}, this @key{TAB} sees
address@hidden  The only command name starting this way is
address@hidden, so completion fills in the rest of that.  You now
+have @samp{auto-fill-mode} in the minibuffer after typing just @kbd{au
address@hidden f @key{TAB}}.  Note that @key{TAB} has this effect because in
+the minibuffer it is bound to the command @code{minibuffer-complete}
+when completion is available.
+
address@hidden Completion Commands, Strict Completion, Completion Example, 
Completion
address@hidden Completion Commands
+
+  Here is a list of the completion commands defined in the minibuffer
+when completion is available.
+
address@hidden @kbd
address@hidden @key{TAB}
+Complete the text in the minibuffer as much as possible
+(@code{minibuffer-complete}).
address@hidden @key{SPC}
+Complete the minibuffer text, but don't go beyond one word
+(@code{minibuffer-complete-word}).
address@hidden @key{RET}
+Submit the text in the minibuffer as the argument, possibly completing
+first as described below (@code{minibuffer-complete-and-exit}).
address@hidden ?
+Print a list of all possible completions of the text in the minibuffer
+(@code{minibuffer-list-completions}).
address@hidden @key{button2}
+Select the highlighted text under the mouse as a minibuffer response.
+When the minibuffer is being used to prompt the user for a completion,
+any valid completions which are visible on the screen will be highlighted
+when the mouse moves over them.  Clicking @key{button2} will select the
+highlighted completion and exit the minibuffer.  
+(@code{minibuf-select-highlighted-completion}).
address@hidden table
+
address@hidden SPC
address@hidden minibuffer-complete-word
+  @key{SPC} completes much like @key{TAB}, but never goes beyond the
+next hyphen or space.  If you have @samp{auto-f} in the minibuffer and
+type @key{SPC}, it finds that the completion is @samp{auto-fill-mode},
+but it stops completing after @samp{fill-}.  This gives
address@hidden  Another @key{SPC} at this point completes all the
+way to @samp{auto-fill-mode}.  @key{SPC} in the minibuffer when
+completion is available runs the command
address@hidden
+
+  Here are some commands you can use to choose a completion from a
+window that displays a list of completions:
+
address@hidden @kbd
address@hidden mouse-choose-completion
address@hidden button2up
+Clicking mouse button 2 on a completion in the list of possible
+completions chooses that completion (@code{mouse-choose-completion}).
+You normally use this command while point is in the minibuffer; but you
+must click in the list of completions, not in the minibuffer itself.
+
address@hidden switch-to-completions
address@hidden @key{PRIOR}
address@hidden M-v
+Typing @key{PRIOR} or @kbd{M-v}, while in the minibuffer, selects the
+window showing the completion list buffer
+(@code{switch-to-completions}).  This paves the way for using the
+commands below.  (Selecting that window in the usual ways has the same
+effect, but this way is more convenient.)
+
address@hidden choose-completion
address@hidden @key{RET}
+Typing @key{RET} @emph{in the completion list buffer} chooses the
+completion that point is in or next to (@code{choose-completion}).  To
+use this command, you must first switch windows to the window that shows
+the list of completions.
+
address@hidden next-list-mode-item
address@hidden @key{RIGHT}
address@hidden @key{TAB}
address@hidden C-f
+Typing the right-arrow key @key{RIGHT}, @key{TAB} or @kbd{C-f} @emph{in
+the completion list buffer} moves point to the following completion
+(@code{next-list-mode-item}).
+
address@hidden previous-list-mode-item
address@hidden @key{LEFT}
address@hidden C-b
+Typing the left-arrow key @key{LEFT} or @kbd{C-b} @emph{in the
+completion list buffer} moves point toward the beginning of the buffer,
+to the previous completion (@code{previous-list-mode-item}).
address@hidden table
+
address@hidden Strict Completion, Completion Options, Completion Commands, 
Completion
address@hidden Strict Completion
+
+  There are three different ways that @key{RET} can work in completing
+minibuffers, depending on how the argument will be used.
+
address@hidden @bullet
address@hidden
address@hidden completion is used when it is meaningless to give any
+argument except one of the known alternatives.  For example, when
address@hidden k} reads the name of a buffer to kill, it is meaningless to
+give anything but the name of an existing buffer.  In strict
+completion, @key{RET} refuses to exit if the text in the minibuffer
+does not complete to an exact match.
+
address@hidden
address@hidden completion is similar to strict completion, except that
address@hidden exits only if the text was an exact match already, not
+needing completion.  If the text is not an exact match, @key{RET} does
+not exit, but it does complete the text.  If it completes to an exact
+match, a second @key{RET} will exit.
+
+Cautious completion is used for reading file names for files that must
+already exist.
+
address@hidden
address@hidden completion is used when any string whatever is
+meaningful, and the list of completion alternatives is just a guide.
+For example, when @kbd{C-x C-f} reads the name of a file to visit, any
+file name is allowed, in case you want to create a file.  In
+permissive completion, @key{RET} takes the text in the minibuffer
+exactly as given, without completing it.
address@hidden itemize
+
+  The completion commands display a list of all possible completions in
+a window whenever there is more than one possibility for the very next
+character.  Also, typing @kbd{?} explicitly requests such a list.  If
+the list of completions is long, you can scroll it with @kbd{C-M-v}
+(@pxref{Other Window}).
+
address@hidden Completion Options,  , Strict Completion, Completion
address@hidden Completion Options
+
address@hidden completion-ignored-extensions
+  When completion is done on file names, certain file names are usually
+ignored.  The variable @code{completion-ignored-extensions} contains a
+list of strings; a file whose name ends in any of those strings is
+ignored as a possible completion.  The standard value of this variable
+has several elements including @code{".o"}, @code{".elc"}, @code{".dvi"}
+and @code{"~"}.  The effect is that, for example, @samp{foo} can
+complete to @samp{foo.c} even though @samp{foo.o} exists as well.
+However, if @emph{all} the possible completions end in ``ignored''
+strings, then they are not ignored.  Ignored extensions do not apply to
+lists of completions---those always mention all possible completions.
+
address@hidden completion-auto-help
+  If a completion command finds the next character is undetermined, it
+automatically displays a list of all possible completions.  If the variable
address@hidden is set to @code{nil}, this does not happen,
+and you must type @kbd{?} to display the possible completions.
+
address@hidden minibuffer-confirm-incomplete
+If the variable @code{minibuffer-confirm-incomplete} is set to @code{t},
+then in contexts where @code{completing-read} allows answers that are
+not valid completions, an extra @key{RET} must be typed to confirm the
+response.  This is helpful for catching typos.
+
address@hidden Icomplete mode
+  Icomplete mode presents a constantly-updated display that tells you
+what completions are available for the text you've entered so far.  The
+command to enable or disable this minor mode is @kbd{M-x
+icomplete-mode}.
+
address@hidden Minibuffer History, Repetition, Completion, Minibuffer
address@hidden Minibuffer History
address@hidden minibuffer history
address@hidden history of minibuffer input
+
+  Every argument that you enter with the minibuffer is saved on a
address@hidden history list} so that you can use it again later in
+another argument.  Special commands load the text of an earlier argument
+in the minibuffer.  They discard the old minibuffer contents, so you can
+think of them as moving through the history of previous arguments.
+
address@hidden @kbd
address@hidden @key{UP}
address@hidden M-p
+Move to the next earlier argument string saved in the minibuffer history
+(@code{previous-history-element}).
address@hidden @key{DOWN}
address@hidden M-n
+Move to the next later argument string saved in the minibuffer history
+(@code{next-history-element}).
address@hidden M-r @var{regexp} @key{RET}
+Move to an earlier saved argument in the minibuffer history that has a
+match for @var{regexp} (@code{previous-matching-history-element}).
address@hidden M-s @var{regexp} @key{RET}
+Move to a later saved argument in the minibuffer history that has a
+match for @var{regexp} (@code{next-matching-history-element}).
address@hidden table
+
address@hidden M-p @r{(minibuffer history)}
address@hidden M-n @r{(minibuffer history)}
address@hidden next-history-element
address@hidden previous-history-element
+  The simplest way to reuse the saved arguments in the history list is
+to move through the history list one element at a time.  While in the
+minibuffer, use @kbd{M-p} or up-arrow (@code{previous-history-element})
+to ``move to'' the next earlier minibuffer input, and use @kbd{M-n} or
+down-arrow (@code{next-history-element}) to ``move to'' the next later
+input.
+
+  The previous input that you fetch from the history entirely replaces
+the contents of the minibuffer.  To use it as the argument, exit the
+minibuffer as usual with @key{RET}.  You can also edit the text before
+you reuse it; this does not change the history element that you
+``moved'' to, but your new argument does go at the end of the history
+list in its own right.
+
+  For many minibuffer arguments there is a ``default'' value.  In some
+cases, the minibuffer history commands know the default value.  Then you
+can insert the default value into the minibuffer as text by using
address@hidden to move ``into the future'' in the history.
+
address@hidden previous-matching-history-element
address@hidden next-matching-history-element
address@hidden M-r @r{(minibuffer history)}
address@hidden M-s @r{(minibuffer history)}
+  There are also commands to search forward or backward through the
+history; they search for history elements that match a regular
+expression that you specify with the minibuffer.  @kbd{M-r}
+(@code{previous-matching-history-element}) searches older elements in
+the history, while @kbd{M-s} (@code{next-matching-history-element})
+searches newer elements.  By special dispensation, these commands can
+use the minibuffer to read their arguments even though you are already
+in the minibuffer when you issue them.  As with incremental searching,
+an uppercase letter in the regular expression makes the search
+case-sensitive (@pxref{Search Case}).
+
+  All uses of the minibuffer record your input on a history list, but
+there are separate history lists for different kinds of arguments.  For
+example, there is a list for file names, used by all the commands that
+read file names.
+
+  There are several other very specific history lists, including one for
+command names read by @kbd{M-x}, one for buffer names, one for arguments
+of commands like @code{query-replace}, and one for compilation commands
+read by @code{compile}.  Finally, there is one ``miscellaneous'' history
+list that most minibuffer arguments use.
+
address@hidden Do wee need this?
+
address@hidden Repetition,  , Minibuffer History, Minibuffer
address@hidden Repeating Minibuffer Commands
address@hidden command history
address@hidden history of commands
+
+  Every command that uses the minibuffer at least once is recorded on a
+special history list, together with the values of its arguments, so that
+you can repeat the entire command.  In particular, every use of
address@hidden is recorded there, since @kbd{M-x} uses the minibuffer to read
+the command name.
+
address@hidden list-command-history
address@hidden widecommands
address@hidden @kbd
address@hidden C-x @key{ESC} @key{ESC}
+Re-execute a recent minibuffer command (@code{repeat-complex-command}).
address@hidden M-p
+Within @kbd{C-x @key{ESC} @key{ESC}}, move to previous recorded command
+(@code{previous-history-element}).
address@hidden M-n
+Within @kbd{C-x @key{ESC} @key{ESC}}, move to the next (more recent)
+recorded command (@code{next-history-element}).
address@hidden M-x list-command-history
+Display the entire command history, showing all the commands
address@hidden @key{ESC} @key{ESC}} can repeat, most recent first.
address@hidden table
+
address@hidden C-x ESC ESC
address@hidden repeat-complex-command
+  @kbd{C-x @key{ESC} @key{ESC}} is used to re-execute a recent
+minibuffer-using command.  With no argument, it repeats the last such
+command.  A numeric argument specifies which command to repeat; one
+means the last one, and larger numbers specify earlier ones.
+
+  @kbd{C-x @key{ESC} @key{ESC}} works by turning the previous command
+into a Lisp expression and then entering a minibuffer initialized with
+the text for that expression.  If you type just @key{RET}, the command
+is repeated as before.  You can also change the command by editing the
+Lisp expression.  Whatever expression you finally submit is what will be
+executed.  The repeated command is added to the front of the command
+history unless it is identical to the most recently executed command
+already there.
+
+  Even if you don't understand Lisp syntax, it will probably be obvious
+which command is displayed for repetition.  If you do not change the text,
+you can be sure the command will repeat exactly as before.
+
address@hidden M-n
address@hidden M-p
address@hidden next-complex-command
address@hidden previous-complex-command
+  If you are in the minibuffer for @kbd{C-x @key{ESC} @key{ESC}} and the
+command shown to you is not the one you want to repeat, you can move
+around the list of previous commands using @kbd{M-n} and @kbd{M-p}.
address@hidden replaces the contents of the minibuffer with the next earlier
+recorded command, and @kbd{M-n} replaces it with the next later command.
+After finding the desired previous command, you can edit its expression
+and then resubmit it by typing @key{RET}.  Any editing you have done on
+the command to be repeated is lost if you use @kbd{M-n} or @kbd{M-p}.
+
address@hidden and @kbd{M-p} are specially defined within @kbd{C-x @key{ESC}
address@hidden to run the commands @code{previous-history-element} and
address@hidden
+
address@hidden command-history
+  The list of previous commands using the minibuffer is stored as a Lisp
+list in the variable @code{command-history}.  Each element of the list
+is a Lisp expression which describes one command and its arguments.
+Lisp programs can reexecute a command by feeding the corresponding
address@hidden element to @code{eval}.
+
address@hidden M-x, Help, Minibuffer, Top
address@hidden Running Commands by Name
+
+  The Emacs commands that are used often or that must be quick to type are
+bound to keys---short sequences of characters---for convenient use.  Other
+Emacs commands that are used more rarely are not bound to keys; to run
+them, you must refer to them by name.
+
+  A command name consists, by convention, of one or more words,
+separated by hyphens: for example, @code{auto-fill-mode} or
address@hidden  The use of English words makes the command name
+easier to remember than a key made up of obscure characters, even though
+it results in more characters to type.  You can run any command by name,
+even if it can be run by keys as well. 
+
address@hidden M-x
address@hidden minibuffer
+ To run a command by name, start with @kbd{M-x}, then type the
+command name, and finish with @key{RET}.  @kbd{M-x} uses the minibuffer
+to read the command name.  @key{RET} exits the minibuffer and runs the
+command.
+
+  Emacs uses the minibuffer for reading input for many different purposes;
+on this occasion, the string @samp{M-x} is displayed at the beginning of
+the minibuffer as a @dfn{prompt} to remind you that your input should be
+the name of a command to be run.  @xref{Minibuffer}, for full information
+on the features of the minibuffer.
+
+  You can use completion to enter a command name.  For example, to
+invoke the command @code{forward-char}, type:
+
address@hidden
+M-x forward-char @key{RET}
address@hidden example
+or
address@hidden
+M-x fo @key{TAB} c @key{RET}
address@hidden example
+
address@hidden
+After you type in @code{M-x fo TAB} emacs will give you a possible list of 
+completions from which you can choose. Note that @code{forward-char} is the 
+same command that you invoke with the key @kbd{C-f}.  You can call any 
+command (interactively callable function) defined in Emacs by its name 
+using @kbd{M-x} regardless of whether or not any keys are bound to it.
+
+  If you type @kbd{C-g} while Emacs reads the command name, you cancel
+the @kbd{M-x} command and get out of the minibuffer, ending up at top level.
+
+  To pass a numeric argument to a command you are invoking with
address@hidden, specify the numeric argument before the @kbd{M-x}.  @kbd{M-x}
+passes the argument along to the function that it calls.  The argument
+value appears in the prompt while the command name is being read.
+
address@hidden interactive
+You can use the command @code{M-x interactive} to specify a way of
+parsing arguments for interactive use of a function.  For example, write:
+
address@hidden
+  (defun foo (arg) "Doc string" (interactive "p") ...use arg...)
address@hidden example
+
+to make @code{arg} be the prefix argument when @code{foo} is called as a
+command.  The call to @code{interactive} is actually a declaration
+rather than a function; it tells @code{call-interactively} how to read
+arguments to pass to the function.  When actually called, @code{interactive}
+returns @code{nil}.
+
+The argument of @var{interactive} is usually a string containing a code
+letter followed by a prompt.  Some code letters do not use I/O to get
+the argument and do not need prompts.  To prompt for multiple arguments,
+you must provide a code letter, its prompt, a newline, and another code
+letter, and so forth.  If the argument is not a string, it is evaluated 
+to get a list of arguments to pass to the function.  If you do not provide an
+argument to @code{interactive}, no arguments are passed when calling
+interactively.
+
+Available code letters are:
+
address@hidden @code
address@hidden a
+Function name: symbol with a function definition
address@hidden b
+Name of existing buffer
address@hidden B
+Name of buffer, possibly nonexistent
address@hidden c
+Character
address@hidden C
+Command name: symbol with interactive function definition
address@hidden d
+Value of point as number (does not do I/O)
address@hidden D
+Directory name
address@hidden e
+Last mouse event
address@hidden f
+Existing file name
address@hidden F
+Possibly nonexistent file name
address@hidden k
+Key sequence (string)
address@hidden m
+Value of mark as number (does not do I/O)
address@hidden n
+Number read using minibuffer
address@hidden N
+Prefix arg converted to number, or if none, do like code @code{n}
address@hidden p
+Prefix arg converted to number (does not do I/O)
address@hidden P
+Prefix arg in raw form (does not do I/O)
address@hidden r
+Region: point and mark as two numeric arguments, smallest first (does
+not do I/O)
address@hidden s
+Any string
address@hidden S
+Any symbol
address@hidden v
+Variable name: symbol that is @code{user-variable-p}
address@hidden x
+Lisp expression read but not evaluated
address@hidden X
+Lisp expression read and evaluated
address@hidden table
+
+In addition, if the string begins with @samp{*}, an error is
+signaled if the buffer is read-only.  This happens before reading any
+arguments.  If the string begins with @samp{@@}, the window the mouse is
+over is selected before anything else is done.  You may use both
address@hidden@@} and @samp{*}; they are processed in the order that they 
appear.
+
+Normally, when describing a command that is run by name, we omit the
address@hidden that is needed to terminate the name.  Thus we may refer to
address@hidden auto-fill-mode} rather than @kbd{M-x auto-fill-mode} @key{RET}.
+We mention the @key{RET} only when it is necessary to emphasize its
+presence, for example, when describing a sequence of input that contains
+a command name and arguments that follow it.
+
address@hidden execute-extended-command
+  @kbd{M-x} is defined to run the command @code{execute-extended-command},
+which is responsible for reading the name of another command and invoking
+it.
+
address@hidden Help, Mark, M-x, Top
address@hidden Help
address@hidden Help
address@hidden help
address@hidden self-documentation
address@hidden help-command
address@hidden C-h
address@hidden F1
+
+  XEmacs provides extensive help features accessible through a single
+character, @kbd{C-h}.  @kbd{C-h} is a prefix key that is used only for
+documentation-printing commands.  The characters that you can type after
address@hidden are called @dfn{help options}.  One help option is @kbd{C-h};
+that is how you ask for help about using @kbd{C-h}.  To cancel, type
address@hidden  The function key @key{F1} is equivalent to @kbd{C-h}.
+
address@hidden C-h C-h
address@hidden help-for-help
+  @kbd{C-h C-h} (@code{help-for-help}) displays a list of the possible
+help options, and then asks you to type the desired option.  It prompts
+with the string:
+
address@hidden
+A B C F I K L M N P S T V W C-c C-d C-f C-i C-k C-n C-w;  ? for more help:
address@hidden smallexample
+
address@hidden
+You should type one of those characters.
+
+  Typing a third @kbd{C-h} displays a description of what the options mean;
+Emacs still waits for you to type an option.  To cancel, type @kbd{C-g}.
+
+  Most help buffers use a special major mode, Help mode, which lets you
+scroll conveniently with @key{SPC} and @key{DEL} or @key{BS}.
+
address@hidden
+* Help Summary::       Brief list of all Help commands.
+* Key Help::           Asking what a key does in XEmacs.
+* Name Help::          Asking about a command, variable or function name.
+* Apropos::            Asking what pertains to a given topic.
+* Library Keywords::   Finding Lisp libraries by keywords (topics).
+* Help Mode::           Special features of Help mode and Help buffers.
+* Misc Help::          Other help commands.
address@hidden menu
+
address@hidden Help Summary, Key Help, Help, Help
address@hidden Help Summary
+
+  Here is a summary of the defined help commands.
+
address@hidden @kbd
address@hidden C-h a @var{regexp} @key{RET}
+Display a list of functions and variables whose names match @var{regexp}
+(@code{hyper-apropos}).
address@hidden C-h A @var{regexp}
+Show all commands whose names contain matches for @var{regexp}
+(@code{command-apropos}).
address@hidden C-h b
+Display a table of all key bindings currently in effect, with local
+bindings of the current major mode first, followed by all global
+bindings (@code{describe-bindings}).
address@hidden C-h c @var{key}
+Print the name of the command that @var{key} runs
+(@code{describe-key-briefly}).  Here @kbd{c} stands for `character'.  For more
+extensive information on @var{key}, use @kbd{C-h k}.
address@hidden C-h d @var{function} @key{RET}
address@hidden C-h f @var{function} @key{RET}
+Display documentation on the Lisp function named @var{function}
+(@code{describe-function}).  Since commands are Lisp functions,
+a command name may be used.
address@hidden C-h i
+Run Info, the program for browsing documentation files (@code{info}).
+The complete XEmacs manual is available online in Info.
address@hidden C-h k @var{key}
+Display the name and documentation of the command that @var{key} runs
+(@code{describe-key}).
address@hidden C-h l
+Display a description of the last 100 characters you typed
+(@code{view-lossage}).
address@hidden C-h m
+Display documentation of the current major mode (@code{describe-mode}).
address@hidden C-h n
address@hidden C-h C-n
+Display documentation of XEmacs changes, most recent first
+(@code{view-emacs-news}).
address@hidden C-h p
+Find packages by topic keyword (@code{finder-by-keyword}).
address@hidden C-h C-p
+Display a table of all mouse bindings currently in effect now, with
+local bindings of the current major mode first, followed by all global
+bindings (@code{describe-pointer}).
address@hidden C-h s
+Display current contents of the syntax table, plus an explanation of
+what they mean (@code{describe-syntax}).  @xref{Syntax}.
address@hidden C-h t
+Enter the XEmacs interactive tutorial (@code{help-with-tutorial}).
address@hidden C-h v @var{var} @key{RET}
+Display the documentation of the Lisp variable @var{var}
+(@code{describe-variable}).
address@hidden C-h w @var{command} @key{RET}
+Print which keys run the command named @var{command} (@code{where-is}).
address@hidden C-h B @key{RET}
+Display info on how to deal with Beta versions of XEmacs
+(@code{describe-beta}).
address@hidden C-h C @var{group} @key{RET}
+Select customization buffer for @var{group} (@code{customize}).
address@hidden C-h F @key{RET}
+View the local copy of the XEmacs FAQ (@code{xemacs-local-faq}).
address@hidden C-h C-i @var{file} @key{RET}
+Read Info file @var{file} with Info browser (@code{Info-query}).
address@hidden C-h C-c @var{command} @key{RET}
+Look up an Emacs command @var{command} in the Emacs manual in the Info
+system (@code{Info-goto-emacs-command-node}).
address@hidden C-h C-f @var{function} @key{RET}
+Look up an Emacs Lisp function @var{function} in the Elisp manual in the
+Info system (@code{Info-elisp-ref}).
address@hidden table
+
address@hidden Key Help, Name Help, Help Summary, Help
address@hidden Documentation for a Key
+
address@hidden C-h c
address@hidden describe-key-briefly
+  The most basic @kbd{C-h} options are @kbd{C-h c}
+(@code{describe-key-briefly}) and @address@hidden k}} (@code{describe-key}).
address@hidden c @var{key}} prints in the echo area the name of the command
+that @var{key} is bound to.  For example, @kbd{C-h c C-f} prints
address@hidden  Since command names are chosen to describe what
+the commands do, this is a good way to get a very brief description of
+what @var{key} does.
+
address@hidden C-h k
address@hidden describe-key
+  @kbd{C-h k @var{key}} is similar to @kbd{C-h c} but gives more
+information.  It displays the documentation string of the function
address@hidden is bound to as well as its name.  @var{key} is a string or
+vector of events.  When called interactively, @var{key} may also be a menu
+selection.  This information does not usually fit into the echo area, so a
+window is used for the display.
+
+  @kbd{C-h c} and @kbd{C-h k} work for any sort of key sequences,
+including function keys and mouse events.
+
address@hidden Name Help, Apropos, Key Help, Help
address@hidden Help by Command or Variable Name
+
address@hidden C-h f
address@hidden describe-function
address@hidden describe-function-show-arglist
+  @kbd{C-h f} (@code{describe-function}) reads the name of a Lisp
+function using the minibuffer, then displays that function's
+documentation string in a window.  Since commands are Lisp functions,
+you can use the argument @var{function} to get the documentation of a
+command that you know by name.  For example,
+
address@hidden
+C-h f auto-fill-mode @key{RET}
address@hidden example
+
address@hidden
+displays the documentation for @code{auto-fill-mode}. Using @kbd{C-h f}
+is the only way to see the documentation of a command that is not bound
+to any key, that is, a command you would normally call using @kbd{M-x}.
+If the variable @code{describe-function-show-arglist} is @code{t},
address@hidden shows its arglist if the @var{function} is not
+an autoload function.
+
+  @kbd{C-h f} is also useful for Lisp functions that you are planning to
+use in a Lisp program.  For example, if you have just written the
+expression @code{(make-vector len)} and want to make sure you are using
address@hidden properly, type @kbd{C-h f make-vector @key{RET}}.
+Because @kbd{C-h f} allows all function names, not just command names,
+you may find that some of your favorite abbreviations that work in
address@hidden don't work in @kbd{C-h f}.  An abbreviation may be unique
+among command names, yet fail to be unique when other function names are
+allowed.
+
+  The function name for @kbd{C-h f} to describe has a default which is
+used if you type @key{RET} leaving the minibuffer empty.  The default is
+the function called by the innermost Lisp expression in the buffer
+around point, @emph{provided} that is a valid, defined Lisp function
+name.  For example, if point is located following the text
address@hidden(make-vector (car x)}, the innermost list containing point is the
+one that starts with @samp{(make-vector}, so the default is to describe the
+function @code{make-vector}.
+
+  @kbd{C-h f} is often useful just to verify that you have the right
+spelling for the function name.  If @kbd{C-h f} mentions a name from the
+buffer as the default, that name must be defined as a Lisp function.  If
+that is all you want to know, just type @kbd{C-g} to cancel the @kbd{C-h
+f} command, then go on editing.
+
address@hidden C-h w
address@hidden where-is
+  @kbd{C-h w @var{command} @key{RET}} (@code{where-is}) tells you what
+keys are bound to @var{command}.  It prints a list of the keys in the
+echo area. Alternatively, it informs you that a command is not bound to
+any keys, which implies that you must use @kbd{M-x} to call the
+command.
+
address@hidden C-h v
address@hidden describe-variable
+  @kbd{C-h v} (@code{describe-variable}) is like @kbd{C-h f} but
+describes Lisp variables instead of Lisp functions.  Its default is the
+Lisp symbol around or before point, if that is the name of a known Lisp
+variable.  @xref{Variables}.
+
address@hidden Apropos, Library Keywords, Name Help, Help
address@hidden Apropos
+
address@hidden C-h A
address@hidden command-apropos
address@hidden apropos
+
address@hidden @kbd
address@hidden C-h A
+Show only symbols that are names of commands
+(@code{command-apropos}).
+
address@hidden M-x apropos @var{regexp}
+Show all symbols whose names contain matches for @var{regexp}.
address@hidden table
+
+  A more sophisticated sort of question to ask is, ``What are the
+commands for working with files?''  To ask this question, type @kbd{C-h
+a file @key{RET}}, which displays a list of all command names that
+contain @samp{file}, including @code{copy-file}, @code{find-file}, and
+so on.  With each command name appears a brief description of how to use
+the command, and what keys you can currently invoke it with.  For
+example, it would say that you can invoke @code{find-file} by typing
address@hidden C-f}.  The @kbd{A} in @kbd{C-h A} stands for `Apropos';
address@hidden A} runs the command @code{command-apropos}.  This command
+normally checks only commands (interactive functions); if you specify a
+prefix argument, it checks noninteractive functions as well.
+
+  Because @kbd{C-h A} looks only for functions whose names contain the
+string you specify, you must use ingenuity in choosing the string.  If
+you are looking for commands for killing backwards and @kbd{C-h a
+kill-backwards @key{RET}} doesn't reveal any, don't give up.  Try just
address@hidden, or just @kbd{backwards}, or just @kbd{back}.  Be persistent.
+Pretend you are playing Adventure.  Also note that you can use a regular
+expression as the argument, for more flexibility (@pxref{Regexps}).
+
+  Here is a set of arguments to give to @kbd{C-h a} that covers many
+classes of XEmacs commands, since there are strong conventions for
+naming the standard XEmacs commands.  By giving you a feel for the
+naming conventions, this set should also serve to aid you in developing
+a technique for picking @code{apropos} strings.
+
address@hidden
+char, line, word, sentence, paragraph, region, page, sexp, list, defun,
+rect, buffer, frame, window, face, file, dir, register, mode, beginning,
+end, forward, backward, next, previous, up, down, search, goto, kill,
+delete, mark, insert, yank, fill, indent, case, change, set, what, list,
+find, view, describe, default.
address@hidden quotation
+
address@hidden apropos
+  To list all Lisp symbols that contain a match for a regexp, not just
+the ones that are defined as commands, use the command @kbd{M-x apropos}
+instead of @kbd{C-h A}.  This command does not check key bindings by
+default; specify a numeric argument if you want it to check them.
+
address@hidden apropos-documentation
+  The @code{apropos-documentation} command is like @code{apropos} except
+that it searches documentation strings for matches for the specified
+regular expression.
+
address@hidden apropos-value
+  The @code{apropos-value} command is like @code{apropos} except that it
+searches symbols' values for matches for the specified regular
+expression.  This command does not check function definitions or
+property lists by default; specify a numeric argument if you want it to
+check them.
+
address@hidden apropos-do-all
+  If the variable @code{apropos-do-all} is address@hidden, the commands
+above all behave as if they had been given a prefix argument.
+
+  If you want more information about a function definition, variable or
+symbol property listed in the Apropos buffer, you can click on it with
address@hidden or move there and type @key{RET}.
+
address@hidden Library Keywords, Help Mode, Apropos, Help
address@hidden Keyword Search for Lisp Libraries
+
address@hidden C-h p
address@hidden finder-by-keyword
+The @kbd{C-h p} command lets you search the standard Emacs Lisp
+libraries by topic keywords.  Here is a partial list of keywords you can
+use:
+
address@hidden
+abbrev        abbreviation handling, typing shortcuts, macros
+bib           code related to the `bib' bibliography processor
+c             C, C++, and Objective-C language support
+calendar      calendar and time management support
+comm          communications, networking, remote access to files
+data          support for editing files of data
+docs          support for Emacs documentation
+dumped        files preloaded into Emacs
+emulations    emulations of other editors
+extensions    Emacs Lisp language extensions
+faces         support for multiple fonts
+frames        support for Emacs frames and window systems
+games         games, jokes and amusements
+hardware      support for interfacing with exotic hardware
+help          support for on-line help systems
+hypermedia    support for links between text or other media types
+i18n          internationalization and alternate character-set support
+internal      code for Emacs internals, build process, defaults
+languages     specialized modes for editing programming languages
+lisp          Lisp support, including Emacs Lisp
+local         code local to your site
+maint         maintenance aids for the Emacs development group
+mail          modes for electronic-mail handling
+matching      various sorts of searching and matching
+mouse         mouse support
+mule          multi-language extensions
+news          support for netnews reading and posting
+oop           support for object-oriented programming
+outlines      support for hierarchical outlining
+processes     process, subshell, compilation, and job control support
+terminals     support for terminal types
+tex           code related to the TeX formatter
+tools         programming tools
+unix          front-ends/assistants for, or emulators of, UNIX features
+vms           support code for vms
+wp            word processing
address@hidden display
+
address@hidden Help Mode, Misc Help, Library Keywords, Help
address@hidden Help Mode Commands
+
+  Help buffers provide the commands of View mode (@pxref{Misc File
+Ops}), plus a few special commands of their own.
+
address@hidden @kbd
address@hidden @key{SPC}
+Scroll forward.
address@hidden @key{DEL}
address@hidden @key{BS}
+Scroll backward.
address@hidden @item @key{RET}
address@hidden Follow a cross reference at point.
address@hidden @item @key{TAB}
address@hidden Move point forward to the next cross reference.
address@hidden @item address@hidden
address@hidden Move point back to the previous cross reference.
address@hidden @item Mouse-2
address@hidden Follow a cross reference that you click on.
address@hidden table
+
+  When a command name (@pxref{M-x,, Running Commands by Name}) or
+variable name (@pxref{Variables}) appears in the documentation, it
+normally appears inside paired single-quotes.
+
address@hidden Misc Help,  , Help Mode, Help
address@hidden Other Help Commands
+
address@hidden C-h i
address@hidden info
address@hidden Info
address@hidden manuals, on-line
address@hidden on-line manuals
+  @kbd{C-h i} (@code{info}) runs the Info program, which is used for
+browsing through structured documentation files.  The entire XEmacs manual
+is available within Info.  Eventually all the documentation of the GNU
+system will be available.  Type @kbd{h} after entering Info to run
+a tutorial on using Info.
+
+  If you specify a numeric argument, @kbd{C-h i} prompts for the name of
+a documentation file.  This way, you can browse a file which doesn't
+have an entry in the top-level Info menu.  It is also handy when you
+need to get to the documentation quickly, and you know the exact name of
+the file.
+
address@hidden C-h C-f
address@hidden C-h C-k
address@hidden Info-elisp-ref
address@hidden Info-goto-emacs-command-node
+  There are two special help commands for accessing XEmacs documentation
+through Info.  @kbd{C-h C-f @var{function} @key{RET}} enters Info and
+goes straight to the documentation of the XEmacs function
address@hidden  @kbd{C-h C-k @var{key}} enters Info and goes straight
+to the documentation of the key @var{key}.  These two keys run the
+commands @code{Info-elisp-ref} and
address@hidden
+
address@hidden C-h l
address@hidden view-lossage
+  If something surprising happens, and you are not sure what commands you
+typed, use @kbd{C-h l} (@code{view-lossage}).  @kbd{C-h l} prints the last
+100 command characters you typed in.  If you see commands that you don't
+know, you can use @kbd{C-h c} to find out what they do.
+
address@hidden C-h m
address@hidden describe-mode
+  XEmacs has several major modes.  Each mode redefines a few keys and
+makes a few other changes in how editing works.  @kbd{C-h m}
+(@code{describe-mode}) prints documentation on the current major mode,
+which normally describes all the commands that are changed in this mode.
+
address@hidden C-h b
address@hidden describe-bindings
+  @kbd{C-h b} (@code{describe-bindings}) and @kbd{C-h s}
+(@code{describe-syntax}) present information about the current XEmacs
+mode that is not covered by @kbd{C-h m}.  @kbd{C-h b} displays a list of
+all the key bindings currently in effect, with the local bindings of the
+current major mode first, followed by the global bindings (@pxref{Key
+Bindings}).  @kbd{C-h s} displays the contents of the syntax table with
+explanations of each character's syntax (@pxref{Syntax}).
+
+  You can get a similar list for a particular prefix key by typing
address@hidden after the prefix key.  (There are a few prefix keys for which
+this does not work---those that provide their own bindings for
address@hidden  One of these is @key{ESC}, because @address@hidden C-h} is
+actually @kbd{C-M-h}, which marks a defun.)
+
address@hidden C-h F
address@hidden xemacs-local-faq
address@hidden C-h n
address@hidden view-emacs-news
address@hidden C-h t
address@hidden help-with-tutorial
address@hidden C-h C-c
address@hidden describe-copying
address@hidden C-h C-d
address@hidden describe-distribution
address@hidden C-h C-w
address@hidden describe-no-warranty
+  The other @kbd{C-h} options display various files of useful
+information.  @kbd{C-h C-w} (@code{describe-no-warranty}) displays the
+full details on the complete absence of warranty for XEmacs.  @kbd{C-h
+n} (@code{view-emacs-news}) displays the file @file{xemacs/etc/NEWS},
+which contains documentation on XEmacs changes arranged chronologically.
address@hidden F} (@code{xemacs-local-faq}) displays local version of the
+XEmacs frequently-answered-questions-list.  @kbd{C-h t}
+(@code{help-with-tutorial}) displays the learn-by-doing XEmacs
+tutorial. @kbd{C-h C-c} (@code{describe-copying}) displays the file
address@hidden/etc/COPYING}, which tells you the conditions you must obey
+in distributing copies of XEmacs.  @kbd{C-h C-d}
+(@code{describe-distribution}) displays another file named
address@hidden/etc/DISTRIB}, which tells you how you can order a copy of
+the latest version of XEmacs.
+
address@hidden Mark, Mouse Selection, Help, Top
address@hidden Selecting Text
address@hidden mark
address@hidden region
+
+  Many Emacs commands operate on an arbitrary contiguous
+part of the current buffer. You can select text in two ways:
+
address@hidden @bullet
address@hidden
+You use special keys to select text by defining a region between point
+and the mark. 
address@hidden
+If you are running XEmacs under X, you can also select text
+with the mouse. 
address@hidden itemize
+
address@hidden The Mark and the Region
+ To specify the text for a command to operate on, set @dfn{the
+mark} at one end of it, and move point to the other end.  The text
+between point and the mark is called @dfn{the region}.  You can move
+point or the mark to adjust the boundaries of the region.  It doesn't
+matter which one is set first chronologically, or which one comes
+earlier in the text.
+  
+  Once the mark has been set, it remains until it is set again at
+another place.  The mark remains fixed with respect to the preceding
+character if text is inserted or deleted in a buffer.  Each Emacs
+buffer has its own mark; when you return to a buffer that had been
+selected previously, it has the same mark it had before.
+
+  Many commands that insert text, such as @kbd{C-y} (@code{yank}) and
address@hidden insert-buffer}, position the mark at one end of the inserted
+text---the opposite end from where point is positioned, so that the region
+contains the text just inserted.
+
+  Aside from delimiting the region, the mark is useful for marking
+a spot that you may want to go back to.  To make this feature more useful,
+Emacs remembers 16 previous locations of the mark in the @code{mark ring}.
+
address@hidden
+* Setting Mark::       Commands to set the mark.
+* Using Region::       Summary of ways to operate on contents of the region.
+* Marking Objects::    Commands to put region around textual units.
+* Mark Ring::          Previous mark positions saved so you can go back there.
address@hidden menu
+
address@hidden Setting Mark, Using Region, Mark, Mark
address@hidden Setting the Mark
+
+  Here are some commands for setting the mark:
+
address@hidden WideCommands
address@hidden @kbd
address@hidden address@hidden
+Set the mark where point is (@code{set-mark-command}).
address@hidden C-@@
+The same.
address@hidden C-x C-x
+Interchange mark and point (@code{exchange-point-and-mark}).
address@hidden C-<
+Pushes a mark at the beginning of the buffer.
address@hidden C->
+Pushes a mark at the end of the buffer.
address@hidden table
+
+  For example, to convert part of the buffer to all
+upper-case, you can use the @kbd{C-x C-u} (@code{upcase-region})
+command, which operates on the text in the region.  First go to the
+beginning of the text you want to capitalize and type @address@hidden to
+put the mark there, then move to the end, and then type @kbd{C-x C-u} to
+capitalize the selected region.  You can also set the mark at the end of the
+text, move to the beginning, and then type @kbd{C-x C-u}.  Most commands
+that operate on the text in the region have the word @code{region} in
+their names.
+
address@hidden C-SPC
address@hidden set-mark-command
+  The most common way to set the mark is with the @address@hidden
+command (@code{set-mark-command}).  This command sets the mark where
+point is. You can then move point away, leaving the mark behind.  It is
+actually incorrect to speak of the character @address@hidden; there is
+no such character.  When you type @key{SPC} while holding down
address@hidden, you get the character @kbd{C-@@} on most terminals. This
+character is actually bound to @code{set-mark-command}.  But unless you are
+unlucky enough to have a terminal where typing @address@hidden does
+not produce @kbd{C-@@}, you should think of this character as
address@hidden@key{SPC}}.
+
address@hidden C-x C-x
address@hidden exchange-point-and-mark
+  Since terminals have only one cursor, Emacs cannot show you where the
+mark is located. Most people use the mark soon after they set it, before
+they forget where it is. But you can see where the mark is with the
+command @kbd{C-x C-x} (@code{exchange-point-and-mark}) which puts the
+mark where point was and point where the mark was.  The extent of the
+region is unchanged, but the cursor and point are now at the previous
+location of the mark. 
+
address@hidden C-<
address@hidden C->
address@hidden mark-beginning-of-buffer
address@hidden mark-end-of-buffer
+ Another way to set the mark is to push the mark to the beginning of a
+buffer while leaving point at its original location. If you supply an
+argument to @kbd{C-<} (@code{mark-beginning-of-buffer}), the mark is pushed
address@hidden/10 of the way from the true beginning of the buffer. You can
+also set the mark at the end of a buffer with @kbd{C->}
+(@code{mark-end-of-buffer}). It pushes the mark to the end of the buffer, 
+leaving point alone. Supplying an argument to the command pushes the mark
address@hidden/10 of the way from the true end of the buffer.
+
+If you are using XEmacs under the X window system, you can set
+the variable @code{zmacs-regions} to @code{t}. This makes the current
+region (defined by point and mark) highlight and makes it available as
+the X clipboard selection, which means you can use the menu bar items on
+it.  @xref{Active Regions}, for more information.
+ 
+  @kbd{C-x C-x} is also useful when you are satisfied with the location of
+point but want to move the mark; do @kbd{C-x C-x} to put point there and
+then you can move it.  A second use of @kbd{C-x C-x}, if necessary, puts
+the mark at the new location with point back at its original location.
+
address@hidden Using Region, Marking Objects, Setting Mark, Mark
address@hidden Operating on the Region
+
+  Once you have created an active region, you can do many things to
+the text in it:
address@hidden @bullet
address@hidden
+Kill it with @kbd{C-w} (@pxref{Killing}).
address@hidden
+Save it in a register with @kbd{C-x r s} (@pxref{Registers}).
address@hidden
+Save it in a buffer or a file (@pxref{Accumulating Text}).
address@hidden
+Convert case with @kbd{C-x C-l} or @kbd{C-x C-u} @*(@pxref{Case}).
address@hidden
+Evaluate it as Lisp code with @kbd{M-x eval-region} (@pxref{Lisp Eval}).
address@hidden
+Fill it as text with @kbd{M-q} (@pxref{Filling}).
address@hidden
+Print hardcopy with @kbd{M-x print-region} (@pxref{Hardcopy}).
address@hidden
+Indent it with @kbd{C-x @key{TAB}} or @kbd{C-M-\} (@pxref{Indentation}).
address@hidden itemize
+
address@hidden Marking Objects, Mark Ring, Using Region, Mark
address@hidden Commands to Mark Textual Objects
+
+  There are commands for placing point and the mark around a textual
+object such as a word, list, paragraph or page.
+ 
address@hidden @kbd
address@hidden M-@@
+Set mark after end of next word (@code{mark-word}).  This command and
+the following one do not move point.
address@hidden C-M-@@
+Set mark after end of next Lisp expression (@code{mark-sexp}).
address@hidden M-h
+Put region around current paragraph (@code{mark-paragraph}).
address@hidden C-M-h
+Put region around current Lisp defun (@code{mark-defun}).
address@hidden C-x h
+Put region around entire buffer (@code{mark-whole-buffer}).
address@hidden C-x C-p
+Put region around current page (@code{mark-page}).
address@hidden table
+
address@hidden M-@@
address@hidden C-M-@@
address@hidden mark-word
address@hidden mark-sexp
address@hidden@@} (@code{mark-word}) puts the mark at the end of the next word,
+while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the next Lisp
+expression. These characters sometimes save you some typing.
+
address@hidden M-h
address@hidden C-M-h
address@hidden C-x C-p
address@hidden C-x h
address@hidden mark-paragraph
address@hidden mark-defun
address@hidden mark-page
address@hidden mark-whole-buffer
+   A number of commands are available that set both point and mark and
+thus delimit an object in the buffer.  @kbd{M-h} (@code{mark-paragraph})
+moves point to the beginning of the paragraph that surrounds or follows
+point, and puts the mark at the end of that paragraph
+(@pxref{Paragraphs}).  You can then indent, case-convert, or kill the
+whole paragraph.  In the same fashion, @kbd{C-M-h} (@code{mark-defun})
+puts point before and the mark after the current or following defun
+(@pxref{Defuns}).  @kbd{C-x C-p} (@code{mark-page}) puts point before
+the current page (or the next or previous, depending on the argument),
+and mark at the end (@pxref{Pages}).  The mark goes after the
+terminating page delimiter (to include it), while point goes after the
+preceding page delimiter (to exclude it).  Finally, @kbd{C-x h}
+(@code{mark-whole-buffer}) sets up the entire buffer as the region by
+putting point at the beginning and the mark at the end.
+
address@hidden Mark Ring,, Marking Objects, Mark
address@hidden The Mark Ring
+
address@hidden C-u C-SPC
address@hidden mark ring
address@hidden C-u C-@@
+  Aside from delimiting the region, the mark is also useful for marking
+a spot that you may want to go back to.  To make this feature more
+useful, Emacs remembers 16 previous locations of the mark in the
address@hidden ring}.  Most commands that set the mark push the old mark onto
+this ring.  To return to a marked location, use @kbd{C-u address@hidden
+(or @kbd{C-u C-@@}); this is the command @code{set-mark-command} given a
+numeric argument.  The command moves point to where the mark was, and
+restores the mark from the ring of former marks. Repeated use of this
+command moves point to all the old marks on the ring, one by one.
+The marks you have seen go to the end of the ring, so no marks are lost.
+
+  Each buffer has its own mark ring.  All editing commands use the current
+buffer's mark ring.  In particular, @kbd{C-u address@hidden always stays in
+the same buffer.
+
+  Many commands that can move long distances, such as @kbd{M-<}
+(@code{beginning-of-buffer}), start by setting the mark and saving the
+old mark on the mark ring.  This makes it easier for you to move back
+later.  Searches set the mark, unless they do not actually move point.
+When a command sets the mark, @samp{Mark Set} is printed in the
+echo area.
+
address@hidden mark-ring-max
+  The variable @code{mark-ring-max} is the maximum number of entries to
+keep in the mark ring.  If that many entries exist and another entry is
+added, the last entry in the list is discarded.  Repeating @kbd{C-u
address@hidden circulates through the entries that are currently in the
+ring.
+
address@hidden mark-ring
+  The variable @code{mark-ring} holds the mark ring itself, as a list of
+marker objects in the order most recent first.  This variable is local
+in every buffer.
+
address@hidden Mouse Selection, Additional Mouse Operations, Mark, Top
address@hidden  node-name,  next,  previous,  up
address@hidden Selecting Text with the Mouse
address@hidden mouse selection
+
address@hidden pointer shapes
+  If you are using XEmacs under X, you can use the mouse pointer
+to select text. (The normal mouse pointer is an I-beam, the same
+pointer that @code{xterm} uses.)
+
address@hidden modeline-pointer-glyph
address@hidden nontext-pointer-glyph
address@hidden text-pointer-glyph
+The glyph variable @code{text-pointer-glyph} controls the shape of
+the mouse pointer when over text.  You can also control the shape
+of the mouse pointer when over nontext using @code{nontext-pointer-glyph},
+and the shape of the mouse pointer when over the modeline using
address@hidden (Remember, you should use
address@hidden, not @code{setq}, to set one of these
+variables.)
+
address@hidden pointer face
+If you want to get fancy, you can set the foreground and background
+colors of the mouse pointer by setting the @code{pointer} face.
+
+There are two ways to select a region of text with the mouse:
+
+  To select a word in text, double-click with the left mouse button
+while the mouse cursor is over the word.  The word is highlighted when
+selected. On monochrome monitors, a stippled background indicates that a
+region of text has been highlighted. On color monitors, a color
+background indicates highlighted text. You can triple-click to select
+whole lines. 
+
+To select an arbitrary region of text:
+
address@hidden
address@hidden
+Move the mouse cursor over the character at the beginning of the region of
+text you want to select.
address@hidden
+Press and hold the left mouse button. 
address@hidden
+While holding the left mouse button down, drag the cursor to the
+character at the end of the region of text you want to select.
address@hidden
+Release the left mouse button.
address@hidden enumerate
+The selected region of text is highlighted.
+
+  Once a region of text is selected, it becomes the primary X selection
+(@pxref{Using X Selections}) as well as the Emacs selected region. You
+can paste it into other X applications and use the options from the
address@hidden pull-down menu on it.  Since it is also the Emacs region, you
+can use Emacs region commands on it.
+
address@hidden Additional Mouse Operations, Killing, Mouse Selection, Top
address@hidden Additional Mouse Operations
address@hidden mouse operations
+
+XEmacs also provides the following mouse functions.  Most of these are
+not bound to mouse gestures by default, but they are provided for your
+customization pleasure.  For example, if you wanted @kbd{shift-left}
+(that is, holding down the @key{Shift} key and clicking the left mouse
+button) to delete the character at which you are pointing, then you
+could do this:
+
address@hidden
+(global-set-key '(shift button1) 'mouse-del-char)
address@hidden example
+
address@hidden mouse-del-char
address@hidden mouse-delete-window
address@hidden mouse-keep-one-window
address@hidden mouse-kill-line
address@hidden mouse-line-length
address@hidden mouse-scroll
address@hidden mouse-select
address@hidden mouse-select-and-split
address@hidden mouse-set-mark
address@hidden mouse-set-point
address@hidden mouse-track
address@hidden mouse-track-adjust
address@hidden mouse-track-and-copy-to-cutbuffer
address@hidden mouse-track-delete-and-insert
+
address@hidden @kbd
address@hidden mouse-del-char
+Delete the character pointed to by the mouse.
address@hidden mouse-delete-window
+Delete the Emacs window that the mouse is on.
address@hidden mouse-keep-one-window
+Select the Emacs window that the mouse is on, then delete all other
+windows on this frame.
address@hidden mouse-kill-line
+Kill the line pointed to by the mouse.
address@hidden mouse-line-length
+Print the length of the line indicated by the pointer.
address@hidden mouse-scroll
+Scroll point to the mouse position.
address@hidden mouse-select
+Select the Emacs window the mouse is on.
address@hidden mouse-select-and-split
+Select the Emacs window mouse is on, then split it vertically in half.
address@hidden mouse-set-mark
+Select the Emacs window the mouse is on and set the mark at the mouse 
+position.  Display the cursor at that position for a second.
address@hidden mouse-set-point
+Select the Emacs window that the mouse is on and move point to the
+mouse position.
address@hidden mouse-track
+Make a selection with the mouse.   This is the default binding of 
+the left mouse button (@key{button1}).
address@hidden mouse-track-adjust
+Extend the existing selection.  This is the default binding of
address@hidden
address@hidden mouse-track-and-copy-to-cutbuffer
+Make a selection like @code{mouse-track}, but also copy it to the cut buffer.
address@hidden mouse-track-delete-and-insert
+Make a selection with the mouse and insert it at point.  This is the
+default binding of @key{control-shift-button1}.
address@hidden mouse-track-insert
+Make a selection with the mouse and insert it at point.
+This is the default binding of @key{control-button1}.
address@hidden mouse-window-to-region
+Narrow a window to the region between the cursor and the mouse pointer.
address@hidden table
+
+The @kbd{M-x mouse-track} command should be bound to a mouse button.  If
+you click-and-drag, the selection is set to the region between the
+point of the initial click and the point at which you release the
+button.  These positions do not need to be ordered. 
+
+If you click-and-release without moving the mouse, the point is moved,
+and the selection is disowned (there will be no selection owner.)  The
+mark will be set to the previous position of point.
+
+If you double-click, the selection will extend by symbols instead of by
+characters.  If you triple-click, the selection will extend by lines.
+
+If you drag the mouse off the top or bottom of the window, you can
+select pieces of text that are larger than the visible part of the
+buffer; the buffer will scroll as necessary.
+
+The selected text becomes the current X selection, and is also copied to
+the top of the kill ring.  Point will be left at the position at
+which you released the button and the mark will be left at the initial
+click position.  Bind a mouse click to
address@hidden to copy selections to the cut buffer.
+(See also the @code{mouse-track-adjust} command, on @kbd{Shift-button1}.)
+
+The @kbd{M-x mouse-track-adjust} command should be bound to a mouse
+button.  The selection will be enlarged or shrunk so that the point of
+the mouse click is one of its endpoints.  This is only meaningful
+after the @code{mouse-track} command (@key{button1}) has been executed.
+
+The @kbd{M-x mouse-track-delete-and-insert} command is exactly the same
+as the @code{mouse-track} command on @key{button1}, except that point is
+not moved; the selected text is immediately inserted after being
+selected; and the text of the selection is deleted.
+
+The @kbd{M-x mouse-track-insert} command is exactly the same as the
address@hidden command on @key{button1}, except that point is not moved;
+the selected text is immediately inserted after being selected; and the
+selection is immediately disowned afterwards.
+
+
address@hidden Killing, Yanking, Additional Mouse Operations, Top
address@hidden Deletion and Killing
address@hidden delete-char
address@hidden delete-backward-char
+
address@hidden killing
address@hidden cutting
address@hidden deletion
address@hidden C-d
address@hidden DEL
+  Most commands that erase text from the buffer save it. You can get
+the text back if you change your mind, or you can move or copy it to
+other parts of the buffer.  Commands which erase text and save it in the
+kill ring are known as @dfn{kill} commands.  Some other commands erase
+text but do not save it; they are known as @dfn{delete} commands.  (This
+distinction is made only for erasing text in the buffer.)
+
+The commands' names and individual descriptions use the words
address@hidden and @samp{delete} to indicate what they do.  If you perform
+a kill or delete command by mistake, use the @kbd{C-x u} (@code{undo})
+command to undo it (@pxref{Undo}). The delete commands include @kbd{C-d}
+(@code{delete-char}) and @key{DEL} (@code{delete-backward-char}), which
+delete only one character at a time, and those commands that delete only
+spaces or newlines.  Commands that can destroy significant amounts of
+nontrivial data usually address@hidden
+
address@hidden Deletion
+
address@hidden @kbd
address@hidden C-d
+Delete next character (@code{delete-char}).
address@hidden @key{DEL}
+Delete previous character (@code{delete-backward-char}).
address@hidden M-\
+Delete spaces and tabs around point (@code{delete-horizontal-space}).
address@hidden address@hidden
+Delete spaces and tabs around point, leaving one space
+(@code{just-one-space}).
address@hidden C-x C-o
+Delete blank lines around the current line (@code{delete-blank-lines}).
address@hidden M-^
+Join two lines by deleting the intervening newline, and any indentation
+following it (@code{delete-indentation}).
address@hidden table
+
+  The most basic delete commands are @kbd{C-d} (@code{delete-char}) and
address@hidden (@code{delete-backward-char}).  @kbd{C-d} deletes the
+character after point, the one the cursor is ``on top of''.  Point
+doesn't move.  @key{DEL} deletes the character before the cursor, and
+moves point back.  You can delete newlines like any other characters in
+the buffer; deleting a newline joins two lines.  Actually, @kbd{C-d} and
address@hidden aren't always delete commands; if you give them an argument,
+they kill instead, since they can erase more than one character this
+way.
+
address@hidden M-\
address@hidden delete-horizontal-space
address@hidden M-SPC
address@hidden just-one-space
address@hidden C-x C-o
address@hidden delete-blank-lines
address@hidden M-^
address@hidden delete-indentation
+  The other delete commands delete only formatting characters: spaces,
+tabs and newlines.  @kbd{M-\} (@code{delete-horizontal-space}) deletes
+all spaces and tab characters before and after point.
address@hidden@key{SPC}} (@code{just-one-space}) does the same but leaves a
+single space after point, regardless of the number of spaces that
+existed previously (even zero).
+
+  @kbd{C-x C-o} (@code{delete-blank-lines}) deletes all blank lines after
+the current line. If the current line is blank, it deletes all blank lines
+preceding the current line as well as leaving one blank line, the current
+line.  @kbd{M-^} (@code{delete-indentation}) joins the current line and
+the previous line, or, if given an argument, joins the current line and 
+the next line by deleting a newline and all surrounding spaces, possibly
+leaving a single space.  @xref{Indentation,M-^}.
+
address@hidden Killing by Lines
+
address@hidden @kbd
address@hidden C-k
+Kill rest of line or one or more lines (@code{kill-line}).
address@hidden table
+
address@hidden C-k
address@hidden kill-line
+  The simplest kill command is @kbd{C-k}.  If given at the beginning of
+a line, it kills all the text on the line, leaving the line blank.  If
+given on a blank line, the blank line disappears.  As a consequence, a
+line disappears completely if you go to the front of a non-blank line
+and type @kbd{C-k} twice.
+
+  More generally, @kbd{C-k} kills from point up to the end of the line,
+unless it is at the end of a line.  In that case, it kills the newline
+following the line, thus merging the next line into the current one.
+Emacs ignores invisible spaces and tabs at the end of the line when deciding
+which case applies: if point appears to be at the end of the line, you
+can be sure the newline will be killed.
+
+  If you give @kbd{C-k} a positive argument, it kills that many lines
+and the newlines that follow them (however, text on the current line
+before point is not killed).  With a negative argument, @kbd{C-k} kills
+back to a number of line beginnings.  An argument of @minus{}2 means
+kill back to the second line beginning.  If point is at the beginning of
+a line, that line beginning doesn't count, so @kbd{C-u - 2 C-k} with
+point at the front of a line kills the two previous lines.
+
+  @kbd{C-k} with an argument of zero kills all the text before point on the
+current line.
+
address@hidden Other Kill Commands
address@hidden kill-region
address@hidden kill-word
address@hidden backward-kill-word
address@hidden kill-sexp
address@hidden kill-sentence
address@hidden backward-kill-sentence
address@hidden M-d
address@hidden M-DEL
address@hidden C-M-k
address@hidden C-x DEL
address@hidden M-k
address@hidden C-w
+
address@hidden DoubleWideCommands
address@hidden @kbd
address@hidden C-w
+Kill region (from point to the mark) (@code{kill-region}).
address@hidden
address@hidden M-d
+Kill word (@code{kill-word}).
address@hidden address@hidden
+Kill word backwards (@code{backward-kill-word}).
address@hidden C-x @key{DEL}
+Kill back to beginning of sentence (@code{backward-kill-sentence}).
address@hidden
address@hidden M-k
+Kill to end of sentence (@code{kill-sentence}).
address@hidden C-M-k
+Kill sexp (@code{kill-sexp}).  @xref{Lists}.
address@hidden M-z @var{char}
+Kill up to next occurrence of @var{char} (@code{zap-to-char}).
address@hidden table
+
+   @kbd{C-w} (@code{kill-region}) is a very general kill command; it
+kills everything between point and the mark. You can use this command to
+kill any contiguous sequence of characters by first setting the mark at
+one end of a sequence of characters, then going to the other end and
+typing @kbd{C-w}.
+
address@hidden M-z
address@hidden zap-to-char
+  A convenient way of killing is combined with searching: @kbd{M-z}
+(@code{zap-to-char}) reads a character and kills from point up to (but not
+including) the next occurrence of that character in the buffer.  If there
+is no next occurrence, killing goes to the end of the buffer.  A numeric
+argument acts as a repeat count.  A negative argument means to search
+backward and kill text before point.
+
+  Other syntactic units can be killed: words, with @address@hidden and
address@hidden (@pxref{Words}); sexps, with @kbd{C-M-k} (@pxref{Lists}); and
+sentences, with @kbd{C-x @key{DEL}} and @kbd{M-k}
+(@pxref{Sentences})address@hidden
+
address@hidden Yanking, Using X Selections, Killing, Top
address@hidden Yanking
address@hidden moving text
address@hidden copying text
address@hidden kill ring
address@hidden yanking
address@hidden pasting
+
+  @dfn{Yanking} means getting back text which was killed. Some systems
+call this ``pasting''.  The usual way to move or copy text is to kill it
+and then yank it one or more times.
+
address@hidden @kbd
address@hidden C-y
+Yank last killed text (@code{yank}).
address@hidden M-y
+Replace re-inserted killed text with the previously killed text
+(@code{yank-pop}).
address@hidden M-w
+Save region as last killed text without actually killing it
+(@code{copy-region-as-kill}).
address@hidden C-M-w
+Append next kill to last batch of killed text (@code{append-next-kill}).
address@hidden table
+
address@hidden
+* Kill Ring::       Where killed text is stored.  Basic yanking.
+* Appending Kills:: Several kills in a row all yank together.
+* Earlier Kills::   Yanking something killed some time ago.
address@hidden menu
+
address@hidden Kill Ring, Appending Kills, Yanking, Yanking
address@hidden The Kill Ring
+
address@hidden C-y
address@hidden Yank
+  All killed text is recorded in the @dfn{kill ring}, a list of blocks of
+text that have been killed.  There is only one kill ring, used in all
+buffers, so you can kill text in one buffer and yank it in another buffer.
+This is the usual way to move text from one file to another.
+(@xref{Accumulating Text}, for some other ways.)
+
+  If you have two separate Emacs processes, you cannot use the kill ring
+to move text. If you are using XEmacs under X, however, you can
+use the X selection mechanism to move text from one to another.
+
+If you are using XEmacs under X and have one Emacs process with
+multiple frames, they do share the same kill ring.  You can kill or
+copy text in one Emacs frame, then yank it in the other frame
+belonging to the same process.
+
+  The command @kbd{C-y} (@code{yank}) reinserts the text of the most recent
+kill.  It leaves the cursor at the end of the text and sets the mark at
+the beginning of the text.  @xref{Mark}.
+
+  @kbd{C-u C-y} yanks the text, leaves the cursor in front of the text,
+and sets the mark after it, if the argument is with just a @kbd{C-u}.
+Any other argument, including @kbd{C-u} and digits, has different
+results, described below, under ``Yanking Earlier Kills''.
+
address@hidden M-w
address@hidden copy-region-as-kill
+ To copy a block of text, you can also use @kbd{M-w}
+(@code{copy-region-as-kill}), which copies the region into the kill ring
+without removing it from the buffer. @kbd{M-w} is similar to @kbd{C-w}
+followed by @kbd{C-y} but does not mark the buffer as ``modified'' and
+does not actually cut anything.
+
address@hidden Appending Kills, Earlier Kills, Kill Ring, Yanking
address@hidden Appending Kills
+
address@hidden television
+  Normally, each kill command pushes a new block onto the kill ring.
+However, two or more kill commands in a row combine their text into a
+single entry, so that a single @kbd{C-y} yanks it all back. This means
+you don't have to kill all the text you want to yank in one command; you
+can kill line after line, or word after word, until you have killed what
+you want, then get it all back at once using @kbd{C-y}. (Thus we join
+television in leading people to kill thoughtlessly.)
+
+  Commands that kill forward from point add onto the end of the previous
+killed text.  Commands that kill backward from point add onto the
+beginning.  This way, any sequence of mixed forward and backward kill
+commands puts all the killed text into one entry without rearrangement.
+Numeric arguments do not break the sequence of appending kills.  For
+example, suppose the buffer contains:
+
address@hidden
+This is the first
+line of sample text
+and here is the third.
address@hidden example
+
address@hidden
+with point at the beginning of the second line.  If you type @kbd{C-k C-u 2
address@hidden C-k}, the first @kbd{C-k} kills the text @samp{line of sample
+text}, @kbd{C-u 2 address@hidden kills @samp{the first} with the newline that
+followed it, and the second @kbd{C-k} kills the newline after the second
+line.  The result is that the buffer contains @samp{This is and here is the
+third.} and a single kill entry contains @samp{the address@hidden of
+sample address@hidden the killed text, in its original order.
+
address@hidden C-M-w
address@hidden append-next-kill
+  If a kill command is separated from the last kill command by other
+commands (not just numeric arguments), it starts a new entry on the kill
+ring.  To force a kill command to append, first type the command @kbd{C-M-w}
+(@code{append-next-kill}). @kbd{C-M-w} tells the following command,
+if it is a kill command, to append the text it kills to the last killed
+text, instead of starting a new entry.  With @kbd{C-M-w}, you can kill
+several separated pieces of text and accumulate them to be yanked back
+in one address@hidden
+
address@hidden Earlier Kills,, Appending Kills, Yanking
address@hidden Yanking Earlier Kills
+
address@hidden M-y
address@hidden yank-pop
+  To recover killed text that is no longer the most recent kill, you need
+the @kbd{Meta-y} (@code{yank-pop}) command.  You can use @kbd{M-y} only
+after a @kbd{C-y} or another @kbd{M-y}.  It takes the text previously
+yanked and replaces it with the text from an earlier kill.  To recover
+the text of the next-to-the-last kill, first use @kbd{C-y} to recover
+the last kill, then @kbd{M-y} to replace it with the previous
address@hidden
+
+  You can think in terms of a ``last yank'' pointer which points at an item
+in the kill ring.  Each time you kill, the ``last yank'' pointer moves to
+the new item at the front of the ring.  @kbd{C-y} yanks the item
+which the ``last yank'' pointer points to.  @kbd{M-y} moves the ``last
+yank'' pointer to a different item, and the text in the buffer changes to
+match.  Enough @kbd{M-y} commands can move the pointer to any item in the
+ring, so you can get any item into the buffer.  Eventually the pointer
+reaches the end of the ring; the next @kbd{M-y} moves it to the first item
+again.
+
+  Yanking moves the ``last yank'' pointer around the ring, but does not
+change the order of the entries in the ring, which always runs from the
+most recent kill at the front to the oldest one still remembered.
+
+  Use @kbd{M-y} with a numeric argument to advance the ``last
+yank'' pointer by the specified number of items.  A negative argument
+moves the pointer toward the front of the ring; from the front of the
+ring, it moves to the last entry and starts moving forward from there.
+
+  Once the text you are looking for is brought into the buffer, you can
+stop doing @kbd{M-y} commands and the text will stay there. Since the
+text is just a copy of the kill ring item, editing it in the buffer does
+not change what's in the ring.  As long you don't kill additional text,
+the ``last yank'' pointer remains at the same place in the kill ring:
+repeating @kbd{C-y} will yank another copy of the same old kill.
+
+  If you know how many @kbd{M-y} commands it would take to find the
+text you want, you can yank that text in one step using @kbd{C-y} with
+a numeric argument.  @kbd{C-y} with an argument greater than one
+restores the text the specified number of entries back in the kill
+ring.  Thus, @kbd{C-u 2 C-y} gets the next to the last block of killed
+text.  It is equivalent to @kbd{C-y M-y}.  @kbd{C-y} with a numeric
+argument starts counting from the ``last yank'' pointer, and sets the
+``last yank'' pointer to the entry that it yanks.
+
address@hidden kill-ring-max
+  The variable @code{kill-ring-max} controls the length of the kill
+ring; no more than that many blocks of killed text are saved.
+
address@hidden Using X Selections, Accumulating Text, Yanking, Top
address@hidden Using X Selections
address@hidden  node-name,  next,  previous,  up
+
+In the X window system, mouse selections provide a simple mechanism for
+text transfer between different applications.  In a typical X
+application, you can select text by pressing the left mouse button and
+dragging the cursor over the text you want to copy.  The text becomes the
+primary X selection and is highlighted.  The highlighted region is also
+the Emacs selected region.
+
address@hidden @bullet
address@hidden
+Since the region is the primary X selection, you can go to a different X
+application and click the middle mouse button: the text that you selected in
+the previous application is pasted into the current application.
address@hidden
+Since the region is the Emacs selected region, you can use all region
+commands (@kbd{C-w, M-w} etc.) as well as the options of the @b{Edit}
+menu to manipulate the selected text.
address@hidden itemize
+
address@hidden
+* X Clipboard Selection::      Pasting to the X clipboard.
+* X Selection Commands::       Other operations on the selection.
+* X Cut Buffers::              X cut buffers are available for compatibility.
+* Active Regions::             Using zmacs-style highlighting of the
+                                selected region.
address@hidden menu
+
address@hidden X Clipboard Selection, X Selection Commands, Using X Selections, 
Using X Selections
address@hidden  node-name,  next,  previous,  up
address@hidden The Clipboard Selection
address@hidden clipboard selections
+
+There are other kinds of X selections besides the @b{Primary} selection; one
+common one is the @b{Clipboard} selection.  Some applications prefer to
+transfer data using this selection in preference to the @b{Primary}.
+One can transfer text from the @b{Primary} selection to the  @b{Clipboard}
+selection with the @b{Copy} command under the @b{Edit} menu in the menubar.
+
+Usually, the clipboard selection is not visible.  However, if you run the
address@hidden application, the text most recently copied to the clipboard
+(with the @b{Copy} command) is displayed in a window.  Any time new text is
+thus copied, the @file{xclipboard} application makes a copy of it and displays
+it in its window.  The value of the clipboard can survive the lifetime of the
+running Emacs process.  The @code{xclipboard} man page provides more details.
+
+Warning: If you use the @file{xclipboard} application, remember that it
+maintains a list of all things that have been pasted to the clipboard (that
+is, copied with the @b{Copy} command).  If you don't manually delete elements
+from this list by clicking on the @b{Delete} button in the @code{xclipboard}
+window, the clipboard will eventually consume a lot of memory.
+
+In summary, some X applications (such as @file{xterm}) allow one to paste
+text in them from XEmacs in the following way:
+
address@hidden @bullet
address@hidden
+Drag out a region of text in Emacs with the left mouse button,
+making that text be the @b{Primary} selection.
+
address@hidden
+Click the middle button in the other application, pasting the @b{Primary}
+selection. 
address@hidden itemize
+
+With some other applications (notably, the OpenWindows and Motif tools) you
+must use this method instead:
+
address@hidden @bullet
address@hidden
+Drag out a region of text in Emacs with the left mouse button,
+making that text be the @b{Primary} selection.
+
address@hidden
+Copy the selected text to the @b{Clipboard} selection by selecting the
address@hidden menu item from the @b{Edit} menu, or by hitting the @b{Copy}
+key on your keyboard.
+
address@hidden
+Paste the text in the other application by selecting @b{Paste} from its
+menu, or by hitting the @b{Paste} key on your keyboard.
address@hidden itemize
+
+
address@hidden X Selection Commands, X Cut Buffers, X Clipboard Selection, 
Using X Selections
address@hidden Miscellaneous X Selection Commands
address@hidden  node-name,  next,  previous,  up
address@hidden cut buffers
address@hidden primary selections
+
address@hidden x-copy-primary-selection
address@hidden x-delete-primary-selection
address@hidden x-insert-selection
address@hidden x-kill-primary-selection
address@hidden x-mouse-kill
address@hidden x-own-secondary-selection
address@hidden x-own-selection
address@hidden x-set-point-and-insert-selection
address@hidden @kbd
address@hidden M-x x-copy-primary-selection
+Copy the primary selection to both the kill ring and the Clipboard.
address@hidden M-x x-insert-selection
+Insert the current selection into the buffer at point.
address@hidden M-x x-delete-primary-selection
+Deletes the text in the primary selection without copying it to the kill
+ring or the Clipboard.
address@hidden M-x x-kill-primary-selection
+Deletes the text in the primary selection and copies it to 
+both the kill ring and the Clipboard.
address@hidden M-x x-mouse-kill
+Kill the text between point and the mouse and copy it to 
+the clipboard and to the cut buffer.
address@hidden M-x x-own-secondary-selection
+Make a secondary X selection of the given argument. 
address@hidden M-x x-own-selection
+Make a primary X selection of the given argument.  
address@hidden M-x x-set-point-and-insert-selection
+Set point where clicked and insert the primary selection or the
+cut buffer.
address@hidden table
+
address@hidden X Cut Buffers, Active Regions, X Selection Commands, Using X 
Selections
address@hidden X Cut Buffers
address@hidden  node-name,  next,  previous,  up
+
+X cut buffers are a different, older way of transferring text between
+applications.  XEmacs supports cut buffers for compatibility
+with older programs, even though selections are now the preferred way of
+transferring text.
+
+X has a concept of applications "owning" selections.  When you select
+text by clicking and dragging inside an application, the application
+tells the X server that it owns the selection.  When another
+application asks the X server for the value of the selection, the X
+server requests the information from the owner. When you use
+selections, the selection data is not actually transferred unless
+someone wants it; the act of making a selection doesn't transfer data.
+Cut buffers are different: when you "own" a cut buffer, the data is
+actually transferred to the X server immediately, and survives the
+lifetime of the application.
+
+Any time a region of text becomes the primary selection in Emacs,
+Emacs also copies that text to the cut buffer.  This makes it possible
+to copy text from an XEmacs buffer and paste it into an older,
+non-selection-based application (such as Emacs 18).
+
+Note: Older versions of Emacs could not access the X selections, only
+the X cut buffers.
+
address@hidden Active Regions, , X Cut Buffers, Using X Selections
address@hidden Active Regions
address@hidden  node-name,  next,  previous,  up
address@hidden active regions
+
+  By default, both the text you select in an Emacs buffer using the
+click-and-drag mechanism and text you select by setting point and the
+mark is highlighted. You can use Emacs region commands as well as the
address@hidden and @b{Copy} commands on the highlighted region you selected
+with the mouse.
+
+If you prefer, you can make a distinction between text selected with the
+mouse and text selected with point and the mark by setting the variable
address@hidden to @code{nil}.  In that case:
+
address@hidden @bullet
address@hidden
+The text selected with the mouse becomes both the X selection and the
+Emacs selected region. You can use menu-bar commands as well as Emacs
+region commands on it. 
address@hidden
+The text selected with point and the mark is not highlighted. You can
+only use Emacs region commands on it, not the menu-bar items. 
address@hidden itemize
+
+  Active regions originally come from Zmacs, the Lisp Machine editor.
+The idea behind them is that commands can only operate on a region when
+the region is in an "active" state.  Put simply, you can only operate on
+a region that is highlighted.
+
address@hidden zmacs-regions
+The variable @code{zmacs-regions} checks whether LISPM-style active
+regions should be used.  This means that commands that operate on the
+region (the area between point and the mark) only work while
+the region is in the active state, which is indicated by highlighting.
+Most commands causes the region to not be in the active state;
+for example, @kbd{C-w} only works immediately after activating the
+region.
+
+More specifically:
address@hidden @bullet
address@hidden
+Commands that operate on the region only work if the region is active.
address@hidden
+Only a very small set of commands causes the region to become active---
+those commands whose semantics are to mark an area, such as @code{mark-defun}.
address@hidden
+The region is deactivated after each command that is executed, except that
+motion commands do not change whether the region is active or not.
address@hidden itemize 
+
address@hidden (@kbd{C-SPC}) pushes a mark and activates the
+region.  Moving the cursor with normal motion commands (@kbd{C-n},
address@hidden, etc.) will cause the region between point and the
+recently-pushed mark to be highlighted.  It will remain highlighted
+until some non-motion command is executed.
+
address@hidden (@kbd{C-x C-x}) activates the region.
+So if you mark a region and execute a command that operates on it, you
+can reactivate the same region with @kbd{C-x C-x} (or perhaps @kbd{C-x
+C-x C-x C-x}) to operate on it again.
+
+Generally, commands that push marks as a means of navigation, such as
address@hidden (@kbd{M-<}) and @code{end-of-buffer}
+(@kbd{M->}), do not activate the region.  However, commands that push
+marks as a means of marking an area of text, such as @code{mark-defun}
+(@kbd{M-C-h}), @code{mark-word} (@kbd{M-@@}), and @code{mark-whole-buffer}
+(@kbd{C-x h}), do activate the region.
+
+When @code{zmacs-regions} is @code{t}, there is no distinction between
+the primary X selection and the active region selected by point and the
+mark.  To see this, set the mark (@key{C-SPC}) and move the cursor
+with any cursor-motion command: the region between point and mark is
+highlighted, and you can watch it grow and shrink as you move the
+cursor.
+
+Any other commands besides cursor-motion commands (such as inserting or
+deleting text) will cause the region to no longer be active; it will no
+longer be highlighted, and will no longer be the primary selection.
+Region can be explicitly deactivated with @kbd{C-g}.
+
+Commands that require a region (such as @kbd{C-w}) signal an error if
+the region is not active.  Certain commands cause the region to be in
+its active state.  The most common ones are @code{push-mark}
+(@key{C-SPC}) and @code{exchange-point-and-mark} (@kbd{C-x C-x}).
+
address@hidden zmacs-region-stays
+When @code{zmacs-regions} is @code{t}, programs can be non-intrusive
+on the state of the region by setting the variable @code{zmacs-region-stays}
+to a address@hidden value.  If you are writing a new Emacs command that
+is conceptually a ``motion'' command and should not interfere with the
+current highlightedness of the region, then you may set this variable.
+It is reset to @code{nil} after each user command is executed.
+
address@hidden zmacs-activate-region
+When @code{zmacs-regions} is @code{t}, programs can make the region between
+point and mark go into the active (highlighted) state by using the
+function @code{zmacs-activate-region}. Only a small number of commands
+should ever do this. 
+
address@hidden zmacs-deactivate-region
+When @code{zmacs-regions} is @code{t}, programs can deactivate the region
+between point and the mark by using @code{zmacs-deactivate-region}.
+Note: you should not have to call this function; the command loop calls
+it when appropriate. 
+
address@hidden Accumulating Text, Rectangles, Using X Selections, Top
address@hidden Accumulating Text
address@hidden append-to-buffer
address@hidden prepend-to-buffer
address@hidden copy-to-buffer
address@hidden append-to-file
address@hidden copying text
address@hidden accumulating text
+
+  Usually you copy or move text by killing it and yanking it, but there are
+other ways that are useful for copying one block of text in many places, or
+for copying many scattered blocks of text into one place.
+
+  If you like, you can accumulate blocks of text from scattered
+locations either into a buffer or into a file.  The relevant commands
+are described here.  You can also use Emacs registers for storing and
+accumulating text.  @xref{Registers}.
+
address@hidden @kbd
address@hidden M-x append-to-buffer
+Append region to contents of specified buffer (@code{append-to-buffer}).
address@hidden M-x prepend-to-buffer
+Prepend region to contents of specified buffer.
address@hidden M-x copy-to-buffer
+Copy region into specified buffer, deleting that buffer's old contents.
address@hidden M-x insert-buffer
+Insert contents of specified buffer into current buffer at point.
address@hidden M-x append-to-file
+Append region to the end of the contents of specified file.
address@hidden table
+
+  To accumulate text into a buffer, use the command @kbd{M-x
+append-to-buffer}, which inserts a copy of the region into the buffer
address@hidden, at the location of point in that buffer.  If there is
+no buffer with the given name, one is created.
+
+  If you append text to a buffer that has been used for editing, the
+copied text goes to the place where point is.  Point in that buffer is
+left at the end of the copied text, so successive uses of
address@hidden accumulate the text in the specified buffer in
+the same order as they were copied.  Strictly speaking, this command does
+not always append to the text already in the buffer; but if this command
+is the only command used to alter a buffer, it does always append to the
+existing text because point is always at the end.
+
+  @kbd{M-x prepend-to-buffer} is similar to @code{append-to-buffer}, but
+point in the other buffer is left before the copied text, so successive
+prependings add text in reverse order.  @kbd{M-x copy-to-buffer} is
+similar, except that any existing text in the other buffer is deleted,
+so the buffer is left containing just the text newly copied into it.
+
+  You can retrieve the accumulated text from that buffer with @kbd{M-x
+insert-buffer}, which takes @var{buffername} as an argument.  It inserts
+a copy of the text in buffer @var{buffername} into the selected buffer.
+You could alternatively select the other buffer for editing, perhaps moving
+text from it by killing or with @code{append-to-buffer}.  @xref{Buffers}, for
+background information on buffers.
+
+  Instead of accumulating text within Emacs in a buffer, you can append
+text directly into a file with @kbd{M-x append-to-file}, which takes
address@hidden as an argument.  It adds the text of the region to the
+end of the specified file.  The file is changed immediately on disk.
+This command is normally used with files that are @i{not} being visited
+in Emacs.  Using it on a file that Emacs is visiting can produce
+confusing results, because the file's text inside Emacs does not change
+while the file itself changes.
+
address@hidden Rectangles, Registers, Accumulating Text, Top
address@hidden Rectangles
address@hidden rectangles
+
+  The rectangle commands affect rectangular areas of text: all
+characters between a certain pair of columns, in a certain range of lines.
+Commands are provided to kill rectangles, yank killed rectangles, clear
+them out, or delete them.  Rectangle commands are useful with text in
+multicolumnar formats, like code with comments at the right,
+or for changing text into or out of such formats.
+
+  To specify the rectangle a command should work on, put the mark at one
+corner and point at the opposite corner.  The specified rectangle is
+called the @dfn{region-rectangle} because it is controlled about the
+same way the region is controlled.  Remember that a given
+combination of point and mark values can be interpreted either as
+specifying a region or as specifying a rectangle; it is up to the
+command that uses them to choose the interpretation.
+
address@hidden @kbd
address@hidden M-x delete-rectangle
+Delete the text of the region-rectangle, moving any following text on
+each line leftward to the left edge of the region-rectangle.
address@hidden M-x kill-rectangle
+Similar, but also save the contents of the region-rectangle as the
+``last killed rectangle''.
address@hidden M-x yank-rectangle
+Yank the last killed rectangle with its upper left corner at point.
address@hidden M-x open-rectangle
+Insert blank space to fill the space of the region-rectangle.
+The previous contents of the region-rectangle are pushed rightward.
address@hidden M-x clear-rectangle
+Clear the region-rectangle by replacing its contents with spaces.
address@hidden table
+
+  The rectangle operations fall into two classes: commands deleting and
+moving rectangles, and commands for blank rectangles.
+
address@hidden delete-rectangle
address@hidden kill-rectangle
+  There are two ways to get rid of the text in a rectangle: you can discard
+the text (delete it) or save it as the ``last killed'' rectangle.  The
+commands for these two ways are @kbd{M-x delete-rectangle} and @kbd{M-x
+kill-rectangle}.  In either case, the portion of each line that falls inside
+the rectangle's boundaries is deleted, causing following text (if any) on
+the line to move left.
+
+  Note that ``killing'' a rectangle is not killing in the usual sense; the
+rectangle is not stored in the kill ring, but in a special place that
+only records the most recently killed rectangle (that is, does not
+append to a killed rectangle).  Different yank commands
+have to be used and only one rectangle is stored, because yanking
+a rectangle is quite different from yanking linear text and yank-popping
+commands are difficult to make sense of.
+
+  Inserting a rectangle is the opposite of deleting one.  You specify
+where to put the upper left corner by putting point there.  The
+rectangle's first line is inserted at point, the rectangle's second line
+is inserted at a point one line vertically down, and so on.  The number
+of lines affected is determined by the height of the saved rectangle.
+
address@hidden yank-rectangle
+  To insert the last killed rectangle, type @kbd{M-x yank-rectangle}.
+This can be used to convert single-column lists into double-column
+lists; kill the second half of the list as a rectangle and then
+yank it beside the first line of the list.
+
address@hidden open-rectangle
address@hidden clear-rectangle
+  There are two commands for working with blank rectangles: @kbd{M-x
+clear-rectangle} erases existing text, and @kbd{M-x open-rectangle}
+inserts a blank rectangle.  Clearing a rectangle is equivalent to
+deleting it and then inserting a blank rectangle of the same size.
+
+  Rectangles can also be copied into and out of registers.
address@hidden,,Rectangle Registers}.
+
address@hidden Registers, Display, Rectangles, Top
address@hidden Registers
address@hidden registers
+
+  XEmacs @dfn{registers} are places in which you can save text or
+positions for later use.  Once you save text or a rectangle in a
+register, you can copy it into the buffer once or many times; a position
+saved in a register is used by moving point to that position.
+Rectangles can also be copied into and out of registers
+(@pxref{Rectangles}).
+
address@hidden view-register
+  Each register has a name which is a single character.  A register can
+store a piece of text, a rectangle, a position, a window configuration,
+or a file name, but only one thing at any given time.  Whatever you
+store in a register remains there until you store something else in that
+register.  To see what a register @var{r} contains, use @kbd{M-x
+view-register}.
+
address@hidden @kbd
address@hidden M-x view-register @key{RET} @var{r}
+Display a description of what register @var{r} contains.
address@hidden table
+
address@hidden view-register
+  @kbd{M-x view-register} reads a register name as an argument and then
+displays the contents of the specified register.
+
address@hidden
+* Position: RegPos.           Saving positions in registers.
+* Text: RegText.              Saving text in registers.
+* Rectangle: RegRect.         Saving rectangles in registers.
+* Configurations: RegConfig.  Saving window configurations in registers.
+* Files: RegFiles.            File names in registers.
+* Numbers: RegNumbers.        Numbers in registers.
+* Bookmarks::                 Bookmarks are like registers, but persistent.
address@hidden menu
+
address@hidden RegPos, RegText, Registers, Registers
address@hidden Saving Positions in Registers
+
+  Saving a position records a place in a buffer so that you can move
+back there later.  Moving to a saved position switches to that buffer
+and moves point to that place in it.
+
address@hidden @kbd
address@hidden C-x r @key{SPC} @var{r}
+Save position of point in register @var{r} (@code{point-to-register}).
address@hidden C-x r j @var{r}
+Jump to the position saved in register @var{r} (@code{jump-to-register}).
address@hidden table
+
address@hidden C-x r SPC
address@hidden point-to-register
+  To save the current position of point in a register, choose a name
address@hidden and type @kbd{C-x r @key{SPC} @var{r}}.  The register @var{r}
+retains the position thus saved until you store something else in that
+register.
+
address@hidden C-x r j
address@hidden jump-to-register
+  The command @kbd{C-x r j @var{r}} moves point to the position recorded
+in register @var{r}.  The register is not affected; it continues to
+record the same location.  You can jump to the same position using the
+same register as often as you want.
+
+  If you use @kbd{C-x r j} to go to a saved position, but the buffer it
+was saved from has been killed, @kbd{C-x r j} tries to create the buffer
+again by visiting the same file.  Of course, this works only for buffers
+that were visiting files.
+
address@hidden RegText, RegRect, RegPos, Registers
address@hidden Saving Text in Registers
+
+  When you want to insert a copy of the same piece of text many times, it
+can be impractical to use the kill ring, since each subsequent kill moves
+the piece of text further down on the ring.  It becomes hard to keep
+track of the argument needed to retrieve the same text with @kbd{C-y}.  An
+alternative is to store the text in a register with @kbd{C-x r s}
+(@code{copy-to-register}) and then retrieve it with @kbd{C-x r i}
+(@code{insert-register}).
+
address@hidden @kbd
address@hidden C-x r s @var{r}
+Copy region into register @var{r} (@code{copy-to-register}).
address@hidden C-x r g @var{r}
address@hidden C-x r i @var{r}
+Insert text contents of register @var{r} (@code{insert-register}).
address@hidden table
+
address@hidden C-x r s
address@hidden C-x r g
address@hidden C-x r i
address@hidden copy-to-register
address@hidden insert-register
+  @kbd{C-x r s @var{r}} stores a copy of the text of the region into the
+register named @var{r}.  Given a numeric argument, @kbd{C-x r s @var{r}}
+deletes the text from the buffer as well.
+
+  @kbd{C-x r i @var{r}} inserts the text from register @var{r} in the buffer.
+By default it leaves point before the text and places the mark after
+it. With a numeric argument (@kbd{C-u}), it puts point after the text
+and the mark before it.
+
address@hidden RegRect, RegConfig, RegText, Registers
address@hidden Saving Rectangles in Registers
address@hidden rectangle
+
+  A register can contain a rectangle instead of lines of text.  The rectangle
+is represented as a list of strings.  @xref{Rectangles}, for basic
+information on rectangles and how to specify rectangles in a buffer.
+
address@hidden @kbd
address@hidden copy-rectangle-to-register
address@hidden C-x r r
address@hidden C-x r r @var{r}
+Copy the region-rectangle into register @var{r}
+(@code{copy-rectangle-to-register}).  With a numeric argument, delete it
+as well.
address@hidden C-x r g @var{r}
address@hidden C-x r i @var{r}
+Insert the rectangle stored in register @var{r} (if it contains a
+rectangle) (@code{insert-register}).
address@hidden table
+
+  The @kbd{C-x r i @var{r}} command inserts linear text if the register
+  contains
+that, or inserts a rectangle if the register contains one.
+
+  See also the command @code{sort-columns}, which you can think of
+as sorting a rectangle.  @xref{Sorting}.
+
address@hidden RegConfig, RegNumbers, RegRect, Registers
address@hidden Saving Window Configurations in Registers
+
address@hidden window-configuration-to-register
address@hidden frame-configuration-to-register
address@hidden C-x r w
address@hidden @kindex C-x r f
+  You can save the window configuration of the selected frame in a
+register, or even the configuration of all windows in all frames, and
+restore the configuration later.
+
address@hidden @kbd
address@hidden C-x r w @var{r}
+Save the state of the selected frame's windows in register @var{r}
+(@code{window-configuration-to-register}).
address@hidden @item C-x r f @var{r}
address@hidden M-x frame-configuration-to-register @key{RET} @var{r}
+Save the state of all frames, including all their windows, in register
address@hidden (@code{frame-configuration-to-register}).
address@hidden table
+
+  Use @kbd{C-x r j @var{r}} to restore a window or frame configuration.
+This is the same command used to restore a cursor position.  When you
+restore a frame configuration, any existing frames not included in the
+configuration become invisible.  If you wish to delete these frames
+instead, use @kbd{C-u C-x r j @var{r}}.
+
address@hidden RegNumbers, RegFiles, RegConfig, Registers
address@hidden Keeping Numbers in Registers
+
+  There are commands to store a number in a register, to insert
+the number in the buffer in decimal, and to increment it.  These commands
+can be useful in keyboard macros (@pxref{Keyboard Macros}).
+
address@hidden @kbd
address@hidden C-u @var{number} C-x r n @var{reg}
address@hidden C-x r n
address@hidden number-to-register
+Store @var{number} into register @var{reg} (@code{number-to-register}).
address@hidden C-u @var{number} C-x r + @var{reg}
address@hidden C-x r +
address@hidden increment-register
+Increment the number in register @var{reg} by @var{number}
+(@code{increment-register}).
address@hidden C-x r g @var{reg}
+Insert the number from register @var{reg} into the buffer.
address@hidden table
+
+  @kbd{C-x r g} is the same command used to insert any other
+sort of register contents into the buffer.
+
address@hidden RegFiles, Bookmarks, RegNumbers, Registers
address@hidden Keeping File Names in Registers
+
+  If you visit certain file names frequently, you can visit them more
+conveniently if you put their names in registers.  Here's the Lisp code
+used to put a file name in a register:
+
address@hidden
+(set-register address@hidden '(file . @var{name}))
address@hidden smallexample
+
address@hidden 3000
address@hidden
+For example,
+
address@hidden
+(set-register ?z '(file . "/usr/src/xemacs/src/ChangeLog"))
address@hidden smallexample
+
address@hidden
+puts the file name shown in register @samp{z}.
+
+  To visit the file whose name is in register @var{r}, type @kbd{C-x r j
address@hidden  (This is the same command used to jump to a position or
+restore a frame configuration.)
+
address@hidden Bookmarks,  , RegFiles, Registers
address@hidden Bookmarks
address@hidden bookmarks
+
+  @dfn{Bookmarks} are somewhat like registers in that they record
+positions you can jump to.  Unlike registers, they have long names, and
+they persist automatically from one Emacs session to the next.  The
+prototypical use of bookmarks is to record ``where you were reading'' in
+various files.
+
+  Note: bookmark.el is distributed in edit-utils package.  You need to
+install that to use bookmark facility (@pxref{Packages}).
+
address@hidden @kbd
address@hidden C-x r m @key{RET}
+Set the bookmark for the visited file, at point.
+
address@hidden C-x r m @var{bookmark} @key{RET}
address@hidden bookmark-set
+Set the bookmark named @var{bookmark} at point (@code{bookmark-set}).
+
address@hidden C-x r b @var{bookmark} @key{RET}
address@hidden bookmark-jump
+Jump to the bookmark named @var{bookmark} (@code{bookmark-jump}).
+
address@hidden C-x r l
address@hidden list-bookmarks
+List all bookmarks (@code{list-bookmarks}).
+
address@hidden M-x bookmark-save
address@hidden bookmark-save
+Save all the current bookmark values in the default bookmark file.
address@hidden table
+
address@hidden C-x r m
address@hidden bookmark-set
address@hidden C-x r b
address@hidden bookmark-jump
+  The prototypical use for bookmarks is to record one current position
+in each of several files.  So the command @kbd{C-x r m}, which sets a
+bookmark, uses the visited file name as the default for the bookmark
+name.  If you name each bookmark after the file it points to, then you
+can conveniently revisit any of those files with @kbd{C-x r b}, and move
+to the position of the bookmark at the same time.
+
address@hidden C-x r l
+  To display a list of all your bookmarks in a separate buffer, type
address@hidden r l} (@code{list-bookmarks}).  If you switch to that buffer,
+you can use it to edit your bookmark definitions or annotate the
+bookmarks.  Type @kbd{C-h m} in that buffer for more information about
+its special editing commands.
+
+  When you kill XEmacs, XEmacs offers to save your bookmark values in
+your default bookmark file, @file{~/.emacs.bmk}, if you have changed any
+bookmark values.  You can also save the bookmarks at any time with the
address@hidden bookmark-save} command.  The bookmark commands load your
+default bookmark file automatically.  This saving and loading is how
+bookmarks persist from one XEmacs session to the next.
+
address@hidden bookmark-save-flag
+  If you set the variable @code{bookmark-save-flag} to 1, then each
+command that sets a bookmark will also save your bookmarks; this way,
+you don't lose any bookmark values even if XEmacs crashes.  (The value,
+if a number, says how many bookmark modifications should go by between
+saving.)
+
address@hidden bookmark-search-size
+  Bookmark position values are saved with surrounding context, so that
address@hidden can find the proper position even if the file is
+modified slightly.  The variable @code{bookmark-search-size} says how
+many characters of context to record, on each side of the bookmark's
+position.
+
+  Here are some additional commands for working with bookmarks:
+
address@hidden @kbd
address@hidden M-x bookmark-load @key{RET} @var{filename} @key{RET}
address@hidden bookmark-load
+Load a file named @var{filename} that contains a list of bookmark
+values.  You can use this command, as well as @code{bookmark-write}, to
+work with other files of bookmark values in addition to your default
+bookmark file.
+
address@hidden M-x bookmark-write @key{RET} @var{filename} @key{RET}
address@hidden bookmark-write
+Save all the current bookmark values in the file @var{filename}.
+
address@hidden M-x bookmark-delete @key{RET} @var{bookmark} @key{RET}
address@hidden bookmark-delete
+Delete the bookmark named @var{bookmark}.
+
address@hidden M-x bookmark-insert-location @key{RET} @var{bookmark} @key{RET}
address@hidden bookmark-insert-location
+Insert in the buffer the name of the file that bookmark @var{bookmark}
+points to.
+
address@hidden M-x bookmark-insert @key{RET} @var{bookmark} @key{RET}
address@hidden bookmark-insert
+Insert in the buffer the @emph{contents} of the file that bookmark
address@hidden points to.
address@hidden table
+
address@hidden Display, Search, Registers, Top
address@hidden Controlling the Display
+
+  Since only part of a large buffer fits in the window, XEmacs tries to show
+the part that is likely to be interesting.  The display control commands
+allow you to specify which part of the text you want to see.
+
address@hidden @kbd
address@hidden C-l
+Clear frame and redisplay, scrolling the selected window to center
+point vertically within it (@code{recenter}).
address@hidden C-v
address@hidden pgdn
address@hidden next
+Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
+On most X keyboards, you can get this functionality using the key
+labelled @samp{Page Down}, which generates either @kbd{next} or @kbd{pgdn}.
address@hidden M-v
address@hidden pgup
address@hidden prior
+Scroll backward (@code{scroll-down}).  On most X keyboards, you can get
+this functionality using the key labelled @samp{Page Up}, which
+generates either @kbd{prior} or @kbd{pgup}.
address@hidden @var{arg} C-l
+Scroll so point is on line @var{arg} (@code{recenter}).
address@hidden C-x <
address@hidden C-pgdn
address@hidden C-next
+Scroll text in current window to the left (@code{scroll-left}).
address@hidden C-x >
address@hidden C-pgup
address@hidden C-prior
+Scroll to the right (@code{scroll-right}).
address@hidden C-x $
+Make deeply indented lines invisible (@code{set-selective-display}).
address@hidden table
+
address@hidden
+* Scrolling::             Moving text up and down in a window.
+* Horizontal Scrolling::   Moving text left and right in a window.
+* Selective Display::      Hiding lines with lots of indentation.
+* Display Vars::           Information on variables for customizing display.
address@hidden menu
+
address@hidden Scrolling, Horizontal Scrolling, Display, Display
address@hidden Scrolling
+
+  If a buffer contains text that is too large to fit entirely within the
+window that is displaying the buffer, XEmacs shows a contiguous section of
+the text.  The section shown always contains point.
+
address@hidden scrolling
+  @dfn{Scrolling} means moving text up or down in the window so that
+different parts of the text are visible.  Scrolling forward means that text
+moves up, and new text appears at the bottom.  Scrolling backward moves
+text down and new text appears at the top.
+
+  Scrolling happens automatically if you move point past the bottom or top
+of the window.  You can also explicitly request scrolling with the commands
+in this section.
+
address@hidden @kbd
address@hidden C-l
+Clear frame and redisplay, scrolling the selected window to center
+point vertically within it (@code{recenter}).
address@hidden C-v
address@hidden pgdn
address@hidden next
+Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
address@hidden M-v
address@hidden pgup
address@hidden prior
+Scroll backward (@code{scroll-down}).
address@hidden @var{arg} C-l
+Scroll so point is on line @var{arg} (@code{recenter}).
address@hidden table
+
address@hidden C-l
address@hidden recenter
+  The most basic scrolling command is @kbd{C-l} (@code{recenter}) with no
+argument.  It clears the entire frame and redisplays all windows.  In
+addition, it scrolls the selected window so that point is halfway down
+from the top of the window.
+
address@hidden C-v
address@hidden M-v
address@hidden pgup
address@hidden pgdn
address@hidden next
address@hidden prior
address@hidden scroll-up
address@hidden scroll-down
+  The scrolling commands @kbd{C-v} and @kbd{M-v} let you move all the text
+in the window up or down a few lines.  @kbd{C-v} (@code{scroll-up}) with an
+argument shows you that many more lines at the bottom of the window, moving
+the text and point up together as @kbd{C-l} might.  @kbd{C-v} with a
+negative argument shows you more lines at the top of the window.
address@hidden (@code{scroll-down}) is like @kbd{C-v}, but moves in the
+opposite address@hidden
+
address@hidden next-screen-context-lines
+  To read the buffer a windowful at a time, use @kbd{C-v} with no
+argument.  @kbd{C-v} takes the last two lines at the bottom of the
+window and puts them at the top, followed by nearly a whole windowful of
+lines not previously visible.  Point moves to the new top of the window
+if it was in the text scrolled off the top.  @kbd{M-v} with no argument
+moves backward with similar overlap.  The number of lines of overlap
+across a @kbd{C-v} or @kbd{M-v} is controlled by the variable
address@hidden; by default, it is two.
+
+  Another way to scroll is using @kbd{C-l} with a numeric argument.
address@hidden does not clear the frame when given an argument; it only
+scrolls the selected window.  With a positive argument @var{n}, @kbd{C-l}
+repositions text to put point @var{n} lines down from the top.  An
+argument of zero puts point on the very top line.  Point does not move
+with respect to the text; rather, the text and point move rigidly on the
+frame.  @kbd{C-l} with a negative argument puts point that many lines
+from the bottom of the window.  For example, @kbd{C-u - 1 C-l} puts
+point on the bottom line, and @kbd{C-u - 5 C-l} puts it five lines from
+the bottom.  Just @kbd{C-u} as argument, as in @kbd{C-u C-l}, scrolls
+point to the center of the frame.
+
address@hidden scroll-step
+  Scrolling happens automatically if point has moved out of the visible
+portion of the text when it is time to display.  Usually scrolling is
+done  to put point vertically centered within the window.  However, if
+the variable @code{scroll-step} has a non-zero value, an attempt is made to
+scroll the buffer by that many lines; if that is enough to bring point back
+into visibility, that is what happens.
+
+  Scrolling happens automatically if point has moved out of the visible
+portion of the text when it is time to display.  Usually scrolling is
+done  to put point vertically centered within the window.  However, if
+the variable @code{scroll-step} has a non-zero value, an attempt is made to
+scroll the buffer by that many lines; if that is enough to bring point back
+into visibility, that is what happens.
+
address@hidden scroll-conservatively
+  If you set @code{scroll-step} to a small value because you want to use 
+arrow keys to scroll the screen without recentering, the redisplay
+preemption will likely make XEmacs keep recentering the screen when
+scrolling fast, regardless of @code{scroll-step}.  To prevent this, set
address@hidden to a small value, which will have the
+result of overriding the redisplay preemption.
+
address@hidden Horizontal Scrolling,, Scrolling, Display
address@hidden Horizontal Scrolling
+
address@hidden @kbd
address@hidden C-x <
+Scroll text in current window to the left (@code{scroll-left}).
address@hidden C-x >
+Scroll to the right (@code{scroll-right}).
address@hidden table
+
address@hidden C-x <
address@hidden C-x >
address@hidden scroll-left
address@hidden scroll-right
address@hidden horizontal scrolling
+  The text in a window can also be scrolled horizontally.  This means that
+each line of text is shifted sideways in the window, and one or more
+characters at the beginning of each line are not displayed at all.  When a
+window has been scrolled horizontally in this way, text lines are truncated
+rather than continued (@pxref{Continuation Lines}), with a @samp{$} appearing
+in the first column when there is text truncated to the left, and in the
+last column when there is text truncated to the right.
+
+  The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected
+window to the left by @var{n} columns with argument @var{n}.  With no
+argument, it scrolls by almost the full width of the window (two columns
+less, to be precise).  @kbd{C-x >} (@code{scroll-right}) scrolls
+similarly to the right.  The window cannot be scrolled any farther to
+the right once it is displaying normally (with each line starting at the
+window's left margin); attempting to do so has no effect.
+
address@hidden Selective Display, Display Vars, Display, Display
address@hidden Selective Display
address@hidden set-selective-display
address@hidden C-x $
+
+  XEmacs can hide lines indented more than a certain number
+of columns (you specify how many columns).  This allows you  to get an
+overview of a part of a program.
+
+  To hide lines, type @kbd{C-x $} (@code{set-selective-display}) with a
+numeric argument @var{n}.  (@xref{Arguments}, for information on giving
+the argument.)  Lines with at least @var{n} columns of indentation
+disappear from the screen.  The only indication of their presence are
+three dots (@address@hidden), which appear at the end of each visible
+line that is followed by one or more invisible address@hidden
+
+  The invisible lines are still present in the buffer, and most editing
+commands see them as usual, so it is very easy to put point in the middle
+of invisible text.  When this happens, the cursor appears at the end of the
+previous line, after the three dots.  If point is at the end of the visible
+line, before the newline that ends it, the cursor appears before the three
+dots.
+
+  The commands @kbd{C-n} and @kbd{C-p} move across the invisible lines
+as if they were not there.
+
+  To make everything visible again, type @kbd{C-x $} with no argument.
+
address@hidden Display Vars,, Selective Display, Display
address@hidden Variables Controlling Display
+
+  This section contains information for customization only.  Beginning
+users should skip it.
+
address@hidden no-redraw-on-reenter
+  When you reenter XEmacs after suspending, XEmacs normally clears the
+screen and redraws the entire display.  On some terminals with more than
+one page of memory, it is possible to arrange the termcap entry so that
+the @samp{ti} and @samp{te} strings (output to the terminal when XEmacs
+is entered and exited, respectively) switch between pages of memory so
+as to use one page for XEmacs and another page for other output.  In that
+case, you might want to set the variable @code{no-redraw-on-reenter} to
address@hidden so that XEmacs will assume, when resumed, that the screen
+page it is using still contains what XEmacs last wrote there.
+
address@hidden echo-keystrokes
+  The variable @code{echo-keystrokes} controls the echoing of multi-character
+keys; its value is the number of seconds of pause required to cause echoing
+to start, or zero, meaning don't echo at all.  @xref{Echo Area}.
+
address@hidden ctl-arrow
+  If the variable @code{ctl-arrow} is @code{nil}, control characters in the
+buffer are displayed with octal escape sequences, all except newline and
+tab.  If its value is @code{t}, then control characters will be printed 
+with an up-arrow, for example @kbd{^A}.  
+
+If its value is not @code{t} and not @code{nil}, then characters whose
+code is greater than 160 (that is, the space character (32) with its
+high bit set) will be assumed to be printable, and will be displayed
+without alteration.  This is the default when running under X Windows,
+since XEmacs assumes an ISO/8859-1 character set (also known as
+``Latin1'').  The @code{ctl-arrow} variable may also be set to an
+integer, in which case all characters whose codes are greater than or
+equal to that value will be assumed to be printable.
+
+Altering the value of @code{ctl-arrow} makes it local to the current
+buffer; until that time, the default value is in effect.  @xref{Locals}.
+
address@hidden tab-width
+  Normally, a tab character in the buffer is displayed as whitespace which
+extends to the next display tab stop position, and display tab stops come
+at intervals equal to eight spaces.  The number of spaces per tab is
+controlled by the variable @code{tab-width}, which is made local by
+changing it, just like @code{ctl-arrow}.  Note that how the tab character
+in the buffer is displayed has nothing to do with the definition of
address@hidden as a command.
+
address@hidden selective-display-ellipses
+  If you set the variable @code{selective-display-ellipses} to @code{nil},
+the three dots at the end of a line that precedes invisible
+lines do not appear.  There is no visible indication of the invisible lines.
+This variable becomes local automatically when set.
+
address@hidden Search, Fixit, Display, Top
address@hidden Searching and Replacement
address@hidden searching
+
+  Like other editors, Emacs has commands for searching for occurrences of
+a string.  The principal search command is unusual in that it is
address@hidden: it begins to search before you have finished typing the
+search string.  There are also non-incremental search commands more like
+those of other editors.
+
+  Besides the usual @code{replace-string} command that finds all
+occurrences of one string and replaces them with another, Emacs has a fancy
+replacement command called @code{query-replace} which asks interactively
+which occurrences to replace.
+
address@hidden
+* Incremental Search::     Search happens as you type the string.
+* Non-Incremental Search:: Specify entire string and then search.
+* Word Search::            Search for sequence of words.
+* Regexp Search::          Search for match for a regexp.
+* Regexps::                Syntax of regular expressions.
+* Search Case::            To ignore case while searching, or not.
+* Replace::                Search, and replace some or all matches.
+* Other Repeating Search:: Operating on all matches for some regexp.
address@hidden menu
+
address@hidden Incremental Search, Non-Incremental Search, Search, Search
address@hidden Incremental Search
+
+  An incremental search begins searching as soon as you type the first
+character of the search string.  As you type in the search string, Emacs
+shows you where the string (as you have typed it so far) is found.
+When you have typed enough characters to identify the place you want, you
+can stop.  Depending on what you do next, you may or may not need to
+terminate the search explicitly with a @key{RET}.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-s
+Incremental search forward (@code{isearch-forward}).
address@hidden C-r
+Incremental search backward (@code{isearch-backward}).
address@hidden table
+
address@hidden C-s
address@hidden C-r
address@hidden isearch-forward
address@hidden isearch-backward
+  @kbd{C-s} starts an incremental search.  @kbd{C-s} reads characters from
+the keyboard and positions the cursor at the first occurrence of the
+characters that you have typed.  If you type @kbd{C-s} and then @kbd{F},
+the cursor moves right after the first @samp{F}.  Type an @kbd{O}, and see
+the cursor move to after the first @samp{FO}.  After another @kbd{O}, the
+cursor is after the first @samp{FOO} after the place where you started the
+search.  Meanwhile, the search string @samp{FOO} has been echoed in the
+echo address@hidden
+
+  The echo area display ends with three dots when actual searching is going
+on.  When search is waiting for more input, the three dots are removed.
+(On slow terminals, the three dots are not displayed.)
+
+  If you make a mistake in typing the search string, you can erase
+characters with @key{DEL}.  Each @key{DEL} cancels the last character of the
+search string.  This does not happen until Emacs is ready to read another
+input character; first it must either find, or fail to find, the character
+you want to erase.  If you do not want to wait for this to happen, use
address@hidden as described address@hidden
+
+  When you are satisfied with the place you have reached, you can type
address@hidden (or @key{C-m}), which stops searching, leaving the cursor where 
+the search brought it.  Any command not specially meaningful in searches also
+stops the search and is then executed.  Thus, typing @kbd{C-a} exits the
+search and then moves to the beginning of the line.  @key{RET} is necessary
+only if the next command you want to type is a printing character,
address@hidden, @key{ESC}, or another control character that is special
+within searches (@kbd{C-q}, @kbd{C-w}, @kbd{C-r}, @kbd{C-s}, or @kbd{C-y}).
+
+  Sometimes you search for @samp{FOO} and find it, but were actually
+looking for a different occurrence of it.  To move to the next occurrence
+of the search string, type another @kbd{C-s}.  Do this as often as
+necessary.  If you overshoot, you can cancel some @kbd{C-s}
+characters with @key{DEL}.
+
+  After you exit a search, you can search for the same string again by
+typing just @kbd{C-s C-s}: the first @kbd{C-s} is the key that invokes
+incremental search, and the second @kbd{C-s} means ``search again''.
+
+  If the specified string is not found at all, the echo area displays
+the text @samp{Failing I-Search}.  The cursor is after the place where
+Emacs found as much of your string as it could.  Thus, if you search for
address@hidden, and there is no @samp{FOOT}, the cursor may be after the
address@hidden in @samp{FOOL}.  At this point there are several things you
+can do.  If you mistyped the search string, correct it.  If you like the
+place you have found, you can type @key{RET} or some other Emacs command
+to ``accept what the search offered''.  Or you can type @kbd{C-g}, which
+removes from the search string the characters that could not be found
+(the @samp{T} in @samp{FOOT}), leaving those that were found (the
address@hidden in @samp{FOOT}).  A second @kbd{C-g} at that point cancels
+the search entirely, returning point to where it was when the search
+started.
+
+  If a search is failing and you ask to repeat it by typing another
address@hidden, it starts again from the beginning of the buffer.  Repeating
+a failing backward search with @kbd{C-r} starts again from the end.  This
+is called @dfn{wrapping around}.  @samp{Wrapped} appears in the search
+prompt once this has happened.
+
address@hidden quitting (in search)
+  The @kbd{C-g} ``quit'' character does special things during searches;
+just what it does depends on the status of the search.  If the search has
+found what you specified and is waiting for input, @kbd{C-g} cancels the
+entire search.  The cursor moves back to where you started the search.  If
address@hidden is typed when there are characters in the search string that have
+not been found---because Emacs is still searching for them, or because it
+has failed to find them---then the search string characters which have not
+been found are discarded from the search string.  The
+search is now successful and waiting for more input, so a second @kbd{C-g}
+cancels the entire search.
+
+  To search for a control character such as @kbd{C-s} or @key{DEL} or
address@hidden, you must quote it by typing @kbd{C-q} first.  This function
+of @kbd{C-q} is analogous to its meaning as an Emacs command: it causes
+the following character to be treated the way a graphic character would
+normally be treated in the same context.
+
+ To search backwards, you can use @kbd{C-r} instead of @kbd{C-s} to
+start the search; @kbd{C-r} is the key that runs the command
+(@code{isearch-backward}) to search backward.  You can also use
address@hidden to change from searching forward to searching backwards.  Do
+this if a search fails because the place you started was too far down in the
+file.  Repeated @kbd{C-r} keeps looking for more occurrences backwards.
address@hidden starts going forward again.  You can cancel @kbd{C-r} in a
+search with @key{DEL}.
+
+  The characters @kbd{C-y} and @kbd{C-w} can be used in incremental search
+to grab text from the buffer into the search string.  This makes it
+convenient to search for another occurrence of text at point.  @kbd{C-w}
+copies the word after point as part of the search string, advancing
+point over that word.  Another @kbd{C-s} to repeat the search will then
+search for a string including that word.  @kbd{C-y} is similar to @kbd{C-w}
+but copies the rest of the current line into the search string.
+
+  The characters @kbd{M-p} and @kbd{M-n} can be used in an incremental
+search to recall things which you have searched for in the past.  A
+list of the last 16 things you have searched for is retained, and 
address@hidden and @kbd{M-n} let you cycle through that ring.
+
+The character @address@hidden does completion on the elements in 
+the search history ring.  For example, if you know that you have
+recently searched for the string @code{POTATOE}, you could type
address@hidden P O address@hidden  If you had searched for other strings
+beginning with @code{PO} then you would be shown a list of them, and
+would need to type more to select one. 
+
+  You can change any of the special characters in incremental search via
+the normal keybinding mechanism: simply add a binding to the 
address@hidden  For example, to make the character
address@hidden mean ``search backwards'' while in isearch-mode, do this:
+
address@hidden
+(define-key isearch-mode-map "\C-b" 'isearch-repeat-backward)
address@hidden example
+
+These are the default bindings of isearch-mode:
+
address@hidden isearch-delete-char
address@hidden isearch-exit
address@hidden isearch-quote-char
address@hidden isearch-repeat-forward
address@hidden isearch-repeat-backward
address@hidden isearch-yank-line
address@hidden isearch-yank-word
address@hidden isearch-abort
address@hidden isearch-ring-retreat
address@hidden isearch-ring-advance
address@hidden isearch-complete
+
address@hidden DEL (isearch-mode)
address@hidden RET (isearch-mode)
address@hidden C-q (isearch-mode)
address@hidden C-s (isearch-mode)
address@hidden C-r (isearch-mode)
address@hidden C-y (isearch-mode)
address@hidden C-w (isearch-mode)
address@hidden C-g (isearch-mode)
address@hidden M-p (isearch-mode)
address@hidden M-n (isearch-mode)
address@hidden M-TAB (isearch-mode)
+
address@hidden @kbd
address@hidden DEL
+Delete a character from the incremental search string 
(@code{isearch-delete-char}).
address@hidden RET
+Exit incremental search (@code{isearch-exit}).
address@hidden C-q
+Quote special characters for incremental search (@code{isearch-quote-char}).
address@hidden C-s
+Repeat incremental search forward (@code{isearch-repeat-forward}).
address@hidden C-r
+Repeat incremental search backward (@code{isearch-repeat-backward}).
address@hidden C-y
+Pull rest of line from buffer into search string (@code{isearch-yank-line}).
address@hidden C-w
+Pull next word from buffer into search string (@code{isearch-yank-word}).
address@hidden C-g
+Cancels input back to what has been found successfully, or aborts the 
+isearch (@code{isearch-abort}).
address@hidden M-p
+Recall the previous element in the isearch history ring 
+(@code{isearch-ring-retreat}).
address@hidden M-n
+Recall the next element in the isearch history ring 
+(@code{isearch-ring-advance}).
address@hidden address@hidden
+Do completion on the elements in the isearch history ring 
+(@code{isearch-complete}).
+
address@hidden table
+
+Any other character which is normally inserted into a buffer when typed
+is automatically added to the search string in isearch-mode.
+
address@hidden Slow Terminal Incremental Search
+
+  Incremental search on a slow terminal uses a modified style of display
+that is designed to take less time.  Instead of redisplaying the buffer at
+each place the search gets to, it creates a new single-line window and uses
+that to display the line the search has found.  The single-line window
+appears as soon as point gets outside of the text that is already
+on the screen.
+
+  When the search is terminated, the single-line window is removed.  Only
+at this time the window in which the search was done is redisplayed to show
+its new value of point.
+
+  The three dots at the end of the search string, normally used to indicate
+that searching is going on, are not displayed in slow style display.
+
address@hidden search-slow-speed
+  The slow terminal style of display is used when the terminal baud rate is
+less than or equal to the value of the variable @code{search-slow-speed},
+initially 1200.
+
address@hidden search-slow-window-lines
+  The number of lines to use in slow terminal search display is controlled
+by the variable @code{search-slow-window-lines}.  Its normal value is 1.
+
address@hidden Non-Incremental Search, Word Search, Incremental Search, Search
address@hidden Non-Incremental Search
address@hidden non-incremental search
+
+  Emacs also has conventional non-incremental search commands, which require
+you type the entire search string before searching begins.
+
address@hidden @kbd
address@hidden C-s @key{RET} @var{string} @key{RET}
+Search for @var{string}.
address@hidden C-r @key{RET} @var{string} @key{RET}
+Search backward for @var{string}.
address@hidden table
+
+  To do a non-incremental search, first type @kbd{C-s @key{RET}}
+(or @kbd{C-s C-m}).  This enters the minibuffer to read the search string.
+Terminate the string with @key{RET} to start the search.  If the string
+is not found, the search command gets an error.
+
+ By default, @kbd{C-s} invokes incremental search, but if you give it an
+empty argument, which would otherwise be useless, it invokes non-incremental
+search.  Therefore, @kbd{C-s @key{RET}} invokes non-incremental search. 
address@hidden @key{RET}} also works this way.
+
address@hidden search-forward
address@hidden search-backward
+  Forward and backward non-incremental searches are implemented by the
+commands @code{search-forward} and @code{search-backward}.  You can bind
+these commands to keys.  The reason that incremental
+search is programmed to invoke them as well is that @kbd{C-s @key{RET}}
+is the traditional sequence of characters used in Emacs to invoke
+non-incremental search.
+
+ Non-incremental searches performed using @kbd{C-s @key{RET}} do
+not call @code{search-forward} right away.  They first check
+if the next character is @kbd{C-w}, which requests a word search.
address@hidden Search}.
+
address@hidden Word Search, Regexp Search, Non-Incremental Search, Search
address@hidden Word Search
address@hidden word search
+
+  Word search looks for a sequence of words without regard to how the
+words are separated.  More precisely, you type a string of many words,
+using single spaces to separate them, and the string is found even if
+there are multiple spaces, newlines or other punctuation between the words.
+
+  Word search is useful in editing documents formatted by text formatters.
+If you edit while looking at the printed, formatted version, you can't tell
+where the line breaks are in the source file.  Word search, allows you
+to search  without having to know the line breaks.
+
address@hidden @kbd
address@hidden C-s @key{RET} C-w @var{words} @key{RET}
+Search for @var{words}, ignoring differences in punctuation.
address@hidden C-r @key{RET} C-w @var{words} @key{RET}
+Search backward for @var{words}, ignoring differences in punctuation.
address@hidden table
+
+  Word search is a special case of non-incremental search.  It is invoked
+with @kbd{C-s @key{RET} C-w} followed by the search string, which
+must always be terminated with another @key{RET}.  Being non-incremental, this
+search does not start until the argument is terminated.  It works by
+constructing a regular expression and searching for that.  @xref{Regexp
+Search}.
+
+ You can do a backward word search with @kbd{C-r @key{RET} C-w}.
+
address@hidden word-search-forward
address@hidden word-search-backward
+  Forward and backward word searches are implemented by the commands
address@hidden and @code{word-search-backward}.  You can
+bind these commands to keys.  The reason that incremental
+search is programmed to invoke them as well is that @kbd{C-s @key{RET} C-w}
+is the traditional Emacs sequence of keys for word search.
+
address@hidden Regexp Search, Regexps, Word Search, Search
address@hidden Regular Expression Search
address@hidden regular expression
address@hidden regexp
+
+  A @dfn{regular expression} (@dfn{regexp}, for short) is a pattern that
+denotes a (possibly infinite) set of strings.  Searching for matches
+for a regexp is a powerful operation that editors on Unix systems have
+traditionally offered.
+
+ To gain a thorough understanding of regular expressions and how to use
+them to best advantage, we recommend that you study @cite{Mastering
+Regular Expressions, by Jeffrey E.F. Friedl, O'Reilly and Associates,
+1997}. (It's known as the "Hip Owls" book, because of the picture on its
+cover.)  You might also read the manuals to @ref{(gawk)Top},
address@hidden(ed)Top}, @cite{sed}, @cite{grep}, @ref{(perl)Top},
address@hidden(regex)Top}, @ref{(rx)Top}, @cite{pcre}, and @ref{(flex)Top}, 
which
+also make good use of regular expressions.
+
+ The XEmacs regular expression syntax most closely resembles that of
address@hidden, or @cite{grep}, the GNU versions of which all utilize the GNU
address@hidden library.  XEmacs' version of @cite{regex} has recently been
+extended with some Perl--like capabilities, described in the next
+section.
+
+ In XEmacs, you can search for the next match for a regexp either
+incrementally or not.
+
address@hidden M-C-s
address@hidden M-C-r
address@hidden isearch-forward-regexp
address@hidden isearch-backward-regexp
+  Incremental search for a regexp is done by typing @kbd{M-C-s}
+(@code{isearch-forward-regexp}).  This command reads a search string
+incrementally just like @kbd{C-s}, but it treats the search string as a
+regexp rather than looking for an exact match against the text in the
+buffer.  Each time you add text to the search string, you make the regexp
+longer, and the new regexp is searched for.  A reverse regexp search command
address@hidden also exists, bound to @kbd{M-C-r}.
+
+  All of the control characters that do special things within an ordinary
+incremental search have the same functionality in incremental regexp search.
+Typing @kbd{C-s} or @kbd{C-r} immediately after starting a search
+retrieves the last incremental search regexp used:
+incremental regexp and non-regexp searches have independent defaults.
+
address@hidden re-search-forward
address@hidden re-search-backward
+  Non-incremental search for a regexp is done by the functions
address@hidden and @code{re-search-backward}.  You can invoke
+them with @kbd{M-x} or bind them to keys.  You can also call
address@hidden by way of incremental regexp search with
address@hidden @key{RET}}; similarly for @code{re-search-backward} with
address@hidden @key{RET}}.
+
address@hidden Regexps, Search Case, Regexp Search, Search
address@hidden Syntax of Regular Expressions
+
+  Regular expressions have a syntax in which a few characters are
+special constructs and the rest are @dfn{ordinary}.  An ordinary
+character is a simple regular expression that matches that character and
+nothing else.  The special characters are @samp{.}, @samp{*}, @samp{+},
address@hidden, @samp{[}, @samp{]}, @samp{^}, @samp{$}, and @samp{\}; no new
+special characters will be defined in the future.  Any other character
+appearing in a regular expression is ordinary, unless a @samp{\}
+precedes it.
+
+For example, @samp{f} is not a special character, so it is ordinary, and
+therefore @samp{f} is a regular expression that matches the string
address@hidden and no other string.  (It does @emph{not} match the string
address@hidden)  Likewise, @samp{o} is a regular expression that matches
+only @address@hidden
+
+Any two regular expressions @var{a} and @var{b} can be concatenated.  The
+result is a regular expression that matches a string if @var{a} matches
+some amount of the beginning of that string and @var{b} matches the rest of
+the address@hidden
+
+As a simple example, we can concatenate the regular expressions @samp{f}
+and @samp{o} to get the regular expression @samp{fo}, which matches only
+the string @samp{fo}.  Still trivial.  To do something more powerful, you
+need to use one of the special characters.  Here is a list of them:
+
address@hidden 1200
address@hidden @kbd
address@hidden .@: @r{(Period)}
address@hidden @samp{.} in regexp
+is a special character that matches any single character except a newline.
+Using concatenation, we can make regular expressions like @samp{a.b}, which
+matches any three-character string that begins with @samp{a} and ends with
address@hidden@refill
+
address@hidden *
address@hidden @samp{*} in regexp
+is not a construct by itself; it is a quantifying suffix operator that
+means to repeat the preceding regular expression as many times as
+possible.  In @samp{fo*}, the @samp{*} applies to the @samp{o}, so
address@hidden matches one @samp{f} followed by any number of @samp{o}s.
+The case of zero @samp{o}s is allowed: @samp{fo*} does match
address@hidden@refill
+
address@hidden always applies to the @emph{smallest} possible preceding
+expression.  Thus, @samp{fo*} has a repeating @samp{o}, not a
+repeating @address@hidden
+
+The matcher processes a @samp{*} construct by matching, immediately, as
+many repetitions as can be found; it is "greedy".  Then it continues
+with the rest of the pattern.  If that fails, backtracking occurs,
+discarding some of the matches of the @samp{*}-modified construct in
+case that makes it possible to match the rest of the pattern.  For
+example, in matching @samp{ca*ar} against the string @samp{caaar}, the
address@hidden first tries to match all three @samp{a}s; but the rest of the
+pattern is @samp{ar} and there is only @samp{r} left to match, so this
+try fails.  The next alternative is for @samp{a*} to match only two
address@hidden  With this choice, the rest of the regexp matches
address@hidden
+
+Nested repetition operators can be extremely slow if they specify
+backtracking loops.  For example, it could take hours for the regular
+expression @samp{\(x+y*\)*a} to match the sequence
address@hidden  The slowness is because
+Emacs must try each imaginable way of grouping the 35 @samp{x}'s before
+concluding that none of them can work.  To make sure your regular
+expressions run fast, check nested repetitions carefully.
+
address@hidden +
address@hidden @samp{+} in regexp
+is a quantifying suffix operator similar to @samp{*} except that the
+preceding expression must match at least once.  It is also "greedy".
+So, for example, @samp{ca+r} matches the strings @samp{car} and
address@hidden but not the string @samp{cr}, whereas @samp{ca*r} matches
+all three strings.
+
address@hidden ?
address@hidden @samp{?} in regexp
+is a quantifying suffix operator similar to @samp{*}, except that the
+preceding expression can match either once or not at all.  For example,
address@hidden matches @samp{car} or @samp{cr}, but does not match anything
+else.
+
address@hidden *?
address@hidden @samp{*?} in regexp
+works just like @samp{*}, except that rather than matching the longest
+match, it matches the shortest match.  @samp{*?} is known as a
address@hidden quantifier, a regexp construct borrowed from Perl.
address@hidden Did perl get this from somewhere?  What's the real history of *? 
?
+
+This construct is very useful for when you want to match the text inside
+a pair of delimiters.  For instance, @samp{/\*.*?\*/} will match C
+comments in a string.  This could not easily be achieved without the use
+of a non-greedy quantifier.
+
+This construct has not been available prior to XEmacs 20.4.  It is not
+available in FSF Emacs.
+
address@hidden +?
address@hidden @samp{+?} in regexp
+is the non-greedy version of @samp{+}.
+
address@hidden ??
address@hidden @samp{??} in regexp
+is the non-greedy version of @samp{?}.
+
address@hidden address@hidden,address@hidden
address@hidden Note the spacing after the close brace is deliberate.
address@hidden @address@hidden,address@hidden }in regexp
+serves as an interval quantifier, analogous to @samp{*} or @samp{+}, but
+specifies that the expression must match at least @var{n} times, but no
+more than @var{m} times.  This syntax is supported by most Unix regexp
+utilities, and has been introduced to XEmacs for the version 20.3.
+
+Unfortunately, the non-greedy version of this quantifier does not exist
+currently, although it does in Perl.
+
address@hidden [ @dots{} ]
address@hidden character set (in regexp)
address@hidden @samp{[} in regexp
address@hidden @samp{]} in regexp
address@hidden begins a @dfn{character set}, which is terminated by a
address@hidden  In the simplest case, the characters between the two brackets
+form the set.  Thus, @samp{[ad]} matches either one @samp{a} or one
address@hidden, and @samp{[ad]*} matches any string composed of just @samp{a}s
+and @samp{d}s (including the empty string), from which it follows that
address@hidden matches @samp{cr}, @samp{car}, @samp{cdr},
address@hidden, address@hidden
+
+The usual regular expression special characters are not special inside a
+character set.  A completely different set of special characters exists
+inside character sets: @samp{]}, @samp{-} and @address@hidden
+
address@hidden is used for ranges of characters.  To write a range, write two
+characters with a @samp{-} between them.  Thus, @samp{[a-z]} matches any
+lower case letter.  Ranges may be intermixed freely with individual
+characters, as in @samp{[a-z$%.]}, which matches any lower case letter
+or @samp{$}, @samp{%}, or a address@hidden
+
+To include a @samp{]} in a character set, make it the first character.
+For example, @samp{[]a]} matches @samp{]} or @samp{a}.  To include a
address@hidden, write @samp{-} as the first character in the set, or put it
+immediately after a range.  (You can replace one individual character
address@hidden with the range @address@hidden@var{c}} to make a place to put the
address@hidden)  There is no way to write a set containing just @samp{-} and
address@hidden
+
+To include @samp{^} in a set, put it anywhere but at the beginning of
+the set.
+
address@hidden [^ @dots{} ]
address@hidden @samp{^} in regexp
address@hidden begins a @dfn{complement character set}, which matches any
+character except the ones specified.  Thus, @samp{[^a-z0-9A-Z]}
+matches all characters @emph{except} letters and address@hidden
+
address@hidden is not special in a character set unless it is the first
+character.  The character following the @samp{^} is treated as if it
+were first (thus, @samp{-} and @samp{]} are not special there).
+
+Note that a complement character set can match a newline, unless
+newline is mentioned as one of the characters not to match.
+
address@hidden ^
address@hidden @samp{^} in regexp
address@hidden beginning of line in regexp
+is a special character that matches the empty string, but only at the
+beginning of a line in the text being matched.  Otherwise it fails to
+match anything.  Thus, @samp{^foo} matches a @samp{foo} that occurs at
+the beginning of a line.
+
+When matching a string instead of a buffer, @samp{^} matches at the
+beginning of the string or after a newline character @samp{\n}.
+
address@hidden $
address@hidden @samp{$} in regexp
+is similar to @samp{^} but matches only at the end of a line.  Thus,
address@hidden matches a string of one @samp{x} or more at the end of a line.
+
+When matching a string instead of a buffer, @samp{$} matches at the end
+of the string or before a newline character @samp{\n}.
+
address@hidden \
address@hidden @samp{\} in regexp
+has two functions: it quotes the special characters (including
address@hidden), and it introduces additional special constructs.
+
+Because @samp{\} quotes special characters, @samp{\$} is a regular
+expression that matches only @samp{$}, and @samp{\[} is a regular
+expression that matches only @samp{[}, and so on.
+
address@hidden Removed a paragraph here in lispref about doubling backslashes 
inside
address@hidden of Lisp strings.
+
address@hidden table
+
address@hidden note:} For historical compatibility, special characters
+are treated as ordinary ones if they are in contexts where their special
+meanings make no sense.  For example, @samp{*foo} treats @samp{*} as
+ordinary since there is no preceding expression on which the @samp{*}
+can act.  It is poor practice to depend on this behavior; quote the
+special character anyway, regardless of where it address@hidden
+
+For the most part, @samp{\} followed by any character matches only
+that character.  However, there are several exceptions: characters
+that, when preceded by @samp{\}, are special constructs.  Such
+characters are always ordinary when encountered on their own.  Here
+is a table of @samp{\} constructs:
+
address@hidden @kbd
address@hidden \|
address@hidden @samp{|} in regexp
address@hidden regexp alternative
+specifies an alternative.
+Two regular expressions @var{a} and @var{b} with @samp{\|} in
+between form an expression that matches anything that either @var{a} or
address@hidden address@hidden
+
+Thus, @samp{foo\|bar} matches either @samp{foo} or @samp{bar}
+but no other address@hidden
+
address@hidden|} applies to the largest possible surrounding expressions.  Only 
a
+surrounding @samp{\( @dots{} \)} grouping can limit the grouping power of
address@hidden|address@hidden
+
+Full backtracking capability exists to handle multiple uses of @samp{\|}.
+
address@hidden \( @dots{} \)
address@hidden @samp{(} in regexp
address@hidden @samp{)} in regexp
address@hidden regexp grouping
+is a grouping construct that serves three purposes:
+
address@hidden
address@hidden
+To enclose a set of @samp{\|} alternatives for other operations.
+Thus, @samp{\(foo\|bar\)x} matches either @samp{foox} or @samp{barx}.
+
address@hidden
+To enclose an expression for a suffix operator such as @samp{*} to act
+on.  Thus, @samp{ba\(na\)*} matches @samp{bananana}, etc., with any
+(zero or more) number of @samp{na} address@hidden
+
address@hidden
+To record a matched substring for future reference.
address@hidden enumerate
+
+This last application is not a consequence of the idea of a
+parenthetical grouping; it is a separate feature that happens to be
+assigned as a second meaning to the same @samp{\( @dots{} \)} construct
+because there is no conflict in practice between the two meanings.
+Here is an explanation of this feature:
+
address@hidden address@hidden
+matches the same text that matched the @var{digit}th occurrence of a
address@hidden( @dots{} \)} construct.
+
+In other words, after the end of a @samp{\( @dots{} \)} construct.  the
+matcher remembers the beginning and end of the text matched by that
+construct.  Then, later on in the regular expression, you can use
address@hidden followed by @var{digit} to match that same text, whatever it
+may have been.
+
+The strings matching the first nine @samp{\( @dots{} \)} constructs
+appearing in a regular expression are assigned numbers 1 through 9 in
+the order that the open parentheses appear in the regular expression.
+So you can use @samp{\1} through @samp{\9} to refer to the text matched
+by the corresponding @samp{\( @dots{} \)} constructs.
+
+For example, @samp{\(.*\)\1} matches any newline-free string that is
+composed of two identical halves.  The @samp{\(.*\)} matches the first
+half, which may be anything, but the @samp{\1} that follows must match
+the same exact text.
+
address@hidden \(?: @dots{} \)
address@hidden @samp{\(?:} in regexp
address@hidden regexp grouping
+is called a @dfn{shy} grouping operator, and it is used just like
address@hidden( @dots{} \)}, except that it does not cause the matched
+substring to be recorded for future reference.
+
+This is useful when you need a lot of grouping @samp{\( @dots{} \)}
+constructs, but only want to remember one or two -- or if you have
+more than nine groupings and need to use backreferences to refer to
+the groupings at the end.
+
+Using @samp{\(?: @dots{} \)} rather than @samp{\( @dots{} \)} when you
+don't need the captured substrings ought to speed up your programs some,
+since it shortens the code path followed by the regular expression
+engine, as well as the amount of memory allocation and string copying it
+must do.  The actual performance gain to be observed has not been
+measured or quantified as of this writing.
address@hidden This is used to good advantage by the font-locking code, and by
address@hidden `regexp-opt.el'.
+
+The shy grouping operator has been borrowed from Perl, and has not been
+available prior to XEmacs 20.3, nor is it available in FSF Emacs.
+
address@hidden \w
address@hidden @samp{\w} in regexp
+matches any word-constituent character.  The editor syntax table
+determines which characters these are.  @xref{Syntax}.
+
address@hidden \W
address@hidden @samp{\W} in regexp
+matches any character that is not a word constituent.
+
address@hidden address@hidden
address@hidden @samp{\s} in regexp
+matches any character whose syntax is @var{code}.  Here @var{code} is a
+character that represents a syntax code: thus, @samp{w} for word
+constituent, @samp{-} for whitespace, @samp{(} for open parenthesis,
+etc.  @xref{Syntax}, for a list of syntax codes and the characters that
+stand for them.
+
address@hidden address@hidden
address@hidden @samp{\S} in regexp
+matches any character whose syntax is not @var{code}.
address@hidden table
+
+  The following regular expression constructs match the empty string---that is,
+they don't use up any characters---but whether they match depends on the
+context.
+
address@hidden @kbd
address@hidden \`
address@hidden @samp{\`} in regexp
+matches the empty string, but only at the beginning
+of the buffer or string being matched against.
+
address@hidden \'
address@hidden @samp{\'} in regexp
+matches the empty string, but only at the end of
+the buffer or string being matched against.
+
address@hidden \=
address@hidden @samp{\=} in regexp
+matches the empty string, but only at point.
+(This construct is not defined when matching against a string.)
+
address@hidden \b
address@hidden @samp{\b} in regexp
+matches the empty string, but only at the beginning or
+end of a word.  Thus, @samp{\bfoo\b} matches any occurrence of
address@hidden as a separate word.  @samp{\bballs?\b} matches
address@hidden or @samp{balls} as a separate address@hidden
+
address@hidden \B
address@hidden @samp{\B} in regexp
+matches the empty string, but @emph{not} at the beginning or
+end of a word.
+
address@hidden \<
address@hidden @samp{\<} in regexp
+matches the empty string, but only at the beginning of a word.
+
address@hidden \>
address@hidden @samp{\>} in regexp
+matches the empty string, but only at the end of a word.
address@hidden table
+
+  Here is a complicated regexp used by Emacs to recognize the end of a
+sentence together with any whitespace that follows.  It is given in Lisp
+syntax to enable you to distinguish the spaces from the tab characters.  In
+Lisp syntax, the string constant begins and ends with a double-quote.
address@hidden"} stands for a double-quote as part of the regexp, @samp{\\} for 
a
+backslash as part of the regexp, @samp{\t} for a tab and @samp{\n} for a
+newline.
+
address@hidden
+"[.?!][]\"')]*\\($\\|\t\\|  \\)[ \t\n]*"
address@hidden example
+
address@hidden
+This regexp contains four parts: a character set matching
+period, @samp{?} or @samp{!}; a character set matching close-brackets,
+quotes or parentheses, repeated any number of times; an alternative in
+backslash-parentheses that matches end-of-line, a tab or two spaces; and
+a character set matching whitespace characters, repeated any number of
+times.
+
address@hidden Search Case, Replace, Regexps, Search
address@hidden Searching and Case
+
address@hidden case-fold-search
+  All searches in Emacs normally ignore the case of the text they
+are searching through; if you specify searching for @samp{FOO},
address@hidden and @samp{foo} are also considered a match.  Regexps, and in
+particular character sets, are included: @samp{[aB]} matches @samp{a}
+or @samp{A} or @samp{b} or @address@hidden
+
+  If you want a case-sensitive search, set the variable
address@hidden to @code{nil}.  Then all letters must match
+exactly, including case. @code{case-fold-search} is a per-buffer
+variable; altering it affects only the current buffer, but
+there is a default value which you can change as well.  @xref{Locals}. 
+You can also use @b{Case Sensitive Search} from the @b{Options} menu 
+on your screen.
+
address@hidden Replace, Other Repeating Search, Search Case, Search
address@hidden Replacement Commands
address@hidden replacement
address@hidden string substitution
address@hidden global substitution
+
+  Global search-and-replace operations are not needed as often in Emacs as
+they are in other editors, but they are available.  In addition to the
+simple @code{replace-string} command which is like that found in most
+editors, there is a @code{query-replace} command which asks you, for each
+occurrence of a pattern, whether to replace it.
+
+  The replace commands all replace one string (or regexp) with one
+replacement string.  It is possible to perform several replacements in
+parallel using the command @code{expand-region-abbrevs}.  @xref{Expanding
+Abbrevs}.
+
address@hidden
+* Unconditional Replace::  Replacing all matches for a string.
+* Regexp Replace::         Replacing all matches for a regexp.
+* Replacement and Case::   How replacements preserve case of letters.
+* Query Replace::          How to use querying.
address@hidden menu
+
address@hidden Unconditional Replace, Regexp Replace, Replace, Replace
address@hidden Unconditional Replacement
address@hidden replace-string
address@hidden replace-regexp
+
address@hidden @kbd
address@hidden M-x replace-string @key{RET} @var{string} @key{RET} 
@var{newstring} @key{RET}
+Replace every occurrence of @var{string} with @var{newstring}.
address@hidden M-x replace-regexp @key{RET} @var{regexp} @key{RET} 
@var{newstring} @key{RET}
+Replace every match for @var{regexp} with @var{newstring}.
address@hidden table
+
+  To replace every instance of @samp{foo} after point with @samp{bar},
+use the command @kbd{M-x replace-string} with the two arguments
address@hidden and @samp{bar}.  Replacement occurs only after point: if you
+want to cover the whole buffer you must go to the beginning first.  By
+default, all occurrences up to the end of the buffer are replaced.  To
+limit replacement to part of the buffer, narrow to that part of the
+buffer before doing the replacement (@pxref{Narrowing}).
+
+  When @code{replace-string} exits, point is left at the last occurrence
+replaced.  The value of point when the @code{replace-string} command was
+issued is remembered on the mark ring; @kbd{C-u address@hidden moves back
+there.
+
+  A numeric argument restricts replacement to matches that are surrounded
+by word boundaries.
+
address@hidden Regexp Replace, Replacement and Case, Unconditional Replace, 
Replace
address@hidden Regexp Replacement
+
+  @code{replace-string} replaces exact matches for a single string.  The
+similar command @code{replace-regexp} replaces any match for a specified
+pattern.
+
+  In @code{replace-regexp}, the @var{newstring} need not be constant.  It
+can refer to all or part of what is matched by the @var{regexp}.  @samp{\&}
+in @var{newstring} stands for the entire text being replaced.
address@hidden@var{d}} in @var{newstring}, where @var{d} is a digit, stands for
+whatever matched the @var{d}'th parenthesized grouping in @var{regexp}.
+For example,@refill
+
address@hidden
+M-x replace-regexp @key{RET} c[ad]+r @key{RET} \&-safe @key{RET}
address@hidden example
+
address@hidden
+would replace (for example) @samp{cadr} with @samp{cadr-safe} and @samp{cddr}
+with @samp{cddr-safe}.
+
address@hidden
+M-x replace-regexp @key{RET} \(c[ad]+r\)-safe @key{RET} \1 @key{RET}
address@hidden example
+
address@hidden
+would perform exactly the opposite replacements.  To include a @samp{\}
+in the text to replace with, you must give @samp{\\}.
+
address@hidden Replacement and Case, Query Replace, Regexp Replace, Replace
address@hidden Replace Commands and Case
+
address@hidden case-replace
address@hidden case-fold-search
+  If the arguments to a replace command are in lower case, the command
+preserves case when it makes a replacement.  Thus, the following command:
+
address@hidden
+M-x replace-string @key{RET} foo @key{RET} bar @key{RET}
address@hidden example
+
address@hidden
+replaces a lower-case @samp{foo} with a lower case @samp{bar}, @samp{FOO}
+with @samp{BAR}, and @samp{Foo} with @samp{Bar}.  If upper-case letters are
+used in the second argument, they remain upper-case every time that
+argument is inserted.  If upper-case letters are used in the first
+argument, the second argument is always substituted exactly as given, with
+no case conversion.  Likewise, if the variable @code{case-replace} is set
+to @code{nil}, replacement is done without case conversion.  If
address@hidden is set to @code{nil}, case is significant in
+matching occurrences of @samp{foo} to replace; also, case conversion of the
+replacement string is not done.
+
address@hidden Query Replace,, Replacement and Case, Replace
address@hidden Query Replace
address@hidden query replace
+
address@hidden @kbd
address@hidden M-% @var{string} @key{RET} @var{newstring} @key{RET}
address@hidden M-x query-replace @key{RET} @var{string} @key{RET} 
@var{newstring} @key{RET}
+Replace some occurrences of @var{string} with @var{newstring}.
address@hidden M-x query-replace-regexp @key{RET} @var{regexp} @key{RET} 
@var{newstring} @key{RET}
+Replace some matches for @var{regexp} with @var{newstring}.
address@hidden table
+
address@hidden M-%
address@hidden query-replace
+  If you want to change only some of the occurrences of @samp{foo} to
address@hidden, not all of them, you can use @code{query-replace} instead of
address@hidden  This command finds occurrences of @samp{foo} one by one,
+displays each occurrence, and asks you whether to replace it.  A numeric
+argument to @code{query-replace} tells it to consider only occurrences
+that are bounded by word-delimiter address@hidden
+
address@hidden query-replace-regexp
+  Aside from querying, @code{query-replace} works just like
address@hidden, and @code{query-replace-regexp} works
+just like @address@hidden
+
+  The things you can type when you are shown an occurrence of @var{string}
+or a match for @var{regexp} are:
+
address@hidden SPC (query-replace)
address@hidden DEL (query-replace)
address@hidden , (query-replace)
address@hidden ESC (query-replace)
address@hidden . (query-replace)
address@hidden ! (query-replace)
address@hidden ^ (query-replace)
address@hidden C-r (query-replace)
address@hidden C-w (query-replace)
address@hidden C-l (query-replace)
+
address@hidden WideCommands
address@hidden @kbd
address@hidden @key{SPC}
+to replace the occurrence with @var{newstring}.  This preserves case, just
+like @code{replace-string}, provided @code{case-replace} is address@hidden,
+as it normally address@hidden
+
address@hidden @key{DEL}
+to skip to the next occurrence without replacing this one.
+
address@hidden , @r{(Comma)}
+to replace this occurrence and display the result.  You are then
+prompted for another input character.  However, since the replacement has
+already been made, @key{DEL} and @key{SPC} are equivalent.  At this
+point, you can type @kbd{C-r} (see below) to alter the replaced text.  To
+undo the replacement, you can type @kbd{C-x u}. 
+This exits the @code{query-replace}.  If you want to do further
+replacement you must use @kbd{C-x @key{ESC} @key{ESC}} to restart 
(@pxref{Repetition}).
+
address@hidden @key{ESC}
+to exit without doing any more replacements.
+
address@hidden .@: @r{(Period)}
+to replace this occurrence and then exit.
+
address@hidden !
+to replace all remaining occurrences without asking again.
+
address@hidden ^
+to go back to the location of the previous occurrence (or what used to
+be an occurrence), in case you changed it by mistake.  This works by
+popping the mark ring.  Only one @kbd{^} in a row is allowed, because
+only one previous replacement location is kept during @code{query-replace}.
+
address@hidden C-r
+to enter a recursive editing level, in case the occurrence needs to be
+edited rather than just replaced with @var{newstring}.  When you are
+done, exit the recursive editing level with @kbd{C-M-c} and the next
+occurrence will be displayed.  @xref{Recursive Edit}.
+
address@hidden C-w
+to delete the occurrence, and then enter a recursive editing level as
+in @kbd{C-r}.  Use the recursive edit to insert text to replace the
+deleted occurrence of @var{string}.  When done, exit the recursive
+editing level with @kbd{C-M-c} and the next occurrence will be
+displayed.
+
address@hidden C-l
+to redisplay the screen and then give another answer.
+
address@hidden C-h
+to display a message summarizing these options, then give another
+answer.
address@hidden table
+
+  If you type any other character, Emacs exits the @code{query-replace}, and
+executes the character as a command.  To restart the @code{query-replace},
+use @kbd{C-x @key{ESC} @key{ESC}}, which repeats the @code{query-replace} 
because it
+used the minibuffer to read its arguments.  @xref{Repetition, C-x ESC ESC}.
+
address@hidden Other Repeating Search,, Replace, Search
address@hidden Other Search-and-Loop Commands
+
+  Here are some other commands that find matches for a regular expression.
+They all operate from point to the end of the buffer.
+
address@hidden list-matching-lines
address@hidden occur
address@hidden count-matches
address@hidden delete-non-matching-lines
address@hidden delete-matching-lines
address@hidden grosscommands
address@hidden @kbd
address@hidden M-x occur
+Print each line that follows point and contains a match for the
+specified regexp.  A numeric argument specifies the number of context
+lines to print before and after each matching line; the default is
+none.
+
address@hidden C-c C-c (Occur mode)
+The buffer @samp{*Occur*} containing the output serves as a menu for
+finding occurrences in their original context.  Find an occurrence
+as listed in @samp{*Occur*}, position point there, and type @kbd{C-c
+C-c}; this switches to the buffer that was searched and moves point to
+the original of the same occurrence.
+
address@hidden M-x list-matching-lines
+Synonym for @kbd{M-x occur}.
+
address@hidden M-x count-matches
+Print the number of matches following point for the specified regexp.
+
address@hidden M-x delete-non-matching-lines
+Delete each line that follows point and does not contain a match for
+the specified regexp.
+
address@hidden M-x delete-matching-lines
+Delete each line that follows point and contains a match for the
+specified regexp.
address@hidden table
+
address@hidden Fixit, Files, Search, Top
address@hidden Commands for Fixing Typos
address@hidden typos
address@hidden mistakes, correcting
+
+  This chapter describes commands that are especially useful when you
+catch a mistake in your text just after you have made it, or when you 
+change your mind while composing text on line.
+
address@hidden
+* Kill Errors:: Commands to kill a batch of recently entered text.
+* Transpose::   Exchanging two characters, words, lines, lists...
+* Fixing Case:: Correcting case of last word entered.
+* Spelling::    Apply spelling checker to a word, or a whole file.
address@hidden menu
+
address@hidden Kill Errors, Transpose, Fixit, Fixit
address@hidden Killing Your Mistakes
+
address@hidden @kbd
address@hidden @key{DEL}
+Delete last character (@code{delete-backward-char}).
address@hidden address@hidden
+Kill last word (@code{backward-kill-word}).
address@hidden C-x @key{DEL}
+Kill to beginning of sentence (@code{backward-kill-sentence}).
address@hidden table
+
address@hidden DEL
address@hidden delete-backward-char
+  The @key{DEL} character (@code{delete-backward-char}) is the most
+important correction command.  When used among graphic (self-inserting)
+characters, it can be thought of as canceling the last character typed.
+
address@hidden M-DEL
address@hidden C-x DEL
address@hidden backward-kill-word
address@hidden backward-kill-sentence
+  When your mistake is longer than a couple of characters, it might be more
+convenient to use @address@hidden or @kbd{C-x @key{DEL}}.
address@hidden@key{DEL}} kills back to the start of the last word, and @kbd{C-x
address@hidden kills back to the start of the last sentence.  @kbd{C-x
address@hidden is particularly useful when you are thinking of what to write as
+you type it, in case you change your mind about phrasing.
address@hidden@key{DEL}} and @kbd{C-x @key{DEL}} save the killed text for
address@hidden and @kbd{M-y} to retrieve.  @address@hidden
+
+  @address@hidden is often useful even when you have typed only a few
+characters wrong, if you know you are confused in your typing and aren't
+sure exactly what you typed.  At such a time, you cannot correct with
address@hidden except by looking at the screen to see what you did.  It requires
+less thought to kill the whole word and start over.
+
address@hidden Transpose, Fixing Case, Kill Errors, Fixit
address@hidden Transposing Text
+
address@hidden @kbd
address@hidden C-t
+Transpose two characters (@code{transpose-chars}).
address@hidden M-t
+Transpose two words (@code{transpose-words}).
address@hidden C-M-t
+Transpose two balanced expressions (@code{transpose-sexps}).
address@hidden C-x C-t
+Transpose two lines (@code{transpose-lines}).
address@hidden table
+
address@hidden transposition
address@hidden C-t
address@hidden transpose-chars
+  The common error of transposing two adjacent characters can be fixed
+with the @kbd{C-t} command (@code{transpose-chars}).  Normally,
address@hidden transposes the two characters on either side of point.  When
+given at the end of a line, @kbd{C-t} transposes the last two characters
+on the line, rather than transposing the last character of the line with
+the newline, which would be useless.  If you catch a
+transposition error right away, you can fix it with just @kbd{C-t}.
+If you catch the error later,  move the cursor back to between
+the two transposed characters.  If you transposed a space with the last
+character of the word before it, the word motion commands are a good way
+of getting there.  Otherwise, a reverse search (@kbd{C-r}) is often the
+best way.  @xref{Search}.
+
address@hidden C-x C-t
address@hidden transpose-lines
address@hidden M-t
address@hidden transpose-words
address@hidden C-M-t
address@hidden transpose-sexps
+  @kbd{Meta-t} (@code{transpose-words}) transposes the word before point
+with the word after point.  It moves point forward over a word, dragging
+the word preceding or containing point forward as well.  The punctuation
+characters between the words do not move.  For example, @address@hidden, BAR}}
+transposes into @address@hidden, FOO}} rather than @address@hidden FOO,}}.
+
+  @kbd{C-M-t} (@code{transpose-sexps}) is a similar command for transposing
+two expressions (@pxref{Lists}), and @kbd{C-x C-t} (@code{transpose-lines})
+exchanges lines.  It works like @kbd{M-t} but in determines the
+division of the text into syntactic units differently.
+
+  A numeric argument to a transpose command serves as a repeat count: it
+tells the transpose command to move the character (word, sexp, line) before
+or containing point across several other characters (words, sexps, lines).
+For example, @kbd{C-u 3 C-t} moves the character before point forward
+across three other characters.  This is equivalent to repeating @kbd{C-t}
+three times.  @kbd{C-u - 4 M-t} moves the word before point backward across
+four words.  @kbd{C-u - C-M-t} would cancel the effect of plain
address@hidden@refill
+
+  A numeric argument of zero transposes the character (word, sexp, line)
+ending after point with the one ending after the mark (otherwise a
+command with a repeat count of zero would do nothing).
+
address@hidden Fixing Case, Spelling, Transpose, Fixit
address@hidden Case Conversion
+
address@hidden @kbd
address@hidden M-- M-l
+Convert last word to lower case.  Note that @kbd{Meta--} is ``Meta-minus.''
address@hidden M-- M-u
+Convert last word to all upper case.
address@hidden M-- M-c
+Convert last word to lower case with capital initial.
address@hidden table
+
address@hidden downcase-word
address@hidden upcase-word
address@hidden capitalize-word
address@hidden address@hidden M-l
address@hidden address@hidden M-u
address@hidden address@hidden M-c
address@hidden case conversion
address@hidden words
+  A  common error is to type words in the wrong case.  Because of this,
+the word case-conversion commands @kbd{M-l}, @kbd{M-u}, and @kbd{M-c} do
+not move the cursor when used with a negative argument.
+As soon as you see you have mistyped the last word, you can simply
+case-convert it and continue typing.  @address@hidden
+
address@hidden Spelling,, Fixing Case, Fixit
address@hidden Checking and Correcting Spelling
address@hidden spelling
+
address@hidden doublewidecommands
address@hidden @kbd
address@hidden M-$
+Check and correct spelling of word (@code{spell-word}).
address@hidden M-x spell-buffer
+Check and correct spelling of each word in the buffer.
address@hidden M-x spell-region
+Check and correct spelling of each word in the region.
address@hidden M-x spell-string
+Check spelling of specified word.
address@hidden table
+
address@hidden M-$
address@hidden spell-word
+  To check the spelling of the word before point, and optionally correct
+it, use the command @kbd{M-$} (@code{spell-word}).  This command runs an
+inferior process containing the @code{spell} program to see whether the
+word is correct English.  If it is not, it asks you to edit the word (in
+the minibuffer) into a corrected spelling, and then performs a
address@hidden to substitute the corrected spelling for the old
+one throughout the buffer.
+
+  If you exit the minibuffer without altering the original spelling, it
+means you do not want to do anything to that word.  In that case, the
address@hidden is not done.
+
address@hidden spell-buffer
+  @kbd{M-x spell-buffer} checks each word in the buffer the same way that
address@hidden does, doing a @code{query-replace} for
+every incorrect word if address@hidden
+
address@hidden spell-region
+  @kbd{M-x spell-region} is similar to @code{spell-buffer} but operates
+only on the region, not the entire buffer.
+
address@hidden spell-string
+  @kbd{M-x spell-string} reads a string as an argument and checks
+whether that is a correctly spelled English word.  It prints a message
+giving the answer in the echo area.
+
address@hidden Files, Buffers, Fixit, Top
address@hidden File Handling
address@hidden files
+
+  The basic unit of stored data in Unix is the @dfn{file}.  To edit a file,
+you must tell Emacs to examine the file and prepare a buffer containing a
+copy of the file's text.  This is called @dfn{visiting} the file.  Editing
+commands apply directly to text in the buffer; that is, to the copy inside
+Emacs.  Your changes appear in the file itself only when you @dfn{save} the
+buffer back into the file.
+
address@hidden files, remote
address@hidden remote files
+  Emacs is also able to handle ``remote files'' which are stored on
+other hosts.  Not only is Emacs somewhat aware of the special issues
+involved with network file systems, but it can also use FTP and ssh (or
+rsh) to make local copies of the files, and refresh them on the remote
+host automatically when you save the buffer.  The FTP interface is
+provided by the standard @samp{efs} package @ref{Top, EFS, , efs}.  The
+ssh/rsh interface is provided by the optional @samp{tramp} package
address@hidden, TRAMP, , tramp}.  These packages attempt to implement all of
+the operations described below, making remote file use transparent
+(except for unavoidable network delays).
+
+  In addition to visiting and saving files, Emacs can delete, copy, rename,
+and append to files, and operate on file directories.
+
address@hidden
+* File Names::       How to type and edit file name arguments.
+* Visiting::         Visiting a file prepares Emacs to edit the file.
+* Saving::           Saving makes your changes permanent.
+* Reverting::        Reverting cancels all the changes not saved.
+* Auto Save::        Auto Save periodically protects against loss of data.
+* Version Control::  Version control systems (RCS and SCCS).
+* ListDir::          Listing the contents of a file directory.
+* Comparing Files::  Finding where two files differ.
+* Dired::            ``Editing'' a directory to delete, rename, etc.
+                     the files in it.
+* Misc File Ops::    Other things you can do on files.
address@hidden menu
+
address@hidden File Names, Visiting, Files, Files
address@hidden File Names
address@hidden file names
+
+  Most Emacs commands that operate on a file require you to specify the
+file name.  (Saving and reverting are exceptions; the buffer knows which
+file name to use for them.)  File names are specified in the minibuffer
+(@pxref{Minibuffer}).  @dfn{Completion} is available, to make it easier to
+specify long file names.  @xref{Completion}.
+
+  There is always a @dfn{default file name} which is used if you
+enter an empty argument by typing just @key{RET}.  Normally the default
+file name is the name of the file visited in the current buffer; this
+makes it easy to operate on that file with any of the Emacs file
+commands.
+
+The syntax for accessing remote files unfortunately varies depending on
+the method used.  The syntax for using FTP is
address@hidden/@var{user}@@@var{remote-host}:@var{path-on-remote-host}}.  The
+syntax for using ssh is
address@hidden/address@hidden@@@address@hidden
+
+  In both cases the @address@hidden@@} portion is optional (it defaults
+to your local user name).  @var{path-on-remote-host} may use the
address@hidden notation to indicate @var{user}'s home directory on the remote
+host.  The default file name will reflect the remote host information.
+
address@hidden default-directory
+  Each buffer has a default directory, normally the same as the
+directory of the file visited in that buffer.  When Emacs reads a file
+name, the default directory is used if you do not specify a directory.
+If you specify a directory in a relative fashion, with a name that does
+not start with a slash, it is interpreted with respect to the default
+directory.  The default directory of the current buffer is kept in the
+variable @code{default-directory}, which has a separate value in every
+buffer.  The value of the variable should end with a slash.
+
+  For example, if the default file name is @file{/u/rms/gnu/gnu.tasks} then
+the default directory is @file{/u/rms/gnu/}.  If you type just @samp{foo},
+which does not specify a directory, it is short for @file{/u/rms/gnu/foo}.
address@hidden/.login} would stand for @file{/u/rms/.login}.  @samp{new/foo}
+would stand for the filename @file{/u/rms/gnu/new/foo}.
+
+  When visiting a remote file via EFS or TRAMP, the remote directory
+becomes the default directory (@pxref{Visiting}) for that buffer, just
+as a local directory would.
+
address@hidden default-directory-alist
+The variable @code{default-directory-alist} takes an alist of major
+modes and their opinions on @code{default-directory} as a Lisp
+expression to evaluate.  A resulting value of @code{nil} is ignored in
+favor of @code{default-directory}.
+
address@hidden make-directory
address@hidden remove-directory
address@hidden creating directories
address@hidden removing directories
+You can create a new directory with the function @code{make-directory},
+which takes as an argument a file name string. The current directory is
+displayed in the minibuffer when the function is called; you can delete
+the old directory name and supply a new directory name. For example, if
+the current directory is @file{/u/rms/gnu}, you can delete @file{gnu}
+and type @file{oryx} and @key{RET} to create @file{/u/rms/oryx}.
+Removing a directory is similar to creating one.  To remove a directory,
+use @code{remove-directory}; it takes one argument, a file name string.
+
+  The command @kbd{M-x pwd} prints the current buffer's default directory,
+and the command @kbd{M-x cd} sets it (to a value read using the
+minibuffer).  A buffer's default directory changes only when the @code{cd}
+command is used.  A file-visiting buffer's default directory is initialized
+to the directory of the file that is visited there.  If a buffer is created
+with @kbd{C-x b}, its default directory is copied from that of the
+buffer that was current at the time.
+
address@hidden insert-default-directory
+  The default directory name actually appears in the minibuffer when the
+minibuffer becomes active to read a file name.  This serves two
+purposes: it shows you what the default is, so that you can type a
+relative file name and know with certainty what it will mean, and it
+allows you to edit the default to specify a different directory.  To
+inhibit the insertion of the default directory, set the variable
address@hidden to @code{nil}.
+
+  Note that it is legitimate to type an absolute file name after you
+enter the minibuffer, ignoring the presence of the default directory
+name.  The final minibuffer contents may look invalid, but that is not
+so.  @xref{Minibuffer File}.
+
+  @samp{$} in a file name is used to substitute environment variables.  For
+example, if you have used the shell command @samp{setenv FOO rms/hacks} to
+set up an environment variable named @samp{FOO}, then you can use
address@hidden/u/$FOO/test.c} or @file{/u/address@hidden@}/test.c} as an 
abbreviation for
address@hidden/u/rms/hacks/test.c}.  The environment variable name consists of 
all
+the alphanumeric characters after the @samp{$}; alternatively, it may be
+enclosed in braces after the @samp{$}.  Note that the @samp{setenv} command
+affects Emacs only if done before Emacs is started.
+
+  To access a file with @samp{$} in its name, type @samp{$$}.  This pair
+is converted to a single @samp{$} at the same time variable substitution
+is performed for single @samp{$}.  The Lisp function that performs the
+substitution is called @code{substitute-in-file-name}.  The substitution
+is performed only on filenames read as such using the minibuffer.
+
address@hidden Visiting, Saving, File Names, Files
address@hidden Visiting Files
address@hidden visiting files
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x C-f
+Visit a file (@code{find-file}).
address@hidden C-x C-v
+Visit a different file instead of the one visited last
+(@code{find-alternate-file}).
address@hidden C-x 4 C-f
+Visit a file, in another window (@code{find-file-other-window}).  Don't
+change this window.
address@hidden C-x 5 C-f
+Visit a file, in another frame (@code{find-file-other-frame}).  Don't
+change this window or frame.
address@hidden table
+
address@hidden files
address@hidden visiting
address@hidden saving
+  @dfn{Visiting} a file means copying its contents into an Emacs buffer
+so you can edit it.  Emacs creates a new buffer for each file you
+visit.  We say that the buffer is visiting the file that it was created
+to hold.  Emacs constructs the buffer name from the file name by
+throwing away the directory and keeping just the file name.  For example,
+a file named @file{/usr/rms/emacs.tex} is displayed in a buffer named
address@hidden  If a buffer with that name exists, a unique
+name is constructed by appending @samp{<2>}, @samp{<3>},and so on, using
+the lowest number that makes a name that is not already in use.
+
+  Each window's mode line shows the name of the buffer that is being displayed
+in that window, so you can always tell what buffer you are editing.
+
+  The changes you make with Emacs are made in the Emacs buffer.  They do
+not take effect in the file that you visit, or any other permanent
+place, until you @dfn{save} the buffer.  Saving the buffer means that
+Emacs writes the current contents of the buffer into its visited file.
address@hidden
+
address@hidden modified (buffer)
+  If a buffer contains changes that have not been saved, the buffer is said
+to be @dfn{modified}.  This is important because it implies that some
+changes will be lost if the buffer is not saved.  The mode line displays
+two stars near the left margin if the buffer is modified.
+
address@hidden C-x 5 C-f
address@hidden find-file
address@hidden find-file-other-frame
+  To visit a file, use the command @kbd{C-x C-f} (@code{find-file}).  Follow
+the command with the name of the file you wish to visit, terminated by a
address@hidden  If you are using XEmacs under X, you can also use the
address@hidden command from the @b{File} menu bar item. 
+
+  The file name is read using the minibuffer (@pxref{Minibuffer}), with
+defaulting and completion in the standard manner (@pxref{File Names}).
+While in the minibuffer, you can abort @kbd{C-x C-f} by typing @kbd{C-g}.
+
+  @kbd{C-x C-f} has completed successfully when text appears on the
+screen and a new buffer name appears in the mode line.  If the specified
+file does not exist and could not be created or cannot be read, an error
+results.  The error message is printed in the echo area, and includes
+the name of the file that Emacs was trying to visit.
+
+  If you visit a file that is already in Emacs, @kbd{C-x C-f} does not make
+another copy.  It selects the existing buffer containing that file.
+However, before doing so, it checks that the file itself has not changed
+since you visited or saved it last.  If the file has changed, Emacs
+prints a warning message.  @xref{Interlocking,,Simultaneous Editing}.
+
address@hidden find-this-file
+You can switch to a specific file called out in the current buffer by
+calling the function @code{find-this-file}. By providing a prefix
+argument, this function calls @code{filename-at-point} and switches to a
+buffer visiting the file @var{filename}. It creates one if none already
+exists. You can use this function to edit the file mentioned in the
+buffer you are working in or to test if the file exists. You can do that
+by using the minibuffer completion after snatching the all or part of
+the filename.
+
address@hidden find-file-use-truenames
address@hidden buffer-file-name
+If the variable @code{find-file-use-truenames}'s value is
address@hidden, a buffer's visited filename will always be traced back
+to the real file. The filename will never be a symbolic link, and there
+will never be a symbolic link anywhere in its directory path. In other
+words, the @code{buffer-file-name} and @code{buffer-file-truename} will
+be equal.
+
address@hidden find-file-compare-truenames
address@hidden buffer-file-truename
+If the variable @code{find-file-compare-truenames} value is
address@hidden, the @code{find-file} command will check the
address@hidden of all visited files when deciding whether a
+given file is already in a buffer, instead of just
address@hidden  If you attempt to visit another file which is
+a symbolic link to a file that is already in a buffer, the existing
+buffer will be found instead of a newly created one.  This works if any
+component of the pathname (including a non-terminal component) is a
+symbolic link as well, but doesn't work with hard links (nothing does).
+
address@hidden creating files
+   If you want to create a file, just visit it.  Emacs prints
address@hidden(New File)} in the echo area, but in other respects behaves as if 
you
+had visited an existing empty file.  If you make any changes and save them,
+the file is created.
+
address@hidden C-x C-v
address@hidden find-alternate-file
+  If you visit a nonexistent file unintentionally (because you typed the
+wrong file name), use the @kbd{C-x C-v} (@code{find-alternate-file})
+command to visit the file you wanted.  @kbd{C-x C-v} is similar to @kbd{C-x
+C-f}, but it kills the current buffer (after first offering to save it if
+it is modified).  @kbd{C-x C-v} is allowed even if the current buffer
+is not visiting a file.
+
address@hidden find-file-run-dired
+  If the file you specify is actually a directory, Dired is called on
+that directory (@pxref{Dired}).  To inhibit this, set the variable
address@hidden to @code{nil}; then it is an error to try to
+visit a directory.
+
address@hidden C-x 4 f
address@hidden find-file-other-window
+  @kbd{C-x 4 f} (@code{find-file-other-window}) is like @kbd{C-x C-f}
+except that the buffer containing the specified file is selected in another
+window.  The window that was selected before @kbd{C-x 4 f} continues to
+show the same buffer it was already showing.  If you use this command when
+only one window is being displayed, that window is split in two, with one
+window showing the same buffer as before, and the other one showing the
+newly requested file.  @xref{Windows}.
+
address@hidden C-x 5 C-f
address@hidden find-file-other-frame
address@hidden 5 C-f} (@code{find-file-other-frame}) is like @kbd{C-x C-f}
+except that it creates a new frame in which the file is displayed.
+
address@hidden find-this-file-other-window
+ Use the function @code{find-this-file-other-window} to edit a file
+mentioned in the buffer you are editing or to test if that file exists.
+To do this, use the minibuffer completion after snatching the part or
+all of the filename. By providing a prefix argument, the function calls
address@hidden and switches you to a buffer visiting the file
address@hidden in another window. The function creates a buffer if none
+already exists. This function is similar to @code{find-file-other-window}.
+
address@hidden find-file-hooks
address@hidden find-file-not-found-hooks
+  There are two hook variables that allow extensions to modify the
+operation of visiting files.  Visiting a file that does not exist runs the
+functions in the list @code{find-file-not-found-hooks}; the value of this
+variable is expected to be a list of functions which are
+called one by one until one of them returns address@hidden  Any visiting
+of a file, whether extant or not, expects @code{find-file-hooks} to
+contain list of functions and calls them all, one by one.  In both cases
+the functions receive no arguments.  Visiting a nonexistent file
+runs the @code{find-file-not-found-hooks} first.
+
address@hidden Saving, Reverting, Visiting, Files
address@hidden Saving Files
+
+  @dfn{Saving} a buffer in Emacs means writing its contents back into the file
+that was visited in the buffer.
+
address@hidden @kbd
address@hidden C-x C-s
+Save the current buffer in its visited file (@code{save-buffer}).
address@hidden C-x s
+Save any or all buffers in their visited files (@code{save-some-buffers}).
address@hidden M-~
+Forget that the current buffer has been changed (@code{not-modified}).
address@hidden C-x C-w
+Save the current buffer in a specified file, and record that file as
+the one visited in the buffer (@code{write-file}).
address@hidden M-x set-visited-file-name
+Change file the name under which the current buffer will be saved.
address@hidden table
+
address@hidden C-x C-s
address@hidden save-buffer
+  To save a file and make your changes permanent, type
address@hidden C-s} (@code{save-buffer}).  After saving is finished, @kbd{C-x 
C-s}
+prints a message such as:
+
address@hidden
+Wrote /u/rms/gnu/gnu.tasks
address@hidden example
+
address@hidden
+If the selected buffer is not modified (no changes have been made in it
+since the buffer was created or last saved), Emacs does not save it
+because it would have no effect.  Instead, @kbd{C-x C-s} prints a message
+in the echo area saying:
+
address@hidden
+(No changes need to be saved)
address@hidden example
+
address@hidden C-x s
address@hidden save-some-buffers
+  The command @kbd{C-x s} (@code{save-some-buffers}) can save any or all
+modified buffers.  First it asks, for each modified buffer, whether to
+save it.  The questions should be answered with @kbd{y} or @kbd{n}.
address@hidden C-c}, the key that kills Emacs, invokes
address@hidden and therefore asks the same questions.
+
address@hidden M-~
address@hidden not-modified
+  If you have changed a buffer and do not want the changes to be saved,
+you should take some action to prevent it.  Otherwise, you are liable to
+save it by mistake each time you use @code{save-some-buffers} or a
+related command.  One thing you can do is type @kbd{M-~}
+(@code{not-modified}), which removes the indication that the buffer
+is modified.  If you do this, none of the save commands will believe
+that the buffer needs to be saved.  (@samp{~} is often used as a
+mathematical symbol for `not'; thus @kbd{Meta-~} is `not', metafied.)
+You could also use @code{set-visited-file-name} (see below) to mark the
+buffer as visiting a different file name, not in use for
+anything important. 
+
+You can also undo all the changes made since the file was visited or
+saved, by reading the text from the file again.  This is called
address@hidden  @xref{Reverting}.  Alternatively, you can undo all the
+changes by repeating the undo command @kbd{C-x u}; but this only works
+if you have not made more changes than the undo mechanism can remember.
+
address@hidden set-visited-file-name
+  @kbd{M-x set-visited-file-name} alters the name of the file that the
+current buffer is visiting.  It prompts you for the new file name in the
+minibuffer.  You can also use @code{set-visited-file-name} on a buffer
+that is not visiting a file.  The buffer's name is changed to correspond
+to the file it is now visiting unless the new name is already used by a
+different buffer; in that case, the buffer name is not changed.
address@hidden does not save the buffer in the newly
+visited file; it just alters the records inside Emacs so that it will
+save the buffer in that file.  It also marks the buffer as ``modified''
+so that @kbd{C-x C-s} @i{will} save.
+
address@hidden C-x C-w
address@hidden write-file
+  If you wish to mark a buffer as visiting a different file and save it
+right away, use @kbd{C-x C-w} (@code{write-file}).  It is precisely
+equivalent to @code{set-visited-file-name} followed by @kbd{C-x C-s}.
address@hidden C-s} used on a buffer that is not visiting  a file has the
+same effect as @kbd{C-x C-w}; that is, it reads a file name, marks the
+buffer as visiting that file, and saves it there.  The default file name in
+a buffer that is not visiting a file is made by combining the buffer name
+with the buffer's default directory.
+
+  If Emacs is about to save a file and sees that the date of the latest
+version on disk does not match what Emacs last read or wrote, Emacs
+notifies you of this fact, because it probably indicates a problem caused
+by simultaneous editing and requires your immediate attention.
address@hidden,, Simultaneous Editing}.
+
address@hidden require-final-newline
+  If the variable @code{require-final-newline} is address@hidden, Emacs
+puts a newline at the end of any file that doesn't already end in one,
+every time a file is saved or written.
+
address@hidden write-file-hooks
address@hidden after-save-hook
+  Use the hook variable @code{write-file-hooks} to implement other ways
+to write files, and specify things to be done before files are written.  The
+value of this variable should be a list of Lisp functions.  When a file
+is to be written, the functions in the list are called, one by one, with
+no arguments.  If one of them returns a address@hidden value, Emacs
+takes this to mean that the file has been written in some suitable
+fashion; the rest of the functions are not called, and normal writing is
+not done. Use the hook variable @code{after-save-hook} to list
+all the functions to be called after writing out a buffer to a file.
+
address@hidden
+* Backup::       How Emacs saves the old version of your file.
+* Interlocking:: How Emacs protects against simultaneous editing
+                  of one file by two users.
address@hidden menu
+
address@hidden Backup, Interlocking, Saving, Saving
address@hidden Backup Files
address@hidden backup file
address@hidden make-backup-files
+
+  Because Unix does not provide version numbers in file names, rewriting a
+file in Unix automatically destroys all record of what the file used to
+contain.  Thus, saving a file from Emacs throws away the old contents of
+the file---or it would, except that Emacs carefully copies the old contents
+to another file, called the @dfn{backup} file, before actually saving.
+(Make sure that the variable @code{make-backup-files} is address@hidden
+Backup files are not written if this variable is @code{nil}).
+
+  At your option, Emacs can keep either a single backup file or a series of
+numbered backup files for each file you edit.
+
+  Emacs makes a backup for a file only the first time a file is saved
+from one buffer.  No matter how many times you save a file, its backup file
+continues to contain the contents from before the file was visited.
+Normally this means that the backup file contains the contents from before
+the current editing session; however, if you kill the buffer and then visit
+the file again, a new backup file is made by the next save.
+
address@hidden
+* Names: Backup Names.         How backup files are named;
+                               Choosing single or numbered backup files.
+* Deletion: Backup Deletion.   Emacs deletes excess numbered backups.
+* Copying: Backup Copying.     Backups can be made by copying or renaming.
address@hidden menu
+
address@hidden Backup Names, Backup Deletion, Backup, Backup
address@hidden Single or Numbered Backups
+
+  If you choose to have a single backup file (the default),
+the backup file's name is constructed by appending @samp{~} to the
+file name being edited; thus, the backup file for @file{eval.c} is
address@hidden
+
+  If you choose to have a series of numbered backup files, backup file
+names are made by appending @samp{.~}, the number, and another @samp{~} to
+the original file name.  Thus, the backup files of @file{eval.c} would be
+called @file{eval.c.~1~}, @file{eval.c.~2~}, and so on, through names
+like @file{eval.c.~259~} and beyond.
+
+  If protection stops you from writing backup files under the usual names,
+the backup file is written as @file{%backup%~} in your home directory.
+Only one such file can exist, so only the most recently made backup is
+available.
+
address@hidden version-control
+  The choice of single backup or numbered backups is controlled by the
+variable @code{version-control}.  Its possible values are:
+
address@hidden @code
address@hidden t
+Make numbered backups.
address@hidden nil
+Make numbered backups for files that have numbered backups already.
+Otherwise, make single backups.
address@hidden never
+Never make numbered backups; always make single backups.
address@hidden table
+
address@hidden
address@hidden may be set locally in an individual buffer to
+control the making of backups for that buffer's file.  For example,
+Rmail mode locally sets @code{version-control} to @code{never} to make sure
+that there is only one backup for an Rmail file.  @xref{Locals}.
+
address@hidden Backup Deletion, Backup Copying, Backup Names, Backup
address@hidden Automatic Deletion of Backups
+
address@hidden kept-old-versions
address@hidden kept-new-versions
+  To prevent unlimited consumption of disk space, Emacs can delete numbered
+backup versions automatically.  Generally Emacs keeps the first few backups
+and the latest few backups, deleting any in between.  This happens every
+time a new backup is made.  The two variables that control the deletion are
address@hidden and @code{kept-new-versions}.  Their values are, respectively
+the number of oldest (lowest-numbered) backups to keep and the number of
+newest (highest-numbered) ones to keep, each time a new backup is made.
+The values are used just after a new backup version is made;
+that newly made backup is included in the count in @code{kept-new-versions}.
+By default, both variables are 2.
+
address@hidden delete-old-versions
+  If @code{delete-old-versions} is address@hidden,  excess
+middle versions are deleted without notification.  If it is @code{nil}, the
+default, you are asked whether the excess middle versions should
+really be deleted.
+
+  You can also use Dired's @kbd{.} (Period) command to delete old versions.
address@hidden
+
address@hidden Backup Copying,  , Backup Deletion, Backup
address@hidden Copying vs.@: Renaming
+
+  You can make backup files by copying the old file or by renaming it.
+This makes a difference when the old file has multiple names.  If you
+rename the old file into the backup file, the alternate names
+become names for the backup file.  If you copy the old file instead,
+the alternate names remain names for the file that you are editing,
+and the contents accessed by those names will be the new contents.
+
+  How you make a backup file may also affect the file's owner
+and group.  If you use copying, they do not change.  If renaming is used,
+you become the file's owner, and the file's group becomes the default
+(different operating systems have different defaults for the group).
+
+  Having the owner change is usually a good idea, because then the owner
+is always the person who last edited the file.  Occasionally there is a 
+file whose owner should not change.  Since most files should change
+owners, it is a good idea to use local variable lists to set 
address@hidden for the special cases where the 
+owner should not change (@pxref{File Variables}).
+
address@hidden backup-by-copying
address@hidden backup-by-copying-when-linked
address@hidden backup-by-copying-when-mismatch
+  Three variables control the choice of renaming or copying.
+Normally, renaming is done.  If the variable @code{backup-by-copying} is
address@hidden, copying is used.  Otherwise, if the variable
address@hidden is address@hidden, copying is
+done for files that have multiple names, but renaming may still be done when
+the file being edited has only one name.  If the variable
address@hidden is address@hidden, copying is
+done if renaming would cause the file's owner or group to change.  @refill
+
address@hidden Interlocking,  , Backup, Saving
address@hidden Protection Against Simultaneous Editing
+
address@hidden file dates
address@hidden simultaneous editing
+  Simultaneous editing occurs when two users visit the same file, both
+make changes, and both save their changes.  If no one was informed that
+this was happening, and you saved first, you would later find that your
+changes were lost.  On some systems, Emacs notices immediately when the
+second user starts to change a file already being edited, and issues a
+warning.  When this is not possible, or if the second user has started
+to change the file despite the warning, Emacs checks when the file is
+saved, and issues a second warning when a user is about to overwrite a
+file containing another user's changes.  If you are the user editing the
+file, you can take corrective action at this point and prevent actual
+loss of work.
+
address@hidden ask-user-about-lock
+  When you make the first modification in an Emacs buffer that is visiting
+a file, Emacs records that you have locked the file.  (It does this by
+writing another file in a directory reserved for this purpose.)  The lock
+is removed when you save the changes.  The idea is that the file is locked
+whenever the buffer is modified.  If you begin to modify the buffer while
+the visited file is locked by someone else, this constitutes a collision,
+and Emacs asks you what to do.  It does this by calling the Lisp function
address@hidden, which you can redefine to customize what it
+does.  The standard definition of this function asks you a
+question and accepts three possible answers:
+
address@hidden @kbd
address@hidden s
+Steal the lock.  Whoever was already changing the file loses the lock,
+and you get the lock.
address@hidden p
+Proceed.  Go ahead and edit the file despite its being locked by someone else.
address@hidden q
+Quit.  This causes an error (@code{file-locked}) and the modification you
+were trying to make in the buffer does not actually take place.
address@hidden table
+
+  Note that locking works on the basis of a file name; if a file has
+multiple names, Emacs does not realize that the two names are the same file
+and cannot prevent two users from editing it simultaneously under different
+names.  However, basing locking on names means that Emacs can interlock the
+editing of new files that do not really exist until they are saved.
+
+  Some systems are not configured to allow Emacs to make locks.  On
+these systems, Emacs cannot detect trouble in advance, but it can still
+detect it in time to prevent you from overwriting someone else's changes.
+
+  Every time Emacs saves a buffer, it first checks the last-modification
+date of the existing file on disk to see that it has not changed since the
+file was last visited or saved.  If the date does not match, it implies
+that changes were made in the file in some other way, and these changes are
+about to be lost if Emacs actually does save.  To prevent this, Emacs
+prints a warning message and asks for confirmation before saving.
+Occasionally you will know why the file was changed and know that it does
+not matter; then you can answer @kbd{yes} and proceed.  Otherwise, you should
+cancel the save with @kbd{C-g} and investigate the situation.
+
+  The first thing you should do when notified that simultaneous editing
+has already taken place is to list the directory with @kbd{C-u C-x C-d}
+(@pxref{ListDir,,Directory Listing}).  This will show the file's current
+author.  You should attempt to contact that person and ask him not to
+continue editing.  Often the next step is to save the contents of your
+Emacs buffer under a different name, and use @code{diff} to compare the
+two address@hidden
+
+  Simultaneous editing checks are also made when you visit a file that
+is already visited with @kbd{C-x C-f} and when you start to modify a
+file.  This is not strictly necessary, but it is useful to find out
+about such a problem as early as possible, when corrective action takes
+less work.
+
address@hidden set-default-file-modes
address@hidden file protection
+Another way to protect your file is to set the read, write, and
+executable permissions for the file. Use the function
address@hidden to set the UNIX @code{umask} value to the
address@hidden argument. The @code{umask} value is the default protection
+mode for new files.
+
address@hidden Reverting, Auto Save, Saving, Files
address@hidden Reverting a Buffer
address@hidden revert-buffer
address@hidden drastic changes
+
+  If you have made extensive changes to a file and then change your mind
+about them, you can get rid of all changes by reading in the previous
+version of the file.  To do this, use @kbd{M-x revert-buffer}, which
+operates on the current buffer.  Since reverting a buffer can result in
+very extensive changes, you must confirm it with @kbd{yes}.
+
+  You may request that @code{revert-buffer} check for an auto-save file
+that is more recent than the visited file by providing a prefix
+argument.  If a recent auto-save file exists, @code{revert-buffer}
+offers to read the auto-save file instead of the visited file
+(@pxref{Auto Save}).  Emacs asks you about the auto-save file before the
+request for confirmation of the @kbd{revert-buffer} operation, and
+demands @kbd{y} or @kbd{n} as an answer.  If you have started to type
address@hidden to confirm the revert operation, the @kbd{y} will answer the
+question about using the auto-save file, but the @kbd{es} will not be
+valid confirmation for the reversion.  This gives you a chance to cancel
+the operation with @kbd{C-g} and try again with the answers you really
+intend.
+
+  @code{revert-buffer} preserves the value of point (in characters from
+the beginning of the file).  If the file was edited only slightly, you
+will be at approximately the same piece of text after reverting as
+before.  If you have made more extensive changes, after reversion point
+may be in a totally different context than your last edits before
+reversion.
+
+A buffer reverted from its visited file is marked ``not modified'' until
+you make a change.  The buffer's modes will also be recalculated, by
address@hidden
+
+  Some kinds of buffers whose contents reflect data bases other than files,
+such as Dired buffers, can also be reverted.  For them, reverting means
+refreshing their contents from the appropriate data.  Buffers created
+randomly with @kbd{C-x b} cannot be reverted; @code{revert-buffer}
+reports an error when asked to do so.
+
address@hidden Auto Save, Version Control, Reverting, Files
address@hidden Auto-Saving: Protection Against Disasters
address@hidden Auto-Save mode
address@hidden crashes
+
+  Emacs saves all the visited files from time to time (based on counting
+your keystrokes) without being asked.  This is called @dfn{auto-saving}.
+It prevents you from losing more than a limited amount of work if the
+system crashes.
+
+  When Emacs determines it is time for auto-saving, each buffer is
+considered and is auto-saved if auto-saving is turned on for it and it has
+changed since the last time it was auto-saved.  If any auto-saving is
+done, the message @samp{Auto-saving...} is displayed in the echo area until
+auto-saving is finished.  Errors occurring during auto-saving are caught
+so that they do not interfere with the execution of commands you have been
+typing.
+
address@hidden
+* Files: Auto Save Files.
+* Control: Auto Save Control.
+* Recover::            Recovering text from auto-save files.
address@hidden menu
+
address@hidden Auto Save Files, Auto Save Control, Auto Save, Auto Save
address@hidden Auto-Save Files
+
+  Auto-saving does not normally write to the files you visited, because
+it can be undesirable to save a program that is in an inconsistent
+state when you have made only half of a planned change.  Instead, auto-saving
+is done in a different file called the @dfn{auto-save file}, and the
+visited file is changed only when you save explicitly, for example, 
+with @kbd{C-x C-s}.
+
+  Normally, the name of the auto-save file is generated by appending
address@hidden to the front and back of the visited file name.  Thus, a buffer
+visiting file @file{foo.c} would be auto-saved in a file @file{#foo.c#}.
+Most buffers that are not visiting files are auto-saved only if you
+request it explicitly; when they are auto-saved, the auto-save file name
+is generated by appending @samp{#%} to the front and @samp{#} to the
+back of buffer name.  For example, the @samp{*mail*} buffer in which you
+compose messages to be sent is auto-saved in a file named
address@hidden  Names of auto-save files are generated this way
+unless you customize the functions @code{make-auto-save-file-name} and
address@hidden to do something different.  The file name
+to be used for auto-saving a buffer is calculated at the time auto-saving is
+turned on in that buffer.
+
address@hidden auto-save-visited-file-name
+  If you want auto-saving to be done in the visited file, set the variable
address@hidden to be address@hidden  In this mode,
+there is really no difference between auto-saving and explicit saving.
+
address@hidden delete-auto-save-files
+  Emacs deletes a buffer's auto-save file when you explicitly save the
+buffer.  To inhibit the deletion, set the variable
address@hidden to @code{nil}.  Changing the visited file
+name with @kbd{C-x C-w} or @code{set-visited-file-name} renames any
+auto-save file to correspond to the new visited name.
+
address@hidden Auto Save Control, Recover, Auto Save Files, Auto Save
address@hidden Controlling Auto-Saving
+
address@hidden auto-save-default
address@hidden auto-save-mode
+  Each time you visit a file, auto-saving is turned on for that file's
+buffer if the variable @code{auto-save-default} is address@hidden (but
+not in batch mode; @pxref{Entering Emacs}).  The default for this
+variable is @code{t}, so Emacs auto-saves buffers that visit files by
+default.  You can use the command @kbd{M-x auto-save-mode} to turn
+auto-saving for a buffer on or off.  Like other minor mode commands,
address@hidden auto-save-mode} turns auto-saving on with a positive argument,
+off with a zero or negative argument; with no argument, it toggles.
+
address@hidden auto-save-interval
address@hidden do-auto-save
+  Emacs performs auto-saving periodically based on counting how many
+characters you have typed since the last time auto-saving happened.  The
+variable @code{auto-save-interval} specifies the number of characters
+between auto-saves.  By default, it is 300.  Emacs also auto-saves
+whenever you call the function @code{do-auto-save}.
+
+  Emacs also does auto-saving whenever it gets a fatal error.  This
+includes killing the Emacs job with a shell command such as @code{kill
+-emacs}, or disconnecting a phone line or network connection.
+
address@hidden auto-save-timeout
+You can set the number of seconds of idle time before an auto-save is
+done. Setting the value of the variable @code{auto-save-timeout} to zero or 
address@hidden will  disable auto-saving due to idleness.
+
+The actual amount of idle time between auto-saves is logarithmically
+related to the size of the current buffer.  This variable is the number
+of seconds after which an auto-save will happen when the current buffer
+is 50k or less; the timeout will be 2 1/4 times this in a 200k buffer, 3
+3/4 times this in a 1000k buffer, and 4 1/2 times this in a 2000k
+buffer.
+
+For this variable to have any effect, you must do @code{(require 'timer)}.
+
address@hidden Recover,  , Auto Save Control, Auto Save
address@hidden Recovering Data from Auto-Saves
+
address@hidden recover-file
+  If you want to use the contents of an auto-save file to recover from a
+loss of data, use the command @kbd{M-x recover-file @key{RET} @var{file}
address@hidden  Emacs visits @var{file} and then (after your confirmation)
+restores the contents from the auto-save file @address@hidden  You
+can then save the file with @kbd{C-x C-s} to put the recovered text into
address@hidden itself.  For example, to recover file @file{foo.c} from its
+auto-save file @file{#foo.c#}, do:@refill
+
address@hidden
+M-x recover-file @key{RET} foo.c @key{RET}
+C-x C-s
address@hidden example
+
+  Before asking for confirmation, @kbd{M-x recover-file} displays a
+directory listing describing the specified file and the auto-save file,
+so you can compare their sizes and dates.  If the auto-save file
+is older, @kbd{M-x recover-file} does not offer to read it.
+
+  Auto-saving is disabled by @kbd{M-x recover-file} because using
+this command implies that the auto-save file contains valuable data
+from a past session.  If you save the data in the visited file and
+then go on to make new changes, turn auto-saving back on
+with @kbd{M-x auto-save-mode}.
+
address@hidden Version Control, ListDir, Auto Save, Files
address@hidden Version Control
address@hidden version control
+
+  @dfn{Version control systems} are packages that can record multiple
+versions of a source file, usually storing the unchanged parts of the
+file just once.  Version control systems also record history information
+such as the creation time of each version, who created it, and a 
+description of what was changed in that version.
+
+  The GNU project recommends the version control system known as RCS,
+which is free software and available from the Free Software Foundation.
+Emacs supports use of either RCS or SCCS (a proprietary, but widely
+used, version control system that is not quite as powerful as RCS)
+through a facility called VC.  The same Emacs commands work with either
+RCS or SCCS, so you hardly have to know which one of them you are
+using.
+
address@hidden
+* Concepts of VC::              Basic version control information;
+                                  checking files in and out.
+* Editing with VC::             Commands for editing a file maintained
+                                  with version control.
+* Variables for Check-in/out::  Variables that affect the commands used
+                                  to check files in or out.
+* Log Entries::                 Logging your changes.
+* Change Logs and VC::          Generating a change log file from log
+                                  entries. 
+* Old Versions::                Examining and comparing old versions.
+* VC Status::                   Commands to view the VC status of files and
+                                  look at log entries.
+* Renaming and VC::             A command to rename both the source and
+                                  master file correctly.
+* Snapshots::                   How to make and use snapshots, a set of
+                                  file versions that can be treated as a unit.
+* Version Headers::             Inserting version control headers into
+                                  working files.
address@hidden menu
+
address@hidden Concepts of VC, Editing with VC, Version Control, Version Control
address@hidden Concepts of Version Control
+
address@hidden RCS
address@hidden SCCS
address@hidden master file
address@hidden registered file
address@hidden work file
+   When a file is under version control, we also say that it is
address@hidden in the version control system.  Each registered file
+has a corresponding @dfn{master file} which represents the file's
+present state plus its change history, so that you can reconstruct from
+it either the current version or any specified earlier version.  Usually
+the master file also records a @dfn{log entry} for each version describing
+what was changed in that version.
+
+  The file that is maintained under version control is sometimes called
+the @dfn{work file} corresponding to its master file.
+
address@hidden checking out files
address@hidden checking in files
address@hidden locking and version control
+   To examine a file, you @dfn{check it out}.  This extracts a version
+of the source file (typically, the most recent) from the master file.
+If you want to edit the file, you must check it out @dfn{locked}.  Only
+one user can do this at a time for any given source file.  (This kind 
+of locking is completely unrelated to the locking that Emacs uses to
+detect simultaneous editing of a file.)
+
+  When you are done with your editing, you must @dfn{check in} the new
+version.  This records the new version in the master file, and unlocks
+the source file so that other people can lock it and thus modify it.
+
+  Checkin and checkout are the basic operations of version control.  You
+can do both of them with a single Emacs command: @address@hidden C-q}}
+(@code{vc-toggle-read-only}).
+
+  A @dfn{snapshot} is a coherent collection of versions of the various
+files that make up a program.  @xref{Snapshots}.
+
address@hidden Editing with VC, Variables for Check-in/out, Concepts of VC, 
Version Control
address@hidden Editing with Version Control
+
+  When you visit a file that is maintained using version control, the
+mode line displays @samp{RCS} or @samp{SCCS} to inform you that version
+control is in use, and also (in case you care) which low-level system
+the file is actually stored in.  Normally, such a source file is
+read-only, and the mode line indicates this with @samp{%%}.  With RCS,
+the mode line also indicates the number of the head version, which is
+normally also the version you are looking at.
+
+  These are the commands for editing a file maintained with
+version control:
+
address@hidden @kbd
address@hidden C-x C-q
+Check the visited file in or out.
+
address@hidden C-x v u
+Revert the buffer and the file to the last checked in version.
+
address@hidden C-x v c
+Remove the last-entered change from the master for the visited file.
+This undoes your last check-in.
+
address@hidden C-x v i
+Register the visited file in version control.
address@hidden table
+
address@hidden
+(@kbd{C-x v} is the prefix key for version control commands; all of these
+commands except for @kbd{C-x C-q} start with @kbd{C-x v}.)
+
address@hidden C-x C-q @r{(version control)}
+  When you want to modify a file maintained with version control, type
address@hidden C-q} (@code{vc-toggle-read-only}).  This @dfn{checks out} the
+file, and tells RCS or SCCS to lock the file.  This means making the
+file writable for you (but not for anyone else).
+
address@hidden log entry
+  When you are finished editing the file, type @kbd{C-x C-q} again.
+When used on a file that is checked out, this command checks the file
+in.  But check-in does not start immediately; first, you must enter the
address@hidden entry}---a description of the changes in the new version.
address@hidden C-q} pops up a buffer for you to enter this in.  When you are
+finished typing in the log entry, type @kbd{C-c C-c} to terminate it; this is
+when actual check-in takes place.
+
+  Once you have checked in your changes, the file is unlocked, so that
+other users can lock it and modify it.
+
address@hidden vc-make-backup-files
+  Emacs does not save backup files for source files that are maintained
+with version control.  If you want to make backup files despite version
+control, set the variable @code{vc-make-backup-files} to a
address@hidden value.
+
address@hidden vc-keep-workfiles
+  Normally the work file exists all the time, whether it is locked or
+not.  If you set @code{vc-keep-workfiles} to @code{nil}, then checking
+in a new version with @kbd{C-x C-q} deletes the work file; but any
+attempt to visit the file with Emacs creates it again.
+
+  It is not impossible to lock a file that someone else has locked.  If
+you try to check out a file that is locked, @kbd{C-x C-q} asks you
+whether you want to ``steal the lock.''  If you say yes, the file
+becomes locked by you, but a message is sent to the person who had
+formerly locked the file, to inform him of what has happened.  The mode
+line indicates that a file is locked by someone else by displaying the
+login name of that person, before the version number.
+
address@hidden C-x v u
address@hidden vc-revert-buffer
+  If you want to discard your current set of changes and revert to the
+last version checked in, use @kbd{C-x v u} (@code{vc-revert-buffer}).
+This cancels your last check-out, leaving the file unlocked.  If you want
+to make a different set of changes, you must first check the file out
+again.  @kbd{C-x v u} requires confirmation, unless it sees that 
+you haven't made any changes since the last checked-in version.
+
+  @kbd{C-x v u} is also the command to use if you lock a file and then
+don't actually change it.
+
address@hidden C-x v c
address@hidden vc-cancel-version
+  You can cancel a change after checking it in, with @kbd{C-x v c}
+(@code{vc-cancel-version}).  This command discards all record of the
+most recent checked in version, so be careful about using it.  It
+requires confirmation with @kbd{yes}.  By default, @kbd{C-x v c} reverts
+your workfile and buffer to the previous version (the one that precedes
+the version that is deleted), but you can prevent the reversion by
+giving the command a prefix argument.  Then the buffer does not change.
+
+  This command with a prefix argument is useful when you have checked in
+a change and then discover a trivial error in it; you can cancel the
+erroneous check-in, fix the error, and repeat the check-in.
+
+  Be careful when invoking @kbd{C-x v c}, as it is easy to throw away a
+lot of work with it.  To help you be careful, this command always
+requires confirmation with @samp{yes}.
+
address@hidden C-x v i
address@hidden vc-register
address@hidden vc-default-back-end
+  You can register the visited file for version control using
address@hidden@kbd{C-x v i}} (@code{vc-register}).  If the variable
address@hidden is address@hidden, it specifies which
+version control system to use; otherwise, this uses RCS if it is
+installed on your system and SCCS if not.  After @kbd{C-x v i},
+the file is unlocked and read-only.  Type @kbd{C-x C-q} if you wish to
+edit it.
+
+  By default, the initial version number is 1.1.  If you want to use a
+different number, give @kbd{C-x v i} a prefix argument; then it reads
+the initial version number using the minibuffer.
+
address@hidden vc-initial-comment
+  If @code{vc-initial-comment} is address@hidden, @kbd{C-x v i} reads
+an initial comment (much like a log entry) to describe the purpose of
+this source file.
+
address@hidden C-u C-x v v
address@hidden vc-next-action
+  To specify the version number for a subsequent checkin, use the
+command @kbd{C-u C-x v v}.  @kbd{C-x v v} (@code{vc-next-action}) is the
+command that @kbd{C-x C-q} uses to do the ``real work'' when the visited
+file uses version control.  When used for checkin, and given a prefix
+argument, it reads the version number with the minibuffer.
+
address@hidden Variables for Check-in/out, Log Entries, Editing with VC, 
Version Control
address@hidden Variables Affecting Check-in and Check-out
address@hidden There is no need to tell users about vc-master-templates.
+
address@hidden vc-suppress-confirm
+  If @code{vc-suppress-confirm} is address@hidden, then @kbd{C-x C-q}
+and @kbd{C-x v i} can save the current buffer without asking, and
address@hidden v u} also operates without asking for confirmation.
+(This variable does not affect @kbd{C-x v c}; that is so drastic
+that it should always ask for confirmation.)
+
address@hidden vc-command-messages
+  VC mode does much of its work by running the shell commands for RCS
+and SCCS.  If @code{vc-command-messages} is address@hidden, VC displays
+messages to indicate which shell commands it runs, and additional
+messages when the commands finish.
+
+  Normally, VC assumes that it can deduce the locked/unlocked state of
+files by looking at the file permissions of the work file; this is
+fast.  However, if the @file{RCS} or @file{SCCS} subdirectory is
+actually a symbolic link, then VC does not trust the file permissions to
+reflect this status.
+
address@hidden vc-mistrust-permissions
+You can specify the criterion for whether to trust the file permissions
+by setting the variable @code{vc-mistrust-permissions}.  Its value may
+be @code{t} (always mistrust the file permissions and check the master
+file), @code{nil} (always trust the file permissions), or a function of
+one argument which makes the decision.  The argument is the directory
+name of the @file{RCS} or @file{SCCS} subdirectory.  A address@hidden
+value from the function says to mistrust the file permissions.
+
+  If you find that the file permissions of work files are changed
+erroneously, set @code{vc-mistrust-permissions} to @code{t}.  Then VC
+always checks the master file to determine the file's status.
+
address@hidden vc-path
+  You can specify additional directories to search for version control
+programs by setting the variable @code{vc-path}.  These directories
+are searched before the usual search path.  The proper result usually
+happens automatically.
+
address@hidden Log Entries, Change Logs and VC, Variables for Check-in/out, 
Version Control
address@hidden Log Entries
+
+  When you're editing an initial comment or log entry for inclusion in a
+master file, finish your entry by typing @kbd{C-c C-c}.
+
address@hidden @kbd
address@hidden C-c C-c
+Finish the comment edit normally (@code{vc-finish-logentry}).
+This finishes check-in.
address@hidden table
+
+  To abort check-in, just don't type @kbd{C-c C-c} in that buffer.  You
+can switch buffers and do other editing.  As long as you don't try to
+check in another file, the entry you were editing remains in its
+buffer, and you can go back to that buffer at any time to complete the
+check-in.
+
+  If you change several source files for the same reason, it is often
+convenient to specify the same log entry for many of the files.  To do
+this, use the history of previous log entries.  The commands @kbd{M-n},
address@hidden, @kbd{M-s} and @kbd{M-r} for doing this work just like the
+minibuffer history commands (except that these versions are used outside
+the minibuffer).
+
address@hidden vc-log-mode-hook
+  Each time you check in a file, the log entry buffer is put into VC Log
+mode, which involves running two hooks: @code{text-mode-hook} and
address@hidden
+
address@hidden Change Logs and VC, Old Versions, Log Entries, Version Control
address@hidden Change Logs and VC
+
+  If you use RCS for a program and also maintain a change log file for
+it (@pxref{Change Log}), you can generate change log entries
+automatically from the version control log entries:
+
address@hidden @kbd
address@hidden C-x v a
address@hidden C-x v a
address@hidden vc-update-change-log
+Visit the current directory's change log file and create new entries for
+versions checked in since the most recent entry in the change log file
+(@code{vc-update-change-log}).
+
+This command works with RCS only; it does not work with SCCS.
address@hidden table
+
+  For example, suppose the first line of @file{ChangeLog} is dated 10
+April 1992, and that the only check-in since then was by Nathaniel
+Bowditch to @file{rcs2log} on 8 May 1992 with log text @samp{Ignore log
+messages that start with `#'.}.  Then @kbd{C-x v a} visits
address@hidden and inserts text like this:
+
address@hidden
address@hidden
+Fri May  8 21:45:00 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * rcs2log: Ignore log messages that start with `#'.
address@hidden group
address@hidden smallexample
+
address@hidden
+You can then edit the new change log entry further as you wish.
+
+  Normally, the log entry for file @file{foo} is displayed as @samp{*
+foo: @var{text of log entry}}.  The @samp{:} after @file{foo} is omitted
+if the text of the log entry starts with @address@hidden(@var{functionname}):
+}}.  For example, if the log entry for @file{vc.el} is
address@hidden(vc-do-command): Check call-process status.}, then the text in
address@hidden looks like this:
+
address@hidden
address@hidden
+Wed May  6 10:53:00 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * vc.el (vc-do-command): Check call-process status.
address@hidden group
address@hidden smallexample
+
+  When @kbd{C-x v a} adds several change log entries at once, it groups
+related log entries together if they all are checked in by the same
+author at nearly the same time.  If the log entries for several such
+files all have the same text, it coalesces them into a single entry.
+For example, suppose the most recent checkins have the following log
+entries:
+
address@hidden
address@hidden For @file{vc.texinfo}:
+Fix expansion typos.
address@hidden For @file{vc.el}:
+Don't call expand-file-name.
address@hidden For @file{vc-hooks.el}:
+Don't call expand-file-name.
address@hidden example
+
+  They appear like this in @file{ChangeLog}:
+
address@hidden
address@hidden
+Wed Apr  1 08:57:59 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * vc.texinfo: Fix expansion typos.
+
+        * vc.el, vc-hooks.el: Don't call expand-file-name.
address@hidden group
address@hidden smallexample
+
+  Normally, @kbd{C-x v a} separates log entries by a blank line, but you
+can mark several related log entries to be clumped together (without an
+intervening blank line) by starting the text of each related log entry
+with a label of the form @address@hidden@address@hidden@} }}.  The label
+itself is not copied to @file{ChangeLog}.  For example, suppose the log
+entries are:
+
address@hidden
address@hidden For @file{vc.texinfo}:
address@hidden@} Fix expansion typos.
address@hidden For @file{vc.el}:
address@hidden@} Don't call expand-file-name.
address@hidden For @file{vc-hooks.el}:
address@hidden@} Don't call expand-file-name.
address@hidden example
+
address@hidden
+Then the text in @file{ChangeLog} looks like this:
+
address@hidden
address@hidden
+Wed Apr  1 08:57:59 1992  Nathaniel Bowditch  (nat@@apn.org)
+
+        * vc.texinfo: Fix expansion typos.
+        * vc.el, vc-hooks.el: Don't call expand-file-name.
address@hidden group
address@hidden smallexample
+
+  A log entry whose text begins with @samp{#} is not copied to
address@hidden  For example, if you merely fix some misspellings in
+comments, you can log the change with an entry beginning with @samp{#}
+to avoid putting such trivia into @file{ChangeLog}.
+
address@hidden Old Versions, VC Status, Change Logs and VC, Version Control
address@hidden Examining And Comparing Old Versions
+
address@hidden @kbd
address@hidden C-x v ~ @var{version} @key{RET}
+Examine version @var{version} of the visited file, in a buffer of its
+own (@code{vc-version-other-window}).
+
address@hidden C-x v =
+Compare the current buffer contents with the latest checked-in version
+of the file.
+
address@hidden C-u C-x v = @var{file} @key{RET} @var{oldvers} @key{RET} 
@var{newvers} @key{RET}
+Compare the specified two versions of @var{file}.
address@hidden table
+
address@hidden vc-version-other-window
address@hidden C-x v ~
+  You can examine any version of a file by first visiting it, and then
+using @kbd{C-x v ~ @var{version} @key{RET}}
+(@code{vc-version-other-window}).  This puts the text of version
address@hidden in a file named @address@hidden@var{version}~},
+then visits it in a separate window.
+
address@hidden vc-diff
address@hidden C-x v =
+  To compare two versions of a file, use the command @kbd{C-x v =}
+(@code{vc-diff}).
+
+  Plain @kbd{C-x v =} compares the current buffer contents (saving them
+in the file if necessary) with the last checked-in version of the file.
+With a prefix argument, @kbd{C-x v =} reads a file name and two version
+numbers, then compares those versions of the specified file.
+
+  If you supply a directory name instead of the name of a work file,
+this command compares the two specified versions of all registered files
+in that directory and its subdirectories.  You can also specify a
+snapshot name (@pxref{Snapshots}) instead of one or both version
+numbers.
+
+  You can specify a checked-in version by its number; you can specify
+the most recent checked-in version with an empty version number.
+
+  This command works by running the @code{vcdiff} utility, getting the
+options from the variable @code{diff-switches}.  It displays the output
+in a special buffer in another window.  Unlike the @kbd{M-x diff}
+command, @kbd{C-x v =} does not try to find the changes in the old and
+new versions.  This is because one or both versions normally do not
+exist as files.  They exist only in the records of the master file.
address@hidden Files}, for more information about @kbd{M-x diff}.
+
address@hidden VC Status, Renaming and VC, Old Versions, Version Control
address@hidden VC Status Commands
+
address@hidden C-x v l
address@hidden vc-print-log
+  To view the detailed version control status and history of a file,
+type @kbd{C-x v l} (@code{vc-print-log}).  It displays the history of
+changes to the current file, including the text of the log entries.  The
+output appears in a separate window.
+
address@hidden C-x v d
address@hidden vc-directory
+  When you are working on a large program, it's often useful to find all
+the files that are currently locked, or all the files maintained in
+version control at all.  You can use @kbd{C-x v d} (@code{vc-directory})
+to show all the locked files in or beneath the current directory.  This
+includes all files that are locked by any user.  @kbd{C-u C-x v d} lists
+all files in or beneath the current directory that are maintained with
+version control.
+
+  The list of files is displayed as a buffer that uses an augmented
+Dired mode.  The names of the users locking various files are shown (in
+parentheses) in place of the owner and group.  All the normal Dired
+commands work in this buffer.  Most interactive VC commands work also,
+and apply to the file name on the current line.
+
+  The @kbd{C-x v v} command (@code{vc-next-action}), when used in the
+augmented Dired buffer, operates on all the marked files (or the file on
+the current line).  If it operates on more than one file, it handles
+each file according to its current state; thus, it may check out one
+file and check in another (because it is already checked out).  If it
+has to check in any files, it reads a single log entry, then uses that
+text for all the files being checked in.  This can be convenient for
+registering or checking in several files at once, as part of the same
+change.
+
address@hidden Renaming and VC, Snapshots, VC Status, Version Control
address@hidden Renaming VC Work Files and Master Files
+
address@hidden vc-rename-file
+  When you rename a registered file, you must also rename its master
+file correspondingly to get proper results.  Use @code{vc-rename-file}
+to rename the source file as you specify, and rename its master file
+accordingly.  It also updates any snapshots (@pxref{Snapshots}) that
+mention the file, so that they use the new name; despite this, the
+snapshot thus modified may not completely work (@pxref{Snapshot
+Caveats}).
+
+  You cannot use @code{vc-rename-file} on a file that is locked by
+someone else.
+
address@hidden Snapshots, Version Headers, Renaming and VC, Version Control
address@hidden Snapshots
address@hidden snapshots and version control
+
+  A @dfn{snapshot} is a named set of file versions (one for each
+registered file) that you can treat as a unit.  One important kind of
+snapshot is a @dfn{release}, a (theoretically) stable version of the
+system that is ready for distribution to users.
+
address@hidden
+* Making Snapshots::           The snapshot facilities.
+* Snapshot Caveats::           Things to be careful of when using snapshots.
address@hidden menu
+
address@hidden Making Snapshots, Snapshot Caveats, Snapshots, Snapshots
address@hidden Making and Using Snapshots
+
+  There are two basic commands for snapshots; one makes a
+snapshot with a given name, the other retrieves a named snapshot.
+
address@hidden @code
address@hidden C-x v s
address@hidden vc-create-snapshot
address@hidden C-x v s @var{name} @key{RET}
+Define the last saved versions of every registered file in or under the
+current directory as a snapshot named @var{name}
+(@code{vc-create-snapshot}).
+
address@hidden C-x v r
address@hidden vc-retrieve-snapshot
address@hidden C-x v r @var{name} @key{RET}
+Check out all registered files at or below the current directory level
+using whatever versions correspond to the snapshot @var{name}
+(@code{vc-retrieve-snapshot}).
+
+This command reports an error if any files are locked at or below the
+current directory, without changing anything; this is to avoid
+overwriting work in progress.
address@hidden table
+
+  A snapshot uses a very small amount of resources---just enough to record
+the list of file names and which version belongs to the snapshot.  Thus,
+you need not hesitate to create snapshots whenever they are useful.
+
+  You can give a snapshot name as an argument to @kbd{C-x v =} or
address@hidden v ~} (@pxref{Old Versions}).  Thus, you can use it to compare a
+snapshot against the current files, or two snapshots against each other,
+or a snapshot against a named version.
+
address@hidden Snapshot Caveats,  , Making Snapshots, Snapshots
address@hidden Snapshot Caveats
+
address@hidden named configurations (RCS)
+  VC's snapshot facilities are modeled on RCS's named-configuration
+support.  They use RCS's native facilities for this, so under VC
+snapshots made using RCS are visible even when you bypass VC.
+
address@hidden worded verbosely to avoid overfull hbox.
+  For SCCS, VC implements snapshots itself.  The files it uses contain
+name/file/version-number triples.  These snapshots are visible only
+through VC.
+
+  A snapshot is a set of checked-in versions.  So make sure that all the
+files are checked in and not locked when you make a snapshot.
+
+  File renaming and deletion can create some difficulties with snapshots.
+This is not a VC-specific problem, but a general design issue in version
+control systems that no one has solved very well yet.
+
+  If you rename a registered file, you need to rename its master along
+with it (the command @code{vc-rename-file} does this automatically).  If
+you are using SCCS, you must also update the records of the snapshot, to
+mention the file by its new name (@code{vc-rename-file} does this,
+too).  An old snapshot that refers to a master file that no longer
+exists under the recorded name is invalid; VC can no longer retrieve
+it.  It would be beyond the scope of this manual to explain enough about
+RCS and SCCS to explain how to update the snapshots by hand.
+
+  Using @code{vc-rename-file} makes the snapshot remain valid for
+retrieval, but it does not solve all problems.  For example, some of the
+files in the program probably refer to others by name.  At the very
+least, the makefile probably mentions the file that you renamed.  If you
+retrieve an old snapshot, the renamed file is retrieved under its new
+name, which is not the name that the makefile expects.  So the program
+won't really work as retrieved.
+
address@hidden Version Headers,  , Snapshots, Version Control
address@hidden Inserting Version Control Headers
+
+   Sometimes it is convenient to put version identification strings
+directly into working files.  Certain special strings called
address@hidden headers} are replaced in each successive version by the
+number of that version.
+
address@hidden C-x v h
address@hidden vc-insert-headers
+  You can use the @kbd{C-x v h} command (@code{vc-insert-headers}) to
+insert a suitable header string.
+
address@hidden @kbd
address@hidden C-x v h
+Insert headers in a file for use with your version-control system.
address@hidden table
+
address@hidden vc-header-alist
+  The default header string is @samp{\$Id\$} for RCS and @samp{\%W\%}
+for SCCS. (The actual strings inserted do not have the backslashes
+in them.  They were placed in the Info source file so that the
+strings don't get interpreted as version-control headers when the
+Info source files are maintained under version control.) You can
+specify other headers to insert by setting the variable
address@hidden  Its value is a list of elements of the form
address@hidden(@var{program} . @var{string})} where @var{program} is @code{RCS}
+or @code{SCCS} and @var{string} is the string to use.
+
+  Instead of a single string, you can specify a list of strings; then
+each string in the list is inserted as a separate header on a line of
+its own.
+
+  It is often necessary to use ``superfluous'' backslashes when writing
+the strings that you put in this variable.  This is to prevent the
+string in the constant from being interpreted as a header itself if the
+Emacs Lisp file containing it is maintained with version control.
+
address@hidden vc-comment-alist
+  Each header is inserted surrounded by tabs, inside comment delimiters,
+on a new line at the start of the buffer.  Normally the ordinary comment
+start and comment end strings of the current mode are used, but for
+certain modes, there are special comment delimiters for this purpose;
+the variable @code{vc-comment-alist} specifies them.  Each element of
+this list has the form @code{(@var{mode} @var{starter} @var{ender})}.
+
address@hidden vc-static-header-alist
+  The variable @code{vc-static-header-alist} specifies further strings
+to add based on the name of the buffer.  Its value should be a list of
+elements of the form @code{(@var{regexp} . @var{format})}.  Whenever
address@hidden matches the buffer name, @var{format} is inserted as part
+of the header.  A header line is inserted for each element that matches
+the buffer name, and for each string specified by
address@hidden  The header line is made by processing the
+string from @code{vc-header-alist} with the format taken from the
+element.  The default value for @code{vc-static-header-alist} is:
+
address@hidden
address@hidden
+(("\\.c$" .
+  "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n\
+#endif /* lint */\n"))
address@hidden group
address@hidden example
+
address@hidden
+which specifies insertion of a string of this form:
+
address@hidden
address@hidden
+
+#ifndef lint
+static char vcid[] = "@var{string}";
+#endif /* lint */
address@hidden group
address@hidden example
+
address@hidden ListDir, Comparing Files, Version Control, Files
address@hidden Listing a File Directory
+
address@hidden file directory
address@hidden directory listing
+  Files are organized by Unix into @dfn{directories}.  A @dfn{directory
+listing} is a list of all the files in a directory.  Emacs provides
+directory listings in brief format (file names only) and verbose format
+(sizes, dates, and authors included).
+
address@hidden @kbd
address@hidden C-x C-d @var{dir-or-pattern}
+Print a brief directory listing (@code{list-directory}).
address@hidden C-u C-x C-d @var{dir-or-pattern}
+Print a verbose directory listing.
address@hidden table
+
address@hidden list-directory
address@hidden C-x C-d
+  To print a directory listing, use @kbd{C-x C-d}
+(@code{list-directory}).  This command prompts in the minibuffer for a
+file name which is either a  directory to be listed or pattern
+containing wildcards for the files to be listed.  For example,
+
address@hidden
+C-x C-d /u2/emacs/etc @key{RET}
address@hidden example
+
address@hidden
+lists all the files in directory @file{/u2/emacs/etc}.  An example of
+specifying a file name pattern is:
+
address@hidden
+C-x C-d /u2/emacs/src/*.c @key{RET}
address@hidden example
+
+  Normally, @kbd{C-x C-d} prints a brief directory listing containing just
+file names.  A numeric argument (regardless of value) tells it to print a
+verbose listing (like @code{ls -l}).
+
address@hidden list-directory-brief-switches
address@hidden list-directory-verbose-switches
+  Emacs obtains the text of a directory listing by running @code{ls} in
+an inferior process.  Two Emacs variables control the switches passed to
address@hidden: @code{list-directory-brief-switches} is a string giving the
+switches to use in brief listings (@code{"-CF"} by default).
address@hidden is a string giving the switches
+to use in a verbose listing (@code{"-l"} by default).
+
+The variable @code{directory-abbrev-alist} is an alist of abbreviations
+for file directories.  The list consists of elements of the form
address@hidden(FROM .  TO)}, each meaning to replace @code{FROM} with @code{TO}
+when it appears in a directory name.  This replacement is done when
+setting up the default directory of a newly visited file.  Every @code{FROM}
+string should start with address@hidden'.
+
+Use this feature when you have directories which you normally refer to
+via absolute symbolic links.  Make @code{TO} the name of the link, and
address@hidden the name it is linked to.
+
address@hidden Comparing Files, Dired, ListDir, Files
address@hidden Comparing Files
address@hidden comparing files
+
address@hidden diff
address@hidden diff-switches
+  The command @kbd{M-x diff} compares two files, displaying the
+differences in an Emacs buffer named @samp{*Diff*}.  It works by running
+the @code{diff} program, using options taken from the variable
address@hidden, whose value should be a string.
+
+  The buffer @samp{*Diff*} has Compilation mode as its major mode, so
+you can use @kbd{C-x `} to visit successive changed locations in the two
+source files.  You can also move to a particular hunk of changes and
+type @kbd{C-c C-c} to find the corresponding source location.  You can
+also use the other special commands of Compilation mode: @key{SPC} and
address@hidden for scrolling, and @kbd{M-p} and @kbd{M-n} for cursor motion.
address@hidden
+
address@hidden diff-backup
+  The command @kbd{M-x diff-backup} compares a specified file with its most
+recent backup.  If you specify the name of a backup file,
address@hidden compares it with the source file that it is a backup
+of.
+
address@hidden compare-windows
address@hidden comparing files
+  The command @kbd{M-x compare-windows} compares the text in the current
+window with that in the next window.  Comparison starts at point in each
+window.  Point moves forward in each window, a character at a time in each
+window, until the next characters in the two windows are different.  Then
+the command is finished.  For more information about windows in Emacs,
address@hidden
+
address@hidden compare-ignore-case
+  With a numeric argument, @code{compare-windows} ignores changes in
+whitespace.  If the variable @code{compare-ignore-case} is
address@hidden, it ignores differences in case as well.
+
address@hidden Dired, Misc File Ops, Comparing Files, Files
address@hidden Dired, the Directory Editor
address@hidden Dired
address@hidden deletion (of files)
+
+  Dired makes it easy to delete or visit many of the files in a single
+directory at once.  It creates an Emacs buffer containing a listing of the
+directory.  You can use the normal Emacs commands to move around in this
+buffer and special Dired commands to operate on the files.
+
address@hidden
+* Enter: Dired Enter.         How to invoke Dired.
+* Edit: Dired Edit.           Editing the Dired buffer.
+* Deletion: Dired Deletion.   Deleting files with Dired.
+* Immed: Dired Immed.         Other file operations through Dired.
address@hidden menu
+
address@hidden Dired Enter, Dired Edit, Dired, Dired
address@hidden Entering Dired
+
address@hidden dired
address@hidden C-x d
address@hidden dired-listing-switches
+  To invoke dired, type @kbd{C-x d} or @kbd{M-x dired}.  The command reads a
+directory name or wildcard file name pattern as a minibuffer argument just
+like the @code{list-directory} command, @kbd{C-x C-d}.  Where @code{dired}
+differs from @code{list-directory} is in naming the buffer after the
+directory name or the wildcard pattern used for the listing, and putting
+the buffer into Dired mode so that the special commands of Dired are
+available in it.  The variable @code{dired-listing-switches} is a string
+used as an argument to @code{ls} in making the directory; this string
address@hidden contain @samp{-l}.
+
address@hidden dired-other-window
address@hidden C-x 4 d
+  To display the Dired buffer in another window rather than in the selected
+window, use @kbd{C-x 4 d} (@code{dired-other-window)} instead of @kbd{C-x d}.
+
address@hidden Dired Edit, Dired Deletion, Dired Enter, Dired
address@hidden Editing in Dired
+
+  Once the Dired buffer exists, you can switch freely between it and other
+Emacs buffers.  Whenever the Dired buffer is selected, certain special
+commands are provided that operate on files that are listed.  The Dired
+buffer is ``read-only'', and inserting text in it is not useful, so
+ordinary printing characters such as @kbd{d} and @kbd{x} are used for Dired
+commands.  Most Dired commands operate on the file described by the line
+that point is on.  Some commands perform operations immediately; others
+``flag'' a file to be operated on later.
+
+  Most Dired commands that operate on the current line's file also treat a
+numeric argument as a repeat count, meaning to act on the files of the
+next few lines.  A negative argument means to operate on the files of the
+preceding lines, and leave point on the first of those lines.
+
+  All the usual Emacs cursor motion commands are available in Dired
+buffers.  Some special purpose commands are also provided.  The keys
address@hidden and @kbd{C-p} are redefined so that they try to position
+the cursor at the beginning of the filename on the line, rather than
+at the beginning of the line.
+
+  For extra convenience, @key{SPC} and @kbd{n} in Dired are equivalent to
address@hidden  @kbd{p} is equivalent to @kbd{C-p}.  Moving by lines is done so
+often in Dired that it deserves to be easy to type.  @key{DEL} (move up and
+unflag) is often useful simply for moving address@hidden
+
+  The @kbd{g} command in Dired runs @code{revert-buffer} to reinitialize
+the buffer from the actual disk directory and show any changes made in the
+directory by programs other than Dired.  All deletion flags in the Dired
+buffer are lost when this is done.
+
address@hidden Dired Deletion, Dired Immed, Dired Edit, Dired
address@hidden Deleting Files With Dired
+
+  The primary use of Dired is to flag files for deletion and then delete
+them.
+
address@hidden @kbd
address@hidden d
+Flag this file for deletion.
address@hidden u
+Remove deletion-flag on this line.
address@hidden @key{DEL}
+Remove deletion-flag on previous line, moving point to that line.
address@hidden x
+Delete the files that are flagged for deletion.
address@hidden #
+Flag all auto-save files (files whose names start and end with @samp{#})
+for deletion (@pxref{Auto Save}).
address@hidden ~
+Flag all backup files (files whose names end with @samp{~}) for deletion
+(@pxref{Backup}).
address@hidden .@: @r{(Period)}
+Flag excess numeric backup files for deletion.  The oldest and newest
+few backup files of any one file are exempt; the middle ones are flagged.
address@hidden table
+
+  You can flag a file for deletion by moving to the line describing the
+file and typing @kbd{d} or @kbd{C-d}.  The deletion flag is visible as a
address@hidden at the beginning of the line.  Point is moved to the beginning of
+the next line, so that repeated @kbd{d} commands flag successive files.
+
+  The files are flagged for deletion rather than deleted immediately to
+avoid the danger of deleting a file accidentally.  Until you direct Dired
+to delete the flagged files, you can remove deletion flags using the
+commands @kbd{u} and @key{DEL}.  @kbd{u} works just like @kbd{d}, but
+removes flags rather than making flags.  @key{DEL} moves upward, removing
+flags; it is like @kbd{u} with numeric argument automatically negated.
+
+  To delete the flagged files, type @kbd{x}.  This command first displays a
+list of all the file names flagged for deletion, and requests confirmation
+with @kbd{yes}.  Once you confirm, all the flagged files are deleted, and their
+lines are deleted from the text of the Dired buffer.  The shortened Dired
+buffer remains selected.  If you answer @kbd{no} or quit with @kbd{C-g}, you
+return immediately to Dired, with the deletion flags still present and no
+files actually deleted.
+
+  The @kbd{#}, @kbd{~}, and @kbd{.} commands flag many files for
+deletion, based on their names.  These commands are useful precisely
+because they do not actually delete any files; you can remove the
+deletion flags from any flagged files that you really wish to address@hidden
+
+  @kbd{#} flags for deletion all files that appear to have been made by
+auto-saving (that is, files whose names begin and end with @samp{#}).
address@hidden flags for deletion all files that appear to have been made as
+backups for files that were edited (that is, files whose names end with
address@hidden).
+
address@hidden dired-kept-versions
+  @kbd{.} (Period) flags just some of the backup files for deletion: only
+numeric backups that are not among the oldest few nor the newest few
+backups of any one file.  Normally @code{dired-kept-versions} (not
address@hidden; that applies only when saving) specifies the
+number of newest versions of each file to keep, and
address@hidden specifies the number of oldest versions to keep.
+Period with a positive numeric argument, as in @kbd{C-u 3 .}, specifies the
+number of newest versions to keep, overriding @code{dired-kept-versions}.
+A negative numeric argument overrides @code{kept-old-versions}, using minus
+the value of the argument to specify the number of oldest versions of each
+file to address@hidden
+
address@hidden Dired Immed,  , Dired Deletion, Dired
address@hidden Immediate File Operations in Dired
+
+  Some file operations in Dired take place immediately when they are
+requested.
+
address@hidden @kbd
address@hidden C
+Copies the file described on the current line.  You must supply a file name
+to copy to, using the minibuffer.
address@hidden f
+Visits the file described on the current line.  It is just like typing
address@hidden C-f} and supplying that file name.  If the file on this line is a
+subdirectory, @kbd{f} actually causes Dired to be invoked on that
+subdirectory.  @xref{Visiting}.
address@hidden o
+Like @kbd{f}, but uses another window to display the file's buffer.  The
+Dired buffer remains visible in the first window.  This is like using
address@hidden 4 C-f} to visit the file.  @xref{Windows}.
address@hidden R
+Renames the file described on the current line.  You must supply a file
+name to rename to, using the minibuffer.
address@hidden v
+Views the file described on this line using @kbd{M-x view-file}.  Viewing a
+file is like visiting it, but is slanted toward moving around in the file
+conveniently and does not allow changing the file.  @xref{Misc File
+Ops,View File}.  Viewing a file that is a directory runs Dired on that
address@hidden
address@hidden table
+
address@hidden Misc File Ops,  , Dired, Files
address@hidden Miscellaneous File Operations
+
+  Emacs has commands for performing many other operations on files.
+All operate on one file; they do not accept wildcard file names.
+
address@hidden add-name-to-file
+  You can use the command @kbd{M-x add-name-to-file} to add a name to an
+existing file without removing the old name.  The new name must belong
+on the file system that the file is on.
+
address@hidden append-to-file
+  @kbd{M-x append-to-file} adds the text of the region to the end of the
+specified file.
+
address@hidden copy-file
address@hidden copying files
+  @kbd{M-x copy-file} reads the file @var{old} and writes a new file
+named @var{new} with the same contents.  Confirmation is required if a
+file named @var{new} already exists, because copying overwrites the old
+contents of the file @var{new}.
+
address@hidden delete-file
address@hidden deletion (of files)
+  @kbd{M-x delete-file} deletes a specified file, like the @code{rm}
+command in the shell.  If you are deleting many files in one directory, it
+may be more convenient to use Dired (@pxref{Dired}).
+
address@hidden insert-file
+  @kbd{M-x insert-file} inserts a copy of the contents of a specified
+file into the current buffer at point, leaving point unchanged before the
+contents and the mark after them.  @xref{Mark}.
+
address@hidden make-symbolic-link
+  @kbd{M-x make-symbolic-link} reads two file names @var{old} and
address@hidden, and then creates a symbolic link named @var{linkname}
+and pointing at @var{old}.  Future attempts to open file
address@hidden will then refer to the file named @var{old} at the time
+the opening is done, or will result in an error if the name @var{old} is
+not in use at that time.  Confirmation is required if you create the
+link while @var{linkname} is in use.  Note that not all systems support
+symbolic links.
+
address@hidden rename-file
+  @kbd{M-x rename-file} reads two file names @var{old} and @var{new} using
+the minibuffer, then renames file @var{old} as @var{new}.  If a file named
address@hidden already exists, you must confirm with @kbd{yes} or renaming is 
not
+done; this is because renaming causes the previous meaning of the 
+name @var{new} to be lost.  If @var{old} and @var{new} are on different 
+file systems, the file @var{old} is copied and deleted.
+
address@hidden view-file
address@hidden viewing
+  @kbd{M-x view-file} allows you to scan or read a file by sequential
+screenfuls.  It reads a file name argument using the minibuffer.  After
+reading the file into an Emacs buffer, @code{view-file} reads and displays
+one windowful.  You can then type @key{SPC} to scroll forward one window,
+or @key{DEL} to scroll backward.  Various other commands are provided for
+moving around in the file, but none for changing it; type @kbd{C-h} while
+viewing a file for a list of them.  Most commands are the default Emacs
+cursor motion commands.  To exit from viewing, type @kbd{C-c}.
+
address@hidden Buffers, Windows, Files, Top
address@hidden Using Multiple Buffers
+
address@hidden buffers
+  Text you are editing in Emacs resides in an object called a
address@hidden  Each time you visit a file, Emacs creates a buffer to
+hold the file's text.  Each time you invoke Dired, Emacs creates a buffer
+to hold the directory listing.  If you send a message with @kbd{C-x m},
+a buffer named @samp{*mail*} is used to hold the text of the message.
+When you ask for a command's documentation, it appears in a buffer
+called @samp{*Help*}.
+
address@hidden selected buffer
address@hidden current buffer
+  At any time, one and only one buffer is @dfn{selected}.  It is also
+called the @dfn{current buffer}.  Saying a command operates on ``the
+buffer'' really means that the command operates on the selected
+buffer, as most commands do.
+
+  When Emacs creates multiple windows, each window has a chosen buffer which
+is displayed there, but at any time only one of the windows is selected and
+its chosen buffer is the selected buffer.  Each window's mode line displays
+the name of the buffer the window is displaying (@pxref{Windows}).
+
+  Each buffer has a name which can be of any length but is
+case-sensitive.  You can select a buffer using its name.  Most
+buffers are created when you visit files; their names are derived from
+the files' names.  You can also create an empty buffer with any name you
+want.  A newly started Emacs has a buffer named @samp{*scratch*} which
+you can use for evaluating Lisp expressions in Emacs.
+
+  Each buffer records what file it is visiting, whether it is
+modified, and what major mode and minor modes are in effect in it
+(@pxref{Major Modes}).  Any Emacs variable can be made @dfn{local to} a
+particular buffer, meaning its value in that buffer can be different from
+the value in other buffers.  @xref{Locals}.
+
address@hidden
+* Select Buffer::   Creating a new buffer or reselecting an old one.
+* List Buffers::    Getting a list of buffers that exist.
+* Misc Buffer::     Renaming; changing read-onliness; copying text.
+* Kill Buffer::     Killing buffers you no longer need.
+* Several Buffers:: How to go through the list of all buffers
+                     and operate variously on several of them.
address@hidden menu
+
address@hidden Select Buffer, List Buffers, Buffers, Buffers
address@hidden Creating and Selecting Buffers
address@hidden changing buffers
address@hidden switching buffers
+
address@hidden @kbd
address@hidden C-x b @var{buffer} @key{RET}
+Select or create a buffer named @var{buffer} (@code{switch-to-buffer}).
address@hidden C-x 4 b @var{buffer} @key{RET}
+Similar, but select a buffer named @var{buffer} in another window
+(@code{switch-to-buffer-other-window}).
address@hidden M-x switch-to-other-buffer @var{n}
+Switch to the previous buffer.
address@hidden table
+
address@hidden C-x 4 b
address@hidden C-x 5 b
address@hidden switch-to-buffer-other-window
address@hidden C-x b
address@hidden switch-to-buffer
address@hidden switch-to-buffer-other-frame
+  To select a buffer named @var{bufname}, type @kbd{C-x b @var{bufname}
address@hidden  This is the command @code{switch-to-buffer} with argument
address@hidden  You can use completion on an abbreviation for the buffer
+name you want (@pxref{Completion}).  An empty argument to @kbd{C-x b}
+specifies the most recently selected buffer that is not displayed in any
address@hidden
+
+  Most buffers are created when you visit files, or use Emacs commands
+that display text.  You can also create a buffer explicitly by typing
address@hidden b @var{bufname} @key{RET}}, which creates a new, empty buffer
+that is not visiting any file, and selects it for editing.  The new
+buffer's major mode is determined by the value of
address@hidden (@pxref{Major Modes}).  Buffers not visiting
+files are usually used for making notes to yourself.  If you try to save
+one, you are asked for the file name to use.
+
+ The function @code{switch-to-buffer-other-frame} is similar to
address@hidden except that it creates a new frame in which to
+display the selected buffer.
+
address@hidden switch-to-other-buffer
+Use @kbd{M-x switch-to-other-buffer} to visit the previous buffer. If
+you supply a positive integer @var{n}, the @var{n}th most recent buffer
+is displayed. If you supply an argument of 0, the current buffer is
+moved to the bottom of the buffer stack.
+
+  Note that you can also use @kbd{C-x C-f} and any other command for
+visiting a file to switch buffers.  @xref{Visiting}.
+
address@hidden List Buffers, Misc Buffer, Select Buffer, Buffers
address@hidden Listing Existing Buffers
+
address@hidden @kbd
address@hidden C-x C-b
+List the existing buffers (@code{list-buffers}).
address@hidden table
+
address@hidden C-x C-b
address@hidden list-buffers
+  To print a list of all existing buffers, type @kbd{C-x C-b}.  Each
+line in the list shows one buffer's name, major mode, and visited file.
+A @samp{*} at the beginning of a line indicates the buffer has been
+``modified''.  If several buffers are modified, it may be time to save
+some with @kbd{C-x s} (@pxref{Saving}).  A @samp{%} indicates a read-only
+buffer.  A @samp{.} marks the selected buffer.  Here is an example of a
+buffer list:@refill
+
address@hidden
+ MR Buffer         Size  Mode           File
+ -- ------         ----  ----           ----
+.*  emacs.tex      383402 Texinfo       /u2/emacs/man/emacs.tex
+    *Help*         1287  Fundamental    
+    files.el       23076 Emacs-Lisp     /u2/emacs/lisp/files.el
+  % RMAIL          64042 RMAIL          /u/rms/RMAIL
+ *% man            747   Dired          /u2/emacs/man/
+    net.emacs      343885 Fundamental   /u/rms/net.emacs
+    fileio.c       27691 C              /u2/emacs/src/fileio.c
+    NEWS           67340 Text           /u2/emacs/etc/NEWS
+    *scratch*      0     Lisp Interaction
address@hidden smallexample
+
address@hidden
+Note that the buffer @samp{*Help*} was made by a help request; it is not
+visiting any file.  The buffer @code{man} was made by Dired on the
+directory @file{/u2/emacs/man/}.
+
+As you move the mouse over the @samp{*Buffer List*} buffer, the lines
+are highlighted.  This visual cue indicates that clicking the right
+mouse button (@code{button3}) will pop up a menu of commands on the
+buffer represented by this line.  This menu duplicates most of those
+commands which are bound to keys in the @samp{*Buffer List*} buffer.
+
address@hidden Misc Buffer, Kill Buffer, List Buffers, Buffers
address@hidden Miscellaneous Buffer Operations
+
address@hidden @kbd
address@hidden C-x C-q
+Toggle read-only status of buffer (@code{toggle-read-only}).
address@hidden M-x rename-buffer
+Change the name of the current buffer.
address@hidden M-x view-buffer
+Scroll through a buffer.
address@hidden table
+
address@hidden read-only buffer
address@hidden C-x C-q
address@hidden toggle-read-only
address@hidden buffer-read-only
+  A buffer can be @dfn{read-only}, which means that commands to change
+its text are not allowed.  Normally, read-only buffers are created by
+subsystems such as Dired and Rmail that have special commands to operate
+on the text.  Emacs also creates a read-only buffer if you
+visit a file that is protected.  To make changes in a read-only buffer,
+use the command @kbd{C-x C-q} (@code{toggle-read-only}).  It makes a
+read-only buffer writable, and makes a writable buffer read-only.  This
+works by setting the variable @code{buffer-read-only}, which has a local
+value in each buffer and makes a buffer read-only if its value is
address@hidden
+
address@hidden rename-buffer
+  @kbd{M-x rename-buffer} changes the name of the current buffer,
+prompting for the new name in the minibuffer.  There is no default.  If you
+specify a name that is used by a different buffer, an error is signalled and
+renaming is not done.
+
address@hidden view-buffer
+  @kbd{M-x view-buffer} is similar to @kbd{M-x view-file} (@pxref{Misc
+File Ops}), but it examines an already existing Emacs buffer.  View mode
+provides convenient commands for scrolling through the buffer but not
+for changing it.  When you exit View mode, the resulting value of point
+remains in effect.
+
+To copy text from one buffer to another, use the commands @kbd{M-x
+append-to-buffer} and @kbd{M-x insert-buffer}.  @xref{Accumulating
address@hidden
+
address@hidden Kill Buffer, Several Buffers, Misc Buffer, Buffers
address@hidden Killing Buffers
+
+  After using Emacs for a while, you may accumulate a large number of
+buffers and may want to eliminate the ones you no
+longer need.  There are several commands for doing this.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x k
+Kill a buffer, specified by name (@code{kill-buffer}).
address@hidden M-x kill-some-buffers
+Offer to kill each buffer, one by one.
address@hidden table
+
address@hidden kill-buffer
address@hidden kill-some-buffers
address@hidden C-x k
+ 
+  @kbd{C-x k} (@code{kill-buffer}) kills one buffer, whose name you
+specify in the minibuffer.  If you type just @key{RET} in the
+minibuffer, the default, killing the current buffer, is used.  If the
+current buffer is killed, the buffer that has been selected recently but
+does not appear in any window now is selected.  If the buffer being
+killed contains unsaved changes, you are asked to confirm with @kbd{yes}
+before the buffer is killed.
+
+  The command @kbd{M-x kill-some-buffers} asks about each buffer, one by
+one.  An answer of @kbd{y} means to kill the buffer.  Killing the current
+buffer or a buffer containing unsaved changes selects a new buffer or asks
+for confirmation just like @code{kill-buffer}.
+
address@hidden Several Buffers,, Kill Buffer, Buffers
address@hidden Operating on Several Buffers
address@hidden buffer menu
+
+  The @dfn{buffer-menu} facility is like a ``Dired for buffers''; it allows
+you to request operations on various Emacs buffers by editing a
+buffer containing a list of them.  You can save buffers, kill them
+(here called @dfn{deleting} them, for consistency with Dired), or display
+them.
+
address@hidden @kbd
address@hidden M-x buffer-menu
+Begin editing a buffer listing all Emacs buffers.
address@hidden table
+
address@hidden buffer-menu
+  The command @code{buffer-menu} writes a list of all Emacs buffers into
+the buffer @samp{*Buffer List*}, and selects that buffer in Buffer Menu
+mode.  The buffer is read-only.  You can only change it using the special
+commands described in this section.  Most of the commands are graphic
+characters.  You can use  Emacs cursor motion commands in the
address@hidden List*} buffer.  If the cursor is on a line describing a
+buffer, the following  special commands apply to that buffer:
+
address@hidden @kbd
address@hidden d
+Request to delete (kill) the buffer, then move down.  A @samp{D} before
+the buffer name on a line indicates a deletion request.  Requested
+deletions actually take place when you use the @kbd{x} command.
address@hidden k
+Synonym for @kbd{d}.
address@hidden C-d
+Like @kbd{d} but move up afterwards instead of down.
address@hidden s
+Request to save the buffer.  An @samp{S} before the buffer name on a line
+indicates the request.  Requested saves actually take place when you use
+the @kbd{x} command.  You can request both saving and deletion for the
+same buffer.
address@hidden ~
+Mark buffer ``unmodified''.  The command @kbd{~} does this
+immediately when typed.
address@hidden x
+Perform previously requested deletions and saves.
address@hidden u
+Remove any request made for the current line, and move down.
address@hidden @key{DEL}
+Move to previous line and remove any request made for that line.
address@hidden table
+
+  All commands that add or remove flags to request later operations
+also move down a line.  They accept a numeric argument as a repeat count,
+unless otherwise specified.
+
+  There are also special commands to use the buffer list to select another
+buffer, and to specify one or more other buffers for display in additional
+windows.
+
address@hidden @kbd
address@hidden 1
+Select the buffer in a full-frame window.  This command takes effect
+immediately.
address@hidden 2
+Immediately set up two windows, with this buffer in one and the
+buffer selected before @samp{*Buffer List*} in the other.
address@hidden f
+Immediately select the buffer in place of the @samp{*Buffer List*} buffer.
address@hidden o
+Immediately select the buffer in another window as if by @kbd{C-x 4 b},
+leaving @samp{*Buffer List*} visible.
address@hidden q
+Immediately select this buffer, and display any buffers previously
+flagged with the @kbd{m} command in other windows.  If there are no 
+buffers flagged with @kbd{m}, this command is equivalent to @kbd{1}.
address@hidden m
+Flag this buffer to be displayed in another window if the @kbd{q}
+command is used.  The request shows as a @samp{>} at the beginning of
+the line.  The same buffer may not have both a delete request and a
+display request.
address@hidden table
+
+ Going back between a @code{buffer-menu} buffer and other Emacs buffers is
+easy.  You can, for example, switch from the @samp{*Buffer List*}
+buffer to another Emacs buffer, and edit there.  You can then reselect the
address@hidden buffer and perform operations already
+requested, or you can kill that buffer or pay no further attention to it.
+ All that @code{buffer-menu} does directly is create and select a
+suitable buffer, and turn on Buffer Menu mode.  All the other
+capabilities of the buffer menu are implemented by special commands
+provided in Buffer Menu mode.  
+
+  The only difference between @code{buffer-menu} and @code{list-buffers} is
+that @code{buffer-menu} selects the @samp{*Buffer List*} buffer and
address@hidden does not.  If you run @code{list-buffers} (that is,
+type @kbd{C-x C-b}) and select the buffer list manually, you can use all
+the commands described here.
+
address@hidden Windows, Mule, Buffers, Top
address@hidden Multiple Windows
address@hidden windows
+
+  Emacs can split the frame into two or many windows, which can display
+parts of different buffers or different parts of one buffer.  If you are
+running XEmacs under X, that means you can have the X window that contains
+the Emacs frame have multiple subwindows.
+
address@hidden
+* Basic Window::     Introduction to Emacs windows.
+* Split Window::     New windows are made by splitting existing windows.
+* Other Window::     Moving to another window or doing something to it.
+* Pop Up Window::    Finding a file or buffer in another window.
+* Change Window::    Deleting windows and changing their sizes.
address@hidden menu
+
address@hidden Basic Window, Split Window, Windows, Windows
address@hidden Concepts of Emacs Windows
+
+  When Emacs displays multiple windows, each window has one Emacs
+buffer designated for display.  The same buffer may appear in more
+than one window; if it does, any changes in its text are displayed in all
+the windows that display it.  Windows showing the same buffer can
+show different parts of it, because each window has its own value of point.
+
address@hidden selected window
+  At any time, one  window is the @dfn{selected window}; the buffer
+ displayed by that window is the current buffer.  The cursor
+shows the location of point in that window.  Each other window has a
+location of point as well, but since the terminal has only one cursor, it
+cannot show the location of point in the other windows.
+
+  Commands to move point affect the value of point for the selected Emacs
+window only.  They do not change the value of point in any other Emacs
+window, including those showing the same buffer.  The same is true for commands
+such as @kbd{C-x b} to change the selected buffer in the selected window;
+they do not affect other windows at all.  However, there are other commands
+such as @kbd{C-x 4 b} that select a different window and switch buffers in
+it.  Also, all commands that display information in a window, including
+(for example) @kbd{C-h f} (@code{describe-function}) and @kbd{C-x C-b}
+(@code{list-buffers}), work by switching buffers in a non-selected window
+without affecting the selected window.
+
+  Each window has its own mode line, which displays the buffer name,
+modification status, and major and minor modes of the buffer that is
+displayed in the window.  @xref{Mode Line}, for details on the mode
+line.
+
address@hidden Split Window, Other Window, Basic Window, Windows
address@hidden Splitting Windows
+
address@hidden @kbd
address@hidden C-x 2
+Split the selected window into two windows, one above the other
+(@code{split-window-vertically}).
address@hidden C-x 3
+Split the selected window into two windows positioned side by side
+(@code{split-window-horizontally}).
address@hidden C-x 6
+Save the current window configuration in register @var{reg} (a letter).
address@hidden C-x 7
+Restore (make current) the window configuration in register
address@hidden (a letter).  Use with a register previously set with @kbd{C-x 6}.
address@hidden table
+
address@hidden C-x 2
address@hidden split-window-vertically
+  The command @kbd{C-x 2} (@code{split-window-vertically}) breaks the
+selected window into two windows, one above the other.  Both windows
+start out displaying the same buffer, with the same value of point.  By
+default each of the two windows gets half the height of the window that
+was split.  A numeric argument specifies how many lines to give to the
+top window.
+
address@hidden C-x 3
address@hidden split-window-horizontally
+  @kbd{C-x 3} (@code{split-window-horizontally}) breaks the selected
+window into two side-by-side windows.  A numeric argument specifies how
+many columns to give the one on the left.  A line of vertical bars
+separates the two windows.  Windows that are not the full width of the
+frame have truncated mode lines which do not always appear in inverse
+video, because Emacs display routines cannot display a region of inverse
+video that is only part of a line on the screen.
+
address@hidden truncate-partial-width-windows
+  When a window is less than the full width, many text lines are too
+long to fit.  Continuing all those lines might be confusing.  Set the
+variable @code{truncate-partial-width-windows} to address@hidden to
+force truncation in all windows less than the full width of the frame,
+independent of the buffer and its value for @code{truncate-lines}.
address@hidden address@hidden
+
+  Horizontal scrolling is often used in side-by-side windows.
address@hidden
+
address@hidden jump-to-register
address@hidden window-configuration-to-register
+You can resize a window and store that configuration in a register by
+supplying a @var{register} argument to @code{window-configuration-to-register}
+(@kbd{C-x 6}). To return to the window configuration established with
address@hidden, use @code{jump-to-register}
+(@kbd{C-x j}).
+
address@hidden Other Window, Pop Up Window, Split Window, Windows
address@hidden Using Other Windows
+
address@hidden @kbd
address@hidden C-x o
+Select another window (@code{other-window}).  That is the letter `o', not zero.
address@hidden M-C-v
+Scroll the next window (@code{scroll-other-window}).
address@hidden M-x compare-windows
+Find the next place where the text in the selected window does not match
+the text in the next window.
address@hidden M-x other-window-any-frame @var{n}
+Select the @var{n}th different window on any frame.
address@hidden table
+
address@hidden C-x o
address@hidden other-window
+  To select a different window, use @kbd{C-x o} (@code{other-window}).
+That is an `o', for `other', not a zero.  When there are more than
+two windows, the command moves through all the windows in a cyclic
+order, generally top to bottom and left to right.  From the rightmost
+and bottommost window, it goes back to the one at the upper left corner.
+A numeric argument, @var{n}, moves several steps in the cyclic order of
+windows. A negative numeric argument moves around the cycle in the
+opposite order.  If the optional second argument @var{which-frames} is
address@hidden, the function cycles through all frames.  When the
+minibuffer is active, the minibuffer is the last window in the cycle;
+you can switch from the minibuffer window to one of the other windows,
+and later switch back and finish supplying the minibuffer argument that
+is requested.  @xref{Minibuffer Edit}.
+
address@hidden other-window-any-frame
+ The command @kbd{M-x other-window-any-frame} also selects the window
address@hidden steps away in the cyclic order.  However, unlike 
@code{other-window},
+this command selects a window on the next or previous frame instead of
+wrapping around to the top or bottom of the current frame, when there
+are no more windows.
+
address@hidden C-M-v
address@hidden scroll-other-window
+  The usual scrolling commands (@pxref{Display}) apply to the selected
+window only.  @kbd{M-C-v} (@code{scroll-other-window}) scrolls the
+window that @kbd{C-x o} would select.  Like @kbd{C-v}, it takes positive
+and negative arguments.
+
address@hidden compare-windows
+  The command @kbd{M-x compare-windows} compares the text in the current
+window with the text in the next window.  Comparison starts at point in each
+window.  Point moves forward in each window, a character at a time,
+until the next set of characters in the two windows are different.  Then the
+command is finished.
+
+A prefix argument @var{ignore-whitespace} means ignore changes in
+whitespace.  The variable @code{compare-windows-whitespace} controls how
+whitespace is skipped.
+
+If @code{compare-ignore-case} is address@hidden, changes in case are
+also ignored.
+
address@hidden Pop Up Window, Change Window, Other Window, Windows
address@hidden Displaying in Another Window
+
address@hidden C-x 4
+  @kbd{C-x 4} is a prefix key for commands that select another window
+(splitting the window if there is only one) and select a buffer in that
+window.  Different @kbd{C-x 4} commands have different ways of finding the
+buffer to select.
+
address@hidden switch-to-buffer-other-window
address@hidden find-file-other-window
address@hidden find-tag-other-window
address@hidden dired-other-window
address@hidden mail-other-window
address@hidden @kbd
address@hidden C-x 4 b @var{bufname} @key{RET}
+Select buffer @var{bufname} in another window.  This runs
address@hidden
address@hidden C-x 4 f @var{filename} @key{RET}
+Visit file @var{filename} and select its buffer in another window.  This
+runs @code{find-file-other-window}.  @xref{Visiting}.
address@hidden C-x 4 d @var{directory} @key{RET}
+Select a Dired buffer for directory @var{directory} in another window.
+This runs @code{dired-other-window}.  @xref{Dired}.
address@hidden C-x 4 m
+Start composing a mail message in another window.  This runs
address@hidden, and its same-window version is @kbd{C-x m}
+(@pxref{Sending Mail}).
address@hidden C-x 4 .
+Find a tag in the current tag table in another window.  This runs
address@hidden, the multiple-window variant of @kbd{M-.}
+(@pxref{Tags}).
address@hidden table
+
address@hidden display-buffer-function
+If the variable @code{display-buffer-function} is address@hidden, its value is
+the function to call to handle @code{display-buffer}. It receives two
+arguments, the buffer and a flag that if address@hidden means that the
+currently selected window is not acceptable. Commands such as
address@hidden and @code{find-file-other-window}
+work using this function.
+
address@hidden Change Window,, Pop Up Window, Windows
address@hidden Deleting and Rearranging Windows
+
address@hidden @kbd
address@hidden C-x 0
+Get rid of the selected window (@code{delete-window}).  That is a zero.
+If there is more than one Emacs frame, deleting the sole remaining
+window on that frame deletes the frame as well. If the current frame
+is the only frame, it is not deleted.
address@hidden C-x 1
+Get rid of all windows except the selected one
+(@code{delete-other-windows}).
address@hidden C-x ^
+Make the selected window taller, at the expense of the other(s)
address@hidden(@code{enlarge-window}).
address@hidden C-x @}
+Make the selected window wider (@code{enlarge-window-horizontally}).
address@hidden table
+
address@hidden C-x 0
address@hidden delete-window
+  To delete a window, type @kbd{C-x 0} (@code{delete-window}).  (That is a
+zero.)  The space occupied by the deleted window is distributed among the
+other active windows (but not the minibuffer window, even if that is active
+at the time).  Once a window is deleted, its attributes are forgotten;
+there is no automatic way to make another window of the same shape or
+showing the same buffer.  The buffer continues to exist, and you can
+select it in any window with @kbd{C-x b}.
+
address@hidden C-x 1
address@hidden delete-other-windows
+  @kbd{C-x 1} (@code{delete-other-windows}) is more powerful than @kbd{C-x 0};
+it deletes all the windows except the selected one (and the minibuffer).
+The selected window expands to use the whole frame except for the echo
+area.
+
address@hidden C-x ^
address@hidden enlarge-window
address@hidden C-x @}
address@hidden enlarge-window-horizontally
address@hidden window-min-height
address@hidden window-min-width
+  To readjust the division of space among existing windows, use @kbd{C-x
+^} (@code{enlarge-window}).  It makes the currently selected window
+longer by one line or as many lines as a numeric argument specifies.
+With a negative argument, it makes the selected window smaller.
address@hidden @}} (@code{enlarge-window-horizontally}) makes the selected
+window wider by the specified number of columns.  The extra screen space
+given to a window comes from one of its neighbors, if that is possible;
+otherwise, all the competing windows are shrunk in the same proportion.
+If this makes some windows too small, those windows are deleted and their
+space is divided up.   Minimum window size is specified by the variables
address@hidden and @code{window-min-width}.
+
+You can also resize windows within a frame by clicking the left mouse
+button on a modeline, and dragging.
+
+Clicking the right button on a mode line pops up a menu of common window
+manager operations.  This menu contains the following options:
+
address@hidden Windows menu
address@hidden Pull-down Menus
address@hidden menus
address@hidden @b
address@hidden Delete Window
+Remove the window above this modeline from the frame.
+
address@hidden Delete Other Windows
+Delete all windows on the frame except for the one above this modeline.
+
address@hidden Split Window
+Split the window above the mode line in half, creating another window.
+
address@hidden Split Window Horizontally
+Split the window above the mode line in half horizontally, so that there
+will be two windows side-by-side.
+
address@hidden Balance Windows
+Readjust the sizes of all windows on the frame until all windows have
+roughly the same number of lines.
address@hidden table
address@hidden This is part of the Emacs manual.
address@hidden Copyright (C) 1997 Free Software Foundation, Inc.
address@hidden See file emacs.texi for copying conditions.
address@hidden Mule, Major Modes, Windows, Top
address@hidden World Scripts Support
address@hidden MULE
address@hidden international scripts
address@hidden multibyte characters
address@hidden encoding of characters
+
address@hidden Chinese
address@hidden Greek
address@hidden IPA
address@hidden Japanese
address@hidden Korean
address@hidden Cyrillic
address@hidden Russian
+  If you compile XEmacs with Mule option, it supports a wide variety of
+world scripts, including Latin script, as well as Arabic script,
+Simplified Chinese script (for mainland of China), Traditional Chinese
+script (for Taiwan and Hong-Kong), Greek script, Hebrew script, IPA
+symbols, Japanese scripts (Hiragana, Katakana and Kanji), Korean scripts
+(Hangul and Hanja) and Cyrillic script (for Byelorussian, Bulgarian,
+Russian, Serbian and Ukrainian).  These features have been merged from
+the modified version of Emacs known as MULE (for ``MULti-lingual
+Enhancement to GNU Emacs'').
+
address@hidden
+* Mule Intro::              Basic concepts of Mule.
+* Language Environments::   Setting things up for the language you use.
+* Input Methods::           Entering text characters not on your keyboard.
+* Select Input Method::     Specifying your choice of input methods.
+* Mule and Fonts::          Additional font-related issues
+* Coding Systems::          Character set conversion when you read and
+                              write files, and so on.
+* Recognize Coding::        How XEmacs figures out which conversion to use.
+* Specify Coding::          Various ways to choose which conversion to use.
address@hidden menu
+
address@hidden Mule Intro, Language Environments, Mule, Mule
address@hidden What is Mule?
+
+Mule is the MUltiLingual Extension to XEmacs.  It provides facilities
+not only for handling text written in many different languages, but in
+fact multilingual texts containing several languages in the same buffer.
+This goes beyond the simple facilities offered by Unicode for
+representation of multilingual text.  Mule also supports input methods,
+composing display using fonts in various different encodings, changing
+character syntax and other editing facilities to correspond to local
+language usage, and more.
+
+The most obvious problem is that of the different character coding
+systems used by different languages.  ASCII supplies all the characters
+needed for most computer programming languages and US English (it lacks
+the currency symbol for British English), but other Western European
+languages (French, Spanish, German) require more than 96 code positions
+for accented characters.  In fact, even with 8 bits to represent 96 more
+character (including accented characters and symbols such as currency
+symbols), some languages' alphabets remain incomplete (Croatian,
+Polish).  (The 64 "missing characters" are reserved for control
+characters.)  Furthermore, many European languages have their own
+alphabets, which must conflict with the accented characters since the
+ASCII characters are needed for computer interaction (error and log
+messages are typically in ASCII).
+
+For economy of space, historical practice has been for each language to
+establish its own encoding for the characters it needs.  This allows
+most European languages to represented with one octet (byte) per
+character.  However, many Asian languages have thousands of characters
+and require two or more octets per character.  For multilingual
+purposes, the ISO 2022 standard establishes escape codes that allow
+switching encodings in midstream.  (It's also ISO 2022 that establishes
+the standard that code points 0-31 and 128-159 are control codes.)
+
+However, this is error-prone and complex for internal processing.  For
+this reason XEmacs uses an internal coding system which can encode all
+of the world's scripts.  Unfortunately, for historical reasons, this
+code is not Unicode, although we are moving in that direction.
+
+XEmacs translates between the internal character encoding and various
+other coding systems when reading and writing files, when exchanging
+data with subprocesses, and (in some cases) in the @kbd{C-q} command
+(see below).  The internal encoding is never visible to the user in a
+production XEmacs, but unfortunately the process cannot be completely
+transparent to the user.  This is because the same ranges of octets may
+represent 1-octet ISO-8859-1 (which is satisfactory for most Western
+European use prior to the introduction of the Euro currency), 1-octet
+ISO-8859-15 (which substitutes the Euro for the rarely used "generic
+currency" symbol), 1-octet ISO-8859-5 (Cyrillic), or multioctet EUC-JP
+(Japanese).  There's no way to tell without being able to read!
+
+A number of heuristics are incorporated in Mule for automatic
+recognition, there are facilities for the user to set defaults, and
+where necessary (rarely, we hope) to set coding systems directly.
+
address@hidden C-h h
address@hidden view-hello-file
+  The command @kbd{C-h h} (@code{view-hello-file}) displays the file
address@hidden/HELLO}, which shows how to say ``hello'' in many languages.
+This illustrates various scripts.
+
+  Keyboards, even in the countries where these character sets are used,
+generally don't have keys for all the characters in them.  So XEmacs
+supports various @dfn{input methods}, typically one for each script or
+language, to make it convenient to type them.
+
address@hidden C-x RET
+  The prefix key @kbd{C-x @key{RET}} is used for commands that pertain
+to world scripts, coding systems, and input methods.
+
+
address@hidden Language Environments, Input Methods, Mule Intro, Mule
address@hidden Language Environments
address@hidden language environments
+
+  All supported character sets are supported in XEmacs buffers if it is
+compiled with Mule; there is no need to select a particular language in
+order to display its characters in an XEmacs buffer.  However, it is
+important to select a @dfn{language environment} in order to set various
+defaults.  The language environment really represents a choice of
+preferred script (more or less) rather that a choice of language.
+
+  The language environment controls which coding systems to recognize
+when reading text (@pxref{Recognize Coding}).  This applies to files,
+incoming mail, netnews, and any other text you read into XEmacs.  It may
+also specify the default coding system to use when you create a file.
+Each language environment also specifies a default input method.
+
address@hidden set-language-environment
+  The command to select a language environment is @kbd{M-x
+set-language-environment}.  It makes no difference which buffer is
+current when you use this command, because the effects apply globally to
+the XEmacs session.  The supported language environments include:
+
address@hidden
+ASCII, Chinese-BIG5, Chinese-GB, Croatian, Cyrillic-ALT, Cyrillic-ISO, 
+Cyrillic-KOI8, Cyrillic-Win, Czech, English, Ethiopic, French, German,
+Greek, Hebrew, IPA, Japanese, Korean, Latin-1, Latin-2, Latin-3, Latin-4,
+Latin-5, Norwegian, Polish, Romanian, Slovenian, Thai-XTIS, Vietnamese.
address@hidden quotation
+
+  Some operating systems let you specify the language you are using by
+setting locale environment variables.  XEmacs handles one common special
+case of this: if your locale name for character types contains the
+string @address@hidden, XEmacs automatically selects the
+corresponding language environment.
+
address@hidden C-h L
address@hidden describe-language-environment
+  To display information about the effects of a certain language
+environment @var{lang-env}, use the command @kbd{C-h L @var{lang-env}
address@hidden (@code{describe-language-environment}).  This tells you which
+languages this language environment is useful for, and lists the
+character sets, coding systems, and input methods that go with it.  It
+also shows some sample text to illustrate scripts used in this language
+environment.  By default, this command describes the chosen language
+environment.
+
address@hidden Input Methods, Select Input Method, Language Environments, Mule
address@hidden Input Methods
+
address@hidden input methods
+  An @dfn{input method} is a kind of character conversion designed
+specifically for interactive input.  In XEmacs, typically each language
+has its own input method; sometimes several languages which use the same
+characters can share one input method.  A few languages support several
+input methods.
+
+  The simplest kind of input method works by mapping ASCII letters into
+another alphabet.  This is how the Greek and Russian input methods work.
+
+  A more powerful technique is composition: converting sequences of
+characters into one letter.  Many European input methods use composition
+to produce a single non-ASCII letter from a sequence that consists of a
+letter followed by accent characters.  For example, some methods convert
+the sequence @kbd{'a} into a single accented letter.
+
+  The input methods for syllabic scripts typically use mapping followed
+by composition.  The input methods for Thai and Korean work this way.
+First, letters are mapped into symbols for particular sounds or tone
+marks; then, sequences of these which make up a whole syllable are
+mapped into one syllable sign.
+
+  Chinese and Japanese require more complex methods.  In Chinese input
+methods, first you enter the phonetic spelling of a Chinese word (in
+input method @code{chinese-py}, among others), or a sequence of portions
+of the character (input methods @code{chinese-4corner} and
address@hidden, and others).  Since one phonetic spelling typically
+corresponds to many different Chinese characters, you must select one of
+the alternatives using special XEmacs commands.  Keys such as @kbd{C-f},
address@hidden, @kbd{C-n}, @kbd{C-p}, and digits have special definitions in
+this situation, used for selecting among the alternatives.  @key{TAB}
+displays a buffer showing all the possibilities.
+
+   In Japanese input methods, first you input a whole word using
+phonetic spelling; then, after the word is in the buffer, XEmacs
+converts it into one or more characters using a large dictionary.  One
+phonetic spelling corresponds to many differently written Japanese
+words, so you must select one of them; use @kbd{C-n} and @kbd{C-p} to
+cycle through the alternatives.
+
+  Sometimes it is useful to cut off input method processing so that the
+characters you have just entered will not combine with subsequent
+characters.  For example, in input method @code{latin-1-postfix}, the
+sequence @kbd{e '} combines to form an @samp{e} with an accent.  What if
+you want to enter them as separate characters?
+
+  One way is to type the accent twice; that is a special feature for
+entering the separate letter and accent.  For example, @kbd{e ' '} gives
+you the two characters @samp{e'}.  Another way is to type another letter
+after the @kbd{e}---something that won't combine with that---and
+immediately delete it.  For example, you could type @kbd{e e @key{DEL}
+'} to get separate @samp{e} and @samp{'}.
+
+  Another method, more general but not quite as easy to type, is to use
address@hidden C-\} between two characters to stop them from combining.  This
+is the command @kbd{C-\} (@code{toggle-input-method}) used twice.
address@hidden Input Method}.
+
+  @kbd{C-\ C-\} is especially useful inside an incremental search,
+because stops waiting for more characters to combine, and starts
+searching for what you have already entered.
+
address@hidden input-method-verbose-flag
address@hidden input-method-highlight-flag
+  The variables @code{input-method-highlight-flag} and
address@hidden control how input methods explain what
+is happening.  If @code{input-method-highlight-flag} is address@hidden,
+the partial sequence is highlighted in the buffer.  If
address@hidden is address@hidden, the list of possible
+characters to type next is displayed in the echo area (but not when you
+are in the minibuffer).
+
address@hidden Select Input Method, Mule and Fonts, Input Methods, Mule
address@hidden Selecting an Input Method
+
address@hidden @kbd
address@hidden C-\
+Enable or disable use of the selected input method.
+
address@hidden C-x @key{RET} C-\ @var{method} @key{RET}
+Select a new input method for the current buffer.
+
address@hidden C-h I @var{method} @key{RET}
address@hidden C-h C-\ @var{method} @key{RET}
address@hidden describe-input-method
address@hidden C-h I
address@hidden C-h C-\
+Describe the input method @var{method} (@code{describe-input-method}).
+By default, it describes the current input method (if any).
+
address@hidden M-x list-input-methods
+Display a list of all the supported input methods.
address@hidden table
+
address@hidden select-input-method
address@hidden current-input-method
address@hidden C-x RET C-\
+  To choose an input method for the current buffer, use @kbd{C-x
address@hidden C-\} (@code{select-input-method}).  This command reads the
+input method name with the minibuffer; the name normally starts with the
+language environment that it is meant to be used with.  The variable
address@hidden records which input method is selected.
+  
address@hidden toggle-input-method
address@hidden C-\
+  Input methods use various sequences of ASCII characters to stand for
+non-ASCII characters.  Sometimes it is useful to turn off the input
+method temporarily.  To do this, type @kbd{C-\}
+(@code{toggle-input-method}).  To reenable the input method, type
address@hidden again.
+
+  If you type @kbd{C-\} and you have not yet selected an input method,
+it prompts for you to specify one.  This has the same effect as using
address@hidden @key{RET} C-\} to specify an input method.
+
address@hidden default-input-method
+  Selecting a language environment specifies a default input method for
+use in various buffers.  When you have a default input method, you can
+select it in the current buffer by typing @kbd{C-\}.  The variable
address@hidden specifies the default input method
+(@code{nil} means there is none).
+
address@hidden quail-set-keyboard-layout
+  Some input methods for alphabetic scripts work by (in effect)
+remapping the keyboard to emulate various keyboard layouts commonly used
+for those scripts.  How to do this remapping properly depends on your
+actual keyboard layout.  To specify which layout your keyboard has, use
+the command @kbd{M-x quail-set-keyboard-layout}.
+
address@hidden list-input-methods
+  To display a list of all the supported input methods, type @kbd{M-x
+list-input-methods}.  The list gives information about each input
+method, including the string that stands for it in the mode line.
+
address@hidden Mule and Fonts, Coding Systems, Select Input Method, Mule
address@hidden Mule and Fonts
address@hidden fonts
address@hidden font registry
address@hidden font encoding
address@hidden CCL programs
+
+(This section is X11-specific.)
+
+Text in XEmacs buffers is displayed using various faces.  In addition to
+specifying properties of a face, such as font and color, there are some
+additional properties of Mule charsets that are used in text.
+
+There is currently two properties of a charset that could be adjusted by
+user: font registry and so called @dfn{ccl-program}.
+
+Font registry is a regular expression matching the font registry field
+for this character set.  For example, both the @code{ascii} and
address@hidden@code{latin-iso8859-1}} charsets use the registry 
@code{"ISO8859-1"}.
+This field is used to choose an appropriate font when the user gives a
+general font specification such as @address@hidden,
+i.e. a 14-point upright medium-weight Courier font.
+
+You can set font registry for a charset using
address@hidden function in one of your startup files.  This
+function takes two arguments: character set (as a symbol) and font
+registry (as a string).
+
address@hidden }g., for Cyrillic texts Mule uses @address@hidden
+charset with @samp{"ISO8859-5"} as a default registry, and we want to
+use @samp{"koi8-r"} instead, because fonts in that encoding are
+installed on our system.  Use:
+
address@hidden
+(set-charset-registry 'cyrillic-iso8859-5 "koi8-r")
address@hidden example
+
+(Please note that you probably also want to set font registry for
address@hidden charset so that mixed English/Cyrillic texts be displayed
+using the same font.)
+
+"CCL-programs" are a little special-purpose scripts defined within
+XEmacs or in some package.  Those scripts allow XEmacs to use fonts that
+are in different encoding from the encoding that is used by Mule for
+text in buffer.  Returning to the above example, we need to somehow tell
+XEmacs that we have different encodings of fonts and text and so it
+needs to convert characters between those encodings when displaying.
+That's what @samp{set-charset-ccl-program} function is used for.  There
+are quite a few various CCL programs defined within XEmacs, and there is
+no comprehensive list of them, so you currently have to consult sources.
address@hidden FIXME: there must be a list of CCL programs
+
+We know that there is a CCL program called @samp{ccl-encode-koi8-r-font}
+that is used exactly for needed purpose: to convert characters between
address@hidden encoding and @samp{koi8-r}.  Use:
+
address@hidden
+(set-charset-ccl-program 'cyrillic-iso8859-5 'ccl-encode-koi8-r-font)
address@hidden example
+
+There are several more uses for CCL programs, not related to fonts, but
+those uses are not described here.
+
+
address@hidden Coding Systems, Recognize Coding, Mule and Fonts, Mule
address@hidden Coding Systems
address@hidden coding systems
+
+  Users of various languages have established many more-or-less standard
+coding systems for representing them.  XEmacs does not use these coding
+systems internally; instead, it converts from various coding systems to
+its own system when reading data, and converts the internal coding
+system to other coding systems when writing data.  Conversion is
+possible in reading or writing files, in sending or receiving from the
+terminal, and in exchanging data with subprocesses.
+
+  XEmacs assigns a name to each coding system.  Most coding systems are
+used for one language, and the name of the coding system starts with the
+language name.  Some coding systems are used for several languages;
+their names usually start with @samp{iso}.  There are also special
+coding systems @code{binary} and @code{no-conversion} which do not
+convert printing characters at all.
+
+  In addition to converting various representations of non-ASCII
+characters, a coding system can perform end-of-line conversion.  XEmacs
+handles three different conventions for how to separate lines in a file:
+newline, carriage-return linefeed, and just carriage-return.
+
address@hidden @kbd
address@hidden C-h C @var{coding} @key{RET}
+Describe coding system @var{coding}.
+
address@hidden C-h C @key{RET}
+Describe the coding systems currently in use.
+
address@hidden M-x list-coding-systems
+Display a list of all the supported coding systems.
+
address@hidden C-u M-x list-coding-systems
+Display comprehensive list of specific details of all supported coding
+systems.
address@hidden table
+
address@hidden C-x @key{RET} C
address@hidden describe-coding-system
+  The command @kbd{C-x RET C} (@code{describe-coding-system}) displays
+information about particular coding systems.  You can specify a coding
+system name as argument; alternatively, with an empty argument, it
+describes the coding systems currently selected for various purposes,
+both in the current buffer and as the defaults, and the priority list
+for recognizing coding systems (@pxref{Recognize Coding}).
+
address@hidden list-coding-systems
+  To display a list of all the supported coding systems, type @kbd{M-x
+list-coding-systems}.  The list gives information about each coding
+system, including the letter that stands for it in the mode line
+(@pxref{Mode Line}).
+
+  Each of the coding systems that appear in this list---except for
address@hidden, which means no conversion of any kind---specifies how and
+whether to convert printing characters, but leaves the choice of
+end-of-line conversion to be decided based on the contents of each file.
+For example, if the file appears to use carriage-return linefeed between
+lines, that end-of-line conversion will be used.
+
+  Each of the listed coding systems has three variants which specify
+exactly what to do for end-of-line conversion:
+
address@hidden @code
address@hidden @dots{}-unix
+Don't do any end-of-line conversion; assume the file uses
+newline to separate lines.  (This is the convention normally used
+on Unix and GNU systems.)
+
address@hidden @dots{}-dos
+Assume the file uses carriage-return linefeed to separate lines,
+and do the appropriate conversion.  (This is the convention normally used
+on Microsoft systems.)
+
address@hidden @dots{}-mac
+Assume the file uses carriage-return to separate lines, and do the
+appropriate conversion.  (This is the convention normally used on the
+Macintosh system.)
address@hidden table
+
+  These variant coding systems are omitted from the
address@hidden display for brevity, since they are entirely
+predictable.  For example, the coding system @code{iso-8859-1} has
+variants @code{iso-8859-1-unix}, @code{iso-8859-1-dos} and
address@hidden
+
+  In contrast, the coding system @code{binary} specifies no character
+code conversion at all---none for non-Latin-1 byte values and none for
+end of line.  This is useful for reading or writing binary files, tar
+files, and other files that must be examined verbatim.
+
+  The easiest way to edit a file with no conversion of any kind is with
+the @kbd{M-x find-file-literally} command.  This uses @code{binary}, and
+also suppresses other XEmacs features that might convert the file
+contents before you see them.  @xref{Visiting}.
+
+  The coding system @code{no-conversion} means that the file contains
+non-Latin-1 characters stored with the internal XEmacs encoding.  It
+handles end-of-line conversion based on the data encountered, and has
+the usual three variants to specify the kind of end-of-line conversion.
+
+
address@hidden Recognize Coding, Specify Coding, Coding Systems, Mule
address@hidden Recognizing Coding Systems
+
address@hidden #### This section is out of date.  The following 
set-*-coding-system
address@hidden functions are known:
+
address@hidden set-buffer-file-coding-system 
address@hidden set-buffer-file-coding-system-for-read
address@hidden set-buffer-process-coding-system
address@hidden set-console-tty-coding-system 
address@hidden set-console-tty-input-coding-system
address@hidden set-console-tty-output-coding-system
address@hidden set-default-buffer-file-coding-system
address@hidden set-default-coding-systems    
address@hidden set-default-file-coding-system
address@hidden set-file-coding-system        
address@hidden set-file-coding-system-for-read
address@hidden set-keyboard-coding-system    
address@hidden set-pathname-coding-system    
address@hidden set-process-coding-system     
address@hidden set-process-input-coding-system
address@hidden set-process-output-coding-system
address@hidden set-terminal-coding-system    
+
address@hidden Some are marked as broken.  Agenda: (1) Update this section using
address@hidden docstrings.  Note that they may be inaccurate.  (2) Correct the
address@hidden documentation here, updating docstrings at the same time.
+
address@hidden Document this.
+
address@hidden set-language-environment-coding-systems
+
address@hidden What are these?
+
address@hidden dontusethis-set-value-file-name-coding-system-handler
address@hidden dontusethis-set-value-keyboard-coding-system-handler
address@hidden dontusethis-set-value-terminal-coding-system-handler
+
+  Most of the time, XEmacs can recognize which coding system to use for
+any given file--once you have specified your preferences.
+
+  Some coding systems can be recognized or distinguished by which byte
+sequences appear in the data.  However, there are coding systems that
+cannot be distinguished, not even potentially.  For example, there is no
+way to distinguish between Latin-1 and Latin-2; they use the same byte
+values with different meanings.
+
+  XEmacs handles this situation by means of a priority list of coding
+systems.  Whenever XEmacs reads a file, if you do not specify the coding
+system to use, XEmacs checks the data against each coding system,
+starting with the first in priority and working down the list, until it
+finds a coding system that fits the data.  Then it converts the file
+contents assuming that they are represented in this coding system.
+
+  The priority list of coding systems depends on the selected language
+environment (@pxref{Language Environments}).  For example, if you use
+French, you probably want XEmacs to prefer Latin-1 to Latin-2; if you
+use Czech, you probably want Latin-2 to be preferred.  This is one of
+the reasons to specify a language environment.
+
address@hidden prefer-coding-system
+  However, you can alter the priority list in detail with the command
address@hidden prefer-coding-system}.  This command reads the name of a coding
+system from the minibuffer, and adds it to the front of the priority
+list, so that it is preferred to all others.  If you use this command
+several times, each use adds one element to the front of the priority
+list.
+
address@hidden file-coding-system-alist
+  Sometimes a file name indicates which coding system to use for the
+file.  The variable @code{file-coding-system-alist} specifies this
+correspondence.  There is a special function
address@hidden for adding elements to this list.  For
+example, to read and write all @samp{.txt} using the coding system
address@hidden, you can execute this Lisp expression:
+
address@hidden
+(modify-coding-system-alist 'file "\\.txt\\'" 'china-iso-8bit)
address@hidden smallexample
+
address@hidden
+The first argument should be @code{file}, the second argument should be
+a regular expression that determines which files this applies to, and
+the third argument says which coding system to use for these files.
+
address@hidden coding
+  You can specify the coding system for a particular file using the
address@hidden@dots{}-*-} construct at the beginning of a file, or a local
+variables list at the end (@pxref{File Variables}).  You do this by
+defining a value for the ``variable'' named @code{coding}.  XEmacs does
+not really have a variable @code{coding}; instead of setting a variable,
+it uses the specified coding system for the file.  For example,
address@hidden: C; coding: iso-8859-1;-*-} specifies use of the
+iso-8859-1 coding system, as well as C mode.
+
address@hidden buffer-file-coding-system
+  Once XEmacs has chosen a coding system for a buffer, it stores that
+coding system in @code{buffer-file-coding-system} and uses that coding
+system, by default, for operations that write from this buffer into a
+file.  This includes the commands @code{save-buffer} and
address@hidden  If you want to write files from this buffer using
+a different coding system, you can specify a different coding system for
+the buffer using @code{set-buffer-file-coding-system} (@pxref{Specify
+Coding}).
+
+
address@hidden Specify Coding,  , Recognize Coding, Mule
address@hidden Specifying a Coding System
+
+  In cases where XEmacs does not automatically choose the right coding
+system, you can use these commands to specify one:
+
address@hidden @kbd
address@hidden C-x @key{RET} f @var{coding} @key{RET}
+Use coding system @var{coding} for the visited file
+in the current buffer.
+
address@hidden C-x @key{RET} c @var{coding} @key{RET}
+Specify coding system @var{coding} for the immediately following
+command.
+
address@hidden C-x @key{RET} k @var{coding} @key{RET}
+Use coding system @var{coding} for keyboard input.  (This feature is
+non-functional and is temporarily disabled.)
+
address@hidden C-x @key{RET} t @var{coding} @key{RET}
+Use coding system @var{coding} for terminal output.
+
address@hidden C-x @key{RET} p @var{coding} @key{RET}
+Use coding system @var{coding} for subprocess input and output
+in the current buffer.
address@hidden table
+
address@hidden C-x RET f
address@hidden set-buffer-file-coding-system
+  The command @kbd{C-x RET f} (@code{set-buffer-file-coding-system})
+specifies the file coding system for the current buffer---in other
+words, which coding system to use when saving or rereading the visited
+file.  You specify which coding system using the minibuffer.  Since this
+command applies to a file you have already visited, it affects only the
+way the file is saved.
+
address@hidden C-x RET c
address@hidden universal-coding-system-argument
+  Another way to specify the coding system for a file is when you visit
+the file.  First use the command @kbd{C-x @key{RET} c}
+(@code{universal-coding-system-argument}); this command uses the
+minibuffer to read a coding system name.  After you exit the minibuffer,
+the specified coding system is used for @emph{the immediately following
+command}.
+
+  So if the immediately following command is @kbd{C-x C-f}, for example,
+it reads the file using that coding system (and records the coding
+system for when the file is saved).  Or if the immediately following
+command is @kbd{C-x C-w}, it writes the file using that coding system.
+Other file commands affected by a specified coding system include
address@hidden C-i} and @kbd{C-x C-v}, as well as the other-window variants of
address@hidden C-f}.
+
+  In addition, if you run some file input commands with the precedent
address@hidden, you can specify coding system to read from minibuffer.  So if
+the immediately following command is @kbd{C-x C-f}, for example, it
+reads the file using that coding system (and records the coding system
+for when the file is saved).  Other file commands affected by a
+specified coding system include @kbd{C-x C-i} and @kbd{C-x C-v}, as well
+as the other-window variants of @kbd{C-x C-f}.
+
address@hidden default-buffer-file-coding-system
+  The variable @code{default-buffer-file-coding-system} specifies the
+choice of coding system to use when you create a new file.  It applies
+when you find a new file, and when you create a buffer and then save it
+in a file.  Selecting a language environment typically sets this
+variable to a good choice of default coding system for that language
+environment.
+
address@hidden C-x RET t
address@hidden set-terminal-coding-system
+  The command @kbd{C-x @key{RET} t} (@code{set-terminal-coding-system})
+specifies the coding system for terminal output.  If you specify a
+character code for terminal output, all characters output to the
+terminal are translated into that coding system.
+
+  This feature is useful for certain character-only terminals built to
+support specific languages or character sets---for example, European
+terminals that support one of the ISO Latin character sets.
+
+  By default, output to the terminal is not translated at all.
+
address@hidden C-x RET k
address@hidden set-keyboard-coding-system
+  The command @kbd{C-x @key{RET} k} (@code{set-keyboard-coding-system})
+specifies the coding system for keyboard input.  Character-code
+translation of keyboard input is useful for terminals with keys that
+send non-ASCII graphic characters---for example, some terminals designed
+for ISO Latin-1 or subsets of it.
+
+  By default, keyboard input is not translated at all.
+
+  There is a similarity between using a coding system translation for
+keyboard input, and using an input method: both define sequences of
+keyboard input that translate into single characters.  However, input
+methods are designed to be convenient for interactive use by humans, and
+the sequences that are translated are typically sequences of ASCII
+printing characters.  Coding systems typically translate sequences of
+non-graphic characters.
+
+(This feature is non-functional and is temporarily disabled.)
+
address@hidden C-x RET p
address@hidden set-buffer-process-coding-system
+  The command @kbd{C-x @key{RET} p} (@code{set-buffer-process-coding-system})
+specifies the coding system for input and output to a subprocess.  This
+command applies to the current buffer; normally, each subprocess has its
+own buffer, and thus you can use this command to specify translation to
+and from a particular subprocess by giving the command in the
+corresponding buffer.
+
+  By default, process input and output are not translated at all.
+
address@hidden file-name-coding-system
+  The variable @code{file-name-coding-system} specifies a coding system
+to use for encoding file names.  If you set the variable to a coding
+system name (as a Lisp symbol or a string), XEmacs encodes file names
+using that coding system for all file operations.  This makes it
+possible to use non-Latin-1 characters in file names---or, at least,
+those non-Latin-1 characters which the specified coding system can
+encode.  By default, this variable is @code{nil}, which implies that you
+cannot use non-Latin-1 characters in file names.
+
address@hidden Major Modes, Indentation, Mule, Top
address@hidden Major Modes
address@hidden major modes
address@hidden TAB
address@hidden DEL
address@hidden LFD
+
+  Emacs has many different @dfn{major modes}, each of which customizes
+Emacs for editing text of a particular sort.  The major modes are mutually
+exclusive;  at any time, each buffer has one major mode.  The mode line
+normally contains the name of the current major mode in parentheses.
address@hidden Line}.
+
+  The least specialized major mode is called @dfn{Fundamental mode}.  This
+mode has no mode-specific redefinitions or variable settings.  Each
+Emacs command behaves in its most general manner, and each option is in its
+default state.  For editing any specific type of text, such as Lisp code or
+English text, you should switch to the appropriate major mode, such as Lisp
+mode or Text mode.
+
+  Selecting a major mode changes the meanings of a few keys to become
+more specifically adapted to the language being edited.  @key{TAB},
address@hidden, and @key{LFD} are changed frequently.  In addition, commands
+which handle comments use the mode to determine how to delimit comments.
+Many major modes redefine the syntactical properties of characters
+appearing in the buffer.  @xref{Syntax}.
+
+  The major modes fall into three major groups.  Lisp mode (which has
+several variants), C mode, and Muddle mode are for specific programming
+languages.  Text mode, Nroff mode, @TeX{} mode, and Outline mode are for
+editing English text.  The remaining major modes are not intended for use
+on users' files; they are used in buffers created by Emacs for specific
+purposes and include Dired mode for buffers made by Dired (@pxref{Dired}),
+Mail mode for buffers made by @kbd{C-x m} (@pxref{Sending Mail}), and Shell
+mode for buffers used for communicating with an inferior shell process
+(@pxref{Interactive Shell}).
+
+  Most programming language major modes specify that only blank lines
+separate paragraphs.  This is so that the paragraph commands remain useful.
address@hidden  They also cause Auto Fill mode to use the definition of
address@hidden to indent the new lines it creates.  This is because most lines
+in a program are usually indented.  @xref{Indentation}.
+
address@hidden
+* Choosing Modes::     How major modes are specified or chosen.
address@hidden menu
+
address@hidden Choosing Modes,,Major Modes,Major Modes
address@hidden Choosing Major Modes
+
+  You can select a major mode explicitly for the current buffer, but
+most of the time Emacs determines which mode to use based on the file
+name or some text in the file.
+
+  Use a @kbd{M-x} command to explicitly select a new major mode.  Add
address@hidden to the name of a major mode to get the name of a command to
+select that mode.  For example, to enter Lisp mode, execute @kbd{M-x
+lisp-mode}.
+
address@hidden auto-mode-alist
+  When you visit a file, Emacs usually chooses the right major mode
+based on the file's name.  For example, files whose names end in
address@hidden are edited in C mode.  The variable @code{auto-mode-alist}
+controls the correspondence between file names and major mode.  Its value
+is a list in which each element has the form:
+
address@hidden
+(@var{regexp} . @var{mode-function})
address@hidden example
+
address@hidden
+For example, one element normally found in the list has the form
address@hidden(@t{"\\.c$"} . c-mode)}. It is responsible for selecting C mode
+for files whose names end in @file{.c}.  (Note that @samp{\\} is needed in
+Lisp syntax to include a @samp{\} in the string, which is needed to
+suppress the special meaning of @samp{.} in regexps.)  The only practical
+way to change this variable is with Lisp code.
+
+  You can specify which major mode should be used for editing a certain
+file by a special sort of text in the first non-blank line of the file.
+The mode name should appear in this line both preceded and followed by
address@hidden  Other text may appear on the line as well.  For example,
+
address@hidden
+;-*-Lisp-*-
address@hidden example
+
address@hidden
+tells Emacs to use Lisp mode.  Note how the semicolon is used to make Lisp
+treat this line as a comment.  Such an explicit specification overrides any
+default mode based on the file name.
+
+  Another format of mode specification is:
+
address@hidden
+-*-Mode: @var{modename};-*-
address@hidden example
+
address@hidden
+which allows other things besides the major mode name to be specified.
+However, Emacs does not look for anything except the mode name.
+
+The major mode can also be specified in a local variables list.
address@hidden Variables}.
+
address@hidden default-major-mode
+  When you visit a file that does not specify a major mode to use, or
+when you create a new buffer with @kbd{C-x b}, Emacs uses the major mode
+specified by the variable @code{default-major-mode}.  Normally this
+value is the symbol @code{fundamental-mode}, which specifies Fundamental
+mode.  If @code{default-major-mode} is @code{nil}, the major mode is
+taken from the previously selected buffer.
+
address@hidden Indentation, Text, Major Modes, Top
address@hidden Indentation
address@hidden indentation
+
address@hidden WideCommands
address@hidden @kbd
address@hidden @key{TAB}
+Indent current line ``appropriately'' in a mode-dependent fashion.
address@hidden @key{LFD}
+Perform @key{RET} followed by @key{TAB} (@code{newline-and-indent}).
address@hidden M-^
+Merge two lines (@code{delete-indentation}).  This would cancel out
+the effect of @key{LFD}.
address@hidden C-M-o
+Split line at point; text on the line after point becomes a new line
+indented to the same column that it now starts in (@code{split-line}).
address@hidden M-m
+Move (forward or back) to the first non-blank character on the current
+line (@code{back-to-indentation}).
address@hidden C-M-\
+Indent several lines to same column (@code{indent-region}).
address@hidden C-x @key{TAB}
+Shift block of lines rigidly right or left (@code{indent-rigidly}).
address@hidden M-i
+Indent from point to the next prespecified tab stop column
+(@code{tab-to-tab-stop}).
address@hidden M-x indent-relative
+Indent from point to under an indentation point in the previous line.
address@hidden table
+
address@hidden TAB
address@hidden indentation
+  Most programming languages have some indentation convention.  For Lisp
+code, lines are indented according to their nesting in parentheses.  The
+same general idea is used for C code, though details differ.
+
+   Use the @key{TAB} command to indent a line whatever the language.
+Each major mode defines this command to perform indentation appropriate
+for the particular language.  In Lisp mode, @key{TAB} aligns a line
+according to its depth in parentheses.  No matter where in the line you
+are when you type @key{TAB}, it aligns the line as a whole.  In C mode,
address@hidden implements a subtle and sophisticated indentation style that
+knows about many aspects of C syntax.
+
address@hidden TAB
+  In Text mode, @key{TAB} runs the command @code{tab-to-tab-stop}, which
+indents to the next tab stop column.  You can set the tab stops with
address@hidden edit-tab-stops}.
+
address@hidden
+* Indentation Commands:: Various commands and techniques for indentation.
+* Tab Stops::            You can set arbitrary "tab stops" and then
+                         indent to the next tab stop when you want to.
+* Just Spaces::          You can request indentation using just spaces.
address@hidden menu
+
address@hidden Indentation Commands, Tab Stops, Indentation, Indentation
address@hidden Indentation Commands and Techniques
address@hidden ??? Explain what Emacs has instead of space-indent-flag.
+
+  If you just want to insert a tab character in the buffer, you can type
address@hidden @key{TAB}}.
+
address@hidden M-m
address@hidden back-to-indentation
+  To move over the indentation on a line, type @kbd{Meta-m}
+(@code{back-to-indentation}).  This command, given anywhere on a line,
+positions point at the first non-blank character on the line.
+
+  To insert an indented line before the current line, type @kbd{C-a C-o
address@hidden  To make an indented line after the current line, use
address@hidden @key{LFD}}.
+
address@hidden C-M-o
address@hidden split-line
+  @kbd{C-M-o} (@code{split-line}) moves the text from point to the end of
+the line vertically down, so that the current line becomes two lines.
address@hidden first moves point forward over any spaces and tabs.  Then it
+inserts after point a newline and enough indentation to reach the same
+column point is on.  Point remains before the inserted newline; in this
+regard, @kbd{C-M-o} resembles @kbd{C-o}.
+
address@hidden M-\
address@hidden M-^
address@hidden delete-horizontal-space
address@hidden delete-indentation
+  To join two lines cleanly, use the @kbd{Meta-^}
+(@code{delete-indentation}) command to delete the indentation at the
+front of the current line, and the line boundary as well.  Empty spaces
+are replaced by a single space, or by no space if at the beginning of a
+line, before a close parenthesis, or after an open parenthesis.  
+To delete just the indentation of a line, go to the beginning of the 
+line and use @kbd{Meta-\} (@code{delete-horizontal-space}), which 
+deletes all spaces and tabs around the cursor.
+
address@hidden C-M-\
address@hidden C-x TAB
address@hidden indent-region
address@hidden indent-rigidly
+  There are also commands for changing the indentation of several lines at
+once.  @kbd{Control-Meta-\} (@code{indent-region}) gives each line which
+begins in the region the ``usual'' indentation by invoking @key{TAB} at the
+beginning of the line.  A numeric argument specifies the column to indent
+to.  Each line is shifted left or right so that its first non-blank
+character appears in that column.  @kbd{C-x @key{TAB}}
+(@code{indent-rigidly}) moves all the lines in the region right by its
+argument (left, for negative arguments).  The whole group of lines moves
+rigidly sideways, which is how the command gets its address@hidden
+
address@hidden indent-relative
+  @kbd{M-x indent-relative} indents at point based on the previous line
+(actually, the last non-empty line.)  It inserts whitespace at point, moving
+point, until it is underneath an indentation point in the previous line.
+An indentation point is the end of a sequence of whitespace or the end of
+the line.  If point is farther right than any indentation point in the
+previous line, the whitespace before point is deleted and the first
+indentation point then applicable is used.  If no indentation point is
+applicable even then, @code{tab-to-tab-stop} is run (see next section).
+
+  @code{indent-relative} is the definition of @key{TAB} in Indented Text
+mode.  @xref{Text}.
+
address@hidden Tab Stops, Just Spaces, Indentation Commands, Indentation
address@hidden Tab Stops
+
address@hidden M-i
address@hidden tab-to-tab-stop
+  For typing in tables, you can use Text mode's definition of @key{TAB},
address@hidden  This command inserts indentation before point,
+enough to reach the next tab stop column.  Even if you are not in Text mode,
+this function is associated with @kbd{M-i} anyway.
+
address@hidden edit-tab-stops
address@hidden edit-tab-stops-note-changes
address@hidden C-c C-c (Edit Tab Stops)
address@hidden tab-stop-list
+  You can arbitrarily set the tab stops used by @kbd{M-i}.  They are
+stored as a list of column-numbers in increasing order in the variable
address@hidden
+
+  The convenient way to set the tab stops is using @kbd{M-x edit-tab-stops},
+which creates and selects a buffer containing a description of the tab stop
+settings.  You can edit this buffer to specify different tab stops, and
+then type @kbd{C-c C-c} to make those new tab stops take effect.  In the
+tab stop buffer, @kbd{C-c C-c} runs the function
address@hidden rather than the default
address@hidden  @code{edit-tab-stops} records which buffer was current
+when you invoked it, and stores the tab stops in that buffer.  Normally
+all buffers share the same tab stops and changing them in one buffer
+affects all.  If you make @code{tab-stop-list} local in one
+buffer @code{edit-tab-stops} in that buffer edits only the local
+settings.
+
+  Below is the text representing ordinary tab stops every eight columns:
+
address@hidden
+        :       :       :       :       :       :
+0         1         2         3         4
+0123456789012345678901234567890123456789012345678
+To install changes, type C-c C-c
address@hidden example
+
+  The first line contains a colon at each tab stop.  The remaining lines
+help you see where the colons are and tell you what to do.
+
+  Note that the tab stops that control @code{tab-to-tab-stop} have nothing
+to do with displaying tab characters in the buffer.  @xref{Display Vars},
+for more information on that.
+
address@hidden Just Spaces,, Tab Stops, Indentation
address@hidden Tabs vs. Spaces
+
address@hidden indent-tabs-mode
+  Emacs normally uses both tabs and spaces to indent lines.  If you prefer,
+all indentation can be made from spaces only.  To request this, set
address@hidden to @code{nil}.  This is a per-buffer variable;
+altering the variable affects only the current buffer, but there is a
+default value which you can change as well.  @xref{Locals}.
+
address@hidden tabify
address@hidden untabify
+  There are also commands to convert tabs to spaces or vice versa, always
+preserving the columns of all non-blank text.  @kbd{M-x tabify} scans the
+region for sequences of spaces, and converts sequences of at least three
+spaces to tabs if that is possible without changing indentation.  @kbd{M-x
+untabify} changes all tabs in the region to corresponding numbers of spaces.
+
address@hidden Text, Programs, Indentation, Top
address@hidden Commands for Human Languages
address@hidden text
+
+  The term @dfn{text} has two widespread meanings in our area of the
+computer field.  One is data that is a sequence of characters.  In this
+sense of the word any file that you edit with Emacs is text.  The other
+meaning is more restrictive: a sequence of characters in a human
+language for humans to read (possibly after processing by a text
+formatter), as opposed to a program or commands for a program.
+
+  Human languages have syntactic and stylistic conventions that editor
+commands should support or use to advantage: conventions involving
+words, sentences, paragraphs, and capital letters.  This chapter describes
+Emacs commands for all these things.  There are also commands for
address@hidden, or rearranging paragraphs into lines of approximately equal
+length.  The commands for moving over and killing words, sentences,
+and paragraphs, while intended primarily for editing text, are also often
+useful for editing programs.
+
+  Emacs has several major modes for editing human language text.
+If a file contains plain text, use Text mode, which customizes
+Emacs in small ways for the syntactic conventions of text.  For text which
+contains embedded commands for text formatters, Emacs has other major modes,
+each for a particular text formatter.  Thus, for input to @TeX{}, you can
+use @TeX{} mode; for input to nroff, Nroff mode.
+
address@hidden
+* Text Mode::   The major modes for editing text files.
+* Nroff Mode::  The major mode for editing input to the formatter nroff.
+* TeX Mode::    The major modes for editing input to the formatter TeX.
+* Outline Mode:: The major mode for editing outlines.
+* Words::       Moving over and killing words.
+* Sentences::   Moving over and killing sentences.
+* Paragraphs:: Moving over paragraphs.
+* Pages::      Moving over pages.
+* Filling::     Filling or justifying text
+* Case::        Changing the case of text
address@hidden menu
+
address@hidden Text Mode, Words, Text, Text
address@hidden Text Mode
+
address@hidden tab-to-tab-stop
address@hidden edit-tab-stops
address@hidden Text mode
address@hidden TAB
address@hidden text-mode
+  You should use Text mode---rather than Fundamental or Lisp mode---to
+edit files of text in a human language.  Invoke @kbd{M-x text-mode} to
+enter Text mode.  In Text mode, @key{TAB} runs the function
address@hidden, which allows you to use arbitrary tab stops set
+with @kbd{M-x edit-tab-stops} (@pxref{Tab Stops}).  Features concerned
+with comments in programs are turned off unless they are explicitly invoked.
+The syntax table is changed so that periods are not considered part of a
+word, while apostrophes, backspaces and underlines are.
+
address@hidden indented-text-mode
+  A similar variant mode is Indented Text mode, intended for editing
+text in which most lines are indented.  This mode defines @key{TAB} to
+run @code{indent-relative} (@pxref{Indentation}), and makes Auto Fill
+indent the lines it creates.  As a result, a line made by Auto Filling,
+or by @key{LFD}, is normally indented just like the previous line.  Use
address@hidden indented-text-mode} to select this mode.
+
address@hidden text-mode-hook
+  Entering Text mode or Indented Text mode calls the value of the
+variable @code{text-mode-hook} with no arguments, if that value exists
+and is not @code{nil}.  This value is also called when modes related to
+Text mode are entered; this includes Nroff mode, @TeX{} mode, Outline
+mode, and Mail mode.  Your hook can look at the value of
address@hidden to see which of these modes is actually being entered.
+
+  Two modes similar to Text mode are of use for editing text that is to
+be passed through a text formatter before achieving its final readable form.
+
address@hidden
+* Nroff Mode::  The major mode for editing input to the formatter nroff.
+* TeX Mode::    The major modes for editing input to the formatter TeX.
+
+
+  Another similar mode is used for editing outlines.  It allows you
+to view the text at various levels of detail.  You can view either
+the outline headings alone or both headings and text; you can also
+hide some of the headings at lower levels from view to make the high
+level structure more visible.
+
+
+* Outline Mode:: The major mode for editing outlines.
address@hidden menu
+
address@hidden Nroff Mode, TeX Mode, Text Mode, Text Mode
address@hidden Nroff Mode
+
address@hidden nroff
address@hidden nroff-mode
+  Nroff mode is a mode like Text mode but modified to handle nroff
+commands present in the text.  Invoke @kbd{M-x nroff-mode} to enter this
+mode.  Nroff mode differs from Text mode in only a few ways.  All nroff
+command lines are considered paragraph separators, so that filling never
+garbles the nroff commands.  Pages are separated by @samp{.bp} commands.
+Comments start with backslash-doublequote.  There are also three special
+commands that are not available in Text mode:
+
address@hidden forward-text-line
address@hidden backward-text-line
address@hidden count-text-lines
address@hidden M-n
address@hidden M-p
address@hidden M-?
address@hidden @kbd
address@hidden M-n
+Move to the beginning of the next line that isn't an nroff command
+(@code{forward-text-line}).  An argument is a repeat count.
address@hidden M-p
+Like @kbd{M-n} but move up (@code{backward-text-line}).
address@hidden M-?
+Prints in the echo area the number of text lines (lines that are not
+nroff commands) in the region (@code{count-text-lines}).
address@hidden table
+
address@hidden electric-nroff-mode
+  The other feature of Nroff mode is Electric Nroff newline mode.  
+This is a minor mode that you can turn on or off with
address@hidden electric-nroff-mode} (@pxref{Minor Modes}).  When the mode is
+on and you use @key{RET} to end a line containing an nroff command
+that opens a kind of grouping, Emacs automatically inserts the matching
+nroff command to close that grouping on the following line.  For
+example, if you are at the beginning of a line and type @kbd{.@:(b
address@hidden, the matching command @samp{.)b} will be inserted on a new
+line following point.
+
address@hidden nroff-mode-hook
+  Entering Nroff mode calls the value of the variable
address@hidden with no arguments, if that value exists and is not
address@hidden; then it does the same with the variable
address@hidden
+
address@hidden TeX Mode, Outline Mode, Nroff Mode, Text Mode
address@hidden @TeX{} Mode
address@hidden TeX
address@hidden LaTeX
address@hidden TeX-mode
address@hidden tex-mode
address@hidden plain-tex-mode
address@hidden LaTeX-mode
address@hidden plain-TeX-mode
address@hidden latex-mode
+
+  @TeX{} is a powerful text formatter written by Donald Knuth; like GNU
+Emacs, it is free.  address@hidden is a simplified input format for @TeX{},
+implemented by @TeX{} macros.  It is part of @address@hidden
+
+  Emacs has a special @TeX{} mode for editing @TeX{} input files.
+It provides facilities for checking the balance of delimiters and for
+invoking @TeX{} on all or part of the file.
+
+  @TeX{} mode has two variants, Plain @TeX{} mode and address@hidden mode,
+which are two distinct major modes that differ only slightly.  These
+modes are designed for editing the two different input formats.  The
+command @kbd{M-x tex-mode} looks at the contents of a buffer to
+determine whether it appears to be address@hidden input or not; it then
+selects the appropriate mode.  If it can't tell which is right (e.g.,
+the buffer is empty), the variable @code{tex-default-mode} controls
+which mode is used.
+
+  The commands @kbd{M-x plain-tex-mode} and @kbd{M-x latex-mode}
+explicitly select one of the variants of @TeX{} mode.  Use these
+commands when @kbd{M-x tex-mode} does not guess address@hidden
+
address@hidden
+* Editing: TeX Editing.   Special commands for editing in TeX mode.
+* Printing: TeX Print.    Commands for printing part of a file with TeX.
address@hidden menu
+
+  @TeX{} for Unix systems can be obtained from the University of Washington
+for a distribution fee.
+
+  To order a full distribution, send $140.00 for a 1/2 inch
+9-track tape, $165.00 for two 4-track 1/4 inch cartridge tapes
+(foreign sites $150.00, for 1/2 inch, $175.00 for 1/4 inch, to cover
+the extra postage) payable to the University of Washington to:
+
address@hidden
+The Director
+Northwest Computer Support Group,  DW-10
+University of Washington
+Seattle, Washington 98195
address@hidden display
+
address@hidden
+Purchase orders are acceptable, but there is an extra charge of
+$10.00 to pay for processing charges. (The total cost comes to $150 
+for domestic sites, $175 for foreign sites).
+
+  The normal distribution is a tar tape, blocked 20, 1600 bpi, on an
+industry standard 2400 foot half-inch reel.  The physical format for
+the 1/4 inch streamer cartridges uses QIC-11, 8000 bpi, 4-track
+serpentine recording for the SUN.  Also, SystemV tapes can be written
+in cpio format, blocked 5120 bytes, ASCII headers.
+
address@hidden TeX Editing,TeX Print,TeX Mode,TeX Mode
address@hidden @TeX{} Editing Commands
+
+  Here are the special commands provided in @TeX{} mode for editing the
+text of the file.
+
address@hidden @kbd
address@hidden "
+Insert, according to context, either @samp{``} or @samp{"} or
address@hidden''} (@code{TeX-insert-quote}).
address@hidden @key{LFD}
+Insert a paragraph break (two newlines) and check the previous
+paragraph for unbalanced braces or dollar signs
+(@address@hidden).
address@hidden M-x validate-tex-buffer
+Check each paragraph in the buffer for unbalanced braces or dollar signs.
address@hidden C-c @{
+Insert @address@hidden@}} and position point between them 
(@code{tex-insert-braces}).
address@hidden C-c @}
+Move forward past the next unmatched close brace (@code{up-list}).
address@hidden C-c C-e
+Close a block for address@hidden (@code{tex-close-latex-block}).
address@hidden table
+
address@hidden tex-insert-quote
address@hidden " (TeX mode)
+  In @TeX{}, the character @samp{"} is not normally used; you use @samp{``}
+to start a quotation and @samp{''} to end one.  @TeX{} mode defines the key
address@hidden"} to insert @samp{``} after whitespace or an open brace, @samp{"}
+after a backslash, or @samp{''} otherwise.  This is done by the command
address@hidden  If you need the character @samp{"} itself in
+unusual contexts, use @kbd{C-q} to insert it.  Also, @kbd{"} with a
+numeric argument always inserts that number of @samp{"} characters.
+
+  In @TeX{} mode, @samp{$} has a special syntax code which attempts to
+understand the way @TeX{} math mode delimiters match.  When you insert a
address@hidden that is meant to exit math mode, the position of the matching
address@hidden that entered math mode is displayed for a second.  This is the
+same feature that displays the open brace that matches a close brace that
+is inserted.  However, there is no way to tell whether a @samp{$} enters
+math mode or leaves it; so when you insert a @samp{$} that enters math
+mode, the previous @samp{$} position is shown as if it were a match, even
+though they are actually unrelated.
+
address@hidden tex-insert-braces
address@hidden C-c @{ (TeX mode)
address@hidden up-list
address@hidden C-c @} (TeX mode)
+  If you prefer to keep braces balanced at all times, you can use @kbd{C-c @{}
+(@code{tex-insert-braces}) to insert a pair of braces.  It leaves point
+between the two braces so you can insert the text that belongs inside.
+Afterward, use the command @kbd{C-c @}} (@code{up-list}) to move forward
+past the close brace.
+
address@hidden validate-tex-buffer
address@hidden tex-terminate-paragraph
address@hidden LFD (TeX mode)
+  There are two commands for checking the matching of braces.  @key{LFD}
+(@code{tex-terminate-paragraph}) checks the paragraph before point, and
+inserts two newlines to start a new paragraph.  It prints a message in the
+echo area if any mismatch is found.  @kbd{M-x validate-tex-buffer} checks
+the entire buffer, paragraph by paragraph.  When it finds a paragraph that
+contains a mismatch, it displays point at the beginning of the paragraph
+for a few seconds and pushes a mark at that spot.  Scanning continues
+until the whole buffer has been checked or until you type another key.
+The positions of the last several paragraphs with mismatches can be
+found in the mark ring (@pxref{Mark Ring}).
+
+  Note that square brackets and parentheses, not just braces, are
+matched in @TeX{} mode.  This is wrong if you want to  check @TeX{} syntax.
+However, parentheses and square brackets are likely to be used in text as
+matching delimiters and it is useful for the various motion commands and
+automatic match display to work with them.
+
address@hidden tex-close-latex-block
address@hidden C-c C-f (LaTeX mode)
+  In address@hidden input, @samp{\begin} and @samp{\end} commands must balance.
+After you insert a @samp{\begin}, use @kbd{C-c C-f}
+(@code{tex-close-latex-block}) to insert automatically a matching
address@hidden (on a new line following the @samp{\begin}).  A blank line is
+inserted between the two, and point is left address@hidden
+
address@hidden TeX Print,,TeX Editing,TeX Mode
address@hidden @TeX{} Printing Commands
+
+  You can invoke @TeX{} as an inferior of Emacs on either the entire
+contents of the buffer or just a region at a time.  Running @TeX{} in
+this way on just one chapter is a good way to see what your changes
+look like without taking the time to format the entire file.
+
address@hidden @kbd
address@hidden C-c C-r
+Invoke @TeX{} on the current region, plus the buffer's header
+(@code{tex-region}).
address@hidden C-c C-b
+Invoke @TeX{} on the entire current buffer (@code{tex-buffer}).
address@hidden C-c C-l
+Recenter the window showing output from the inferior @TeX{} so that
+the last line can be seen (@code{tex-recenter-output-buffer}).
address@hidden C-c C-k
+Kill the inferior @TeX{} (@code{tex-kill-job}).
address@hidden C-c C-p
+Print the output from the last @kbd{C-c C-r} or @kbd{C-c C-b} command
+(@code{tex-print}).
address@hidden C-c C-q
+Show the printer queue (@code{tex-show-print-queue}).
address@hidden table
+
address@hidden tex-buffer
address@hidden C-c C-b (TeX mode)
address@hidden tex-print
address@hidden C-c C-p (TeX mode)
address@hidden tex-show-print-queue
address@hidden C-c C-q (TeX mode)
+  You can pass the current buffer through an inferior @TeX{} using
address@hidden C-b} (@code{tex-buffer}).  The formatted output appears in a file
+in @file{/tmp}; to print it, type @kbd{C-c C-p} (@code{tex-print}).
+Afterward use @kbd{C-c C-q} (@code{tex-show-print-queue}) to view the
+progress of your output towards being printed.
+
address@hidden tex-kill-job
address@hidden C-c C-k (TeX mode)
address@hidden tex-recenter-output-buffer
address@hidden C-c C-l (TeX mode)
+  The console output from @TeX{}, including any error messages, appears in a
+buffer called @samp{*TeX-shell*}.  If @TeX{} gets an error, you can switch
+to this buffer and feed it input (this works as in Shell mode;
address@hidden Shell}).  Without switching to this buffer, you can scroll
+it so that its last line is visible by typing @kbd{C-c C-l}.
+
+  Type @kbd{C-c C-k} (@code{tex-kill-job}) to kill the @TeX{} process if
+you see that its output is no longer useful.  Using @kbd{C-c C-b} or
address@hidden C-r} also kills any @TeX{} process still address@hidden
+
address@hidden tex-region
address@hidden C-c C-r (TeX mode)
+  You can pass an arbitrary region through an inferior @TeX{} by typing
address@hidden C-r} (@code{tex-region}).  This is tricky, however, because
+most files of @TeX{} input contain commands at the beginning to set
+parameters and define macros.  Without them, no later part of the file
+will format correctly.  To solve this problem, @kbd{C-c C-r} allows you
+to designate a part of the file as containing essential commands; it is
+included before the specified region as part of the input to @TeX{}.
+The designated part of the file is called the @dfn{header}.
+
address@hidden header (TeX mode)
+  To indicate the bounds of the header in Plain @TeX{} mode, insert two
+special strings in the file: @samp{%**start of header} before the
+header, and @samp{%**end of header} after it.  Each string must appear
+entirely on one line, but there may be other text on the line before or
+after.  The lines containing the two strings are included in the header.
+If @samp{%**start of header} does not appear within the first 100 lines of
+the buffer, @kbd{C-c C-r} assumes there is no header.
+
+  In address@hidden mode, the header begins with @samp{\documentstyle} and ends
+with @address@hidden@address@hidden  These are commands that address@hidden 
requires
+you to use, so you don't need to do anything special to identify the
+header.
+
address@hidden TeX-mode-hook
address@hidden LaTeX-mode-hook
address@hidden plain-TeX-mode-hook
+  When you enter either kind of @TeX{} mode, Emacs calls with no
+arguments the value of the variable @code{text-mode-hook}, if that value
+exists and is not @code{nil}.  Emacs then calls the variable
address@hidden and either @code{plain-TeX-mode-hook} or
address@hidden under the same conditions.
+
address@hidden Outline Mode,, TeX Mode, Text Mode
address@hidden Outline Mode
address@hidden outlines
address@hidden selective display
address@hidden invisible lines
+
+  Outline mode is a major mode similar to Text mode but intended for editing
+outlines.  It allows you to make parts of the text temporarily invisible
+so that you can see just the overall structure of the outline.  Type
address@hidden outline-mode} to turn on Outline mode in the current buffer.
+
address@hidden outline-mode-hook
+  When you enter Outline mode, Emacs calls with no arguments the value
+of the variable @code{text-mode-hook}, if that value exists and is not
address@hidden; then it does the same with the variable
address@hidden
+
+  When a line is invisible in outline mode, it does not appear on the
+screen.  The screen appears exactly as if the invisible line
+were deleted, except that an ellipsis (three periods in a row) appears
+at the end of the previous visible line (only one ellipsis no matter
+how many invisible lines follow).
+
+  All editing commands treat the text of the invisible line as part of the
+previous visible line.  For example, @kbd{C-n} moves onto the next visible
+line.  Killing an entire visible line, including its terminating newline,
+really kills all the following invisible lines as well; yanking
+everything back yanks the invisible lines and they remain invisible.
+
address@hidden
+* Format: Outline Format.        What the text of an outline looks like.
+* Motion: Outline Motion.        Special commands for moving through outlines.
+* Visibility: Outline Visibility. Commands to control what is visible.
address@hidden menu
+
address@hidden Outline Format,Outline Motion,Outline Mode, Outline Mode
address@hidden Format of Outlines
+
address@hidden heading lines (Outline mode)
address@hidden body lines (Outline mode)
+  Outline mode assumes that the lines in the buffer are of two types:
address@hidden lines} and @dfn{body lines}.  A heading line represents a
+topic in the outline.  Heading lines start with one or more stars; the
+number of stars determines the depth of the heading in the outline
+structure.  Thus, a heading line with one star is a major topic; all the
+heading lines with two stars between it and the next one-star heading
+are its subtopics; and so on.  Any line that is not a heading line is a
+body line.  Body lines belong to the preceding heading line.  Here is an
+example:
+
address@hidden
+* Food
+
+This is the body,
+which says something about the topic of food.
+
+** Delicious Food
+
+This is the body of the second-level header.
+
+** Distasteful Food
+
+This could have
+a body too, with
+several lines.
+
+*** Dormitory Food
+
+* Shelter
+
+A second first-level topic with its header line.
address@hidden example
+
+  A heading line together with all following body lines is called
+collectively an @dfn{entry}.  A heading line together with all following
+deeper heading lines and their body lines is called a @dfn{subtree}.
+
address@hidden outline-regexp
+ You can customize the criterion for distinguishing heading lines by
+setting the variable @code{outline-regexp}.  Any line whose beginning
+has a match for this regexp is considered a heading line.  Matches that
+start within a line (not at the beginning) do not count.  The length of
+the matching text determines the level of the heading; longer matches
+make a more deeply nested level.  Thus, for example, if a text formatter
+has commands @samp{@@chapter}, @samp{@@section} and @samp{@@subsection}
+to divide the document into chapters and sections, you can make those
+lines count as heading lines by setting @code{outline-regexp} to
address@hidden"@@chap\\|@@\\(sub\\)*section"}.  Note the trick: the two words
address@hidden and @samp{section} are the same length, but by defining
+the regexp to match only @samp{chap} we ensure that the length of the
+text matched on a chapter heading is shorter, so that Outline mode will
+know that sections are contained in chapters.  This works as long as no
+other command starts with @samp{@@chap}.
+
+  Outline mode makes a line invisible by changing the newline before it
+into an ASCII Control-M (code 015).  Most editing commands that work on
+lines treat an invisible line as part of the previous line because,
+strictly speaking, it @i{is} part of that line, since there is no longer a
+newline in between.  When you save the file in Outline mode, Control-M
+characters are saved as newlines, so the invisible lines become ordinary
+lines in the file.  Saving does not change the visibility status of a
+line inside Emacs.
+
address@hidden Outline Motion,Outline Visibility,Outline Format,Outline Mode
address@hidden Outline Motion Commands
+
+   Some special commands in Outline mode move backward and forward to
+heading lines.
+
address@hidden @kbd
address@hidden C-c C-n
+Move point to the next visible heading line
+(@code{outline-next-visible-heading}).
address@hidden C-c C-p
+Move point to the previous visible heading line @*
+(@code{outline-previous-visible-heading}).
address@hidden C-c C-f
+Move point to the next visible heading line at the same level
+as the one point is on (@code{outline-forward-same-level}).
address@hidden C-c C-b
+Move point to the previous visible heading line at the same level
+(@code{outline-backward-same-level}).
address@hidden C-c C-u
+Move point up to a lower-level (more inclusive) visible heading line
+(@code{outline-up-heading}).
address@hidden table
+
address@hidden outline-next-visible-heading
address@hidden outline-previous-visible-heading
address@hidden C-c C-n (Outline mode)
address@hidden C-c C-p (Outline mode)
+  @kbd{C-c C-n} (@code{next-visible-heading}) moves down to the next
+heading line.  @kbd{C-c C-p} (@code{previous-visible-heading}) moves
+similarly backward.  Both accept numeric arguments as repeat counts.  The
+names emphasize that invisible headings are skipped, but this is not really
+a special feature.  All editing commands that look for lines ignore the
+invisible lines address@hidden
+
address@hidden outline-up-heading
address@hidden outline-forward-same-level
address@hidden outline-backward-same-level
address@hidden C-c C-f (Outline mode)
address@hidden C-c C-b (Outline mode)
address@hidden C-c C-u (Outline mode)
+  More advanced motion commands understand the levels of headings.
+The commands @kbd{C-c C-f} (@code{outline-forward-same-level}) and
address@hidden C-b} (@code{outline-backward-same-level}) move from one
+heading line to another visible heading at the same depth in
+the outline.  @kbd{C-c C-u} (@code{outline-up-heading}) moves
+backward to another heading that is less deeply nested.
+
address@hidden Outline Visibility,,Outline Motion,Outline Mode
address@hidden Outline Visibility Commands
+
+  The other special commands of outline mode are used to make lines visible
+or invisible.  Their names all start with @code{hide} or @code{show}.
+Most of them exist as pairs of opposites.  They are not undoable; instead,
+you can undo right past them.  Making lines visible or invisible is simply
+not recorded by the undo mechanism.
+
address@hidden @kbd
address@hidden M-x hide-body
+Make all body lines in the buffer invisible.
address@hidden M-x show-all
+Make all lines in the buffer visible.
address@hidden C-c C-d
+Make everything under this heading invisible, not including this
+heading itself (@code{hide-subtree}).
address@hidden C-c C-s
+Make everything under this heading visible, including body,
+subheadings, and their bodies (@code{show-subtree}).
address@hidden M-x hide-leaves
+Make the body of this heading line, and of all its subheadings,
+invisible.
address@hidden M-x show-branches
+Make all subheadings of this heading line, at all levels, visible.
address@hidden C-c C-i
+Make immediate subheadings (one level down) of this heading line
+visible (@code{show-children}).
address@hidden M-x hide-entry
+Make this heading line's body invisible.
address@hidden M-x show-entry
+Make this heading line's body visible.
address@hidden table
+
address@hidden hide-entry
address@hidden show-entry
+  Two commands that are exact opposites are @kbd{M-x hide-entry} and
address@hidden show-entry}.  They are used with point on a heading line, and
+apply only to the body lines of that heading.  The subtopics and their
+bodies are not affected.
+
address@hidden hide-subtree
address@hidden show-subtree
address@hidden C-c C-d (Outline mode)
address@hidden C-c C-h (Outline mode)
address@hidden subtree (Outline mode)
+  Two more powerful opposites are @kbd{C-c C-d} (@code{hide-subtree}) and
address@hidden C-s} (@code{show-subtree}).  Both should be used when point is
+on a heading line, and both apply to all the lines of that heading's
address@hidden: its body, all its subheadings, both direct and indirect, and
+all of their bodies.  In other words, the subtree contains everything
+following this heading line, up to and not including the next heading of
+the same or higher address@hidden
+
address@hidden hide-leaves
address@hidden show-branches
+  Intermediate between a visible subtree and an invisible one is having
+all the subheadings visible but none of the body.  There are two commands
+for doing this, one that hides the bodies and one that
+makes the subheadings visible.  They are @kbd{M-x hide-leaves} and
address@hidden show-branches}.
+
address@hidden C-c C-i (Outline mode)
address@hidden show-children
+  A little weaker than @code{show-branches} is @kbd{C-c C-i}
+(@code{show-children}).  It makes just the direct subheadings
+visible---those one level down.  Deeper subheadings remain
address@hidden
+
address@hidden hide-body
address@hidden show-all
+  Two commands have a blanket effect on the whole file.  @kbd{M-x
+hide-body} makes all body lines invisible, so that you see just the
+outline structure.  @kbd{M-x show-all} makes all lines visible.  You can
+think of these commands as a pair of opposites even though @kbd{M-x
+show-all} applies to more than just body lines.
+
address@hidden selective-display-ellipses
+You can turn off the use of ellipses at the ends of visible lines by
+setting @code{selective-display-ellipses} to @code{nil}.  The result is
+no visible indication of the presence of invisible lines.
+
address@hidden Words, Sentences, Text Mode, Text
address@hidden Words
address@hidden words
address@hidden Meta
+
+  Emacs has commands for moving over or operating on words.  By convention,
+the keys for them are all @kbd{Meta-} characters.
+
address@hidden widecommands
address@hidden @kbd
address@hidden M-f
+Move forward over a word (@code{forward-word}).
address@hidden M-b
+Move backward over a word (@code{backward-word}).
address@hidden M-d
+Kill up to the end of a word (@code{kill-word}).
address@hidden address@hidden
+Kill back to the beginning of a word (@code{backward-kill-word}).
address@hidden M-@@
+Mark the end of the next word (@code{mark-word}).
address@hidden M-t
+Transpose two words;  drag a word forward
+or backward across other words (@code{transpose-words}).
address@hidden table
+
+  Notice how these keys form a series that parallels the
+character-based @kbd{C-f}, @kbd{C-b}, @kbd{C-d}, @kbd{C-t} and
address@hidden  @kbd{M-@@} is related to @kbd{C-@@}, which is an alias for
address@hidden@address@hidden
+
address@hidden M-f
address@hidden M-b
address@hidden forward-word
address@hidden backward-word
+  The commands @kbd{Meta-f} (@code{forward-word}) and @kbd{Meta-b}
+(@code{backward-word}) move forward and backward over words.  They are
+analogous to @kbd{Control-f} and @kbd{Control-b}, which move over single
+characters.  Like their @kbd{Control-} analogues, @kbd{Meta-f} and
address@hidden move several words if given an argument.  @kbd{Meta-f} with a
+negative argument moves backward, and @kbd{Meta-b} with a negative argument
+moves forward.  Forward motion stops after the last letter of the
+word, while backward motion stops before the first address@hidden
+
address@hidden M-d
address@hidden kill-word
+  @kbd{Meta-d} (@code{kill-word}) kills the word after point.  To be
+precise, it kills everything from point to the place @kbd{Meta-f} would
+move to.  Thus, if point is in the middle of a word, @kbd{Meta-d} kills
+just the part after point.  If some punctuation comes between point and the
+next word, it is killed along with the word.  (To kill only the
+next word but not the punctuation before it, simply type @kbd{Meta-f} to get
+to the end and kill the word backwards with @address@hidden)
address@hidden takes arguments just like @kbd{Meta-f}.
+
address@hidden backward-kill-word
address@hidden M-DEL
+  @address@hidden (@code{backward-kill-word}) kills the word before
+point.  It kills everything from point back to where @kbd{Meta-b} would
+move to.  If point is after the space in @address@hidden, BAR}}, then
address@hidden@samp{FOO, }} is killed.   To kill just @samp{FOO}, type
address@hidden Meta-d} instead of @address@hidden
+
address@hidden transposition
address@hidden M-t
address@hidden transpose-words
+  @kbd{Meta-t} (@code{transpose-words}) exchanges the word before or
+containing point with the following word.  The delimiter characters
+between the words do not move.  For example, transposing @address@hidden,
+BAR}} results in @address@hidden, FOO}} rather than @address@hidden FOO,}}.
address@hidden, for more on transposition and on arguments to
+transposition commands.
+
address@hidden M-@@
address@hidden mark-word
+  To operate on the next @var{n} words with an operation which applies
+between point and mark, you can either set the mark at point and then move
+over the words, or you can use the command @kbd{Meta-@@} (@code{mark-word})
+which does not move point but sets the mark where @kbd{Meta-f} would move
+to.  It can be given arguments just like @kbd{Meta-f}.
+
address@hidden syntax table
+  The word commands' understanding of syntax is completely controlled by
+the syntax table.  For example, any character can be declared to be a word
+delimiter.  @xref{Syntax}.
+
address@hidden Sentences, Paragraphs, Words, Text
address@hidden Sentences
address@hidden sentences
+
+  The Emacs commands for manipulating sentences and paragraphs are mostly
+on @kbd{Meta-} keys, and therefore are like the word-handling commands.
+
address@hidden @kbd
address@hidden M-a
+Move back to the beginning of the sentence (@code{backward-sentence}).
address@hidden M-e
+Move forward to the end of the sentence (@code{forward-sentence}).
address@hidden M-k
+Kill forward to the end of the sentence (@code{kill-sentence}).
address@hidden C-x @key{DEL}
+Kill back to the beginning of the sentence @*(@code{backward-kill-sentence}).
address@hidden table
+
address@hidden M-a
address@hidden M-e
address@hidden backward-sentence
address@hidden forward-sentence
+  The commands @kbd{Meta-a} and @kbd{Meta-e} (@code{backward-sentence}
+and @code{forward-sentence}) move to the beginning and end of the
+current sentence, respectively.  They resemble @kbd{Control-a} and
address@hidden, which move to the beginning and end of a line.  Unlike
+their counterparts, @kbd{Meta-a} and @kbd{Meta-e} move over successive
+sentences if repeated or given numeric arguments.  Emacs assumes
+the typist's convention is followed, and thus considers a sentence to
+end wherever there is a @samp{.}, @samp{?}, or @samp{!} followed by the
+end of a line or two spaces, with any number of @samp{)}, @samp{]},
address@hidden'}, or @samp{"} characters allowed in between.  A sentence also
+begins or ends wherever a paragraph begins or address@hidden
+
+  Neither @kbd{M-a} nor @kbd{M-e} moves past the newline or spaces beyond
+the sentence edge at which it is stopping.
+
address@hidden M-k
address@hidden C-x DEL
address@hidden kill-sentence
address@hidden backward-kill-sentence
+ @kbd{M-a} and @kbd{M-e} have a corresponding kill command, just like
address@hidden and @kbd{C-e} have @kbd{C-k}.  The command is  @kbd{M-k}
+(@code{kill-sentence}) which kills from point to the end of the
+sentence.  With minus one as an argument it kills back to the beginning
+of the sentence.  Larger arguments serve as repeat address@hidden
+
+  There is a special command, @kbd{C-x @key{DEL}}
+(@code{backward-kill-sentence}), for killing back to the beginning of a
+sentence, which is useful when you change your mind in the middle of
+composing address@hidden
+
address@hidden sentence-end
+  The variable @code{sentence-end} controls recognition of the end of a
+sentence.  It is a regexp that matches the last few characters of a
+sentence, together with the whitespace following the sentence.  Its
+normal value is:
+
address@hidden
+"[.?!][]\"')]*\\($\\|\t\\|  \\)[ \t\n]*"
address@hidden example
+
address@hidden
+This example is explained in the section on regexps.  @xref{Regexps}.
+
address@hidden Paragraphs, Pages, Sentences, Text
address@hidden Paragraphs
address@hidden paragraphs
address@hidden address@hidden
address@hidden address@hidden
address@hidden backward-paragraph
address@hidden forward-paragraph
+
+  The Emacs commands for manipulating paragraphs are also @kbd{Meta-}
+keys.
+
address@hidden @kbd
address@hidden address@hidden
+Move back to previous paragraph beginning @*(@code{backward-paragraph}).
address@hidden address@hidden
+Move forward to next paragraph end (@code{forward-paragraph}).
address@hidden M-h
+Put point and mark around this or next paragraph (@code{mark-paragraph}).
address@hidden table
+
+  @address@hidden moves to the beginning of the current or previous paragraph,
+while @address@hidden moves to the end of the current or next paragraph.
+Blank lines and text formatter command lines separate paragraphs and are
+not part of any paragraph.  An indented line starts a new paragraph.
+
+  In major modes for programs (as opposed to Text mode), paragraphs begin
+and end only at blank lines.  As a result, the paragraph commands continue to
+be useful even though there are no paragraphs per se.
+
+  When there is a fill prefix, paragraphs are delimited by all lines
+which don't start with the fill prefix.  @xref{Filling}.
+
address@hidden M-h
address@hidden mark-paragraph
+   To operate on a paragraph, you can use the command
address@hidden (@code{mark-paragraph}) to set the region around it.  This
+command puts point at the beginning and mark at the end of the paragraph
+point was in.  If point is between paragraphs (in a run of blank lines or
+at a boundary), the paragraph following point is surrounded by point and
+mark.  If there are blank lines preceding the first line of the paragraph,
+one of the blank lines is included in the region.  Thus, for example,
address@hidden C-w} kills the paragraph around or after point.
+
address@hidden paragraph-start
address@hidden paragraph-separate
+  The precise definition of a paragraph boundary is controlled by the
+variables @code{paragraph-separate} and @code{paragraph-start}.  The value
+of @code{paragraph-start} is a regexp that matches any line that
+either starts or separates paragraphs.  The value of
address@hidden is another regexp that  matches only lines
+that separate paragraphs without being part of any paragraph.  Lines that
+start a new paragraph and are contained in it must match both regexps.  For
+example, normally @code{paragraph-start} is @code{"^[ @address@hidden@t{\}f]"}
+and @code{paragraph-separate} is @code{"^[ @address@hidden"address@hidden
+
+  Normally it is desirable for page boundaries to separate paragraphs.
+The default values of these variables recognize the usual separator for
+pages.
+
address@hidden Pages, Filling, Paragraphs, Text
address@hidden Pages
+
address@hidden pages
address@hidden formfeed
+  Files are often thought of as divided into @dfn{pages} by the
address@hidden character (ASCII Control-L, octal code 014).  For
+example, if a file is printed on a line printer, each ``page'' of the
+file starts on a new page of paper.  Emacs treats a page-separator
+character just like any other character.  It can be inserted with
address@hidden C-l} or deleted with @key{DEL}.  You are free to
+paginate your file or not.  However, since pages are often meaningful
+divisions of the file, commands are provided to move over them and
+operate on them.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x [
+Move point to previous page boundary (@code{backward-page}).
address@hidden C-x ]
+Move point to next page boundary (@code{forward-page}).
address@hidden C-x C-p
+Put point and mark around this page (or another page) (@code{mark-page}).
address@hidden C-x l
+Count the lines in this page (@code{count-lines-page}).
address@hidden table
+
address@hidden C-x [
address@hidden C-x ]
address@hidden forward-page
address@hidden backward-page
+  The @kbd{C-x [} (@code{backward-page}) command moves point to
+immediately after the previous page delimiter.  If point is already
+right after a page delimiter, the command skips that one and stops at
+the previous one.  A numeric argument serves as a repeat count.  The
address@hidden ]} (@code{forward-page}) command moves forward past the next
+page delimiter.
+
address@hidden C-x C-p
address@hidden mark-page
+  The @kbd{C-x C-p} command (@code{mark-page}) puts point at the beginning
+of the current page and the mark at the end.  The page delimiter at the end
+is included (the mark follows it).  The page delimiter at the front is
+excluded (point follows it).  You can follow this command  by @kbd{C-w} to
+kill a page you want to move elsewhere.  If you insert the page after a page
+delimiter, at a place where @kbd{C-x ]} or @kbd{C-x [} would take you,
+the page will be properly delimited before and after once again.
+
+  A numeric argument to @kbd{C-x C-p} is used to specify which page to go
+to, relative to the current one.  Zero means the current page.  One means
+the next page, and @minus{}1 means the previous one.
+
address@hidden C-x l
address@hidden count-lines-page
+  The @kbd{C-x l} command (@code{count-lines-page}) can help you decide
+where to break a page in two.  It prints the total number of lines in
+the current page in the echo area, then divides the lines into those
+preceding the current line and those following it, for example
+
address@hidden
+Page has 96 (72+25) lines
address@hidden example
+
address@hidden
+  Notice that the sum is off by one; this is correct if point is not at the
+beginning of a line.
+
address@hidden page-delimiter
+  The variable @code{page-delimiter} should have as its value a regexp that
+matches the beginning of a line that separates pages.  This defines
+where pages begin.  The normal value of this variable is 
@code{"address@hidden"},
+which matches a formfeed character at the beginning of a line.
+
address@hidden Filling, Case, Pages, Text
address@hidden Filling Text
address@hidden filling
+
+  If you use Auto Fill mode, Emacs @dfn{fills} text (breaks it up into
+lines that fit in a specified width) as you insert it.  When you alter
+existing text it is often no longer be properly filled afterwards and
+you can use explicit commands for filling.
+
address@hidden
+* Auto Fill::    Auto Fill mode breaks long lines automatically.
+* Fill Commands:: Commands to refill paragraphs and center lines.
+* Fill Prefix::   Filling when every line is indented or in a comment, etc.
address@hidden menu
+
address@hidden Auto Fill, Fill Commands, Filling, Filling
address@hidden Auto Fill Mode
+
address@hidden Auto Fill mode
+
+  @dfn{Auto Fill} mode is a minor mode in which lines are broken
+automatically when they become too wide.  Breaking happens only when
+you type a @key{SPC} or @key{RET}.
+
address@hidden @kbd
address@hidden M-x auto-fill-mode
+Enable or disable Auto Fill mode.
address@hidden @key{SPC}
address@hidden @key{RET}
+In Auto Fill mode, break lines when appropriate.
address@hidden table
+
address@hidden auto-fill-mode
+  @kbd{M-x auto-fill-mode} turns Auto Fill mode on if it was off, or off
+if it was on.  With a positive numeric argument the command always turns
+Auto Fill mode on, and with a negative argument it always turns it off.
+The presence of the word @samp{Fill} in the mode line, inside the
+parentheses, indicates that Auto Fill mode is in effect.  Auto Fill mode
+is a minor mode; you can turn it on or off for each buffer individually.
address@hidden Modes}.
+
+  In Auto Fill mode, lines are broken automatically at spaces when they get
+longer than desired.  Line breaking and rearrangement takes place
+only when you type @key{SPC} or @key{RET}.  To insert a space
+or newline without permitting line-breaking, type @kbd{C-q @key{SPC}} or
address@hidden @key{LFD}} (recall that a newline is really a linefeed).
address@hidden inserts a newline without line breaking.
+
+  Auto Fill mode works well with Lisp mode: when it makes a new line in
+Lisp mode, it indents that line with @key{TAB}.  If a line ending in a
+Lisp comment gets too long, the text of the comment is split into two
+comment lines.  Optionally, new comment delimiters are inserted at the
+end of the first line and the beginning of the second, so that each line
+is a separate comment.  The variable @code{comment-multi-line} controls
+the choice (@pxref{Comments}).
+
+  Auto Fill mode does not refill entire paragraphs.  It can break lines but
+cannot merge lines.  Editing in the middle of a paragraph can result in
+a paragraph that is not correctly filled.  The easiest way to make the
+paragraph properly filled again is using an explicit fill commands.
+
+  Many users like Auto Fill mode and want to use it in all text files.
+The section on init files explains how you can arrange this
+permanently for yourself.  @xref{Init File}.
+
address@hidden Fill Commands, Fill Prefix, Auto Fill, Filling
address@hidden Explicit Fill Commands
+
address@hidden @kbd
address@hidden M-q
+Fill current paragraph (@code{fill-paragraph}).
address@hidden M-g
+Fill each paragraph in the region (@code{fill-region}).
address@hidden C-x f
+Set the fill column (@code{set-fill-column}).
address@hidden M-x fill-region-as-paragraph
+Fill the region, considering it as one paragraph.
address@hidden M-s
+Center a line.
address@hidden table
+
address@hidden M-q
address@hidden fill-paragraph
+  To refill a paragraph, use the command @kbd{Meta-q}
+(@code{fill-paragraph}).  It causes the paragraph containing point, or
+the one after point if point is between paragraphs, to be refilled.  All
+line breaks are removed, and new ones are inserted where necessary.
address@hidden can be undone with @kbd{C-_}.  @address@hidden
+
address@hidden M-g
address@hidden fill-region
+  To refill many paragraphs, use @kbd{M-g} (@code{fill-region}), which
+divides the region into paragraphs and fills each of them.
+
address@hidden fill-region-as-paragraph
+  @kbd{Meta-q} and @kbd{Meta-g} use the same criteria as @kbd{Meta-h} for
+finding paragraph boundaries (@pxref{Paragraphs}).  For more control, you
+can use @kbd{M-x fill-region-as-paragraph}, which refills everything
+between point and mark.  This command recognizes only blank lines as
+paragraph address@hidden
+
address@hidden justification
+  A numeric argument to @kbd{M-g} or @kbd{M-q} causes it to
address@hidden the text as well as filling it.  Extra spaces are inserted
+to make the right margin line up exactly at the fill column.  To remove
+the extra spaces, use @kbd{M-q} or @kbd{M-g} with no address@hidden
+
address@hidden auto-fill-inhibit-regexp
+The variable @code{auto-fill-inhibit-regexp} takes as a value a regexp to
+match lines that should not be auto-filled.
+
address@hidden M-s
address@hidden centering
address@hidden center-line
+  The command @kbd{Meta-s} (@code{center-line}) centers the current line
+within the current fill column.  With an argument, it centers several lines
+individually and moves past them.
+
address@hidden fill-column
+  The maximum line width for filling is in the variable
address@hidden  Altering the value of @code{fill-column} makes it
+local to the current buffer; until then, the default value---initially
+70---is in effect. @xref{Locals}.
+
address@hidden C-x f
address@hidden set-fill-column
+  The easiest way to set @code{fill-column} is to use the command @kbd{C-x
+f} (@code{set-fill-column}).  With no argument, it sets @code{fill-column}
+to the current horizontal position of point.  With a numeric argument, it
+uses that number as the new fill column.
+
address@hidden Fill Prefix,, Fill Commands, Filling
address@hidden The Fill Prefix
+
address@hidden fill prefix
+  To fill a paragraph in which each line starts with a special marker
+(which might be a few spaces, giving an indented paragraph), use the
address@hidden prefix} feature.  The fill prefix is a string which is not
+included in filling.  Emacs expects every line to start with a fill
+prefix.
+
address@hidden @kbd
address@hidden C-x .
+Set the fill prefix (@code{set-fill-prefix}).
address@hidden M-q
+Fill a paragraph using current fill prefix (@code{fill-paragraph}).
address@hidden M-x fill-individual-paragraphs
+Fill the region, considering each change of indentation as starting a
+new paragraph.
address@hidden table
+
address@hidden C-x .
address@hidden set-fill-prefix
+  To specify a fill prefix, move to a line that starts with the desired
+prefix, put point at the end of the prefix, and give the command
address@hidden@kbd{C-x .}}@: (@code{set-fill-prefix}).  That's a period after 
the
address@hidden  To turn off the fill prefix, specify an empty prefix: type
address@hidden@kbd{C-x .}}@: with point at the beginning of a address@hidden
+
+  When a fill prefix is in effect, the fill commands remove the fill
+prefix from each line before filling and insert it on each line after
+filling.  Auto Fill mode also inserts the fill prefix inserted on new
+lines it creates.  Lines that do not start with the fill prefix are
+considered to start paragraphs, both in @kbd{M-q} and the paragraph
+commands; this is just right if you are using paragraphs with hanging
+indentation (every line indented except the first one).  Lines which are
+blank or indented once the prefix is removed also separate or start
+paragraphs; this is what you want if you are writing multi-paragraph
+comments with a comment delimiter on each line.
+
address@hidden fill-prefix
+  The fill prefix is stored in the variable @code{fill-prefix}.  Its value
+is a string, or @code{nil} when there is no fill prefix.  This is a
+per-buffer variable; altering the variable affects only the current buffer,
+but there is a default value which you can change as well.  @xref{Locals}.
+
address@hidden fill-individual-paragraphs
+  Another way to use fill prefixes is through @kbd{M-x
+fill-individual-paragraphs}.  This function divides the region into groups
+of consecutive lines with the same amount and kind of indentation and fills
+each group as a paragraph, using its indentation as a fill prefix.
+
address@hidden Case,, Filling, Text
address@hidden Case Conversion Commands
address@hidden case conversion
+
+  Emacs has commands for converting either a single word or any arbitrary
+range of text to upper case or to lower case.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden M-l
+Convert following word to lower case (@code{downcase-word}).
address@hidden M-u
+Convert following word to upper case (@code{upcase-word}).
address@hidden M-c
+Capitalize the following word (@code{capitalize-word}).
address@hidden C-x C-l
+Convert region to lower case (@code{downcase-region}).
address@hidden C-x C-u
+Convert region to upper case (@code{upcase-region}).
address@hidden table
+
address@hidden M-l
address@hidden M-u
address@hidden M-c
address@hidden words
address@hidden downcase-word
address@hidden upcase-word
address@hidden capitalize-word
+  The word conversion commands are used most frequently.  @kbd{Meta-l}
+(@code{downcase-word}) converts the word after point to lower case,
+moving past it.  Thus, repeating @kbd{Meta-l} converts successive words.
address@hidden (@code{upcase-word}) converts to all capitals instead,
+while @kbd{Meta-c} (@code{capitalize-word}) puts the first letter of the
+word into upper case and the rest into lower case.  The word conversion
+commands convert several words at once if given an argument.  They are
+especially convenient for converting a large amount of text from all
+upper case to mixed case: you can move through the text using
address@hidden, @kbd{M-u}, or @kbd{M-c} on each word as appropriate,
+occasionally using @kbd{M-f} instead to skip a word.
+
+  When given a negative argument, the word case conversion commands apply
+to the appropriate number of words before point, but do not move point.
+This is convenient when you have just typed a word in the wrong case: you
+can give the case conversion command and continue typing.
+
+  If a word case conversion command is given in the middle of a word, it
+applies only to the part of the word which follows point.  This is just
+like what @kbd{Meta-d} (@code{kill-word}) does.  With a negative argument,
+case conversion applies only to the part of the word before point.
+
address@hidden C-x C-l
address@hidden C-x C-u
address@hidden region
address@hidden downcase-region
address@hidden upcase-region
+  The other case conversion commands are @kbd{C-x C-u}
+(@code{upcase-region}) and @kbd{C-x C-l} (@code{downcase-region}), which
+convert everything between point and mark to the specified case.  Point and
+mark do not address@hidden
+
address@hidden Programs, Running, Text, Top
address@hidden Editing Programs
address@hidden Lisp
address@hidden C
+
+  Emacs has many commands designed to understand the syntax of programming
+languages such as Lisp and C.  These commands can:
+
address@hidden @bullet
address@hidden
+Move over or kill balanced expressions or @dfn{sexps} (@pxref{Lists}).
address@hidden
+Move over or mark top-level balanced expressions (@dfn{defuns}, in Lisp;
+functions, in C).
address@hidden
+Show how parentheses balance (@pxref{Matching}).
address@hidden
+Insert, kill, or align comments (@pxref{Comments}).
address@hidden
+Follow the usual indentation conventions of the language
+(@pxref{Grinding}).
address@hidden itemize
+
+  The commands available for words, sentences, and paragraphs are useful in
+editing code even though their canonical application is for editing human
+language text.  Most symbols contain words (@pxref{Words}); sentences can
+be found in strings and comments (@pxref{Sentences}).  Paragraphs per se
+are not present in code, but the paragraph commands are useful anyway,
+because Lisp mode and C mode define paragraphs to begin and end at blank
+lines (@pxref{Paragraphs}).  Judicious use of blank lines to make the
+program clearer also provides interesting chunks of text for the
+paragraph commands to work on.
+
+  The selective display feature is useful for looking at the overall
+structure of a function (@pxref{Selective Display}).  This feature causes
+only the lines that are indented less than a specified amount to appear
+on the screen.
+
address@hidden
+* Program Modes::       Major modes for editing programs.
+* Lists::               Expressions with balanced parentheses.
+                         There are editing commands to operate on them.
+* Defuns::              Each program is made up of separate functions.
+                         There are editing commands to operate on them.
+* Grinding::            Adjusting indentation to show the nesting.
+* Matching::            Insertion of a close-delimiter flashes matching open.
+* Comments::            Inserting, filling and aligning comments.
+* Balanced Editing::    Inserting two matching parentheses at once, etc.
+* Lisp Completion::     Completion on symbol names in Lisp code.
+* Documentation::       Getting documentation of functions you plan to call.
+* Change Log::          Maintaining a change history for your program.
+* Tags::                Go direct to any function in your program in one
+                         command.  Tags remembers which file it is in.
+* Fortran::            Fortran mode and its special features.
+* Asm Mode::            Asm mode and its special features.
address@hidden menu
+
address@hidden Program Modes, Lists, Programs, Programs
address@hidden Major Modes for Programming Languages
+
address@hidden Lisp mode
address@hidden C mode
address@hidden Scheme mode
+  Emacs has several major modes for the programming languages Lisp, Scheme (a
+variant of Lisp), C, Fortran, and Muddle.  Ideally, a major mode should be
+implemented for each programming language you might want to edit with
+Emacs; but often the mode for one language can serve for other
+syntactically similar languages.  The language modes that exist are those
+that someone decided to take the trouble to write.
+
+  There are several variants of Lisp mode, which differ in the way they
+interface to Lisp execution.  @xref{Lisp Modes}.
+
+  Each of the programming language modes defines the @key{TAB} key to run
+an indentation function that knows the indentation conventions of that
+language and updates the current line's indentation accordingly.  For
+example, in C mode @key{TAB} is bound to @code{c-indent-line}.  @key{LFD}
+is normally defined to do @key{RET} followed by @key{TAB}; thus it, too,
+indents in a mode-specific fashion.
+
address@hidden DEL
address@hidden backward-delete-char-untabify
+  In most programming languages, indentation is likely to vary from line to
+line.  So the major modes for those languages rebind @key{DEL} to treat a
+tab as if it were the equivalent number of spaces (using the command
address@hidden).  This makes it possible to rub out
+indentation one column at a time without worrying whether it is made up of
+spaces or tabs.  In these modes, use @kbd{C-b C-d} to delete a tab
+character before point. 
+
+  Programming language modes define paragraphs to be separated only by
+blank lines, so that the paragraph commands remain useful.  Auto Fill mode,
+if enabled in a programming language major mode, indents the new lines
+which it creates.
+
address@hidden mode hook
address@hidden c-mode-hook
address@hidden lisp-mode-hook
address@hidden emacs-lisp-mode-hook
address@hidden lisp-interaction-mode-hook
address@hidden scheme-mode-hook
address@hidden muddle-mode-hook
+  Turning on a major mode calls a user-supplied function called the
address@hidden hook}, which is the value of a Lisp variable.  For example,
+turning on C mode calls the value of the variable @code{c-mode-hook} if
+that value exists and is address@hidden  Mode hook variables for other
+programming language modes include @code{lisp-mode-hook},
address@hidden, @code{lisp-interaction-mode-hook},
address@hidden, and @code{muddle-mode-hook}.  The mode hook
+function receives no address@hidden
+
address@hidden Lists, Defuns, Program Modes, Programs
address@hidden Lists and Sexps
+
address@hidden Control-Meta
+  By convention, Emacs keys for dealing with balanced expressions are
+usually @kbd{Control-Meta-} characters.  They tend to be analogous in
+function to their @kbd{Control-} and @kbd{Meta-} equivalents.  These commands
+are usually thought of as pertaining to expressions in programming
+languages, but can be useful with any language in which some sort of
+parentheses exist (including English).
+
address@hidden list
address@hidden sexp
address@hidden expression
+  The commands fall into two classes.  Some commands deal only with
address@hidden (parenthetical groupings).  They see nothing except
+parentheses, brackets, braces (depending on what must balance in the
+language you are working with), and escape characters that might be used
+to quote those.
+
+  The other commands deal with expressions or @dfn{sexps}.  The word `sexp'
+is derived from @dfn{s-expression}, the term for a symbolic expression in
+Lisp.  In Emacs, the notion of `sexp' is not limited to Lisp.  It
+refers to an expression in the language  your program is written in.
+Each programming language has its own major mode, which customizes the
+syntax tables so that expressions in that language count as sexps.
+
+  Sexps typically include symbols, numbers, and string constants, as well
+as anything contained in parentheses, brackets, or braces.
+
+  In languages that use prefix and infix operators, such as C, it is not
+possible for all expressions to be sexps.  For example, C mode does not
+recognize @samp{foo + bar} as an sexp, even though it @i{is} a C expression;
+it recognizes @samp{foo} as one sexp and @samp{bar} as another, with the
address@hidden as punctuation between them.  This is a fundamental ambiguity:
+both @samp{foo + bar} and @samp{foo} are legitimate choices for the sexp to
+move over if point is at the @samp{f}.  Note that @samp{(foo + bar)} is a
+sexp in C mode.
+
+  Some languages have obscure forms of syntax for expressions that nobody
+has bothered to make Emacs understand properly.
+
address@hidden doublewidecommands
address@hidden @kbd
address@hidden C-M-f
+Move forward over an sexp (@code{forward-sexp}).
address@hidden C-M-b
+Move backward over an sexp (@code{backward-sexp}).
address@hidden C-M-k
+Kill sexp forward (@code{kill-sexp}).
address@hidden C-M-u
+Move up and backward in list structure (@code{backward-up-list}).
address@hidden C-M-d
+Move down and forward in list structure (@code{down-list}).
address@hidden C-M-n
+Move forward over a list (@code{forward-list}).
address@hidden C-M-p
+Move backward over a list (@code{backward-list}).
address@hidden C-M-t
+Transpose expressions (@code{transpose-sexps}).
address@hidden C-M-@@
+Put mark after following expression (@code{mark-sexp}).
address@hidden table
+
address@hidden C-M-f
address@hidden C-M-b
address@hidden forward-sexp
address@hidden backward-sexp
+  To move forward over an sexp, use @kbd{C-M-f} (@code{forward-sexp}).  If
+the first significant character after point is an opening delimiter
+(@samp{(} in Lisp; @samp{(}, @samp{[}, or @address@hidden in C), @kbd{C-M-f}
+moves past the matching closing delimiter.  If the character begins a
+symbol, string, or number, @kbd{C-M-f} moves over that.  If the character
+after point is a closing delimiter, @kbd{C-M-f} just moves past it.  (This
+last is not really moving across an sexp; it is an exception which is
+included in the definition of @kbd{C-M-f} because it is as useful a
+behavior as anyone can think of for that situation.)@refill
+
+  The command @kbd{C-M-b} (@code{backward-sexp}) moves backward over a
+sexp.  The detailed rules are like those above for @kbd{C-M-f}, but with
+directions reversed.  If there are any prefix characters (single quote,
+back quote, and comma, in Lisp) preceding the sexp, @kbd{C-M-b} moves back
+over them as well.
+
+  @kbd{C-M-f} or @kbd{C-M-b} with an argument repeats that operation the
+specified number of times; with a negative argument, it moves in the
+opposite direction.
+
+In languages such as C where the comment-terminator can be recognized,
+the sexp commands move across comments as if they were whitespace.  In
+Lisp and other languages where comments run until the end of a line, it
+is very difficult to ignore comments when parsing backwards; therefore,
+in such languages the sexp commands treat the text of comments as if it
+were code.
+
address@hidden C-M-k
address@hidden kill-sexp
+  Killing an sexp at a time can be done with @kbd{C-M-k} (@code{kill-sexp}).
address@hidden kills the characters that @kbd{C-M-f} would move over.
+
address@hidden C-M-n
address@hidden C-M-p
address@hidden forward-list
address@hidden backward-list
+  The @dfn{list commands}, @kbd{C-M-n} (@code{forward-list}) and
address@hidden (@code{backward-list}), move over lists like the sexp
+commands but skip over any number of other kinds of sexps (symbols,
+strings, etc).  In some situations, these commands are useful because
+they usually ignore comments, since the comments usually do not contain
+any address@hidden
+
address@hidden C-M-u
address@hidden C-M-d
address@hidden backward-up-list
address@hidden down-list
+  @kbd{C-M-n} and @kbd{C-M-p} stay at the same level in parentheses, when
+that is possible.  To move @i{up} one (or @var{n}) levels, use @kbd{C-M-u}
+(@code{backward-up-list}).
address@hidden moves backward up past one unmatched opening delimiter.  A
+positive argument serves as a repeat count; a negative argument reverses
+direction of motion and also requests repetition, so it moves forward and
+up one or more address@hidden
+
+  To move @i{down} in list structure, use @kbd{C-M-d}
+(@code{down-list}).  In Lisp mode, where @samp{(} is the only opening
+delimiter, this is nearly the same as searching for a @samp{(}.  An
+argument specifies the number of levels of parentheses to go down.
+
address@hidden transposition
address@hidden C-M-t
address@hidden transpose-sexps
address@hidden (@code{transpose-sexps}) drags the previous sexp across
+the next one.  An argument serves as a repeat count, and a negative
+argument drags backwards (thus canceling out the effect of @kbd{C-M-t} with
+a positive argument).  An argument of zero, rather than doing nothing,
+transposes the sexps ending after point and the mark.
+
address@hidden C-M-@@
address@hidden mark-sexp
+  To make the region be the next sexp in the buffer, use @kbd{C-M-@@}
+(@code{mark-sexp}) which sets the mark at the same place that
address@hidden would move to.  @kbd{C-M-@@} takes arguments like
address@hidden  In particular, a negative argument is useful for putting
+the mark at the beginning of the previous sexp.
+
+  The list and sexp commands' understanding of syntax is completely
+controlled by the syntax table.  Any character can, for example, be
+declared to be an opening delimiter and act like an open parenthesis.
address@hidden
+
address@hidden Defuns, Grinding, Lists, Programs
address@hidden Defuns
address@hidden defuns
+
+  In Emacs, a parenthetical grouping at the top level in the buffer is
+called a @dfn{defun}.  The name derives from the fact that most
+top-level lists in Lisp are instances of the special form
address@hidden, but Emacs calls any top-level parenthetical
+grouping counts a defun regardless of its contents or
+the programming language.  For example, in C, the body of a
+function definition is a defun.
+
address@hidden doublewidecommands
address@hidden @kbd
address@hidden C-M-a
+Move to beginning of current or preceding defun
+(@code{beginning-of-defun}).
address@hidden C-M-e
+Move to end of current or following defun (@code{end-of-defun}).
address@hidden C-M-h
+Put region around whole current or following defun (@code{mark-defun}).
address@hidden table
+
address@hidden C-M-a
address@hidden C-M-e
address@hidden C-M-h
address@hidden beginning-of-defun
address@hidden end-of-defun
address@hidden mark-defun
+  The commands to move to the beginning and end of the current defun are
address@hidden (@code{beginning-of-defun}) and @kbd{C-M-e} 
(@code{end-of-defun}).
+
+   To operate on the current defun, use @kbd{C-M-h} (@code{mark-defun})
+which puts point at the beginning and the mark at the end of the current
+or next defun.  This is the easiest way to prepare for moving the defun
+to a different place.  In C mode, @kbd{C-M-h} runs the function
address@hidden, which is almost the same as @code{mark-defun},
+but which backs up over the argument declarations, function name, and
+returned data type so that the entire C function is inside the region.
+
address@hidden compile-defun
+To compile and evaluate the current defun, use @kbd{M-x compile-defun}. 
+This function prints the results in the minibuffer. If you include an 
+argument, it inserts the value in the current buffer after the defun.
+
+  Emacs assumes that any open-parenthesis found in the leftmost column is
+the start of a defun.  Therefore, @i{never put an open-parenthesis at the
+left margin in a Lisp file unless it is the start of a top level list.
+Never put an open-brace or other opening delimiter at the beginning of a
+line of C code unless it starts the body of a function.}  The most likely
+problem case is when you want an opening delimiter at the start of a line
+inside a string.  To avoid trouble, put an escape character (@samp{\} in C
+and Emacs Lisp, @samp{/} in some other Lisp dialects) before the opening
+delimiter.  It will not affect the contents of the string.
+
+  The original Emacs found defuns by moving upward a
+level of parentheses until there were no more levels to go up.  This
+required scanning back to the beginning of the buffer for every
+function.  To speed this up, Emacs was changed to assume
+that any @samp{(} (or other character assigned the syntactic class of
+opening-delimiter) at the left margin is the start of a defun.  This
+heuristic is nearly always right; however, it mandates the convention 
+described above.
+
address@hidden Grinding, Matching, Defuns, Programs
address@hidden Indentation for Programs
address@hidden indentation
address@hidden grinding
+
+  The best way to keep a program properly indented (``ground'') is to
+use Emacs to re-indent it as you change the program.  Emacs has commands
+to indent properly either a single line, a specified number of lines, or
+all of the lines inside a single parenthetical grouping.
+
address@hidden
+* Basic Indent::
+* Multi-line Indent::   Commands to reindent many lines at once.
+* Lisp Indent::                Specifying how each Lisp function should be 
indented.
+* C Indent::           Choosing an indentation style for C code.
address@hidden menu
+
address@hidden Basic Indent, Multi-line Indent, Grinding, Grinding
address@hidden Basic Program Indentation Commands
+
address@hidden WideCommands
address@hidden @kbd
address@hidden @key{TAB}
+Adjust indentation of current line.
address@hidden @key{LFD}
+Equivalent to @key{RET} followed by @key{TAB} (@code{newline-and-indent}).
address@hidden table
+
address@hidden TAB
address@hidden c-indent-line
address@hidden lisp-indent-line
+  The basic indentation command is @key{TAB}, which gives the current
+line the correct indentation as determined from the previous lines.  The
+function that @key{TAB} runs depends on the major mode; it is
address@hidden in Lisp mode, @code{c-indent-line} in C mode,
+etc.  These functions understand different syntaxes for different
+languages, but they all do about the same thing.  @key{TAB} in any
+programming language major mode inserts or deletes whitespace at the
+beginning of the current line, independent of where point is in the
+line.  If point is inside the whitespace at the beginning of the line,
address@hidden leaves it at the end of that whitespace; otherwise, @key{TAB}
+leaves point fixed with respect to the characters around it.
+
+  Use @kbd{C-q @key{TAB}} to insert a tab at point.
+
address@hidden LFD
address@hidden newline-and-indent
+  When entering a large amount of new code, use @key{LFD}
+(@code{newline-and-indent}), which is equivalent to a @key{RET} followed
+by a @key{TAB}.  @key{LFD} creates a blank line, then gives it the
+appropriate indentation.
+
+  @key{TAB} indents the second and following lines of the body of a
+parenthetical grouping each under the preceding one; therefore, if you
+alter one line's indentation to be nonstandard, the lines below tend
+to follow it.  This is the right behavior in cases where the standard
+result of @key{TAB} does not look good.
+
+  Remember that Emacs assumes that an open-parenthesis, open-brace, or
+other opening delimiter at the left margin (including the indentation
+routines) is the start of a function.  You should therefore never have
+an opening delimiter in column zero that is not the beginning of a
+function, not even inside a string.  This restriction is vital for
+making the indentation commands fast. @xref{Defuns}, for more
+information on this behavior.
+
address@hidden Multi-line Indent, Lisp Indent, Basic Indent, Grinding
address@hidden Indenting Several Lines
+
+  Several commands are available to re-indent several lines of code
+which have been altered or moved to a different level in a list
+structure.
+
+
address@hidden @kbd
address@hidden C-M-q
+Re-indent all the lines within one list (@code{indent-sexp}).
address@hidden C-u @key{TAB}
+Shift an entire list rigidly sideways so that its first line
+is properly indented.
address@hidden C-M-\
+Re-indent all lines in the region (@code{indent-region}).
address@hidden table
+
address@hidden C-M-q
address@hidden indent-sexp
address@hidden indent-c-exp
+ To re-indent the contents of a single list, position point before the
+beginning of it and type @kbd{C-M-q}. This key is bound to
address@hidden in Lisp mode, @code{indent-c-exp} in C mode, and
+bound to other suitable functions in other modes.  The indentation of
+the line the sexp starts on is not changed; therefore, only the relative
+indentation within the list, and not its position, is changed.  To
+correct the position as well, type a @key{TAB} before @kbd{C-M-q}.
+
address@hidden C-u TAB
+  If the relative indentation within a list is correct but the
+indentation of its beginning is not, go to the line on which the list
+begins and type @kbd{C-u @key{TAB}}.  When you give @key{TAB} a numeric
+argument, it moves all the lines in the group, starting on the current
+line, sideways the same amount that the current line moves.  The command
+does not move lines that start inside strings, or C
+preprocessor lines when in C mode.
+
address@hidden C-M-\
address@hidden indent-region
+  Another way to specify a range to be re-indented is with point and
+mark.  The command @kbd{C-M-\} (@code{indent-region}) applies @key{TAB}
+to every line whose first character is between point and mark.
+
address@hidden Lisp Indent, C Indent, Multi-line Indent, Grinding
address@hidden Customizing Lisp Indentation
address@hidden customization
+
+  The indentation pattern for a Lisp expression can depend on the function
+called by the expression.  For each Lisp function, you can choose among
+several predefined patterns of indentation, or define an arbitrary one with
+a Lisp program.
+
+  The standard pattern of indentation is as follows: the second line of the
+expression is indented under the first argument, if that is on the same
+line as the beginning of the expression; otherwise, the second line is
+indented underneath the function name.  Each following line is indented
+under the previous line whose nesting depth is the same.
+
address@hidden lisp-indent-offset
+  If the variable @code{lisp-indent-offset} is address@hidden, it overrides
+the usual indentation pattern for the second line of an expression, so that
+such lines are always indented @code{lisp-indent-offset} more columns than
+the containing list.
+
address@hidden lisp-body-indention
+  Certain functions override the standard pattern.  Functions
+whose names start with @code{def} always indent the second line by
address@hidden extra columns beyond the open-parenthesis
+starting the expression.
+
+  Individual functions can override the standard pattern in various
+ways, according to the @code{lisp-indent-function} property of the
+function name.  (Note: @code{lisp-indent-function} was formerly called
address@hidden).  There are four possibilities for this
+property:
+
address@hidden @asis
address@hidden @code{nil}
+This is the same as no property; the standard indentation pattern is used.
address@hidden @code{defun}
+The pattern used for function names that start with @code{def} is used for
+this function also.
address@hidden a number, @var{number}
+The first @var{number} arguments of the function are
address@hidden arguments; the rest are considered the @dfn{body}
+of the expression.  A line in the expression is indented according to
+whether the first argument on it is distinguished or not.  If the
+argument is part of the body, the line is indented @code{lisp-body-indent}
+more columns than the open-parenthesis starting the containing
+expression.  If the argument is distinguished and is either the first
+or second argument, it is indented @i{twice} that many extra columns.
+If the argument is distinguished and not the first or second argument,
+the standard pattern is followed for that line.
address@hidden a symbol, @var{symbol}
address@hidden should be a function name; that function is called to
+calculate the indentation of a line within this expression.  The
+function receives two arguments:
address@hidden @asis
address@hidden @var{state}
+The value returned by @code{parse-partial-sexp} (a Lisp primitive for
+indentation and nesting computation) when it parses up to the
+beginning of this line.
address@hidden @var{pos}
+The position at which the line being indented begins.
address@hidden table
address@hidden
+It should return either a number, which is the number of columns of
+indentation for that line, or a list whose first element is such a
+number.  The difference between returning a number and returning a list
+is that a number says that all following lines at the same nesting level
+should be indented just like this one; a list says that following lines
+might call for different indentations.  This makes a difference when the
+indentation is computed by @kbd{C-M-q}; if the value is a number,
address@hidden need not recalculate indentation for the following lines
+until the end of the list.
address@hidden table
+
address@hidden C Indent,  , Lisp Indent, Grinding
address@hidden Customizing C Indentation
+
+  Two variables control which commands perform C indentation and when.
+
address@hidden c-auto-newline
+  If @code{c-auto-newline} is address@hidden, newlines are inserted both
+before and after braces that you insert and after colons and semicolons.
+Correct C indentation is done on all the lines that are made this way.
+
address@hidden c-tab-always-indent
+  If @code{c-tab-always-indent} is address@hidden, the @key{TAB} command
+in C mode does indentation only if point is at the left margin or within
+the line's indentation.  If there is non-whitespace to the left of point,
address@hidden just inserts a tab character in the buffer.  Normally,
+this variable is @code{nil}, and @key{TAB} always reindents the current line.
+
+  C does not have anything analogous to particular function names for which
+special forms of indentation are desirable.  However, it has a different
+need for customization facilities: many different styles of C indentation
+are in common use.
+
+  There are six variables you can set to control the style that Emacs C
+mode will use.
+
address@hidden @code
address@hidden c-indent-level
+Indentation of C statements within surrounding block.  The surrounding
+block's indentation is the indentation of the line on which the
+open-brace appears.
address@hidden c-continued-statement-offset
+Extra indentation given to a substatement, such as the then-clause of
+an @code{if} or body of a @code{while}.
address@hidden c-brace-offset
+Extra indentation for lines that start with an open brace.
address@hidden c-brace-imaginary-offset
+An open brace following other text is treated as if it were this far
+to the right of the start of its line.
address@hidden c-argdecl-indent
+Indentation level of declarations of C function arguments.
address@hidden c-label-offset
+Extra indentation for a line that is a label, case, or default.
address@hidden table
+
address@hidden c-indent-level
+  The variable @code{c-indent-level} controls the indentation for C
+statements with respect to the surrounding block.  In the example:
+
address@hidden
+    @{
+      foo ();
address@hidden example
+
address@hidden
+the difference in indentation between the lines is @code{c-indent-level}.
+Its standard value is 2.
+
+If the open-brace beginning the compound statement is not at the beginning
+of its line, the @code{c-indent-level} is added to the indentation of the
+line, not the column of the open-brace.  For example,
+
address@hidden
+if (losing) @{
+  do_this ();
address@hidden example
+
address@hidden
+One popular indentation style is that which results from setting
address@hidden to 8 and putting open-braces at the end of a line
+in this way.  Another popular style prefers to put the open-brace on a
+separate line.
+
address@hidden c-brace-imaginary-offset
+  In fact, the value of the variable @code{c-brace-imaginary-offset} is
+also added to the indentation of such a statement.  Normally this variable
+is zero.  Think of this variable as the imaginary position of the open
+brace, relative to the first non-blank character on the line.  By setting
+the variable to 4 and @code{c-indent-level} to 0, you can get this style:
+
address@hidden
+if (x == y) @{
+    do_it ();
+    @}
address@hidden example
+
+  When @code{c-indent-level} is zero, the statements inside most braces
+line up exactly under the open brace.  An exception are braces in column
+zero, like those surrounding a function's body.  The statements inside
+those braces are not placed at column zero.  Instead,
address@hidden and @code{c-continued-statement-offset} (see
+below) are added to produce a typical offset between brace levels, and
+the statements are indented that far.
+
address@hidden c-continued-statement-offset
+  @code{c-continued-statement-offset} controls the extra indentation for
+a line that starts within a statement (but not within parentheses or
+brackets).  These lines are usually statements inside other statements,
+like the then-clauses of @code{if} statements and the bodies of
address@hidden statements.  The @code{c-continued-statement-offset}
+parameter determines the difference in indentation between the two lines in:
+
address@hidden
+if (x == y)
+  do_it ();
address@hidden example
+
address@hidden
+The default value for @code{c-continued-statement-offset} is 2.  Some
+popular indentation styles correspond to a value of zero for
address@hidden
+
address@hidden c-brace-offset
+  @code{c-brace-offset} is the extra indentation given to a line that
+starts with an open-brace.  Its standard value is zero;
+compare:
+
address@hidden
+if (x == y)
+  @{
address@hidden example
+
address@hidden
+with:
+
address@hidden
+if (x == y)
+  do_it ();
address@hidden example
+
address@hidden
+If you set @code{c-brace-offset} to 4, the first example becomes:
+
address@hidden
+if (x == y)
+      @{
address@hidden example
+
address@hidden c-argdecl-indent
+  @code{c-argdecl-indent} controls the indentation of declarations of the
+arguments of a C function.  It is absolute: argument declarations receive
+exactly @code{c-argdecl-indent} spaces.  The standard value is 5 and
+results in code like this:
+
address@hidden
+char *
+index (string, char)
+     char *string;
+     int char;
address@hidden example
+
address@hidden c-label-offset
+  @code{c-label-offset} is the extra indentation given to a line that
+contains a label, a case statement, or a @code{default:} statement.  Its
+standard value is @minus{}2 and results in code like this:
+
address@hidden
+switch (c)
+  @{
+  case 'x':
address@hidden example
+
address@hidden
+If @code{c-label-offset} were zero, the same code would be indented as:
+
address@hidden
+switch (c)
+  @{
+    case 'x':
address@hidden example
+
address@hidden
+This example assumes that the other variables above also have their
+default values. 
+
+Using the indentation style produced by the default settings of the
+variables just discussed and putting open braces on separate lines
+produces clear and readable files.  For an example, look at any of the C
+source files of XEmacs.
+
address@hidden Matching, Comments, Grinding, Programs
address@hidden Automatic Display of Matching Parentheses
address@hidden matching parentheses
address@hidden parentheses
+
+  The Emacs parenthesis-matching feature shows you automatically how
+parentheses match in the text.  Whenever a self-inserting character that
+is a closing delimiter is typed, the cursor moves momentarily to the
+location of the matching opening delimiter, provided that is visible on
+the screen.  If it is not on the screen, some text starting with that
+opening delimiter is displayed in the echo area.  Either way, you see
+the grouping you are closing off. 
+
+  In Lisp, automatic matching applies only to parentheses.  In C, it
+also applies to braces and brackets.  Emacs knows which characters to regard
+as matching delimiters based on the syntax table set by the major
+mode.  @xref{Syntax}.
+
+  If the opening delimiter and closing delimiter are mismatched---as
+in @samp{[x)}---the echo area displays a warning message.  The
+correct matches are specified in the syntax table.
+
address@hidden blink-matching-paren
address@hidden blink-matching-paren-distance
+  Two variables control parenthesis matching displays.
address@hidden turns the feature on or off. The default is 
address@hidden (match display is on); @code{nil} turns it off.
address@hidden specifies how many characters back
+Emacs searches to find a matching opening delimiter.  If the match is
+not found in the specified region, scanning stops, and nothing is
+displayed.  This prevents wasting lots of time scanning when there is no
+match.  The default is 4000.
+
address@hidden Comments, Balanced Editing, Matching, Programs
address@hidden Manipulating Comments
address@hidden comments
address@hidden M-;
address@hidden indentation
address@hidden indent-for-comment
+
+  The comment commands insert, kill and align comments.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden M-;
+Insert or align comment (@code{indent-for-comment}).
address@hidden C-x ;
+Set comment column (@code{set-comment-column}).
address@hidden C-u - C-x ;
+Kill comment on current line (@code{kill-comment}).
address@hidden address@hidden
+Like @key{RET} followed by inserting and aligning a comment
+(@code{indent-new-comment-line}).
address@hidden table
+
+  The command that creates a comment is @kbd{Meta-;}
+(@code{indent-for-comment}).  If there is no comment already on the
+line, a new comment is created and aligned at a specific column called
+the @dfn{comment column}.  Emacs creates the comment by inserting the
+string at the value of @code{comment-start}; see below.  Point is left
+after that string.  If the text of the line extends past the comment
+column, indentation is done to a suitable boundary (usually, at least
+one space is inserted).  If the major mode has specified a string to
+terminate comments, that string is inserted after point, to keep the
+syntax valid.
+
+  You can also use @kbd{Meta-;} to align an existing comment.  If a line
+already contains the string that starts comments, @kbd{M-;} just moves
+point after it and re-indents it to the conventional place.  Exception:
+comments starting in column 0 are not moved.
+
+  Some major modes have special rules for indenting certain kinds of
+comments in certain contexts.  For example, in Lisp code, comments which
+start with two semicolons are indented as if they were lines of code,
+instead of at the comment column.  Comments which start with three
+semicolons are supposed to start at the left margin.  Emacs understands
+these conventions by indenting a double-semicolon comment using @key{TAB}
+and by not changing the indentation of a triple-semicolon comment at all.
+
address@hidden
+;; This function is just an example.
+;;; Here either two or three semicolons are appropriate.
+(defun foo (x)
+;;; And now, the first part of the function:
+  ;; The following line adds one.
+  (1+ x))           ; This line adds one.
address@hidden example
+
+  In C code, a comment preceded on its line by nothing but whitespace
+is indented like a line of code.
+
+  Even when an existing comment is properly aligned, @kbd{M-;} is still
+useful for moving directly to the start of the comment.
+
address@hidden C-u - C-x ;
address@hidden kill-comment
+  @kbd{C-u - C-x ;} (@code{kill-comment}) kills the comment on the
+current line, if there is one.  The indentation before the start of the
+comment is killed as well.  If there does not appear to be a comment in
+the line, nothing happens.  To reinsert the comment on another line,
+move to the end of that line, type first @kbd{C-y}, and then @kbd{M-;}
+to realign the comment.  Note that @kbd{C-u - C-x ;} is not a distinct
+key; it is @kbd{C-x ;} (@code{set-comment-column}) with a negative
+argument.  That command is programmed to call @code{kill-comment} when
+called with a negative argument.  However, @code{kill-comment} is a
+valid command which you could bind directly to a key if you wanted to.
+
address@hidden Multiple Lines of Comments
+
address@hidden M-LFD
address@hidden blank lines
address@hidden Auto Fill mode
address@hidden indent-new-comment-line
+  If you are typing a comment and want to continue it on another line,
+use the command @address@hidden (@code{indent-new-comment-line}),
+which terminates the comment you are typing, creates a new blank line
+afterward, and begins a new comment indented under the old one.  If
+Auto Fill mode is on and you go past the fill column while typing, the 
+comment is continued in just this fashion.  If point is
+not at the end of the line when you type @address@hidden, the text on
+the rest of the line becomes part of the new comment line.
+
address@hidden Options Controlling Comments
+
address@hidden comment-column
address@hidden C-x ;
address@hidden set-comment-column
+  The comment column is stored in the variable @code{comment-column}.  You
+can explicitly set it to a number.  Alternatively, the command @kbd{C-x ;}
+(@code{set-comment-column}) sets the comment column to the column point is
+at.  @kbd{C-u C-x ;} sets the comment column to match the last comment
+before point in the buffer, and then calls @kbd{Meta-;} to align the
+current line's comment under the previous one.  Note that @kbd{C-u - C-x ;}
+runs the function @code{kill-comment} as described above.
+
+  @code{comment-column} is a per-buffer variable; altering the variable
+affects only the current buffer.  You can also change the default value.
address@hidden  Many major modes initialize this variable
+for the current buffer.
+
address@hidden comment-start-skip
+  The comment commands recognize comments based on the regular expression
+that is the value of the variable @code{comment-start-skip}.  This regexp
+should not match the null string.  It may match more than the comment
+starting delimiter in the strictest sense of the word; for example, in C
+mode the value of the variable is @address@hidden"/\\*+ *"}}, which matches 
extra
+stars and spaces after the @samp{/*} itself.  (Note that @samp{\\} is
+needed in Lisp syntax to include a @samp{\} in the string, which is needed
+to deny the first star its special meaning in regexp syntax.  @xref{Regexps}.)
+
address@hidden comment-start
address@hidden comment-end
+  When a comment command makes a new comment, it inserts the value of
address@hidden to begin it.  The value of @code{comment-end} is
+inserted after point and will follow the text you will insert
+into the comment.  In C mode, @code{comment-start} has the value
address@hidden@code{"/* "}} and @code{comment-end} has the value 
@address@hidden" */"}}.
+
address@hidden comment-multi-line
+  @code{comment-multi-line} controls how @address@hidden
+(@code{indent-new-comment-line}) behaves when used inside a comment.  If
address@hidden is @code{nil}, as it normally is, then
address@hidden@key{LFD}} terminates the comment on the starting line and starts
+a new comment on the new following line.  If @code{comment-multi-line}
+is not @code{nil}, then @address@hidden sets up the new following line
+as part of the same comment that was found on the starting line.  This
+is done by not inserting a terminator on the old line and not inserting
+a starter on the new line.  In languages where multi-line comments are legal,
+the value you choose for this variable is a matter of taste.
+
address@hidden comment-indent-hook
+  The variable @code{comment-indent-hook} should contain a function that
+is called to compute the indentation for a newly inserted comment or for
+aligning an existing comment.  Major modes set this variable differently.
+The function is called with no arguments, but with point at the
+beginning of the comment, or at the end of a line if a new comment is to
+be inserted.  The function should return the column in which the comment
+ought to start.  For example, in Lisp mode, the indent hook function
+bases its decision on the number of semicolons that begin an existing
+comment and on the code in the preceding lines.
+
address@hidden Balanced Editing, Lisp Completion, Comments, Programs
address@hidden Editing Without Unbalanced Parentheses
+
address@hidden @kbd
address@hidden M-(
+Put parentheses around next sexp(s) (@code{insert-parentheses}).
address@hidden M-)
+Move past next close parenthesis and re-indent
+(@code{move-over-close-and-reindent}).
address@hidden table
+
address@hidden M-(
address@hidden M-)
address@hidden insert-parentheses
address@hidden move-over-close-and-reindent
+  The commands @kbd{M-(} (@code{insert-parentheses}) and @kbd{M-)}
+(@code{move-over-close-and-reindent}) are designed to facilitate a style of
+editing which keeps parentheses balanced at all times.  @kbd{M-(} inserts a
+pair of parentheses, either together as in @samp{()}, or, if given an
+argument, around the next several sexps, and leaves point after the open
+parenthesis.  Instead of typing @kbd{( F O O )}, you can type @kbd{M-( F O
+O}, which has the same effect except for leaving the cursor before the
+close parenthesis.  You can then type @kbd{M-)}, which moves past the
+close parenthesis, deletes any indentation preceding it (in this example
+there is none), and indents with @key{LFD} after it.
+
address@hidden Lisp Completion, Documentation, Balanced Editing, Programs
address@hidden Completion for Lisp Symbols
address@hidden completion (symbol names)
+
+   Completion usually happens in the minibuffer.  An exception is
+completion for Lisp symbol names, which is available in all buffers.
+
address@hidden M-TAB
address@hidden lisp-complete-symbol
+  The command @address@hidden (@code{lisp-complete-symbol}) takes the
+partial Lisp symbol before point to be an abbreviation, and compares it
+against all non-trivial Lisp symbols currently known to Emacs.  Any
+additional characters that they all have in common are inserted at point.
+Non-trivial symbols are those that have function definitions, values, or
+properties.
+
+  If there is an open-parenthesis immediately before the beginning of
+the partial symbol, only symbols with function definitions are considered
+as completions.
+
+  If the partial name in the buffer has more than one possible completion
+and they have no additional characters in common, a list of all possible
+completions is displayed in another window.
+
address@hidden Documentation, Change Log, Lisp Completion, Programs
address@hidden Documentation Commands
+
address@hidden C-h f
address@hidden describe-function
address@hidden C-h v
address@hidden describe-variable
+  As you edit Lisp code to be run in Emacs, you can use the commands
address@hidden f} (@code{describe-function}) and @kbd{C-h v}
+(@code{describe-variable}) to print documentation of functions and
+variables you want to call.  These commands use the minibuffer to
+read the name of a function or variable to document, and display the
+documentation in a window.
+
+  For extra convenience, these commands provide default arguments based on
+the code in the neighborhood of point.  @kbd{C-h f} sets the default to the
+function called in the innermost list containing point.  @kbd{C-h v} uses
+the symbol name around or adjacent to point as its default.
+
address@hidden manual-entry
+  The @kbd{M-x manual-entry} command gives you access to documentation
+on Unix commands, system calls, and libraries.  The command reads a
+topic as an argument, and displays the Unix manual page for that topic. 
address@hidden always searches all 8 sections of the
+manual and concatenates all the entries it finds.  For example,
+the topic @samp{termcap} finds the description of the termcap library
+from section 3, followed by the description of the termcap data base
+from section 5.
+
address@hidden Change Log, Tags, Documentation, Programs
address@hidden Change Logs
+
address@hidden change log
address@hidden add-change-log-entry
+  The Emacs command @kbd{M-x add-change-log-entry} helps you keep a record
+of when and why you have changed a program.  It assumes that you have a
+file in which you write a chronological sequence of entries describing
+individual changes.  The default is to store the change entries in a file
+called @file{ChangeLog} in the same directory as the file you are editing.
+The same @file{ChangeLog} file therefore records changes for all the files
+in a directory.
+
+  A change log entry starts with a header line that contains your name
+and the current date.  Except for these header lines, every line in the
+change log starts with a tab.  One entry can describe several changes;
+each change starts with a line starting with a tab and a star.  @kbd{M-x
+add-change-log-entry} visits the change log file and creates a new entry
+unless the most recent entry is for today's date and your name.  In
+either case, it adds a new line to start the description of another
+change just after the header line of the entry.  When @kbd{M-x
+add-change-log-entry} is finished, all is prepared for you to edit in
+the description of what you changed and how.  You must then save the
+change log file yourself.
+
+  The change log file is always visited in Indented Text mode, which means
+that @key{LFD} and auto-filling indent each new line like the previous
+line.  This is convenient for entering the contents of an entry, which must
+be indented.  @xref{Text Mode}.
+
+  Here is an example of the formatting conventions used in the change log
+for Emacs:
+
address@hidden
+Wed Jun 26 19:29:32 1985  Richard M. Stallman  (rms at mit-prep)
+
+        * xdisp.c (try_window_id):
+        If C-k is done at end of next-to-last line,
+        this fn updates window_end_vpos and cannot leave
+        window_end_pos nonnegative (it is zero, in fact).
+        If display is preempted before lines are output,
+        this is inconsistent.  Fix by setting
+        blank_end_of_window to nonzero.
+
+Tue Jun 25 05:25:33 1985  Richard M. Stallman  (rms at mit-prep)
+
+        * cmds.c (Fnewline):
+        Call the auto fill hook if appropriate.
+
+        * xdisp.c (try_window_id):
+        If point is found by compute_motion after xp, record that
+        permanently.  If display_text_line sets point position wrong
+        (case where line is killed, point is at eob and that line is
+        not displayed), set it again in final compute_motion.
address@hidden smallexample
+
address@hidden Tags, Fortran, Change Log, Programs
address@hidden Tags Tables
address@hidden tags table
+
+  A @dfn{tags table} is a description of how a multi-file program is
+broken up into files.  It lists the names of the component files and the
+names and positions of the functions (or other named subunits) in each
+file.  Grouping the related files makes it possible to search or replace
+through all the files with one command.  Recording the function names
+and positions makes possible the @kbd{M-.} command which finds the
+definition of a function by looking up which of the files it is in.
+
+  Tags tables are stored in files called @dfn{tags table files}.  The
+conventional name for a tags table file is @file{TAGS}.
+
+  Each entry in the tags table records the name of one tag, the name of the
+file that the tag is defined in (implicitly), and the position in that file
+of the tag's definition.
+
+  Just what names from the described files are recorded in the tags table
+depends on the programming language of the described file.  They
+normally include all functions and subroutines, and may also include
+global variables, data types, and anything else convenient.  Each name
+recorded is called a @dfn{tag}.
+
address@hidden C++ class browser, tags
address@hidden tags, C++
address@hidden class browser, C++
address@hidden Ebrowse
+The Ebrowse is a separate facility tailored for C++, with tags and a
+class browser.  @xref{Top,,, ebrowse, Ebrowse User's Manual}.
+
address@hidden
+* Tag Syntax::         Tag syntax for various types of code and text files.
+* Create Tags Table::  Creating a tags table with @code{etags}.
+* Etags Regexps::       Create arbitrary tags using regular expressions.
+* Select Tags Table::  How to visit a tags table.
+* Find Tag::           Commands to find the definition of a specific tag.
+* Tags Search::                Using a tags table for searching and replacing.
+* List Tags::          Listing and finding tags defined in a file.
address@hidden menu
+
address@hidden Tag Syntax
address@hidden Source File Tag Syntax
+
+  Here is how tag syntax is defined for the most popular languages:
+
address@hidden @bullet
address@hidden
+In C code, any C function or typedef is a tag, and so are definitions of
address@hidden, @code{union} and @code{enum}.  You can tag function
+declarations and external variables in addition to function definitions
+by giving the @samp{--declarations} option to @code{etags}.
address@hidden macro definitions and @code{enum} constants are also
+tags, unless you specify @samp{--no-defines} when making the tags table.
+Similarly, global variables are tags, unless you specify
address@hidden  Use of @samp{--no-globals} and @samp{--no-defines}
+can make the tags table file much smaller.
+
address@hidden
+In C++ code, in addition to all the tag constructs of C code, member
+functions are also recognized, and optionally member variables if you
+use the @samp{--members} option.  Tags for variables and functions in
+classes are named @address@hidden::@var{variable}} and
address@hidden@var{class}::@var{function}}.  @code{operator} functions tags are
+named, for example @samp{operator+}.
+
address@hidden
+In Java code, tags include all the constructs recognized in C++, plus
+the @code{interface}, @code{extends} and @code{implements} constructs.
+Tags for variables and functions in classes are named
address@hidden@address@hidden and @address@hidden@var{function}}.
+
address@hidden
+In address@hidden text, the argument of any of the commands @code{\chapter},
address@hidden, @code{\subsection}, @code{\subsubsection},
address@hidden, @code{\label}, @code{\ref}, @code{\cite}, @code{\bibitem},
address@hidden, @code{\appendix}, @code{\entry}, or @code{\index}, is a
address@hidden
+
+Other commands can make tags as well, if you specify them in the
+environment variable @code{TEXTAGS} before invoking @code{etags}.  The
+value of this environment variable should be a colon-separated list of
+command names.  For example,
+
address@hidden
+TEXTAGS="def:newcommand:newenvironment"
+export TEXTAGS
address@hidden example
+
address@hidden
+specifies (using Bourne shell syntax) that the commands @samp{\def},
address@hidden and @samp{\newenvironment} also define tags.
+
address@hidden
+In Lisp code, any function defined with @code{defun}, any variable
+defined with @code{defvar} or @code{defconst}, and in general the first
+argument of any expression that starts with @samp{(def} in column zero, is
+a tag.
+
address@hidden
+In Scheme code, tags include anything defined with @code{def} or with a
+construct whose name starts with @samp{def}.  They also include variables
+set with @code{set!} at top level in the file.
address@hidden itemize
+
+  Several other languages are also supported:
+
address@hidden @bullet
+
address@hidden
+In Ada code, functions, procedures, packages, tasks, and types are
+tags.  Use the @samp{--packages-only} option to create tags for
+packages only.
+
+With Ada, it is possible to have the same name used for different
+entity kinds (e.g.@: the same name for a procedure and a function).  Also,
+for things like packages, procedures and functions, there is the spec
+(i.e.@: the interface) and the body (i.e.@: the implementation).  To
+facilitate the choice to the user, a tag value is appended with a
+qualifier:
+
address@hidden @asis
address@hidden function
+ @kbd{/f}
address@hidden procedure
+ @kbd{/p}
address@hidden package spec
+ @kbd{/s}
address@hidden package body
+ @kbd{/b}
address@hidden type
+ @kbd{/t}
address@hidden task
+ @kbd{/k}
address@hidden table
+
+So, as an example, @kbd{M-x find-tag bidule/b} will go directly to the
+body of the package @var{bidule} while @kbd{M-x find-tag bidule} will
+just search for any tag @var{bidule}.
+
address@hidden
+In assembler code, labels appearing at the beginning of a line,
+followed by a colon, are tags.
+
address@hidden
+In Bison or Yacc input files, each rule defines as a tag the nonterminal
+it constructs.  The portions of the file that contain C code are parsed
+as C code.
+
address@hidden
+In Cobol code, tags are paragraph names; that is, any word starting in
+column 8 and followed by a period.
+
address@hidden
+In Erlang code, the tags are the functions, records, and macros defined
+in the file.
+
address@hidden
+In Fortran code, functions, subroutines and blockdata are tags.
+
address@hidden
+In makefiles, targets are tags.
+
address@hidden
+In Objective C code, tags include Objective C definitions for classes,
+class categories, methods, and protocols.
+
address@hidden
+In Pascal code, the tags are the functions and procedures defined in
+the file.
+
address@hidden
+In Perl code, the tags are the procedures defined by the @code{sub},
address@hidden and @code{local} keywords.  Use @samp{--globals} if you want
+to tag global variables.
+
address@hidden
+In PostScript code, the tags are the functions.
+
address@hidden
+In Prolog code, a tag name appears at the left margin.
+
address@hidden
+In Python code, @code{def} or @code{class} at the beginning of a line
+generate a tag.
address@hidden itemize
+
+  You can also generate tags based on regexp matching (@pxref{Etags
+Regexps}) to handle other formats and languages.
+
address@hidden Create Tags Table
address@hidden Creating Tags Tables
address@hidden @code{etags} program
+
+  The @code{etags} program is used to create a tags table file.  It knows
+the syntax of several languages, as described in
address@hidden Syntax}.
+Here is how to run @code{etags}:
+
address@hidden
+etags @address@hidden
address@hidden example
+
address@hidden
+The @code{etags} program reads the specified files, and writes a tags
+table named @file{TAGS} in the current working directory.  You can
+intermix compressed and plain text source file names.  @code{etags}
+knows about the most common compression formats, and does the right
+thing.  So you can compress all your source files and have @code{etags}
+look for compressed versions of its file name arguments, if it does not
+find uncompressed versions.  Under MS-DOS, @code{etags} also looks for
+file names like @samp{mycode.cgz} if it is given @samp{mycode.c} on the
+command line and @samp{mycode.c} does not exist.
+
+  @code{etags} recognizes the language used in an input file based on
+its file name and contents.  You can specify the language with the
address@hidden@var{name}} option, described below.
+
+  If the tags table data become outdated due to changes in the files
+described in the table, the way to update the tags table is the same way it
+was made in the first place.  It is not necessary to do this often.
+
+  If the tags table fails to record a tag, or records it for the wrong
+file, then Emacs cannot possibly find its definition.  However, if the
+position recorded in the tags table becomes a little bit wrong (due to
+some editing in the file that the tag definition is in), the only
+consequence is a slight delay in finding the tag.  Even if the stored
+position is very wrong, Emacs will still find the tag, but it must
+search the entire file for it.
+
+  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.
+
+  One tags table can effectively include another.  Specify the included
+tags file name with the @address@hidden option when creating
+the file that is to include it.  The latter file then acts as if it
+contained all the files specified in the included file, as well as the
+files it directly contains.
+
+  If you specify the source files with relative file names when you run
address@hidden, the tags file will contain file names relative to the
+directory where the tags file was initially written.  This way, you can
+move an entire directory tree containing both the tags file and the
+source files, and the tags file will still refer correctly to the source
+files.
+
+  If you specify absolute file names as arguments to @code{etags}, then
+the tags file will contain absolute file names.  This way, the tags file
+will still refer to the same files even if you move it, as long as the
+source files remain in the same place.  Absolute file names start with
address@hidden/}, or with @address@hidden:/} on MS-DOS and MS-Windows.
+
+  When you want to make a tags table from a great number of files, you
+may have problems listing them on the command line, because some systems
+have a limit on its length.  The simplest way to circumvent this limit
+is to tell @code{etags} to read the file names from its standard input,
+by typing a dash in place of the file names, like this:
+
address@hidden
+find . -name "*.[chCH]" -print | etags -
address@hidden smallexample
+
+  Use the option @address@hidden to specify the language
+explicitly.  You can intermix these options with file names; each one
+applies to the file names that follow it.  Specify
address@hidden to tell @code{etags} to resume guessing the
+language from the file names and file contents.  Specify
address@hidden to turn off language-specific processing
+entirely; then @code{etags} recognizes tags by regexp matching alone
+(@pxref{Etags Regexps}).
+
+  @samp{etags --help} prints 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.
+
address@hidden Etags Regexps
address@hidden 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.
+Each @samp{--regex} option adds to the preceding ones, and applies only
+to the following files.  The syntax is:
+
address@hidden
+--regex=/@var{tagregexp}[/@var{nameregexp}]/
address@hidden smallexample
+
address@hidden
+where @var{tagregexp} is used to match the lines to tag.  It is always
+anchored, that is, it behaves as if preceded by @samp{^}.  If you want
+to account for indentation, just match any initial number of blanks by
+beginning your regular expression with @samp{[ \t]*}.  In the regular
+expressions, @samp{\} quotes the next character, and @samp{\t} stands
+for the tab character.  Note that @code{etags} does not handle the other
+C escape sequences for special characters.
+
address@hidden interval operator (in regexps)
+  The syntax of regular expressions in @code{etags} is the same as in
+Emacs, augmented with the @dfn{interval operator}, which works as in
address@hidden and @code{ed}.  The syntax of an interval operator is
address@hidden@address@hidden,@address@hidden, and its meaning is to match the 
preceding
+expression at least @var{m} times and up to @var{n} times.
+
+  You should not match more characters with @var{tagregexp} than that
+needed to recognize what you want to tag.  If the match is such that
+more characters than needed are unavoidably matched by @var{tagregexp}
+(as will usually be the case), you should add a @var{nameregexp}, to
+pick out just the tag.  This will enable Emacs to find tags more
+accurately and to do completion on tag names more reliably.  You can
+find some examples below.
+
+  The option @samp{--ignore-case-regex} (or @samp{-c}) is like
address@hidden, except that the regular expression provided will be
+matched without regard to case, which is appropriate for various
+programming languages.
+
+  The @samp{-R} option deletes all the regexps defined with
address@hidden options.  It applies to the file names following it, as
+you can see from the following example:
+
address@hidden
+etags --regex=/@var{reg1}/ voo.doo --regex=/@var{reg2}/ \
+    bar.ber -R --lang=lisp los.er
address@hidden smallexample
+
address@hidden
+Here @code{etags} chooses the parsing language for @file{voo.doo} and
address@hidden according to their contents.  @code{etags} also uses
address@hidden to recognize additional tags in @file{voo.doo}, and both
address@hidden and @var{reg2} to recognize additional tags in
address@hidden  @code{etags} uses the Lisp tags rules, and no regexp
+matching, to recognize tags in @file{los.er}.
+
+  A regular expression can be bound to a given language, by prepending
+it with @address@hidden@}}.  When you do this, @code{etags} will use the
+regular expression only for files of that language.  @samp{etags --help}
+prints the list of languages recognised by @code{etags}.  The following
+example tags the @code{DEFVAR} macros in the Emacs source files.
address@hidden applies this regular expression to C files only:
+
address@hidden
+--regex='@address@hidden/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/'
address@hidden smallexample
+
address@hidden
+This feature is particularly useful when storing a list of regular
+expressions in a file.  The following option syntax instructs
address@hidden to read two files of regular expressions.  The regular
+expressions contained in the second file are matched without regard to
+case.
+
address@hidden
+--regex=@@first-file --ignore-case-regex=@@second-file
address@hidden smallexample
+
address@hidden
+A regex file contains one regular expressions per line.  Empty lines,
+and lines beginning with space or tab are ignored.  When the first
+character in a line is @samp{@@}, @code{etags} assumes that the rest of
+the line is the name of a file of regular expressions.  This means that
+such files can be nested.  All the other lines are taken to be regular
+expressions.  For example, one can create a file called
address@hidden with the following contents (the first line in the
+file is a comment):
+
address@hidden
+        -- This is for GNU Emacs source files
address@hidden@}/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/\1/
address@hidden smallexample
+
address@hidden
+and then use it like this:
+
address@hidden
+etags --regex=@@emacs.tags *.[ch] */*.[ch]
address@hidden smallexample
+
+  Here are some more examples.  The regexps are quoted to protect them
+from shell interpretation.
+
address@hidden @bullet
+
address@hidden
+Tag Octave files:
+
address@hidden
+etags --language=none \
+      --regex='/[ \t]*function.*=[ \t]*\([^ \t]*\)[ \t]*(/\1/' \
+      --regex='/###key \(.*\)/\1/' \
+      --regex='/[ \t]*global[ \t].*/' \
+      *.m
address@hidden smallexample
+
address@hidden
+Note that tags are not generated for scripts so that you have to add a
+line by yourself of the form `###key <script-name>' if you want to jump
+to it.
+
address@hidden
+Tag Tcl files:
+
address@hidden
+etags --language=none --regex='/proc[ \t]+\([^ \t]+\)/\1/' *.tcl
address@hidden smallexample
+
address@hidden
+Tag VHDL files:
+
address@hidden
+--language=none \
+--regex='/[ \t]*\(ARCHITECTURE\|CONFIGURATION\) +[^ ]* +OF/' \
+--regex='/[ \t]*\(ATTRIBUTE\|ENTITY\|FUNCTION\|PACKAGE\
+\( BODY\)?\|PROCEDURE\|PROCESS\|TYPE\)[ \t]+\([^ \t(]+\)/\3/'
address@hidden smallexample
address@hidden itemize
+
address@hidden Select Tags Table, Find Tag, Etags Regexps, Tags
address@hidden Selecting a Tags Table
+
address@hidden tag-table-alist
+   At any time Emacs has one @dfn{selected} tags table, and all the commands
+for working with tags tables use the selected one.  To select a tags table,
+use the variable @code{tag-table-alist}.
+
+The value of @code{tag-table-alist} is a list that determines which
address@hidden files should be active for a given buffer.  This is not
+really an association list, in that all elements are checked.  The car
+of each element of this list is a pattern against which the buffers file
+name is compared; if it matches, then the cdr of the list should be the
+name of the tags table to use.  If more than one element of this list
+matches the buffers file name, all of the associated tags tables are
+used.  Earlier ones are searched first.
+
+If the car of elements of this list are strings, they are treated
+as regular-expressions against which the file is compared (like the
address@hidden).  If they are not strings, they are evaluated.
+If they evaluate to address@hidden, the current buffer is considered to
+match.
+
+If the cdr of the elements of this list are strings, they are
+assumed to name a tags file.  If they name a directory, the string
address@hidden is appended to them to get the file name.  If they are not 
+strings, they are evaluated and must return an appropriate string.
+
+For example:
+
address@hidden
+  (setq tag-table-alist
+        '(("/usr/src/public/perl/" . "/usr/src/public/perl/perl-3.0/")
+          ("\\.el$" . "/usr/local/emacs/src/")
+          ("/jbw/gnu/" . "/usr15/degree/stud/jbw/gnu/")
+          ("" . "/usr/local/emacs/src/")
+          ))
address@hidden example
+
+The example defines the tags table alist in the following way:
+ 
address@hidden @bullet
address@hidden
+Anything in the directory @file{/usr/src/public/perl/} 
+should use the @file{TAGS} file @file{/usr/src/public/perl/perl-3.0/TAGS}. 
address@hidden
+Files ending in @file{.el} should use the @file{TAGS} file
address@hidden/usr/local/emacs/src/TAGS}. 
address@hidden
+Anything in or below the directory @file{/jbw/gnu/} should use the 
address@hidden file @file{/usr15/degree/stud/jbw/gnu/TAGS}.  
address@hidden itemize
+
+If you had a file called @file{/usr/jbw/foo.el}, it would use both
address@hidden files, @* @file{/usr/local/emacs/src/TAGS} and
address@hidden/usr15/degree/stud/jbw/gnu/TAGS} (in that order), because it
+matches both patterns.
+
+If the buffer-local variable @code{buffer-tag-table} is set, it names a
+tags table that is searched before all others when @code{find-tag} is
+executed from this buffer.
+
+If there is a file called @file{TAGS} in the same directory as the file
+in question, then that tags file will always be used as well (after the
address@hidden but before the tables specified by this list).
+
+If the variable @code{tags-file-name} is set, the @file{TAGS} file it names
+will apply to all buffers (for backwards compatibility.)  It is searched
+first.
+
address@hidden tags-always-build-completion-table
+If the value of the variable @code{tags-always-build-completion-table}
+is @code{t}, the tags file will always be added to the completion table
+without asking first, regardless of the size of the tags file.
+
address@hidden tags-file-name
address@hidden visit-tags-table
+The function @kbd{M-x visit-tags-table}, is largely made obsolete by
+the variable @code{tag-table-alist}, tells tags commands to use the tags
+table file @var{file} first.  The @var{file} should be the name of a
+file created with the @code{etags} program.  A directory name is also
+acceptable; it means the file @file{TAGS} in that directory.  The
+function only stores the file name you provide in the variable
address@hidden  Emacs does not actually read in the tags table
+contents until you try to use them.  You can set the variable explicitly
+instead of using @code{visit-tags-table}.  The value of the variable
address@hidden is the name of the tags table used by all buffers.
+This is for backward compatibility, and is largely supplanted by the
+variable @code{tag-table-alist}.
+ 
address@hidden Find Tag, Tags Search, Select Tags Table, Tags
address@hidden Finding a Tag
+
+  The most important thing that a tags table enables you to do is to find
+the definition of a specific tag.
+
address@hidden @kbd
address@hidden M-.@: @var{tag &optional other-window}
+Find first definition of @var{tag} (@code{find-tag}).
address@hidden C-u M-.
+Find next alternate definition of last tag specified.
address@hidden C-x 4 . @var{tag}
+Find first definition of @var{tag}, but display it in another window
+(@code{find-tag-other-window}).
address@hidden table
+
address@hidden M-.
address@hidden find-tag
+  @kbd{M-.}@: (@code{find-tag}) is the command to find the definition of
+a specified tag.  It searches through the tags table for that tag, as a
+string, then uses the tags table information to determine the file in
+which the definition is used and the approximate character position of
+the definition in the file.  Then @code{find-tag} visits the file,
+moves point to the approximate character position, and starts searching
+ever-increasing distances away for the text that should appear at
+the beginning of the definition.
+
+  If an empty argument is given (by typing @key{RET}), the sexp in the
+buffer before or around point is used as the name of the tag to find.
address@hidden, for information on sexps.
+
+  The argument to @code{find-tag} need not be the whole tag name; it can
+be a substring of a tag name.  However, there can be many tag names
+containing the substring you specify.  Since @code{find-tag} works by
+searching the text of the tags table, it finds the first tag in the table
+that the specified substring appears in.  To find other tags that match
+the substring, give @code{find-tag} a numeric argument, as in @kbd{C-u
+M-.}.  This does not read a tag name, but continues searching the tag
+table's text for another tag containing the same substring last used.
+If your keyboard has a real @key{META} key, @kbd{M-0 M-.}@: is an easier
+alternative to @kbd{C-u M-.}.
+
+If the optional second argument @var{other-window} is address@hidden, it uses
+another window to display the tag.
+Multiple active tags tables and completion are supported.
+
+Variables of note include the following:
+
address@hidden tag-table-alist
address@hidden tags-file-name
address@hidden tags-build-completion-table
address@hidden buffer-tag-table
address@hidden make-tags-files-invisible
address@hidden tag-mark-stack-max
+
address@hidden @kbd
address@hidden tag-table-alist
+Controls which tables apply to which buffers.
address@hidden tags-file-name
+Stores a default tags table.
address@hidden tags-build-completion-table
+Controls completion behavior.
address@hidden buffer-tag-table
+Specifies a buffer-local table.
address@hidden make-tags-files-invisible
+Sets whether tags tables should be very hidden.
address@hidden tag-mark-stack-max
+Specifies how many tags-based hops to remember.
address@hidden table
+
address@hidden C-x 4 .
address@hidden find-tag-other-window
+  Like most commands that can switch buffers, @code{find-tag} has another
+similar command that displays the new buffer in another window.  @kbd{C-x 4
+.}@: invokes the function @code{find-tag-other-window}.  (This key sequence
+ends with a period.)
+
+  Emacs comes with a tags table file @file{TAGS} (in the directory
+containing Lisp libraries) that includes all the Lisp libraries and all
+the C sources of Emacs.  By specifying this file with @code{visit-tags-table}
+and then using @kbd{M-.}@: you can quickly look at the source of any Emacs
+function.
+
address@hidden Tags Search, List Tags, Find Tag, Tags
address@hidden Searching and Replacing with Tags Tables
+
+  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.  A related command is
address@hidden grep} (@pxref{Compilation}).
+
address@hidden @kbd
address@hidden M-x tags-search @key{RET} @var{regexp} @key{RET}
+Search for @var{regexp} through the files in the selected tags
+table.
address@hidden M-x tags-query-replace @key{RET} @var{regexp} @key{RET} 
@var{replacement} @key{RET}
+Perform a @code{query-replace-regexp} on each file in the selected tags table.
address@hidden M-,
+Restart one of the commands above, from the current location of point
+(@code{tags-loop-continue}).
address@hidden table
+
address@hidden tags-search
+  @kbd{M-x tags-search} reads a regexp using the minibuffer, then
+searches for matches in all the files in the selected tags table, one
+file at a time.  It displays the name of the file being searched so you
+can follow its progress.  As soon as it finds an occurrence,
address@hidden returns.
+
address@hidden M-,
address@hidden tags-loop-continue
+  Having found one match, you probably want to find all the rest.  To find
+one more match, type @kbd{M-,} (@code{tags-loop-continue}) to resume the
address@hidden  This searches the rest of the current buffer, followed
+by the remaining files of the tags address@hidden
+
address@hidden tags-query-replace
+  @kbd{M-x tags-query-replace} performs a single
address@hidden through all the files in the tags table.  It
+reads a regexp to search for and a string to replace with, just like
+ordinary @kbd{M-x query-replace-regexp}.  It searches much like @kbd{M-x
+tags-search}, but repeatedly, processing matches according to your
+input.  @xref{Replace}, for more information on query replace.
+
+  It is possible to get through all the files in the tags table with a
+single invocation of @kbd{M-x tags-query-replace}.  But often it is
+useful to exit temporarily, which you can do with any input event that
+has no special query replace meaning.  You can resume the query replace
+subsequently by typing @kbd{M-,}; this command resumes the last tags
+search or replace command that you did.
+
+  The commands in this section carry out much broader searches than the
address@hidden family.  The @code{find-tag} commands search only for
+definitions of tags that match your substring or regexp.  The commands
address@hidden and @code{tags-query-replace} find every occurrence
+of the regexp, as ordinary search commands and replace commands do in
+the current buffer.
+
+  These commands create buffers only temporarily for the files that they
+have to search (those which are not already visited in Emacs buffers).
+Buffers in which no match is found are quickly killed; the others
+continue to exist.
+
+  It may have struck you that @code{tags-search} is a lot like
address@hidden  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
address@hidden matches works like finding the compilation errors.
address@hidden
+
+  If you wish to process all the files in a selected tags table, but
address@hidden tags-search} and @kbd{M-x tags-query-replace} are not giving
+you the desired result, you can use @kbd{M-x next-file}.
+
address@hidden @kbd
address@hidden C-u M-x next-file
+With a numeric argument, regardless of its value, visit the first
+file in the tags table and prepare to advance sequentially by files.
address@hidden M-x next-file
+Visit the next file in the selected tags table.
address@hidden table
+
address@hidden List Tags,  , Tags Search, Tags
address@hidden Tags Table Inquiries
+
address@hidden @kbd
address@hidden M-x list-tags
+Display a list of the tags defined in a specific program file.
address@hidden M-x tags-apropos
+Display a list of all tags matching a specified regexp.
address@hidden table
+
address@hidden list-tags
+  @kbd{M-x list-tags} reads the name of one of the files described by the
+selected tags table, and displays a list of all the tags defined in that
+file.  The ``file name'' argument is really just a string to compare
+against the names recorded in the tags table; it is read as a string rather
+than a file name.  Therefore, completion and defaulting are not
+available, and you must enter the string the same way it appears in the tag
+table.  Do not include a directory as part of the file name unless the file
+name recorded in the tags table contains that directory.
+
address@hidden tags-apropos
+  @kbd{M-x tags-apropos} is like @code{apropos} for tags.  It reads a regexp,
+then finds all the tags in the selected tags table whose entries match that
+regexp, and displays the tag names found.
+
address@hidden Fortran, Asm Mode, Tags, Programs
address@hidden Fortran Mode
address@hidden Fortran mode
+
+  Fortran mode provides special motion commands for Fortran statements and
+subprograms, and indentation commands that understand Fortran conventions
+of nesting, line numbers, and continuation statements.
+
+  Special commands for comments are provided because Fortran comments are
+unlike those of other languages.
+
+  Built-in abbrevs optionally save typing when you insert Fortran keywords.
+
address@hidden fortran-mode
+  Use @kbd{M-x fortran-mode} to switch to this major mode.  Doing so calls
+the value of @code{fortran-mode-hook} as a function of no arguments if
+that variable has a address@hidden value.
+
address@hidden
+* Motion: Fortran Motion.     Moving point by statements or subprograms.
+* Indent: Fortran Indent.     Indentation commands for Fortran.
+* Comments: Fortran Comments. Inserting and aligning comments.
+* Columns: Fortran Columns.   Measuring columns for valid Fortran.
+* Abbrev: Fortran Abbrev.     Built-in abbrevs for Fortran keywords.
address@hidden menu
+
+  Fortran mode was contributed by Michael Prange.
+
address@hidden Fortran Motion, Fortran Indent, Fortran, Fortran
address@hidden Motion Commands
+
+  Fortran mode provides special commands to move by subprograms (functions
+and subroutines) and by statements.  There is also a command to put the
+region around one subprogram, which is convenient for killing it or moving it.
+
address@hidden C-M-a (Fortran mode)
address@hidden C-M-e (Fortran mode)
address@hidden C-M-h (Fortran mode)
address@hidden C-c C-p (Fortran mode)
address@hidden C-c C-n (Fortran mode)
address@hidden beginning-of-fortran-subprogram
address@hidden end-of-fortran-subprogram
address@hidden mark-fortran-subprogram
address@hidden fortran-previous-statement
address@hidden fortran-next-statement
+
address@hidden @kbd
address@hidden C-M-a
+Move to beginning of address@hidden
+(@code{beginning-of-fortran-subprogram}).
address@hidden C-M-e
+Move to end of subprogram (@code{end-of-fortran-subprogram}).
address@hidden C-M-h
+Put point at beginning of subprogram and mark at end
+(@code{mark-fortran-subprogram}).
address@hidden C-c C-n
+Move to beginning of current or next statement
+(@address@hidden).
address@hidden C-c C-p
+Move to beginning of current or previous statement
+(@address@hidden).
address@hidden table
+
address@hidden Fortran Indent, Fortran Comments, Fortran Motion, Fortran
address@hidden Fortran Indentation
+
+  Special commands and features are available for indenting Fortran
+code.  They make sure various syntactic entities (line numbers, comment line
+indicators, and continuation line flags) appear in the columns that are
+required for standard Fortran.
+
address@hidden
+* Commands: ForIndent Commands. Commands for indenting Fortran.
+* Numbers:  ForIndent Num.      How line numbers auto-indent.
+* Conv:     ForIndent Conv.     Conventions you must obey to avoid trouble.
+* Vars:     ForIndent Vars.     Variables controlling Fortran indent style.
address@hidden menu
+
address@hidden ForIndent Commands, ForIndent Num, Fortran Indent, Fortran Indent
address@hidden Fortran Indentation Commands
+
address@hidden @kbd
address@hidden @key{TAB}
+Indent the current line (@code{fortran-indent-line}).
address@hidden address@hidden
+Break the current line and set up a continuation line.
address@hidden C-M-q
+Indent all the lines of the subprogram point is in
+(@code{fortran-indent-subprogram}).
address@hidden table
+
address@hidden fortran-indent-line
+  @key{TAB} is redefined by Fortran mode to reindent the current line for
+Fortran (@code{fortran-indent-line}).  Line numbers and continuation
+markers are indented to their required columns, and the body of the
+statement is independently indented, based on its nesting in the program.
+
address@hidden C-M-q (Fortran mode)
address@hidden fortran-indent-subprogram
+  The key @kbd{C-M-q} is redefined as @code{fortran-indent-subprogram}, a
+command that reindents all the lines of the Fortran subprogram (function or
+subroutine) containing point.
+
address@hidden M-LFD (Fortran mode)
address@hidden fortran-split-line
+  The key @address@hidden is redefined as @code{fortran-split-line}, a
+command to split a line in the appropriate fashion for Fortran.  In a
+non-comment line, the second half becomes a continuation line and is
+indented accordingly.  In a comment line, both halves become separate
+comment lines.
+
address@hidden ForIndent Num, ForIndent Conv, ForIndent Commands, Fortran Indent
address@hidden Line Numbers and Continuation
+
+  If a number is the first non-whitespace in the line, it is assumed to be
+a line number and is moved to columns 0 through 4.  (Columns are always
+counted from 0 in XEmacs.)  If the text on the line starts with the
+conventional Fortran continuation marker @samp{$}, it is moved to column 5.
+If the text begins with any non whitespace character in column 5, it is
+assumed to be an unconventional continuation marker and remains in column
+5.
+
address@hidden fortran-line-number-indent
+  Line numbers of four digits or less are normally indented one space.
+This amount is controlled by the variable @code{fortran-line-number-indent},
+which is the maximum indentation a line number can have.  Line numbers
+are indented to right-justify them to end in column 4 unless that would
+require more than the maximum indentation.  The default value of the
+variable is 1.
+
address@hidden fortran-electric-line-number
+  Simply inserting a line number is enough to indent it according to these
+rules.  As each digit is inserted, the indentation is recomputed.  To turn
+off this feature, set the variable @code{fortran-electric-line-number} to
address@hidden  Then inserting line numbers is like inserting anything else.
+
address@hidden ForIndent Conv, ForIndent Vars, ForIndent Num, Fortran Indent
address@hidden Syntactic Conventions
+
+  Fortran mode assumes that you follow certain conventions that simplify
+the task of understanding a Fortran program well enough to indent it
+properly:
+
address@hidden fortran-continuation-char
address@hidden @bullet
address@hidden
+Two nested @samp{do} loops never share a @samp{continue} statement.
+
address@hidden
+The same character appears in column 5 of all continuation lines.  It
+is the value of the variable @code{fortran-continuation-char}.
+By default, this character is @samp{$}.
address@hidden itemize
+
address@hidden
+If you fail to follow these conventions, the indentation commands may
+indent some lines unaesthetically.  However, a correct Fortran program will
+retain its meaning when reindented even if the conventions are not
+followed.
+
address@hidden ForIndent Vars,  , ForIndent Conv, Fortran Indent
address@hidden Variables for Fortran Indentation
+
address@hidden fortran-do-indent
address@hidden fortran-if-indent
address@hidden fortran-continuation-indent
address@hidden fortran-check-all-num-for-matching-do
address@hidden fortran-minimum-statement-indent
+  Several additional variables control how Fortran indentation works.
+
address@hidden @code
address@hidden fortran-do-indent
+Extra indentation within each level of @samp{do} statement (the default is 3).
+
address@hidden fortran-if-indent
+Extra indentation within each level of @samp{if} statement (the default is 3).
+
address@hidden fortran-continuation-indent
+Extra indentation for bodies of continuation lines (the default is 5).
+
address@hidden fortran-check-all-num-for-matching-do
+If this is @code{nil}, indentation assumes that each @samp{do}
+statement ends on a @samp{continue} statement.  Therefore, when
+computing indentation for a statement other than @samp{continue}, it
+can save time by not checking for a @samp{do} statement ending there.
+If this is address@hidden, indenting any numbered statement must check
+for a @samp{do} that ends there.  The default is @code{nil}.
+
address@hidden fortran-minimum-statement-indent
+Minimum indentation for Fortran statements.  For standard Fortran,
+this is 6.  Statement bodies are always indented at least this much.
address@hidden table
+
address@hidden Fortran Comments, Fortran Columns, Fortran Indent, Fortran
address@hidden Comments
+
+  The usual Emacs comment commands assume that a comment can follow a line
+of code.  In Fortran, the standard comment syntax requires an entire line
+to be just a comment.  Therefore, Fortran mode replaces the standard Emacs
+comment commands and defines some new variables.
+
+  Fortran mode can also handle a non-standard comment syntax where comments
+start with @samp{!} and can follow other text.  Because only some Fortran
+compilers accept this syntax, Fortran mode will not insert such comments
+unless you have specified to do so in advance by setting the variable
address@hidden to @samp{"!"} (@pxref{Variables}).
+
address@hidden @kbd
address@hidden M-;
+Align comment or insert new comment (@code{fortran-comment-indent}).
+
address@hidden C-x ;
+Applies to nonstandard @samp{!} comments only.
+
address@hidden C-c ;
+Turn all lines of the region into comments, or (with arg)
+turn them back into real code (@code{fortran-comment-region}).
address@hidden table
+
+  @kbd{M-;} in Fortran mode is redefined as the command
address@hidden  Like the usual @kbd{M-;} command,
+it recognizes an existing comment and aligns its text appropriately.
+If there is no existing comment, a comment is inserted and aligned.
+
+Inserting and aligning comments is not the same in Fortran mode as in
+other modes.  When a new comment must be inserted, a full-line comment is
+inserted if the current line is blank.  On a non-blank line, a
+non-standard @samp{!} comment is inserted if you previously specified
+you wanted to use them.  Otherwise a full-line comment is inserted on a
+new line before the current line.
+
+  Non-standard @samp{!} comments are aligned like comments in other
+languages, but full-line comments are aligned differently.  In a
+standard full-line comment, the comment delimiter itself must always
+appear in column zero.  What can be aligned is the text within the
+comment.  You can choose from three styles of alignment by setting the
+variable @code{fortran-comment-indent-style} to one of these values:
+
address@hidden fortran-comment-indent-style
address@hidden fortran-comment-line-column
address@hidden @code
address@hidden fixed
+The text is aligned at a fixed column, which is the value of
address@hidden  This is the default.
address@hidden relative
+The text is aligned as if it were a line of code, but with an
+additional @code{fortran-comment-line-column} columns of indentation.
address@hidden nil
+Text in full-line columns is not moved automatically.
address@hidden table
+
address@hidden fortran-comment-indent-char
+  You can also specify the character to be used to indent within
+full-line comments by setting the variable @code{fortran-comment-indent-char}
+to the character you want to use.
+
address@hidden comment-line-start
address@hidden comment-line-start-skip
+  Fortran mode introduces two variables @code{comment-line-start} and
address@hidden, which do for full-line comments what
address@hidden and @code{comment-start-skip} do for
+ordinary text-following comments.  Normally these are set properly by
+Fortran mode, so you do not need to change them.
+
+  The normal Emacs comment command @kbd{C-x ;} has not been redefined.
+It can therefore be used if you use @samp{!} comments, but is useless in
+Fortran mode otherwise. 
+
address@hidden C-c ; (Fortran mode)
address@hidden fortran-comment-region
address@hidden fortran-comment-region
+  The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
+lines of the region into comments by inserting the string @samp{C$$$} at
+the front of each one.  With a numeric arg, the region is turned back into
+live code by deleting @samp{C$$$} from the front of each line.  You can
+control the string used for the comments by setting the variable
address@hidden  Note that here we have an example of a
+command and a variable with the same name; the two uses of the name never
+conflict because in Lisp and in Emacs it is always clear from the context
+which one is referred to.
+
address@hidden Fortran Columns, Fortran Abbrev, Fortran Comments, Fortran
address@hidden Columns
+
address@hidden @kbd
address@hidden C-c C-r
+Displays a ``column ruler'' momentarily above the current line
+(@code{fortran-column-ruler}).
address@hidden C-c C-w
+Splits the current window horizontally so that it is 72 columns wide.
+This may help you avoid going over that limit (@code{fortran-window-create}).
address@hidden table
+
address@hidden C-c C-r (Fortran mode)
address@hidden fortran-column-ruler
+  The command @kbd{C-c C-r} (@code{fortran-column-ruler}) shows a column
+ruler above the current line.  The comment ruler consists of two lines
+of text that show you the locations of columns with special significance
+in Fortran programs.  Square brackets show the limits of the columns for
+line numbers, and curly brackets show the limits of the columns for the
+statement body.  Column numbers appear above them.
+
+  Note that the column numbers count from zero, as always in XEmacs.  As
+a result, the numbers may not be those you are familiar with; but the
+actual positions in the line are standard Fortran.
+
+  The text used to display the column ruler is the value of the variable
address@hidden  By changing this variable, you can change
+the display.
+
address@hidden C-c C-w (Fortran mode)
address@hidden fortran-window-create
+  For even more help, use @kbd{C-c C-w} (@code{fortran-window-create}), a
+command which splits the current window horizontally, resulting in a window 72
+columns wide.  When you edit in this window, you can immediately see
+when a line gets too wide to be correct Fortran.
+
address@hidden Fortran Abbrev,  , Fortran Columns, Fortran
address@hidden Fortran Keyword Abbrevs
+
+  Fortran mode provides many built-in abbrevs for common keywords and
+declarations.  These are the same sort of abbrevs that you can define
+yourself.  To use them, you must turn on Abbrev mode.  @pxref{Abbrevs}.
+
+  The built-in abbrevs are unusual in one way: they all start with a
+semicolon.  You cannot normally use semicolon in an abbrev, but Fortran
+mode makes this possible by changing the syntax of semicolon to ``word
+constituent''.
+
+  For example, one built-in Fortran abbrev is @samp{;c} for
address@hidden  If you insert @samp{;c} and then insert a punctuation
+character such as a space or a newline, the @samp{;c} changes
+automatically to @samp{continue}, provided Abbrev mode is address@hidden
+
+  Type @samp{;?} or @samp{;C-h} to display a list of all built-in
+Fortran abbrevs and what they stand for.
+
address@hidden Asm Mode,  , Fortran, Programs
address@hidden Asm Mode
+
address@hidden Asm mode
+Asm mode is a major mode for editing files of assembler code.  It
+defines these commands:
+
address@hidden @kbd
address@hidden @key{TAB}
address@hidden
address@hidden @key{LFD}
+Insert a newline and then indent using @code{tab-to-tab-stop}.
address@hidden :
+Insert a colon and then remove the indentation from before the label
+preceding colon.  Then do @code{tab-to-tab-stop}.
address@hidden ;
+Insert or align a comment.
address@hidden table
+
+  The variable @code{asm-comment-char} specifies which character
+starts comments in assembler syntax.
+
address@hidden Running, Abbrevs, Programs, Top
address@hidden Compiling and Testing Programs
+
+  The previous chapter discusses the Emacs commands that are useful for
+making changes in programs.  This chapter deals with commands that assist
+in the larger process of developing and maintaining programs.
+
address@hidden
+* Compilation::        Compiling programs in languages other than Lisp
+                        (C, Pascal, etc.)
+* Modes: Lisp Modes.   Various modes for editing Lisp programs, with
+                       different facilities for running the Lisp programs.
+* Libraries: Lisp Libraries.      Creating Lisp programs to run in Emacs.
+* Eval: Lisp Eval.     Executing a single Lisp expression in Emacs.
+* Debug: Lisp Debug.   Debugging Lisp programs running in Emacs.
+* Interaction: Lisp Interaction.  Executing Lisp in an Emacs buffer.
+* External Lisp::      Communicating through Emacs with a separate Lisp.
address@hidden menu
+
address@hidden Compilation, Lisp Modes, Running, Running
address@hidden Running ``make'', or Compilers Generally
address@hidden inferior process
address@hidden make
address@hidden compilation errors
address@hidden error log
+
+  Emacs can run compilers for non-interactive languages like C and
+Fortran as inferior processes, feeding the error log into an Emacs buffer.
+It can also parse the error messages and visit the files in which errors
+are found, moving point to the line where the error occurred.
+
address@hidden @kbd
address@hidden M-x compile
+Run a compiler asynchronously under Emacs, with error messages to
address@hidden buffer.
address@hidden M-x grep
+Run @code{grep} asynchronously under Emacs, with matching lines
+listed in the buffer named @samp{*compilation*}.
address@hidden M-x kill-compilation
+Kill the process made by the @code{M-x compile} command.
address@hidden M-x kill-grep
+Kill the running compilation or @code{grep} subprocess.
address@hidden C-x `
+Visit the next compiler error message or @code{grep} match.
address@hidden table
+
address@hidden compile
+  To run @code{make} or another compiler, type @kbd{M-x compile}.  This
+command reads a shell command line using the minibuffer, then executes
+the specified command line in an inferior shell with output going to the
+buffer named @samp{*compilation*}.  By default, the current buffer's
+default directory is used as the working directory for the execution of
+the command; therefore, the makefile comes from this directory.
+
address@hidden compile-command
+  When the shell command line is read, the minibuffer appears containing a
+default command line (the command you used the last time you typed
address@hidden compile}).  If you type just @key{RET}, the same command line is 
used
+again.  The first @kbd{M-x compile} provides @code{make -k} as the default.
+The default is taken from the variable @code{compile-command}; if the
+appropriate compilation command for a file is something other than
address@hidden -k}, it can be useful to have the file specify a local value for
address@hidden (@pxref{File Variables}).
+
address@hidden compiling files
+  When you start a compilation, the buffer @samp{*compilation*} is
+displayed in another window but not selected.  Its mode line displays
+the word @samp{run} or @samp{exit} in the parentheses to tell you whether
+compilation is finished.  You do not have to keep this buffer visible;
+compilation continues in any case.
+
address@hidden kill-compilation
+  To kill the compilation process, type @kbd{M-x kill-compilation}.  The mode
+line of the @samp{*compilation*} buffer changes to say @samp{signal}
+instead of @samp{run}.  Starting a new compilation also kills any
+running compilation, as only one can occur at any time.  Starting a new
+compilation prompts for confirmation before actually killing a
+compilation that is address@hidden
+
address@hidden C-x `
address@hidden next-error
+  To parse the compiler error messages, type @kbd{C-x `}
+(@code{next-error}).  The character following @kbd{C-x} is the grave
+accent, not the single quote.  The command displays the buffer
address@hidden in one window and the buffer in which the next
+error occurred in another window.  Point in that buffer is moved to the
+line where the error was found.  The corresponding error message is
+scrolled to the top of the window in which @samp{*compilation*} is
+displayed.
+
+  The first time you use @kbd{C-x `} after the start of a compilation, it
+parses all the error messages, visits all the files that have error
+messages, and creates markers pointing at the lines the error messages
+refer to.  It then moves to the first error message location.  Subsequent
+uses of @kbd{C-x `} advance down the data set up by the first use.  When
+the preparsed error messages are exhausted, the next @kbd{C-x `} checks for
+any more error messages that have come in; this is useful if you start
+editing compiler errors while compilation is still going on.  If no
+additional error messages have come in, @kbd{C-x `} reports an error.
+
+  @kbd{C-u C-x `} discards the preparsed error message data and parses the
address@hidden buffer again, then displays the first error.
+This way, you can process the same set of errors again.
+
+  Instead of running a compiler, you can run @code{grep} and see the
+lines on which matches were found.  To do this, type @kbd{M-x grep} with
+an argument line that contains the same arguments you would give to
address@hidden: a @code{grep}-style regexp (usually in single quotes to
+quote the shell's special characters) followed by filenames, which may
+use wildcard characters.  The output from @code{grep} goes in the
address@hidden buffer.  You can use @kbd{C-x `} to find the lines that
+match as if they were compilation errors.
+
+  Note: a shell is used to run the compile command, but the shell is not
+run in interactive mode.  In particular, this means that the shell starts
+up with no prompt.  If you find your usual shell prompt making an
+unsightly appearance in the @samp{*compilation*} buffer, it means you
+have made a mistake in your shell's initialization file (@file{.cshrc}
+or @file{.shrc} or @dots{}) by setting the prompt unconditionally.  The
+shell initialization file should set the prompt only if there already is
+a prompt.  Here's how to do it in @code{csh}:
+
address@hidden
+if ($?prompt) set prompt = ...
address@hidden example
+
address@hidden Lisp Modes, Lisp Libraries, Compilation, Running
address@hidden Major Modes for Lisp
+
+  Emacs has four different major modes for Lisp.  They are the same in
+terms of editing commands, but differ in the commands for executing Lisp
+expressions.
+
address@hidden @asis
address@hidden Emacs-Lisp mode
+The mode for editing source files of programs to run in Emacs Lisp.
+This mode defines @kbd{C-M-x} to evaluate the current defun.
address@hidden Libraries}.
address@hidden Lisp Interaction mode
+The mode for an interactive session with Emacs Lisp.  It defines
address@hidden to evaluate the sexp before point and insert its value in the
+buffer.  @xref{Lisp Interaction}.
address@hidden Lisp mode
+The mode for editing source files of programs that run in other dialects
+of Lisp than Emacs Lisp.  This mode defines @kbd{C-M-x} to send the
+current defun to an inferior Lisp process.  @xref{External Lisp}.
address@hidden Inferior Lisp mode
+The mode for an interactive session with an inferior Lisp process.
+This mode combines the special features of Lisp mode and Shell mode
+(@pxref{Shell Mode}).
address@hidden Scheme mode
+Like Lisp mode but for Scheme programs.
address@hidden Inferior Scheme mode
+The mode for an interactive session with an inferior Scheme process.
address@hidden table
+
address@hidden Lisp Libraries, Lisp Eval, Lisp Modes, Running
address@hidden Libraries of Lisp Code for Emacs
address@hidden libraries
address@hidden loading Lisp code
+
+  Lisp code for Emacs editing commands is stored in files whose names
+conventionally end in @file{.el}.  This ending tells Emacs to edit them in
+Emacs-Lisp mode (@pxref{Lisp Modes}).
+
address@hidden
+* Loading::            Loading libraries of Lisp code into Emacs for use.
+* Compiling Libraries:: Compiling a library makes it load and run faster.
+* Mocklisp::           Converting Mocklisp to Lisp so XEmacs can run it.
address@hidden menu
+
address@hidden Loading, Compiling Libraries, Lisp Libraries, Lisp Libraries
address@hidden Loading Libraries
+
address@hidden @kbd
address@hidden M-x load-file @var{file}
+Load the file @var{file} of Lisp code.
address@hidden M-x load-library @var{library}
+Load the library named @var{library}.
address@hidden M-x locate-library @var{library} &optional @var{nosuffix}
+Show the full path name of Emacs library @var{library}.
address@hidden table
+
address@hidden load-file
+  To execute a file of Emacs Lisp, use @kbd{M-x load-file}.  This
+command reads the file name you provide in the minibuffer, then executes
+the contents of that file as Lisp code.  It is not necessary to visit
+the file first; in fact, this command reads the file as found on
+disk, not the text in an Emacs buffer.
+
address@hidden load
address@hidden load-library
+  Once a file of Lisp code is installed in the Emacs Lisp library
+directories, users can load it using @kbd{M-x load-library}.  Programs can
+load it by calling @code{load-library}, or with @code{load}, a more primitive
+function that is similar but accepts some additional arguments.
+
+  @kbd{M-x load-library} differs from @kbd{M-x load-file} in that it
+searches a sequence of directories and tries three file names in each
+directory.  The three names are: first, the specified name with @file{.elc}
+appended; second, the name with @file{.el} appended; third, the specified
+name alone.  A @file{.elc} file would be the result of compiling the Lisp
+file into byte code;  if possible, it is loaded in preference to the Lisp
+file itself because the compiled file loads and runs faster.
+
address@hidden loading libraries
+  Because the argument to @code{load-library} is usually not in itself
+a valid file name, file name completion is not available.  In fact, when
+using this command, you usually do not know exactly what file name
+will be used.
+
address@hidden load-path
+  The sequence of directories searched by @kbd{M-x load-library} is
+specified by the variable @code{load-path}, a list of strings that are
+directory names.  The elements of this list may not begin with "@samp{~}",
+so you must call @code{expand-file-name} on them before adding them to
+the list.  The default value of the list contains the directory where
+the Lisp code for Emacs itself is stored.  If you have libraries of your
+own, put them in a single directory and add that directory to
address@hidden  @code{nil} in this list stands for the current
+default directory, but it is probably not a good idea to put @code{nil}
+in the list.  If you start wishing that @code{nil} were in the list, you
+should probably use @kbd{M-x load-file} for this case.
+
+The variable is initialized by the @b{EMACSLOADPATH} environment
+variable. If no value is specified, the variable takes the default value
+specified in the file @file{paths.h} when Emacs was built. If a path
+isn't specified in @file{paths.h}, a default value is obtained from the
+file system, near the directory in which the Emacs executable resides.
+
address@hidden locate-library
+ Like @kbd{M-x load-library}, @kbd{M-x locate-library} searches the 
+directories in @code{load-path} to find the file that @kbd{M-x load-library}
+would load.  If the optional second argument @var{nosuffix} is
address@hidden, the suffixes @file{.elc} or @file{.el} are not added to
+the specified name @var{library} (like calling @code{load} instead of
address@hidden).
+
address@hidden autoload
+   You often do not have to give any command to load a library, because the
+commands defined in the library are set up to @dfn{autoload} that library.
+Running any of those commands causes @code{load} to be called to load the
+library; this replaces the autoload definitions with the real ones from the
+library.
+
+  If autoloading a file does not finish, either because of an error or
+because of a @kbd{C-g} quit, all function definitions made by the file
+are undone automatically.  So are any calls to @code{provide}.  As a
+consequence, the entire file is loaded a second time if you use one of
+the autoloadable commands again.  This prevents problems when the
+command is no longer autoloading but is working incorrectly because the file
+was only partially loaded.  Function definitions are undone only for
+autoloading; explicit calls to @code{load} do not undo anything if
+loading is not completed.
+
address@hidden after-load-alist
+The variable @code{after-load-alist} takes an alist of expressions to be
+evaluated when particular files are loaded.  Each element has the form
address@hidden(@var{filename} forms...)}.  When @code{load} is run and the 
filename
+argument is @var{filename}, the forms in the corresponding element are
+executed at the end of loading.
+
address@hidden must match exactly.  Normally @var{filename} is the
+name of a library, with no directory specified, since that is how load
+is normally called.  An error in @code{forms} does not undo the load, but
+it does prevent execution of the rest of the @code{forms}.
+
address@hidden Compiling Libraries, Mocklisp, Loading, Lisp Libraries
address@hidden Compiling Libraries
+
address@hidden byte code
+  Emacs Lisp code can be compiled into byte-code which loads faster,
+takes up less space when loaded, and executes faster.
+
address@hidden @kbd
address@hidden M-x batch-byte-compile
+Run byte-compile-file on the files remaining on the command line.
address@hidden M-x byte-compile-buffer &optional @var{buffer}
+Byte-compile and evaluate contents of @var{buffer} (default is current 
+buffer).
address@hidden M-x byte-compile-file
+Compile a file of Lisp code named @var{filename} into a file of byte code.
address@hidden M-x byte-compile-and-load-file @var{filename}
+Compile a file of Lisp code named @var{filename} into a file of byte
+code and load it.
address@hidden M-x byte-recompile-directory @var{directory}
+Recompile every @file{.el} file in @var{directory} that needs recompilation.
address@hidden M-x disassemble
+Print disassembled code for @var{object} on (optional) @var{stream}.
address@hidden make-obsolete
address@hidden M-x make-obsolete @var{function new} 
+Make the byte-compiler warn that @var{function} is obsolete and @var{new} 
+should be used instead.
address@hidden table
+
address@hidden byte-compile-file
address@hidden byte-compile-and-load-file
address@hidden byte-compile-buffer
+ @kbd{byte-compile-file} creates a byte-code compiled file from an
+Emacs-Lisp source file.  The default argument for this function is the
+file visited in the current buffer.  The function reads the specified
+file, compiles it into byte code, and writes an output file whose name
+is made by appending @file{c} to the input file name.  Thus, the file
address@hidden would be compiled into @file{rmail.elc}. To compile a
+file of Lisp code named @var{filename} into a file of byte code and
+then load it, use @code{byte-compile-and-load-file}. To compile and
+evaluate Lisp code in a given buffer, use @code{byte-compile-buffer}.
+
address@hidden byte-recompile-directory
+  To recompile all changed Lisp files in a directory, use @kbd{M-x
+byte-recompile-directory}.  Specify just the directory name as an argument.
+Each @file{.el} file that has been byte-compiled before is byte-compiled
+again if it has changed since the previous compilation.  A numeric argument
+to this command tells it to offer to compile each @file{.el} file that has
+not been compiled yet.  You must answer @kbd{y} or @kbd{n} to each
+offer.
+
address@hidden batch-byte-compile
+  You can use the function @code{batch-byte-compile} to invoke Emacs
+non-interactively from the shell to do byte compilation.  When you use
+this function, the files to be compiled are specified with command-line
+arguments.  Use a shell command of the form:
+
address@hidden
+emacs -batch -f batch-byte-compile @var{files}...
address@hidden example
+
+  Directory names may also be given as arguments; in that case,
address@hidden is invoked on each such directory.
address@hidden uses all remaining command-line arguments as
+file or directory names, then kills the Emacs process.
+
address@hidden disassemble
+  @kbd{M-x disassemble} explains the result of byte compilation.  Its
+argument is a function name.  It displays the byte-compiled code in a help
+window in symbolic form, one instruction per line.  If the instruction
+refers to a variable or constant, that is shown, too.
+
address@hidden Mocklisp,,Compiling Libraries,Lisp Libraries
address@hidden Converting Mocklisp to Lisp
+
address@hidden mocklisp
address@hidden convert-mocklisp-buffer
+  XEmacs can run Mocklisp files by converting them to Emacs Lisp first.
+To convert a Mocklisp file, visit it and then type @kbd{M-x
+convert-mocklisp-buffer}.  Then save the resulting buffer of Lisp file in a
+file whose name ends in @file{.el} and use the new file as a Lisp library.
+
+  You cannot currently byte-compile converted Mocklisp code.
+The reason is that converted Mocklisp code uses some special Lisp features
+to deal with Mocklisp's incompatible ideas of how arguments are evaluated
+and which values signify ``true'' or ``false''.
+
address@hidden Lisp Eval, Lisp Debug, Lisp Libraries, Running
address@hidden Evaluating Emacs-Lisp Expressions
address@hidden Emacs-Lisp mode
+
address@hidden emacs-lisp-mode
+  Lisp programs intended to be run in Emacs should be edited in
+Emacs-Lisp mode; this will happen automatically for file names ending in
address@hidden  By contrast, Lisp mode itself should be used for editing
+Lisp programs intended for other Lisp systems.  Emacs-Lisp mode can be
+selected with the command @kbd{M-x emacs-lisp-mode}.
+
+  For testing of Lisp programs to run in Emacs, it is useful to be able
+to evaluate part of the program as it is found in the Emacs buffer.  For
+example, if you change the text of a Lisp function definition and then
+evaluate the definition, Emacs installs the change for future calls to the
+function.  Evaluation of Lisp expressions is also useful in any kind of
+editing task for invoking non-interactive functions (functions that are
+not commands).
+
address@hidden @kbd
address@hidden M-:
+Read a Lisp expression in the minibuffer, evaluate it, and print the
+value in the minibuffer (@code{eval-expression}).
address@hidden C-x C-e
+Evaluate the Lisp expression before point, and print the value in the
+minibuffer (@code{eval-last-sexp}).
address@hidden C-M-x
+Evaluate the defun containing point or after point, and print the value in
+the minibuffer (@code{eval-defun}).
address@hidden M-x eval-region
+Evaluate all the Lisp expressions in the region.
address@hidden M-x eval-current-buffer
+Evaluate all the Lisp expressions in the buffer.
address@hidden table
+
address@hidden M-:
address@hidden eval-expression
+  @kbd{M-:} (@code{eval-expression}) is the most basic command
+for evaluating a Lisp expression interactively.  It reads the expression
+using the minibuffer, so you can execute any expression on a buffer
+regardless of what the buffer contains.  When evaluation is complete,
+the current buffer is once again the buffer that was current when
address@hidden:} was typed.
+
address@hidden C-M-x
address@hidden eval-defun
+  In Emacs-Lisp mode, the key @kbd{C-M-x} is bound to the function
address@hidden, which parses the defun containing point or following point
+as a Lisp expression and evaluates it.  The value is printed in the echo
+area.  This command is convenient for installing in the Lisp environment
+changes that you have just made in the text of a function definition.
+
address@hidden C-x C-e
address@hidden eval-last-sexp
+  The command @kbd{C-x C-e} (@code{eval-last-sexp}) performs a similar job
+but is available in all major modes, not just Emacs-Lisp mode.  It finds
+the sexp before point, reads it as a Lisp expression, evaluates it, and
+prints the value in the echo area.  It is sometimes useful to type in an
+expression and then, with point still after it, type @kbd{C-x C-e}.
+
+  If @kbd{C-M-x} or @kbd{C-x C-e} are given a numeric argument, they
+print the value by inserting it into the current buffer at point, rather
+than in the echo area.  The argument value does not matter.
+
address@hidden eval-region
address@hidden eval-current-buffer
+  The most general command for evaluating Lisp expressions from a buffer
+is @code{eval-region}.  @kbd{M-x eval-region} parses the text of the
+region as one or more Lisp expressions, evaluating them one by one.
address@hidden eval-current-buffer} is similar, but it evaluates the entire
+buffer.  This is a reasonable way to install the contents of a file of
+Lisp code that you are just ready to test.  After finding and fixing a
+bug, use @kbd{C-M-x} on each function that you change, to keep the Lisp
+world in step with the source file.
+
address@hidden Lisp Debug, Lisp Interaction, Lisp Eval, Running
address@hidden The Emacs-Lisp Debugger
address@hidden debugger
+
address@hidden debug-on-error
address@hidden debug-on-quit
+  XEmacs contains a debugger for Lisp programs executing inside it.
+This debugger is normally not used; many commands frequently get Lisp
+errors when invoked in inappropriate contexts (such as @kbd{C-f} at the
+end of the buffer) and it would be unpleasant to enter a special
+debugging mode in this case.  When you want to make Lisp errors invoke
+the debugger, you must set the variable @code{debug-on-error} to
address@hidden  Quitting with @kbd{C-g} is not considered an error, and
address@hidden has no effect on the handling of @kbd{C-g}.
+However, if you set @code{debug-on-quit} to be address@hidden, @kbd{C-g} will
+invoke the debugger.  This can be useful for debugging an infinite loop;
+type @kbd{C-g} once the loop has had time to reach its steady state.
address@hidden has no effect on address@hidden
+
address@hidden debug-on-entry
address@hidden cancel-debug-on-entry
address@hidden debug
+  You can make Emacs enter the debugger when a specified function
+is called or at a particular place in Lisp code.  Use @kbd{M-x
+debug-on-entry} with argument @var{fun-name} to have Emacs enter the
+debugger as soon as @var{fun-name} is called. Use
address@hidden cancel-debug-on-entry} to make the function stop entering the
+debugger when called.  (Redefining the function also does this.)  To enter
+the debugger from some other place in Lisp code, you must insert the
+expression @code{(debug)} there and install the changed code with
address@hidden  @xref{Lisp address@hidden
+
+  When the debugger is entered, it displays the previously selected buffer
+in one window and a buffer named @samp{*Backtrace*} in another window.  The
+backtrace buffer contains one line for each level of Lisp function
+execution currently going on.  At the beginning of the buffer is a message
+describing the reason that the debugger was invoked, for example, an
+error message if it was invoked due to an error.
+
+  The backtrace buffer is read-only and is in Backtrace mode, a special
+major mode in which letters are defined as debugger commands.  The
+usual Emacs editing commands are available; you can switch windows to
+examine the buffer that was being edited at the time of the error, and
+you can switch buffers, visit files, and perform any other editing
+operations.  However, the debugger is a recursive editing level
+(@pxref{Recursive Edit}); it is a good idea to return to the backtrace
+buffer and explicitly exit the debugger when you don't want to use it any
+more.  Exiting the debugger kills the backtrace buffer.
+
address@hidden current stack frame
+  The contents of the backtrace buffer show you the functions that are
+executing and the arguments that were given to them.  It also allows you
+to specify a stack frame by moving point to the line describing that
+frame.  The frame whose line point is on is considered the @dfn{current
+frame}.  Some of the debugger commands operate on the current frame.
+Debugger commands are mainly used for stepping through code one
+expression at a time.  Here is a list of them:
+
address@hidden @kbd
address@hidden c
+Exit the debugger and continue execution.  In most cases, execution of
+the program continues as if the debugger had never been entered (aside
+from the effect of any variables or data structures you may have changed
+while inside the debugger).  This includes entry to the debugger due to
+function entry or exit, explicit invocation, and quitting or certain
+errors.  Most errors cannot be continued; trying to continue an error usually
+causes the same error to occur again.
address@hidden d
+Continue execution, but enter the debugger the next time a Lisp
+function is called.  This allows you to step through the
+subexpressions of an expression, and see what the subexpressions do and
+what values they compute.
+
+When you enter the debugger this way, Emacs flags the stack frame for the
+function call from which you entered.  The same function is then called
+when you exit the frame.  To cancel this flag, use @kbd{u}.
address@hidden b
+Set up to enter the debugger when the current frame is exited.  Frames
+that invoke the debugger on exit are flagged with stars.
address@hidden u
+Don't enter the debugger when the current frame is exited.  This
+cancels a @kbd{b} command on a frame.
address@hidden e
+Read a Lisp expression in the minibuffer, evaluate it, and print the
+value in the echo area.  This is equivalent to the command @kbd{M-:}.
address@hidden q
+Terminate the program being debugged; return to top-level Emacs
+command execution.
+
+If the debugger was entered due to a @kbd{C-g} but you really want
+to quit, not to debug, use the @kbd{q} command.
address@hidden r
+Return a value from the debugger.  The value is computed by reading an
+expression with the minibuffer and evaluating it.
+
+The value returned by the debugger makes a difference when the debugger
+was invoked due to exit from a Lisp call frame (as requested with @kbd{b});
+then the value specified in the @kbd{r} command is used as the value of
+that frame.
+
+The debugger's return value also matters with many errors.  For example,
address@hidden errors will use the debugger's return value
+instead of the invalid argument; @code{no-catch} errors will use the
+debugger value as a throw tag instead of the tag that was not found.
+If an error was signaled by calling the Lisp function @code{signal},
+the debugger's return value is returned as the value of @code{signal}.
address@hidden table
+
address@hidden Lisp Interaction, External Lisp, Lisp Debug, Running
address@hidden Lisp Interaction Buffers
+
+  The buffer @samp{*scratch*}, which is selected when Emacs starts up, is
+provided for evaluating Lisp expressions interactively inside Emacs.  Both
+the expressions you evaluate and their output goes in the buffer.
+
+  The @samp{*scratch*} buffer's major mode is Lisp Interaction mode, which
+is the same as Emacs-Lisp mode except for one command, @key{LFD}.  In
+Emacs-Lisp mode, @key{LFD} is an indentation command.  In Lisp
+Interaction mode, @key{LFD} is bound to @code{eval-print-last-sexp}.  This
+function reads the Lisp expression before point, evaluates it, and inserts
+the value in printed representation before point.
+
+ The way to use the @samp{*scratch*} buffer is to insert Lisp
+expressions at the end, ending each one with @key{LFD} so that it will
+be evaluated.  The result is a complete typescript of the expressions
+you have evaluated and their values.
+
address@hidden lisp-interaction-mode
+  The rationale for this feature is that Emacs must have a buffer when it
+starts up, but that buffer is not useful for editing files since a new
+buffer is made for every file that you visit.  The Lisp interpreter
+typescript is the most useful thing I can think of for the initial buffer
+to do.  @kbd{M-x lisp-interaction-mode} will put any buffer in Lisp
+Interaction mode.
+
address@hidden External Lisp,, Lisp Interaction, Running
address@hidden Running an External Lisp
+
+  Emacs has facilities for running programs in other Lisp systems.  You can
+run a Lisp process as an inferior of Emacs, and pass expressions to it to
+be evaluated.  You can also pass changed function definitions directly from
+the Emacs buffers in which you edit the Lisp programs to the inferior Lisp
+process.
+
address@hidden run-lisp
+  To run an inferior Lisp process, type @kbd{M-x run-lisp}.  This runs the
+program named @code{lisp}, the same program you would run by typing
address@hidden as a shell command, with both input and output going through an
+Emacs buffer named @samp{*lisp*}.  In other words, any ``terminal output''
+from Lisp will go into the buffer, advancing point, and any ``terminal
+input'' for Lisp comes from text in the buffer.  To give input to Lisp, go
+to the end of the buffer and type the input, terminated by @key{RET}.  The
address@hidden buffer is in Inferior Lisp mode, which has all the
+special characteristics of Lisp mode and Shell mode (@pxref{Shell Mode}).
+
address@hidden lisp-mode
+  Use Lisp mode to run the source files of programs in external Lisps.
+You can select this mode with @kbd{M-x lisp-mode}.  It is used automatically
+for files whose names end in @file{.l} or @file{.lisp}, as most Lisp
+systems usually expect.
+
address@hidden C-M-x
address@hidden lisp-send-defun
+  When you edit a function in a Lisp program you are running, the easiest
+way to send the changed definition to the inferior Lisp process is the key
address@hidden  In Lisp mode, this key runs the function @code{lisp-send-defun},
+which finds the defun around or following point and sends it as input to
+the Lisp process.  (Emacs can send input to any inferior process regardless
+of what buffer is current.)
+
+  Contrast the meanings of @kbd{C-M-x} in Lisp mode (for editing programs
+to be run in another Lisp system) and Emacs-Lisp mode (for editing Lisp
+programs to be run in Emacs): in both modes it has the effect of installing
+the function definition that point is in, but the way of doing so is
+different according to where the relevant Lisp environment is found.
address@hidden Modes}.
address@hidden This is part of the XEmacs manual.
address@hidden Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software 
Foundation, Inc.
address@hidden See file xemacs.texi for copying conditions.
address@hidden Packages, Basic, Startup Paths, Top
address@hidden  node-name,  next,  previous,  up
+
address@hidden Packages
address@hidden packages
+
+The XEmacs 21 distribution comes only with a very basic set of
+built-in modes and packages.  Most of the packages that were part of
+the distribution of earlier versions of XEmacs are now available
+separately.  The installer as well as the user can choose which
+packages to install; the actual installation process is easy.
+This gives an installer the ability to tailor an XEmacs installation for
+local needs with safe removal of unnecessary code.
+
address@hidden
+* Package Terminology:: Understanding different kinds of packages.
+* Installing Packages:: How to install packages.
+* Building Packages::   Building packages from CVS sources.
+* Local.rules File::    This is an important file that you must create.
+* Creating Packages::   The basics.
+* Available Packages::  A brief directory of packaged LISP.
address@hidden menu
+
address@hidden Package Terminology, Installing Packages, , Packages
address@hidden  node-name,  next,  previous,  up
address@hidden Package Terminology:
address@hidden Package Flavors
+
+There are two main flavors of packages.
+
address@hidden @bullet
address@hidden
+Regular Packages
address@hidden regular packages
+A regular package is one in which multiple files are involved and one
+may not in general safely remove any of them.
+
address@hidden
+Single-File Packages
address@hidden single-file packages
+A single-file package is an aggregate collection of thematically
+related but otherwise independent lisp files.  These files are bundled 
+together for download convenience and individual files may be deleted at
+will without any loss of functionality.  However, we would recommend
+that you follow this rule of thumb: "When in doubt, don't delete".
address@hidden itemize
+
address@hidden Package Distributions
address@hidden package distributions
+XEmacs Lisp packages are distributed in two ways, depending on the
+intended use.  Binary Packages are for installers and end-users that can
+be installed directly into an XEmacs package directory.  Source Packages
+are for developers and include all files necessary for rebuilding
+bytecompiled lisp and creating tarballs for distribution.
+
address@hidden Binary Packages
address@hidden binary packages
+Binary packages may be installed directly into an XEmacs package
+hierarchy.
+
address@hidden Source Packages
address@hidden source packages
+Source packages contain all of the Package author's (where appropriate
+in regular packages) source code plus all of the files necessary to
+build distribution tarballs (Unix Tar format files, gzipped for space
+savings).
+
+Currently, source packages are only available via CVS.  See
address@hidden://cvs.xemacs.org/} for details.
address@hidden Installing Packages, Building Packages, Package Terminology, 
Packages
address@hidden  node-name,  next,  previous,  up
address@hidden installing packages
address@hidden install
address@hidden Installing Packages:
address@hidden Getting Started
+
+When you first download XEmacs 21, you will usually first grab the
address@hidden distribution},
address@hidden core distribution
+a file called
address@hidden (Replace the @t{21.x.x} by the current version
+number.)  The core distribution contains the sources of XEmacs and a
+minimal set of Emacs Lisp files, which are in the subdirectory named
address@hidden  This subdirectory used to contain all Emacs Lisp files
+distributed with XEmacs.  Now, to conserve disk space, most
+non-essential packages were made optional.
+
address@hidden Choosing the Packages You Need
address@hidden choosing packages
+The @ref{Available Packages} can currently be found in the same ftp directory
+where you grabbed the core distribution from, and are located in the
+subdirectory @file{packages}.  Package file names follow
+the naming convention @file{<package-name>-<version>-pkg.tar.gz}.
+
+If you have @ref{(EFS)}, packages can be installed over the network.
+Alternatively, if you have copies of the packages locally, you can
+install packages from a local disk or CDROM.
+
+The file @file{etc/PACKAGES} in the core distribution contains a list of
+the @ref{Available Packages} at the time of the XEmacs release.
+
+You can also get a list of available packages, and whether or not they
+are installed, using the visual package browser and installer.  You can
+access it via the menus:
+
address@hidden
+        Tools -> Packages -> List and Install
address@hidden example
+
+Or, you can get to it via the keyboard:
+
address@hidden
+M-x pui-list-packages
address@hidden example
+
+Hint to system administrators of multi-user systems: it might be a good
+idea to install all packages and not interfere with the wishes of your
+users.
+
+If you can't find which package provides the feature you require, try
+using the @code{package-get-package-provider} function. Eg., if you know 
+that you need @code{thingatpt}, type:
+
address@hidden
+M-x package-get-package-provider RET thingatpt
address@hidden example
+
+which will return something like (fsf-compat "1.08"). You can the use
+one of the methods above for installing the package you want.
+
address@hidden XEmacs and Installing Packages
+
+There are three main ways to install packages:
+
address@hidden
+* Sumo::              All at once, using the 'Sumo Tarball'.
+* Manually::          Using individual package tarballs.
+* Automatically::     Using the package tools from XEmacs.
+* Which Packages::    Which packages to install.
+* Removing Packages:: Removing packages.
address@hidden menu
+
+But regardless of the method you use to install packages, they can only
+be used by XEmacs after a restart.
+
address@hidden Sumo, Manually, ,Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden sumo package install
address@hidden Installing the Sumo Packages:
+Those with little time, cheap connections and plenty of disk space can
+install all the packages at once using the sumo tarballs.
+Download the file: @file{xemacs-sumo.tar.gz}
+
+For an XEmacs compiled with Mule you also need: @file{xemacs-mule-sumo.tar.gz}
+
+N.B. They are called 'Sumo Tarballs' for good reason. They are
+currently about 19MB and 4.5MB (gzipped) respectively.
+
+Install them by:
+
address@hidden $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xvf - RET}
+
+Or, if you have GNU tar:
+
address@hidden $prefix/lib/xemacs ; tar zxvf /path/to/<tarballname> RET}
+
+As the Sumo tarballs are not regenerated as often as the individual
+packages, it is recommended that you use the automatic package tools
+afterwards to pick up any recent updates.
+
address@hidden Manually, Automatically, Sumo, Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden manual package install
address@hidden Manual Package Installation:
+Fetch the packages from the FTP site, CD-ROM whatever. The filenames
+have the form @file{name-<version>-pkg.tar.gz} and are gzipped tar files. For
+a fresh install it is sufficient to untar the file at the top of the
+package hierarchy. 
+
+Note: If you are upgrading packages already installed, it's best to
+remove the old package first @ref{Removing Packages}.
+
+For example if we are installing the @file{xemacs-base}
+package (version 1.48):
+
address@hidden
+   mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/xemacs-packages RET
+   gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
+
+Or if you have GNU tar, the last step can be:
+
+   tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
address@hidden example
+
+For MULE related packages, it is best to untar into the mule-packages
+hierarchy, i.e. for the @file{mule-base} package, version 1.37:
+
address@hidden
+   mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/mule-packages RET
+   gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
+
+Or if you have GNU tar, the last step can be:
+
+   tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
address@hidden example
+
address@hidden Automatically, Which Packages ,Manually, Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden automatic package install
address@hidden package tools
address@hidden Automatic Package Installation:
+XEmacs comes with some tools to make the periodic updating and
+installing easier. It will notice if new packages or versions are
+available and will fetch them from the FTP site.
+
+Unfortunately this requires that a few packages are already in place.
+You will have to install them by hand as above or use a SUMO tarball.
+This requirement will hopefully go away in the future. The packages
+you need are:
+
address@hidden
+   efs          - To fetch the files from the FTP site or mirrors.
+   xemacs-base  - Needed by efs.
+
+and optionally:
+
+   mule-base    - Needed if you want to use XEmacs with MULE.
address@hidden example
+
+After installing these by hand, fire up XEmacs and follow these
+steps.
+
address@hidden 1
address@hidden
+Choose a download site.
+via menu: Tools -> Packages -> Add Download Site 
+via keyb: @code{M-x customize-variable RET package-get-remote RET}
+(put in the details of remote host and directory)
+
+If the package tarballs _AND_ the package-index file are in a
+local directory, you can: @code{M-x pui-add-install-directory RET}
+
address@hidden
+Obtain a list of packages and display the list in a buffer named
address@hidden
+menu: Tools -> Packages -> List & Install
+keyb: @code{M-x pui-list-packages RET}
+
+XEmacs will now connect to the remote site and download the
+latest package-index file.  If you see an error about the
+package-index entries not being PGP signed, you can safely
+ignore this because PGP has not been integrated into the XEmacs
+package tools yet.
+
+The visual package browser will then display a list of all packages.
+Help information will be displayed at the very bottom of the buffer; you
+may have to scroll down to see it.  You can also press @kbd{?} to get
+the same help.  From this buffer, you can tell the package status by the
+character in the first column:
+
address@hidden @kbd
address@hidden -
+The package has not been installed.
address@hidden *
+The package has been installed, but a newer version is available.  The
+current version is out-of-date.
address@hidden +
+The package has been marked for installation/update.
address@hidden table
+
+If there is no character in the first column, the package has been
+installed and is up to date.
+
+From here, you can select or unselect packages for installation using
+the @key{RET} key, the @kbd{Mouse-2} button or selecting "Select" from
+the (Popup) Menu.
+Once you've finished selecting the packages, you can
+press the @kbd{x} key (or use the menu) to actually install the
+packages. Note that you will have to restart XEmacs for XEmacs to
+recognize any new packages.
+
+Key summary:
+
address@hidden @kbd
address@hidden ?
+Display simple help.
address@hidden @key{RET}
address@hidden @key{Mouse-2}
+Toggle between selecting and unselecting a package for installation.
address@hidden x
+Install selected packages.
address@hidden @key{SPC}
+View, in the minibuffer, additional information about the package, such
+as the package date (not the build date) and the package author.  Moving 
+the mouse over a package name will also do the same thing.
address@hidden v
+Toggle between verbose and non-verbose package display.
address@hidden g
+Refresh the package display.
address@hidden q
+Kill the package buffer.
address@hidden table
+
+Moving the mouse over a package will also cause additional information
+about the package to be displayed in the minibuffer.
+
+
address@hidden
+Choose the packages you wish to install.
+mouse: Click button 2 on the package name.
+ keyb: @kbd{RET} on the package name
+
address@hidden
+Make sure you have everything you need.
+menu: Packages -> Add Required
+keyb: @kbd{r}
+
+XEmacs will now search for packages that are required by the
+ones that you have chosen to install and offer to select
+those packages also.
+
+For novices and gurus alike, this step can save your bacon.
+It's easy to forget to install a critical package.
+
address@hidden
+Download and install the packages.
+menu: Packages -> Install/Remove Selected
+keyb: @kbd{x}
address@hidden enumerate
+
+You can also install packages using a semi-manual interface:
+
address@hidden
+M-x package-get-all <return>
address@hidden example
+
+Enter the name of the package (e.g., @code{prog-modes}), and XEmacs
+will search for the latest version and install it and any packages that
+it depends upon.
+
address@hidden Which Packages, Removing Packages, Automatically, Installing 
Packages
address@hidden  node-name,  next,  previous,  up
address@hidden which packages
address@hidden choosing packages
address@hidden Which Packages to Install:
+This is difficult to say. When in doubt install a package. If you
+administrate a big site it might be a good idea to just install
+everything. A good minimal set of packages for XEmacs-latin1 would be
+
+xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
+edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
+text-modes, time
+
+If you are using the XEmacs package tools, don't forget to do:
+
+       Packages -> Add Required
+
+To make sure you have everything that the packages you have chosen to
+install need.
+
+See also @ref{Available Packages} for further descriptions of the individual
+packages.
+
address@hidden Removing Packages, ,Which Packages, Installing Packages
address@hidden  node-name,  next,  previous,  up
address@hidden removing packages
address@hidden deleting packages
address@hidden Removing Packages:
+Because the exact files and their locations contained in a package may
+change it is recommended to remove a package first before installing a
+new version. In order to facilitate removal each package contains an
address@hidden/MANIFEST.pkgname} file which list all the files belonging
+to the package. 
+
+No need to panic, you don't have to go through the
address@hidden/MANIFEST.pkgname} and manually delete the files.  Instead, use
address@hidden package-get-delete-package RET}.
+
+Note that the interactive package tools included with XEmacs already do
+this for you.
+
address@hidden Building Packages, Local.rules File, Installing Packages, 
Packages
address@hidden  node-name,  next,  previous,  up
address@hidden building packages
address@hidden package building
address@hidden Building Packages:
+Currently, source packages are only available via anonymous CVS.  See
address@hidden://cvs.xemacs.org/} for details of checking out the
address@hidden module.
+
address@hidden Prerequisites for Building Source Packages
+
address@hidden @code
address@hidden GNU cp
address@hidden GNU install 
+(or a BSD compatible install program).
address@hidden GNU make 
+(3.75 or later preferred).
address@hidden makeinfo 
+(1.68 from texinfo-3.11 or later required).
address@hidden GNU tar
+(or equivalent).
address@hidden GNU gzip
+(or equivalent).
address@hidden A properly configured @file{Local.rules} file.
address@hidden File}.
address@hidden table
+And of course, XEmacs 21.0 or higher.
+
address@hidden What You Can Do With Source Packages
+
+The packages CVS sources are most useful for creating XEmacs package
+tarballs for installation into your own XEmacs installations or for
+distributing to others.
+
+Supported operations from @file{make} are:
+
address@hidden @code
address@hidden all
+Bytecompile all files, build and bytecompile byproduct files like
address@hidden and @file{custom-load.el}.  Create info version
+of TeXinfo documentation if present.
+
address@hidden bindist
+Does a @code{make all} as well as create a binary package tarball in the
+staging directory.
+
address@hidden install
+Bytecompile all files, build and bytecompile byproduct files like
address@hidden and @file{custom-load.el}.  Create info version
+of TeXinfo documentation if present.  And install everything into the
+staging directory.
+
address@hidden srckit
+Usually aliased to @code{srckit-std}.  This does a @code{make
+distclean} and creates a package source tarball in the staging
+directory.  This is generally only of use for package maintainers.
+
address@hidden binkit
+May be aliased to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
address@hidden, or
address@hidden @code{sourceonly} indicates there is
+nothing to install in a data directory or info directory.
address@hidden indicates that source and info files are to be
+installed.  @code{sourcedata} indicates that source and etc (data) files
+are to be installed.  @code{sourcedatainfo} indicates source, etc
+(data), and info files are to be installed.  A few packages have needs
+beyond the basic templates so this is not yet complete.
+
address@hidden dist
+Runs the rules @code{srckit} followed by @code{binkit}.  This is
+primarily of use by XEmacs maintainers producing files for distribution.
+
address@hidden clean
+Remove all built files except @file{auto-autoloads.el} and 
@file{custom-load.el}.
+
address@hidden distclean
+Remove all created files.
address@hidden table
+
address@hidden Local.rules File, Creating Packages, Building Packages, Packages
address@hidden  node-name,  next,  previous,  up
address@hidden local.rules
address@hidden The Local.rules File:
+This file is used when building and installing packages from source.  In
+the top level of the CVS module, @file{xemacs-packages}, contains the
+file, @file{Local.rules.template}.  Simply copy that to
address@hidden and edit it to suit your needs.
+
+These are the variables in 'Local.rules' that you will need to
+address. 
+
address@hidden @var
address@hidden symlink = 
+Set this to 't' if you want to do a "run in place".
+Setting this doesn't work well with 'make bindist'
+
address@hidden XEMACS_PACKAGES =
+This is where you set the normal packages that you
+want to install. eg:
address@hidden
+      XEMACS_PACKAGES = xemacs-packages/xemacs-base xemacs-packages/bbdb
address@hidden example
+
address@hidden XEMACS_STAGING = address@hidden@}/../Packages
+Set this to where you want normal packages to be
+installed to.
+
address@hidden PACKAGE_INDEX = package-index
+If you want the package-index file to have a different
+name, change this.
+
address@hidden BUILD_WITHOUT_MULE =
+Building from CVS defaults to building the Mule
+packages.  Set this to 't' if you don't want/have Mule
+
address@hidden MULE_PACKAGES =
+Same as for 'XEMACS_PACKAGES' except you list the Mule
+packages you want to install here. eg:
address@hidden
+      MULE_PACKAGES = mule-packages/mule-base mule-packages/skk
address@hidden example
+
address@hidden MULE_STAGING = address@hidden@}/../Mule-Packages
+Set this to where you want Mule packages installed
+to.  Note:  'make bindist' does not use this variable.
+
address@hidden XEMACS = xemacs
+If your XEmacs isn't in your path, change this.
+
address@hidden XEMACS_NATIVE_NT =
+Set this to 't' if you are building on WinNT.
+
address@hidden INSTALL = install -c
+The path to your BSD compatible install program.
+
address@hidden TAR = tar
+The path to your tar program
+
address@hidden BZIP2 =
+If you want bzip2 tarballs, set this.
+
address@hidden MAKEINFO = makeinfo
+The path to your makeinfo program
address@hidden table
+
+
address@hidden Creating Packages, Available Packages, Local.rules File, Packages
address@hidden  node-name,  next,  previous,  up
address@hidden creating packages
address@hidden Creating Packages:
+Creating a package from an existing Lisp library is not very difficult.
+
+In addition to the Lisp libraries themselves, you need a
address@hidden file and a simple @file{Makefile}.  The rest is
+done by @file{XEmacs.rules}, part of the packaging system
+infrastructure.
+
address@hidden contains a single Lisp form like this:
+
address@hidden
+(name                               ; your package's name
+  (standards-version 1.1
+   version VERSION
+   author-version AUTHOR_VERSION
+   date DATE
+   build-date BUILD_DATE
+   maintainer MAINTAINER
+   distribution xemacs              ; change to "mule" if MULE is needed
+   priority high
+   category CATEGORY
+   dump nil
+   description "description"        ; a one-line description string
+   filename FILENAME
+   md5sum MD5SUM
+   size SIZE
+   provides (feature1 feature2)     ; one for every `provides' form
+   requires (REQUIRES)
+   type regular
+))
address@hidden example
+
+You must fill in the four commented lines.  The value of @code{name} is
+the name of your package as an unquoted symbol.  Normally it is the name
+of the main Lisp file or principal feature provided.  The allowed values
+for distribution are @code{xemacs} and @code{mule}.  Write them as
+unquoted symbols.  The @code{description} is a quoted Lisp string; use
+the usual conventions.  The value for @code{provides} is a list of
+feature symbols (written unquoted).  All of the features provided by
+libraries in your package should be elements of this list.  Implementing
+an automatic method for generating the @file{provides} line is
+desirable, but as yet undone.
+
+The variables in upper-case are references to variables set in the
address@hidden or automatically generated.  Do not change them; they
+are automatically filled in by the build process.
+
+The remaining lines refer to implementation constants
+(@code{standards-version}), or features that are unimplemented or have
+been removed (@code{priority} and @code{dump}).  The @code{type} line is
+not normally relevant to external maintainers; the alternate value is
address@hidden, which refers to packages consed up out of a number
+of single-file libraries that are more or less thematically related.  An
+example is @code{prog-modes}.  Single-file packages are basically for
+administrative convenience, and new packages should generally be created
+as regular packages.
+
+The @file{Makefile} is quite stylized.  The idea is similar to an
address@hidden or an @code{automake} file: the complexity is hidden in
+generic rules files, in this case the @file{XEmacs.rules} include file
+in the top directory of the packages hierarchy.  Although a number of
+facilities are available for complex libraries, most simple packages'
address@hidden contain a copyright notice, a few variable definitions,
+an include for @file{XEmacs.rules}, and a couple of standard targets.
+
+The first few @code{make} variables defined are @code{VERSION},
address@hidden, @code{MAINTAINER}, @code{PACKAGE},
address@hidden, @code{REQUIRES}, and @code{CATEGORY}.  All but one were
+described in the description of @file{package-info.in}.  The last is an
+administrative grouping.  Current categories include @code{standard},
+and @code{mule}.
+
+Next, define the variable @code{ELCS}.  This contains the list of the
+byte-compiled Lisp files used by the package.  These files and their
address@hidden versions will be included in the binary package.  If there
+are other files (such as extra Lisp sources or an upstream
address@hidden) that are normally placed in the installed Lisp
+directory, but not byte-compiled, they can be listed as the value of
address@hidden
+
+The include is simply
address@hidden
+include ../../XEmacs.rules
address@hidden example
+
+The standard targets follow.  These are
+
address@hidden
+all:: $(ELCS) auto-autoloads.elc
+
+srckit: srckit-alias
+
+binkit: binkit-alias
address@hidden example
+
+Other targets (such as Texinfo sources) may need to be added as
+dependencies for the @code{all} target.  Dependencies for @code{srckit}
+and @code{binkit} (that is, values for @var{srckit-alias} and
address@hidden) are defined in @file{XEmacs.rules}.  The most useful
+of these values are given in the following table.
+
address@hidden @var
address@hidden srckit-alias
+Usually set to @code{srckit-std}.
+
address@hidden binkit-alias
+May be set to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
address@hidden, or
address@hidden  @code{sourceonly} indicates there is
+nothing to install in a data directory or info directory.
address@hidden indicates that source and info files are to be
+installed.  @code{sourcedata} indicates that source and etc (data) files
+are to be installed.  @code{sourcedatainfo} indicates source, etc
+(data), and info files are to be installed.
address@hidden table
+
+Data files include things like pixmaps for a package-specific toolbar,
+and are normally installed in @file{etc/@var{PACKAGE_NAME}}.  A few
+packages have needs beyond the basic templates.  See @file{XEmacs.rules}
+or a future revision of this manual for details.
+
address@hidden Available Packages,  , Creating Packages, Packages
address@hidden  node-name,  next,  previous,  up
address@hidden available packages
address@hidden packages
address@hidden Available Packages:
+This section lists the Lisp packages that are currently available from
+xemacs.org and it's mirrors.  If a particular package that you are
+looking for isn't here, please send a message to the
address@hidden@@xemacs.org, XEmacs Beta list}.
+
+This data is up to date as of September 22, 2002.
+
address@hidden Normal Packages
+A very broad selection of elisp packages.
+
address@hidden @file
address@hidden Sun
+Support for Sparcworks.
+
address@hidden ada
+Ada language support.
+
address@hidden apel
+A Portable Emacs Library.  Used by XEmacs MIME support.
+
address@hidden auctex
+Basic TeX/LaTeX support.
+
address@hidden bbdb
+The Big Brother Data Base: a rolodex-like database program.
+
address@hidden build
+Build XEmacs using custom widgets.
+
address@hidden c-support
+Basic single-file add-ons for editing C code.
+
address@hidden calc
+Emacs calculator.
+
address@hidden calendar
+Calendar and diary support.
+
address@hidden cc-mode
+C, C++ and Java language support.
+
address@hidden clearcase
+Support for the Clearcase version control system.
+
address@hidden cookie
+"Fortune cookie"-style messages. Includes Spook (suspicious phrases) 
+and Yow (Zippy quotes).
+
address@hidden crisp
+Crisp/Brief emulation.
+
address@hidden debug
+GUD, gdb, dbx debugging support.
+
address@hidden dictionary
+Interface to RFC2229 dictionary servers.
+
address@hidden dired
+The DIRectory EDitor is for manipulating, and running commands on
+files in a directory.
+
address@hidden docbookide
+DocBook editing support.
+
address@hidden ecrypto
+Crypto functionality in Emacs Lisp.
+
address@hidden edebug
+A Lisp debugger.
+
address@hidden ediff
+Interface over patch.
+
address@hidden edit-utils
+Single file lisp packages for various XEmacs goodies.  Load this and
+weed out the junk you don't want.
+
address@hidden edt
+DEC EDIT/EDT emulation.
+
address@hidden efs
+Treat files on remote systems the same as local files.
+
address@hidden eieio
+Enhanced Implementation of Emacs Interpreted Objects.
+
address@hidden elib
+Portable Emacs Lisp utilities library.
+
address@hidden emerge
+Another interface over patch.
+
address@hidden eshell
+Command shell implemented entirely in Emacs Lisp.
+
address@hidden ess
+ESS: Emacs Speaks Statistics.
+
address@hidden eterm
+Terminal emulator.
+
address@hidden eudc
+Emacs Unified Directory Client (LDAP, PH).
+
address@hidden footnote
+Footnoting in mail message editing modes.
+
address@hidden forms
+Forms editing support (obsolete, use the built-in Widget instead).
+
address@hidden fortran-modes
+Fortran language support.
+
address@hidden frame-icon
+Provide a WM icon based on major mode.
+
address@hidden fsf-compat
+GNU Emacs compatibility files.
+
address@hidden games
+Tetris, Sokoban, and Snake.
+
address@hidden gnats
+XEmacs bug reports.
+
address@hidden gnus
+The Gnus Newsreader and Mailreader.
+
address@hidden haskell-mode
+Haskell language support.
+
address@hidden hm--html-menus
+HTML editing.
+
address@hidden ibuffer
+Advanced replacement for buffer-menu.
+
address@hidden idlwave
+Editing and Shell mode for the Interactive Data Language.
+
address@hidden igrep
+Enhanced front-end for Grep.
+
address@hidden ilisp
+Front-end for interacting with Inferior Lisp (external lisps).
+
address@hidden ispell
+Spell-checking with ispell.
+
address@hidden jde
+Java language and development support.
+
address@hidden liece
+IRC (Internet Relay Chat) client for Emacs.
+
address@hidden mail-lib
+Fundamental lisp files for providing email support.
+
address@hidden mailcrypt
+Support for messaging encryption with PGP.
+
address@hidden mew
+Messaging in an Emacs World; a MIME-based email program.
+
address@hidden mh-e
+Front end support for MH.
+
address@hidden mine
+Elisp implementation of the game 'Minehunt'.
+
address@hidden misc-games
+Other amusements and diversions.
+
address@hidden mmm-mode
+Support for Multiple Major Modes within a single buffer.
+
address@hidden net-utils
+Miscellaneous Networking Utilities.  This is a single-file package and 
+files may be deleted at will.
+
address@hidden os-utils
+Miscellaneous single-file O/S utilities, for printing, archiving,
+compression, remote shells, etc.
+
address@hidden ocaml
+Objective Caml language support.
+
address@hidden pc
+PC style interface emulation.
+
address@hidden pcl-cvs
+CVS frontend.
+
address@hidden pcomplete
+Provides programmatic completion.
+
address@hidden perl-modes
+Perl language support.
+
address@hidden prog-modes
+Miscellaneous single-file lisp files for various programming languages.
+
address@hidden ps-print
+Print buffers to PostScript printers.
+
address@hidden psgml
+Validated HTML/SGML editing.
+
address@hidden psgml-dtds
+A collection of DTDs for psgml.  Note that this package is deprecated
+and will be removed in the future, most likely Q2/2003.  Instead of using
+this, you should install needed DTDs yourself.
+
address@hidden python-modes
+Python language support.
+
address@hidden reftex
+Emacs support for LaTeX cross-references, citations.
+
address@hidden rmail
+An obsolete Emacs mailer.  If you do not already use it don't start.
+
address@hidden ruby-modes
+Ruby language support.
+
address@hidden sasl
+Simple Authentication and Security Layer (SASL) library.
+
address@hidden scheme
+Front-end support for Inferior Scheme.
+
address@hidden semantic
+Semantic bovinator.
+
address@hidden sgml
+SGML/Linuxdoc-SGML editing.
+
address@hidden sh-script
+Support for editing shell scripts.
+
address@hidden sieve
+Manage Sieve email filtering scripts.
+
address@hidden slider
+User interface tool.
+
address@hidden sml-mode
+Standard ML editing support.
+
address@hidden sounds-au
+XEmacs Sun sound files.
+
address@hidden sounds-wav
+XEmacs Microsoft sound files.
+
address@hidden speedbar
+Provides a separate frame with convenient references.
+
address@hidden strokes
+Mouse enhancement utility.
+
address@hidden supercite
+An Emacs citation tool.  Useful with all Emacs Mailers and Newsreaders.
+
address@hidden texinfo
+XEmacs TeXinfo support.
+
address@hidden text-modes
+Various single file lisp packages for editing text files.
+
address@hidden textools
+Single-file TeX support.
+
address@hidden time
+Display time & date on the modeline.
+
address@hidden tm
+Emacs MIME support. Not needed for Gnus >= 5.8.0
+
address@hidden tooltalk
+Support for building with Tooltalk.
+
address@hidden tpu
+DEC EDIT/TPU support.
+
address@hidden tramp
+Remote shell-based file editing.  This is similar to EFS or Ange-FTP,
+but works with rsh/ssh and rcp/scp.
+
address@hidden vc
+Version Control for Free systems.
+
address@hidden vc-cc
+Version Control for ClearCase.  This package will shortly be
+replaced with clearcase.el
+
address@hidden vhdl
+Support for VHDL.
+
address@hidden view-process
+A Unix process browsing tool.
+
address@hidden viper
+VI emulation support.
+
address@hidden vm
+An Emacs mailer.
+
address@hidden w3
+A Web browser.
+
address@hidden xemacs-base
+Fundamental XEmacs support.  Install this unless you wish a totally
+naked XEmacs.
+
address@hidden xemacs-devel
+XEmacs Lisp developer support.  This package contains utilities for
+supporting Lisp development.  It is a single-file package so it may be 
+tailored.
+
address@hidden xslide
+XSL editing support.
+
address@hidden xslt-process
+A minor mode for (X)Emacs which allows running an XSLT processor on a
+buffer.
+
address@hidden zenirc
+ZENIRC IRC Client.
address@hidden table
+
address@hidden Mule Support (mule)
+
+MULti-lingual Enhancement.  Support for world scripts such as
+Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc.
+To use these packages your XEmacs must be compiled with Mule
+support.
+
address@hidden @file
address@hidden edict
+Lisp Interface to EDICT, Kanji Dictionary.
+
address@hidden egg-its
+Wnn (4.2 and 6) support.  SJ3 support.  Must be installed prior to
+XEmacs build.
+
address@hidden latin-unity
+Unify character sets in a buffer. When characters belong to disjoint
+character sets, this attempts to translate the characters so
+that they belong to one character set. If the buffer coding system is
+not sufficient, this suggests different coding systems.
+
address@hidden leim
+Quail.  Used for everything other than English and Japanese.
+
address@hidden locale
+Used for localized menubars (French and Japanese) and localized splash
+screens (Japanese).
+
address@hidden lookup
+Dictionary support. (This isn't an English dictionary program)
+
address@hidden mule-base
+Basic Mule support.  Must be installed prior to building with Mule.
+
address@hidden mule-ucs
+Extended coding systems (including Unicode) for XEmacs.
+
address@hidden skk
+Another Japanese Language Input Method.  Can be used without a
+separate process running as a dictionary server.
address@hidden table
+
+
address@hidden Abbrevs, Picture, Running, Top
address@hidden Abbrevs
address@hidden abbrevs
address@hidden expansion (of abbrevs)
+
+  An @dfn{abbrev} is a word which @dfn{expands} into some
+different text.  Abbrevs are defined by the user to expand in specific
+ways.  For example, you might define @samp{foo} as an abbrev expanding to
address@hidden outer otter}.  With this abbrev defined, you would be able to
+get @samp{find outer otter } into the buffer by typing @kbd{f o o @key{SPC}}.
+
address@hidden abbrev-mode
address@hidden abbrev-mode
+  Abbrevs expand only when Abbrev mode (a minor mode) is enabled.
+Disabling Abbrev mode does not cause abbrev definitions to be discarded,
+but they do not expand until Abbrev mode is enabled again.  The command
address@hidden abbrev-mode} toggles Abbrev mode; with a numeric argument, it
+turns Abbrev mode on if the argument is positive, off otherwise.
address@hidden Modes}.  @code{abbrev-mode} is also a variable; Abbrev mode is
+on when the variable is address@hidden  The variable @code{abbrev-mode}
+automatically becomes local to the current buffer when it is set.
+
+  Abbrev definitions can be @dfn{mode-specific}---active only in one major
+mode.  Abbrevs can also have @dfn{global} definitions that are active in
+all major modes.  The same abbrev can have a global definition and various
+mode-specific definitions for different major modes.  A mode-specific
+definition for the current major mode overrides a global definition.
+
+ You can define Abbrevs interactively during an editing session.  You
+can also save lists of abbrev definitions in files and reload them in later
+sessions.  Some users keep extensive lists of abbrevs that they load in
+every session.
+
+  A second kind of abbreviation facility is called the @dfn{dynamic
+expansion}.  Dynamic abbrev expansion happens only when you give an
+explicit command and the result of the expansion depends only on the
+current contents of the buffer.  @xref{Dynamic Abbrevs}.
+
address@hidden
+* Defining Abbrevs::  Defining an abbrev, so it will expand when typed.
+* Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion.
+* Editing Abbrevs::   Viewing or editing the entire list of defined abbrevs.
+* Saving Abbrevs::    Saving the entire list of abbrevs for another session.
+* Dynamic Abbrevs::   Abbreviations for words already in the buffer.
address@hidden menu
+
address@hidden Defining Abbrevs, Expanding Abbrevs, Abbrevs, Abbrevs
address@hidden Defining Abbrevs
+
address@hidden @kbd
address@hidden C-x a g
+Define an abbrev to expand into some text before point
+(@code{add-global-abbrev}).
address@hidden C-x a l
+Similar, but define an abbrev available only in the current major mode
+(@code{add-mode-abbrev}).
address@hidden C-x a i g
+Define a word in the buffer as an abbrev (@code{inverse-add-global-abbrev}).
address@hidden C-x a i l
+Define a word in the buffer as a mode-specific abbrev
+(@code{inverse-add-mode-abbrev}).
address@hidden M-x kill-all-abbrevs
+After this command, no abbrev definitions remain in effect.
address@hidden table
+
address@hidden C-x a g
address@hidden add-global-abbrev
+  The usual way to define an abbrev is to enter the text you want the
+abbrev to expand to, position point after it, and type @kbd{C-x a g}
+(@code{add-global-abbrev}).  This reads the abbrev itself using the
+minibuffer, and then defines it as an abbrev for one or more words
+before point.  Use a numeric argument to say how many words before point
+should be taken as the expansion.  For example, to define the abbrev
address@hidden as in the example above, insert the text @samp{find outer
+otter}, then type @address@hidden 3 C-x a g f o o @key{RET}}.
+
+  An argument of zero to @kbd{C-x a g} means to use the contents of the
+region as the expansion of the abbrev being defined.
+
address@hidden C-x a l
address@hidden add-mode-abbrev
+  The command @kbd{C-x a l} (@code{add-mode-abbrev}) is similar, but
+defines a mode-specific abbrev.  Mode-specific abbrevs are active only in a
+particular major mode.  @kbd{C-x a l} defines an abbrev for the major mode
+in effect at the time @kbd{C-x a l} is typed.  The arguments work the
+same way they do for @kbd{C-x a g}.
+
address@hidden C-x a i g
address@hidden inverse-add-global-abbrev
address@hidden C-x a i l
address@hidden inverse-add-mode-abbrev
+  If the text of an abbrev you want is already in the buffer instead of
+the expansion, use command @kbd{C-x a i g} (@code{inverse-add-global-abbrev})
+instead of @kbd{C-x a g}, or use @kbd{C-x a i l}
+(@code{inverse-add-mode-abbrev}) instead of @kbd{C-x a l}.  These commands
+are called ``inverse'' because they invert the meaning of the argument
+found in the buffer and the argument read using the address@hidden
+
+  To change the definition of an abbrev, just add the new definition.  You
+will be asked to confirm if the abbrev has a prior definition.  To remove
+an abbrev definition, give a negative argument to @kbd{C-x a g} or @kbd{C-x
+a l}.  You must choose the command to specify whether to kill a global
+definition or a mode-specific definition for the current mode, since those
+two definitions are independent for one abbrev.
+
address@hidden kill-all-abbrevs
+  @kbd{M-x kill-all-abbrevs} removes all existing abbrev definitions.
+
address@hidden Expanding Abbrevs, Editing Abbrevs, Defining Abbrevs, Abbrevs
address@hidden Controlling Abbrev Expansion
+
+  An abbrev expands whenever it is in a buffer just before point and you
+type a self-inserting punctuation character (@key{SPC}, comma,
+etc.@:).  Most often an abbrev is used by inserting the abbrev followed
+by punctuation.
+
address@hidden abbrev-all-caps
+  Abbrev expansion preserves case; thus, @samp{foo} expands into @samp{find
+outer otter}, @samp{Foo} into @samp{Find outer otter}, and @samp{FOO} into
address@hidden OUTER OTTER} or @samp{Find Outer Otter} according to the
+variable @code{abbrev-all-caps} (a address@hidden value chooses the first
+of the two expansions)address@hidden
+
+   Two commands are available to control abbrev expansion:
+
address@hidden @kbd
address@hidden M-'
+Separate a prefix from a following abbrev to be expanded
+(@code{abbrev-prefix-mark}).
address@hidden C-x a e
address@hidden expand-abbrev
+Expand the abbrev before point (@code{expand-abbrev}).
+This is effective even when Abbrev mode is not enabled.
address@hidden M-x unexpand-abbrev
+Undo last abbrev expansion.
address@hidden M-x expand-region-abbrevs
+Expand some or all abbrevs found in the region.
address@hidden table
+
address@hidden M-'
address@hidden abbrev-prefix-mark
+  You may wish to expand an abbrev with a prefix attached.  For example,
+if @samp{cnst} expands into @samp{construction}, you may want to use it
+to enter @samp{reconstruction}.  It does not work to type @kbd{recnst},
+because that is not necessarily a defined abbrev.  Instead, you can use
+the command @kbd{M-'} (@code{abbrev-prefix-mark}) between the prefix
address@hidden and the abbrev @samp{cnst}.  First, insert @samp{re}.  Then
+type @kbd{M-'}; this inserts a minus sign in the buffer to indicate that
+it has done its work.  Then insert the abbrev @samp{cnst}.  The buffer
+now contains @samp{re-cnst}.  Now insert a punctuation character to
+expand the abbrev @samp{cnst} into @samp{construction}.  The minus sign
+is deleted at this point by @kbd{M-'}.  The resulting text is the
+desired @address@hidden
+
+  If you actually want the text of the abbrev in the buffer, rather than
+its expansion, insert the following punctuation with @kbd{C-q}.  Thus,
address@hidden C-q -} leaves @samp{foo-} in the buffer.
+
address@hidden unexpand-abbrev
+  If you expand an abbrev by mistake, you can undo the expansion (replace
+the expansion by the original abbrev text) with @kbd{M-x unexpand-abbrev}.
+You can also use @kbd{C-_} (@code{undo}) to undo the expansion; but that
+will first undo the insertion of the punctuation character.
+
address@hidden expand-region-abbrevs
+  @kbd{M-x expand-region-abbrevs} searches through the region for defined
+abbrevs, and  offers to replace each one it finds with its expansion.
+This command is useful if you have typed text using abbrevs but forgot
+to turn on Abbrev mode first.  It may also be useful together with a
+special set of abbrev definitions for making several global replacements at
+once.  The command is effective even if Abbrev mode is not enabled.
+
address@hidden Editing Abbrevs, Saving Abbrevs, Expanding Abbrevs, Abbrevs
address@hidden Examining and Editing Abbrevs
+
address@hidden @kbd
address@hidden M-x list-abbrevs
+Print a list of all abbrev definitions.
address@hidden M-x edit-abbrevs
+Edit a list of abbrevs; you can add, alter, or remove definitions.
address@hidden table
+
address@hidden list-abbrevs
+  The output from @kbd{M-x list-abbrevs} looks like this:
+
address@hidden
+(lisp-mode-abbrev-table)
+"dk"           0    "define-key"
+(global-abbrev-table)
+"dfn"          0    "definition"
address@hidden example
+
address@hidden
+(Some blank lines of no semantic significance, and some other abbrev
+tables, have been omitted.)
+
+  A line containing a name in parentheses is the header for abbrevs in a
+particular abbrev table; @code{global-abbrev-table} contains all the global
+abbrevs, and the other abbrev tables that are named after major modes
+contain the mode-specific abbrevs.
+
+  Within each abbrev table, each non-blank line defines one abbrev.  The
+word at the beginning is the abbrev.  The number that appears is the number
+of times the abbrev has been expanded.  Emacs keeps track of this to help
+you see which abbrevs you actually use, in case you want to eliminate
+those that you don't use often.  The string at the end of the line is the
+expansion.
+
address@hidden edit-abbrevs
address@hidden C-c C-c (Edit Abbrevs)
address@hidden edit-abbrevs-redefine
+  @kbd{M-x edit-abbrevs} allows you to add, change or kill abbrev
+definitions by editing a list of them in an Emacs buffer.  The list has
+the format described above.  The buffer of abbrevs is called
address@hidden, and is in Edit-Abbrevs mode.  This mode redefines the
+key @kbd{C-c C-c} to install the abbrev definitions as specified in the
+buffer.  The  @code{edit-abbrevs-redefine} command does this.
+Any abbrevs not described in the buffer are eliminated when this is
+done.
+
+  @code{edit-abbrevs} is actually the same as @code{list-abbrevs}, except
+that it selects the buffer @samp{*Abbrevs*} whereas @code{list-abbrevs}
+merely displays it in another window.
+
address@hidden Saving Abbrevs, Dynamic Abbrevs, Editing Abbrevs, Abbrevs
address@hidden Saving Abbrevs
+
+  These commands allow you to keep abbrev definitions between editing
+sessions.
+
address@hidden @kbd
address@hidden M-x write-abbrev-file
+Write a file describing all defined abbrevs.
address@hidden M-x read-abbrev-file
+Read such an abbrev file and define abbrevs as specified there.
address@hidden M-x quietly-read-abbrev-file
+Similar, but do not display a message about what is going on.
address@hidden M-x define-abbrevs
+Define abbrevs from buffer.
address@hidden M-x insert-abbrevs
+Insert all abbrevs and their expansions into the buffer.
address@hidden table
+
address@hidden write-abbrev-file
+  Use @kbd{M-x write-abbrev-file} to save abbrev definitions for use in
+a later session.  The command reads a file name using the minibuffer and
+writes a description of all current abbrev definitions into the
+specified file.  The text stored in the file looks like the output of
address@hidden list-abbrevs}.
+
+
address@hidden read-abbrev-file
address@hidden quietly-read-abbrev-file
address@hidden abbrev-file-name
+  @kbd{M-x read-abbrev-file} prompts for a file name using the
+minibuffer and reads the specified file, defining abbrevs according to
+its contents.  @kbd{M-x quietly-read-abbrev-file} is the same but does
+not display a message in the echo area; it is actually useful primarily
+in the init file.  @xref{Init File}. If you give an empty argument to
+either of these functions, the file name Emacs uses is the value of the
+variable @code{abbrev-file-name}, which is by default
address@hidden"~/.abbrev_defs"}.
+
address@hidden save-abbrevs
+  Emacs offers to save abbrevs automatically if you have changed any of
+them, whenever it offers to save all files (for @kbd{C-x s} or @kbd{C-x
+C-c}).  Set the variable @code{save-abbrevs} to @code{nil} to inhibit
+this feature.
+
address@hidden insert-abbrevs
address@hidden define-abbrevs
+  The commands @kbd{M-x insert-abbrevs} and @kbd{M-x define-abbrevs} are
+similar to the previous commands but work on text in an Emacs buffer.
address@hidden insert-abbrevs} inserts text into the current buffer before 
point,
+describing all current abbrev definitions; @kbd{M-x define-abbrevs} parses
+the entire current buffer and defines abbrevs address@hidden
+
address@hidden Dynamic Abbrevs,, Saving Abbrevs, Abbrevs
address@hidden Dynamic Abbrev Expansion
+
+  The abbrev facility described above operates automatically as you insert
+text, but all abbrevs must be defined explicitly.  By contrast,
address@hidden abbrevs} allow the meanings of abbrevs to be determined
+automatically from the contents of the buffer, but dynamic abbrev expansion
+happens only when you request it explicitly.
+
address@hidden M-/
address@hidden dabbrev-expand
address@hidden @kbd
address@hidden M-/
+Expand the word in the buffer before point as a @dfn{dynamic abbrev},
+by searching in the buffer for words starting with that abbreviation
+(@code{dabbrev-expand}).
address@hidden table
+
+  For example, if the buffer contains @samp{does this follow } and you type
address@hidden o M-/}, the effect is to insert @samp{follow} because that is the
+last word in the buffer that starts with @samp{fo}.  A numeric argument to
address@hidden/} says to take the second, third, etc.@: distinct expansion found
+looking backward from point.  Repeating @kbd{M-/} searches for an
+alternative expansion by looking farther back.  After the entire buffer
+before point has been considered, the buffer after point is searched.
+
+  Dynamic abbrev expansion is completely independent of Abbrev mode; the
+expansion of a word with @kbd{M-/} is completely independent of whether it
+has a definition as an ordinary abbrev.
+
address@hidden Picture, Sending Mail, Abbrevs, Top
address@hidden Editing Pictures
address@hidden pictures
address@hidden edit-picture
+
+  If you want to create a picture made out of text characters (for example,
+a picture of the division of a register into fields, as a comment in a
+program), use the command @code{edit-picture} to enter Picture mode.
+
+  In Picture mode, editing is based on the @dfn{quarter-plane} model of
+text.  In this model, the text characters lie studded on an area that
+stretches infinitely far to the right and downward.  The concept of the end
+of a line does not exist in this model; the most you can say is where the
+last non-blank character on the line is found.
+
+  Of course, Emacs really always considers text as a sequence of
+characters, and lines really do have ends.  But in Picture mode most
+frequently-used keys are rebound to commands that simulate the
+quarter-plane model of text.  They do this by inserting spaces or by
+converting tabs to spaces.
+
+  Most of the basic editing commands of Emacs are redefined by Picture mode
+to do essentially the same thing but in a quarter-plane way.  In addition,
+Picture mode defines various keys starting with the @kbd{C-c} prefix to
+run special picture editing commands.
+
+  One of these keys, @kbd{C-c C-c}, is pretty important.  Often a picture
+is part of a larger file that is usually edited in some other major mode.
address@hidden edit-picture} records the name of the previous major mode. 
+You can then use the @kbd{C-c C-c} command (@code{picture-mode-exit}) to
+restore that mode.  @kbd{C-c C-c} also deletes spaces from the ends of
+lines, unless you give it a numeric argument.
+
+  The commands used in Picture mode all work in other modes (provided the
address@hidden library is loaded), but are only  bound to keys in
+Picture mode.  Note that the descriptions below talk of moving ``one
+column'' and so on, but all the picture mode commands handle numeric
+arguments as their normal equivalents do.
+
address@hidden picture-mode-hook
+  Turning on Picture mode calls the value of the variable
address@hidden as a function, with no arguments, if that value
+exists and is address@hidden
+
address@hidden
+* Basic Picture::         Basic concepts and simple commands of Picture Mode.
+* Insert in Picture::     Controlling direction of cursor motion
+                           after "self-inserting" characters.
+* Tabs in Picture::       Various features for tab stops and indentation.
+* Rectangles in Picture:: Clearing and superimposing rectangles.
address@hidden menu
+
address@hidden Basic Picture, Insert in Picture, Picture, Picture
address@hidden Basic Editing in Picture Mode
+
address@hidden picture-forward-column
address@hidden picture-backward-column
address@hidden picture-move-down
address@hidden picture-move-up
+  Most keys do the same thing in Picture mode that they usually do, but do
+it in a quarter-plane style.  For example, @kbd{C-f} is rebound to run
address@hidden, which moves point one column to
+the right, by inserting a space if necessary, so that the actual end of the
+line makes no difference.  @kbd{C-b} is rebound to run
address@hidden, which always moves point left one column,
+converting a tab to multiple spaces if necessary.  @kbd{C-n} and @kbd{C-p}
+are rebound to run @code{picture-move-down} and @code{picture-move-up},
+which can either insert spaces or convert tabs as necessary to make sure
+that point stays in exactly the same column.  @kbd{C-e} runs
address@hidden, which moves to after the last non-blank
+character on the line.  There was no need to change @kbd{C-a}, as the choice
+of screen model does not affect beginnings of address@hidden
+
address@hidden picture-newline
+  Insertion of text is adapted to the quarter-plane screen model through
+the use of Overwrite mode (@pxref{Minor Modes}).  Self-inserting characters
+replace existing text, column by column, rather than pushing existing text
+to the right.  @key{RET} runs @code{picture-newline}, which just moves to
+the beginning of the following line so that new text will replace that
+line.
+
address@hidden picture-backward-clear-column
address@hidden picture-clear-column
address@hidden picture-clear-line
+  Text is erased instead of deleted and killed.  @key{DEL}
+(@code{picture-backward-clear-column}) replaces the preceding character
+with a space rather than removing it.  @kbd{C-d}
+(@code{picture-clear-column}) does the same in a forward direction.
address@hidden (@code{picture-clear-line}) really kills the contents of lines,
+but never removes the newlines from a address@hidden
+
address@hidden picture-open-line
+  To do actual insertion, you must use special commands.  @kbd{C-o}
+(@code{picture-open-line}) creates a blank line, but does so after
+the current line; it never splits a line.  @kbd{C-M-o}, @code{split-line},
+makes sense in Picture mode, so it remains unchanged.  @key{LFD}
+(@code{picture-duplicate-line}) inserts another line
+with the same contents below the current address@hidden
+
address@hidden C-c C-d (Picture mode)
address@hidden delete-char
+ 
+  To actually delete parts of the picture, use @kbd{C-w}, or with
address@hidden C-d} (which is defined as @code{delete-char}, as @kbd{C-d} is
+in other modes), or with one of the picture rectangle commands
+(@pxref{Rectangles in Picture}).
+
address@hidden Insert in Picture, Tabs in Picture, Basic Picture, Picture
address@hidden Controlling Motion After Insert
+
address@hidden picture-movement-up
address@hidden picture-movement-down
address@hidden picture-movement-left
address@hidden picture-movement-right
address@hidden picture-movement-nw
address@hidden picture-movement-ne
address@hidden picture-movement-sw
address@hidden picture-movement-se
address@hidden C-c < (Picture mode)
address@hidden C-c > (Picture mode)
address@hidden C-c ^ (Picture mode)
address@hidden C-c . (Picture mode)
address@hidden C-c ` (Picture mode)
address@hidden C-c ' (Picture mode)
address@hidden C-c / (Picture mode)
address@hidden C-c \ (Picture mode)
+  Since ``self-inserting'' characters just overwrite and move point in
+Picture mode, there is no essential restriction on how point should be
+moved.  Normally point moves right, but you can specify any of the eight
+orthogonal or diagonal directions for motion after a ``self-inserting''
+character.  This is useful for drawing lines in the buffer.
+
address@hidden @kbd
address@hidden C-c <
+Move left after insertion (@code{picture-movement-left}).
address@hidden C-c >
+Move right after insertion (@code{picture-movement-right}).
address@hidden C-c ^
+Move up after insertion (@code{picture-movement-up}).
address@hidden C-c .
+Move down after insertion (@code{picture-movement-down}).
address@hidden C-c `
+Move up and left (``northwest'') after insertion 
@*(@code{picture-movement-nw}).
address@hidden C-c '
+Move up and right (``northeast'') after insertion @*
+(@code{picture-movement-ne}).
address@hidden C-c /
+Move down and left (``southwest'') after insertion
address@hidden(@code{picture-movement-sw}).
address@hidden C-c \
+Move down and right (``southeast'') after insertion
address@hidden(@code{picture-movement-se}).
address@hidden table
+
address@hidden C-c C-f (Picture mode)
address@hidden C-c C-b (Picture mode)
address@hidden picture-motion
address@hidden picture-motion-reverse
+  Two motion commands move based on the current Picture insertion
+direction.  The command @kbd{C-c C-f} (@code{picture-motion}) moves in the
+same direction as motion after ``insertion'' currently does, while @kbd{C-c
+C-b} (@code{picture-motion-reverse}) moves in the opposite direction.
+
address@hidden Tabs in Picture, Rectangles in Picture, Insert in Picture, 
Picture
address@hidden Picture Mode Tabs
+ 
address@hidden M-TAB
address@hidden picture-tab-search
address@hidden picture-tab-chars
+  Two kinds of tab-like action are provided in Picture mode.
+Context-based tabbing is done with @address@hidden
+(@code{picture-tab-search}).  With no argument, it moves to a point
+underneath the next ``interesting'' character that follows whitespace in
+the previous non-blank line.  ``Next'' here means ``appearing at a
+horizontal position greater than the one point starts out at''.  With an
+argument, as in @kbd{C-u address@hidden, the command moves to the next such
+interesting character in the current line.  @address@hidden does not
+change the text; it only moves point.  ``Interesting'' characters are
+defined by the variable @code{picture-tab-chars}, which contains a string
+of characters considered interesting.  Its default value is
address@hidden"!-~"address@hidden
+
address@hidden picture-tab
+  @key{TAB} itself runs @code{picture-tab}, which operates based on the
+current tab stop settings; it is the Picture mode equivalent of
address@hidden  Without arguments it just moves point, but with
+a numeric argument it clears the text that it moves over.
+
address@hidden C-c TAB (Picture mode)
address@hidden picture-set-tab-stops
+  The context-based and tab-stop-based forms of tabbing are brought
+together by the command @kbd{C-c @key{TAB}} (@code{picture-set-tab-stops}.)
+This command sets the tab stops to the positions which @address@hidden
+would consider significant in the current line.  If you use this command
+with @key{TAB}, you can get the effect of context-based tabbing.  But
address@hidden@key{TAB}} is more convenient in the cases where it is sufficient.
+
address@hidden Rectangles in Picture,, Tabs in Picture, Picture
address@hidden Picture Mode Rectangle Commands
address@hidden rectangle
+
+  Picture mode defines commands for working on rectangular pieces of the
+text in ways that fit with the quarter-plane model.  The standard rectangle
+commands may also be useful (@pxref{Rectangles}).
+
address@hidden @kbd
address@hidden C-c C-k
+Clear out the region-rectangle (@code{picture-clear-rectangle}).  With
+argument, kill it.
address@hidden C-c C-w @var{r}
+Similar but save rectangle contents in register @var{r} first
+(@code{picture-clear-rectangle-to-register}).
address@hidden C-c C-y
+Copy last killed rectangle into the buffer by overwriting, with upper
+left corner at point (@code{picture-yank-rectangle}).  With argument,
+insert instead.
address@hidden C-c C-x @var{r}
+Similar, but use the rectangle in register @address@hidden
+(@code{picture-yank-rectangle-from-register}).
address@hidden table
+
address@hidden C-c C-k (Picture mode)
address@hidden C-c C-w (Picture mode)
address@hidden picture-clear-rectangle
address@hidden picture-clear-rectangle-to-register
+  The picture rectangle commands @kbd{C-c C-k}
+(@code{picture-clear-rectangle}) and @kbd{C-c C-w}
+(@code{picture-clear-rectangle-to-register}) differ from the standard
+rectangle commands in that they normally clear the rectangle instead of
+deleting it; this is analogous with the way @kbd{C-d} is changed in Picture
address@hidden
+
+  However, deletion of rectangles can be useful in Picture mode, so these
+commands delete the rectangle if given a numeric argument.
+
address@hidden C-c C-y (Picture mode)
address@hidden C-c C-x (Picture mode)
address@hidden picture-yank-rectangle
address@hidden picture-yank-rectangle-from-register
+  The Picture mode commands for yanking rectangles differ from the standard
+ones in overwriting instead of inserting.  This is the same way that
+Picture mode insertion of other text is different from other modes.
address@hidden C-y} (@code{picture-yank-rectangle}) inserts (by overwriting) the
+rectangle that was most recently killed, while @kbd{C-c C-x}
+(@code{picture-yank-rectangle-from-register}) does for the
+rectangle found in a specified register.
+
+Since most region commands in Picture mode operate on rectangles, when you
+select a region of text with the mouse in Picture mode, it is highlighted
+as a rectangle.
+
address@hidden Sending Mail, Reading Mail, Picture, Top
address@hidden Sending Mail
address@hidden mail
address@hidden message
+
+  To send a message in Emacs, start by typing the command (@kbd{C-x m})
+to select and initialize the @samp{*mail*} buffer.  You can then edit the text
+and headers of the message in the mail buffer, and type the command
+(@kbd{C-c C-c}) to send the message.
+
address@hidden @kbd
address@hidden C-x m
+Begin composing a message to send (@code{mail}).
address@hidden C-x 4 m
+Likewise, but display the message in another window
+(@code{mail-other-window}).
address@hidden C-c C-c
+In Mail mode, send the message and switch to another buffer
+(@code{mail-send-and-exit}).
address@hidden table
+
address@hidden C-x m
address@hidden mail
address@hidden C-x 4 m
address@hidden mail-other-window
+  The command @kbd{C-x m} (@code{mail}) selects a buffer named
address@hidden and initializes it with the skeleton of an outgoing message.
address@hidden 4 m} (@code{mail-other-window}) selects the @samp{*mail*} buffer
+in a different window, leaving the previous current buffer address@hidden
+
+  Because the buffer for mail composition is an ordinary Emacs buffer, you can
+switch to other buffers while in the middle of composing mail, and switch
+back later (or never).  If you use the @kbd{C-x m} command again when you
+have been composing another message but have not sent it, a new mail
+buffer will be created; in this way, you can compose multiple messages
+at once.  You can switch back to and complete an unsent message by using
+the normal buffer selection mechanisms.  
+
address@hidden C-x m} is another way to switch back to a message in progress:
+it will search for an existing, unsent mail message buffer and select it.
+
address@hidden
+* Format: Mail Format.    Format of the mail being composed.
+* Headers: Mail Headers.  Details of allowed mail header fields.
+* Mode: Mail Mode.        Special commands for editing mail being composed.
address@hidden menu
+
address@hidden Mail Format, Mail Headers, Sending Mail, Sending Mail
address@hidden The Format of the Mail Buffer
+
+  In addition to the @dfn{text} or contents, a message has @dfn{header
+fields}, which say who sent it, when, to whom, why, and so on.  Some header
+fields, such as the date and sender, are created automatically after the
+message is sent.  Others, such as the recipient names, must be specified by
+you in order to send the message properly.
+
+  Mail mode provides a few commands to help you edit some header fields,
+and some are preinitialized in the buffer automatically at times.  You can
+insert or edit any header fields using ordinary editing commands.
+
+  The line in the buffer that says:
+
address@hidden
+--text follows this line--
address@hidden example
+
address@hidden mail-header-separator
address@hidden
+is a special delimiter that separates the headers you have specified from
+the text.  Whatever follows this line is the text of the message; the
+headers precede it.  The delimiter line itself does not appear in the
+message actually sent.  The text used for the delimiter line is controlled
+by the variable @code{mail-header-separator}.
+
+Here is an example of what the headers and text in the @samp{*mail*} buffer
+might look like.
+
address@hidden
+To: rms@@mc
+CC: mly@@mc, rg@@oz
+Subject: The XEmacs User's Manual
+--Text follows this line--
+Please ignore this message.
address@hidden example
+
address@hidden Mail Headers, Mail Mode, Mail Format, Sending Mail
address@hidden Mail Header Fields
address@hidden headers (of mail message)
+
+  There are several header fields you can use in the @samp{*mail*} buffer.
+Each header field starts with a field name at the beginning of a line,
+terminated by a colon.  It does not matter whether you use upper or lower
+case in the field name.  After the colon and optional whitespace comes the
+contents of the field.
+
address@hidden @samp
address@hidden To
+This field contains the mailing addresses of the message.
+
address@hidden Subject
+The contents of the @samp{Subject} field should be a piece of text that
+says what the message is about.  Subject fields are useful because most
+mail-reading programs can provide a summary of messages, listing the
+subject of each message but not its text.
+
address@hidden CC
+This field contains additional mailing addresses to send the message
+to, but whose readers should not regard the message as addressed to
+them.
+
address@hidden BCC
+This field contains additional mailing addresses to send the message
+to, but which should not appear in the header of the message actually
+sent.
+
address@hidden FCC
+This field contains the name of one file (in Unix mail file format) to
+which a copy of the message should be appended when the message is
+sent.
+
address@hidden From
+Use the @samp{From} field to say who you are, when the account you are
+using to send the mail is not your own.  The contents of the
address@hidden field should be a valid mailing address, since replies
+will normally go there.
+
address@hidden Reply-To
+Use the @samp{Reply-To} field to direct replies to a different
+address, not your own. @samp{From} and
address@hidden have the same effect on where replies go, but they convey a
+different meaning to the person who reads the message.
+
address@hidden In-Reply-To
+This field contains a piece of text describing a message you are
+replying to.  Some mail systems can use the information to correlate
+related pieces of mail.  This field is normally filled in by your mail
+handling package when you are replying to a message and you never need
+to think about it.
address@hidden table
+
address@hidden
+The @samp{To}, @samp{CC}, @samp{BCC} and @samp{FCC} fields can appear
+any number of times, to specify many places to send the message.
+
address@hidden
+The @samp{To}, @samp{CC}, and @samp{BCC}, fields can have continuation
+lines.  All the lines starting with whitespace, following the line on
+which the field starts, are considered part of the field.  For
+example,@refill
+
address@hidden
+To: foo@@here, this@@there,
+  me@@gnu.cambridge.mass.usa.earth.spiral3281
address@hidden example
+
address@hidden
address@hidden mail-abbrev-mailrc-file
+If you have a @file{~/.mailrc} file, Emacs scans it for mail aliases the
+first time you try to send mail in an Emacs session.  Emacs expands
+aliases found in the @samp{To}, @samp{CC}, and @samp{BCC} fields where
+appropriate. You can set the variable @code{mail-abbrev-mailrc-file} to
+the name of the file with mail aliases.  If @code{nil}, @file{~/.mailrc}
+is used.
+
address@hidden .mailrc file
+Your @file{.mailrc} file ensures that word-abbrevs are defined for each
+of your mail aliases when point is in a @samp{To}, @samp{CC},
address@hidden, or @samp{From} field.  The aliases are defined in your
address@hidden file or in a file specified by the @b{MAILRC}
+environment variable if it exists.  Your mail aliases expand any time
+you type a word-delimiter at the end of an abbreviation.
+
+In this version of Emacs, what you see is what you get: in contrast to
+some other versions, no abbreviations are expanded after you have sent the
+mail.  This means you don't suffer the annoyance of having the system do
+things behind your back---if the system rewrites an address you typed,
+you know it immediately, instead of after the mail has been sent and
+it's too late to do anything about it.  For example, you will never
+again be in trouble because you forgot to delete an old alias from your
address@hidden and a new local user is given a userid which conflicts
+with one of your aliases.
+
address@hidden mail-abbrev-mode-regexp 
+Your mail alias abbrevs are in effect only when point is in an
+appropriate header field. The mail aliases will not expand in the body
+of the message, or in other header fields.  The default mode-specific
+abbrev table @code{mail-mode-abbrev-table} is used instead if defined.
+That means if you have been using mail-mode specific abbrevs, this code
+will not adversely affect you.  You can control which header fields the
+abbrevs are used in by changing the variable @code{mail-abbrev-mode-regexp}.
+
+If auto-fill mode is on, abbrevs wrap at commas instead of at word
+boundaries, and header continuation lines will be properly indented.
+
address@hidden mail-interactive-insert-alias
+You can also insert a mail alias with @code{mail-interactive-insert-alias}.
+This function, which is bound to @kbd{C-c C-a}, prompts you for an alias
+(with completion) and inserts its expansion at point.
+
+In this version of Emacs, it is possible to have lines like the
+following in your @file{.mailrc} file:
+
address@hidden
+     alias someone "John Doe <doe@@quux.com>"
address@hidden example
+
+That is, if you want an address to have embedded spaces, simply surround
+it with double-quotes.  The quotes are necessary because the format of
+the @file{.mailrc} file uses spaces as address delimiters.  
+
+Aliases in the @file{.mailrc} file may be nested. For example, assume
+you define aliases like:
address@hidden
+     alias group1 fred ethel
+     alias group2 larry curly moe
+     alias everybody group1 group2
address@hidden example
+
+When you now type @samp{everybody} on the @samp{To} line, it will expand to:
address@hidden
+     fred, ethyl, larry, curly, moe
address@hidden example
+
+Aliases may contain forward references; the alias of @samp{everybody} in the
+example above can precede the aliases of @samp{group1} and @samp{group2}.
+
+In this version of Emacs, you can use the @code{source} @file{.mailrc} command
+for reading aliases from some other file as well.
+
+Aliases may contain hyphens, as in @code{"alias foo-bar foo@@bar"}, even
+though word-abbrevs normally cannot contain hyphens.
+
+To read in the contents of another @file{.mailrc}-type file from Emacs, use the
+command @code{M-x merge-mail-aliases}.  The @code{rebuild-mail-aliases}
+command is similar, but deletes existing aliases first.
+
address@hidden mail-alias-separator-string
+If you want multiple addresses separated by a string other than @samp{,}
+(a comma), then set the variable @code{mail-alias-separator-string} to
+it.  This has to be a comma bracketed by whitespace if you want any kind
+ of reasonable behavior.
+
address@hidden mail-archive-file-name
+  If the variable @code{mail-archive-file-name} is address@hidden, it
+should be a string naming a file.  Each time you start to edit a message
+to send, an @samp{FCC} field is entered for that file.  Unless you
+remove the @samp{FCC} field, every message is written into that
+file when it is sent.
+
address@hidden Mail Mode,, Mail Headers, Sending Mail
address@hidden Mail Mode
+
+  The major mode used in the @samp{*mail*} buffer is Mail mode.  Mail
+mode is similar to Text mode, but several commands are provided on
+the @kbd{C-c} prefix.  These commands all deal specifically with
+editing or sending the message.
+
address@hidden @kbd
address@hidden C-c C-s
+Send the message, and leave the @samp{*mail*} buffer selected
+(@code{mail-send}).
address@hidden C-c C-c
+Send the message, and select some other buffer (@code{mail-send-and-exit}).
address@hidden C-c C-f C-t
+Move to the @samp{To} header field, creating one if there is none
+(@code{mail-to}).
address@hidden C-c C-f C-s
+Move to the @samp{Subject} header field, creating one if there is
+none (@code{mail-subject}).
address@hidden C-c C-f C-c
+Move to the @samp{CC} header field, creating one if there is none
+(@code{mail-cc}).
address@hidden C-c C-w
+Insert the file @file{~/.signature} at the end of the message text
+(@code{mail-signature}).
address@hidden C-c C-y
+Yank the selected message (@code{mail-yank-original}).
address@hidden C-c C-q
+Fill all paragraphs of yanked old messages, each individually
+(@code{mail-fill-yanked-message}).
address@hidden @key{button3}
+Pops up a menu of useful mail-mode commands.
address@hidden table
+
address@hidden C-c C-s (Mail mode)
address@hidden C-c C-c (Mail mode)
address@hidden mail-send
address@hidden mail-send-and-exit
+  There are two ways to send a message.  @kbd{C-c C-c}
+(@code{mail-send-and-exit}) is the usual way to send the message.  It
+sends the message and then deletes the window (if there is another
+window) or switches to another buffer.  It puts the @samp{*mail*} buffer
+at the lowest priority for automatic reselection, since you are finished
+with using it.  @kbd{C-c C-s} (@code{mail-send}) sends the
+message and marks the @samp{*mail*} buffer unmodified, but leaves that
+buffer selected so that you can modify the message (perhaps with new
+recipients) and send it again.
+
address@hidden C-c C-f C-t (Mail mode)
address@hidden mail-to
address@hidden C-c C-f C-s (Mail mode)
address@hidden mail-subject
address@hidden C-c C-f C-c (Mail mode)
address@hidden mail-cc
+  Mail mode provides some other special commands that are useful for
+editing the headers and text of the message before you send it.  There are
+three commands defined to move point to particular header fields, all based
+on the prefix @kbd{C-c C-f} (@samp{C-f} is for ``field'').  They are
address@hidden C-f C-t} (@code{mail-to}) to move to the @samp{To} field, 
@kbd{C-c
+C-f C-s} (@code{mail-subject}) for the @samp{Subject} field, and @kbd{C-c
+C-f C-c} (@code{mail-cc}) for the @samp{CC} field.  These fields have
+special motion commands because they are edited most frequently. 
+
+
address@hidden C-c C-w (Mail mode)
address@hidden mail-signature
+  @kbd{C-c C-w} (@code{mail-signature}) adds a standard piece of text at
+the end of the message to say more about who you are.  The text comes
+from the file @file{.signature} in your home directory.
+
address@hidden C-c C-y (Mail mode)
address@hidden mail-yank-original
+  When you use an Rmail command to send mail from the Rmail mail reader,
+you can use @kbd{C-c C-y} @code{mail-yank-original} inside the
address@hidden buffer to insert the
+text of the message you are replying to.  Normally Rmail indents each line
+of that message four spaces and eliminates most header fields.  A
+numeric argument specifies the number of spaces to indent.  An argument
+of just @kbd{C-u} says not to indent at all and not to eliminate
+anything.  @kbd{C-c C-y} always uses the current message from the
address@hidden buffer, so you can insert several old messages by selecting
+one in @samp{RMAIL}, switching to @samp{*mail*} and yanking it, then
+switching back to @samp{RMAIL} to select address@hidden
+
address@hidden C-c C-q (Mail mode)
address@hidden mail-fill-yanked-message
+  After using @kbd{C-c C-y}, you can use the command @kbd{C-c C-q}
+(@code{mail-fill-yanked-message}) to fill the paragraphs of the yanked
+old message or messages.  One use of @kbd{C-c C-q} fills all such
+paragraphs, each one separately.
+
+  Clicking the right mouse button in a mail buffer pops up a menu of
+the above commands, for easy access.
+
address@hidden mail-mode-hook
+  Turning on Mail mode (which @kbd{C-x m} does automatically) calls the
+value of @code{text-mode-hook}, if it is not void or @code{nil}, and
+then calls the value of @code{mail-mode-hook} if that is not void or
address@hidden
+
address@hidden Reading Mail, Calendar/Diary, Sending Mail, Top
address@hidden Reading Mail
address@hidden mail
address@hidden message
+
+XEmacs provides three separate mail-reading packages.  Each one comes with
+its own manual, which is included standard with the XEmacs distribution.
+
+The recommended mail-reading package for new users is VM.  VM works
+with standard Unix-mail-format folders and was designed as a replacement
+for the older Rmail.
+
+XEmacs also provides a sophisticated and comfortable front-end to the
+MH mail-processing system, called @samp{mh-e}.  Unlike in other
+mail programs, folders in MH are stored as file-system directories,
+with each message occupying one (numbered) file.  This facilitates
+working with mail using shell commands, and many other features of
+MH are also designed to integrate well with the shell and with
+shell scripts.  Keep in mind, however, that in order to use mh-e
+you must have the MH mail-processing system installed on your
+computer.
+
+Finally, XEmacs provides the Rmail package.  Rmail is (currently) the
+only mail reading package distributed with FSF GNU Emacs, and is
+powerful in its own right.  However, it stores mail folders in a special
+format called @samp{Babyl}, that is incompatible with all other
+frequently-used mail programs.  A utility program is provided for
+converting Babyl folders to standard Unix-mail format; however, unless
+you already have mail in Babyl-format folders, you should consider
+using VM or mh-e instead. (If at times you have to use FSF Emacs, it
+is not hard to obtain and install VM for that editor.)
address@hidden Calendar/Diary, Sorting, Reading Mail, Top
address@hidden Calendar Mode and the Diary
address@hidden calendar
address@hidden calendar
+
+  Emacs provides the functions of a desk calendar, with a diary of
+planned or past events.  To enter the calendar, type @kbd{M-x calendar};
+this displays a three-month calendar centered on the current month, with
+point on the current date.  With a numeric argument, as in @kbd{C-u M-x
+calendar}, it prompts you for the month and year to be the center of the
+three-month calendar.  The calendar uses its own buffer, whose major
+mode is Calendar mode.
+
+  @kbd{Button2} in the calendar brings up a menu of operations on a
+particular date; @kbd{Buttons3} brings up a menu of commonly used
+calendar features that are independent of any particular date.  To exit
+the calendar, type @kbd{q}.  @xref{Calendar, Customizing the Calendar
+and Diary,, lispref, The XEmacs Lisp Reference Manual}, for customization
+information about the calendar and diary.
+ 
address@hidden
+* Calendar Motion::        Moving through the calendar; selecting a date.
+* Scroll Calendar::        Bringing earlier or later months onto the screen.
+* Mark and Region::        Remembering dates, the mark ring.
+* General Calendar::       Exiting or recomputing the calendar.
+* LaTeX Calendar::         Print a calendar using LaTeX.
+* Holidays::               Displaying dates of holidays.
+* Sunrise/Sunset::         Displaying local times of sunrise and sunset.
+* Lunar Phases::           Displaying phases of the moon.
+* Other Calendars::        Converting dates to other calendar systems.
+* Diary::                  Displaying events from your diary.
+* Calendar Customization:: Altering the behavior of the features above.
address@hidden menu
+
address@hidden Calendar Motion, Scroll Calendar, Calendar/Diary, Calendar/Diary
address@hidden Movement in the Calendar
+
address@hidden moving inside the calendar
+  Calendar mode lets you move through the calendar in logical units of
+time such as days, weeks, months, and years.  If you move outside the
+three months originally displayed, the calendar display ``scrolls''
+automatically through time to make the selected date visible.  Moving to
+a date lets you view its holidays or diary entries, or convert it to other
+calendars; moving longer time periods is also useful simply to scroll the
+calendar.
+
address@hidden
+* Calendar Unit Motion::       Moving by days, weeks, months, and years.
+* Move to Beginning or End::   Moving to start/end of weeks, months, and years.
+* Specified Dates::            Moving to the current date or another 
+                               specific date.
address@hidden menu
+
address@hidden Calendar Unit Motion, Move to Beginning or End, Calendar Motion, 
Calendar Motion
address@hidden Motion by Integral Days, Weeks, Months, Years
+
+  The commands for movement in the calendar buffer parallel the
+commands for movement in text.  You can move forward and backward by
+days, weeks, months, and years.
+
address@hidden @kbd
address@hidden C-f
+Move point one day forward (@code{calendar-forward-day}).
address@hidden C-b
+Move point one day backward (@code{calendar-backward-day}).
address@hidden C-n
+Move point one week forward (@code{calendar-forward-week}).
address@hidden C-p
+Move point one week backward (@code{calendar-backward-week}).
address@hidden address@hidden
+Move point one month forward (@code{calendar-forward-month}).
address@hidden address@hidden
+Move point one month backward (@code{calendar-backward-month}).
address@hidden C-x ]
+Move point one year forward (@code{calendar-forward-year}).
address@hidden C-x [
+Move point one year backward (@code{calendar-backward-year}).
address@hidden table
+
address@hidden C-f @r{(Calendar mode)}
address@hidden calendar-forward-day
address@hidden C-b @r{(Calendar mode)}
address@hidden calendar-backward-day
address@hidden C-n @r{(Calendar mode)}
address@hidden calendar-forward-week
address@hidden C-p @r{(Calendar mode)}
address@hidden calendar-backward-week
+  The day and week commands are natural analogues of the usual Emacs
+commands for moving by characters and by lines.  Just as @kbd{C-n}
+usually moves to the same column in the following line, in Calendar
+mode it moves to the same day in the following week.  And @kbd{C-p}
+moves to the same day in the previous week.
+
+  The arrow keys are equivalent to @kbd{C-f}, @kbd{C-b}, @kbd{C-n} and
address@hidden, just as they normally are in other modes.
+
address@hidden address@hidden @r{(Calendar mode)}
address@hidden calendar-forward-month
address@hidden address@hidden @r{(Calendar mode)}
address@hidden calendar-backward-month
address@hidden C-x ] @r{(Calendar mode)}
address@hidden calendar-forward-year
address@hidden C-x [ @r{(Calendar mode)}
address@hidden calendar-forward-year
+  The commands for motion by months and years work like those for
+weeks, but move a larger distance.  The month commands @address@hidden and
address@hidden@{} move forward or backward by an entire month's time.  The
+year commands @kbd{C-x ]} and @address@hidden [}} move forward or backward a
+whole year.
+
+  The easiest way to remember these commands is to consider months and
+years analogous to paragraphs and pages of text, respectively.  But the
+commands themselves are not quite analogous.  The ordinary Emacs paragraph
+commands move to the beginning or end of a paragraph, whereas these month
+and year commands move by an entire month or an entire year, which usually
+involves skipping across the end of a month or year.
+
+  All these commands accept a numeric argument as a repeat count.
+For convenience, the digit keys and the minus sign specify numeric
+arguments in Calendar mode even without the Meta modifier.  For example,
address@hidden C-f} moves point 100 days forward from its present location.
+
address@hidden Move to Beginning or End, Specified Dates, Calendar Unit Motion, 
Calendar Motion
address@hidden Beginning or End of Week, Month or Year
+
+  A week (or month, or year) is not just a quantity of days; we think of
+weeks (months, years) as starting on particular dates.  So Calendar mode
+provides commands to move to the beginning or end of a week, month or
+year:
+ 
address@hidden @kbd
address@hidden C-a @r{(Calendar mode)}
address@hidden calendar-beginning-of-week
address@hidden C-a
+Move point to start of week (@code{calendar-beginning-of-week}).
address@hidden C-e @r{(Calendar mode)}
address@hidden calendar-end-of-week
address@hidden C-e
+Move point to end of week (@code{calendar-end-of-week}).
address@hidden M-a @r{(Calendar mode)}
address@hidden calendar-beginning-of-month
address@hidden M-a
+Move point to start of month (@code{calendar-beginning-of-month}).
address@hidden M-e @r{(Calendar mode)}
address@hidden calendar-end-of-month
address@hidden M-e
+Move point to end of month (@code{calendar-end-of-month}).
address@hidden M-< @r{(Calendar mode)}
address@hidden calendar-beginning-of-year
address@hidden M-<
+Move point to start of year (@code{calendar-beginning-of-year}).
address@hidden M-> @r{(Calendar mode)}
address@hidden calendar-end-of-year
address@hidden M->
+Move point to end of year (@code{calendar-end-of-year}).
address@hidden table
+
+  These commands also take numeric arguments as repeat counts, with the
+repeat count indicating how many weeks, months, or years to move
+backward or forward.
+
address@hidden calendar-week-start-day
address@hidden weeks, which day they start on
address@hidden calendar, first day of week
+  By default, weeks begin on Sunday.  To make them begin on Monday
+instead, set the variable @code{calendar-week-start-day} to 1.
+
address@hidden Specified Dates,,Move to Beginning or End, Calendar Motion
address@hidden Particular Dates
+
+  Calendar mode provides commands for moving to a particular date
+specified in various ways.
+
address@hidden @kbd
address@hidden g d
+Move point to specified date (@code{calendar-goto-date}).
address@hidden o
+Center calendar around specified month (@code{calendar-other-month}).
address@hidden .
+Move point to today's date (@code{calendar-goto-today}).
address@hidden table
+
address@hidden g d @r{(Calendar mode)}
address@hidden calendar-goto-date
+  @kbd{g d} (@code{calendar-goto-date}) prompts for a year, a month, and a day
+of the month, and then moves to that date.  Because the calendar includes all
+dates from the beginning of the current era, you must type the year in its
+entirety; that is, type @samp{1990}, not @samp{90}.
+
address@hidden o @r{(Calendar mode)}
address@hidden calendar-other-month
+  @kbd{o} (@code{calendar-other-month}) prompts for a month and year,
+then centers the three-month calendar around that month.
+
address@hidden . @r{(Calendar mode)}
address@hidden calendar-goto-today
+  You can return to today's date with @kbd{.}@:
+(@code{calendar-goto-today}).
+
address@hidden Scroll Calendar, Mark and Region, Calendar Motion, Calendar/Diary
address@hidden Scrolling the Calendar through Time
+
address@hidden scrolling in the calendar
+  The calendar display scrolls automatically through time when you move out
+of the visible portion.  You can also scroll it manually.  Imagine that the
+calendar window contains a long strip of paper with the months on it.
+Scrolling it means moving the strip so that new months become visible in
+the window.
+
address@hidden @kbd
address@hidden C-x <
+Scroll calendar one month forward (@code{scroll-calendar-left}).
address@hidden C-x >
+Scroll calendar one month backward (@code{scroll-calendar-right}).
address@hidden C-v
address@hidden @key{NEXT}
+Scroll calendar three months forward
+(@code{scroll-calendar-left-three-months}).
address@hidden M-v
address@hidden @key{PRIOR}
+Scroll calendar three months backward
+(@code{scroll-calendar-right-three-months}).
address@hidden table
+
address@hidden C-x < @r{(Calendar mode)}
address@hidden scroll-calendar-left
address@hidden C-x > @r{(Calendar mode)}
address@hidden scroll-calendar-right
+  The most basic calendar scroll commands scroll by one month at a
+time.  This means that there are two months of overlap between the
+display before the command and the display after.  @kbd{C-x <} scrolls
+the calendar contents one month to the left; that is, it moves the
+display forward in time.  @kbd{C-x >} scrolls the contents to the
+right, which moves backwards in time.
+
address@hidden C-v @r{(Calendar mode)}
address@hidden scroll-calendar-left-three-months
address@hidden M-v @r{(Calendar mode)}
address@hidden scroll-calendar-right-three-months
+  The commands @kbd{C-v} and @kbd{M-v} scroll the calendar by an entire
+``screenful''---three months---in analogy with the usual meaning of
+these commands.  @kbd{C-v} makes later dates visible and @kbd{M-v} makes
+earlier dates visible.  These commands take a numeric argument as a
+repeat count; in particular, since @kbd{C-u} multiplies the next command
+by four, typing @kbd{C-u C-v} scrolls the calendar forward by a year and
+typing @kbd{C-u M-v} scrolls the calendar backward by a year.
+
+  The function keys @key{NEXT} and @key{PRIOR} are equivalent to
address@hidden and @kbd{M-v}, just as they are in other modes.
+
+
address@hidden Mark and Region, General Calendar, Scroll Calendar, 
Calendar/Diary
address@hidden The Mark and the Region
+
+  The concept of the mark applies to the calendar just as to any other
+buffer, but it marks a @emph{date}, not a @emph{position} in the buffer.
+The region consists of the days between the mark and point (including
+the starting and stopping dates).
+
address@hidden @kbd
address@hidden C-SPC
+Set the mark to today's date (@code{calendar-set-mark}).
address@hidden C-@@
+The same.
address@hidden C-x C-x
+Interchange mark and point (@code{calendar-exchange-point-and-mark}).
address@hidden M-=
+Display the number of days in the current region
+(@code{calendar-count-days-region}).
address@hidden table
+
address@hidden C-@@ @r{(Calendar mode)}
address@hidden C-SPC @r{(Calendar mode)}
address@hidden calendar-set-mark
address@hidden C-x C-x @r{(Calendar mode)}
address@hidden calendar-exchange-point-and-mark
+  You set the mark in the calendar, as in any other buffer, by using @kbd{C-@@}
+or @kbd{C-SPC} (@code{calendar-set-mark}).  You return to the marked date
+with the command @kbd{C-x C-x} (@code{calendar-exchange-point-and-mark})
+which puts the mark where point was and point where mark was.  The calendar
+is scrolled as necessary, if the marked date was not visible on the
+screen.  This does not change the extent of the region.
+
address@hidden M-= @r{(Calendar mode)}
address@hidden calendar-count-days-region
+  To determine the number of days in the region, type @kbd{M-=}
+(@code{calendar-count-days-region}).  The numbers of days printed is
address@hidden; that is, it includes the days specified by mark and
+point.
+
address@hidden mark ring
+  The main use of the mark in the calendar is to remember dates that you may
+want to go back to.  To make this feature more useful, the mark ring
+(@pxref{Mark Ring}) operates exactly as in other buffers:  Emacs remembers
+16 previous locations of the mark.  To return to a marked date, type @kbd{C-u
+C-SPC} (or @kbd{C-u C-@@}); this is the command @code{calendar-set-mark} given
+a numeric argument.  It moves point to where the mark was, restores the mark
+from the ring of former marks, and stores the previous point at the end of
+the mark ring.  So, repeated use of this command moves point through all
+the old marks on the ring, one by one.
+
address@hidden General Calendar, LaTeX Calendar, Mark and Region, Calendar/Diary
address@hidden Miscellaneous Calendar Commands
+
address@hidden @kbd
address@hidden p d
+Display day-in-year (@code{calendar-print-day-of-year}).
address@hidden ?
+Briefly describe calendar commands (@code{describe-calendar-mode}).
address@hidden C-c C-l
+Regenerate the calendar window (@code{redraw-calendar}).
address@hidden SPC
+Scroll the next window (@code{scroll-other-window}).
address@hidden q
+Exit from calendar (@code{exit-calendar}).
address@hidden table
+
address@hidden p d @r{(Calendar mode)}
address@hidden day of year
address@hidden calendar-print-day-of-year
+  If you want to know how many days have elapsed since the start of
+the year, or the number of days remaining in the year, type the @kbd{p d}
+command (@code{calendar-print-day-of-year}).  This displays both
+of those numbers in the echo area.
+
address@hidden ? @r{(Calendar mode)}
address@hidden describe-calendar-mode
+  To display a brief description of the calendar commands, type @kbd{?}
+(@code{describe-calendar-mode}).  For a fuller description, type @kbd{C-h m}.
+
address@hidden SPC @r{(Calendar mode)}
address@hidden scroll-other-window
+  You can use @kbd{SPC} (@code{scroll-other-window}) to scroll the other
+window.  This is handy when you display a list of holidays or diary entries
+in another window.
+
address@hidden C-c C-l @r{(Calendar mode)}
address@hidden redraw-calendar
+  If the calendar window text gets corrupted, type @kbd{C-c C-l}
+(@code{redraw-calendar}) to redraw it.  (This can only happen if you use
+non-Calendar-mode editing commands.)
+
address@hidden SPC @r{(Calendar mode)}
+  In Calendar mode, you can use @kbd{SPC} (@code{scroll-other-window})
+to scroll the other window.  This is handy when you display a list of
+holidays or diary entries in another window.
+
address@hidden q @r{(Calendar mode)}
address@hidden exit-calendar
+  To exit from the calendar, type @kbd{q} (@code{exit-calendar}).  This
+buries all buffers related to the calendar, selecting other buffers.
+(If a frame contains a dedicated calendar window, exiting from the
+calendar iconifies that frame.)
+
address@hidden LaTeX Calendar, Holidays, General Calendar, Calendar/Diary
address@hidden LaTeX Calendar
address@hidden calendar and address@hidden
+
+   The Calendar address@hidden commands produce a buffer of address@hidden 
code that
+prints as a calendar.  Depending on the command you use, the printed
+calendar covers the day, week, month or year that point is in.
+
address@hidden t @r{(Calendar mode)}
address@hidden @kbd
address@hidden t m
+Generate a one-month calendar (@code{cal-tex-cursor-month}).
address@hidden t M
+Generate a sideways-printing one-month calendar
+(@code{cal-tex-cursor-month-landscape}).
address@hidden t d
+Generate a one-day calendar
+(@code{cal-tex-cursor-day}).
address@hidden t w 1
+Generate a one-page calendar for one week
+(@code{cal-tex-cursor-week}).
address@hidden t w 2
+Generate a two-page calendar for one week
+(@code{cal-tex-cursor-week2}).
address@hidden t w 3
+Generate an ISO-style calendar for one week
+(@code{cal-tex-cursor-week-iso}).
address@hidden t w 4
+Generate a calendar for one Monday-starting week
+(@code{cal-tex-cursor-week-monday}).
address@hidden t f w
+Generate a Filofax-style two-weeks-at-a-glance calendar
+(@code{cal-tex-cursor-filofax-2week}).
address@hidden t f W
+Generate a Filofax-style one-week-at-a-glance calendar
+(@code{cal-tex-cursor-filofax-week}).
address@hidden t y
+Generate a calendar for one year
+(@code{cal-tex-cursor-year}).
address@hidden t Y
+Generate a sideways-printing calendar for one year
+(@code{cal-tex-cursor-year-landscape}).
address@hidden t f y
+Generate a Filofax-style calendar for one year
+(@code{cal-tex-cursor-filofax-year}).
address@hidden table
+
+  Some of these commands print the calendar sideways (in ``landscape
+mode''), so it can be wider than it is long.  Some of them use Filofax
+paper size (3.75in x 6.75in).  All of these commands accept a prefix
+argument which specifies how many days, weeks, months or years to print
+(starting always with the selected one).
+
+  If the variable @code{cal-tex-holidays} is address@hidden (the
+default), then the printed calendars show the holidays in
address@hidden  If the variable @code{cal-tex-diary} is
address@hidden (the default is @code{nil}), diary entries are included
+also (in weekly and monthly calendars only).
+
address@hidden Holidays, Sunrise/Sunset, LaTeX Calendar, Calendar/Diary
address@hidden Holidays
address@hidden holidays
+
+  The Emacs calendar knows about all major and many minor holidays,
+and can display them.
+
address@hidden @kbd
address@hidden h
+Display holidays for the selected date
+(@code{calendar-cursor-holidays}).
address@hidden Button2 Holidays
+Display any holidays for the date you click on.
address@hidden x
+Mark holidays in the calendar window (@code{mark-calendar-holidays}).
address@hidden u
+Unmark calendar window (@code{calendar-unmark}).
address@hidden a
+List all holidays for the displayed three months in another window
+(@code{list-calendar-holidays}).
address@hidden M-x holidays
+List all holidays for three months around today's date in another
+window.
address@hidden M-x list-holidays
+List holidays in another window for a specified range of years.
address@hidden table
+
address@hidden h @r{(Calendar mode)}
address@hidden calendar-cursor-holidays
+  To see if any holidays fall on a given date, position point on that
+date in the calendar window and use the @kbd{h} command.  Alternatively,
+click on that date with @kbd{Button2} and then choose @kbd{Holidays}
+from the menu that appears.  Either way, this displays the holidays for
+that date, in the echo area if they fit there, otherwise in a separate
+window.
+
address@hidden x @r{(Calendar mode)}
address@hidden mark-calendar-holidays
address@hidden u @r{(Calendar mode)}
address@hidden calendar-unmark
+  To view the distribution of holidays for all the dates shown in the
+calendar, use the @kbd{x} command.  This displays the dates that are
+holidays in a different face (or places a @samp{*} after these dates, if 
+display with multiple faces is not available). The command applies both
+to the currently visible months and to other months that subsequently
+become visible by scrolling.  To turn marking off and erase the current
+marks, type @kbd{u}, which also erases any diary marks (@pxref{Diary}).
+
address@hidden a @r{(Calendar mode)}
address@hidden list-calendar-holidays
+  To get even more detailed information, use the @kbd{a} command, which
+displays a separate buffer containing a list of all holidays in the
+current three-month range.  You can use @key{SPC} in the calendar window
+to scroll that list.
+
address@hidden holidays
+  The command @kbd{M-x holidays} displays the list of holidays for the
+current month and the preceding and succeeding months; this works even
+if you don't have a calendar window.  If you want the list of holidays
+centered around a different month, use @kbd{C-u M-x holidays}, which
+prompts for the month and year.
+
+  The holidays known to Emacs include United States holidays and the
+major Christian, Jewish, and Islamic holidays; also the solstices and
+equinoxes.
+
address@hidden list-holidays
+   The command @kbd{M-x list-holidays} displays the list of holidays for
+a range of years.  This function asks you for the starting and stopping
+years, and allows you to choose all the holidays or one of several
+categories of holidays.  You can use this command even if you don't have
+a calendar window.
+
+  The dates used by Emacs for holidays are based on @emph{current
+practice}, not historical fact.  Historically, for instance, the start
+of daylight savings time and even its existence have varied from year to
+year, but present United States law mandates that daylight savings time
+begins on the first Sunday in April.  When the daylight savings rules
+are set up for the United States, Emacs always uses the present
+definition, even though it is wrong for some prior years.
+
address@hidden Sunrise/Sunset, Lunar Phases, Holidays, Calendar/Diary
address@hidden Times of Sunrise and Sunset
address@hidden sunrise and sunset
+
+  Special calendar commands can tell you, to within a minute or two, the
+times of sunrise and sunset for any date.
+
address@hidden @kbd
address@hidden S
+Display times of sunrise and sunset for the selected date
+(@code{calendar-sunrise-sunset}).
address@hidden Button2 Sunrise/Sunset
+Display times of sunrise and sunset for the date you click on.
address@hidden M-x sunrise-sunset
+Display times of sunrise and sunset for today's date.
address@hidden C-u M-x sunrise-sunset
+Display times of sunrise and sunset for a specified date.
address@hidden table
+
address@hidden S @r{(Calendar mode)}
address@hidden calendar-sunrise-sunset
address@hidden sunrise-sunset
+  Within the calendar, to display the @emph{local times} of sunrise and
+sunset in the echo area, move point to the date you want, and type
address@hidden  Alternatively, click @kbd{Button2} on the date, then choose
address@hidden/Sunset} from the menu that appears.  The command @kbd{M-x
+sunrise-sunset} is available outside the calendar to display this
+information for today's date or a specified date.  To specify a date
+other than today, use @kbd{C-u M-x sunrise-sunset}, which prompts for
+the year, month, and day.
+
+  You can display the times of sunrise and sunset for any location and
+any date with @kbd{C-u C-u M-x sunrise-sunset}.  This asks you for a
+longitude, latitude, number of minutes difference from Coordinated
+Universal Time, and date, and then tells you the times of sunrise and
+sunset for that location on that date.
+
+  Because the times of sunrise and sunset depend on the location on
+earth, you need to tell Emacs your latitude, longitude, and location
+name before using these commands.  Here is an example of what to set:
+
address@hidden calendar-location-name
address@hidden calendar-longitude
address@hidden calendar-latitude
address@hidden
+(setq calendar-latitude 40.1)
+(setq calendar-longitude -88.2)
+(setq calendar-location-name "Urbana, IL")
address@hidden example
+
address@hidden
+Use one decimal place in the values of @code{calendar-latitude} and
address@hidden
+
+  Your time zone also affects the local time of sunrise and sunset.
+Emacs usually gets time zone information from the operating system, but
+if these values are not what you want (or if the operating system does
+not supply them), you must set them yourself.  Here is an example:
+
address@hidden calendar-time-zone
address@hidden calendar-standard-time-zone-name
address@hidden calendar-daylight-time-zone-name
address@hidden
+(setq calendar-time-zone -360)
+(setq calendar-standard-time-zone-name "CST")
+(setq calendar-daylight-time-zone-name "CDT")
address@hidden example
+
address@hidden
+The value of @code{calendar-time-zone} is the number of minutes
+difference between your local standard time and Coordinated Universal
+Time (Greenwich time).  The values of
address@hidden and
address@hidden are the abbreviations used in
+your time zone.  Emacs displays the times of sunrise and sunset
address@hidden for daylight savings time}.  @xref{Daylight Savings},
+for how daylight savings time is determined.
+
+  As a user, you might find it convenient to set the calendar location
+variables for your usual physical location in your init file.  And when
+you install Emacs on a machine, you can create a @file{default.el} file
+which sets them properly for the typical location of most users of that
+machine.  @xref{Init File}.
+
address@hidden Lunar Phases, Other Calendars, Sunrise/Sunset, Calendar/Diary
address@hidden Phases of the Moon
address@hidden phases of the moon
address@hidden moon, phases of
+
+  These calendar commands display the dates and times of the phases of
+the moon (new moon, first quarter, full moon, last quarter).  This
+feature is useful for debugging problems that ``depend on the phase of
+the moon.''
+
address@hidden @kbd
address@hidden M
+Display the dates and times for all the quarters of the moon for the
+three-month period shown (@code{calendar-phases-of-moon}).
address@hidden M-x phases-of-moon
+Display dates and times of the quarters of the moon for three months around
+today's date.
address@hidden table
+
address@hidden M @r{(Calendar mode)}
address@hidden calendar-phases-of-moon
+  Within the calendar, use the @kbd{M} command to display a separate
+buffer of the phases of the moon for the current three-month range.  The
+dates and times listed are accurate to within a few minutes.
+
address@hidden phases-of-moon
+  Outside the calendar, use the command @kbd{M-x phases-of-moon} to
+display the list of the phases of the moon for the current month and the
+preceding and succeeding months.  For information about a different
+month, use @kbd{C-u M-x phases-of-moon}, which prompts for the month and
+year.
+ 
+  The dates and times given for the phases of the moon are given in
+local time (corrected for daylight savings, when appropriate); but if
+the variable @code{calendar-time-zone} is void, Coordinated Universal
+Time (the Greenwich time zone) is used.  @xref{Daylight Savings}.
+
address@hidden Other Calendars, Calendar Systems, Lunar Phases, Calendar/Diary
address@hidden  Conversion To and From Other Calendars
+
address@hidden Gregorian calendar
+  The Emacs calendar displayed is @emph{always} the Gregorian calendar,
+sometimes called the ``new style'' calendar, which is used in most of
+the world today.  However, this calendar did not exist before the
+sixteenth century and was not widely used before the eighteenth century;
+it did not fully displace the Julian calendar and gain universal
+acceptance until the early twentieth century.  The Emacs calendar can
+display any month since January, year 1 of the current era, but the
+calendar displayed is the Gregorian, even for a date at which the
+Gregorian calendar did not exist.
+
+  While Emacs cannot display other calendars, it can convert dates to
+and from several other calendars.
+
address@hidden
+* Calendar Systems::      The calendars Emacs understands
+                            (aside from Gregorian).
+* To Other Calendar::     Converting the selected date to various calendars.
+* From Other Calendar::   Moving to a date specified in another calendar.
+* Mayan Calendar::        Moving to a date specified in a Mayan calendar.
address@hidden menu
+
+  If you are interested in these calendars, you can convert dates one at a
+time.  Put point on the desired date of the Gregorian calendar and press the
+appropriate keys.  The @kbd{p} is a mnemonic for ``print'' since Emacs
+``prints' the equivalent date in the echo area.
address@hidden Calendar Systems, To Other Calendar, Other Calendars, Other 
Calendars
address@hidden Supported Calendar Systems
+
address@hidden ISO commercial calendar
+  The ISO commercial calendar is used largely in Europe.
+
address@hidden Julian calendar
+  The Julian calendar, named after Julius Caesar, was the one used in Europe
+throughout medieval times, and in many countries up until the nineteenth
+century.
+
address@hidden Julian day numbers
address@hidden astronomical day numbers
+  Astronomers use a simple counting of days elapsed since noon, Monday,
+January 1, 4713 B.C. on the Julian calendar.  The number of days elapsed
+is called the @emph{Julian day number} or the @emph{Astronomical day number}.
+
address@hidden Hebrew calendar
+  The Hebrew calendar is used by tradition in the Jewish religion.  The
+Emacs calendar program uses the Hebrew calendar to determine the dates
+of Jewish holidays.  Hebrew calendar dates begin and end at sunset.
+
address@hidden Islamic calendar
+  The Islamic calendar is used in many predominantly Islamic countries.
+Emacs uses it to determine the dates of Islamic holidays.  There is no
+universal agreement in the Islamic world about the calendar; Emacs uses
+a widely accepted version, but the precise dates of Islamic holidays
+often depend on proclamation by religious authorities, not on
+calculations.  As a consequence, the actual dates of observance can vary
+slightly from the dates computed by Emacs.  Islamic calendar dates begin
+and end at sunset.
+
address@hidden French Revolutionary calendar
+  The French Revolutionary calendar was created by the Jacobins after the 1789
+revolution, to represent a more secular and nature-based view of the annual
+cycle, and to install a 10-day week in a rationalization measure similar to
+the metric system.  The French government officially abandoned this
+calendar at the end of 1805.
+
address@hidden Mayan calendar
+  The Maya of Central America used three separate, overlapping calendar
+systems, the @emph{long count}, the @emph{tzolkin}, and the @emph{haab}.
+Emacs knows about all three of these calendars.  Experts dispute the
+exact correlation between the Mayan calendar and our calendar; Emacs uses the
+Goodman-Martinez-Thompson correlation in its calculations.
+
address@hidden Coptic calendar
address@hidden Ethiopic calendar
+  The Copts use a calendar based on the ancient Egyptian solar calendar.
+Their calendar consists of twelve 30-day months followed by an extra
+five-day period.  Once every fourth year they add a leap day to this
+extra period to make it six days.  The Ethiopic calendar is identical in
+structure, but has different year numbers and month names.
+
address@hidden Persian calendar
+  The Persians use a solar calendar based on a design of Omar Khayyam.
+Their calendar consists of twelve months of which the first six have 31
+days, the next five have 30 days, and the last has 29 in ordinary years
+and 30 in leap years.  Leap years occur in a complicated pattern every
+four or five years.
+
address@hidden Chinese calendar
+  The Chinese calendar is a complicated system of lunar months arranged
+into solar years.  The years go in cycles of sixty, each year containing
+either twelve months in an ordinary year or thirteen months in a leap
+year; each month has either 29 or 30 days.  Years, ordinary months, and
+days are named by combining one of ten ``celestial stems'' with one of
+twelve ``terrestrial branches'' for a total of sixty names that are
+repeated in a cycle of sixty.
+
address@hidden To Other Calendar, From Other Calendar, Calendar Systems, Other 
Calendars
address@hidden Converting To Other Calendars
+
+  The following commands describe the selected date (the date at point)
+in various other calendar systems:
+
address@hidden @kbd
address@hidden Button2  Other Calendars
+Display the date that you click on, expressed in various other calendars.
address@hidden p @r{(Calendar mode)}
address@hidden calendar-print-iso-date
address@hidden p c
+Display ISO commercial calendar equivalent for selected day
+(@code{calendar-print-iso-date}).
address@hidden calendar-print-julian-date
address@hidden p j
+Display Julian date for selected day (@code{calendar-print-julian-date}).
address@hidden calendar-print-astro-day-number
address@hidden p a
+Display astronomical (Julian) day number for selected day
+(@code{calendar-print-astro-day-number}).
address@hidden calendar-print-hebrew-date
address@hidden p h
+Display Hebrew date for selected day (@code{calendar-print-hebrew-date}).
address@hidden calendar-print-islamic-date
address@hidden p i
+Display Islamic date for selected day (@code{calendar-print-islamic-date}).
address@hidden calendar-print-french-date
address@hidden p f
+Display French Revolutionary date for selected day
+(@code{calendar-print-french-date}).
address@hidden calendar-print-chinese-date
address@hidden p C
+Display Chinese date for selected day
+(@code{calendar-print-chinese-date}).
address@hidden calendar-print-coptic-date
address@hidden p k
+Display Coptic date for selected day
+(@code{calendar-print-coptic-date}).
address@hidden calendar-print-ethiopic-date
address@hidden p e
+Display Ethiopic date for selected day
+(@code{calendar-print-ethiopic-date}).
address@hidden calendar-print-persian-date
address@hidden p p
+Display Persian date for selected day
+(@code{calendar-print-persian-date}).
address@hidden calendar-print-mayan-date
address@hidden p m
+Display Mayan date for selected day (@code{calendar-print-mayan-date}).
address@hidden table
+
+  If you are using X, the easiest way to translate a date into other
+calendars is to click on it with @kbd{Button2}, then choose @kbd{Other
+Calendars} from the menu that appears.  This displays the equivalent
+forms of the date in all the calendars Emacs understands, in the form of
+a menu.  (Choosing an alternative from this menu doesn't actually do
+anything---the menu is used only for display.)
+
+  Put point on the desired date of the Gregorian calendar, then type the
+appropriate keys.  The @kbd{p} is a mnemonic for ``print'' since Emacs
+``prints'' the equivalent date in the echo area.
+
address@hidden From Other Calendar, Mayan Calendar, To Other Calendar, Other 
Calendars
address@hidden Converting From Other Calendars
+
+  You can use the other supported calendars to specify a date to move
+to.  This section describes the commands for doing this using calendars
+other than Mayan; for the Mayan calendar, see the following section.
+
address@hidden g @var{char} @r{(Calendar mode)}
address@hidden calendar-goto-iso-date
address@hidden calendar-goto-julian-date
address@hidden calendar-goto-astro-day-number
address@hidden calendar-goto-hebrew-date
address@hidden calendar-goto-islamic-date
address@hidden calendar-goto-french-date
address@hidden calendar-goto-chinese-date
address@hidden calendar-goto-persian-date
address@hidden calendar-goto-coptic-date
address@hidden calendar-goto-ethiopic-date
address@hidden @kbd
address@hidden g c
+Move to a date specified in the ISO commercial calendar
+(@code{calendar-goto-iso-date}).
address@hidden g j
+Move to a date specified in the Julian calendar
+(@code{calendar-goto-julian-date}).
address@hidden g a
+Move to a date specified in astronomical (Julian) day number
+(@code{calendar-goto-astro-day-number}).
address@hidden g h
+Move to a date specified in the Hebrew calendar
+(@code{calendar-goto-hebrew-date}).
address@hidden g i
+Move to a date specified in the Islamic calendar
+(@code{calendar-goto-islamic-date}).
address@hidden g f
+Move to a date specified in the French Revolutionary calendar
+(@code{calendar-goto-french-date}).
address@hidden g C
+Move to a date specified in the Chinese calendar
+(@code{calendar-goto-chinese-date}).
address@hidden g p
+Move to a date specified in the Persian calendar
+(@code{calendar-goto-persian-date}).
address@hidden g k
+Move to a date specified in the Coptic calendar
+(@code{calendar-goto-coptic-date}).
address@hidden g e
+Move to a date specified in the Ethiopic calendar
+(@code{calendar-goto-ethiopic-date}).
address@hidden table
+
+  These commands ask you for a date on the other calendar, move point to
+the Gregorian calendar date equivalent to that date, and display the
+other calendar's date in the echo area.  Emacs uses strict completion
+(@pxref{Completion}) whenever it asks you to type a month name, so you
+don't have to worry about the spelling of Hebrew, Islamic, or French names.
+
address@hidden list-yahrzeit-dates
address@hidden yahrzeits
+  One common question concerning the Hebrew calendar is the computation
+of the anniversary of a date of death, called a ``yahrzeit.''  The Emacs
+calendar includes a facility for such calculations.  If you are in the
+calendar, the command @kbd{M-x list-yahrzeit-dates} asks you for a
+range of years and then displays a list of the yahrzeit dates for those
+years for the date given by point.  If you are not in the calendar,
+this command first asks you for the date of death and the range of
+years, and then displays the list of yahrzeit dates.
+
address@hidden Mayan Calendar, Diary ,From Other Calendar ,Other Calendars
address@hidden Converting from the Mayan Calendar
+
+  Here are the commands to select dates based on the Mayan calendar:
+
address@hidden @kbd
address@hidden g m l
+Move to a date specified by the long count calendar
+(@code{calendar-goto-mayan-long-count-date}).
address@hidden g m n t
+Move to the next occurrence of a place in the
+tzolkin calendar (@code{calendar-next-tzolkin-date}).
address@hidden g m p t
+Move to the previous occurrence of a place in the
+tzolkin calendar (@code{calendar-previous-tzolkin-date}).
address@hidden g m n h
+Move to the next occurrence of a place in the
+haab calendar (@code{calendar-next-haab-date}).
address@hidden g m p h
+Move to the previous occurrence of a place in the
+haab calendar (@code{calendar-previous-haab-date}).
address@hidden g m n c
+Move to the next occurrence of a place in the
+calendar round (@code{calendar-next-calendar-round-date}).
address@hidden g m p c
+Move to the previous occurrence of a place in the
+calendar round (@code{calendar-previous-calendar-round-date}).
address@hidden table
+
address@hidden Mayan long count
+  To understand these commands, you need to understand the Mayan calendars.
+The @dfn{long count} is a counting of days with these units:
+ 
address@hidden
+1 kin = 1 day@ @ @ 1 uinal = 20 kin@ @ @ 1 tun = 18 uinal
+1 katun = 20 tun@ @ @ 1 baktun = 20 katun
address@hidden display
+
address@hidden g m l @r{(Calendar mode)}
address@hidden calendar-goto-mayan-long-count-date
address@hidden
+Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11
+tun, 16 uinal, and 6 kin.  The Emacs calendar can handle Mayan long
+count dates as early as 7.17.18.13.1, but no earlier.  When you use the
address@hidden m l} command, type the Mayan long count date with the baktun,
+katun, tun, uinal, and kin separated by periods.
+
address@hidden calendar-previous-tzolkin-date
address@hidden calendar-next-tzolkin-date
address@hidden Mayan tzolkin calendar
+  The Mayan tzolkin calendar is a cycle of 260 days formed by a pair of
+independent cycles of 13 and 20 days.  Since this cycle repeats
+endlessly, Emacs provides commands to move backward and forward to the
+previous or next point in the cycle.  Type @kbd{g m p t} to go to the
+previous tzolkin date; Emacs asks you for a tzolkin date and moves point
+to the previous occurrence of that date.  Similarly, type @kbd{g m n t}
+to go to the next occurrence of a tzolkin date.
+
address@hidden calendar-previous-haab-date
address@hidden calendar-next-haab-date
address@hidden Mayan haab calendar
+  The Mayan haab calendar is a cycle of 365 days arranged as 18 months
+of 20 days each, followed a 5-day monthless period.  Like the tzolkin
+cycle, this cycle repeats endlessly, and there are commands to move
+backward and forward to the previous or next point in the cycle.  Type
address@hidden m p h} to go to the previous haab date; Emacs asks you for a haab
+date and moves point to the previous occurrence of that date.
+Similarly, type @kbd{g m n h} to go to the next occurrence of a haab
+date.
+
address@hidden This is omitted because it is too long for smallbook format.
address@hidden @findex calendar-previous-calendar-round-date
address@hidden calendar-next-calendar-round-date
address@hidden Mayan calendar round
+  The Maya also used the combination of the tzolkin date and the haab
+date.  This combination is a cycle of about 52 years called a
address@hidden round}.  If you type @kbd{g m p c}, Emacs asks you for
+both a haab and a tzolkin date and then moves point to the previous
+occurrence of that combination.  Use @kbd{g m n c} to move point to the
+next occurrence of a combination.  These commands signal an error if the
+haab/tzolkin date combination you have typed is impossible.
+
+  Emacs uses strict completion (@pxref{Completion}) whenever it
+asks you to type a Mayan name, so you don't have to worry about
+spelling.
+
address@hidden Diary, Calendar Customization, Mayan Calendar, Calendar/Diary
address@hidden The Diary
address@hidden diary
+
+  The Emacs diary keeps track of appointments or other events on a daily
+basis, in conjunction with the calendar.  To use the diary feature, you
+must first create a @dfn{diary file} containing a list of events and
+their dates.  Then Emacs can automatically pick out and display the
+events for today, for the immediate future, or for any specified
+date.
+
+  By default, Emacs uses @file{~/diary} as the diary file.  This is the
+same file that the @code{calendar} utility uses.  A sample
address@hidden/diary} file is:
+
address@hidden
+12/22/1988 Twentieth wedding anniversary!!
+&1/1. Happy New Year!
+10/22 Ruth's birthday.
+* 21, *: Payday
+Tuesday--weekly meeting with grad students at 10am
+         Supowit, Shen, Bitner, and Kapoor to attend.
+1/13/89 Friday the thirteenth!!
+&thu 4pm squash game with Lloyd.
+mar 16 Dad's birthday
+April 15, 1989 Income tax due.
+&* 15 time cards due.
address@hidden example
+
address@hidden
+This example uses extra spaces to align the event descriptions of most
+of the entries.  Such formatting is purely a matter of taste.
+
+  Although you probably will start by creating a diary manually, Emacs
+provides a number of commands to let you view, add, and change diary
+entries.  You can also share diary entries with other users
+(@pxref{Included Diary Files}).
+
address@hidden
+* Diary Commands::         Viewing diary entries and associated calendar dates.
+* Format of Diary File::   Entering events in your diary.
+* Date Formats::           Various ways you can specify dates.
+* Adding to Diary::        Commands to create diary entries.
+* Special Diary Entries::  Anniversaries, blocks of dates, cyclic entries, etc.
address@hidden menu
+
address@hidden Diary Commands, Format of Diary File, Diary, Diary
address@hidden Commands Displaying Diary Entries
+
+  Once you have created a @file{~/diary} file, you can use the calendar
+to view it.  You can also view today's events outside of Calendar mode.
+
address@hidden @kbd
address@hidden d
+Display all diary entries for the selected date
+(@code{view-diary-entries}).
address@hidden Button2 Diary
+Display all diary entries for the date you click on.
address@hidden s
+Display the entire diary file (@code{show-all-diary-entries}).
address@hidden m
+Mark all visible dates that have diary entries
+(@code{mark-diary-entries}).
address@hidden u
+Unmark the calendar window (@code{calendar-unmark}).
address@hidden M-x print-diary-entries
+Print hard copy of the diary display as it appears.
address@hidden M-x diary
+Display all diary entries for today's date.
address@hidden M-x diary-mail-entries
+Mail yourself email reminders about upcoming diary entries.
address@hidden table
+
address@hidden d @r{(Calendar mode)}
address@hidden view-diary-entries
+  Displaying the diary entries with @kbd{d} shows in a separate window
+the diary entries for the selected date in the calendar.  The mode line
+of the new window shows the date of the diary entries and any holidays
+that fall on that date.  If you specify a numeric argument with @kbd{d},
+it shows all the diary entries for that many successive days.  Thus,
address@hidden d} displays all the entries for the selected date and for the
+following day.
+
+  Another way to display the diary entries for a date is to click
address@hidden on the date, and then choose @kbd{Diary} from the menu
+that appears.
+
address@hidden m @r{(Calendar mode)}
address@hidden mark-diary-entries
address@hidden u @r{(Calendar mode)}
address@hidden calendar-unmark
+  To get a broader view of which days are mentioned in the diary, use
+the @kbd{m} command.  This displays the dates that have diary entries
+in a different face (or places a @samp{+} after these dates, if
+display with multiple faces is not available).  The command applies both
+to the currently visible months and to other months that subsequently
+become visible by scrolling.  To turn marking off and erase the current
+marks, type @kbd{u}, which also turns off holiday marks
+(@pxref{Holidays}).
+
address@hidden s @r{(Calendar mode)}
address@hidden show-all-diary-entries
+  To see the full diary file, rather than just some of the entries, use
+the @kbd{s} command.
+
+  Display of selected diary entries uses the selective display feature
+to hide entries that don't apply.
+
address@hidden print-diary-entries
+  The diary buffer as you see it is an illusion, so simply printing the
+buffer does not print what you see on your screen.  There is a special
+command to print hard copy of the diary buffer @emph{as it appears};
+this command is @kbd{M-x print-diary-entries}.  It sends the data
+directly to the printer.  You can customize it like @code{lpr-region}
+(@pxref{Hardcopy}).
+
address@hidden diary
+  The command @kbd{M-x diary} displays the diary entries for the current
+date, independently of the calendar display, and optionally for the next
+few days as well; the variable @code{number-of-diary-entries} specifies
+how many days to include (@pxref{Customization}).
+
+  If you put @code{(diary)} in your init file, this
+automatically displays a window with the day's diary entries, when you
+enter Emacs.  @xref{Init File}.  The mode line of the displayed window
+shows the date and any holidays that fall on that date.
+
address@hidden diary-mail-entries
address@hidden diary-mail-days
+  Many users like to receive notice of events in their diary as email.
+To send such mail to yourself, use the command @kbd{M-x
+diary-mail-entries}.  A prefix argument specifies how many days
+(starting with today) to check; otherwise, the variable
address@hidden says how many days.
+
address@hidden Format of Diary File, Date Formats, Diary Commands, Diary
address@hidden The Diary File
address@hidden diary file
+
address@hidden diary-file
+  Your @dfn{diary file} is a file that records events associated with
+particular dates.  The name of the diary file is specified by the
+variable @code{diary-file}; @file{~/diary} is the default.  The
address@hidden utility program supports a subset of the format allowed
+by the Emacs diary facilities, so you can use that utility to view the
+diary file, with reasonable results aside from the entries it cannot
+understand.
+
+  Each entry in the diary file describes one event and consists of one
+or more lines.  An entry always begins with a date specification at the
+left margin.  The rest of the entry is simply text to describe the
+event.  If the entry has more than one line, then the lines after the
+first must begin with whitespace to indicate they continue a previous
+entry.  Lines that do not begin with valid dates and do not continue a
+preceding entry are ignored.
+
+  You can inhibit the marking of certain diary entries in the calendar
+window; to do this, insert an ampersand (@samp{&}) at the beginning of
+the entry, before the date.  This has no effect on display of the entry
+in the diary window; it affects only marks on dates in the calendar
+window.  Nonmarking entries are especially useful for generic entries
+that would otherwise mark many different dates.
+
+  If the first line of a diary entry consists only of the date or day
+name with no following blanks or punctuation, then the diary window
+display doesn't include that line; only the continuation lines appear.
+For example, this entry:
+
address@hidden
+02/11/1989
+      Bill B. visits Princeton today
+      2pm Cognitive Studies Committee meeting
+      2:30-5:30 Liz at Lawrenceville
+      4:00pm Dentist appt
+      7:30pm Dinner at George's
+      8:00-10:00pm concert
address@hidden example
+
address@hidden
+appears in the diary window without the date line at the beginning.
+This style of entry looks neater when you display just a single day's
+entries, but can cause confusion if you ask for more than one day's
+entries.
+
+  You can edit the diary entries as they appear in the window, but it is
+important to remember that the buffer displayed contains the @emph{entire}
+diary file, with portions of it concealed from view.  This means, for
+instance, that the @kbd{C-f} (@code{forward-char}) command can put point
+at what appears to be the end of the line, but what is in reality the
+middle of some concealed line.  
+
+  @emph{Be careful when editing the diary entries!}  Inserting
+additional lines or adding/deleting characters in the middle of a
+visible line cannot cause problems, but editing at the end of a line may
+not do what you expect.  Deleting a line may delete other invisible
+entries that follow it.  Before editing the diary, it is best to display
+the entire file with @kbd{s} (@code{show-all-diary-entries}).
+
address@hidden Date Formats,Adding to Diary ,Format of Diary File, Diary
address@hidden Date Formats
+
+  Here are some sample diary entries, illustrating different ways of
+formatting a date.  The examples all show dates in American order
+(month, day, year), but Calendar mode supports European order (day,
+month, year) as an option.
+
address@hidden
+4/20/93  Switch-over to new tabulation system
+apr. 25  Start tabulating annual results
+4/30  Results for April are due
+*/25  Monthly cycle finishes
+Friday  Don't leave without backing up files
address@hidden example
+
+  The first entry appears only once, on April 20, 1993.  The second and
+third appear every year on the specified dates, and the fourth uses a
+wildcard (asterisk) for the month, so it appears on the 25th of every
+month.  The final entry appears every week on Friday.
+
+  You can use just numbers to express a date, as in
address@hidden@var{month}/@var{day}} or @address@hidden/@var{day}/@var{year}}.
+This must be followed by a nondigit.  In the date itself, @var{month}
+and @var{day} are numbers of one or two digits.  The optional @var{year}
+is also a number, and may be abbreviated to the last two digits; that
+is, you can use @samp{11/12/1989} or @samp{11/12/89}.
+
+  Dates can also have the form @address@hidden @var{day}} or
address@hidden@var{monthname} @var{day}, @var{year}}, where the month's name can
+be spelled in full or abbreviated to three characters (with or without a
+period).  Case is not significant.
+
+  A date may be @dfn{generic}; that is, partially unspecified.  Then the
+entry applies to all dates that match the specification.  If the date
+does not contain a year, it is generic and applies to any year.
+Alternatively, @var{month}, @var{day}, or @var{year} can be a @samp{*};
+this matches any month, day, or year, respectively.  Thus, a diary entry
address@hidden/*/*} matches any day in March of any year; so does @samp{march
+*}.
+
address@hidden european-calendar-style
address@hidden european-calendar
address@hidden american-calendar
+  If you prefer the European style of writing dates---in which the day
+comes before the month---type @kbd{M-x european-calendar} while in the
+calendar, or set the variable @code{european-calendar-style} to @code{t}
address@hidden using any calendar or diary command.  This mode interprets
+all dates in the diary in the European manner, and also uses European
+style for displaying diary dates.  (Note that there is no comma after
+the @var{monthname} in the European style.)  To go back to the (default)
+American style of writing dates, type @kbd{M-x american-calendar}.
+ 
+  You can use the name of a day of the week as a generic date which
+applies to any date falling on that day of the week.  You can abbreviate
+the day of the week to three letters (with or without a period) or spell
+it in full; case is not significant.
+
address@hidden Adding to Diary, Special Diary Entries, Date Formats, Diary
address@hidden Commands to Add to the Diary
+
+  While in the calendar, there are several commands to create diary
+entries:
+
address@hidden @kbd
address@hidden i d
+Add a diary entry for the selected date (@code{insert-diary-entry}).
address@hidden i w
+Add a diary entry for the selected day of the week 
(@code{insert-weekly-diary-entry}).
address@hidden i m
+Add a diary entry for the selected day of the month 
(@code{insert-monthly-diary-entry}).
address@hidden i y
+Add a diary entry for the selected day of the year 
(@code{insert-yearly-diary-entry}).
address@hidden table
+
address@hidden i d @r{(Calendar mode)}
address@hidden insert-diary-entry
+  You can make a diary entry for a specific date by selecting that date
+in the calendar window and typing the @kbd{i d} command.  This command
+displays the end of your diary file in another window and inserts the
+date; you can then type the rest of the diary entry.
+
address@hidden i w @r{(Calendar mode)}
address@hidden insert-weekly-diary-entry
address@hidden i m @r{(Calendar mode)}
address@hidden insert-monthly-diary-entry
address@hidden i y @r{(Calendar mode)}
address@hidden insert-yearly-diary-entry
+  If you want to make a diary entry that applies to a specific day of
+the week, select that day of the week (any occurrence will do) and type
address@hidden w}.  This inserts the day-of-week as a generic date; you can then
+type the rest of the diary entry.  You can make a monthly diary entry in
+the same fashion.  Select the day of the month, use the @kbd{i m}
+command, and type rest of the entry.  Similarly, you can insert a yearly
+diary entry with the @kbd{i y} command.
+
+  All of the above commands make marking diary entries by default.  To
+make a nonmarking diary entry, give a numeric argument to the command.
+For example, @kbd{C-u i w} makes a nonmarking weekly diary entry.
+
+  When you modify the diary file, be sure to save the file before
+exiting Emacs.
+ 
address@hidden Special Diary Entries,, Adding to Diary, Diary
address@hidden Special Diary Entries
+
+  In addition to entries based on calendar dates, the diary file can
+contain @dfn{sexp entries} for regular events such as anniversaries.
+These entries are based on Lisp expressions (sexps) that Emacs evaluates
+as it scans the diary file.  Instead of a date, a sexp entry contains
address@hidden followed by a Lisp expression which must begin and end with
+parentheses.  The Lisp expression determines which dates the entry
+applies to.
+
+  Calendar mode provides commands to insert certain commonly used
+sexp entries:
+
address@hidden @kbd
address@hidden i a
+Add an anniversary diary entry for the selected date 
+(@code{insert-anniversary-diary-entry}).
address@hidden i b
+Add a block diary entry for the current region 
+(@code{insert-block-diary-entry}).
address@hidden i c
+Add a cyclic diary entry starting at the date 
+(@code{insert-cyclic-diary-entry}).
address@hidden table
+
address@hidden i a @r{(Calendar mode)}
address@hidden insert-anniversary-diary-entry
+  If you want to make a diary entry that applies to the anniversary of a
+specific date, move point to that date and use the @kbd{i a} command.
+This displays the end of your diary file in another window and inserts
+the anniversary description; you can then type the rest of the diary
+entry. The entry looks like this:
+
address@hidden diary-anniversary
+  The effect of @kbd{i a} is to add a @code{diary-anniversary} sexp to your
+diary file.  You can also add one manually, for instance:
+
address@hidden
+%%(diary-anniversary 10 31 1948) Arthur's birthday
address@hidden example
+
address@hidden
+This entry applies to October 31 in any year after 1948; @samp{10 31
+1948} specifies the date.  (If you are using the European calendar
+style, the month and day are interchanged.)  The reason this expression
+requires a beginning year is that advanced diary functions can use it to
+calculate the number of elapsed years.
+
+  A @dfn{block} diary entry applies to a specified range of consecutive
+dates.  Here is a block diary entry that applies to all dates from June
+24, 1990 through July 10, 1990:
+
address@hidden diary-block
address@hidden
+%%(diary-block 6 24 1990 7 10 1990) Vacation
address@hidden example
+
address@hidden
+The @samp{6 24 1990} indicates the starting date and the @samp{7 10 1990}
+indicates the stopping date.  (Again, if you are using the European calendar
+style, the month and day are interchanged.)
+
address@hidden i b @r{(Calendar mode)}
address@hidden insert-block-diary-entry
+  To insert a block entry, place point and the mark on the two
+dates that begin and end the range, and type @kbd{i b}.  This command
+displays the end of your diary file in another window and inserts the
+block description; you can then type the diary entry.
+
address@hidden i c @r{(Calendar mode)}
address@hidden insert-cyclic-diary-entry
+   @dfn{Cyclic} diary entries repeat after a fixed interval of days.  To
+create one, select the starting date and use the @kbd{i c} command.  The
+command prompts for the length of interval, then inserts the entry,
+which looks like this:
+
address@hidden diary-cyclic
address@hidden
+%%(diary-cyclic 50 3 1 1990) Renew medication
address@hidden example
+
address@hidden
+This entry applies to March 1, 1990 and every 50th day following;
address@hidden 1 1990} specifies the starting date.  (If you are using the
+European calendar style, the month and day are interchanged.)
+
+  All three of these commands make marking diary entries.  To insert a
+nonmarking entry, give a numeric argument to the command.  For example,
address@hidden i a} makes a nonmarking anniversary diary entry.
+
+  Marking sexp diary entries in the calendar is @emph{extremely}
+time-consuming, since every date visible in the calendar window must be
+individually checked.  So it's a good idea to make sexp diary entries
+nonmarking (with @samp{&}) when possible.
+
+  Another sophisticated kind of sexp entry, a @dfn{floating} diary entry,
+specifies a regularly occurring event by offsets specified in days,
+weeks, and months.  It is comparable to a crontab entry interpreted by
+the @code{cron} utility.  Here is a nonmarking, floating diary entry
+that applies to the last Thursday in November:
+ 
address@hidden diary-float
address@hidden
+&%%(diary-float 11 4 -1) American Thanksgiving
address@hidden example
+
address@hidden
+The 11 specifies November (the eleventh month), the 4 specifies Thursday
+(the fourth day of the week, where Sunday is numbered zero), and the
address@hidden specifies ``last'' (1 would mean ``first'', 2 would mean
+``second'', @minus{}2 would mean ``second-to-last'', and so on).  The
+month can be a single month or a list of months.  Thus you could change
+the 11 above to @samp{'(1 2 3)} and have the entry apply to the last
+Thursday of January, February, and March.  If the month is @code{t}, the
+entry applies to all months of the address@hidden
+
+  The sexp feature of the diary allows you to specify diary entries
+based on any Emacs Lisp expression.  You can use the library of built-in
+functions or you can write your own functions.  The built-in functions
+include the ones shown in this section, plus a few others (@pxref{Sexp
+Diary Entries}).
+
+  The generality of sexps lets you specify any diary entry that you can
+describe algorithmically.  Suppose you get paid on the 21st of the month
+if it is a weekday, and to the Friday before if the 21st is on a
+weekend.  The diary entry
+
address@hidden
+&%%(let ((dayname (calendar-day-of-week date))
+         (day (car (cdr date))))
+      (or (and (= day 21) (memq dayname '(1 2 3 4 5)))
+          (and (memq day '(19 20)) (= dayname 5)))
+         ) Pay check deposited
address@hidden example
+
address@hidden
+to just those dates.  This example illustrates how the sexp can depend
+on the variable @code{date}; this variable is a list (@var{month}
address@hidden @var{year}) that gives the Gregorian date for which the diary
+entries are being found.  If the value of the sexp is @code{t}, the
+entry applies to that date.  If the sexp evaluates to @code{nil}, the
+entry does @emph{not} apply to that date.
+
+
address@hidden Calendar Customization,,Diary, Calendar/Diary
address@hidden Customizing the Calendar and Diary
+
+  There are many customizations that you can use to make the calendar and
+diary suit your personal tastes.
+
address@hidden
+* Calendar Customizing::   Defaults you can set.
+* Holiday Customizing::    Defining your own holidays.
+* Date Display Format::    Changing the format.
+* Time Display Format::    Changing the format.
+* Daylight Savings::       Changing the default.
+* Diary Customizing::      Defaults you can set.
+* Hebrew/Islamic Entries:: How to obtain them.
+* Fancy Diary Display::    Enhancing the diary display, sorting entries.
+* Included Diary Files::   Sharing a common diary file.
+* Sexp Diary Entries::     Fancy things you can do.
+* Appt Customizing::      Customizing appointment reminders.
address@hidden menu
+
address@hidden Calendar Customizing
address@hidden Customizing the Calendar
address@hidden view-diary-entries-initially
+
+  If you set the variable @code{view-diary-entries-initially} to
address@hidden, calling up the calendar automatically displays the diary
+entries for the current date as well.  The diary dates appear only if
+the current date is visible.  If you add both of the following lines to
+your init file:@refill
+
address@hidden
+(setq view-diary-entries-initially t)
+(calendar)
address@hidden example
+
address@hidden
+this displays both the calendar and diary windows whenever you start
+Emacs.  @xref{Init File}.
+
address@hidden view-calendar-holidays-initially
+  Similarly, if you set the variable
address@hidden to @code{t}, entering the
+calendar automatically displays a list of holidays for the current
+three-month period.  The holiday list appears in a separate
+window.
+ 
address@hidden mark-diary-entries-in-calendar
+  You can set the variable @code{mark-diary-entries-in-calendar} to
address@hidden in order to mark any dates with diary entries.  This takes
+effect whenever the calendar window contents are recomputed.  There are
+two ways of marking these dates: by changing the face (@pxref{Faces}),
+if the display supports that, or by placing a plus sign (@samp{+})
+beside the date otherwise.
+
address@hidden mark-holidays-in-calendar
+  Similarly, setting the variable @code{mark-holidays-in-calendar} to
address@hidden marks holiday dates, either with a change of face or with an
+asterisk (@samp{*}).
+
address@hidden calendar-holiday-marker
address@hidden diary-entry-marker
+  The variable @code{calendar-holiday-marker} specifies how to mark a
+date as being a holiday.  Its value may be a character to insert next to
+the date, or a face name to use for displaying the date.  Likewise, the
+variable @code{diary-entry-marker} specifies how to mark a date that has
+diary entries.  The calendar creates faces named @code{holiday-face} and
address@hidden for these purposes; those symbols are the default
+values of these variables, when Emacs supports multiple faces on your
+terminal.
+
address@hidden calendar-load-hook
+  The variable @code{calendar-load-hook} is a normal hook run when the
+calendar package is first loaded (before actually starting to display
+the calendar).
+
address@hidden initial-calendar-window-hook
+  Starting the calendar runs the normal hook
address@hidden  Recomputation of the calendar
+display does not run this hook.  But if you leave the calendar with the
address@hidden command and reenter it, the hook runs address@hidden
+
address@hidden today-visible-calendar-hook
+  The variable @code{today-visible-calendar-hook} is a normal hook run
+after the calendar buffer has been prepared with the calendar when the
+current date is visible in the window.  One use of this hook is to
+replace today's date with asterisks; to do that, use the hook function
address@hidden
+
address@hidden calendar-star-date
address@hidden
+(add-hook 'today-visible-calendar-hook 'calendar-star-date)
address@hidden example
+
address@hidden
+Another standard hook function marks the current date, either by
+changing its face or by adding an asterisk.  Here's how to use it:
+
address@hidden calendar-mark-today
address@hidden
+(add-hook 'today-visible-calendar-hook 'calendar-mark-today)
address@hidden example
+
address@hidden
address@hidden calendar-today-marker
+The variable @code{calendar-today-marker} specifies how to mark today's
+date.  Its value should be a character to insert next to the date or a
+face name to use for displaying the date.  A face named
address@hidden is provided for this purpose; that symbol is
+the default for this variable when Emacs supports multiple faces on your
+terminal.
+
address@hidden today-invisible-calendar-hook
address@hidden
+  A similar normal hook, @code{today-invisible-calendar-hook} is run if
+the current date is @emph{not} visible in the window.
+
address@hidden Holiday Customizing
address@hidden Customizing the Holidays
+
address@hidden calendar-holidays
address@hidden christian-holidays
address@hidden hebrew-holidays
address@hidden islamic-holidays
+  Emacs knows about holidays defined by entries on one of several lists.
+You can customize these lists of holidays to your own needs, adding or
+deleting holidays.  The lists of holidays that Emacs uses are for
+general holidays (@code{general-holidays}), local holidays
+(@code{local-holidays}), Christian holidays (@code{christian-holidays}),
+Hebrew (Jewish) holidays (@code{hebrew-holidays}), Islamic (Moslem)
+holidays (@code{islamic-holidays}), and other holidays
+(@code{other-holidays}).
+
address@hidden general-holidays
+  The general holidays are, by default, holidays common throughout the
+United States.  To eliminate these holidays, set @code{general-holidays}
+to @code{nil}.
+
address@hidden local-holidays
+  There are no default local holidays (but sites may supply some).  You
+can set the variable @code{local-holidays} to any list of holidays, as
+described below.
+
address@hidden all-christian-calendar-holidays
address@hidden all-hebrew-calendar-holidays
address@hidden all-islamic-calendar-holidays
+  By default, Emacs does not include all the holidays of the religions
+that it knows, only those commonly found in secular calendars.  For a
+more extensive collection of religious holidays, you can set any (or
+all) of the variables @code{all-christian-calendar-holidays},
address@hidden, or
address@hidden to @code{t}.  If you want to
+eliminate the religious holidays, set any or all of the corresponding
+variables @code{christian-holidays}, @code{hebrew-holidays}, and
address@hidden to @address@hidden
+
address@hidden other-holidays
+  You can set the variable @code{other-holidays} to any list of
+holidays.  This list, normally empty, is intended for individual use.
+
address@hidden holiday forms
+  Each of the lists (@code{general-holidays}, @code{local-holidays},
address@hidden, @code{hebrew-holidays},
address@hidden, and @code{other-holidays}) is a list of
address@hidden forms}, each holiday form describing a holiday (or
+sometimes a list of holidays).
+
+  Here is a table of the possible kinds of holiday form.  Day numbers
+and month numbers count starting from 1, but ``dayname'' numbers
+count Sunday as 0.  The element @var{string} is always the
+name of the holiday, as a string.
+
address@hidden @code
address@hidden (holiday-fixed @var{month} @var{day} @var{string})
+A fixed date on the Gregorian calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-float @var{month} @var{dayname} @var{k} @var{string})
+The @var{k}th @var{dayname} in @var{month} on the Gregorian calendar
+(@var{dayname}=0 for Sunday, and so on); negative @var{k} means count back
+from the end of the month.  @var{string} is the name of the holiday.
+
address@hidden (holiday-hebrew @var{month} @var{day} @var{string})
+A fixed date on the Hebrew calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-islamic @var{month} @var{day} @var{string})
+A fixed date on the Islamic calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-julian @var{month} @var{day} @var{string})
+A fixed date on the Julian calendar.  @var{month} and @var{day} are
+numbers, @var{string} is the name of the holiday.
+
address@hidden (holiday-sexp @var{sexp} @var{string})
+A date calculated by the Lisp expression @var{sexp}.  The expression
+should use the variable @code{year} to compute and return the date of a
+holiday, or @code{nil} if the holiday doesn't happen this year.  The
+value of @var{sexp} must represent the date as a list of the form
address@hidden(@var{month} @var{day} @var{year})}.  @var{string} is the name of
+the holiday.
+
address@hidden (if @var{condition} @var{holiday-form} &optional 
@var{holiday-form})
+A holiday that happens only if @var{condition} is true.
+
address@hidden (@var{function} @address@hidden@r{]})
+A list of dates calculated by the function @var{function}, called with
+arguments @var{args}.
address@hidden table
+
+  For example, suppose you want to add Bastille Day, celebrated in
+France on July 14.  You can do this by adding the following line
+to your init file:
+
address@hidden
+(setq other-holidays '((holiday-fixed 7 14 "Bastille Day")))
address@hidden smallexample
+
address@hidden File}.
+
address@hidden
+The holiday form @code{(holiday-fixed 7 14 "Bastille Day")} specifies the
+fourteenth day of the seventh month (July).
+
+  Many holidays occur on a specific day of the week, at a specific time
+of month.  Here is a holiday form describing Hurricane Supplication Day,
+celebrated in the Virgin Islands on the fourth Monday in August:
+
address@hidden
+(holiday-float 8 1 4 "Hurricane Supplication Day")
address@hidden smallexample
+
address@hidden
+Here the 8 specifies August, the 1 specifies Monday (Sunday is 0,
+Tuesday is 2, and so on), and the 4 specifies the fourth occurrence in
+the month (1 specifies the first occurrence, 2 the second occurrence,
address@hidden the last occurrence, @minus{}2 the second-to-last occurrence, and
+so on).
+
+  You can specify holidays that occur on fixed days of the Hebrew,
+Islamic, and Julian calendars too.  For example,
+
address@hidden
+(setq other-holidays
+      '((holiday-hebrew 10 2 "Last day of Hanukkah")
+        (holiday-islamic 3 12 "Mohammed's Birthday")
+        (holiday-julian 4 2 "Jefferson's Birthday")))
address@hidden smallexample
+
address@hidden
+adds the last day of Hanukkah (since the Hebrew months are numbered with
+1 starting from Nisan), the Islamic feast celebrating Mohammed's
+birthday (since the Islamic months are numbered from 1 starting with
+Muharram), and Thomas Jefferson's birthday, which is 2 April 1743 on the
+Julian calendar.
+
+  To include a holiday conditionally, use either Emacs Lisp's @code{if} or the
address@hidden form.  For example, American presidential elections
+occur on the first Tuesday after the first Monday in November of years
+divisible by 4:
+
address@hidden
+(holiday-sexp (if (= 0 (% year 4))
+                   (calendar-gregorian-from-absolute
+                 (1+ (calendar-dayname-on-or-before
+                       1 (+ 6 (calendar-absolute-from-gregorian
+                                (list 11 1 year))))))
+              "US Presidential Election"))
address@hidden smallexample
+
address@hidden
+or
+
address@hidden
+(if (= 0 (% displayed-year 4))
+    (fixed 11
+           (extract-calendar-day
+             (calendar-gregorian-from-absolute
+               (1+ (calendar-dayname-on-or-before
+                     1 (+ 6 (calendar-absolute-from-gregorian
+                              (list 11 1 displayed-year)))))))
+           "US Presidential Election"))
address@hidden smallexample
+
+  Some holidays just don't fit into any of these forms because special
+calculations are involved in their determination.  In such cases you
+must write a Lisp function to do the calculation.  To include eclipses,
+for example, add @code{(eclipses)} to @code{other-holidays}
+and write an Emacs Lisp function @code{eclipses} that returns a
+(possibly empty) list of the relevant Gregorian dates among the range
+visible in the calendar window, with descriptive strings, like this:
+
address@hidden
+(((6 27 1991) "Lunar Eclipse") ((7 11 1991) "Solar Eclipse") ... )
address@hidden smallexample
+
address@hidden Date Display Format
address@hidden Date Display Format
address@hidden calendar-date-display-form
+
+  You can customize the manner of displaying dates in the diary, in mode
+lines, and in messages by setting @code{calendar-date-display-form}.
+This variable holds a list of expressions that can involve the variables
address@hidden, @code{day}, and @code{year}, which are all numbers in
+string form, and @code{monthname} and @code{dayname}, which are both
+alphabetic strings.  In the American style, the default value of this
+list is as follows:
+
address@hidden
+((if dayname (concat dayname ", ")) monthname " " day ", " year)
address@hidden smallexample
+
address@hidden
+while in the European style this value is the default:
+
address@hidden
+((if dayname (concat dayname ", ")) day " " monthname " " year)
address@hidden smallexample
+
address@hidden
+The ISO standard date representation is this:
+
address@hidden
+(year "-" month "-" day)
address@hidden smallexample
+
address@hidden
+This specifies a typical American format:
+
address@hidden
+(month "/" day "/" (substring year -2))
address@hidden smallexample
+
address@hidden Time Display Format
address@hidden Time Display Format
address@hidden calendar-time-display-form
+
+  The calendar and diary by default display times of day in the
+conventional American style with the hours from 1 through 12, minutes,
+and either @samp{am} or @samp{pm}.  If you prefer the European style,
+also known in the US as military, in which the hours go from 00 to 23,
+you can alter the variable @code{calendar-time-display-form}.  This
+variable is a list of expressions that can involve the variables
address@hidden, @code{24-hours}, and @code{minutes}, which are all
+numbers in string form, and @code{am-pm} and @code{time-zone}, which are
+both alphabetic strings.  The default value of
address@hidden is as follows:
+
address@hidden
+(12-hours ":" minutes am-pm
+          (if time-zone " (") time-zone (if time-zone ")"))
address@hidden smallexample
+
address@hidden
+Here is a value that provides European style times:
+
address@hidden
+(24-hours ":" minutes
+          (if time-zone " (") time-zone (if time-zone ")"))
address@hidden smallexample
+
address@hidden
+gives military-style times like @samp{21:07 (UT)} if time zone names are
+defined, and times like @samp{21:07} if they are not.
+
address@hidden Daylight Savings
address@hidden Daylight Savings Time
address@hidden daylight savings time
+
+  Emacs understands the difference between standard time and daylight
+savings time---the times given for sunrise, sunset, solstices,
+equinoxes, and the phases of the moon take that into account.  The rules
+for daylight savings time vary from place to place and have also varied
+historically from year to year.  To do the job properly, Emacs needs to
+know which rules to use.
+
+  Some operating systems keep track of the rules that apply to the place
+where you are; on these systems, Emacs gets the information it needs
+from the system automatically.  If some or all of this information is
+missing, Emacs fills in the gaps with the rules currently used in
+Cambridge, Massachusetts.  If the resulting rules are not what you want,
+you can tell Emacs the rules to use by setting certain variables.
+
address@hidden calendar-daylight-savings-starts
address@hidden calendar-daylight-savings-ends
+  If the default choice of rules is not appropriate for your location,
+you can tell Emacs the rules to use by setting the variables
address@hidden and
address@hidden  Their values should be Lisp
+expressions that refer to the variable @code{year}, and evaluate to the
+Gregorian date on which daylight savings time starts or (respectively)
+ends, in the form of a list @code{(@var{month} @var{day} @var{year})}.
+The values should be @code{nil} if your area does not use daylight
+savings time.
+
+  Emacs uses these expressions to determine the starting date of
+daylight savings time for the holiday list  and for correcting times of
+day in the solar and lunar calculations.
+ 
+  The values for Cambridge, Massachusetts are as follows:
+
address@hidden
address@hidden
+(calendar-nth-named-day 1 0 4 year)
+(calendar-nth-named-day -1 0 10 year)
address@hidden group
address@hidden example
+
address@hidden
+That is, the first 0th day (Sunday) of the fourth month (April) in
+the year specified by @code{year}, and the last Sunday of the tenth month
+(October) of that year.  If daylight savings time were
+changed to start on October 1, you would set
address@hidden to this:
+
address@hidden
+(list 10 1 year)
address@hidden example
+
+  For a more complex example, suppose daylight savings time begins on
+the first of Nisan on the Hebrew calendar.  You should set
address@hidden to this value:
+
address@hidden
+(calendar-gregorian-from-absolute
+  (calendar-absolute-from-hebrew
+    (list 1 1 (+ year 3760))))
address@hidden example
+
address@hidden
+because Nisan is the first month in the Hebrew calendar and the Hebrew
+year differs from the Gregorian year by 3760 at Nisan.
+
+  If there is no daylight savings time at your location, or if you want
+all times in standard time, set @code{calendar-daylight-savings-starts}
+and @code{calendar-daylight-savings-ends} to @code{nil}.
+
address@hidden calendar-daylight-time-offset
+  The variable @code{calendar-daylight-time-offset} specifies the
+difference between daylight savings time and standard time, measured in
+minutes.  The value for Cambridge, Massachusetts is 60.
+
address@hidden @vindex calendar-daylight-savings-starts-time  too long!
address@hidden calendar-daylight-savings-ends-time
+  The two variables @code{calendar-daylight-savings-starts-time} and
address@hidden specify the number of minutes
+after midnight local time when the transition to and from daylight
+savings time should occur.  For Cambridge, Massachusetts both variables'
+values are 120.
+ 
address@hidden Diary Customizing
address@hidden Customizing the Diary
+
address@hidden holidays-in-diary-buffer
+  Ordinarily, the mode line of the diary buffer window indicates any
+holidays that fall on the date of the diary entries.  The process of
+checking for holidays can take several seconds, so including holiday
+information delays the display of the diary buffer noticeably.  If you'd
+prefer to have a faster display of the diary buffer but without the
+holiday information, set the variable @code{holidays-in-diary-buffer} to
address@hidden@refill
+
address@hidden number-of-diary-entries
+  The variable @code{number-of-diary-entries} controls the number of
+days of diary entries to be displayed at one time.  It affects the
+initial display when @code{view-diary-entries-initially} is @code{t}, as
+well as the command @kbd{M-x diary}.  For example, the default value is
+1, which says to display only the current day's diary entries.  If the
+value is 2, both the current day's and the next day's entries are
+displayed.  The value can also be a vector of seven elements: for
+example, if the value is @code{[0 2 2 2 2 4 1]} then no diary entries
+appear on Sunday, the current date's and the next day's diary entries
+appear Monday through Thursday, Friday through Monday's entries appear
+on Friday, while on Saturday only that day's entries appear.
+
address@hidden print-diary-entries-hook
address@hidden print-diary-entries
+  The variable @code{print-diary-entries-hook} is a normal hook run
+after preparation of a temporary buffer containing just the diary
+entries currently visible in the diary buffer.  (The other, irrelevant
+diary entries are really absent from the temporary buffer; in the diary
+buffer, they are merely hidden.)  The default value of this hook does
+the printing with the command @code{lpr-buffer}.  If you want to use a
+different command to do the printing, just change the value of this
+hook.  Other uses might include, for example, rearranging the lines into
+order by day and time.
+
address@hidden diary-date-forms
+  You can customize the form of dates in your diary file, if neither the
+standard American nor European styles suits your needs, by setting the
+variable @code{diary-date-forms}.  This variable is a list of patterns
+for recognizing a date.  Each date pattern is a list whose elements may
+be regular expressions (@pxref{Regexps}) or the symbols
address@hidden, @code{day}, @code{year}, @code{monthname}, and
address@hidden  All these elements serve as patterns that match certain
+kinds of text in the diary file.  In order for the date pattern, as a
+whole, to match, all of its elements must match consecutively.
+
+  A regular expression in a date pattern matches in its usual fashion,
+using the standard syntax table altered so that @samp{*} is a word
+constituent.
+
+  The symbols @code{month}, @code{day}, @code{year}, @code{monthname},
+and @code{dayname} match the month number, day number, year number,
+month name, and day name of the date being considered.  The symbols that
+match numbers allow leading zeros; those that match names allow
+three-letter abbreviations and capitalization.  All the symbols can
+match @samp{*}; since @samp{*} in a diary entry means ``any day'', ``any
+month'', and so on, it should match regardless of the date being
+considered.
+
+  The default value of @code{diary-date-forms} in the American style is
+this:
+
address@hidden
+((month "/" day "[^/0-9]")
+ (month "/" day "/" year "[^0-9]")
+ (monthname " *" day "[^,0-9]")
+ (monthname " *" day ", *" year "[^0-9]")
+ (dayname "\\W"))
address@hidden example
+
address@hidden
+Emacs matches of the diary entries with the date forms is done with the
+standard syntax table from Fundamental mode
+(@pxref{Syntax Tables,,,lispref,XEmacs Lisp Reference Manual}),
+but with the @samp{*} changed so that it is a word address@hidden
+
+  The date patterns in the list must be @emph{mutually exclusive} and
+must not match any portion of the diary entry itself, just the date and
+one character of whitespace.  If, to be mutually exclusive, the pattern
+must match a portion of the diary entry text---beyond the whitespace
+that ends the date---then the first element of the date pattern
address@hidden be @code{backup}.  This causes the date recognizer to back
+up to the beginning of the current word of the diary entry, after
+finishing the match.  Even if you use @code{backup}, the date pattern
+must absolutely not match more than a portion of the first word of the
+diary entry.  The default value of @code{diary-date-forms} in the
+European style is this list:
+
address@hidden
+((day "/" month "[^/0-9]")
+ (day "/" month "/" year "[^0-9]")
+ (backup day " *" monthname "\\W+\\<[^*0-9]")
+ (day " *" monthname " *" year "[^0-9]")
+ (dayname "\\W"))
address@hidden example
+
address@hidden
+Notice the use of @code{backup} in the third pattern, because it needs
+to match part of a word beyond the date itself to distinguish it from
+the fourth pattern.
+ 
address@hidden Hebrew/Islamic Entries
address@hidden Hebrew- and Islamic-Date Diary Entries
+
+  Your diary file can have entries based on Hebrew or Islamic dates, as
+well as entries based on the world-standard Gregorian calendar.
+However, because recognition of such entries is time-consuming and most
+people don't use them, you must explicitly enable their use.  If you
+want the diary to recognize Hebrew-date diary entries, for example, 
+you must do this:
+ 
address@hidden nongregorian-diary-listing-hook
address@hidden nongregorian-diary-marking-hook
address@hidden list-hebrew-diary-entries
address@hidden mark-hebrew-diary-entries
address@hidden
+(add-hook 'nongregorian-diary-listing-hook 'list-hebrew-diary-entries)
+(add-hook 'nongregorian-diary-marking-hook 'mark-hebrew-diary-entries)
address@hidden smallexample
+
address@hidden
+If you want Islamic-date entries, do this:
+
address@hidden list-islamic-diary-entries
address@hidden mark-islamic-diary-entries
address@hidden
+(add-hook 'nongregorian-diary-listing-hook 'list-islamic-diary-entries)
+(add-hook 'nongregorian-diary-marking-hook 'mark-islamic-diary-entries)
address@hidden smallexample
+
+  Hebrew- and Islamic-date diary entries have the same formats as
+Gregorian-date diary entries, except that @samp{H} precedes a Hebrew
+date and @samp{I} precedes an Islamic date.  Moreover, because the
+Hebrew and Islamic month names are not uniquely specified by the first
+three letters, you may not abbreviate them.  For example, a diary entry
+for the Hebrew date Heshvan 25 could look like this:
+
address@hidden
+HHeshvan 25 Happy Hebrew birthday!
address@hidden smallexample
+
address@hidden
+and would appear in the diary for any date that corresponds to Heshvan 25
+on the Hebrew calendar.  And here is  Islamic-date diary entry  that matches
+Dhu al-Qada 25:
+
address@hidden
+IDhu al-Qada 25 Happy Islamic birthday!
address@hidden smallexample
+
address@hidden
+and would appear in the diary for any date that corresponds to Dhu al-Qada 25
+on the Islamic calendar.
+
+  As with Gregorian-date diary entries, Hebrew- and Islamic-date entries
+are nonmarking if they are preceded with an ampersand (@samp{&}).
+
+  Here is a table of commands used in the calendar to create diary entries
+that match the selected date and other dates that are similar in the Hebrew
+or Islamic calendar:
+ 
address@hidden @kbd
address@hidden i h d
+Add a diary entry for the Hebrew date corresponding to the selected date
+(@code{insert-hebrew-diary-entry}).
address@hidden i h m
+Add a diary entry for the day of the Hebrew month corresponding to the
+selected date (@code{insert-monthly-hebrew-diary-entry}).  This diary
+entry matches any date that has the same Hebrew day-within-month as the
+selected date.
address@hidden i h y
+Add a diary entry for the day of the Hebrew year corresponding to the
+selected date (@code{insert-yearly-hebrew-diary-entry}).  This diary 
+entry matches any date which has the same Hebrew month and day-within-month
+as the selected date.
address@hidden i i d
+Add a diary entry for the Islamic date corresponding to the selected date
+(@code{insert-islamic-diary-entry}).
address@hidden i i m
+Add a diary entry for the day of the Islamic month corresponding to the
+selected date (@code{insert-monthly-islamic-diary-entry}).
address@hidden i i y
+Add a diary entry for the day of the Islamic year corresponding to the
+selected date (@code{insert-yearly-islamic-diary-entry}).
address@hidden table
+
address@hidden insert-hebrew-diary-entry
address@hidden insert-monthly-hebrew-diary-entry
address@hidden insert-yearly-hebrew-diary-entry
address@hidden insert-islamic-diary-entry
address@hidden insert-monthly-islamic-diary-entry
address@hidden insert-yearly-islamic-diary-entry
+  These commands work much like the corresponding commands for ordinary
+diary entries: they apply to the date that point is on in the calendar
+window, and what they do is insert just the date portion of a diary entry
+at the end of your diary file.  You must then insert the rest of the 
+diary entry.
+ 
address@hidden Fancy Diary Display
address@hidden Fancy Diary Display
address@hidden diary-display-hook
address@hidden simple-diary-display
+
+  Diary display works by preparing the diary buffer and then running the
+hook @code{diary-display-hook}.  The default value of this hook
+(@code{simple-diary-display}) hides the irrelevant diary entries and
+then displays the buffer.  However, if you specify the hook as follows,
+ 
address@hidden diary buffer
address@hidden fancy-diary-display
address@hidden
+(add-hook 'diary-display-hook 'fancy-diary-display)
address@hidden example
+
address@hidden
+this enables fancy diary display.  It displays diary entries and
+holidays by copying them into a special buffer that exists only for the
+sake of display.  Copying to a separate buffer provides an opportunity
+to change the displayed text to make it prettier---for example, to sort
+the entries by the dates they apply to.
+
+  As with simple diary display, you can print a hard copy of the buffer
+with @code{print-diary-entries}.  To print a hard copy of a day-by-day
+diary for a week by positioning point on Sunday of that week, type
address@hidden d} and then do @kbd{M-x print-diary-entries}.  As usual, the
+inclusion of the holidays slows down the display slightly; you can speed
+things up by setting the variable @code{holidays-in-diary-buffer} to
address@hidden
+
address@hidden diary-list-include-blanks
+  Ordinarily, the fancy diary buffer does not show days for which there are
+no diary entries, even if that day is a holiday.  If you want such days to be
+shown in the fancy diary buffer, set the variable
address@hidden to @address@hidden
+
address@hidden sorting diary entries
+  If you use the fancy diary display, you can use the normal hook
address@hidden to sort each day's diary entries by their
+time of day.  Add this line to your init file:
+
address@hidden sort-diary-entries
address@hidden
+(add-hook 'list-diary-entries-hook 'sort-diary-entries t)
address@hidden example
+
address@hidden File}.
+
address@hidden
+For each day, this sorts diary entries that begin with a recognizable
+time of day according to their times.  Diary entries without times come
+first within each day.
+
address@hidden Included Diary Files
address@hidden Included Diary Files
+
+  Fancy diary display also has the ability to process included diary
+files.  This permits a group of people to share a diary file for events
+that apply to all of them.  Lines in the diary file of this form:
+ 
address@hidden
+#include "@var{filename}"
address@hidden smallexample
+
address@hidden
+includes the diary entries from the file @var{filename} in the fancy
+diary buffer.  The include mechanism is recursive, so that included files
+can include other files, and so on; you must be careful not to have a
+cycle of inclusions, of course.  Here is how to enable the include
+facility:
+
address@hidden list-diary-entries-hook
address@hidden mark-diary-entries-hook
address@hidden include-other-diary-files
address@hidden mark-included-diary-files
address@hidden
+(add-hook 'list-diary-entries-hook 'include-other-diary-files)
+(add-hook 'mark-diary-entries-hook 'mark-included-diary-files)
address@hidden smallexample
+
+The include mechanism works only with the fancy diary display, because
+ordinary diary display shows the entries directly from your diary file.
+
address@hidden Sexp Diary Entries
address@hidden Sexp Entries and the Fancy Diary Display
address@hidden sexp diary entries
+
+  Sexp diary entries allow you to do more than just have complicated
+conditions under which a diary entry applies.  If you use the fancy
+diary display, sexp entries can generate the text of the entry depending
+on the date itself.  For example, an anniversary diary entry can insert
+the number of years since the anniversary date into the text of the
+diary entry.  Thus the @samp{%d} in this dairy entry:
+
address@hidden diary-anniversary
address@hidden
+%%(diary-anniversary 10 31 1948) Arthur's birthday (%d years old)
address@hidden smallexample
+
address@hidden
+gets replaced by the age, so on October 31, 1990 the entry appears in
+the fancy diary buffer like this:
+
address@hidden
+Arthur's birthday (42 years old)
address@hidden smallexample
+
address@hidden
+If the diary file instead contains this entry:
+
address@hidden
+%%(diary-anniversary 10 31 1948) Arthur's %d%s birthday
address@hidden smallexample
+
address@hidden
+the entry in the fancy diary buffer for October 31, 1990 appears like this:
+
address@hidden
+Arthur's 42nd birthday
address@hidden smallexample
+
+  Similarly, cyclic diary entries can interpolate the number of repetitions
+that have occurred:
+
address@hidden diary-cyclic
address@hidden
+%%(diary-cyclic 50 1 1 1990) Renew medication (%d%s time)
address@hidden smallexample
+
address@hidden
+looks like this:
+
address@hidden
+Renew medication (5th time)
address@hidden smallexample
+
address@hidden
+in the fancy diary display on September 8, 1990.
+
+  The generality of sexp diary entries lets you specify any diary entry
+that you can describe algorithmically.  A sexp diary entry contains an
+expression that computes whether the entry applies to any given date.
+If its value is address@hidden, the entry applies to that date;
+otherwise, it does not.  The expression can use the variable  @code{date}
+to find the date being considered; its value is a list (@var{month}
address@hidden @var{year}) that refers to the Gregorian calendar.
+
+  Suppose you get paid on the 21st of the month if it is a weekday, and
+on the Friday before if the 21st is on a weekend.  Here is how to write
+a sexp diary entry that matches those dates:
+
address@hidden
+&%%(let ((dayname (calendar-day-of-week date))
+         (day (car (cdr date))))
+      (or (and (= day 21) (memq dayname '(1 2 3 4 5)))
+          (and (memq day '(19 20)) (= dayname 5)))
+         ) Pay check deposited
address@hidden smallexample
+
address@hidden
+applies to just those dates.  This example illustrates how the sexp can
+depend on the variable @code{date}; this variable is a list (@var{month}
address@hidden @var{year}) that gives the Gregorian date for which the diary
+entries are being found.  If the value of the expression is @code{t},
+the entry applies to that date.  If the expression evaluates to
address@hidden, the entry does @emph{not} apply to that date.
+
+  The following sexp diary entries take advantage of the ability (in the fancy
+diary display) to concoct diary entries whose text varies based on the date:
+
address@hidden diary-sunrise-sunset
address@hidden diary-phases-of-moon
address@hidden diary-day-of-year
address@hidden diary-iso-date
address@hidden diary-julian-date
address@hidden diary-astro-day-number
address@hidden diary-hebrew-date
address@hidden diary-islamic-date
address@hidden diary-french-date
address@hidden diary-mayan-date
address@hidden @code
address@hidden %%(diary-sunrise-sunset)
+Make a diary entry for the local times of today's sunrise and sunset.
address@hidden %%(diary-phases-of-moon)
+Make a diary entry for the phases (quarters) of the moon.
address@hidden %%(diary-day-of-year)
+Make a diary entry with today's day number in the current year and the number
+of days remaining in the current year.
address@hidden %%(diary-iso-date)
+Make a diary entry with today's equivalent ISO commercial date.
address@hidden %%(diary-julian-date)
+Make a diary entry with today's equivalent date on the Julian calendar.
address@hidden %%(diary-astro-day-number)
+Make a diary entry with today's equivalent astronomical (Julian) day number.
address@hidden %%(diary-hebrew-date)
+Make a diary entry with today's equivalent date on the Hebrew calendar.
address@hidden %%(diary-islamic-date)
+Make a diary entry with today's equivalent date on the Islamic calendar.
address@hidden %%(diary-french-date)
+Make a diary entry with today's equivalent date on the French Revolutionary
+calendar.
address@hidden %%(diary-mayan-date)
+Make a diary entry with today's equivalent date on the Mayan calendar.
address@hidden table
+
address@hidden
+Thus including the diary entry
+
address@hidden
+&%%(diary-hebrew-date)
address@hidden smallexample
+
address@hidden
+causes every day's diary display to contain the equivalent date on the
+Hebrew calendar, if you are using the fancy diary display.  (With simple
+diary display, the line @samp{&%%(diary-hebrew-date)} appears in the
+diary for any date, but does nothing particularly useful.)
+
+  These functions can be used to construct sexp diary entries based on
+the Hebrew calendar in certain standard ways:
+ 
address@hidden rosh hodesh
address@hidden diary-rosh-hodesh
address@hidden parasha, weekly
address@hidden diary-parasha
address@hidden candle lighting times
address@hidden diary-sabbath-candles
address@hidden omer count
address@hidden diary-omer
address@hidden yahrzeits
address@hidden diary-yahrzeit
address@hidden @code
address@hidden %%(diary-rosh-hodesh)
+Make a diary entry that tells the occurrence and ritual announcement of each
+new Hebrew month.
address@hidden %%(diary-parasha)
+Make a Saturday diary entry that tells the weekly synagogue scripture reading.
address@hidden %%(diary-sabbath-candles)
+Make a Friday diary entry that tells the @emph{local time} of Sabbath
+candle lighting.
address@hidden %%(diary-omer)
+Make a diary entry that gives the omer count, when appropriate.
address@hidden %%(diary-yahrzeit @var{month} @var{day} @var{year}) @var{name}
+Make a diary entry marking the anniversary of a date of death.  The date
+is the @emph{Gregorian} (civil) date of death.  The diary entry appears
+on the proper Hebrew calendar anniversary and on the day before.  (In
+the European style, the order of the parameters is changed to @var{day},
address@hidden, @var{year}.)
address@hidden table
+
address@hidden Appt Customizing
address@hidden Customizing Appointment Reminders
+
+  You can specify exactly how Emacs reminds you of an appointment, and
+how far in advance it begins doing so, by setting these variables:
+
address@hidden appt-message-warning-time
address@hidden appt-audible
address@hidden appt-visible
address@hidden appt-display-mode-line
address@hidden appt-msg-window
address@hidden appt-display-duration
address@hidden @code
address@hidden appt-message-warning-time
+The time in minutes before an appointment that the reminder begins.  The
+default is 10 minutes.
address@hidden appt-audible
+If this is @code{t} (the default), Emacs rings the terminal bell for
+appointment reminders.
address@hidden appt-visible
+If this is @code{t} (the default), Emacs displays the appointment
+message in echo area.
address@hidden appt-display-mode-line
+If this is @code{t} (the default), Emacs displays the number of minutes
+to the appointment on the mode line.
address@hidden appt-msg-window
+If this is @code{t} (the default), Emacs displays the appointment
+message in another window.
address@hidden appt-display-duration
+The number of seconds an appointment message is displayed.  The default
+is 5 seconds.
address@hidden table
+
+
address@hidden Sorting, Shell, Calendar/Diary, Top
address@hidden Sorting Text
address@hidden sorting
+
+  XEmacs provides several commands for sorting text in a buffer.  All
+operate on the contents of the region (the text between point and the
+mark).  They divide the text of the region into many @dfn{sort records},
+identify a @dfn{sort key} for each record, and then reorder the records
+using the order determined by the sort keys.  The records are ordered so
+that their keys are in alphabetical order, or, for numerical sorting, in
+numerical order.  In alphabetical sorting, all upper-case letters `A'
+through `Z' come before lower-case `a', in accordance with the ASCII
+character sequence.
+
+  The sort commands differ in how they divide the text into sort
+records and in which part of each record they use as the sort key.  Most of
+the commands make each line a separate sort record, but some commands use
+paragraphs or pages as sort records.  Most of the sort commands use each
+entire sort record as its own sort key, but some use only a portion of the
+record as the sort key.
+
address@hidden sort-lines
address@hidden sort-paragraphs
address@hidden sort-pages
address@hidden sort-fields
address@hidden sort-numeric-fields
address@hidden @kbd
address@hidden M-x sort-lines
+Divide the region into lines and sort by comparing the entire
+text of a line.  A prefix argument means sort in descending order.
+
address@hidden M-x sort-paragraphs
+Divide the region into paragraphs and sort by comparing the entire
+text of a paragraph (except for leading blank lines).  A prefix
+argument means sort in descending order.
+
address@hidden M-x sort-pages
+Divide the region into pages and sort by comparing the entire
+text of a page (except for leading blank lines).  A prefix
+argument means sort in descending order.
+
address@hidden M-x sort-fields
+Divide the region into lines and sort by comparing the contents of
+one field in each line.  Fields are defined as separated by
+whitespace, so the first run of consecutive non-whitespace characters
+in a line constitutes field 1, the second such run constitutes field
+2, etc.
+
+You specify which field to sort by with a numeric argument: 1 to sort
+by field 1, etc.  A negative argument means sort in descending
+order.  Thus, minus 2 means sort by field 2 in reverse-alphabetical
+order.
+
address@hidden M-x sort-numeric-fields
+Like @kbd{M-x sort-fields}, except the specified field is converted
+to a number for each line and the numbers are compared.  @samp{10}
+comes before @samp{2} when considered as text, but after it when
+considered as a number.
+
address@hidden M-x sort-columns
+Like @kbd{M-x sort-fields}, except that the text within each line
+used for comparison comes from a fixed range of columns.  An explanation
+is given below.
address@hidden table
+
+For example, if the buffer contains:
+
address@hidden
+On systems where clash detection (locking of files being edited) is
+implemented, XEmacs also checks the first time you modify a buffer
+whether the file has changed on disk since it was last visited or
+saved.  If it has, you are asked to confirm that you want to change
+the buffer.
address@hidden smallexample
+
address@hidden
+then if you apply @kbd{M-x sort-lines} to the entire buffer you get:
+
address@hidden
+On systems where clash detection (locking of files being edited) is
+implemented, XEmacs also checks the first time you modify a buffer
+saved.  If it has, you are asked to confirm that you want to change
+the buffer.
+whether the file has changed on disk since it was last visited or
address@hidden smallexample
+
address@hidden
+where the upper case `O' comes before all lower case letters.  If you apply
+instead @kbd{C-u 2 M-x sort-fields} you get:
+
address@hidden
+saved.  If it has, you are asked to confirm that you want to change
+implemented, XEmacs also checks the first time you modify a buffer
+the buffer.
+On systems where clash detection (locking of files being edited) is
+whether the file has changed on disk since it was last visited or
address@hidden smallexample
+
address@hidden
+where the sort keys were @samp{If}, @samp{XEmacs}, @samp{buffer},
address@hidden, and @address@hidden
+
address@hidden sort-columns
+  @kbd{M-x sort-columns} requires more explanation.  You specify the
+columns by putting point at one of the columns and the mark at the other
+column.  Because this means you cannot put point or the mark at the
+beginning of the first line to sort, this command uses an unusual
+definition of `region': all of the line point is in is considered part of
+the region, and so is all of the line the mark is in.
+
+  For example, to sort a table by information found in columns 10 to 15,
+you could put the mark on column 10 in the first line of the table, and
+point on column 15 in the last line of the table, and then use this command.
+Or you could put the mark on column 15 in the first line and point on
+column 10 in the last line.
+
+  This can be thought of as sorting the rectangle specified by point and
+the mark, except that the text on each line to the left or right of the
+rectangle moves along with the text inside the rectangle.
address@hidden
+
address@hidden Shell, Narrowing, Sorting, Top
address@hidden Running Shell Commands from XEmacs
address@hidden subshell
address@hidden shell commands
+
+  XEmacs has commands for passing single command lines to inferior shell
+processes; it can also run a shell interactively with input and output to
+an XEmacs buffer @samp{*shell*}.
+
address@hidden @kbd
address@hidden M-!
+Run a specified shell command line and display the output
+(@code{shell-command}).
address@hidden M-|
+Run a specified shell command line with region contents as input;
+optionally replace the region with the output
+(@code{shell-command-on-region}).
address@hidden M-x shell
+Run a subshell with input and output through an XEmacs buffer.
+You can then give commands interactively.
address@hidden M-x term
+Run a subshell with input and output through an XEmacs buffer.
+You can then give commands interactively.
+Full terminal emulation is available.
address@hidden table
+
address@hidden
+* Single Shell::         How to run one shell command and return.
+* Interactive Shell::    Permanent shell taking input via XEmacs.
+* Shell Mode::           Special XEmacs commands used with permanent shell.
+* Terminal emulator::    An XEmacs window as a terminal emulator.
+* Term Mode::            Special XEmacs commands used in Term mode.
+* Paging in Term::       Paging in the terminal emulator.
address@hidden menu
+
address@hidden Single Shell, Interactive Shell, Shell, Shell
address@hidden Single Shell Commands
+
address@hidden M-!
address@hidden shell-command
+  @kbd{M-!} (@code{shell-command}) reads a line of text using the
+minibuffer and creates an inferior shell to execute the line as a command.
+Standard input from the command comes from the null device.  If the shell
+command produces any output, the output goes to an XEmacs buffer named
address@hidden Command Output*}, which is displayed in another window but not
+selected.  A numeric argument, as in @kbd{M-1 M-!}, directs this command to
+insert any output into the current buffer.  In that case, point is left
+before the output and the mark is set after the output.
+
address@hidden M-|
address@hidden shell-command-on-region
+  @kbd{M-|} (@code{shell-command-on-region}) is like @kbd{M-!} but passes
+the contents of the region as input to the shell command, instead of no
+input.  If a numeric argument is used to direct  output to the current
+buffer, then the old region is deleted first and the output replaces it as
+the contents of the address@hidden
+
address@hidden shell-file-name
address@hidden environment
+  Both @kbd{M-!} and @kbd{M-|} use @code{shell-file-name} to specify the
+shell to use.  This variable is initialized based on your @code{SHELL}
+environment variable when you start XEmacs.  If the file name does not
+specify a directory, the directories in the list @code{exec-path} are
+searched; this list is initialized based on the @code{PATH} environment
+variable when you start XEmacs.  You can override either or both of these
+default initializations in your init file. @xref{Init address@hidden
+
+  When you use @kbd{M-!} and @kbd{M-|}, XEmacs has to wait until the
+shell command completes.  You can quit with @kbd{C-g}; that terminates
+the shell command.
+
address@hidden Interactive Shell, Shell Mode, Single Shell, Shell
address@hidden Interactive Inferior Shell
+
address@hidden shell
+  To run a subshell interactively with its typescript in an XEmacs
+buffer, use @kbd{M-x shell}.  This creates (or reuses) a buffer named
address@hidden and runs a subshell with input coming from and output going
+to that buffer.  That is to say, any ``terminal output'' from the subshell
+will go into the buffer, advancing point, and any ``terminal input'' for
+the subshell comes from text in the buffer.  To give input to the subshell,
+go to the end of the buffer and type the input, terminated by @key{RET}.
+
+  XEmacs does not wait for the subshell to do anything.  You can switch
+windows or buffers and edit them while the shell is waiting, or while it is
+running a command.  Output from the subshell waits until XEmacs has time to
+process it; this happens whenever XEmacs is waiting for keyboard input or
+for time to elapse.
+
+ To get multiple subshells, change the name of buffer
address@hidden to something different by using @kbd{M-x rename-buffer}.  The
+next use of @kbd{M-x shell} creates a new buffer @samp{*shell*} with
+its own subshell.  By renaming this buffer as well you can create a third
+one, and so on.  All the subshells run independently and in parallel.
+
address@hidden explicit-shell-file-name
+  The file name used to load the subshell is the value of the variable
address@hidden, if that is address@hidden  Otherwise, the
+environment variable @code{ESHELL} is used, or the environment variable
address@hidden if there is no @code{ESHELL}.  If the file name specified
+is relative, the directories in the list @code{exec-path} are searched
+(@pxref{Single Shell,Single Shell Commands})address@hidden
+
+  As soon as the subshell is started, it is sent as input the contents of
+the file @file{~/address@hidden, if that file exists, where
address@hidden is the name of the file that the shell was loaded from.
+For example, if you use @code{csh}, the file sent to it is
address@hidden/address@hidden
+
address@hidden shell-pushd-regexp
address@hidden shell-popd-regexp
address@hidden shell-cd-regexp
+  @code{cd}, @code{pushd}, and @code{popd} commands given to the inferior
+shell are watched by XEmacs so it can keep the @samp{*shell*} buffer's
+default directory the same as the shell's working directory.  These
+commands are recognized syntactically by examining lines of input that are
+sent.  If you use aliases for these commands, you can tell XEmacs to
+recognize them also.  For example, if the value of the variable
address@hidden matches the beginning of a shell command line,
+that line is regarded as a @code{pushd} command.  Change this variable when
+you add aliases for @samp{pushd}.  Likewise, @code{shell-popd-regexp} and
address@hidden are used to recognize commands with the meaning of
address@hidden and @address@hidden
+
address@hidden shell-resync-dirs} queries the shell and resynchronizes XEmacs'
+idea of what the current directory stack is.  @kbd{M-x
+shell-dirtrack-toggle} turns directory tracking on and off.
+
address@hidden input-ring-size
+XEmacs keeps a history of the most recent commands you have typed in the
address@hidden buffer.  If you are at the beginning of a shell command
+line and type @key{M-p}, the previous shell input is inserted into the
+buffer before point.  Immediately typing @key{M-p} again deletes that
+input and inserts the one before it.  By repeating @key{M-p} you can
+move backward through your commands until you find one you want to
+repeat.  You may then edit the command before typing @key{RET} if you
+wish. @key{M-n} moves forward through the command history, in case you
+moved backward past the one you wanted while using @key{M-p}.  If you
+type the first few characters of a previous command and then type
address@hidden, the most recent shell input starting with those characters is
+inserted.  This can be very convenient when you are repeating a sequence
+of shell commands.  The variable @code{input-ring-size} controls how
+many commands are saved in your input history.  The default is 30.
+
+
address@hidden Shell Mode, Terminal emulator, Interactive Shell, Shell
address@hidden Shell Mode
+
address@hidden Shell mode
+  The shell buffer uses Shell mode, which defines several special keys
+attached to the @kbd{C-c} prefix.  They are chosen to resemble the usual
+editing and job control characters present in shells that are not under
+XEmacs, except that you must type @kbd{C-c} first.  Here is a list
+of the special key bindings of Shell mode:
+
address@hidden RET (Shell mode)
address@hidden C-c C-d (Shell mode)
address@hidden C-d (Shell mode)
address@hidden C-c C-u (Shell mode)
address@hidden C-c C-w (Shell mode)
address@hidden C-c C-c (Shell mode)
address@hidden C-c C-z (Shell mode)
address@hidden C-c C-\ (Shell mode)
address@hidden C-c C-o (Shell mode)
address@hidden C-c C-r (Shell mode)
address@hidden C-c C-y (Shell mode)
address@hidden M-p (Shell mode)
address@hidden M-n (Shell mode)
address@hidden TAB (Shell mode)
address@hidden send-shell-input
address@hidden shell-send-eof
address@hidden comint-delchar-or-maybe-eof
address@hidden interrupt-shell-subjob
address@hidden stop-shell-subjob
address@hidden quit-shell-subjob
address@hidden kill-output-from-shell
address@hidden show-output-from-shell
address@hidden copy-last-shell-input
address@hidden comint-previous-input
address@hidden comint-next-input
address@hidden comint-dynamic-complete
address@hidden shell-prompt-pattern
address@hidden @kbd
address@hidden @key{RET}
+At end of buffer send line as input; otherwise, copy current line to end of
+buffer and send it (@code{send-shell-input}).  When a line is copied, any
+text at the beginning of the line that matches the variable
address@hidden is left out; this variable's value should be a
+regexp string that matches the prompts that you use in your subshell.
address@hidden C-c C-d
+Send end-of-file as input, probably causing the shell or its current
+subjob to finish (@code{shell-send-eof}).
address@hidden C-d
+If point is not at the end of the buffer, delete the next character just
+like most other modes.  If point is at the end of the buffer, send
+end-of-file as input, instead of generating an error as in other modes
+(@code{comint-delchar-or-maybe-eof}).
address@hidden C-c C-u
+Kill all text that has yet to be sent as input (@code{kill-shell-input}).
address@hidden C-c C-w
+Kill a word before point (@code{backward-kill-word}).
address@hidden C-c C-c
+Interrupt the shell or its current subjob if any
+(@code{interrupt-shell-subjob}).
address@hidden C-c C-z
+Stop the shell or its current subjob if any (@code{stop-shell-subjob}).
address@hidden C-c C-\
+Send quit signal to the shell or its current subjob if any
+(@code{quit-shell-subjob}).
address@hidden C-c C-o
+Delete last batch of output from shell (@code{kill-output-from-shell}).
address@hidden C-c C-r
+Scroll top of last batch of output to top of window
+(@code{show-output-from-shell}).
address@hidden C-c C-y
+Copy the previous bunch of shell input and insert it into the
+buffer before point (@code{copy-last-shell-input}).  No final newline
+is inserted, and the input copied is not resubmitted until you type
address@hidden
address@hidden M-p
+Move backward through the input history.  Search for a matching command
+if you have typed the beginning of a command (@code{comint-previous-input}).
address@hidden M-n
+Move forward through the input history.  Useful when you are
+using @key{M-p} quickly and go past the desired command 
+(@code{comint-next-input}).
address@hidden @key{TAB}
+Complete the file name preceding point (@code{comint-dynamic-complete}).
address@hidden table
+
address@hidden Terminal emulator, Term Mode, Shell Mode, Shell
address@hidden Interactive Inferior Shell with Terminal Emulator
address@hidden term
+
+  To run a subshell in a terminal emulator, putting its typescript in an XEmacs
+buffer, use @kbd{M-x term}.  This creates (or reuses) a buffer named
address@hidden and runs a subshell with input coming from your keyboard and
+output going to that buffer.
+
+All the normal keys that you type are sent without any interpretation
+by XEmacs directly to the subshell, as ``terminal input.''
+Any ``echo'' of your input is the responsibility of the subshell.
+(The exception is the terminal escape character,
+which by default is @kbd{C-c}. @pxref{Term Mode}.)
+Any ``terminal output'' from the subshell goes into the buffer,
+advancing point.
+
+  Some programs (such as XEmacs itself) need to control the
+appearance on the terminal screen in detail.  They do this by
+sending special control codes.  The exact control
+codes needed vary from terminal to terminal, but nowadays
+most terminals and terminal emulators (including xterm)
+understand the so-called "ANSI escape sequences" (first
+popularized by the Digital's VT100 family of terminal).
+The term mode also understands these escape sequences,
+and for each control code does the appropriate thing
+to change the buffer so that the appearance of the window
+will match what it would be on a real terminal.
+Thus you can actually run XEmacs inside an XEmacs Term window!
+
+   XEmacs does not wait for the subshell to do anything.  You can switch
+windows or buffers and edit them while the shell is waiting, or while
+it is running a command.  Output from the subshell waits until XEmacs
+has time to process it; this happens whenever XEmacs is waiting for
+keyboard input or for time to elapse.
+
+   To make multiple terminal emulators, rename the buffer @samp{*term*}
+to something different using @kbd{M-x rename-uniquely},
+just as with Shell mode.
+
+   The file name used to load the subshell is determined
+the same way as for Shell mode.
+
+Unlike Shell mode, Term mode does not track the current directory
+by examining your input.  Instead, if you use a programmable
+shell, you can have it tell Term what the current directory is.
+This is done automatically by bash for version 1.15 and later.
+
address@hidden Term Mode, Paging in Term, Terminal emulator, Shell
address@hidden Term Mode
address@hidden Term mode
address@hidden mode, Term
+
+  Term uses Term mode, which has two input modes:
+In line mode, Term basically acts like Shell mode.  @xref{Shell Mode}.
+In Char mode, each character is sent directly to the inferior subshell,
+except for the Term escape character, normally @kbd{C-c}.
+
+To switch between line and char mode, use these commands:
address@hidden @kbd
address@hidden C-c C-j @r{(Term mode)}
+findex term-char-mode
address@hidden C-c C-j
+Switch to line mode.  Do nothing if already in line mode.
+
address@hidden C-c C-k @r{(Term mode)}
address@hidden term-line-mode
address@hidden C-c C-k
+Switch to char mode.  Do nothing if already in char mode.
address@hidden table
+
+The following commands are only available in Char mode:
address@hidden @kbd
address@hidden C-c C-c
+Send a literal @key{C-c} to the sub-shell.
+
address@hidden C-c C-x
+A prefix command to conveniently access the global @key{C-x} commands.
+For example, @kbd{C-c C-x o} invokes the global binding of
address@hidden o}, which is normally @samp{other-window}.
address@hidden table
+
address@hidden Paging in Term,, Term Mode, Shell
address@hidden Paging in the terminal emulator
+
+Term mode has a pager feature.  When the pager is enabled,
+term mode will pause at the end of each screenful.
+
address@hidden @kbd
address@hidden C-c C-q @r{(Term mode)}
address@hidden term-pager-toggle
address@hidden C-c C-q
+Toggles the pager feature:  Disables the pager if it is enabled,
+and vice versa.  This works in both line and char modes.
+If the pager enabled, the mode-line contains the word @samp{page}.
address@hidden table
+
+If the pager is enabled, and Term receives more than a screenful
+of output since your last input, Term will enter More break mode.
+This is indicated by @samp{**MORE**} in the mode-line.
+Type a @kbd{Space} to display the next screenful of output.
+Type @kbd{?} to see your other options.  The interface is similar
+to the Unix @samp{more} program.
+
address@hidden Narrowing, Hardcopy, Shell, Top
address@hidden Narrowing
address@hidden widening
address@hidden restriction
address@hidden narrowing
+
+  @dfn{Narrowing} means focusing in on some portion of the buffer, making
+the rest temporarily invisible and inaccessible.  Cancelling the narrowing
+and making the entire buffer once again visible is called @dfn{widening}.
+The amount of narrowing in effect in a buffer at any time is called the
+buffer's @dfn{restriction}.
+
address@hidden WideCommands
address@hidden @kbd
address@hidden C-x n n
+Narrow down to between point and mark (@code{narrow-to-region}).
address@hidden C-x n w
+Widen to make the entire buffer visible again (@code{widen}).
address@hidden table
+
+  Narrowing sometimes makes it easier to concentrate on a single
+subroutine or paragraph by eliminating clutter.  It can also be used to
+restrict the range of operation of a replace command or repeating
+keyboard macro.  The word @samp{Narrow} appears in the mode line
+whenever narrowing is in effect.  When you have narrowed to a part of the
+buffer, that part appears to be all there is.  You can't see the rest,
+can't move into it (motion commands won't go outside the visible part),
+and can't change it in any way.  However, the invisible text is not
+gone; if you save the file, it will be saved.
+
address@hidden C-x n n
address@hidden narrow-to-region
+  The primary narrowing command is @kbd{C-x n n} (@code{narrow-to-region}).
+It sets the current buffer's restrictions so that the text in the current
+region remains visible but all text before the region or after the region
+is invisible.  Point and mark do not change.
+
+  Because narrowing can easily confuse users who do not understand it,
address@hidden is normally a disabled command.  Attempting to use
+this command asks for confirmation and gives you the option of enabling it;
+once you enable the command, confirmation will no longer be required.  
@xref{Disabling}.
+
address@hidden C-x n w
address@hidden widen
+   To undo narrowing, use @kbd{C-x n w} (@code{widen}).  This makes all
+text in the buffer accessible again.
+
+   Use the @kbd{C-x =} command to get information on what part of the
+buffer you narrowed down.  @xref{Position Info}.
+
address@hidden Hardcopy, Recursive Edit, Narrowing, Top
address@hidden Hardcopy Output
address@hidden hardcopy
+
+  The XEmacs commands for making hardcopy derive their names from the
+Unix commands @samp{print} and @samp{lpr}.
+
address@hidden @kbd
address@hidden M-x print-buffer
+Print hardcopy of current buffer using Unix command @samp{print}
address@hidden(@samp{lpr -p}).  This command adds page headings containing the 
file name
+and page number.
address@hidden M-x lpr-buffer
+Print hardcopy of current buffer using Unix command @samp{lpr}.
+This command does not add page headings.
address@hidden M-x print-region
+Like @code{print-buffer}, but prints only the current region.
address@hidden M-x lpr-region
+Like @code{lpr-buffer}, but prints only the current region.
address@hidden table
+
address@hidden print-buffer
address@hidden print-region
address@hidden lpr-buffer
address@hidden lpr-region
address@hidden lpr-switches
+  All the hardcopy commands pass extra switches to the @code{lpr} program
+based on the value of the variable @code{lpr-switches}.  Its value should
+be a list of strings, each string a switch starting with @samp{-}.  For
+example, the value could be @code{("-Pfoo")} to print on printer
address@hidden
+
address@hidden Recursive Edit, Dissociated Press, Hardcopy, Top
address@hidden Recursive Editing Levels
address@hidden recursive editing level
address@hidden editing level, recursive
+
+  A @dfn{recursive edit} is a situation in which you are using XEmacs
+commands to perform arbitrary editing while in the middle of another
+XEmacs command.  For example, when you type @kbd{C-r} inside a
address@hidden, you enter a recursive edit in which you can change
+the current buffer.  When you exit from the recursive edit, you go back to
+the @code{query-replace}.
+
address@hidden C-M-c
address@hidden exit-recursive-edit
address@hidden exiting
+  @dfn{Exiting} a recursive edit means returning to the unfinished
+command, which continues execution.  For example, exiting the recursive
+edit requested by @kbd{C-r} in @code{query-replace} causes query replacing
+to resume.  Exiting is done with @kbd{C-M-c} (@code{exit-recursive-edit}).
+
address@hidden C-]
address@hidden abort-recursive-edit
+  You can also @dfn{abort} a recursive edit.  This is like exiting, but
+also quits the unfinished command immediately.  Use the command @kbd{C-]}
+(@code{abort-recursive-edit}) for this.  @xref{Quitting}.
+
+  The mode line shows you when you are in a recursive edit by displaying
+square brackets around the parentheses that always surround the major
+and minor mode names.  Every window's mode line shows the square
+brackets, since XEmacs as a whole, rather than any particular buffer, is
+in a recursive edit.
+
address@hidden top-level
+  It is possible to be in recursive edits within recursive edits.  For
+example, after typing @kbd{C-r} in a @code{query-replace}, you might
+type a command that entered the debugger.  In such a case, two or
+more sets of square brackets appear in the mode line(s).  Exiting the
+inner recursive edit (here with the debugger @kbd{c} command)
+resumes the query-replace command where it called the debugger.  After
+the end of the query-replace command, you would be able to exit the
+first recursive edit.  Aborting exits only one level of recursive edit;
+it returns to the command level of the previous recursive edit.  You can
+then abort that one as well.
+
+  The command @kbd{M-x top-level} aborts all levels of
+recursive edits, returning immediately to the top level command reader.
+
+  The text you edit inside the recursive edit need not be the same text
+that you were editing at top level.  If the command that invokes the
+recursive edit selects a different buffer first, that is the buffer you
+will edit recursively.  You can switch buffers within the recursive edit
+in the normal manner (as long as the buffer-switching keys have not been
+rebound).  While you could theoretically do the rest of your editing
+inside the recursive edit, including visiting files, this could have
+surprising effects (such as stack overflow) from time to time.  It is
+best if you always exit or abort a recursive edit when you no longer
+need it.
+
+  In general, XEmacs tries to avoid using recursive edits.  It is
+usually preferable to allow users to switch among the possible editing
+modes in any order they like.  With recursive edits, the only way to get
+to another state is to go ``back'' to the state that the recursive edit
+was invoked from.
+
address@hidden Dissociated Press, CONX, Recursive Edit, Top
address@hidden Dissociated Press
+
address@hidden dissociated-press
+  @kbd{M-x dissociated-press} is a command for scrambling a file of text
+either word by word or character by character.  Starting from a buffer of
+straight English, it produces extremely amusing output.  The input comes
+from the current XEmacs buffer.  Dissociated Press writes its output in a
+buffer named @samp{*Dissociation*}, and redisplays that buffer after every
+couple of lines (approximately) to facilitate reading it.
+
+  @code{dissociated-press} asks every so often whether to continue
+operating.  Answer @kbd{n} to stop it.  You can also stop at any time by
+typing @kbd{C-g}.  The dissociation output remains in the @samp{*Dissociation*}
+buffer for you to copy elsewhere if you wish.
+
address@hidden presidentagon
+  Dissociated Press operates by jumping at random from one point in the
+buffer to another.  In order to produce plausible output rather than
+gibberish, it insists on a certain amount of overlap between the end of one
+run of consecutive words or characters and the start of the next.  That is,
+if it has just printed out `president' and then decides to jump to a
+different point in the file, it might spot the `ent' in `pentagon' and
+continue from there, producing `presidentagon'.  Long sample texts produce
+the best results.
+
address@hidden againformation
+  A positive argument to @kbd{M-x dissociated-press} tells it to operate
+character by character, and specifies the number of overlap characters.  A
+negative argument tells it to operate word by word and specifies the number
+of overlap words.  In this mode, whole words are treated as the elements to
+be permuted, rather than characters.  No argument is equivalent to an
+argument of two.  For your againformation, the output goes only into the
+buffer @samp{*Dissociation*}.  The buffer you start with is not changed.
+
address@hidden Markov chain
address@hidden ignoriginal
address@hidden techniquitous
+  Dissociated Press produces nearly the same results as a Markov chain
+based on a frequency table constructed from the sample text.  It is,
+however, an independent, ignoriginal invention.  Dissociated Press
+techniquitously copies several consecutive characters from the sample
+between random choices, whereas a Markov chain would choose randomly for
+each word or character.  This makes for more plausible sounding results
+and runs faster.
+
address@hidden outragedy
address@hidden buggestion
address@hidden properbose
+  It is a mustatement that too much use of Dissociated Press can be a
+developediment to your real work.  Sometimes to the point of outragedy.
+And keep dissociwords out of your documentation, if you want it to be well
+userenced and properbose.  Have fun.  Your buggestions are welcome.
+
address@hidden CONX, Amusements, Dissociated Press, Top
address@hidden CONX
address@hidden random sentences
+
+Besides producing a file of scrambled text with Dissociated Press, you 
+can generate random sentences by using CONX.
+
address@hidden @kbd
address@hidden M-x conx
+Generate random sentences in the @code{*conx*} buffer.
address@hidden M-x conx-buffer
+Absorb the text in the current buffer into the @code{conx} database.
address@hidden M-x conx-init
+Forget the current word-frequency tree.
address@hidden M-x conx-load
+Load a @code{conx} database that has been previously saved with 
address@hidden conx-save}.
address@hidden M-x conx-region
+Absorb the text in the current buffer into the @code{conx} database.
address@hidden M-x conx-save
+Save the current @code{conx} database to a file for future retrieval.
address@hidden table
+
address@hidden conx
address@hidden conx-buffer
address@hidden conx-load
address@hidden conx-region
address@hidden conx-init
address@hidden conx-save
+
+Copy text from a buffer using @kbd{M-x conx-buffer} or @kbd{M-x conx-region}
+and then type @kbd{M-x conx}.  Output is continuously generated until you
+type @key{^G}. You can save the @code{conx} database to a file with
address@hidden conx-save}, which you can retrieve with @code{M-x conx-load}. 
+To clear the database, use @code{M-x conx-init}.
+
address@hidden Amusements, Emulation, CONX, Top
address@hidden Other Amusements
address@hidden boredom
address@hidden hanoi
address@hidden yow
+
+  If you are a little bit bored, you can try @kbd{M-x hanoi}.  If you are
+considerably bored, give it a numeric argument.  If you are very, very
+bored, try an argument of 9.  Sit back and watch.
+
+  When you are frustrated, try the famous Eliza program.  Just do
address@hidden doctor}.  End each input by typing @kbd{RET} twice.
+
+  When you are feeling strange, type @kbd{M-x yow}.
+
address@hidden Emulation, Customization, Amusements, Top
address@hidden  node-name,  next,  previous,  up
address@hidden Emulation
address@hidden other editors
address@hidden vi
address@hidden EDT
+
+  XEmacs can be programmed to emulate (more or less) most other
+editors.  Standard facilities can emulate these:
+
address@hidden @asis
address@hidden Viper (a vi emulator)
address@hidden Viper
+In XEmacs, Viper is the preferred emulation of vi within XEmacs.
+Viper is designed to allow you to take advantage of the best
+features of XEmacs while still doing your basic editing in a
+familiar, vi-like fashion.  Viper provides various different
+levels of vi emulation, from a quite complete emulation that
+allows almost no access to native XEmacs commands, to an
+``expert'' mode that combines the most useful vi commands with
+the most useful XEmacs commands.
+
+To start Viper, put the command
+
address@hidden
+(viper-mode)
address@hidden example
+
+in your init file.  @xref{Init File}.
+
+Viper comes with a separate manual that is provided standard
+with the XEmacs distribution.
+
+
address@hidden EDT (DEC VMS editor)
address@hidden edt-emulation-on
address@hidden edt-emulation-off
+Turn on EDT emulation with @kbd{M-x edt-emulation-on}.  @kbd{M-x
address@hidden restores normal Emacs command bindings.
+
+Most of the EDT emulation commands are keypad keys, and most standard
+Emacs key bindings are still available.  The EDT emulation rebindings
+are done in the global keymap, so there is no problem switching
+buffers or major modes while in EDT emulation.
+
address@hidden Gosling Emacs
address@hidden set-gosmacs-bindings
address@hidden set-gnu-bindings
+Turn on emulation of Gosling Emacs (aka Unipress Emacs) with @kbd{M-x
+set-gosmacs-bindings}.  This redefines many keys, mostly on the
address@hidden and @kbd{ESC} prefixes, to work as they do in Gosmacs.
address@hidden set-gnu-bindings} returns to normal XEmacs by rebinding
+the same keys to the definitions they had at the time @kbd{M-x
+set-gosmacs-bindings} was done.
+
+It is also possible to run Mocklisp code written for Gosling Emacs.
address@hidden
address@hidden table
+
address@hidden Customization, Quitting, Emulation, Top
address@hidden Customization
address@hidden customization
+
+  This chapter talks about various topics relevant to adapting the
+behavior of Emacs in minor ways.
+
+  All kinds of customization affect only the particular Emacs job that you
+do them in.  They are completely lost when you kill the Emacs job, and
+have no effect on other Emacs jobs you may run at the same time or
+later.  The only way an Emacs job can affect anything outside of it is
+by writing a file; in particular, the only way to make a customization
+`permanent' is to put something in your init file or other appropriate
+file to do the customization in each session.  @xref{Init File}.
+
address@hidden
+* Minor Modes::     Each minor mode is one feature you can turn on
+                     independently of any others.
+* Variables::       Many Emacs commands examine Emacs variables
+                     to decide what to do; by setting variables,
+                     you can control their functioning.
+* Keyboard Macros:: A keyboard macro records a sequence of keystrokes
+                     to be replayed with a single command.
+* Key Bindings::    The keymaps say what command each key runs.
+                     By changing them, you can "redefine keys".
+* Syntax::          The syntax table controls how words and expressions
+                     are parsed.
+* Init File::       How to write common customizations in the init file.
+* Audible Bell::    Changing how Emacs sounds the bell.
+* Faces::           Changing the fonts and colors of a region of text.
+* Frame Components::  Controlling the presence and positions of the
+                     menubar, toolbars, and gutters.
+* X Resources::     X resources controlling various aspects of the
+                     behavior of XEmacs.
address@hidden menu
+
address@hidden Minor Modes
address@hidden Minor Modes
address@hidden minor modes
+
address@hidden mode line
+  Minor modes are options which you can use or not.  For example, Auto
+Fill mode is a minor mode in which @key{SPC} breaks lines between words
+as you type.  All the minor modes are independent of each other and of
+the selected major mode.  Most minor modes inform you in the mode line
+when they are on; for example, @samp{Fill} in the mode line means that
+Auto Fill mode is on.
+
+  Append @code{-mode} to the name of a minor mode to get the name of a
+command function that turns the mode on or off.  Thus, the command to
+enable or disable Auto Fill mode is called @kbd{M-x auto-fill-mode}.  These
+commands are usually invoked with @kbd{M-x}, but you can bind keys to them
+if you wish.  With no argument, the function turns the mode on if it was
+off and off if it was on.  This is known as @dfn{toggling}.  A positive
+argument always turns the mode on, and an explicit zero argument or a
+negative argument always turns it off.
+
address@hidden Auto Fill mode
address@hidden auto-fill-mode
+  Auto Fill mode allows you to enter filled text without breaking lines
+explicitly.  Emacs inserts newlines as necessary to prevent lines from
+becoming too long.  @xref{Filling}.
+
address@hidden Overwrite mode
address@hidden overwrite-mode
+  Overwrite mode causes ordinary printing characters to replace existing
+text instead of moving it to the right.  For example, if point is in
+front of the @samp{B} in @samp{FOOBAR}, and you type a @kbd{G} in Overwrite
+mode, it changes to @samp{FOOGAR}, instead of @address@hidden
+
address@hidden Abbrev mode
address@hidden abbrev-mode
+  Abbrev mode allows you to define abbreviations that automatically expand
+as you type them.  For example, @samp{amd} might expand to @samp{abbrev
+mode}.  @xref{Abbrevs}, for full information.
+
address@hidden Variables
address@hidden Variables
address@hidden variable
address@hidden option
+
+  A @dfn{variable} is a Lisp symbol which has a value.  Variable names
+can contain any characters, but by convention they are words separated
+by hyphens.  A variable can also have a documentation string, which
+describes what kind of value it should have and how the value will be
+used.
+
+  Lisp allows any variable to have any kind of value, but most variables
+that Emacs uses require a value of a certain type.  Often the value has
+to be a string or a number.  Sometimes we say that a certain feature is
+turned on if a variable is address@hidden,'' meaning that if the
+variable's value is @code{nil}, the feature is off, but the feature is
+on for @i{any} other value.  The conventional value to turn on the
+feature---since you have to pick one particular value when you set the
+variable---is @code{t}.
+
+  Emacs uses many Lisp variables for internal recordkeeping, as any Lisp
+program must, but the most interesting variables for you are the ones that
+exist for the sake of customization.  Emacs does not (usually) change the
+values of these variables; instead, you set the values, and thereby alter
+and control the behavior of certain Emacs commands.  These variables are
+called @dfn{options}.  Most options are documented in this manual and
+appear in the Variable Index (@pxref{Variable Index}).
+
+  One example of a variable which is an option is @code{fill-column}, which
+specifies the position of the right margin (as a number of characters from
+the left margin) to be used by the fill commands (@pxref{Filling}).
+
address@hidden
+* Examining::           Examining or setting one variable's value.
+* Easy Customization::  Convenient and easy customization of variables.
+* Edit Options::        Examining or editing list of all variables' values.
+* Locals::              Per-buffer values of variables.
+* File Variables::      How files can specify variable values.
address@hidden menu
+
address@hidden Examining
address@hidden Examining and Setting Variables
address@hidden setting variables
+
address@hidden @kbd
address@hidden C-h v
address@hidden M-x describe-variable
+Print the value and documentation of a variable.
address@hidden set-variable
address@hidden M-x set-variable
+Change the value of a variable.
address@hidden table
+
address@hidden C-h v
address@hidden describe-variable
+  To examine the value of a single variable, use @kbd{C-h v}
+(@code{describe-variable}), which reads a variable name using the
+minibuffer, with completion.  It prints both the value and the
+documentation of the variable.
+
address@hidden
+C-h v fill-column @key{RET}
address@hidden example
+
address@hidden
+prints something like:
+
address@hidden
+fill-column's value is 75
+
+Documentation:
+*Column beyond which automatic line-wrapping should happen.
+Automatically becomes local when set in any fashion.
address@hidden smallexample
+
address@hidden option
address@hidden
+The star at the beginning of the documentation indicates that this variable
+is an option.  @kbd{C-h v} is not restricted to options; it allows any
+variable name.
+
address@hidden set-variable
+  If you know which option you want to set, you can use @kbd{M-x
+set-variable} to set it.  This prompts for the variable name in the
+minibuffer (with completion), and then prompts for a Lisp expression for the
+new value using the minibuffer a second time.  For example,
+
address@hidden
+M-x set-variable @key{RET} fill-column @key{RET} 75 @key{RET}
address@hidden example
+
address@hidden
+sets @code{fill-column} to 75, as if you had executed the Lisp expression
address@hidden(setq fill-column 75)}.
+
+  Setting variables in this way, like all means of customizing Emacs
+except where explicitly stated, affects only the current Emacs session.
+
address@hidden Easy Customization
address@hidden Easy Customization Interface
+
address@hidden customize
address@hidden customization buffer
+  A convenient way to find the user option variables that you want to
+change, and then change them, is with @kbd{M-x customize} (or use a
+keyboard shortcut, @kbd{C-h C}.  This command
+creates a @dfn{customization buffer} with which you can browse through
+the Emacs user options in a logically organized structure, then edit and
+set their values.  You can also use the customization buffer to save
+settings permanently.  (Not all Emacs user options are included in this
+structure as of yet, but we are adding the rest.)
+
address@hidden
+* Groups: Customization Groups.
+                             How options are classified in a structure.
+* Changing an Option::       How to edit a value and set an option.
+* Face Customization::       How to edit the attributes of a face.
+* Specific Customization::   Making a customization buffer for specific
+                                options, faces, or groups.
address@hidden menu
+
address@hidden Customization Groups
address@hidden Customization Groups
address@hidden customization groups
+
+  For customization purposes, user options are organized into
address@hidden to help you find them.  Groups are collected into bigger
+groups, all the way up to a master group called @code{Emacs}.
+
+  @kbd{M-x customize} (or @kbd{C-h C}) creates a customization buffer that
+shows the top-level @code{Emacs} group and the second-level groups immediately
+under it.  It looks like this, in part:
+
address@hidden
+/- Emacs group: ---------------------------------------------------\
+      [State]: visible group members are all at standard settings.
+   Customization of the One True Editor.
+   See also [Manual].
+
+ [Open] Editing group
+Basic text editing facilities.
+
+ [Open] External group
+Interfacing to external utilities.
+
address@hidden second-level groups}
+
+\- Emacs group end ------------------------------------------------/
+
address@hidden smallexample
+
address@hidden
+This says that the buffer displays the contents of the @code{Emacs}
+group.  The other groups are listed because they are its contents.  But
+they are listed differently, without indentation and dashes, because
address@hidden contents are not included.  Each group has a single-line
+documentation string; the @code{Emacs} group also has a @samp{[State]}
+line.
+
address@hidden editable fields (customization buffer)
address@hidden active fields (customization buffer)
+  Most of the text in the customization buffer is read-only, but it
+typically includes some @dfn{editable fields} that you can edit.  There
+are also @dfn{active fields}; this means a field that does something
+when you @dfn{invoke} it.  To invoke an active field, either click on it
+with @kbd{Mouse-1}, or move point to it and type @key{RET}.
+
+  For example, the phrase @samp{[Open]} that appears in a second-level
+group is an active field.  Invoking the @samp{[Open]} field for a group
+opens up a new customization buffer, which shows that group and its
+contents.  This field is a kind of hypertext link to another group.
+
+  The @code{Emacs} group does not include any user options itself, but
+other groups do.  By examining various groups, you will eventually find
+the options and faces that belong to the feature you are interested in
+customizing.  Then you can use the customization buffer to set them.
+
address@hidden customize-browse
+  You can view the structure of customization groups on a larger scale
+with @kbd{M-x customize-browse}.  This command creates a special kind of
+customization buffer which shows only the names of the groups (and
+options and faces), and their structure.
+
+  In this buffer, you can show the contents of a group by invoking
address@hidden  When the group contents are visible, this button changes to
address@hidden; invoking that hides the group contents.
+
+  Each group, option or face name in this buffer has an active field
+which says @samp{[Group]}, @samp{[Option]} or @samp{[Face]}.  Invoking
+that active field creates an ordinary customization buffer showing just
+that group and its contents, just that option, or just that face.
+This is the way to set values in it.
+
address@hidden Changing an Option
address@hidden Changing an Option
+
+  Here is an example of what a user option looks like in the
+customization buffer:
+
address@hidden
+Kill Ring Max: [Hide] 30
+   [State]: this option is unchanged from its standard setting.
+Maximum length of kill ring before oldest elements are thrown away.
address@hidden smallexample
+
+  The text following @samp{[Hide]}, @samp{30} in this case, indicates
+the current value of the option.  If you see @samp{[Show]} instead of
address@hidden, it means that the value is hidden; the customization
+buffer initially hides values that take up several lines.  Invoke
address@hidden to show the value.
+
+  The line after the option name indicates the @dfn{customization state}
+of the option: in the example above, it says you have not changed the
+option yet.  The word @samp{[State]} at the beginning of this line is
+active; you can get a menu of various operations by invoking it with
address@hidden or @key{RET}.  These operations are essential for
+customizing the variable.
+
+  The line after the @samp{[State]} line displays the beginning of the
+option's documentation string.  If there are more lines of
+documentation, this line ends with @samp{[More]}; invoke this to show
+the full documentation string.
+
+  To enter a new value for @samp{Kill Ring Max}, move point to the value
+and edit it textually.  For example, you can type @kbd{M-d}, then insert
+another number.
+
+  When you begin to alter the text, you will see the @samp{[State]} line
+change to say that you have edited the value:
+
address@hidden
+[State]: you have edited the value as text, but not set the option.
address@hidden smallexample
+
address@hidden setting option value
+  Editing the value does not actually set the option variable.  To do
+that, you must @dfn{set} the option.  To do this, invoke the word
address@hidden and choose @samp{Set for Current Session}.
+
+  The state of the option changes visibly when you set it:
+
address@hidden
+[State]: you have set this option, but not saved it for future sessions.
address@hidden smallexample
+
+   You don't have to worry about specifying a value that is not valid;
+setting the option checks for validity and will not really install an
+unacceptable value.
+
address@hidden M-TAB @r{(customization buffer)}
address@hidden widget-complete
+  While editing a value or field that is a file name, directory name,
+command name, or anything else for which completion is defined, you can
+type @address@hidden (@code{widget-complete}) to do completion.
+
+  Some options have a small fixed set of possible legitimate values.
+These options don't let you edit the value textually.  Instead, an
+active field @samp{[Value Menu]} appears before the value; invoke this
+field to edit the value.  For a boolean ``on or off'' value, the active
+field says @samp{[Toggle]}, and it changes to the other value.
address@hidden Menu]} and @samp{[Toggle]} edit the buffer; the changes
+take effect when you use the @samp{Set for Current Session} operation.
+
+  Some options have values with complex structure.  For example, the
+value of @code{load-path} is a list of directories.  Here is how it
+appears in the customization buffer:
+
address@hidden
+Load Path:
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/site-lisp
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/site-lisp
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/leim
+[INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/lisp
+[INS] [DEL] [Current dir?]: /build/emacs/e19/lisp
+[INS] [DEL] [Current dir?]: /build/emacs/e19/lisp/gnus
+[INS]
+   [State]: this item has been changed outside the customization buffer.
+List of directories to search for files to load....
address@hidden smallexample
+
address@hidden
+Each directory in the list appears on a separate line, and each line has
+several editable or active fields.
+
+  You can edit any of the directory names.  To delete a directory from
+the list, invoke @samp{[DEL]} on that line.  To insert a new directory in
+the list, invoke @samp{[INS]} at the point where you want to insert it.
+
+  You can also invoke @samp{[Current dir?]} to switch between including
+a specific named directory in the path, and including @code{nil} in the
+path.  (@code{nil} in a search path means ``try the current
+directory.'')
+
address@hidden TAB @r{(customization buffer)}
address@hidden S-TAB @r{(customization buffer)}
address@hidden widget-forward
address@hidden widget-backward
+  Two special commands, @key{TAB} and @address@hidden, are useful for
+moving through the customization buffer.  @key{TAB}
+(@code{widget-forward}) moves forward to the next active or editable
+field; @address@hidden (@code{widget-backward}) moves backward to the
+previous active or editable field.
+
+  Typing @key{RET} on an editable field also moves forward, just like
address@hidden  The reason for this is that people have a tendency to type
address@hidden when they are finished editing a field.  If you have occasion
+to insert a newline in an editable field, use @kbd{C-o} or @kbd{C-q
+C-j},
+
address@hidden saving option value
+  Setting the option changes its value in the current Emacs session;
address@hidden the value changes it for future sessions as well.  This
+works by writing code into your init file so as to set the option
+variable again each time you start Emacs.  @xref{Init File}.  To save
+the option, invoke @samp{[State]} and select the @samp{Save for Future
+Sessions} operation.
+
+  You can also restore the option to its standard value by invoking
address@hidden and selecting the @samp{Reset} operation.  There are
+actually three reset operations:
+
address@hidden @samp
address@hidden Reset to Current
+If you have made some modifications and not yet set the option,
+this restores the text in the customization buffer to match
+the actual value.
+
address@hidden Reset to Saved
+This restores the value of the option to the last saved value,
+and updates the text accordingly.
+
address@hidden Reset to Standard Settings
+This sets the option to its standard value, and updates the text
+accordingly.  This also eliminates any saved value for the option,
+so that you will get the standard value in future Emacs sessions.
address@hidden table
+
+  The state of a group indicates whether anything in that group has been
+edited, set or saved.  You can select @samp{Set for Current Session},
address@hidden for Future Sessions} and the various kinds of @samp{Reset}
+operation for the group; these operations on the group apply to all
+options in the group and its subgroups.
+
+  Near the top of the customization buffer there are two lines
+containing several active fields:
+
address@hidden
+ [Set] [Save] [Reset]  [Done]
address@hidden smallexample
+
address@hidden
+Invoking @samp{[Done]} buries this customization buffer.  Each of the
+other fields performs an operation---set, save or reset---on each of the
+items in the buffer that could meaningfully be set, saved or reset.
+
address@hidden Face Customization
address@hidden Customizing Faces
address@hidden customizing faces
address@hidden bold font
address@hidden italic font
address@hidden fonts and faces
+
+  In addition to user options, some customization groups also include
+faces.  When you show the contents of a group, both the user options and
+the faces in the group appear in the customization buffer.  Here is an
+example of how a face looks:
+
address@hidden
+Custom Changed Face: (sample)
+   [State]: this face is unchanged from its standard setting.
+Face used when the customize item has been changed.
+Parent groups: [Custom Magic Faces]
+Attributes: [ ] Bold: [Toggle]  off (nil)
+            [ ] Italic: [Toggle]  off (nil)
+            [ ] Underline: [Toggle]  off (nil)
+            [ ] Foreground: white       (sample)
+            [ ] Background: blue        (sample)
+            [ ] Inverse: [Toggle]  off (nil)
+            [ ] Stipple: 
+            [ ] Font Family: 
+            [ ] Size: 
+            [ ] Strikethru: off
address@hidden smallexample
+
+  Each face attribute has its own line.  The @address@hidden field
+before the attribute name indicates whether the attribute is
address@hidden; @samp{X} means that it is.  You can enable or disable the
+attribute by invoking that field.  When the attribute is enabled, you
+can change the attribute value in the usual ways.
+
address@hidden, for description of how @code{face-frob-from-locale-first}
+variable affects changing @samp{Bold} and @samp{Italic} attributes.
+
address@hidden Is this true for XEmacs?
address@hidden  On a black-and-white display, the colors you can use for the
address@hidden background are @samp{black}, @samp{white}, @samp{gray}, 
@samp{gray1},
address@hidden and @samp{gray3}.  Emacs supports these shades of gray by using
address@hidden background stipple patterns instead of a color.
address@hidden 
+  Setting, saving and resetting a face work like the same operations for
+options (@pxref{Changing an Option}).
+
+  A face can specify different appearances for different types of
+display.  For example, a face can make text red on a color display, but
+use a bold font on a monochrome display.  To specify multiple
+appearances for a face, select @samp{Show Display Types} in the menu you
+get from invoking @samp{[State]}.
+
address@hidden It would be cool to implement this
address@hidden @findex modify-face
address@hidden   Another more basic way to set the attributes of a specific 
face is
address@hidden with @kbd{M-x modify-face}.  This command reads the name of a 
face, then
address@hidden reads the attributes one by one.  For the color and stipple 
attributes,
address@hidden the attribute's current value is the default---type just 
@key{RET} if
address@hidden you don't want to change that attribute.  Type @samp{none} if 
you want
address@hidden to clear out the attribute.
+
address@hidden Specific Customization
address@hidden Customizing Specific Items
+
+  Instead of finding the options you want to change by moving down
+through the structure of groups, you can specify the particular option,
+face or group that you want to customize.
+
address@hidden @kbd
address@hidden M-x customize-option @key{RET} @var{option} @key{RET}
+Set up a customization buffer with just one option, @var{option}.
address@hidden M-x customize-face @key{RET} @var{face} @key{RET}
+Set up a customization buffer with just one face, @var{face}.
address@hidden M-x customize-group @key{RET} @var{group} @key{RET}
+Set up a customization buffer with just one group, @var{group}.
address@hidden M-x customize-apropos @key{RET} @var{regexp} @key{RET}
+Set up a customization buffer with all the options, faces and groups
+that match @var{regexp}.
address@hidden M-x customize-saved 
+Set up a customization buffer containing all options and faces that you
+have saved with customization buffers.
address@hidden M-x customize-customized
+Set up a customization buffer containing all options and faces that you
+have customized but not saved.
address@hidden table
+
address@hidden customize-option
+  If you want to alter a particular user option variable with the
+customization buffer, and you know its name, you can use the command
address@hidden customize-option} and specify the option name.  This sets up
+the customization buffer with just one option---the one that you asked
+for.  Editing, setting and saving the value work as described above, but
+only for the specified option.
+
address@hidden customize-face
+  Likewise, you can modify a specific face, chosen by name, using
address@hidden customize-face}.
+
address@hidden customize-group
+  You can also set up the customization buffer with a specific group,
+using @kbd{M-x customize-group}.  The immediate contents of the chosen
+group, including option variables, faces, and other groups, all appear
+as well.  However, these subgroups' own contents start out hidden.  You
+can show their contents in the usual way, by invoking @samp{[Show]}.
+
address@hidden customize-apropos
+  To control more precisely what to customize, you can use @kbd{M-x
+customize-apropos}.  You specify a regular expression as argument; then
+all options, faces and groups whose names match this regular expression
+are set up in the customization buffer.  If you specify an empty regular
+expression, this includes @emph{all} groups, options and faces in the
+customization buffer (but that takes a long time).
+
address@hidden customize-saved
address@hidden customize-customized
+  If you change option values and then decide the change was a mistake,
+you can use two special commands to revisit your previous changes.  Use
address@hidden to look at the options and faces that you have
+saved.  Use @kbd{M-x customize-customized} to look at the options and
+faces that you have set but not saved.
+
address@hidden Edit Options
address@hidden Editing Variable Values
+
address@hidden @kbd
address@hidden M-x list-options
+Display a buffer listing names, values, and documentation of all options.
address@hidden M-x edit-options
+Change option values by editing a list of options.
address@hidden table
+
address@hidden list-options
+  @kbd{M-x list-options} displays a list of all Emacs option variables in
+an Emacs buffer named @samp{*List Options*}.  Each option is shown with its
+documentation and its current value.  Here is what a portion of it might
+look like:
+
address@hidden
+;; exec-path:
+("." "/usr/local/bin" "/usr/ucb" "/bin" "/usr/bin" "/u2/emacs/etc")
+*List of directories to search programs to run in subprocesses.
+Each element is a string (directory name)
+or nil (try the default directory).
+;;
+;; fill-column:
+75
+*Column beyond which automatic line-wrapping should happen.
+Automatically becomes local when set in any fashion.
+;;
address@hidden smallexample
+
address@hidden edit-options
+  @kbd{M-x edit-options} goes one step further and immediately selects the
address@hidden Options*} buffer; this buffer uses the major mode Options mode,
+which provides commands that allow you to point at an option and change its
+value:
+
address@hidden @kbd
address@hidden s
+Set the variable point is in or near to a new value read using the
+minibuffer.
address@hidden x
+Toggle the variable point is in or near: if the value was @code{nil},
+it becomes @code{t}; otherwise it becomes @code{nil}.
address@hidden 1
+Set the variable point is in or near to @code{t}.
address@hidden 0
+Set the variable point is in or near to @code{nil}.
address@hidden n
address@hidden p
+Move to the next or previous variable.
address@hidden table
+
address@hidden Locals
address@hidden Local Variables
+
address@hidden @kbd
address@hidden M-x make-local-variable
+Make a variable have a local value in the current buffer.
address@hidden M-x kill-local-variable
+Make a variable use its global value in the current buffer.
address@hidden M-x make-variable-buffer-local
+Mark a variable so that setting it will make it local to the
+buffer that is current at that time.
address@hidden table
+
address@hidden local variables
+   You can make any variable @dfn{local} to a specific Emacs buffer.
+This means that the variable's value in that buffer is independent of
+its value in other buffers.  A few variables are always local in every
+buffer.  All other Emacs variables have a @dfn{global} value which is in
+effect in all buffers that have not made the variable local.
+
+  Major modes always make the variables they set local to the buffer.
+This is why changing major modes in one buffer has no effect on other
+buffers.
+
address@hidden make-local-variable
+  @kbd{M-x make-local-variable} reads the name of a variable and makes it
+local to the current buffer.  Further changes in this buffer will not
+affect others, and changes in the global value will not affect this
+buffer.
+
address@hidden make-variable-buffer-local
address@hidden per-buffer variables
+  @kbd{M-x make-variable-buffer-local} reads the name of a variable and
+changes the future behavior of the variable so that it automatically
+becomes local when it is set.  More precisely, once you have marked a
+variable in this way, the usual ways of setting the
+variable will automatically invoke @code{make-local-variable} first.  We
+call such variables @dfn{per-buffer} variables.
+
+  Some important variables have been marked per-buffer already.  They
+include @code{abbrev-mode}, @code{auto-fill-function},
address@hidden, @code{comment-column}, @code{ctl-arrow},
address@hidden, @code{fill-prefix}, @code{indent-tabs-mode},
address@hidden, @address@hidden, @code{overwrite-mode},
address@hidden, @address@hidden,
address@hidden, and @code{truncate-lines}.  Some other variables are
+always local in every buffer, but they are used for internal
address@hidden
+
+Note: the variable @code{auto-fill-function} was formerly named
address@hidden
+
address@hidden kill-local-variable
+  If you want a variable to cease to be local to the current buffer,
+call @kbd{M-x kill-local-variable} and provide the name of a variable to
+the prompt.  The global value of the variable
+is again in effect in this buffer.  Setting the major mode kills all
+the local variables of the buffer.
+
address@hidden setq-default
+  To set the global value of a variable, regardless of whether the
+variable has a local value in the current buffer, you can use the
+Lisp function @code{setq-default}.  It works like @code{setq}.
+If there is a local value in the current buffer, the local value is
+not affected by @code{setq-default}; thus, the new global value may
+not be visible until you switch to another buffer, as in the case of:
+
address@hidden
+(setq-default fill-column 75)
address@hidden example
+
address@hidden
address@hidden is the only way to set the global value of a variable
+that has been marked with @code{make-variable-buffer-local}.
+
address@hidden default-value
+  Programs can look at a variable's default value with @code{default-value}.
+This function takes a symbol as an argument and returns its default value.
+The argument is evaluated; usually you must quote it explicitly, as in
+the case of:
+
address@hidden
+(default-value 'fill-column)
address@hidden example
+
address@hidden File Variables
address@hidden Local Variables in Files
address@hidden local variables in files
+
+  A file can contain a @dfn{local variables list}, which specifies the
+values to use for certain Emacs variables when that file is edited.
+Visiting the file checks for a local variables list and makes each variable
+in the list local to the buffer in which the file is visited, with the
+value specified in the file.
+
+  A local variables list goes near the end of the file, in the last page.
+(It is often best to put it on a page by itself.)  The local variables list
+starts with a line containing the string @samp{Local Variables:}, and ends
+with a line containing the string @samp{End:}.  In between come the
+variable names and values, one set per line, as @address@hidden:@:
address@hidden  The @var{value}s are not evaluated; they are used literally.
+
+  The line which starts the local variables list does not have to say
+just @samp{Local Variables:}.  If there is other text before @samp{Local
+Variables:}, that text is called the @dfn{prefix}, and if there is other
+text after, that is called the @dfn{suffix}.  If a prefix or suffix are
+present, each entry in the local variables list should have the prefix
+before it and the suffix after it.  This includes the @samp{End:} line.
+The prefix and suffix are included to disguise the local variables list
+as a comment so the compiler or text formatter  will ignore it.
+If you do not need to disguise the local variables list as a comment in
+this way, there is no need to include a prefix or a address@hidden
+
+  Two ``variable'' names are special in a local variables list: a value
+for the variable @code{mode} sets the major mode, and a value for the
+variable @code{eval} is simply evaluated as an expression and the value
+is ignored.  These are not real variables; setting them in any other
+context does not have the same effect.  If @code{mode} is used in a
+local variables list, it should be the first entry in the list.
+
+Here is an example of a local variables list:
address@hidden
+;;; Local Variables: ***
+;;; mode:lisp ***
+;;; comment-column:0 ***
+;;; comment-start: ";;; "  ***
+;;; comment-end:"***" ***
+;;; End: ***
address@hidden example
+
+  Note that the prefix is @samp{;;; } and the suffix is @samp{ ***}.
+Note also that comments in the file begin with and end with the same
+strings.  Presumably the file contains code in a language which is
+enough like Lisp for Lisp mode to be useful but in which comments
+start and end differently.  The prefix and suffix are used in the local
+variables list to make the list look like several lines of comments when
+the compiler or interpreter for that language reads the file. 
+
+  The start of the local variables list must be no more than 3000
+characters from the end of the file, and must be in the last page if the
+file is divided into pages.  Otherwise, Emacs will not notice it is
+there.  The purpose is twofold: a stray @samp{Local Variables:}@: not in
+the last page does not confuse Emacs, and Emacs never needs to search a
+long file that contains no page markers and has no local variables list.
+
+  You may be tempted to turn on Auto Fill mode with a local variable
+list.  That is inappropriate.  Whether you use Auto Fill mode or not is
+a matter of personal taste, not a matter of the contents of particular
+files.  If you want to use Auto Fill, set up major mode hooks with your
+init file to turn it on (when appropriate) for you alone
+(@pxref{Init File}).  Don't try to use a local variable list that would
+impose your taste on everyone working with the file.
+
+XEmacs allows you to specify local variables in the first line
+of a file, in addition to specifying them in the @code{Local Variables}
+section at the end of a file.
+
+If the first line of a file contains two occurrences of @code{`-*-'},
+XEmacs uses the information between them to determine what the major
+mode and variable settings should be.  For example, these are all legal:
+
address@hidden
+        ;;; -*- mode: emacs-lisp -*-
+        ;;; -*- mode: postscript; version-control: never -*-
+        ;;; -*- tags-file-name: "/foo/bar/TAGS" -*-
address@hidden example
+
+For historical reasons, the syntax @code{`-*- modename -*-'} is allowed
+as well; for example, you can use:
+
address@hidden
+        ;;; -*- emacs-lisp -*-
address@hidden example
+
address@hidden enable-local-variables
+The variable @code{enable-local-variables} controls the use of local
+variables lists in files you visit.  The value can be @code{t},
address@hidden, or something else.  A value of @code{t} means local variables
+lists are obeyed; @code{nil} means they are ignored; anything else means
+query.
+
+The command @code{M-x normal-mode} always obeys local variables lists
+and ignores this variable.
+
address@hidden Keyboard Macros
address@hidden Keyboard Macros
+
address@hidden keyboard macros
+  A @dfn{keyboard macro} is a command defined by the user to abbreviate a
+sequence of keys.  For example, if you discover that you are about to type
address@hidden C-d} forty times, you can speed your work by defining a keyboard
+macro to invoke @kbd{C-n C-d} and calling it with a repeat count of forty.
+
address@hidden widecommands
address@hidden @kbd
address@hidden C-x (
+Start defining a keyboard macro (@code{start-kbd-macro}).
address@hidden C-x )
+End the definition of a keyboard macro (@code{end-kbd-macro}).
address@hidden C-x e
+Execute the most recent keyboard macro (@code{call-last-kbd-macro}).
address@hidden C-u C-x (
+Re-execute last keyboard macro, then add more keys to its definition.
address@hidden C-x q
+When this point is reached during macro execution, ask for confirmation
+(@code{kbd-macro-query}).
address@hidden M-x name-last-kbd-macro
+Give a command name (for the duration of the session) to the most
+recently defined keyboard macro.
address@hidden M-x insert-kbd-macro
+Insert in the buffer a keyboard macro's definition, as Lisp code.
address@hidden table
+
+  Keyboard macros differ from other Emacs commands in that they are
+written in the Emacs command language rather than in Lisp.  This makes it
+easier for the novice to write them and makes them more convenient as
+temporary hacks.  However, the Emacs command language is not powerful
+enough as a programming language to be useful for writing anything
+general or complex.  For such things, Lisp must be used.
+
+  You define a keyboard macro by executing the commands which are its
+definition.  Put differently, as you are defining a keyboard macro, the
+definition is being executed for the first time.  This way, you see
+what the effects of your commands are, and don't have to figure
+them out in your head.  When you are finished, the keyboard macro is
+defined and also has been executed once.  You can then execute the same
+set of commands again by invoking the macro.
+
address@hidden
+* Basic Kbd Macro::     Defining and running keyboard macros.
+* Save Kbd Macro::      Giving keyboard macros names; saving them in files.
+* Kbd Macro Query::     Keyboard macros that do different things each use.
address@hidden menu
+
address@hidden Basic Kbd Macro
address@hidden Basic Use
+
address@hidden C-x (
address@hidden C-x )
address@hidden C-x e
address@hidden start-kbd-macro
address@hidden end-kbd-macro
address@hidden call-last-kbd-macro
+  To start defining a keyboard macro, type @kbd{C-x (}
+(@code{start-kbd-macro}).  From then on, anything you type continues to be
+executed, but also becomes part of the definition of the macro.  @samp{Def}
+appears in the mode line to remind you of what is going on.  When you are
+finished, the @kbd{C-x )} command (@code{end-kbd-macro}) terminates the
+definition, without becoming part of it. 
+
+  For example,
+
address@hidden
+C-x ( M-f foo C-x )
address@hidden example
+
address@hidden
+defines a macro to move forward a word and then insert @samp{foo}.
+
+You can give @kbd{C-x )} a repeat count as an argument, in which case it
+repeats the macro that many times right after defining it, but defining
+the macro counts as the first repetition (since it is executed as you
+define it).  If you give @kbd{C-x )} an argument of 4, it executes the
+macro immediately 3 additional times.  An argument of zero to @kbd{C-x
+e} or @kbd{C-x )} means repeat the macro indefinitely (until it gets an
+error or you type @kbd{C-g}).
+
+  Once you have defined a macro, you can invoke it again with the
address@hidden e} command (@code{call-last-kbd-macro}).  You can give the
+command a repeat count numeric argument to execute the macro many times.
+
+  To repeat an operation at regularly spaced places in the
+text, define a macro and include as part of the macro the commands to move
+to the next place you want to use it.  For example, if you want to change
+each line, you should position point at the start of a line, and define a
+macro to change that line and leave point at the start of the next line.
+Repeating the macro will then operate on successive lines.
+
+  After you have terminated the definition of a keyboard macro, you can add
+to the end of its definition by typing @kbd{C-u C-x (}.  This is equivalent
+to plain @kbd{C-x (} followed by retyping the whole definition so far.  As
+a consequence it re-executes the macro as previously defined.
+
address@hidden Save Kbd Macro
address@hidden Naming and Saving Keyboard Macros
+
address@hidden name-last-kbd-macro
+  To save a keyboard macro for longer than until you define the
+next one, you must give it a name using @kbd{M-x name-last-kbd-macro}.
+This reads a name as an argument using the minibuffer and defines that name
+to execute the macro.  The macro name is a Lisp symbol, and defining it in
+this way makes it a valid command name for calling with @kbd{M-x} or for
+binding a key to with @code{global-set-key} (@pxref{Keymaps}).  If you
+specify a name that has a prior definition other than another keyboard
+macro, Emacs prints an error message and nothing is changed.
+
address@hidden insert-kbd-macro
+  Once a macro has a command name, you can save its definition in a file.
+You can then use it in another editing session.  First visit the file
+you want to save the definition in.  Then use the command:
+
address@hidden
+M-x insert-kbd-macro @key{RET} @var{macroname} @key{RET}
address@hidden example
+
address@hidden
+This inserts some Lisp code that, when executed later, will define the same
+macro with the same definition it has now.  You need not understand Lisp
+code to do this, because @code{insert-kbd-macro} writes the Lisp code for you.
+Then save the file.  You can load the file with @code{load-file}
+(@pxref{Lisp Libraries}).  If the file you save in is your initialization file
+(@pxref{Init File}), then the macro will be defined each
+time you run Emacs.
+
+  If you give @code{insert-kbd-macro} a prefix argument, it creates
+additional Lisp code to record the keys (if any) that you have bound to the
+keyboard macro, so that the macro is reassigned the same keys when you
+load the file.
+
address@hidden Kbd Macro Query
address@hidden Executing Macros With Variations
+
address@hidden C-x q
address@hidden kbd-macro-query
+  You can use @kbd{C-x q} (@code{kbd-macro-query}), to get an effect similar
+to that of @code{query-replace}.  The macro asks you  each time
+whether to make a change.  When you are defining the macro, type @kbd{C-x
+q} at the point where you want the query to occur.  During macro
+definition, the @kbd{C-x q} does nothing, but when you invoke the macro,
address@hidden q} reads a character from the terminal to decide whether to
+continue.
+
+  The special answers to a @kbd{C-x q} query are @key{SPC}, @key{DEL},
address@hidden, @kbd{C-l}, and @kbd{C-r}.  Any other character terminates
+execution of the keyboard macro and is then read as a command.
address@hidden means to continue.  @key{DEL} means to skip the remainder of
+this repetition of the macro, starting again from the beginning in the
+next repetition.  @kbd{C-d} means to skip the remainder of this
+repetition and cancel further repetition.  @kbd{C-l} redraws the frame
+and asks you again for a character to specify what to do.  @kbd{C-r} enters
+a recursive editing level, in which you can perform editing that is not
+part of the macro.  When you exit the recursive edit using @kbd{C-M-c},
+you are asked again how to continue with the keyboard macro.  If you
+type a @key{SPC} at this time, the rest of the macro definition is
+executed.  It is up to you to leave point and the text in a state such
+that the rest of the macro will do what you address@hidden
+
+  @kbd{C-u C-x q}, which is @kbd{C-x q} with a numeric argument, performs a
+different function.  It enters a recursive edit reading input from the
+keyboard, both when you type it during the definition of the macro and
+when it is executed from the macro.  During definition, the editing you do
+inside the recursive edit does not become part of the macro.  During macro
+execution, the recursive edit gives you a chance to do some particularized
+editing.  @xref{Recursive Edit}.
+
address@hidden Key Bindings
address@hidden Customizing Key Bindings
+
+  This section deals with the @dfn{keymaps} that define the bindings
+between keys and functions, and shows how you can customize these bindings.
address@hidden command
address@hidden function
address@hidden command name
+
+  A command is a Lisp function whose definition provides for interactive
+use.  Like every Lisp function, a command has a function name, which is
+a Lisp symbol whose name usually consists of lower case letters and
+hyphens.
+
address@hidden
+* Keymaps::    Definition of the keymap data structure.
+               Names of Emacs's standard keymaps.
+* Rebinding::  How to redefine one key's meaning conveniently.
+* Disabling::  Disabling a command means confirmation is required
+                before it can be executed.  This is done to protect
+                beginners from surprises.
address@hidden menu
+
address@hidden Keymaps
address@hidden Keymaps
address@hidden keymap
+
address@hidden global keymap
address@hidden global-map
+  The bindings between characters and command functions are recorded in
+data structures called @dfn{keymaps}.  Emacs has many of these.  One, the
address@hidden keymap, defines the meanings of the single-character keys that
+are defined regardless of major mode.  It is the value of the variable
address@hidden
+
address@hidden local keymap
address@hidden c-mode-map
address@hidden lisp-mode-map
+  Each major mode has another keymap, its @dfn{local keymap}, which
+contains overriding definitions for the single-character keys that are
+redefined in that mode.  Each buffer records which local keymap is
+installed for it at any time, and the current buffer's local keymap is
+the only one that directly affects command execution.  The local keymaps
+for Lisp mode, C mode, and many other major modes always exist even when
+not in use.  They are the values of the variables @code{lisp-mode-map},
address@hidden, and so on.  For less frequently used major modes, the
+local keymap is sometimes constructed only when the mode is used for the
+first time in a session, to save space.
+
address@hidden minibuffer
address@hidden minibuffer-local-map
address@hidden minibuffer-local-ns-map
address@hidden minibuffer-local-completion-map
address@hidden minibuffer-local-must-match-map
address@hidden repeat-complex-command-map
address@hidden isearch-mode-map
+  There are local keymaps for the minibuffer, too; they contain various
+completion and exit commands.
+
address@hidden @bullet
address@hidden
address@hidden is used for ordinary input (no completion).
address@hidden
address@hidden is similar, except that @key{SPC} exits
+just like @key{RET}.  This is used mainly for Mocklisp compatibility.
address@hidden
address@hidden is for permissive completion.
address@hidden
address@hidden is for strict completion and
+for cautious completion.
address@hidden
address@hidden is for use in @kbd{C-x @key{ESC} @key{ESC}}.
address@hidden
address@hidden contains the bindings of the special keys which
+are bound in the pseudo-mode entered with @kbd{C-s} and @kbd{C-r}.
address@hidden itemize
+
address@hidden ctl-x-map
address@hidden help-map
address@hidden esc-map
+  Finally, each prefix key has a keymap which defines the key sequences
+that start with it.  For example, @code{ctl-x-map} is the keymap used for
+characters following a @kbd{C-x}.
+
address@hidden @bullet
address@hidden
address@hidden is the variable name for the map used for characters that
+follow @kbd{C-x}.
address@hidden
address@hidden is used for characters that follow @kbd{C-h}.
address@hidden
address@hidden is for characters that follow @key{ESC}. All Meta
+characters are actually defined by this map.
address@hidden
address@hidden is for characters that follow @kbd{C-x 4}.
address@hidden
address@hidden is for characters that follow @kbd{C-c}.
address@hidden itemize
+
+  The definition of a prefix key is the keymap to use for looking up
+the following character.  Sometimes the definition is actually a Lisp
+symbol whose function definition is the following character keymap.  The
+effect is the same, but it provides a command name for the prefix key that
+you can use as a description of what the prefix key is for.  Thus the
+binding of @kbd{C-x} is the symbol @code{Ctl-X-Prefix}, whose function
+definition is the keymap for @kbd{C-x} commands, the value of
address@hidden@refill
+
+  Prefix key definitions can appear in either the global
+map or a local map.  The definitions of @kbd{C-c}, @kbd{C-x}, @kbd{C-h},
+and @key{ESC} as prefix keys appear in the global map, so these prefix
+keys are always available.  Major modes can locally redefine a key as a
+prefix by putting a prefix key definition for it in the local
address@hidden
+
+  A mode can also put a prefix definition of a global prefix character such
+as @kbd{C-x} into its local map.  This is how major modes override the
+definitions of certain keys that start with @kbd{C-x}.  This case is
+special, because the local definition does not entirely replace the global
+one.  When both the global and local definitions of a key are other
+keymaps, the next character is looked up in both keymaps, with the local
+definition overriding the global one.  The character after the
address@hidden is looked up in both the major mode's own keymap for redefined
address@hidden commands and in @code{ctl-x-map}.  If the major mode's own keymap
+for @kbd{C-x} commands contains @code{nil}, the definition from the global
+keymap for @kbd{C-x} commands is address@hidden
+
address@hidden Rebinding
address@hidden Changing Key Bindings
address@hidden key rebinding, this session
address@hidden rebinding keys, this session
+
+  You can redefine an Emacs key by changing its entry in a keymap.
+You can change the global keymap, in which case the change is effective in
+all major modes except those that have their own overriding local
+definitions for the same key.  Or you can change the current buffer's
+local map, which affects all buffers using the same major mode.
+
address@hidden
+* Interactive Rebinding::      Changing Key Bindings Interactively   
+* Programmatic Rebinding::     Changing Key Bindings Programmatically
+* Key Bindings Using Strings:: Using Strings for Changing Key Bindings 
address@hidden menu
+
address@hidden Interactive Rebinding
address@hidden Changing Key Bindings Interactively
address@hidden global-set-key
address@hidden local-set-key
address@hidden local-unset-key
+
address@hidden @kbd
address@hidden M-x global-set-key @key{RET} @var{key} @var{cmd} @key{RET}
+Defines @var{key} globally to run @var{cmd}.
address@hidden M-x local-set-key @key{RET} @var{keys} @var{cmd} @key{RET} 
+Defines @var{key} locally (in the major mode now in effect) to run
address@hidden
address@hidden M-x local-unset-key @key{RET} @var{keys} @key{RET}
+Removes the local binding of @var{key}.
address@hidden table
+
address@hidden is a symbol naming an interactively-callable function.
+
+When called interactively, @var{key} is the next complete key sequence
+that you type.  When called as a function, @var{key} is a string, a
+vector of events, or a vector of key-description lists as described in
+the @code{define-key} function description.  The binding goes in
+the current buffer's local map, which is shared with other buffers in
+the same major mode.
+
+The following example:
+
address@hidden
+M-x global-set-key @key{RET} C-f next-line @key{RET}
address@hidden example
+
address@hidden
+redefines @kbd{C-f} to move down a line.  The fact that @var{cmd} is
+read second makes it serve as a kind of confirmation for @var{key}.
+
+  These functions offer no way to specify a particular prefix keymap as
+the one to redefine in, but that is not necessary, as you can include
+prefixes in @var{key}.  @var{key} is read by reading characters one by
+one until they amount to a complete key (that is, not a prefix key).
+Thus, if you type @kbd{C-f} for @var{key}, Emacs enters
+the minibuffer immediately to read @var{cmd}.  But if you type
address@hidden, another character is read; if that character is @kbd{4},
+another character is read, and so on.  For example,@refill
+
address@hidden
+M-x global-set-key @key{RET} C-x 4 $ spell-other-window @key{RET}
address@hidden example
+
address@hidden
+redefines @kbd{C-x 4 $} to run the (fictitious) command
address@hidden
+
address@hidden define-key
address@hidden substitute-key-definition
+  The most general way to modify a keymap is the function
address@hidden, used in Lisp code (such as your init file).
address@hidden takes three arguments: the keymap, the key to modify
+in it, and the new definition.  @xref{Init File}, for an example.
address@hidden is used similarly; it takes three
+arguments, an old definition, a new definition, and a keymap, and
+redefines in that keymap all keys that were previously defined with the
+old definition to have the new definition instead.
+
address@hidden Programmatic Rebinding
address@hidden Changing Key Bindings Programmatically
+
+  You can use the functions @code{global-set-key} and @code{define-key}
+to rebind keys under program control.
+
address@hidden define-key
address@hidden global-set-key
+
address@hidden @kbd
address@hidden  @code{(global-set-key @var{keys} @var{cmd})}
+Defines @var{keys} globally to run @var{cmd}.
address@hidden @code{(define-key @var{keymap} @var{keys} @var{def})}
+Defines @var{keys} to run @var{def} in the keymap @var{keymap}.
address@hidden table
+ 
address@hidden is a keymap object.
+
address@hidden is the sequence of keystrokes to bind.
+
address@hidden is anything that can be a key's definition:
+
address@hidden @bullet
address@hidden
address@hidden, meaning key is undefined in this keymap
address@hidden
+A command, that is, a Lisp function suitable for interactive calling
address@hidden
+A string or key sequence vector, which is treated as a keyboard macro
address@hidden
+A keymap to define a prefix key
address@hidden
+A symbol so that when the key is looked up, the symbol stands for its
+function definition, which should at that time be one of the above,
+or another symbol whose function definition is used, and so on
address@hidden
+A cons, @code{(string . defn)}, meaning that @var{defn} is the definition
+(@var{defn} should be a valid definition in its own right)
address@hidden
+A cons, @code{(keymap . char)}, meaning use the definition of
address@hidden in map @var{keymap}
address@hidden itemize
+
+For backward compatibility, XEmacs allows you to specify key
+sequences as strings.  However, the preferred method is to use the
+representations of key sequences as vectors of keystrokes.
address@hidden, for more information about the rules for constructing
+key sequences.
+
+Emacs allows you to abbreviate representations for key sequences in 
+most places where there is no ambiguity.
+Here are some rules for abbreviation:
+
address@hidden @bullet
address@hidden
+The keysym by itself is equivalent to a list of just that keysym, i.e.,
address@hidden is equivalent to @code{(f1)}.
address@hidden
+A keystroke by itself is equivalent to a vector containing just that
+keystroke, i.e.,  @code{(control a)} is equivalent to @code{[(control a)]}.
address@hidden
+You can use ASCII codes for keysyms that have them. i.e.,
address@hidden is equivalent to @code{A}. (This is not so much an
+abbreviation as an alternate representation.)
address@hidden itemize
+
+Here are some examples of programmatically binding keys:
+
address@hidden
+
+;;;  Bind @code{my-command} to @key{f1}
+(global-set-key 'f1 'my-command)                
+
+;;;  Bind @code{my-command} to @kbd{Shift-f1}
+(global-set-key '(shift f1) 'my-command)
+
+;;; Bind @code{my-command} to @kbd{C-c Shift-f1}
+(global-set-key '[(control c) (shift f1)] 'my-command)  
+
+;;; Bind @code{my-command} to the middle mouse button.
+(global-set-key 'button2 'my-command)
+
+;;; Bind @code{my-command} to @address@hidden @key{CTL} @key{Right Mouse 
Button}}
+;;; in the keymap that is in force when you are running @code{dired}.
+(define-key dired-mode-map '(meta control button3) 'my-command)
+
address@hidden example
+
address@hidden ;; note that these next four lines are not synonymous:
address@hidden ;;
address@hidden (global-set-key '(meta control delete) 'my-command)
address@hidden (global-set-key '(meta control backspace) 'my-command)
address@hidden (global-set-key '(meta control h) 'my-command)
address@hidden (global-set-key '(meta control H) 'my-command)
address@hidden 
address@hidden ;; note that this binds two key sequences: ``control-j'' and 
``linefeed''.
address@hidden ;;
address@hidden (global-set-key "\^J" 'my-command)
+
address@hidden Key Bindings Using Strings
address@hidden Using Strings for Changing Key Bindings 
+
+  For backward compatibility, you can still use strings to represent
+key sequences.  Thus you can use commands like the following:
+
address@hidden
+;;; Bind @code{end-of-line} to @kbd{C-f}
+(global-set-key "\C-f" 'end-of-line)
address@hidden example
+
+Note, however, that in some cases you may be binding more than one
+key sequence by using a single command.  This situation can 
+arise because in ASCII, @kbd{C-i} and @key{TAB} have
+the same representation.  Therefore, when Emacs sees:
+
address@hidden
+(global-set-key "\C-i" 'end-of-line)
address@hidden example
+
+it is unclear whether the user intended to bind @kbd{C-i} or @key{TAB}.
+The solution XEmacs adopts is to bind both of these key
+sequences.
+
address@hidden redefining keys
+After binding a command to two key sequences with a form like:
+
address@hidden
+        (define-key global-map "\^X\^I" 'command-1)
address@hidden example
+
+it is possible to redefine only one of those sequences like so:
+
address@hidden
+        (define-key global-map [(control x) (control i)] 'command-2)
+        (define-key global-map [(control x) tab] 'command-3)
address@hidden example
+
+This applies only when running under a window system.  If you are
+talking to Emacs through an ASCII-only channel, you do not get any of
+these features.
+
+Here is a table of pairs of key sequences that behave in a
+similar fashion:
+
address@hidden
+        control h      backspace           
+        control l      clear
+        control i      tab 
+        control m      return              
+        control j      linefeed 
+        control [      escape
+        control @@      control space
address@hidden example
+
address@hidden Disabling
address@hidden Disabling Commands
address@hidden disabled command
+
+  Disabling a command marks it as requiring confirmation before it
+can be executed.  The purpose of disabling a command is to prevent
+beginning users from executing it by accident and being confused.
+
+  The direct mechanism for disabling a command is to have a address@hidden
address@hidden property on the Lisp symbol for the command.  These
+properties are normally set by the user's init file with
+Lisp expressions such as:
+
address@hidden
+(put 'delete-region 'disabled t)
address@hidden example
+
address@hidden File}.
+
+  If the value of the @code{disabled} property is a string, that string
+is included in the message printed when the command is used:
+
address@hidden
+(put 'delete-region 'disabled
+     "Text deleted this way cannot be yanked back!\n")
address@hidden example
+
address@hidden disable-command
address@hidden enable-command
+  You can disable a command either by editing the init file
+directly or with the command @kbd{M-x disable-command}, which edits the
+init file for you.  @xref{Init File}.
+
+  When you attempt to invoke a disabled command interactively in Emacs,
+a window is displayed containing the command's name, its
+documentation, and some instructions on what to do next; then
+Emacs asks for input saying whether to execute the command as requested,
+enable it and execute, or cancel it.  If you decide to enable the
+command, you are asked whether to do this permanently or just for the
+current session.  Enabling permanently works by automatically editing
+your init file.  You can use @kbd{M-x enable-command} at any
+time to enable any command permanently.
+
+  Whether a command is disabled is independent of what key is used to
+invoke it; it also applies if the command is invoked using @kbd{M-x}.
+Disabling a command has no effect on calling it as a function from Lisp
+programs.
+
address@hidden Syntax
address@hidden The Syntax Table
address@hidden syntax table
+
+  All the Emacs commands which parse words or balance parentheses are
+controlled by the @dfn{syntax table}.  The syntax table specifies which
+characters are opening delimiters, which are parts of words, which are
+string quotes, and so on.  Actually, each major mode has its own syntax
+table (though sometimes related major modes use the same one) which it
+installs in each buffer that uses that major mode.  The syntax table
+installed in the current buffer is the one that all commands use, so we
+call it ``the'' syntax table.  A syntax table is a Lisp object, a vector of
+length 256 whose elements are numbers.
+
address@hidden
+* Entry: Syntax Entry.    What the syntax table records for each character.
+* Change: Syntax Change.  How to change the information.
address@hidden menu
+
address@hidden Syntax Entry
address@hidden Information About Each Character
+
+  The syntax table entry for a character is a number that encodes six
+pieces of information:
+
address@hidden @bullet
address@hidden
+The syntactic class of the character, represented as a small integer
address@hidden
+The matching delimiter, for delimiter characters only
+(the matching delimiter of @samp{(} is @samp{)}, and vice versa)
address@hidden
+A flag saying whether the character is the first character of a
+two-character comment starting sequence
address@hidden
+A flag saying whether the character is the second character of a
+two-character comment starting sequence
address@hidden
+A flag saying whether the character is the first character of a
+two-character comment ending sequence
address@hidden
+A flag saying whether the character is the second character of a
+two-character comment ending sequence
address@hidden itemize
+
+  The syntactic classes are stored internally as small integers, but are
+usually described to or by the user with characters.  For example, @samp{(}
+is used to specify the syntactic class of opening delimiters.  Here is a
+table of syntactic classes, with the characters that specify them.
+
address@hidden @samp
address@hidden @w{-}
+The class of whitespace characters.  Please don't use the formerly
+advertised @w{ }, which is not supported by GNU Emacs.
address@hidden w
+The class of word-constituent characters.
address@hidden _
+The class of characters that are part of symbol names but not words.
+This class is represented by @samp{_} because the character @samp{_}
+has this class in both C and Lisp.
address@hidden .
+The class of punctuation characters that do not fit into any other
+special class.
address@hidden (
+The class of opening delimiters.
address@hidden )
+The class of closing delimiters.
address@hidden '
+The class of expression-adhering characters.  These characters are
+part of a symbol if found within or adjacent to one, and are part
+of a following expression if immediately preceding one, but are like
+whitespace if surrounded by whitespace.
address@hidden "
+The class of string-quote characters.  They match each other in pairs,
+and the characters within the pair all lose their syntactic
+significance except for the @samp{\} and @samp{/} classes of escape
+characters, which can be used to include a string-quote inside the
+string.
address@hidden $
+The class of self-matching delimiters.  This is intended for @TeX{}'s
address@hidden, which is used both to enter and leave math mode.  Thus,
+a pair of matching @samp{$} characters surround each piece of math mode
address@hidden input.  A pair of adjacent @samp{$} characters act like a single
+one for purposes of matching.
+
address@hidden /
+The class of escape characters that always just deny the following
+character its special syntactic significance.  The character after one
+of these escapes is always treated as alphabetic.
address@hidden \
+The class of C-style escape characters.  In practice, these are
+treated just like @samp{/}-class characters, because the extra
+possibilities for C escapes (such as being followed by digits) have no
+effect on where the containing expression ends.
address@hidden <
+The class of comment-starting characters.  Only single-character
+comment starters (such as @samp{;} in Lisp mode) are represented this
+way.
address@hidden >
+The class of comment-ending characters.  Newline has this syntax in
+Lisp mode.
address@hidden table
+
address@hidden parse-sexp-ignore-comments
+  The characters flagged as part of two-character comment delimiters can
+have other syntactic functions most of the time.  For example, @samp{/} and
address@hidden in C code, when found separately, have nothing to do with
+comments.  The comment-delimiter significance overrides when the pair of
+characters occur together in the proper order.  Only the list and sexp
+commands use the syntax table to find comments; the commands specifically
+for comments have other variables that tell them where to find comments.
+Moreover, the list and sexp commands notice comments only if
address@hidden is address@hidden  This variable is set
+to @code{nil} in modes where comment-terminator sequences are liable to
+appear where there is no comment, for example, in Lisp mode where the
+comment terminator is a newline but not every newline ends a comment.
+
address@hidden Syntax Change
address@hidden Altering Syntax Information
+
+  It is possible to alter a character's syntax table entry by storing a new
+number in the appropriate element of the syntax table, but it would be hard
+to determine what number to use.  Emacs therefore provides a command that
+allows you to specify the syntactic properties of a character in a
+convenient way.
+
address@hidden modify-syntax-entry
+  @kbd{M-x modify-syntax-entry} is the command to change a character's
+syntax.  It can be used interactively and is also used by major
+modes to initialize their own syntax tables.  Its first argument is the
+character to change.  The second argument is a string that specifies the
+new syntax.  When called from Lisp code, there is a third, optional
+argument, which specifies the syntax table in which to make the change.  If
+not supplied, or if this command is called interactively, the third
+argument defaults to the current buffer's syntax table.
+
address@hidden
address@hidden
+The first character in the string specifies the syntactic class.  It
+is one of the characters in the previous table (@pxref{Syntax Entry}).
+
address@hidden
+The second character is the matching delimiter.  For a character that
+is not an opening or closing delimiter, this should be a space, and may
+be omitted if no following characters are needed.
+
address@hidden
+The remaining characters are flags.  The flag characters allowed are:
+
address@hidden @samp
address@hidden 1
+Flag this character as the first of a two-character comment starting sequence.
address@hidden 2
+Flag this character as the second of a two-character comment starting sequence.
address@hidden 3
+Flag this character as the first of a two-character comment ending sequence.
address@hidden 4
+Flag this character as the second of a two-character comment ending sequence.
address@hidden table
address@hidden enumerate
+
address@hidden C-h s
address@hidden describe-syntax
+  Use @kbd{C-h s} (@code{describe-syntax}) to display a description of
+the contents of the current syntax table.  The description of each
+character includes both the string you have to pass to
address@hidden to set up that character's current syntax,
+and some English to explain that string if necessary.
+
address@hidden Init File
address@hidden The Init File
address@hidden init file
address@hidden Emacs initialization file
address@hidden key rebinding, permanent
address@hidden rebinding keys, permanently
+
+  When you start Emacs, it normally loads either @file{.xemacs/init.el}
+or the file @file{.emacs} (whichever comes first) in your home directory.
+This file, if it exists, should contain Lisp code.  It is called your
+initialization file or @dfn{init file}.  Use the command line switch
address@hidden to tell Emacs whether to load an init file (@pxref{Entering
+Emacs}).  Use the command line switch @samp{-user-init-file}
+(@pxref{Command Switches}) to tell Emacs to load a different file
+instead of @file{~/.xemacs/init.el}/@file{~/.emacs}.
+
+When the init file is read, the variable @code{user-init-file} says
+which init file was loaded.
+
+  At some sites there is a @dfn{default init file}, which is the
+library named @file{default.el}, found via the standard search path for
+libraries.  The Emacs distribution contains no such library; your site
+may create one for local customizations.  If this library exists, it is
+loaded whenever you start Emacs.  But your init file, if any, is loaded
+first; if it sets @code{inhibit-default-init} address@hidden, then
address@hidden is not loaded.
+
+  If you have a large amount of code in your init file, you should
+byte-compile it to @file{~/.xemacs/init.elc} or @file{~/.emacs.elc}.
+
address@hidden
+* Init Syntax::     Syntax of constants in Emacs Lisp.
+* Init Examples::   How to do some things with an init file.
+* Terminal Init::   Each terminal type can have an init file.
address@hidden menu
+
address@hidden Init Syntax
address@hidden Init File Syntax
+
+  The init file contains one or more Lisp function call
+expressions.  Each consists of a function name followed by
+arguments, all surrounded by parentheses.  For example, @code{(setq
+fill-column 60)} represents a call to the function @code{setq} which is
+used to set the variable @code{fill-column} (@pxref{Filling}) to 60.
+
+  The second argument to @code{setq} is an expression for the new value
+of the variable.  This can be a constant, a variable, or a function call
+expression.  In the init file, constants are used most of the time.
+They can be:
+
address@hidden @asis
address@hidden Numbers
+Integers are written in decimal, with an optional initial minus sign.
+
+If a sequence of digits is followed by a period and another sequence
+of digits, it is interpreted as a floating point number.
+
+The number prefixes @samp{#b}, @samp{#o}, and @samp{#x} are supported to
+represent numbers in binary, octal, and hexadecimal notation (or radix).
+
address@hidden Strings
+Lisp string syntax is the same as C string syntax with a few extra
+features.  Use a double-quote character to begin and end a string constant.
+
+Newlines and special characters may be present literally in strings.  They
+can also be represented as backslash sequences: @samp{\n} for newline,
address@hidden for backspace, @samp{\r} for return, @samp{\t} for tab,
address@hidden for formfeed (control-l), @samp{\e} for escape, @samp{\\} for a
+backslash, @samp{\"} for a double-quote, or @address@hidden for the
+character whose octal code is @var{ooo}.  Backslash and double-quote are
+the only characters for which backslash sequences are mandatory.
+
+You can use @samp{\C-} as a prefix for a control character, as in
address@hidden for ASCII Control-S, and @samp{\M-} as a prefix for
+a Meta character, as in @samp{\M-a} for Meta-A or @samp{\M-\C-a} for
address@hidden
+
address@hidden Characters
+Lisp character constant syntax consists of a @samp{?} followed by
+either a character or an escape sequence starting with @samp{\}.
+Examples: @code{?x}, @code{?\n}, @code{?\"}, @code{?\)}.  Note that
+strings and characters are not interchangeable in Lisp; some contexts
+require one and some contexts require the other.
+
address@hidden True
address@hidden stands for `true'.
+
address@hidden False
address@hidden stands for `false'.
+
address@hidden Other Lisp objects
+Write a single-quote (') followed by the Lisp object you want.
address@hidden table
+
address@hidden Init Examples
address@hidden Init File Examples
+
+  Here are some examples of doing certain commonly desired things with
+Lisp expressions:
+
address@hidden @bullet
address@hidden
+Make @key{TAB} in C mode just insert a tab if point is in the middle of a
+line.
+
address@hidden
+(setq c-tab-always-indent nil)
address@hidden example
+
+Here we have a variable whose value is normally @code{t} for `true'
+and the alternative is @code{nil} for `false'.
+
address@hidden
+Make searches case sensitive by default (in all buffers that do not
+override this).
+
address@hidden
+(setq-default case-fold-search nil)
address@hidden example
+
+This sets the default value, which is effective in all buffers that do
+not have local values for the variable.  Setting @code{case-fold-search}
+with @code{setq} affects only the current buffer's local value, which
+is probably not what you want to do in an init file.
+
address@hidden
+Make Text mode the default mode for new buffers.
+
address@hidden
+(setq default-major-mode 'text-mode)
address@hidden example
+
+Note that @code{text-mode} is used because it is the command for entering
+the mode we want.  A single-quote is written before it to make a symbol
+constant; otherwise, @code{text-mode} would be treated as a variable name.
+
address@hidden
+Turn on Auto Fill mode automatically in Text mode and related modes.
+
address@hidden
+(setq text-mode-hook
+  '(lambda () (auto-fill-mode 1)))
address@hidden example
+
+Here we have a variable whose value should be a Lisp function.  The
+function we supply is a list starting with @code{lambda}, and a single
+quote is written in front of it to make it (for the purpose of this
address@hidden) a list constant rather than an expression.  Lisp functions
+are not explained here; for mode hooks it is enough to know that
address@hidden(auto-fill-mode 1)} is an expression that will be executed when
+Text mode is entered.  You could replace it with any other expression
+that you like, or with several expressions in a row.
+
address@hidden
+(setq text-mode-hook 'turn-on-auto-fill)
address@hidden example
+
+This is another way to accomplish the same result.
address@hidden is a symbol whose function definition is
address@hidden(lambda () (auto-fill-mode 1))}.
+
address@hidden
+Load the installed Lisp library named @file{foo} (actually a file
address@hidden or @file{foo.el} in a standard Emacs directory).
+
address@hidden
+(load "foo")
address@hidden example
+
+When the argument to @code{load} is a relative pathname, not starting
+with @samp{/} or @samp{~}, @code{load} searches the directories in
address@hidden (@pxref{Loading}).
+
address@hidden
+Load the compiled Lisp file @file{foo.elc} from your home directory.
+
address@hidden
+(load "~/foo.elc")
address@hidden example
+
+Here an absolute file name is used, so no searching is done.
+
address@hidden
+Rebind the key @kbd{C-x l} to run the function @code{make-symbolic-link}.
+
address@hidden
+(global-set-key "\C-xl" 'make-symbolic-link)
address@hidden example
+
+or
+
address@hidden
+(define-key global-map "\C-xl" 'make-symbolic-link)
address@hidden example
+
+Note once again the single-quote used to refer to the symbol
address@hidden instead of its value as a variable.
+
address@hidden
+Do the same thing for C mode only.
+
address@hidden
+(define-key c-mode-map "\C-xl" 'make-symbolic-link)
address@hidden example
+
address@hidden
+Bind the function key @key{F1} to a command in C mode.
+Note that the names of function keys must be lower case.
+
address@hidden
+(define-key c-mode-map 'f1 'make-symbolic-link)
address@hidden example
+
address@hidden
+Bind the shifted version of @key{F1} to a command.
+
address@hidden
+(define-key c-mode-map '(shift f1) 'make-symbolic-link)
address@hidden example
+
address@hidden
+Redefine all keys which now run @code{next-line} in Fundamental mode
+to run @code{forward-line} instead.
+
address@hidden
+(substitute-key-definition 'next-line 'forward-line
+                           global-map)
address@hidden example
+
address@hidden
+Make @kbd{C-x C-v} undefined.
+
address@hidden
+(global-unset-key "\C-x\C-v")
address@hidden example
+
+One reason to undefine a key is so that you can make it a prefix.
+Simply defining @kbd{C-x C-v @var{anything}} would make @kbd{C-x C-v}
+a prefix, but @kbd{C-x C-v} must be freed of any non-prefix definition
+first.
+
address@hidden
+Make @samp{$} have the syntax of punctuation in Text mode.
+Note the use of a character constant for @samp{$}.
+
address@hidden
+(modify-syntax-entry ?\$ "." text-mode-syntax-table)
address@hidden example
+
address@hidden
+Enable the use of the command @code{eval-expression} without confirmation.
+
address@hidden
+(put 'eval-expression 'disabled nil)
address@hidden example
address@hidden itemize
+
address@hidden Terminal Init
address@hidden Terminal-Specific Initialization
+
+  Each terminal type can have a Lisp library to be loaded into Emacs when
+it is run on that type of terminal.  For a terminal type named
address@hidden, the library is called @file{term/@var{termtype}} and it is
+found by searching the directories @code{load-path} as usual and trying the
+suffixes @samp{.elc} and @samp{.el}.  Normally it appears in the
+subdirectory @file{term} of the directory where most Emacs libraries are
address@hidden
+
+  The usual purpose of the terminal-specific library is to define the
+escape sequences used by the terminal's function keys using the library
address@hidden  See the file
address@hidden/vt100.el} for an example of how this is address@hidden
+
+  When the terminal type contains a hyphen, only the part of the name
+before the first hyphen is significant in choosing the library name.
+Thus, terminal types @samp{aaa-48} and @samp{aaa-30-rv} both use
+the library @file{term/aaa}.  The code in the library can use
address@hidden(getenv "TERM")} to find the full terminal type address@hidden
+
address@hidden term-file-prefix
+  The library's name is constructed by concatenating the value of the
+variable @code{term-file-prefix} and the terminal type.  Your init
+file can prevent the loading of the terminal-specific library by setting
address@hidden to @code{nil}.  @xref{Init File}.
+
address@hidden term-setup-hook
+  The value of the variable @code{term-setup-hook}, if not @code{nil}, is
+called as a function of no arguments at the end of Emacs initialization,
+after both your init file and any terminal-specific library have been
+read.  @xref{Init File}.  You can set the value in the init file to
+override part of any of the terminal-specific libraries and to define
+initializations for terminals that do not have a address@hidden
+
address@hidden Audible Bell
address@hidden Changing the Bell Sound
address@hidden audible bell, changing
address@hidden bell, changing
address@hidden sound-alist
address@hidden load-default-sounds
address@hidden play-sound
+
+You can now change how the audible bell sounds using the variable
address@hidden
+
address@hidden's value is an list associating symbols with, among
+other things, strings of audio-data.  When @code{ding} is called with
+one of the symbols, the associated sound data is played instead of the
+standard beep.  This only works if you are logged in on the console of a
+machine with audio hardware. To listen to a sound of the provided type,
+call the function @code{play-sound} with the argument @var{sound}. You
+can also set the volume of the sound with the optional argument 
address@hidden@refill
address@hidden ding
+
+Each element of @code{sound-alist} is a list describing a sound.
+The first element of the list is the name of the sound being defined.
+Subsequent elements of the list are alternating keyword/value pairs:
+
address@hidden @code
address@hidden sound
+A string of raw sound data, or the name of another sound to play.   
+The symbol @code{t} here means use the default X beep.
+
address@hidden volume
+An integer from 0-100, defaulting to @code{bell-volume}.
+
address@hidden pitch
+If using the default X beep, the pitch (Hz) to generate.
+
address@hidden duration
+If using the default X beep, the duration (milliseconds).
address@hidden table
+
+For compatibility, elements of `sound-alist' may also be of the form:
+
address@hidden
+( @var{sound-name} . @var{<sound>} )
+( @var{sound-name} @var{<volume>} @var{<sound>} )
address@hidden example
+
+You should probably add things to this list by calling the function
address@hidden
+
+Note that you can only play audio data if running on the console screen
+of a machine with audio hardware which emacs understands, which at this
+time means a Sun SparcStation, SGI, or HP9000s700.
+
+Also note that the pitch, duration, and volume options are available
+everywhere, but most X servers ignore the `pitch' option.
+
address@hidden bell-volume
+The variable @code{bell-volume} should be an integer from 0 to 100,
+with 100 being loudest, which controls how loud the sounds emacs makes
+should be.  Elements of the @code{sound-alist} may override this value.
+This variable applies to the standard X bell sound as well as sound files.
+
+If the symbol @code{t} is in place of a sound-string, Emacs uses the
+default X beep.  This allows you to define beep-types of 
+different volumes even when not running on the console.
+
address@hidden load-sound-file
+You can add things to this list by calling the function
address@hidden, which reads in an audio-file and adds its data to
+the sound-alist. You can specify the sound with the @var{sound-name}
+argument and the file into which the sounds are loaded with the
address@hidden argument. The optional @var{volume} argument sets the
+volume.
+
address@hidden (@var{filename sound-name} &optional @var{volume})}
+
+To load and install some sound files as beep-types, use the function
address@hidden (note that this only works if you are on
+display 0 of a machine with audio hardware).
+
+The following beep-types are used by Emacs itself. Other Lisp
+packages may use other beep types, but these are the ones that the C
+kernel of Emacs uses.
+
address@hidden @code
address@hidden auto-save-error
+An auto-save does not succeed
+
address@hidden command-error
+The Emacs command loop catches an error
+
address@hidden undefined-key
+You type a key that is undefined
+
address@hidden undefined-click
+You use an undefined mouse-click combination
+
address@hidden no-completion
+Completion was not possible
+
address@hidden y-or-n-p
+You type something other than the required @code{y} or @code{n}
+
address@hidden yes-or-no-p       
+You type something other than @code{yes} or @code{no}
address@hidden table
+
address@hidden  node-name,  next,  previous,  up
address@hidden Faces
address@hidden Faces
+
+XEmacs has objects called extents and faces.  An @dfn{extent}
+is a region of text and a @dfn{face} is a collection of textual
+attributes, such as fonts and colors.  Every extent is displayed in some
+face; therefore, changing the properties of a face immediately updates the
+display of all associated extents.  Faces can be frame-local: you can
+have a region of text that displays with completely different
+attributes when its buffer is viewed from a different X window.
+
+The display attributes of faces may be specified either in Lisp or through
+the X resource manager.
+
address@hidden Customizing Faces
+
+You can change the face of an extent with the functions in
+this section.  All the functions prompt for a @var{face} as an
+argument; use completion for a list of possible values.
+
address@hidden @kbd
address@hidden M-x invert-face
+Swap the foreground and background colors of the given @var{face}.
address@hidden M-x make-face-bold
+Make the font of the given @var{face} bold.  When called from a
+program, returns @code{nil} if this is not possible.
address@hidden M-x make-face-bold-italic
+Make the font of the given @var{face} bold italic.  
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-italic
+Make the font of the given @var{face} italic.  
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-unbold
+Make the font of the given @var{face} non-bold.  
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-unitalic
+Make the font of the given @var{face} non-italic.
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-larger
+Make the font of the given @var{face} a little larger.
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x make-face-smaller
+Make the font of the given @var{face} a little smaller.
+When called from a program, returns @code{nil} if not possible.
address@hidden M-x set-face-background 
+Change the background color of the given @var{face}.
address@hidden M-x set-face-background-pixmap
+Change the background pixmap of the given @var{face}.
address@hidden M-x set-face-font 
+Change the font of the given @var{face}.
address@hidden M-x set-face-foreground
+Change the foreground color of the given @var{face}.
address@hidden M-x set-face-underline-p
+Change whether the given @var{face} is underlined.
address@hidden table
+
address@hidden make-face-larger
address@hidden make-face-smaller
+
address@hidden invert-face
+You can exchange the foreground and background color of the selected
address@hidden with the function @code{invert-face}. If the face does not
+specify both foreground and background, then its foreground and
+background are set to the background and foreground of the default face.
+When calling this from a program, you can supply the optional argument 
address@hidden to specify which frame is affected; otherwise, all frames
+are affected.
+
address@hidden make-face-bold
address@hidden make-face-bold-italic
address@hidden make-face-italic
address@hidden make-face-unbold
address@hidden make-face-unitalic
address@hidden face-frob-from-locale-first
+The work of @code{make-face-bold}, @code{make-face-bold-italic},
address@hidden, @code{make-face-unbold},
address@hidden functions is affected by
address@hidden variable.  If it is @code{nil}, those
+functions first try to manipulate device specific data like X font names
+to obtain the desired font face specification.  This may be unsuitable
+in environments using different font face specifications for different
+frames, non-Mule environments in particular.
+
+If the variable is address@hidden, those functions first try to figure
+out whether the face font is the same as one of predefined faces:
address@hidden, @code{bold}, @code{italic}, @code{bold-italic}.  If it
+is the same, then the new face font specification is set to be the same
+as that of a corresponding predefined face.  Thus if the predefined face
+is set up properly for different frames, the same will hold for the face
+being changed by the functions.  This is the behavior one might desire
+in non-Mule environments mentioned above: face being changed still looks
+right in all frames.
+
+How predefined faces might be set up for different frames in such an
+environments is described in @ref{Face Resources}.
+
address@hidden set-face-background
+You can set the background color of the specified @var{face} with the
+function @code{set-face-background}.  The argument @code{color} should
+be a string, the name of a color.  When called from a program, if the
+optional @var{frame} argument is provided, the face is changed only 
+in that frame; otherwise, it is changed in all frames.
+
address@hidden set-face-background-pixmap
+You can set the background pixmap of the specified @var{face} with the
+function @code{set-face-background-pixmap}.  The pixmap argument
address@hidden should be a string, the name of a file of pixmap data.  The
+directories listed in the @code{x-bitmap-file-path} variable are
+searched.  The bitmap may also be a list of the form @code{(@var{width
+height data})}, where @var{width} and @var{height} are the size in
+pixels, and @var{data} is a string containing the raw bits of the
+bitmap.  If the optional @var{frame} argument is provided, the face is
+changed only in that frame; otherwise, it is changed in all frames.
+
+The variable @code{x-bitmap-file-path} takes as a value a list of the
+directories in which X bitmap files may be found.  If the value is
address@hidden, the list is initialized from the @code{*bitmapFilePath}
+resource.
+
+If the environment variable @b{XBMLANGPATH} is set, then it is consulted
+before the @code{x-bitmap-file-path} variable.
+
address@hidden set-face-font
+You can set the font of the specified @var{face} with the function
address@hidden  The @var{font} argument should be a string, the
+name of a font.  When called from a program, if the
+optional @var{frame} argument is provided, the face is changed only 
+in that frame; otherwise, it is changed in all frames.
+
address@hidden set-face-foreground 
+You can set the foreground color of the specified @var{face} with the
+function @code{set-face-foreground}.  The argument @var{color} should be
+a string, the name of a color.  If the optional @var{frame} argument is
+provided, the face is changed only in that frame; otherwise, it is
+changed in all frames.
+
address@hidden set-face-underline-p
+You can set underline the specified @var{face} with the function
address@hidden The argument @var{underline-p} can be used
+to make underlining an attribute of the face or not. If the optional
address@hidden argument is provided, the face is changed only in that
+frame; otherwise, it is changed in all frames.
+
address@hidden Frame Components
address@hidden Frame Components
+
+You can control the presence and position of most frame components, such
+as the menubar, toolbars, and gutters.
+
+This section is not written yet.  Try the Lisp Reference Manual:
address@hidden,,,lispref,}, @ref{Toolbar Intro,,,lispref,}, and
address@hidden Intro,,,lispref,}.
+
address@hidden X Resources
address@hidden X Resources
address@hidden X resources
address@hidden x-create-frame
+
+Historically, XEmacs has used the X resource application class @samp{Emacs}
+for its resources.  Unfortunately, GNU Emacs uses the same application
+class, and resources are not compatible between the two Emacsen.  This
+sharing of the application class often leads to trouble if you want to
+run both variants.
+
+Starting with XEmacs 21, XEmacs uses the class @samp{XEmacs} if it finds
+any XEmacs resources in the resource database when the X connection is
+initialized.  Otherwise, it will use the class @samp{Emacs} for
+backwards compatibility.  The variable @var{x-emacs-application-class}
+may be consulted to determine the application class being used.
+
+The examples in this section assume the application class is @samp{Emacs}.
+
+The Emacs resources are generally set per-frame. Each Emacs frame can have 
+its own name or the same name as another, depending on the name passed to the 
address@hidden function.
+
+You can specify resources for all frames with the syntax:
+
address@hidden
+Emacs*parameter: value
address@hidden example
address@hidden
+
+or
+
address@hidden
+Emacs*EmacsFrame.parameter:value
address@hidden example
address@hidden
+
+You can specify resources for a particular frame with the syntax:
+
address@hidden
+Emacs*FRAME-NAME.parameter: value
address@hidden example
address@hidden
+
address@hidden
+* Geometry Resources::     Controlling the size and position of frames.
+* Iconic Resources::       Controlling whether frames come up iconic.
+* Resource List::          List of resources settable on a frame or device.
+* Face Resources::         Controlling faces using resources.
+* Widgets::                The widget hierarchy for XEmacs.
+* Menubar Resources::      Specifying resources for the menubar.
address@hidden menu
+
address@hidden Geometry Resources
address@hidden Geometry Resources
+
+To make the default size of all Emacs frames be 80 columns by 55 lines,
+do this:
+
address@hidden
+Emacs*EmacsFrame.geometry: 80x55
address@hidden example
address@hidden
+
+To set the geometry of a particular frame named @samp{fred}, do this:
+
address@hidden
+Emacs*fred.geometry: 80x55
address@hidden example
address@hidden
+
+Important! Do not use the following syntax:
+
address@hidden
+Emacs*geometry: 80x55
address@hidden example
address@hidden
+
+You should never use @code{*geometry} with any X application. It does
+not say "make the geometry of Emacs be 80 columns by 55 lines."  It
+really says, "make Emacs and all subwindows thereof be 80x55 in whatever
+units they care to measure in."  In particular, that is both telling the
+Emacs text pane to be 80x55 in characters, and telling the menubar pane
+to be 80x55 pixels, which is surely not what you want.
+
+As a special case, this geometry specification also works (and sets the
+default size of all Emacs frames to 80 columns by 55 lines):
+
address@hidden
+Emacs.geometry: 80x55
address@hidden example
address@hidden
+
+since that is the syntax used with most other applications (since most
+other applications have only one top-level window, unlike Emacs).  In
+general, however, the top-level shell (the unmapped ApplicationShell
+widget named @samp{Emacs} that is the parent of the shell widgets that
+actually manage the individual frames) does not have any interesting
+resources on it, and you should set the resources on the frames instead.
+
+The @code{-geometry} command-line argument sets only the geometry of the
+initial frame created by Emacs.
+
+A more complete explanation of geometry-handling is
+
address@hidden @bullet
address@hidden
+The @code{-geometry} command-line option sets the @code{Emacs.geometry}
+resource, that is, the geometry of the ApplicationShell.
+
address@hidden
+For the first frame created, the size of the frame is taken from the
+ApplicationShell if it is specified, otherwise from the geometry of the
+frame.
+
address@hidden
+For subsequent frames, the order is reversed: First the frame, and then
+the ApplicationShell.
+
address@hidden
+For the first frame created, the position of the frame is taken from the
+ApplicationShell (@code{Emacs.geometry}) if it is specified, otherwise
+from the geometry of the frame.
+
address@hidden
+For subsequent frames, the position is taken only from the frame, and 
+never from the ApplicationShell.
address@hidden itemize
+
+This is rather complicated, but it does seem to provide the most
+intuitive behavior with respect to the default sizes and positions of
+frames created in various ways.
+
address@hidden Iconic Resources
address@hidden Iconic Resources
+
+Analogous to @code{-geometry}, the @code{-iconic} command-line option
+sets the iconic flag of the ApplicationShell (@code{Emacs.iconic}) and
+always applies to the first frame created regardless of its name.
+However, it is possible to set the iconic flag on particular frames (by
+name) by using the @code{Emacs*FRAME-NAME.iconic} resource.
+
address@hidden Resource List
address@hidden Resource List
+
+Emacs frames accept the following resources:
+
address@hidden @asis
address@hidden @code{geometry} (class @code{Geometry}): string
+Initial geometry for the frame.  @xref{Geometry Resources}, for a
+complete discussion of how this works.
+
address@hidden @code{iconic} (class @code{Iconic}): boolean
+Whether this frame should appear in the iconified state.
+
address@hidden @code{internalBorderWidth} (class @code{InternalBorderWidth}): 
int
+How many blank pixels to leave between the text and the edge of the 
+window.
+
address@hidden @code{interline} (class @code{Interline}): int
+How many pixels to leave between each line (may not be implemented).
+
address@hidden @code{menubar} (class @code{Menubar}): boolean
+Whether newly-created frames should initially have a menubar.  Set to
+true by default.
+
address@hidden @code{initiallyUnmapped} (class @code{InitiallyUnmapped}): 
boolean
+Whether XEmacs should leave the initial frame unmapped when it starts
+up.  This is useful if you are starting XEmacs as a server (e.g. in
+conjunction with gnuserv or the external client widget).  You can also
+control this with the @code{-unmapped} command-line option.
+
address@hidden @code{barCursor} (class @code{BarColor}): boolean
+Whether the cursor should be displayed as a bar, or the traditional box.
+
address@hidden @code{cursorColor} (class @code{CursorColor}): color-name
+The color of the text cursor.
+
address@hidden @code{scrollBarWidth} (class @code{ScrollBarWidth}): integer
+How wide the vertical scrollbars should be, in pixels; 0 means no
+vertical scrollbars.  You can also use a resource specification of the
+form @code{*scrollbar.width}, or the usual toolkit scrollbar resources:
address@hidden (Motif), @code{*XlwScrollBar.width} (Lucid),
+or @code{*Scrollbar.thickness} (Athena).  We don't recommend that you
+use the toolkit resources, though, because they're dependent on how
+exactly your particular build of XEmacs was configured.
+
address@hidden @code{scrollBarHeight} (class @code{ScrollBarHeight}): integer
+How high the horizontal scrollbars should be, in pixels; 0 means no
+horizontal scrollbars.  You can also use a resource specification of the
+form @code{*scrollbar.height}, or the usual toolkit scrollbar resources:
address@hidden (Motif), @code{*XlwScrollBar.height} (Lucid),
+or @code{*Scrollbar.thickness} (Athena).  We don't recommend that you use
+the toolkit resources, though, because they're dependent on how exactly
+your particular build of XEmacs was configured.
+
address@hidden @code{scrollBarPlacement} (class @code{ScrollBarPlacement}): 
string
+Where the horizontal and vertical scrollbars should be positioned.  This
+should be one of the four strings @samp{BOTTOM_LEFT},
address@hidden, @samp{TOP_LEFT}, and @samp{TOP_RIGHT}.  Default is
address@hidden for the Motif and Lucid scrollbars and
address@hidden for the Athena scrollbars.
+
address@hidden @code{topToolBarHeight} (class @code{TopToolBarHeight}): integer
address@hidden @code{bottomToolBarHeight} (class @code{BottomToolBarHeight}): 
integer
address@hidden @code{leftToolBarWidth} (class @code{LeftToolBarWidth}): integer
address@hidden @code{rightToolBarWidth} (class @code{RightToolBarWidth}): 
integer
+Height and width of the four possible toolbars.
+
address@hidden @code{topToolBarShadowColor} (class 
@code{TopToolBarShadowColor}): color-name
address@hidden @code{bottomToolBarShadowColor} (class 
@code{BottomToolBarShadowColor}): color-name
+Color of the top and bottom shadows for the toolbars.  NOTE: These resources
+do @emph{not} have anything to do with the top and bottom toolbars (i.e. the
+toolbars at the top and bottom of the frame)!  Rather, they affect the top
+and bottom shadows around the edges of all four kinds of toolbars.
+
address@hidden @code{topToolBarShadowPixmap} (class 
@code{TopToolBarShadowPixmap}): pixmap-name
address@hidden @code{bottomToolBarShadowPixmap} (class 
@code{BottomToolBarShadowPixmap}): pixmap-name
+Pixmap of the top and bottom shadows for the toolbars.  If set, these
+resources override the corresponding color resources. NOTE: These
+resources do @emph{not} have anything to do with the top and bottom
+toolbars (i.e. the toolbars at the top and bottom of the frame)!
+Rather, they affect the top and bottom shadows around the edges of all
+four kinds of toolbars.
+
address@hidden @code{toolBarShadowThickness} (class 
@code{ToolBarShadowThickness}): integer
+Thickness of the shadows around the toolbars, in pixels.
+
address@hidden @code{visualBell} (class @code{VisualBell}): boolean
+Whether XEmacs should flash the screen rather than making an audible beep.
+
address@hidden @code{bellVolume} (class @code{BellVolume}): integer
+Volume of the audible beep.
+
address@hidden @code{useBackingStore} (class @code{UseBackingStore}): boolean
+Whether XEmacs should set the backing-store attribute of the X windows
+it creates.  This increases the memory usage of the X server but decreases
+the amount of X traffic necessary to update the screen, and is useful
+when the connection to the X server goes over a low-bandwidth line
+such as a modem connection.
address@hidden table
+
+Emacs devices accept the following resources:
+
address@hidden @asis
address@hidden @code{textPointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over text.  This resource is used to
+initialize the variable @code{x-pointer-shape}.
+
address@hidden @code{selectionPointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over a selectable text region (an
+extent with the @samp{highlight} property; for example, an Info
+cross-reference).  This resource is used to initialize the variable
address@hidden
+
address@hidden @code{spacePointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over a blank space in a buffer (that
+is, after the end of a line or after the end-of-file).  This resource is
+used to initialize the variable @code{x-nontext-pointer-shape}.
+
address@hidden @code{modeLinePointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over a modeline.  This resource is
+used to initialize the variable @code{x-mode-pointer-shape}.
+
address@hidden @code{gcPointer} (class @code{Cursor}): cursor-name
+The cursor to display when a garbage-collection is in progress.  This
+resource is used to initialize the variable @code{x-gc-pointer-shape}.
+
address@hidden @code{scrollbarPointer} (class @code{Cursor}): cursor-name
+The cursor to use when the mouse is over the scrollbar.  This resource
+is used to initialize the variable @code{x-scrollbar-pointer-shape}.
+
address@hidden @code{pointerColor} (class @code{Foreground}): color-name
address@hidden @code{pointerBackground} (class @code{Background}): color-name
+The foreground and background colors of the mouse cursor.  These
+resources are used to initialize the variables
address@hidden and @code{x-pointer-background-color}.
address@hidden table
+
address@hidden Face Resources
address@hidden Face Resources
+
+The attributes of faces are also per-frame. They can be specified as:
+
address@hidden
+Emacs.FACE_NAME.parameter: value
address@hidden example
address@hidden
+
+or
+
address@hidden
+Emacs*FRAME_NAME.FACE_NAME.parameter: value
address@hidden example
address@hidden
+
+Faces accept the following resources:
+
address@hidden @asis
address@hidden @code{attributeFont} (class @code{AttributeFont}): font-name
+The font of this face.
+
address@hidden @code{attributeForeground} (class @code{AttributeForeground}): 
color-name
address@hidden @code{attributeBackground} (class @code{AttributeBackground}): 
color-name
+The foreground and background colors of this face.
+
address@hidden @code{attributeBackgroundPixmap} (class 
@code{AttributeBackgroundPixmap}): file-name
+The name of an @sc{xbm} file (or @sc{xpm} file, if your version of Emacs
+supports @sc{xpm}), to use as a background stipple.
+
address@hidden @code{attributeUnderline} (class @code{AttributeUnderline}): 
boolean
+Whether text in this face should be underlined.
address@hidden table
+
+All text is displayed in some face, defaulting to the face named
address@hidden  To set the font of normal text, use
address@hidden To set it in the frame named
address@hidden, use @code{Emacs*fred.default.attributeFont}.
+
+These are the names of the predefined faces:
+
address@hidden @code
address@hidden default
+Everything inherits from this.
+
address@hidden bold
+If this is not specified in the resource database, Emacs tries to find a
+bold version of the font of the default face.
+
address@hidden italic
+If this is not specified in the resource database, Emacs tries to find
+an italic version of the font of the default face.
+
address@hidden bold-italic
+If this is not specified in the resource database, Emacs tries to find a
+bold-italic version of the font of the default face.
+
address@hidden modeline
+This is the face that the modeline is displayed in.  If not specified in
+the resource database, it is determined from the default face by
+reversing the foreground and background colors.
+
address@hidden highlight
+This is the face that highlighted extents (for example, Info
+cross-references and possible completions, when the mouse passes over
+them) are displayed in.
+
address@hidden left-margin
address@hidden right-margin
+These are the faces that the left and right annotation margins are
+displayed in.
+
address@hidden zmacs-region
+This is the face that mouse selections are displayed in.
+ 
address@hidden isearch
+This is the face that the matched text being searched for is displayed
+in.
+
address@hidden info-node
+This is the face of info menu items.  If unspecified, it is copied from
address@hidden
+
address@hidden info-xref
+This is the face of info cross-references.  If unspecified, it is copied
+from @code{bold}. (Note that, when the mouse passes over a
+cross-reference, the cross-reference's face is determined from a
+combination of the @code{info-xref} and @code{highlight} faces.)
address@hidden table
+
+Other packages might define their own faces; to see a list of all faces,
+use any of the interactive face-manipulation commands such as
address@hidden and type @samp{?} when you are prompted for the
+name of a face.
+
+If the @code{bold}, @code{italic}, and @code{bold-italic} faces are not
+specified in the resource database, then XEmacs attempts to derive them
+from the font of the default face.  It can only succeed at this if you
+have specified the default font using the XLFD (X Logical Font
+Description) format, which looks like
+
address@hidden
+*-courier-medium-r-*-*-*-120-*-*-*-*-*-*
address@hidden example
address@hidden
+
+If you use any of the other, less strict font name formats, some of which
+look like
+
address@hidden
+lucidasanstypewriter-12
+fixed
+9x13
address@hidden example
+
+then XEmacs won't be able to guess the names of the bold and italic
+versions.  All X fonts can be referred to via XLFD-style names, so you
+should use those forms.  See the man pages for @samp{X(1)},
address@hidden(1)}, and @samp{xfontsel(1)}.
+
address@hidden Widgets
address@hidden Widgets
+
+There are several structural widgets between the terminal EmacsFrame
+widget and the top level ApplicationShell; the exact names and types of
+these widgets change from release to release (for example, they changed
+between 19.8 and 19.9, 19.9 and 19.10, and 19.10 and 19.12) and are
+subject to further change in the future, so you should avoid mentioning
+them in your resource database.  The above-mentioned syntaxes should be
+forward- compatible.  As of 19.13, the exact widget hierarchy is as
+follows:
+
address@hidden
+INVOCATION-NAME            "shell"       "container"     FRAME-NAME
+x-emacs-application-class  "EmacsShell"  "EmacsManager"  "EmacsFrame"
address@hidden example
+
+where INVOCATION-NAME is the terminal component of the name of the
+XEmacs executable (usually @samp{xemacs}), and
address@hidden is generally @samp{Emacs}.
+
address@hidden Menubar Resources
address@hidden Menubar Resources
+
+As the menubar is implemented as a widget which is not a part of XEmacs
+proper, it does not use the face mechanism for specifying fonts and
+colors: It uses whatever resources are appropriate to the type of widget
+which is used to implement it.
+
+If Emacs was compiled to use only the Lucid Motif-lookalike menu widgets,
+then one way to specify the font of the menubar would be
+
address@hidden
+Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
address@hidden example
+
+If both the Lucid Motif-lookalike menu widgets and X Font Sets are 
+configured to allow multilingual menubars, then one uses
+
address@hidden
+*menubar*FontSet:       -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \
+                        -*-*-*-*-*-*-*-120-*-jisx0208.1983-0
address@hidden example
+
+That would specify fonts for a Japanese menubar.  Specifying only one
+XLFD is acceptable; specifying more than one for a given registry
+(language) is also allowed.  When X Font Sets are configured, some .font
+resources (eg, menubars) are ignored in favor of the corresponding
+.fontSet resources.
+
+If the Motif library is being used, then one would have to use 
+
address@hidden
+Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
address@hidden example
+
+because the Motif library uses the @code{fontList} resource name instead
+of @code{font}, which has subtly different semantics.
+
+The same is true of the scrollbars: They accept whichever resources are 
+appropriate for the toolkit in use.
+
+
address@hidden Quitting, Lossage, Customization, Top
address@hidden Quitting and Aborting
address@hidden quitting
+
address@hidden @kbd
address@hidden C-g
+Quit.  Cancel running or partially typed command.
address@hidden C-]
+Abort innermost recursive editing level and cancel the command which
+invoked it (@code{abort-recursive-edit}).
address@hidden M-x top-level
+Abort all recursive editing levels that are currently executing.
address@hidden C-x u
+Cancel an already-executed command, usually (@code{undo}).
address@hidden table
+
+  There are two ways of cancelling commands which are not finished
+executing: @dfn{quitting} with @kbd{C-g}, and @dfn{aborting} with @kbd{C-]}
+or @kbd{M-x top-level}.  Quitting is cancelling a partially typed command
+or one which is already running.  Aborting is getting out of a recursive
+editing level and cancelling the command that invoked the recursive edit.
+
address@hidden quitting
address@hidden C-g
+  Quitting with @kbd{C-g} is used for getting rid of a partially typed
+command or a numeric argument that you don't want.  It also stops a
+running command in the middle in a relatively safe way, so you can use
+it if you accidentally start executing a command that takes a long
+time.  In particular, it is safe to quit out of killing; either your
+text will @var{all} still be there, or it will @var{all} be in the kill
+ring (or maybe both).  Quitting an incremental search does special
+things documented under searching; in general, it may take two
+successive @kbd{C-g} characters to get out of a search.  @kbd{C-g} works
+by setting the variable @code{quit-flag} to @code{t} the instant
address@hidden is typed; Emacs Lisp checks this variable frequently and quits
+if it is address@hidden  @kbd{C-g} is only actually executed as a
+command if it is typed while Emacs is waiting for input.
+
+If you quit twice in a row before the first @kbd{C-g} is recognized, you
+activate the ``emergency escape'' feature and return to the shell.
address@hidden Escape}.
+
address@hidden recursive editing level
address@hidden editing level, recursive
address@hidden aborting
address@hidden abort-recursive-edit
address@hidden C-]
+  You can use @kbd{C-]} (@code{abort-recursive-edit}) to get out
+of a recursive editing level and cancel the command which invoked it.
+Quitting with @kbd{C-g} does not do this, and could not do this because it
+is used to cancel a partially typed command @i{within} the recursive
+editing level.  Both operations are useful.  For example, if you are in the
+Emacs debugger (@pxref{Lisp Debug}) and have typed @kbd{C-u 8} to enter a
+numeric argument, you can cancel that argument with @kbd{C-g} and remain in
+the debugger.
+
address@hidden top-level
+  The command @kbd{M-x top-level} is equivalent to ``enough'' @kbd{C-]}
+commands to get you out of all the levels of recursive edits that you are
+in.  @kbd{C-]} only gets you out one level at a time, but @kbd{M-x top-level}
+goes out all levels at once.  Both @kbd{C-]} and @kbd{M-x top-level} are
+like all other commands and unlike @kbd{C-g} in that they are effective
+only when Emacs is ready for a command.  @kbd{C-]} is an ordinary key and
+has its meaning only because of its binding in the keymap.
address@hidden Edit}.
+
+  @kbd{C-x u} (@code{undo}) is not strictly speaking a way of cancelling a
+command, but you can think of it as cancelling a command already finished
+executing.  @xref{Undo}.
+
address@hidden Lossage, Bugs, Quitting, Top
address@hidden Dealing With Emacs Trouble
+
+  This section describes various conditions in which Emacs fails to work,
+and how to recognize them and correct them.
+
address@hidden
+* Stuck Recursive::    `[...]' in mode line around the parentheses.
+* Screen Garbled::     Garbage on the screen.
+* Text Garbled::       Garbage in the text.
+* Unasked-for Search:: Spontaneous entry to incremental search.
+* Emergency Escape::   Emergency escape---
+                        What to do if Emacs stops responding.
+* Total Frustration::  When you are at your wits' end.
address@hidden menu
+
address@hidden Stuck Recursive, Screen Garbled, Lossage, Lossage
address@hidden Recursive Editing Levels
+
+  Recursive editing levels are important and useful features of Emacs, but
+they can seem like malfunctions to the user who does not understand them.
+
+  If the mode line has square brackets @address@hidden around the parentheses
+that contain the names of the major and minor modes, you have entered a
+recursive editing level.  If you did not do this on purpose, or if you
+don't understand what that means, you should just get out of the recursive
+editing level.  To do so, type @kbd{M-x top-level}.  This is called getting
+back to top level.  @xref{Recursive Edit}.
+
address@hidden Screen Garbled, Text Garbled, Stuck Recursive, Lossage
address@hidden Garbage on the Screen
+
+  If the data on the screen looks wrong, the first thing to do is see
+whether the text is actually wrong.  Type @kbd{C-l}, to redisplay the
+entire screen.  If the text appears correct after this, the problem was
+entirely in the previous screen update.
+
+  Display updating problems often result from an incorrect termcap entry
+for the terminal you are using.  The file @file{etc/TERMS} in the Emacs
+distribution gives the fixes for known problems of this sort.
address@hidden contains general advice for these problems in one of its
+sections.  Very likely there is simply insufficient padding for certain
+display operations.  To investigate the possibility that you have this
+sort of problem, try Emacs on another terminal made by a different
+manufacturer.  If problems happen frequently on one kind of terminal but
+not another kind, the real problem is likely to be a bad termcap entry,
+though it could also be due to a bug in Emacs that appears for terminals
+that have or lack specific features.
+
address@hidden Text Garbled, Unasked-for Search, Screen Garbled, Lossage
address@hidden Garbage in the Text
+
+  If @kbd{C-l} shows that the text is wrong, try undoing the changes to it
+using @kbd{C-x u} until it gets back to a state you consider correct.  Also
+try @kbd{C-h l} to find out what command you typed to produce the observed
+results.
+
+  If a large portion of text appears to be missing at the beginning or
+end of the buffer, check for the word @samp{Narrow} in the mode line.
+If it appears, the text is still present, but marked off-limits.
+To make it visible again, type @kbd{C-x n w}.  @xref{Narrowing}.
+
address@hidden Unasked-for Search, Emergency Escape, Text Garbled, Lossage
address@hidden Spontaneous Entry to Incremental Search
+
+  If Emacs spontaneously displays @samp{I-search:} at the bottom of the
+screen, it means that the terminal is sending @kbd{C-s} and @kbd{C-q}
+according to the poorly designed xon/xoff ``flow control'' protocol.  You
+should try to prevent this by putting the terminal in a mode where it will
+not use flow control, or by giving it enough padding that it will never send a
address@hidden  If that cannot be done, you must tell Emacs to expect flow
+control to be used, until you can get a properly designed terminal.
+
+  Information on how to do these things can be found in the file
address@hidden in the Emacs distribution.
+
address@hidden Emergency Escape, Total Frustration, Unasked-for Search, Lossage
address@hidden Emergency Escape
+
+  Because at times there have been bugs causing Emacs to loop without
+checking @code{quit-flag}, a special feature causes Emacs to be suspended
+immediately if you type a second @kbd{C-g} while the flag is already set,
+so you can always get out of XEmacs.  Normally Emacs recognizes and
+clears @code{quit-flag} (and quits!) quickly enough to prevent this from
+happening.
+
+  When you resume Emacs after a suspension caused by multiple @kbd{C-g}, it
+asks two questions before going back to what it had been doing:
+
address@hidden
+Auto-save? (y or n)
+Abort (and dump core)? (y or n)
address@hidden example
+
address@hidden
+Answer each one with @kbd{y} or @kbd{n} followed by @key{RET}.
+
+  Saying @kbd{y} to @samp{Auto-save?} causes immediate auto-saving of all
+modified buffers in which auto-saving is enabled.
+
+  Saying @kbd{y} to @samp{Abort (and dump core)?} causes an illegal
+instruction to be executed, dumping core.  This is to enable a wizard to
+figure out why Emacs was failing to quit in the first place.  Execution
+does not continue after a core dump.  If you answer @kbd{n}, execution
+does continue.  With luck, Emacs will ultimately check
address@hidden and quit normally.  If not, and you type another
address@hidden, it is suspended again.
+
+  If Emacs is not really hung, but is just being slow, you may invoke
+the double @kbd{C-g} feature without really meaning to.  In that case,
+simply resume and answer @kbd{n} to both questions, and you will arrive
+at your former state.  Presumably the quit you requested will happen
+soon.
+
+  The address@hidden feature may be turned off when Emacs is running under
+a window system, since the window system always enables you to kill Emacs
+or to create another window and run another program.
+
address@hidden Total Frustration,, Emergency Escape, Lossage
address@hidden Help for Total Frustration
address@hidden Eliza
address@hidden doctor
+
+  If using Emacs (or something else) becomes terribly frustrating and none
+of the techniques described above solve the problem, Emacs can still help
+you.
+
+  First, if the Emacs you are using is not responding to commands, type
address@hidden C-g} to get out of it and then start a new one.
+
address@hidden doctor
+  Second, type @kbd{M-x doctor @key{RET}}.
+
+  The doctor will make you feel better.  Each time you say something to
+the doctor, you must end it by typing @key{RET} @key{RET}.  This lets the
+doctor know you are finished.
+
address@hidden Bugs,, Lossage, Top
address@hidden Reporting Bugs
+
address@hidden bugs
+  Sometimes you will encounter a bug in Emacs.  Although we cannot promise
+we can or will fix the bug, and we might not even agree that it is a bug,
+we want to hear about bugs you encounter in case we do want to fix them.
+
+  To make it possible for us to fix a bug, you must report it.  In order
+to do so effectively, you must know when and how to do it.
+
address@hidden When Is There a Bug
+
+  If Emacs executes an illegal instruction, or dies with an operating
+system error message that indicates a problem in the program (as opposed to
+something like ``disk full''), then it is certainly a bug.
+
+  If Emacs updates the display in a way that does not correspond to what is
+in the buffer, then it is certainly a bug.  If a command seems to do the
+wrong thing but the problem corrects itself if you type @kbd{C-l}, it is a
+case of incorrect display updating.
+
+  Taking forever to complete a command can be a bug, but you must make
+certain that it was really Emacs's fault.  Some commands simply take a long
+time.  Type @kbd{C-g} and then @kbd{C-h l} to see whether the input Emacs
+received was what you intended to type; if the input was such that you
address@hidden it should have been processed quickly, report a bug.  If you
+don't know whether the command should take a long time, find out by looking
+in the manual or by asking for assistance.
+
+  If a command you are familiar with causes an Emacs error message in a
+case where its usual definition ought to be reasonable, it is probably a
+bug.
+
+  If a command does the wrong thing, that is a bug.  But be sure you know
+for certain what it ought to have done.  If you aren't familiar with the
+command, or don't know for certain how the command is supposed to work,
+then it might actually be working right.  Rather than jumping to
+conclusions, show the problem to someone who knows for certain.
+
+  Finally, a command's intended definition may not be best for editing
+with.  This is a very important sort of problem, but it is also a matter of
+judgment.  Also, it is easy to come to such a conclusion out of ignorance
+of some of the existing features.  It is probably best not to complain
+about such a problem until you have checked the documentation in the usual
+ways, feel confident that you understand it, and know for certain that what
+you want is not available.  If you are not sure what the command is
+supposed to do after a careful reading of the manual, check the index and
+glossary for any terms that may be unclear.  If you still do not
+understand, this indicates a bug in the manual.  The manual's job is to
+make everything clear.  It is just as important to report documentation
+bugs as program bugs.
+
+  If the online documentation string of a function or variable disagrees
+with the manual, one of them must be wrong, so report the bug.
+
address@hidden How to Report a Bug
+
address@hidden emacs-version
+  When you decide that there is a bug, it is important to report it and to
+report it in a way which is useful.  What is most useful is an exact
+description of what commands you type, starting with the shell command to
+run Emacs, until the problem happens.  Always include the version number
+of Emacs that you are using; type @kbd{M-x emacs-version} to print this.
+
+  The most important principle in reporting a bug is to report @var{facts},
+not hypotheses or categorizations.  It is always easier to report the facts,
+but people seem to prefer to strain to posit explanations and report
+them instead.  If the explanations are based on guesses about how Emacs is
+implemented, they will be useless; we will have to try to figure out what
+the facts must have been to lead to such speculations.  Sometimes this is
+impossible.  But in any case, it is unnecessary work for us.
+
+  For example, suppose that you type @kbd{C-x C-f /glorp/baz.ugh
address@hidden, visiting a file which (you know) happens to be rather large,
+and Emacs prints out @samp{I feel pretty today}.  The best way to report
+the bug is with a sentence like the preceding one, because it gives all the
+facts and nothing but the facts.
+
+  Do not assume that the problem is due to the size of the file and say,
+``When I visit a large file, Emacs prints out @samp{I feel pretty today}.''
+This is what we mean by ``guessing explanations''.  The problem is just as
+likely to be due to the fact that there is a @samp{z} in the file name.  If
+this is so, then when we got your report, we would try out the problem with
+some ``large file'', probably with no @samp{z} in its name, and not find
+anything wrong.  There is no way in the world that we could guess that we
+should try visiting a file with a @samp{z} in its name.
+
+  Alternatively, the problem might be due to the fact that the file starts
+with exactly 25 spaces.  For this reason, you should make sure that you
+inform us of the exact contents of any file that is needed to reproduce the
+bug.  What if the problem only occurs when you have typed the @kbd{C-x a l}
+command previously?  This is why we ask you to give the exact sequence of
+characters you typed since starting to use Emacs.
+
+  You should not even say ``visit a file'' instead of @kbd{C-x C-f} unless
+you @i{know} that it makes no difference which visiting command is used.
+Similarly, rather than saying ``if I have three characters on the line,''
+say ``after I type @address@hidden A B C @key{RET} C-p},'' if that is
+the way you entered the address@hidden
+
+  If you are not in Fundamental mode when the problem occurs, you should
+say what mode you are in.
+
+  If the manifestation of the bug is an Emacs error message, it is
+important to report not just the text of the error message but a backtrace
+showing how the Lisp program in Emacs arrived at the error.  To make the
+backtrace, you must execute the Lisp expression 
address@hidden(setq @w{debug-on-error t})} before the error happens (that is to
+say, you must execute that expression and then make the bug happen).  This
+causes the Lisp debugger to run (@pxref{Lisp Debug}).  The debugger's
+backtrace can be copied as text into the bug report.  This use of the
+debugger is possible only if you know how to make the bug happen again.  Do
+note the error message the first time the bug happens, so if you can't make
+it happen again, you can report at least that.
+
+  Check whether any programs you have loaded into the Lisp world, including
+your init file, set any variables that may affect the functioning of
+Emacs.  @xref{Init File}.  Also, see whether the problem happens in a
+freshly started Emacs without loading your init file (start Emacs with
+the @code{-q} switch to prevent loading the init file).  If the problem
+does @var{not} occur then, it is essential that we know the contents of
+any programs that you must load into the Lisp world in order to cause
+the problem to occur.
+
+  If the problem does depend on an init file or other Lisp programs that
+are not part of the standard Emacs system, then you should make sure it is
+not a bug in those programs by complaining to their maintainers first.
+After they verify that they are using Emacs in a way that is supposed to
+work, they should report the bug.
+
+  If you can tell us a way to cause the problem without visiting any files,
+please do so.  This makes it much easier to debug.  If you do need files,
+make sure you arrange for us to see their exact contents.  For example, it
+can often matter whether there are spaces at the ends of lines, or a
+newline after the last line in the buffer (nothing ought to care whether
+the last line is terminated, but tell that to the bugs).
+
address@hidden open-dribble-file
address@hidden dribble file
+  The easy way to record the input to Emacs precisely is to write a
+dribble file; execute the Lisp expression:
+
address@hidden
+(open-dribble-file "~/dribble")
address@hidden example
+
address@hidden
+using @address@hidden or from the @samp{*scratch*} buffer just after starting
+Emacs.  From then on, all Emacs input will be written in the specified
+dribble file until the Emacs process is killed.
+
address@hidden open-termscript
address@hidden termscript file
+  For possible display bugs, it is important to report the terminal type
+(the value of environment variable @code{TERM}), the complete termcap entry
+for the terminal from @file{/etc/termcap} (since that file is not identical
+on all machines), and the output that Emacs actually sent to the terminal.
+The way to collect this output is to execute the Lisp expression:
+
address@hidden
+(open-termscript "~/termscript")
address@hidden example
+
address@hidden using @address@hidden or from the @samp{*scratch*} buffer
+just after starting Emacs.  From then on, all output from Emacs to the
+terminal will be written in the specified termscript file as well, until
+the Emacs process is killed.  If the problem happens when Emacs starts
+up, put this expression into your init file so that the termscript file
+will be open when Emacs displays the screen for the first time.
address@hidden File}. Be warned: it is often difficult, and sometimes
+impossible, to fix a terminal-dependent bug without access to a terminal
+of the type that stimulates the address@hidden
+
+The newsgroup @samp{comp.emacs.xemacs} may be used for bug reports,
+other discussions and requests for assistance.  
+
+If you don't have access to this newgroup, you can subscribe to the
+mailing list version: the newsgroup is bidirectionally gatewayed into
+the mailing list @samp{xemacs@@xemacs.org}.
+
+To be added or removed from this mailing list, send mail to
address@hidden@@xemacs.org}.  Do not send requests for addition
+to the mailing list itself.
+
+The mailing lists and newsgroups are archived on our anonymous FTP server,
address@hidden, and at various other archive sites around the net. You 
+should also check the @samp{FAQ} in @samp{/pub/xemacs} on our anonymous 
+FTP server. It provides some introductory information and help for initial 
+configuration problems.
+
+
+
address@hidden Glossary, Manifesto, Intro, Top
address@hidden Glossary
+
address@hidden @asis
address@hidden Abbrev
+An abbrev is a text string which expands into a different text string
+when present in the buffer.  For example, you might define a short
+word as an abbrev for a long phrase that you want to insert
+frequently.  @xref{Abbrevs}.
+
address@hidden Aborting
+Aborting means getting out of a recursive edit (q.v.@:).  You can use
+the commands @kbd{C-]} and @kbd{M-x top-level} for this.
address@hidden
+
address@hidden Auto Fill mode
+Auto Fill mode is a minor mode in which text you insert is
+automatically broken into lines of fixed width.  @xref{Filling}.
+
address@hidden Auto Saving
+Auto saving means that Emacs automatically stores the contents of an
+Emacs buffer in a specially-named file so the information will not be
+lost if the buffer is lost due to a system error or user error.
address@hidden Save}.
+
address@hidden Backup File
+A backup file records the contents that a file had before the current
+editing session.  Emacs creates backup files automatically to help you
+track down or cancel changes you later regret.  @xref{Backup}.
+
address@hidden Balance Parentheses
+Emacs can balance parentheses manually or automatically.  Manual
+balancing is done by the commands to move over balanced expressions
+(@pxref{Lists}).  Automatic balancing is done by blinking the
+parenthesis that matches one just inserted (@pxref{Matching,,Matching
+Parens}).
+
address@hidden Bind
+To bind a key is to change its binding (q.v.@:).  @xref{Rebinding}.
+
address@hidden Binding
+A key gets its meaning in Emacs by having a binding which is a
+command (q.v.@:), a Lisp function that is run when the key is typed.
address@hidden,Binding}.  Customization often involves rebinding a
+character to a different command function.  The bindings of all keys
+are recorded in the keymaps (q.v.@:).  @xref{Keymaps}.
+
address@hidden Blank Lines
+Blank lines are lines that contain only whitespace.  Emacs has several
+commands for operating on the blank lines in a buffer.
+
address@hidden Buffer
+The buffer is the basic editing unit; one buffer corresponds to one
+piece of text being edited.  You can have several buffers, but at any
+time you are editing only one, the `selected' buffer, though several
+buffers can be visible when you are using multiple windows.  @xref{Buffers}.
+
address@hidden Buffer Selection History
+Emacs keeps a buffer selection history which records how recently each
+Emacs buffer was selected.  Emacs uses this list when choosing a buffer to
+select.  @xref{Buffers}.
+
address@hidden C-
address@hidden in the name of a character is an abbreviation for Control.
address@hidden,C-}.
+
address@hidden C-M-
address@hidden in the name of a character is an abbreviation for
+Control-Meta.  @xref{Keystrokes,C-M-}.
+
address@hidden Case Conversion
+Case conversion means changing text from upper case to lower case or
+vice versa.  @xref{Case}, for the commands for case conversion.
+
address@hidden Characters
+Characters form the contents of an Emacs buffer; also, Emacs commands
+are invoked by keys (q.v.@:), which are sequences of one or more
+characters.  @xref{Keystrokes}.
+
address@hidden Command
+A command is a Lisp function specially defined to be able to serve as a
+key binding in Emacs.  When you type a key (q.v.@:), Emacs looks up its
+binding (q.v.@:) in the relevant keymaps (q.v.@:) to find the command to
+run.  @xref{Commands}.
+
address@hidden Command Name
+A command name is the name of a Lisp symbol which is a command
+(@pxref{Commands}).  You can invoke any command by its name using
address@hidden (@pxref{M-x}).
+
address@hidden Comments
+A comment is text in a program which is intended only for the people
+reading the program, and is marked specially so that it will be
+ignored when the program is loaded or compiled.  Emacs offers special
+commands for creating, aligning, and killing comments.
address@hidden
+
address@hidden Compilation
+Compilation is the process of creating an executable program from
+source code.  Emacs has commands for compiling files of Emacs Lisp
+code (@pxref{Lisp Libraries}) and programs in C and other languages
+(@pxref{Compilation}).
+
address@hidden Complete Key
+A complete key is a character or sequence of characters which, when typed
+by the user, fully specifies one action to be performed by Emacs.  For
+example, @kbd{X} and @kbd{Control-f} and @kbd{Control-x m} are keys.  Keys
+derive their meanings from being bound (q.v.@:) to commands (q.v.@:).
+Thus, @kbd{X} is conventionally bound to a command to insert @samp{X} in
+the buffer; @kbd{C-x m} is conventionally bound to a command to begin
+composing a mail message. @xref{Keystrokes}.
+
address@hidden Completion
+When Emacs automatically fills an abbreviation for a name into the
+entire name, that process is called completion.  Completion is done for
+minibuffer (q.v.@:) arguments when the set of possible valid inputs is
+known; for example, on command names, buffer names, and file names.
+Completion occurs when you type @key{TAB}, @key{SPC}, or @key{RET}.
address@hidden@refill
+
address@hidden Continuation Line
+When a line of text is longer than the width of the frame, it
+takes up more than one screen line when displayed.  We say that the
+text line is continued, and all screen lines used for it after the
+first are called continuation lines.  @xref{Basic,Continuation,Basic
+Editing}.
+
address@hidden Control-Character
+ASCII characters with octal codes 0 through 037, and also code 0177,
+do not have graphic images assigned to them.  These are the control
+characters.  Any control character can be typed by holding down the
address@hidden key and typing some other character; some have special keys
+on the keyboard.  @key{RET}, @key{TAB}, @key{ESC}, @key{LFD}, and
address@hidden are all control characters.  @address@hidden
+
address@hidden Copyleft
+A copyleft is a notice giving the public legal permission to redistribute
+a program or other work of art.  Copylefts are used by leftists to enrich
+the public just as copyrights are used by rightists to gain power over
+the public.
+
address@hidden Current Buffer
+The current buffer in Emacs is the Emacs buffer on which most editing
+commands operate.  You can select any Emacs buffer as the current one.
address@hidden
+
address@hidden Current Line
+The line point is on (@pxref{Point}).
+
address@hidden Current Paragraph
+The paragraph that point is in.  If point is between paragraphs, the
+current paragraph is the one that follows point.  @xref{Paragraphs}.
+
address@hidden Current Defun
+The defun (q.v.@:) that point is in.  If point is between defuns, the
+current defun is the one that follows point.  @xref{Defuns}.
+
address@hidden Cursor
+The cursor is the rectangle on the screen which indicates the position
+called point (q.v.@:) at which insertion and deletion takes place.
+The cursor is on or under the character that follows point.  Often
+people speak of `the cursor' when, strictly speaking, they mean
+`point'.  @xref{Basic,Cursor,Basic Editing}.
+
address@hidden Customization
+Customization is making minor changes in the way Emacs works.  It is
+often done by setting variables (@pxref{Variables}) or by rebinding
+keys (@pxref{Keymaps}).
+
address@hidden Default Argument
+The default for an argument is the value that is used if you do not
+specify one.  When Emacs prompts you in the minibuffer for an argument,
+the default argument is used if you just type @key{RET}.
address@hidden
+
address@hidden Default Directory
+When you specify a file name that does not start with @samp{/} or @samp{~},
+it is interpreted relative to the current buffer's default directory.
address@hidden File,Default Directory}.
+
address@hidden Defun
+A defun is a list at the top level of parenthesis or bracket structure
+in a program.  It is so named because most such lists in Lisp programs
+are calls to the Lisp function @code{defun}.  @xref{Defuns}.
+
address@hidden @key{DEL}
+The @key{DEL} character runs the command that deletes one character of
+text.  @xref{Basic,DEL,Basic Editing}.
+
address@hidden Deletion
+Deleting text means erasing it without saving it.  Emacs deletes text
+only when it is expected not to be worth saving (all whitespace, or
+only one character).  The alternative is killing (q.v.@:).
address@hidden,Deletion}.
+
address@hidden Deletion of Files
+Deleting a file means removing it from the file system.
address@hidden File Ops}.
+
address@hidden Deletion of Messages
+Deleting a message means flagging it to be eliminated from your mail
+file.  Until the mail file is expunged, you can undo this by undeleting
+the message.
+
address@hidden Deletion of Frames
+When working under the multi-frame X-based version of XEmacs,
+you can delete individual frames using the @b{Close} menu item from the
address@hidden menu.
+
address@hidden Deletion of Windows
+When you delete a subwindow of an Emacs frame, you eliminate it from
+the frame.  Other windows expand to use up the space.  The deleted
+window can never come back, but no actual text is lost.  @xref{Windows}.
+
address@hidden Directory
+Files in the Unix file system are grouped into file directories.
address@hidden,,Directories}.
+
address@hidden Dired
+Dired is the Emacs facility that displays the contents of a file
+directory and allows you to ``edit the directory'', performing
+operations on the files in the directory.  @xref{Dired}.
+
address@hidden Disabled Command
+A disabled command is one that you may not run without special
+confirmation.  Commands are usually disabled because they are
+confusing for beginning users.  @xref{Disabling}.
+
address@hidden Dribble File
+A file into which Emacs writes all the characters that the user types
+on the keyboard.  Dribble files are used to make a record for
+debugging Emacs bugs.  Emacs does not make a dribble file unless you
+tell it to.  @xref{Bugs}.
+
address@hidden Echo Area
+The area at the bottom of the Emacs frame which is used for echoing the
+arguments to commands, for asking questions, and for printing brief
+messages (including error messages).  @xref{Echo Area}.
+
address@hidden Echoing
+Echoing refers to acknowledging the receipt of commands by displaying them
+(in the echo area).  Emacs never echoes single-character keys; longer
+keys echo only if you pause while typing them.
+
address@hidden Error
+An error occurs when an Emacs command cannot execute in the current
+circumstances.  When an error occurs, execution of the command stops
+(unless the command has been programmed to do otherwise) and Emacs
+reports the error by printing an error message (q.v.).  Type-ahead
+is discarded.  Then Emacs is ready to read another editing command.
+
address@hidden Error Messages
+Error messages are single lines of output printed by Emacs when the
+user asks for something impossible to do (such as killing text
+forward when point is at the end of the buffer).  They appear in the
+echo area, accompanied by a beep.
+
address@hidden @key{ESC}
address@hidden is a character used as a prefix for typing Meta characters on
+keyboards lacking a @key{META} key.  Unlike the @key{META} key (which,
+like the @key{SHIFT} key, is held down while another character is
+typed), the @key{ESC} key is pressed and released, and applies to the
+next character typed.
+
address@hidden Fill Prefix
+The fill prefix is a string that Emacs enters at the beginning
+of each line when it performs filling.  It is not regarded as part of the
+text to be filled.  @xref{Filling}.
+
address@hidden Filling
+Filling text means moving text from line to line so that all the lines
+are approximately the same length.  @xref{Filling}.
+
address@hidden Frame
+When running Emacs on a TTY terminal, ``frame'' means the terminal's
+screen.  When running Emacs under X, you can have multiple frames,
+each corresponding to a top-level X window and each looking like
+the screen on a TTY.  Each frame contains one or more non-overlapping
+Emacs windows (possibly with associated scrollbars, under X), an
+echo area, and (under X) possibly a menubar, toolbar, and/or gutter.
+
address@hidden Global
+Global means `independent of the current environment; in effect
address@hidden Emacs'.  It is the opposite of local (q.v.@:).
+Examples of the use of `global' appear below.
+
address@hidden Global Abbrev
+A global definition of an abbrev (q.v.@:) is effective in all major
+modes that do not have local (q.v.@:) definitions for the same abbrev.
address@hidden
+
address@hidden Global Keymap
+The global keymap (q.v.@:) contains key bindings that are in effect
+unless local key bindings in a major mode's local
+keymap (q.v.@:) override address@hidden
+
address@hidden Global Substitution
+Global substitution means replacing each occurrence of one string by
+another string through a large amount of text.  @xref{Replace}.
+
address@hidden Global Variable
+The global value of a variable (q.v.@:) takes effect in all buffers
+that do not have their own local (q.v.@:) values for the variable.
address@hidden
+
address@hidden Graphic Character
+Graphic characters are those assigned pictorial images rather than
+just names.  All the non-Meta (q.v.@:) characters except for the
+Control (q.v.@:) character are graphic characters.  These include
+letters, digits, punctuation, and spaces; they do not include
address@hidden or @key{ESC}.  In Emacs, typing a graphic character inserts
+that character (in ordinary editing modes).  @xref{Basic,,Basic Editing}.
+
address@hidden Grinding
+Grinding means adjusting the indentation in a program to fit the
+nesting structure.  @xref{Indentation,Grinding}.
+
address@hidden Hardcopy
+Hardcopy means printed output.  Emacs has commands for making printed
+listings of text in Emacs buffers.  @xref{Hardcopy}.
+
address@hidden @key{HELP}
+You can type @key{HELP} at any time to ask what options you have, or
+to ask what any command does.  @key{HELP} is really @kbd{Control-h}.
address@hidden
+
address@hidden Inbox
+An inbox is a file in which mail is delivered by the operating system.
+Some mail handlers transfers mail from inboxes to mail files (q.v.) in
+which the mail is then stored permanently or until explicitly deleted.
+
address@hidden Indentation
+Indentation means blank space at the beginning of a line.  Most
+programming languages have conventions for using indentation to
+illuminate the structure of the program, and Emacs has special
+features to help you set up the correct indentation.
address@hidden
+
address@hidden Insertion
+Insertion means copying text into the buffer, either from the keyboard
+or from some other place in Emacs.
+
address@hidden Justification
+Justification means adding extra spaces to lines of text to make them
+come exactly to a specified width.  @xref{Filling,Justification}.
+
address@hidden Keyboard Macros
+Keyboard macros are a way of defining new Emacs commands from
+sequences of existing ones, with no need to write a Lisp program.
address@hidden Macros}.
+
address@hidden Key
+A key is a sequence of characters that, when input to Emacs, specify
+or begin to specify a single action for Emacs to perform.  That is,
+the sequence is considered a single unit.  If the key is enough to
+specify one action, it is a complete key (q.v.); if it is less than
+enough, it is a prefix key (q.v.).  @xref{Keystrokes}.
+
address@hidden Keymap
+The keymap is the data structure that records the bindings (q.v.@:) of
+keys to the commands that they run.  For example, the keymap binds the
+character @kbd{C-n} to the command function @code{next-line}.
address@hidden
+
address@hidden Kill Ring
+The kill ring is the place where all text you have killed recently is saved.
+You can re-insert any of the killed text still in the ring; this is
+called yanking (q.v.@:).  @xref{Yanking}.
+
address@hidden Killing
+Killing means erasing text and saving it on the kill ring so it can be
+yanked (q.v.@:) later.  Some other systems call this ``cutting.''
+Most Emacs commands to erase text do killing, as opposed to deletion
+(q.v.@:).  @xref{Killing}.
+
address@hidden Killing Jobs
+Killing a job (such as, an invocation of Emacs) means making it cease
+to exist.  Any data within it, if not saved in a file, is lost.
address@hidden
+
address@hidden List
+A list is, approximately, a text string beginning with an open
+parenthesis and ending with the matching close parenthesis.  In C mode
+and other non-Lisp modes, groupings surrounded by other kinds of matched
+delimiters appropriate to the language, such as braces, are also
+considered lists.  Emacs has special commands for many operations on
+lists.  @xref{Lists}.
+
address@hidden Local
+Local means `in effect only in a particular context'; the relevant
+kind of context is a particular function execution, a particular
+buffer, or a particular major mode.  Local is the opposite of `global'
+(q.v.@:).  Specific uses of `local' in Emacs terminology appear below.
+
address@hidden Local Abbrev
+A local abbrev definition is effective only if a particular major mode
+is selected.  In that major mode, it overrides any global definition
+for the same abbrev.  @xref{Abbrevs}.
+
address@hidden Local Keymap
+A local keymap is used in a particular major mode; the key bindings
+(q.v.@:) in the current local keymap override global bindings of the
+same keys.  @xref{Keymaps}.
+
address@hidden Local Variable
+A local value of a variable (q.v.@:) applies to only one buffer.
address@hidden
+
address@hidden M-
address@hidden in the name of a character is an abbreviation for @key{META},
+one of the modifier keys that can accompany any character.
address@hidden
+
address@hidden M-C-
address@hidden in the name of a character is an abbreviation for
+Control-Meta; it means the same thing as @samp{C-M-}.  If your
+terminal lacks a real @key{META} key, you type a Control-Meta character by
+typing @key{ESC} and then typing the corresponding Control character.
address@hidden,C-M-}.
+
address@hidden M-x
address@hidden is the key which is used to call an Emacs command by name.
+You use it to call commands that are not bound to keys.
address@hidden
+
address@hidden Mail
+Mail means messages sent from one user to another through the computer
+system, to be read at the recipient's convenience.  Emacs has commands for
+composing and sending mail, and for reading and editing the mail you have
+received.  @xref{Sending Mail}.
+
address@hidden Major Mode
+The major modes are a mutually exclusive set of options each of which
+configures Emacs for editing a certain sort of text.  Ideally, each
+programming language has its own major mode.  @xref{Major Modes}.
+
address@hidden Mark
+The mark points to a position in the text.  It specifies one end of the
+region (q.v.@:), point being the other end.  Many commands operate on
+the whole region, that is, all the text from point to the mark.
address@hidden
+
address@hidden Mark Ring
+The mark ring is used to hold several recent previous locations of the
+mark, just in case you want to move back to them.  @xref{Mark Ring}.
+
address@hidden Message
+See `mail'.
+
address@hidden Meta
+Meta is the name of a modifier bit which a command character may have.
+It is present in a character if the character is typed with the
address@hidden key held down.  Such characters are given names that start
+with @kbd{Meta-}.  For example, @kbd{Meta-<} is typed by holding down
address@hidden and at the same time typing @kbd{<} (which itself is done,
+on most terminals, by holding down @key{SHIFT} and typing @kbd{,}).
address@hidden,Meta}.
+
address@hidden Meta Character
+A Meta character is one whose character code includes the Meta bit.
+
address@hidden Minibuffer
+The minibuffer is the window that Emacs displays inside the
+echo area (q.v.@:) when it prompts you for arguments to commands.
address@hidden
+
address@hidden Minor Mode
+A minor mode is an optional feature of Emacs which can be switched on
+or off independent of the major mode.  Each minor mode has a
+command to turn it on or off.  @xref{Minor Modes}.
+
address@hidden Mode Line
+The mode line is the line at the bottom of each text window (q.v.@:),
+which gives status information on the buffer displayed in that window.
address@hidden Line}.
+
address@hidden Modified Buffer
+A buffer (q.v.@:) is modified if its text has been changed since the
+last time the buffer was saved (or since it was created, if it
+has never been saved).  @xref{Saving}.
+
address@hidden Moving Text
+Moving text means erasing it from one place and inserting it in
+another.  This is done by killing (q.v.@:) and then yanking (q.v.@:).
address@hidden
+
address@hidden Named Mark
+A named mark is a register (q.v.@:) in its role of recording a
+location in text so that you can move point to that location.
address@hidden
+
address@hidden Narrowing
+Narrowing means creating a restriction (q.v.@:) that limits editing in
+the current buffer to only a part of the text in the buffer.  Text
+outside that part is inaccessible to the user until the boundaries are
+widened again, but it is still there, and saving the file saves the
+invisible text.  @xref{Narrowing}.
+
address@hidden Newline
address@hidden characters in the buffer terminate lines of text and are
+called newlines.  @xref{Keystrokes,Newline}.
+
address@hidden Numeric Argument
+A numeric argument is a number, specified before a command, to change
+the effect of the command.  Often the numeric argument serves as a
+repeat count.  @xref{Arguments}.
+
address@hidden Option
+An option is a variable (q.v.@:) that allows you to customize
+Emacs by giving it a new value.  @xref{Variables}.
+
address@hidden Overwrite Mode
+Overwrite mode is a minor mode.  When it is enabled, ordinary text
+characters replace the existing text after point rather than pushing
+it to the right.  @xref{Minor Modes}.
+
address@hidden Page
+A page is a unit of text, delimited by formfeed characters (ASCII
+Control-L, code 014) coming at the beginning of a line.  Some Emacs
+commands are provided for moving over and operating on pages.
address@hidden
+
address@hidden Paragraphs
+Paragraphs are the medium-size unit of English text.  There are
+special Emacs commands for moving over and operating on paragraphs.
address@hidden
+
address@hidden Parsing
+We say that Emacs parses words or expressions in the text being
+edited.  Really, all it knows how to do is find the other end of a
+word or expression.  @xref{Syntax}.
+
address@hidden Point
+Point is the place in the buffer at which insertion and deletion
+occur.  Point is considered to be between two characters, not at one
+character.  The terminal's cursor (q.v.@:) indicates the location of
+point.  @xref{Basic,Point}.
+
address@hidden Prefix Key
+A prefix key is a key (q.v.@:) whose sole function is to introduce a
+set of multi-character keys.  @kbd{Control-x} is an example of a prefix
+key; any two-character sequence starting with @kbd{C-x} is also
+a legitimate key.  @xref{Keystrokes}.
+
address@hidden Prompt
+A prompt is text printed to ask the user for input.  Printing a prompt
+is called prompting.  Emacs prompts always appear in the echo area
+(q.v.@:).  One kind of prompting happens when the minibuffer is used
+to read an argument (@pxref{Minibuffer}); the echoing which happens
+when you pause in the middle of typing a multi-character key is also a
+kind of prompting (@pxref{Echo Area}).
+
address@hidden Quitting
+Quitting means cancelling a partially typed command or a running
+command, using @kbd{C-g}.  @xref{Quitting}.
+
address@hidden Quoting
+Quoting means depriving a character of its usual special significance.
+In Emacs this is usually done with @kbd{Control-q}.  What constitutes special
+significance depends on the context and on convention.  For example,
+an ``ordinary'' character as an Emacs command inserts itself; so in
+this context, a special character is any character that does not
+normally insert itself (such as @key{DEL}, for example), and quoting
+it makes it insert itself as if it were not special.  Not all contexts
+allow quoting.  @xref{Basic,Quoting,Basic Editing}.
+
address@hidden Read-only Buffer
+A read-only buffer is one whose text you are not allowed to change.
+Normally Emacs makes buffers read-only when they contain text which
+has a special significance to Emacs, such as Dired buffers.
+Visiting a file that is write-protected also makes a read-only buffer.
address@hidden
+
address@hidden Recursive Editing Level
+A recursive editing level is a state in which part of the execution of
+a command involves asking the user to edit some text.  This text may
+or may not be the same as the text to which the command was applied.
+The mode line indicates recursive editing levels with square brackets
+(@samp{[} and @samp{]}).  @xref{Recursive Edit}.
+
address@hidden Redisplay
+Redisplay is the process of correcting the image on the screen to
+correspond to changes that have been made in the text being edited.
address@hidden,Redisplay}.
+
address@hidden Regexp
+See `regular expression'.
+
address@hidden Region
+The region is the text between point (q.v.@:) and the mark (q.v.@:).
+Many commands operate on the text of the region.  @xref{Mark,Region}.
+
address@hidden Registers
+Registers are named slots in which text or buffer positions or
+rectangles can be saved for later use.  @xref{Registers}.
+
address@hidden Regular Expression
+A regular expression is a pattern that can match various text strings;
+for example, @samp{l[0-9]+} matches @samp{l} followed by one or more
+digits.  @xref{Regexps}.
+
address@hidden Replacement
+See `global substitution'.
+
address@hidden Restriction
+A buffer's restriction is the amount of text, at the beginning or the
+end of the buffer, that is temporarily invisible and inaccessible.
+Giving a buffer a nonzero amount of restriction is called narrowing
+(q.v.).  @xref{Narrowing}.
+
address@hidden @key{RET}
address@hidden is the character than runs the command to insert a
+newline into the text.  It is also used to terminate most arguments
+read in the minibuffer (q.v.@:).  @xref{Keystrokes,Return}.
+
address@hidden Saving
+Saving a buffer means copying its text into the file that was visited
+(q.v.@:) in that buffer.  To actually change a file you have edited in
+Emacs, you have to save it.  @xref{Saving}.
+
address@hidden Scrolling
+Scrolling means shifting the text in the Emacs window to make a
+different part of the buffer visible.  @xref{Display,Scrolling}.
+
address@hidden Searching
+Searching means moving point to the next occurrence of a specified
+string.  @xref{Search}.
+
address@hidden Selecting
+Selecting a buffer means making it the current (q.v.@:) buffer.
address@hidden,Selecting}.
+
address@hidden Self-documentation
+Self-documentation is the feature of Emacs which can tell you what any
+command does, or can give you a list of all commands related to a topic
+you specify.  You ask for self-documentation with the help character,
address@hidden  @xref{Help}.
+
address@hidden Sentences
+Emacs has commands for moving by or killing by sentences.
address@hidden
+
address@hidden Sexp
+An sexp (short for `s-expression,' itself short for `symbolic
+expression') is the basic syntactic unit of Lisp
+in its textual form: either a list, or Lisp atom.  Many Emacs commands
+operate on sexps.  The term `sexp' is generalized to languages other
+than Lisp to mean a syntactically recognizable expression.
address@hidden,Sexps}.
+
address@hidden Simultaneous Editing
+Simultaneous editing means two users modifying the same file at once.
+If simultaneous editing is not detected, you may lose your
+work.  Emacs detects all cases of simultaneous editing and warns the
+user to investigate them.  @xref{Interlocking,,Simultaneous Editing}.
+
address@hidden String
+A string is a kind of Lisp data object which contains a sequence of
+characters.  Many Emacs variables are intended to have strings as
+values.  The Lisp syntax for a string consists of the characters in
+the string with a @samp{"} before and another @samp{"} after. Write a
address@hidden"} that is part of the string as @samp{\"} and a
address@hidden that is part of the string as @samp{\\}.  You can include all
+other characters, including newline, just by writing
+them inside the string. You can also include escape sequences as in C, such as
address@hidden for newline or @samp{\241} using an octal character code.
+
address@hidden String Substitution
+See `global substitution'.
+
address@hidden Syntax Table
+The syntax table tells Emacs which characters are part of a word,
+which characters balance each other like parentheses, etc.
address@hidden
+
address@hidden Tag Table
+A tag table is a file that serves as an index to the function
+definitions in one or more other files.  @xref{Tags}.
+
address@hidden Termscript File
+A termscript file contains a record of all characters Emacs sent to
+the terminal.  It is used for tracking down bugs in Emacs redisplay.
+Emacs does not make a termscript file unless explicitly instructed to do
+so.
address@hidden
+
address@hidden Text
+Text has two meanings (@pxref{Text}):
+
address@hidden @bullet
address@hidden
+Data consisting of a sequence of characters, as opposed to binary
+numbers, images, graphics commands, executable programs, and the like.
+The contents of an Emacs buffer are always text in this sense.
address@hidden
+Data consisting of written human language, as opposed to programs,
+or something that follows the stylistic conventions of human language.
address@hidden itemize
+
address@hidden Top Level
+Top level is the normal state of Emacs, in which you are editing the
+text of the file you have visited.  You are at top level whenever you
+are not in a recursive editing level (q.v.@:) or the minibuffer
+(q.v.@:), and not in the middle of a command.  You can get back to top
+level by aborting (q.v.@:) and quitting (q.v.@:).  @xref{Quitting}.
+
address@hidden Transposition
+Transposing two units of text means putting each one into the place
+formerly occupied by the other.  There are Emacs commands to transpose
+two adjacent characters, words, sexps (q.v.@:), or lines
+(@pxref{Transpose}).
+
address@hidden Truncation
+Truncating text lines in the display means leaving out any text on a
+line that does not fit within the right margin of the window
+displaying it.  See also `continuation line'.
address@hidden,Truncation,Basic Editing}.
+
address@hidden Undoing
+Undoing means making your previous editing go in reverse, bringing
+back the text that existed earlier in the editing session.
address@hidden
+
address@hidden Variable
+A variable is Lisp object that can store an arbitrary value.  Emacs uses
+some variables for internal purposes, and has others (known as `options'
+(q.v.@:)) you can set to control the behavior of Emacs.  The variables
+used in Emacs that you are likely to be interested in are listed in the
+Variables Index of this manual.  @xref{Variables}, for information on
+variables.
+
address@hidden Visiting
+Visiting a file means loading its contents into a buffer (q.v.@:)
+where they can be edited.  @xref{Visiting}.
+
address@hidden Whitespace
+Whitespace is any run of consecutive formatting characters (spaces,
+tabs, newlines, and backspaces).
+
address@hidden Widening
+Widening is removing any restriction (q.v.@:) on the current buffer;
+it is the opposite of narrowing (q.v.@:).  @xref{Narrowing}.
+
address@hidden Window
+Emacs divides the frame into one or more windows, each of which can
+display the contents of one buffer (q.v.@:) at any time.
address@hidden, for basic information on how Emacs uses the frame.
address@hidden, for commands to control the use of windows. Note that if
+you are running Emacs under X, terminology can be confusing: Each Emacs
+frame occupies a separate X window and can, in turn, be divided into
+different subwindows.
+
address@hidden Word Abbrev
+Synonymous with `abbrev'.
+
address@hidden Word Search
+Word search is searching for a sequence of words, considering the
+punctuation between them as insignificant.  @xref{Word Search}.
+
address@hidden Yanking
+Yanking means reinserting text previously killed.  It can be used to
+undo a mistaken kill, or for copying or moving text.  Some other
+systems call this ``pasting''.  @xref{Yanking}.
address@hidden table
+
address@hidden Manifesto, Key Index, Glossary, Top
address@hidden The GNU Manifesto
+
address@hidden What's GNU?  GNU's Not Unix!
+
+GNU, which stands for GNU's Not Unix, is the name for the complete
+Unix-compatible software system which I am writing so that I can give it
+away free to everyone who can use it.  Several other volunteers are helping
+me.  Contributions of time, money, programs, and equipment are greatly
+needed.
+
+So far we have an Emacs text editor with Lisp for writing editor commands,
+a source level debugger, a yacc-compatible parser generator, a linker, and
+around 35 utilities.  A shell (command interpreter) is nearly completed.  A
+new portable optimizing C compiler has compiled itself and may be released
+this year.  An initial kernel exists, but many more features are needed to
+emulate Unix.  When the kernel and compiler are finished, it will be
+possible to distribute a GNU system suitable for program development.  We
+will use @TeX{} as our text formatter, but an nroff is being worked on.  We
+will use the free, portable X window system as well.  After this we will
+add a portable Common Lisp, an Empire game, a spreadsheet, and hundreds of
+other things, plus online documentation.  We hope to supply, eventually,
+everything useful that normally comes with a Unix system, and more.
+
+GNU will be able to run Unix programs, but will not be identical to Unix.
+We will make all improvements that are convenient, based on our experience
+with other operating systems.  In particular, we plan to have longer
+filenames, file version numbers, a crashproof file system, filename
+completion perhaps, terminal-independent display support, and perhaps
+eventually a Lisp-based window system through which several Lisp programs
+and ordinary Unix programs can share a screen.  Both C and Lisp will be
+available as system programming languages.  We will try to support UUCP,
+MIT Chaosnet, and Internet protocols for communication.
+
+GNU is aimed initially at machines in the 68000/16000 class with virtual
+memory, because they are the easiest machines to make it run on.  The extra
+effort to make it run on smaller machines will be left to someone who wants
+to use it on them.
+
+To avoid horrible confusion, please pronounce the `G' in the word `GNU'
+when it is the name of this project.
+
address@hidden
address@hidden Why I Must Write GNU
+
+I consider that the golden rule requires that if I like a program I must
+share it with other people who like it.  Software sellers want to divide
+the users and conquer them, making each user agree not to share with
+others.  I refuse to break solidarity with other users in this way.  I
+cannot in good conscience sign a nondisclosure agreement or a software
+license agreement.  For years I worked within the Artificial Intelligence
+Lab to resist such tendencies and other inhospitalities, but eventually
+they had gone too far: I could not remain in an institution where such
+things are done for me against my will.
+
+So that I can continue to use computers without dishonor, I have decided to
+put together a sufficient body of free software so that I will be able to
+get along without any software that is not free.  I have resigned from the
+AI lab to deny MIT any legal excuse to prevent me from giving GNU away.
+
address@hidden Why GNU Will Be Compatible With Unix
+
+Unix is not my ideal system, but it is not too bad.  The essential features
+of Unix seem to be good ones, and I think I can fill in what Unix lacks
+without spoiling them.  And a system compatible with Unix would be
+convenient for many other people to adopt.
+
address@hidden How GNU Will Be Available
+
+GNU is not in the public domain.  Everyone will be permitted to modify and
+redistribute GNU, but no distributor will be allowed to restrict its
+further redistribution.  That is to say, proprietary modifications will not
+be allowed.  I want to make sure that all versions of GNU remain free.
+
address@hidden Why Many Other Programmers Want to Help
+
+I have found many other programmers who are excited about GNU and want to
+help.
+
+Many programmers are unhappy about the commercialization of system
+software.  It may enable them to make more money, but it requires them to
+feel in conflict with other programmers in general rather than feel as
+comrades.  The fundamental act of friendship among programmers is the
+sharing of programs; marketing arrangements now typically used essentially
+forbid programmers to treat others as friends.  The purchaser of software
+must choose between friendship and obeying the law.  Naturally, many decide
+that friendship is more important.  But those who believe in law often do
+not feel at ease with either choice.  They become cynical and think that
+programming is just a way of making money.
+
+By working on and using GNU rather than proprietary programs, we can be
+hospitable to everyone and obey the law.  In addition, GNU serves as an
+example to inspire and a banner to rally others to join us in sharing.
+This can give us a feeling of harmony which is impossible if we use
+software that is not free.  For about half the programmers I talk to, this
+is an important happiness that money cannot replace.
+
address@hidden How You Can Contribute
+
+I am asking computer manufacturers for donations of machines and money.
+I'm asking individuals for donations of programs and work.
+
+One consequence you can expect if you donate machines is that GNU will run
+on them at an early date.  The machines should be complete, ready-to-use
+systems, approved for use in a residential area, and not in need of
+sophisticated cooling or power.
+
+I have found very many programmers eager to contribute part-time work for
+GNU.  For most projects, such part-time distributed work would be very hard
+to coordinate; the independently-written parts would not work together.
+But for the particular task of replacing Unix, this problem is absent.  A
+complete Unix system contains hundreds of utility programs, each of which
+is documented separately.  Most interface specifications are fixed by Unix
+compatibility.  If each contributor can write a compatible replacement for
+a single Unix utility, and make it work properly in place of the original
+on a Unix system, then these utilities will work right when put together.
+Even allowing for Murphy to create a few unexpected problems, assembling
+these components will be a feasible task.  (The kernel will require closer
+communication and will be worked on by a small, tight group.)
+
+If I get donations of money, I may be able to hire a few people full or
+part time.  The salary won't be high by programmers' standards, but I'm
+looking for people for whom building community spirit is as important as
+making money.  I view this as a way of enabling dedicated people to devote
+their full energies to working on GNU by sparing them the need to make a
+living in another way.
+
address@hidden Why All Computer Users Will Benefit
+
+Once GNU is written, everyone will be able to obtain good system software
+free, just like air.
+
+This means much more than just saving everyone the price of a Unix license.
+It means that much wasteful duplication of system programming effort will
+be avoided.  This effort can go instead into advancing the state of the
+art.
+
+Complete system sources will be available to everyone.  As a result, a user
+who needs changes in the system will always be free to make them himself,
+or hire any available programmer or company to make them for him.  Users
+will no longer be at the mercy of one programmer or company which owns the
+sources and is in sole position to make changes.
+
+Schools will be able to provide a much more educational environment by
+encouraging all students to study and improve the system code.  Harvard's
+computer lab used to have the policy that no program could be installed on
+the system if its sources were not on public display, and upheld it by
+actually refusing to install certain programs.  I was very much inspired by
+this.
+
+Finally, the overhead of considering who owns the system software and what
+one is or is not entitled to do with it will be lifted.
+
+Arrangements to make people pay for using a program, including licensing of
+copies, always incur a tremendous cost to society through the cumbersome
+mechanisms necessary to figure out how much (that is, which programs) a
+person must pay for.  And only a police state can force everyone to obey
+them.  Consider a space station where air must be manufactured at great
+cost: charging each breather per liter of air may be fair, but wearing the
+metered gas mask all day and all night is intolerable even if everyone can
+afford to pay the air bill.  And the TV cameras everywhere to see if you
+ever take the mask off are outrageous.  It's better to support the air
+plant with a head tax and chuck the masks.
+
+Copying all or parts of a program is as natural to a programmer as
+breathing, and as productive.  It ought to be as free.
+
address@hidden Some Easily Rebutted Objections to GNU's Goals
+
address@hidden
+``Nobody will use it if it is free, because that means they can't rely
+on any support.''
+
+``You have to charge for the program to pay for providing the
+support.''
address@hidden quotation
+
+If people would rather pay for GNU plus service than get GNU free without
+service, a company to provide just service to people who have obtained GNU
+free ought to be profitable.
+
+We must distinguish between support in the form of real programming work
+and mere handholding.  The former is something one cannot rely on from a
+software vendor.  If your problem is not shared by enough people, the
+vendor will tell you to get lost.
+
+If your business needs to be able to rely on support, the only way is to
+have all the necessary sources and tools.  Then you can hire any available
+person to fix your problem; you are not at the mercy of any individual.
+With Unix, the price of sources puts this out of consideration for most
+businesses.  With GNU this will be easy.  It is still possible for there to
+be no available competent person, but this problem cannot be blamed on
+distribution arrangements.  GNU does not eliminate all the world's problems,
+only some of them.
+
+Meanwhile, the users who know nothing about computers need handholding:
+doing things for them which they could easily do themselves but don't know
+how.
+
+Such services could be provided by companies that sell just hand-holding
+and repair service.  If it is true that users would rather spend money and
+get a product with service, they will also be willing to buy the service
+having got the product free.  The service companies will compete in quality
+and price; users will not be tied to any particular one.  Meanwhile, those
+of us who don't need the service should be able to use the program without
+paying for the service.
+
address@hidden
+``You cannot reach many people without advertising,
+and you must charge for the program to support that.''
+
+``It's no use advertising a program people can get free.''
address@hidden quotation
+
+There are various forms of free or very cheap publicity that can be used to
+inform numbers of computer users about something like GNU.  But it may be
+true that one can reach more microcomputer users with advertising.  If this
+is really so, a business which advertises the service of copying and
+mailing GNU for a fee ought to be successful enough to pay for its
+advertising and more.  This way, only the users who benefit from the
+advertising pay for it.
+
+On the other hand, if many people get GNU from their friends, and such
+companies don't succeed, this will show that advertising was not really
+necessary to spread GNU.  Why is it that free market advocates don't want
+to let the free market decide this?
address@hidden
address@hidden
+``My company needs a proprietary operating system
+to get a competitive edge.''
address@hidden quotation
+
+GNU will remove operating system software from the realm of competition.
+You will not be able to get an edge in this area, but neither will your
+competitors be able to get an edge over you.  You and they will compete in
+other areas, while benefitting mutually in this one.  If your business is
+selling an operating system, you will not like GNU, but that's tough on
+you.  If your business is something else, GNU can save you from being
+pushed into the expensive business of selling operating systems.
+
+I would like to see GNU development supported by gifts from many
+manufacturers and users, reducing the cost to each.
+
address@hidden
+``Don't programmers deserve a reward for their creativity?''
address@hidden quotation
+
+If anything deserves a reward, it is social contribution.  Creativity can
+be a social contribution, but only in so far as society is free to use the
+results.  If programmers deserve to be rewarded for creating innovative
+programs, by the same token they deserve to be punished if they restrict
+the use of these programs.
+
address@hidden
+``Shouldn't a programmer be able to ask for a reward for his creativity?''
address@hidden quotation
+
+There is nothing wrong with wanting pay for work, or seeking to maximize
+one's income, as long as one does not use means that are destructive.  But
+the means customary in the field of software today are based on
+destruction.
+
+Extracting money from users of a program by restricting their use of it is
+destructive because the restrictions reduce the amount and the ways that
+the program can be used.  This reduces the amount of wealth that humanity
+derives from the program.  When there is a deliberate choice to restrict,
+the harmful consequences are deliberate destruction.
+
+The reason a good citizen does not use such destructive means to become
+wealthier is that, if everyone did so, we would all become poorer from the
+mutual destructiveness.  This is Kantian ethics; or, the Golden Rule.
+Since I do not like the consequences that result if everyone hoards
+information, I am required to consider it wrong for one to do so.
+Specifically, the desire to be rewarded for one's creativity does not
+justify depriving the world in general of all or part of that creativity.
+
address@hidden
+``Won't programmers starve?''
address@hidden quotation
+
+I could answer that nobody is forced to be a programmer.  Most of us cannot
+manage to get any money for standing on the street and making faces.  But
+we are not, as a result, condemned to spend our lives standing on the
+street making faces, and starving.  We do something else.
+
+But that is the wrong answer because it accepts the questioner's implicit
+assumption: that without ownership of software, programmers cannot possibly
+be paid a cent.  Supposedly it is all or nothing.
+
+The real reason programmers will not starve is that it will still be
+possible for them to get paid for programming; just not paid as much as
+now.
+
+Restricting copying is not the only basis for business in software.  It is
+the most common basis because it brings in the most money.  If it were
+prohibited, or rejected by the customer, software business would move to
+other bases of organization which are now used less often.  There are
+always numerous ways to organize any kind of business.
+
+Probably programming will not be as lucrative on the new basis as it is
+now.  But that is not an argument against the change.  It is not considered
+an injustice that sales clerks make the salaries that they now do.  If
+programmers made the same, that would not be an injustice either.  (In
+practice they would still make considerably more than that.)
+
address@hidden
+``Don't people have a right to control how their creativity is used?''
address@hidden quotation
+
+``Control over the use of one's ideas'' really constitutes control over
+other people's lives; and it is usually used to make their lives more
+difficult.
+
+People who have studied the issue of intellectual property rights carefully
+(such as lawyers) say that there is no intrinsic right to intellectual
+property.  The kinds of supposed intellectual property rights that the
+government recognizes were created by specific acts of legislation for
+specific purposes.
+
+For example, the patent system was established to encourage inventors to
+disclose the details of their inventions.  Its purpose was to help society
+rather than to help inventors.  At the time, the life span of 17 years for
+a patent was short compared with the rate of advance of the state of the
+art.  Since patents are an issue only among manufacturers, for whom the
+cost and effort of a license agreement are small compared with setting up
+production, the patents often do not do much harm.  They do not obstruct
+most individuals who use patented products.
+
+The idea of copyright did not exist in ancient times, when authors
+frequently copied other authors at length in works of non-fiction.  This
+practice was useful, and is the only way many authors' works have survived
+even in part.  The copyright system was created expressly for the purpose
+of encouraging authorship.  In the domain for which it was
+invented---books, which could be copied economically only on a printing
+press---it did little harm, and did not obstruct most of the individuals
+who read the books.
+
+All intellectual property rights are just licenses granted by society
+because it was thought, rightly or wrongly, that society as a whole would
+benefit by granting them.  But in any particular situation, we have to ask:
+are we really better off granting such license?  What kind of act are we
+licensing a person to do?
+
+The case of programs today is very different from that of books a hundred
+years ago.  The fact that the easiest way to copy a program is from one
+neighbor to another, the fact that a program has both source code and
+object code which are distinct, and the fact that a program is used rather
+than read and enjoyed, combine to create a situation in which a person who
+enforces a copyright is harming society as a whole both materially and
+spiritually; in which a person should not do so regardless of whether the
+law enables him to.
+
address@hidden
+``Competition makes things get done better.''
address@hidden quotation
+
+The paradigm of competition is a race: by rewarding the winner, we
+encourage everyone to run faster.  When capitalism really works this way,
+it does a good job; but its defenders are wrong in assuming it always works
+this way.  If the runners forget why the reward is offered and become
+intent on winning, no matter how, they may find other strategies---such as,
+attacking other runners.  If the runners get into a fist fight, they will
+all finish late.
+
+Proprietary and secret software is the moral equivalent of runners in a
+fist fight.  Sad to say, the only referee we've got does not seem to
+object to fights; he just regulates them (``For every ten yards you run,
+you can fire one shot'').  He really ought to break them up, and penalize
+runners for even trying to fight.
+
address@hidden
+``Won't everyone stop programming without a monetary incentive?''
address@hidden quotation
+
+Actually, many people will program with absolutely no monetary incentive.
+Programming has an irresistible fascination for some people, usually the
+people who are best at it.  There is no shortage of professional musicians
+who keep at it even though they have no hope of making a living that way.
+
+But really this question, though commonly asked, is not appropriate to the
+situation.  Pay for programmers will not disappear, only become less.  So
+the right question is, will anyone program with a reduced monetary
+incentive?  My experience shows that they will.
+
+For more than ten years, many of the world's best programmers worked at the
+Artificial Intelligence Lab for far less money than they could have had
+anywhere else.  They got many kinds of non-monetary rewards: fame and
+appreciation, for example.  And creativity is also fun, a reward in itself.
address@hidden
+Then most of them left when offered a chance to do the same interesting
+work for a lot of money.
+
+What the facts show is that people will program for reasons other than
+riches; but if given a chance to make a lot of money as well, they will
+come to expect and demand it.  Low-paying organizations do poorly in
+competition with high-paying ones, but they do not have to do badly if the
+high-paying ones are banned.
+
address@hidden
+``We need the programmers desperately.  If they demand that we
+stop helping our neighbors, we have to obey.''
address@hidden quotation
+
+You're never so desperate that you have to obey this sort of demand.
+Remember: millions for defense, but not a cent for tribute!
+
address@hidden
+``Programmers need to make a living somehow.''
address@hidden quotation
+
+In the short run, this is true.  However, there are plenty of ways that
+programmers could make a living without selling the right to use a program.
+This way is customary now because it brings programmers and businessmen the
+most money, not because it is the only way to make a living.  It is easy to
+find other ways if you want to find them.  Here are a number of examples.
+
+A manufacturer introducing a new computer will pay for the porting of
+operating systems onto the new hardware.
+
+The sale of teaching, hand-holding, and maintenance services could also
+employ programmers.
+
+People with new ideas could distribute programs as freeware and ask for
+donations from satisfied users or sell hand-holding services.  I have
+met people who are already working this way successfully.
+
+Users with related needs can form users' groups and pay dues.  A group
+would contract with programming companies to write programs that the
+group's members would like to use.
+
+All sorts of development can be funded with a Software Tax:
+
address@hidden
+Suppose everyone who buys a computer has to pay a certain percent of
+the price as a software tax.  The government gives this to
+an agency like the NSF to spend on software development.
+
+But if the computer buyer makes a donation to software development
+himself, he can take a credit against the tax.  He can donate to
+the project of his own choosing---often, chosen because he hopes to
+use the results when
address@hidden 
+it is done.  He can take a credit for any amount
+of donation up to the total tax he had to pay.
+
+The total tax rate could be decided by a vote of the payers of
+the tax, weighted according to the amount they will be taxed on.
+
+The consequences:
+
address@hidden @bullet
address@hidden
+The computer-using community supports software development.
address@hidden
+This community decides what level of support is needed.
address@hidden
+Users who care which projects their share is spent on
+can choose this for themselves.
address@hidden itemize
address@hidden quotation
+
+In the long run, making programs free is a step toward the post-scarcity
+world, where nobody will have to work very hard just to make a living.
+People will be free to devote themselves to activities that are fun, such
+as programming, after spending the necessary ten hours a week on required
+tasks such as legislation, family counseling, robot repair, and asteroid
+prospecting.  There will be no need to be able to make a living from
+programming.
+
+We have already greatly reduced the amount of work that the whole society
+must do for its actual productivity, but only a little of this has
+translated itself into leisure for workers because much nonproductive
+activity is required to accompany productive activity.  The main causes of
+this are bureaucracy and isometric struggles against competition.  Free
+software will greatly reduce these drains in the area of software
+production.  We must do this, in order for technical gains in productivity
+to translate into less work for us.
+
address@hidden Key Index, Command Index, Manifesto, Top
address@hidden Key (Character) Index
address@hidden ky
+
address@hidden Command Index, Variable Index, Key Index, Top
address@hidden Command and Function Index
address@hidden fn
+
address@hidden Variable Index, Concept Index, Command Index, Top
address@hidden Variable Index
address@hidden vr
+
address@hidden Concept Index, Frame, Variable Index, Top
address@hidden Concept Index
address@hidden cp
+
address@hidden
address@hidden
address@hidden

Index: texi2html_manual/res/texi_texi2html/texi2html.texi.first
===================================================================
RCS file: texi2html_manual/res/texi_texi2html/texi2html.texi.first
diff -N texi2html_manual/res/texi_texi2html/texi2html.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ texi2html_manual/res/texi_texi2html/texi2html.texi.first    2 Aug 2009 
13:12:01 -0000       1.1
@@ -0,0 +1,1366 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden This is the ``Texinfo to HTML Converter'' manual which
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden --------------------------------------------------------
address@hidden
address@hidden Currently most of the material is copied out of
address@hidden texi2html.init file. It's just a start point.
address@hidden In other words this is a draft manual ;-)
address@hidden
address@hidden texi2html.info
address@hidden --------------------------------------------------------
address@hidden Edition and last update date of the manual which might
address@hidden differ to the scripts last update date etc.
address@hidden MANUAL_UPD 14. August 2000
address@hidden MANUAL_ED 0.21
address@hidden
address@hidden MANUAL_AUTHOR Karl Heinz Marbaise
address@hidden MANUAL_AUTHOR_EMAIL khmarbaise@@gmx.de
address@hidden
address@hidden Get the version of the script itself through
address@hidden configure/autoconf etc.
address@hidden version.texi is automatically generated through
address@hidden configure/autoconf.
address@hidden UPDATED 15 September 2001
address@hidden UPDATED-MONTH September 2001
address@hidden EDITION 1.67
address@hidden VERSION 1.67
address@hidden --------------------------------------------------------
address@hidden Index for command line options
address@hidden op
address@hidden --------------------------------------------------------
address@hidden Texinfo to HTML
address@hidden @setchapternewpage on
address@hidden odd
address@hidden separate
address@hidden --------------------------------------------------------
address@hidden support old style Info Dir entries.
address@hidden --------------------------------------------------------
address@hidden Informations for install-info.
address@hidden I think the conversion script should be found
address@hidden where the documentation system lives.
address@hidden What do you think?
address@hidden Texinfo documentation system
address@hidden
+* Texi2html: (texi2html).  Texinfo to HTML Converter.
address@hidden direntry
address@hidden --------------------------------------------------------
address@hidden --------------------------------------------------------
address@hidden ========================================================
address@hidden
address@hidden
address@hidden
address@hidden Top, Overview, (dir), (dir)
address@hidden Texi2html
address@hidden @page
address@hidden ========================================================
address@hidden @node Top, Overview, (dir), (dir)
address@hidden @top
address@hidden @chapter About
+
+This Manual (Edition 0.21, last updated at
+14. August 2000) describes the @command{texi2html} Perl
+script which converters
address@hidden The following construct allows me to get
address@hidden real URL link in HTML and working refs in
address@hidden info.
address@hidden://www.texinfo.org,Texinfo}
+into @acronym{HTML}.
+
address@hidden @inforef{Top, Top, Texinfo} does not work yet ;-)
address@hidden here we should paste a @inforef or @xref on the
address@hidden Texinfo manual.
+
+Please send bug reports about this manual to Karl Heinz
+Marbaise @email{khmarbaise@@gmx.de}. Please state exact
+version/edition of the manual (can be found at start of
+Texinfo source file; use the entry Id under Revisions).
+
+Please note:
address@hidden
+This manual is currently under
+construction and of course incomplete ;-)
address@hidden example
+
address@hidden The following line within a menu does not work!
address@hidden * Why texi2html and not Makeinfo?:whytexi2html.      Why 
texi2html and not makeinfo?.
address@hidden ========================================================
address@hidden Overview, HowToGetHTML, Top, Top
address@hidden Overview about @command{texi2html}
address@hidden://www.texinfo.org,Texinfo} is the official
+documentation format of the @uref{http://www.gnu.org,GNU}
+project. It uses a single source file to produce both
+online information and printed output.
+
address@hidden much thinking about ...
+It is often proposed to have a way to produce
address@hidden from Texinfo sources, like the GNU-Info
+format. It is much simpler to create one converter instead
+of writing all documentation new in @acronym{HTML}, cause
+there is so much documentation in Texinfo all over
+the world.
+
+A few time ago @command{makeinfo} wasn't able to produce
address@hidden output format, but there are needth to have
address@hidden This was the borning hour for
address@hidden The basic purpose of @file{texi2html}
+is to convert Texinfo documents into HTML.
+
+
address@hidden
+* HowToGetHTML::       Ways to get HTML files.
+* whytexi2html::       Why texi2html and not makeinfo?.
address@hidden menu
address@hidden --------------------------------------------------------
address@hidden HowToGetHTML, whytexi2html, Overview, Overview
address@hidden Ways to get HTML
+You would like to @acronym{HTML} files out of your Texinfo
+files? There exist two ways which you can go.
+This first is to use @command{makeinfo} itself to produce
address@hidden output. The second is to use
address@hidden
+
address@hidden --------------------------------------------------------
address@hidden whytexi2html, Installation, HowToGetHTML, Overview
address@hidden Why @file{texi2html} and not @file{makeinfo}?
+The basic idea of @command{makeinfo}'s @acronym{HTML}
+output was to get an readable @acronym{HTML} output.
+Nothing sophisticated nor good styling just readable.
+
+The current development of texi2html is going into
+different direction.
+
+The main purpose is to get better styling, better design
+etc. of the created @acronym{HTML} pages. This way is
+supported using differnt command line options and of course
+possible changings of the initialization file to fit your
+own needs.
+
+The main disadvantage of @acronym{makeinfo}'s
address@hidden output is your getting only one big file.
+This is of course readable but not very usable. The problem
+of this is, while you like to have splitted chapters or
+nodes the Texinfo source has to be read at minimum twice
+times. This makes it impossible to implement this in
address@hidden This would result in complete new
+implementation of @command{makeinfo}'s source.
+
address@hidden think more about this????
+In contrast to the HTML produced by @command{makeinfo
+--html} (the @command{makeinfo} program is part of the
+Texinfo distribution), the HTML output of @file{texi2html}
+is highly configurable. Among other differences, with
address@hidden allows you to customize your entire
+page layout (like headers, footers, style sheets, etc),
+split documents at various levels, and use
address@hidden to convert @code{@@tex} sections.
+
address@hidden should reasonably convert all Texinfo
+4.0 constructs. If not, please send a bug report to
address@hidden@@mathematik.uni-kl.de}.
+
address@hidden ========================================================
address@hidden Installation, Customizing, whytexi2html, Top
address@hidden Installation of @command{texi2html}
address@hidden Installation
+description of the installation process.
+What do you need?
+How?
+
address@hidden ========================================================
address@hidden Customizing, CustomizingExpand, Installation, Top
address@hidden Customizing files
address@hidden Installation
address@hidden frames
address@hidden 4.) Customizing files to output
address@hidden   ==> -out_file, -prefix, -subdir, -split, -frames etc
+Result based on using @option{-frames}
+
address@hidden
+texi2html -V -frames texi2html.texi
address@hidden example
+Explanation of the output differences against default,
+whatever this is ;-)
+
+
address@hidden ========================================================
address@hidden CustomizingExpand, CustomizingPage, Customizing, Top
address@hidden Customizing what gets expanded
address@hidden 5.) Customizing what gets expanded
address@hidden   ==> -expand, and latex2html
+Test starting.
+
address@hidden info}
address@hidden tex}
+Take a look at optionexpand.
+
address@hidden ========================================================
address@hidden CustomizingPage, CustHTML, CustomizingExpand, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here are the informations about customizing page
address@hidden   layout.
address@hidden
address@hidden ========================================================
address@hidden Customizing page layout
+This chapter is designed to help you to change the
+complete layout of the @acronym{HTML} output if you like to
+do so.
+
+
+a) General: Philosophy, and how it address@hidden
+aa) Navigation address@hidden
+b) Top address@hidden
+c) Section address@hidden
+
+
+
+
address@hidden
+* TipsNewDesign::           .
+* CustPagePhil::            .
+* CustPagePhilNav::         .
+* CustPageTopPage::         .
+* CustPageSectionPages::    .
+* CustPageMiscPage::        .
address@hidden menu
address@hidden --------------------------------------------------------
address@hidden TipsNewDesign,CustPagePhil,CustomizingPage,CustomizingPage
address@hidden Tips how to create a new site design
+
+Here you can find information how you should work to pick
+up a new design with @command{texi2html}.
+
+
address@hidden --------------------------------------------------------
address@hidden CustPagePhil,CustPagePhilNav,TipsNewDesign,CustomizingPage
address@hidden Page Layout and the philosophy
+
address@hidden
+* CustPagePhilNav:: Navigation panels.
address@hidden menu
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustPagePhilNav,CustPageTopPage,CustPagePhil,CustomizingPage
address@hidden Navigation panels
+
+Head and foot Navigation panels.
+
address@hidden --------------------------------------------------------
address@hidden 
CustPageTopPage,CustPageSectionPages,CustPagePhilNav,CustomizingPage
address@hidden Top Page
address@hidden --------------------------------------------------------
address@hidden 
CustPageSectionPages,CustPageMiscPage,CustPageTopPage,CustomizingPage
address@hidden Section Pages
address@hidden --------------------------------------------------------
address@hidden 
CustPageMiscPage,CustPagePageHeadToc,CustPageSectionPages,CustomizingPage
address@hidden Misc pages
+Here you can find information about the creation of the
address@hidden (@i{Table Of content}), About---Page
+etc. and specialy how to change them to get your own
+design.
+
address@hidden @code{T2H_DEFAULT_print_toc_frame} in
address@hidden
+
address@hidden
+* CustPagePageHeadToc:: .
+* CustPagePageHead::    .
+* CustPagePageFoot::    .
address@hidden menu
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden 
CustPagePageHeadToc,CustPagePageHead,CustPageMiscPage,CustPageMiscPage
address@hidden Table Of Contents
+
+The following code is the original code out of the
+initialization file (@pxref{InitFile,Initialization file}).
+
address@hidden
+sub T2H_DEFAULT_print_toc_frame
address@hidden
+  my $fh = shift;
+  &$T2H_print_page_head($fh);
+  print $fh <<EOT;
+<H2>Content</H2>
+EOT
+  print $fh map @{s/HREF=/target=\"main\" HREF=/; $_;@} @@stoc_lines;
+  print $fh "</BODY></HTML>\n";
address@hidden
address@hidden example
+
+As you can see it is very simple Perl Code, which can
+be changed more or less simple to fit you requirements
+(@pxref{CustPagePageHead,,T2H_DEFAULT_print_page_head}).
+
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden 
CustPagePageHead,CustPagePageFoot,CustPagePageHeadToc,CustPageMiscPage
address@hidden Page header
+Page Head @code{T2H_DEFAULT_print_page_head}
+
address@hidden references on T2H_DOCTYPE
address@hidden               T2H_AUTHORS
address@hidden
+sub T2H_DEFAULT_print_page_head
address@hidden
+  my $fh = shift; 
+  my $longtitle = "address@hidden@}: address@hidden@}";
+  print $fh <<EOT;
+<HTML>
+$T2H_DOCTYPE
+<!-- Created on $T2H_TODAY by $THISPROG -->
+<!-- 
+$T2H_AUTHORS 
+-->
+<HEAD>
+<TITLE>$longtitle</TITLE>
+
+<META NAME="description" CONTENT="$longtitle">
+<META NAME="keywords" CONTENT="$longtitle">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="$THISPROG">
+$T2H_EXTRA_HEAD
+</HEAD>
+
+<BODY $T2H_BODYTEXT>
+$T2H_AFTER_BODY_OPEN
+EOT
address@hidden
address@hidden example
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustPagePageFoot, ,CustPagePageHead,CustPageMiscPage
address@hidden Page footer
+
+Page Foot @code{T2H_DEFAULT_print_page_foot}
address@hidden ========================================================
address@hidden CustHTML, InitFile, CustomizingPage, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here are the informations about customizing HTML
address@hidden   BODY, PRE- and AFTER Body.
address@hidden
address@hidden ========================================================
address@hidden Customizing HTML
+If you like to read the following section, it is assumed
+you are famillar with @acronym{HTML}. If not, you shouldn't
+read this, cause you don't know what we are talking about.
+
+Here you can find information how to change the
address@hidden parts of a document. These are the
+header, body etc.
+
+These are the defaults which are
+part of the distribution as @file{texi2html.init}.
+
+
+How to do changes of the customization...
+needed steps.
address@hidden examples.
+
address@hidden
+* CustHTMLBody::        Customizing BODY Text.
+* CustHTMLHead::        Customizing Head.
+* CustHTMLBodyText::    Customizing Head.
+* CustHTMLPreBodyText:: Customizing Head.
+* CustHTMLAfterBody::   Customizing Head.
address@hidden menu
address@hidden --------------------------------------------------------
address@hidden CustHTMLBody,CustHTMLBodyText,,CustHTML
address@hidden Body
+
address@hidden
+* CustHTMLBodyText::    Body Text.
+* CustHTMLPreBodyText:: PRE Body Text.
+* CustHTMLAfterBody::   After Body Text.
address@hidden menu
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustHTMLBodyText,CustHTMLPreBodyText,CustHTMLBody,CustHTML
address@hidden Body Text
+
+
address@hidden T2H_BODYTEXT
+
address@hidden
+$T2H_BODYTEXT =
+    . 'LANG="' . $T2H_LANG . '" BGCOLOR="#FFFFFF" '
+    . 'TEXT="#000000" LINK="#0000FF" '
+    . 'VLINK="#800080" ALINK="#FF0000"';
address@hidden example
+
+If you like to change the basic color combination, you can
+change the entry @var{T2H_BODYTEXT}.
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustHTMLPreBodyText,CustHTMLAfterBody,CustHTMLBodyText,CustHTML
address@hidden Body Text
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustHTMLAfterBody,CustHTMLHead,CustHTMLPreBodyText,CustHTML
address@hidden After Body Text
+
address@hidden T2H_AFTER_BODY_OPEN
address@hidden T2H_PRE_BODY_CLOSE
+
address@hidden T2H_EXTRA_HEAD
+
address@hidden
+# text inserted after <BODY ...>
+$T2H_AFTER_BODY_OPEN = '';
+
+#text inserted before </BODY>
+$T2H_PRE_BODY_CLOSE = '';
+
+# this is used in footer
+$T2H_ADDRESS = "by <I>$T2H_USER</I> " if $T2H_USER;
+$T2H_ADDRESS .= "on <I>$T2H_TODAY</I>";
+
+# this is added inside <HEAD></HEAD> after <TITLE> and some META NAME stuff
+# can be used for <style> <script>, <meta> tags
+$T2H_EXTRA_HEAD = '';
address@hidden example
+
+The default output into the @acronym{HTML} file.
address@hidden
+
+
+The following code is produced by
address@hidden
+
+Detailed information can be found at
address@hidden
+
address@hidden
+<HTML>
+$T2H_DOCTYPE
+<!-- Created on $T2H_TODAY by $THISPROG -->
+<!-- 
+$T2H_AUTHORS
+-->
+<HEAD>
+<TITLE>$longtitle</TITLE>
+
+<META NAME="description" CONTENT="$longtitle">
+<META NAME="keywords" CONTENT="$longtitle">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="$THISPROG">
+$T2H_EXTRA_HEAD
+</HEAD>
+
+<BODY $T2H_BODYTEXT>
+$T2H_AFTER_BODY_OPEN
address@hidden example
+
address@hidden --------------------------------------------------------
address@hidden CustHTMLHead,,CustHTMLAfterBody,CustHTML
address@hidden Head
address@hidden ========================================================
address@hidden InitFile, IFOs, CustHTML, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on the
address@hidden   initialization files.
address@hidden
address@hidden ========================================================
address@hidden Initialization file
address@hidden
address@hidden configure
address@hidden texi2html.init
address@hidden texi2htmlrc, global initialization
address@hidden .texi2htmlrc, user initialization
address@hidden
address@hidden sysconfdir
address@hidden init_file
address@hidden
+
+
address@hidden
+* InitFileBasics::     The basics about
+                         initialization files.
+* InitFileGlobal::     Global initialization file.
+* InitFileUser::       User initialization file.
+* InitFileLoad::       Loadable initialization file.
address@hidden menu
+
address@hidden --------------------------------------------------------
address@hidden InitFileBasics,InitFileGlobal,InitFile,InitFile
address@hidden The basics about init files
+
+Initialization options are read first from
address@hidden/usr/local/etc/texi2htmlrc} (the exact location being
+changeable with the @option{--sysconfdir=dir} option to the
address@hidden script), then from
address@hidden/.texi2htmlrc}, then any command-line options
+including @option{-init_file} option; with later settings
+overriding earlier ones.
+
+The default initialization options are defined in the
address@hidden file contained in the @b{Texi2html}
+distribution (which gets included near the beginning of the
address@hidden script that gets installed).
+
+To customize @file{texi2html} it is best if you copy the
+appropriate sections from the @file{texi2html.init}
+contents into an appropriate local initialization file,
+make the necessary changes there, and then have
address@hidden read this initialization file by one of
+the means described above.
+
+For an example on what you can produces with
address@hidden have a look at the following sites:
address@hidden://www.singular.uni-kl.de/Manual/html/}
+
+
address@hidden --------------------------------------------------------
address@hidden InitFileGlobal,InitFileUser,InitFileBasics,InitFile
address@hidden Global initialization file
address@hidden --------------------------------------------------------
address@hidden InitFileUser,InitFileLoad,InitFileGlobal,InitFile
address@hidden User initialization file
address@hidden --------------------------------------------------------
address@hidden InitFileLoad,,InitFileUser,InitFile
address@hidden Loadable initialization file
address@hidden init_file
address@hidden
+
address@hidden @ref{InitFile}
+
address@hidden --------------------------------------------------------
address@hidden IFOs, Options, InitFile, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on the
address@hidden   initialization files options.
address@hidden
address@hidden --------------------------------------------------------
address@hidden Initialization file options
+This section describes in detail all options that can be used
+only in the initialization file (@file{texi2html.init}),
+and cannot be specified on the command line.
+This means the only way to change those
+options is first to copy the original @file{texi2html.init}
+to e.g.@: @file{texi2html.init.myown} and make changes to fit
+your needs.
+
address@hidden
+* IFOnumber::             Number sectioning.
+* IFOmenu::               Avoid menu redundancy.
+* IFOCenterImage::        Center Image.
+* IFOExampleIndentCell::  Example Indent Cell.
+* IFOSampleIndentCell::   Sample Indent Cell.
+* IFOSmallFontSize::      Small Font Size.
+* IFOTopHeading::         Top Heading.
+* IFOIndexChapter::       Index Chapter.
+* IFOSplitIndex::         Split Index.
+* IFOhrefDirInsteadFile:: HREF Dir Instead file.
address@hidden menu
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOnumber, IFOmenu, IFOs, IFOs
address@hidden Number sections.
address@hidden T2H_NUMBER_SECTIONS
address@hidden T2H_NODE_NAME_IN_MENU
+if set, and @var{$T2H_NUMBER_SECTIONS} is set, then use node
+names in menu entries, instead of section names
+
address@hidden = 0;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOmenu, IFOCenterImage, IFOnumber, IFOs
address@hidden Avoid menu redundancy
address@hidden not sure if correct?
address@hidden menu, redundancy
address@hidden T2H_AVOID_MENU_REDUNDANCY
+If set, and menu entry equals menu description, then do not print
+menu description.  Likewise, if node name equals entry name, do
+not print entry name.
address@hidden = 1;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOCenterImage, IFOExampleIndentCell, IFOmenu, IFOs
address@hidden Center Image
address@hidden images, center
address@hidden T2H_CENTER_IMAGE
+if set, center @@image by default
+otherwise, do not center by default
address@hidden = 1;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOExampleIndentCell, IFOSampleIndentCell, IFOCenterImage, IFOs
address@hidden Example Indent Cell
address@hidden example, indentation
address@hidden T2H_EXAMPLE_INDENT_CELL
+used as indentation for block enclosing command
address@hidden@@example}, etc If not empty, must be enclosed in
address@hidden<td></td>}
address@hidden = '<td>&nbsp;</td>';
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOSampleIndentCell, IFOSmallFontSize, IFOExampleIndentCell, IFOs
address@hidden Small Example Indent
address@hidden example, small indent
address@hidden T2H_SMALL_EXAMPLE_INDENT_CELL
+same as above, only for @code{@@small}
+$T2H_SMALL_EXAMPLE_INDENT_CELL = "<td>&nbsp;</td>";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOSmallFontSize, IFOTopHeading, IFOSampleIndentCell, IFOs
address@hidden Small Font Size
address@hidden Font Size, small
address@hidden T2H_SMALL_FONT_SIZE
+# font size for @@small
+$T2H_SMALL_FONT_SIZE = "-1";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOTopHeading, IFOIndexChapter, IFOSmallFontSize, IFOs
address@hidden Top Heading
address@hidden T2H_TOP_HEADING
+if non-empty, and no @code{@@..heading} appeared in Top
address@hidden here should be a reference to Texinfo Manual
address@hidden @@heading ??
+node, then use this as header for top node/section,
+otherwise use value of  @code{@@settitle} or
address@hidden@@shorttitle} (in that order)
+$T2H_TOP_HEADING = "";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOIndexChapter, IFOSplitIndex, IFOTopHeading, IFOs
address@hidden Index Chapter
address@hidden Chapter, Index
address@hidden T2H_INDEX_CHAPTER
+if set, use this chapter for @strong{Index} button, else
+use first chapter whose name matches @strong{index} (case insensitive)
+$T2H_INDEX_CHAPTER = "";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOSplitIndex, IFOhrefDirInsteadFile, IFOIndexChapter, IFOs
address@hidden Split Index
address@hidden Index, split
address@hidden T2H_SPLIT_INDEX
+if set and @var{$T2H_SPLIT} is set, then split index pages
+at the next letter after they have more than that many
+entries
+
+$T2H_SPLIT_INDEX = 100;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOhrefDirInsteadFile, , IFOSplitIndex, IFOs
address@hidden HREF Dir Instead File.
address@hidden Not very good? :-/
address@hidden HREF Dir instead file
address@hidden T2H_HREF_DIR_INSTEAD_FILE
+if set (e.g., to @file{index.html}) replace @strong{HREF}'s
+to this file  (i.e., to @file{index.html}) by @file{./}
+
+$T2H_HREF_DIR_INSTEAD_FILE = "";
address@hidden ========================================================
address@hidden @include extfile.texi obsolete now, is not documented!
address@hidden ========================================================
address@hidden Options, Reference, IFOs, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on the
address@hidden   command line options.
address@hidden
address@hidden ========================================================
address@hidden Command Line Options
+
address@hidden
+* OptionDebug::               Debugging.
+* OptionDocType::             DocType (HTML)
+* OptionCheck::               Checking files.
+* OptionExpand::              Expanding info, tex areas etc.
+* OptionGlossary::            Glossary.
+* OptionInvisible::           Invisible.
+* OptionIso::                 Iso.
+* OptionInclude::             Include directories.
+* OptionTopFile::             Top File.
+* OptionTocFile::             Table of content File.
+* OptionFrames::              Frames.
+* OptionMenu::                Menus.
+* OptionNumber::              Number sections.
+* OptionSplit::               Splitting.
+* OptionSectionNavigation::   Navigation.
+* OptionSubDir::              Subdirectory.
+* OptionShortExt::            Short extension.
+* OptionPrefix::              Prefix.
+* OptionOutput::              Output.
+* OptionShortRef::            Short Ref.
+* OptionIndexSummary::        Index Summary.
+* OptionVerbose::             Verbose.
+* OptionLanguage::            Language.
+* OptionL2H::                 address@hidden
address@hidden menu
+
+
address@hidden --------------------------------------------------------
address@hidden OptionDebug, OptionDocType, Options, Options
address@hidden Debugging
address@hidden Debugging
address@hidden DEBUG_TOC
address@hidden DEBUG_INDEX
address@hidden DEBUG_BIB
address@hidden DEBUG_GLOSS
address@hidden DEBUG_DEF
address@hidden DEBUG_HTML
address@hidden DEBUG_USER
address@hidden DEBUG_L2H
address@hidden debug
+
address@hidden
+
+debugging: 0 --- no debugging; other values; see beginning
+of texi2html
+
address@hidden   =  1;
address@hidden =  2;
address@hidden   =  4;
address@hidden =  8;
address@hidden   = 16;
address@hidden  = 32;
address@hidden  = 64;
address@hidden   = 128;
+
address@hidden --------------------------------------------------------
address@hidden OptionDocType, OptionCheck, OptionDebug, Options
address@hidden DocType
address@hidden HTML, Doc Type
address@hidden doctype
address@hidden T2H_DOCTYPE
address@hidden
+
address@hidden
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
address@hidden example
+
address@hidden --------------------------------------------------------
address@hidden OptionCheck, OptionExpand, OptionDocType, Options
address@hidden Check
address@hidden Texinfo, checking
address@hidden check
address@hidden T2H_CHECK
address@hidden
+if set, only check files and give the list of all things
+that look like untranslated Texinfo commands
+
address@hidden --------------------------------------------------------
address@hidden OptionExpand, OptionGlossary, OptionCheck, Options
address@hidden Expand
address@hidden expand
address@hidden T2H_EXPAND
address@hidden
+if set to @strong{tex} (or, @strong{info}) expand
address@hidden@@iftex} and @code{@@tex} (or, @code{@@ifinfo})
+sections else, neither expand @code{@@iftex}, @code{@@tex},
+nor @code{@@ifinfo} sections
+
address@hidden $T2H_EXPAND = "info";
+
address@hidden --------------------------------------------------------
address@hidden OptionGlossary, OptionInvisible, OptionExpand, Options
address@hidden Glossary
address@hidden HTML, Glossary
address@hidden Texinfo, Glossary
address@hidden glossary
address@hidden T2H_USE_GLOSSARY
address@hidden
+if set, uses section named @strong{Footnotes} for glossary
+
address@hidden --------------------------------------------------------
address@hidden OptionInvisible, OptionIso, OptionGlossary, Options
address@hidden Invisible
address@hidden Mark, invisible
address@hidden invisible, Mark
address@hidden invisible
address@hidden T2H_INVISIBLE_MARK
address@hidden
address@hidden is the text used to create
+invisible destination anchors for index links (you can for
+instance use the @file{invisible.xbm} file shipped with
+this program). This is a workaround for a known bug of many
address@hidden browsers, including Netscape. For me, it
+works fine without it --- on the contrary: if there, it
+inserts space between headers and start of text (obachman
+3/99)
+
address@hidden
+$T2H_INVISIBLE_MARK = "";
+# $T2H_INVISIBLE_MARK = '&#160;';
address@hidden example
+
address@hidden --------------------------------------------------------
address@hidden OptionIso, OptionInclude, OptionInvisible, Options
address@hidden Iso
address@hidden ISO8859
address@hidden Copyright
address@hidden iso
address@hidden T2H_USE_ISO
address@hidden
+
+if set, ISO8859 characters are used for special symbols
+(like Copyright @address@hidden, etc)
+
+$T2H_USE_ISO = 0;
+
address@hidden --------------------------------------------------------
address@hidden OptionInclude, OptionTopFile, OptionIso, Options
address@hidden Include Directory
address@hidden Include directories
address@hidden I
address@hidden T2H_INCLUDE_DIRS
address@hidden
+
+list directories where @code{@@include} files are searched for
+(besides the directory of the doc file) additional
address@hidden args are add to this list.
+
+@@T2H_INCLUDE_DIRS = (".");
+
address@hidden --------------------------------------------------------
address@hidden OptionTopFile, OptionTocFile, OptionInclude, Options
address@hidden Top File
address@hidden Top Level file
address@hidden HTML, index.html
address@hidden top_file
address@hidden T2H_TOP_FILE
address@hidden
+uses file of this name for top-level file
+extension is manipulated appropriately, if necessary.
+If empty, @file{<basename of document>.html} is used.
+Typically, you would set this to @file{index.html}.
+
+$T2H_TOP_FILE = "";
+
address@hidden --------------------------------------------------------
address@hidden OptionTocFile, OptionFrames, OptionTopFile, Options
address@hidden Table Of content File
address@hidden Table of content file
address@hidden toc_file
address@hidden T2H_TOC_FILE
address@hidden
+uses file of this name for table of contents.  File extension
+is manipulated appropriately, if necessary. If empty,
address@hidden<basename of document>_toc.html} is used.
+
+$T2H_TOC_FILE = "";
+
address@hidden --------------------------------------------------------
address@hidden OptionFrames, OptionMenu, OptionTocFile, Options
address@hidden Frames
address@hidden HTML, frames
address@hidden HTML 4.0, frames
address@hidden frames
address@hidden T2H_FRAMES
address@hidden
+if set, output two additional files which use HTML 4.0
address@hidden
+
+$T2H_FRAMES = 0;
+
address@hidden --------------------------------------------------------
address@hidden OptionMenu, OptionNumber, OptionFrames, Options
address@hidden Menus
address@hidden HTML, menu
address@hidden Texinfo, menu
address@hidden menu
address@hidden nomenu
address@hidden T2H_SHOW_MENU
address@hidden or @option{-nomenu} if set, show the Texinfo
+menus
+
+$T2H_SHOW_MENU = 1;
+
address@hidden --------------------------------------------------------
address@hidden OptionNumber, OptionSplit, OptionMenu, Options
address@hidden Number sections
address@hidden Section numbering
address@hidden number
address@hidden nonumber
address@hidden T2H_NUMBER_SECTIONS
address@hidden @option{-nonumber}
+if set, number sections and show section names and numbers
+in references and menus
+
address@hidden Just think about it?
address@hidden @defvar $T2H_NUMBER_SECTIONS
address@hidden @c = 1;
address@hidden @end defvar
+
address@hidden --------------------------------------------------------
address@hidden OptionSplit, OptionSectionNavigation, OptionNumber, Options
address@hidden Split
address@hidden HTML, split
address@hidden File, split
address@hidden split
address@hidden T2H_SPLIT
address@hidden section|chapter|none}
+if set to @strong{section} (resp. @strong{chapter}) create one
address@hidden file per (sub)section (resp. chapter) and
+separate pages for Top, ToC, Overview, Index, Glossary,
+About.  Otherwise, create a monolithic @acronym{HTML} file that
+contains the whole document.
+
+#$T2H_SPLIT = 'section';
+$T2H_SPLIT = undef;
+
address@hidden --------------------------------------------------------
address@hidden OptionSectionNavigation, OptionSubDir, OptionSplit, Options
address@hidden Section navigation
address@hidden HTML, Navigation
address@hidden section_navigation
address@hidden no-section_navigation
address@hidden T2H_SECTION_NAVIGATION
address@hidden|
address@hidden
+
+if set, then navigation panels are printed at the beginning
+of each section and, possibly at the end (depending on
+whether or not there were more than 
address@hidden words on page). This is most useful
+if you do not want to have section navigation on
address@hidden chapter}
+
address@hidden @vindex T2H_SECTION_NAVIGATION
address@hidden @defvar $T2H_SECTION_NAVIGATION
address@hidden = 1;
address@hidden @end defvar
+
address@hidden --------------------------------------------------------
address@hidden OptionSubDir, OptionShortExt, OptionSectionNavigation, Options
address@hidden Subdirectory
address@hidden Subdirectory
address@hidden T2H_SUBDIR
address@hidden
+If set, then put result files in the specified directory.
+If not set, then result files are put into the current directory.
+
address@hidden #$T2H_SUBDIR = 'html';
address@hidden = undef;
+
address@hidden --------------------------------------------------------
address@hidden OptionShortExt, OptionPrefix, OptionSubDir, Options
address@hidden Short extension
address@hidden HTML, .htm extension
address@hidden HTML, .html extension
address@hidden extension, .html
address@hidden extension, .htm
address@hidden T2H_SHORTEXTN
address@hidden short_extn
address@hidden
+If this is set, then all @acronym{HTML} files will have extension
address@hidden instead of @file{.html}. This is helpful when
+shipping the document to DOS-based systems.
address@hidden = 0;
+
address@hidden --------------------------------------------------------
address@hidden OptionPrefix, OptionOutput, OptionShortExt, Options
address@hidden Prefix
address@hidden Prefix
address@hidden T2H_PREFIX
address@hidden prefix
address@hidden
+Set the output file prefix, prepended to all @file{.html},
address@hidden and @file{.pl} files.
+By default, this is the basename of the document
+
address@hidden = "";
+
address@hidden --------------------------------------------------------
address@hidden OptionOutput, OptionShortRef, OptionPrefix, Options
address@hidden Output filename
address@hidden Output filename
address@hidden Filename, output
address@hidden T2H_OUT
address@hidden o
address@hidden out_file
+
address@hidden filename}|@option{-out_file}
+If set, generate monolithic document output @acronym{HTML}
+into @file{filename}.
+
address@hidden --------------------------------------------------------
address@hidden OptionShortRef, OptionIndexSummary, OptionOutput, Options
address@hidden Short Cross References
address@hidden References, short
address@hidden sections without numbers
address@hidden T2H_SHORT_REF
address@hidden short_ref
address@hidden
+if set cross-references are given without section numbers
+
address@hidden --------------------------------------------------------
address@hidden OptionIndexSummary, OptionVerbose, OptionShortRef, Options
address@hidden Index Summary
address@hidden Index, Summary
address@hidden Summary Index
address@hidden HTML, Index
address@hidden T2H_IDX_SUMMARY
address@hidden idx_sum
address@hidden
+If value is set, then for each @code{@@prinindex $what}
address@hidden is created which contains lines of the
+form @strong{$key\t$ref} sorted alphabetically (case
+matters).
+
address@hidden --------------------------------------------------------
address@hidden OptionVerbose, OptionLanguage, OptionIndexSummary, Options
address@hidden Verbose output
address@hidden Output, verbose
address@hidden Verbose output
address@hidden Debugging, verbose output
address@hidden T2H_VERBOSE
address@hidden verbose
address@hidden
+if set, chatter about what we are doing.
+
address@hidden --------------------------------------------------------
address@hidden OptionLanguage, OptionL2H, OptionVerbose, Options
address@hidden Language Support
address@hidden Language Support
address@hidden Support different languages
address@hidden $T2H_LANG
address@hidden $T2H_WORDS
address@hidden lang
address@hidden
+For page titles, use
address@hidden>@address@hidden>@address@hidden as title. To add
+a new language, supply list of titles (see @var{$T2H_WORDS}),
+and use ISO 639 language codes (see e.g.@: perl module
address@hidden for definitions).
+
+If you don't give a @option{-lang} then we got it from the
+Texinfo source file (@@documentlanguage
address@hidden Put a table with the language codes here!
address@hidden Or better put a reference into the Texinfo
address@hidden Manual, which has a table of ISO 639-Codes.
address@hidden
address@hidden Currently the @xref etc. does not work with
address@hidden external documents, cause we don't know
address@hidden reference (anchor) value or there is no way
address@hidden to get it.
address@hidden The following reference does only work correctly
address@hidden in Info!!!
address@hidden,,,Texinfo}). If there is no
address@hidden@@documentlanguage} we use the default @code{en} for
+the language.
address@hidden
address@hidden put some information about Month names etc. here
address@hidden $MONTH_NAMES !!
address@hidden Supplemental should be a naming scheme for variables in
address@hidden different languages (MONTH_NAMES_DE etc.)
address@hidden --------------------------------------------------------
address@hidden OptionL2H, , OptionLanguage, Options
address@hidden address@hidden for @code{@@math} and @code{@@tex}
address@hidden address@hidden
address@hidden Conversion of @@math and @@tex
address@hidden @@tex
address@hidden @@math
address@hidden T2H_L2H
address@hidden l2h
address@hidden
+if set, uses @command{latex2html} for generation of math
+content.
+
address@hidden
+* OptionL2HL2H::    Where to find address@hidden
+* OptionL2HSkip::   Skip calling address@hidden
+* OptionL2Htmp::    Temporary files for address@hidden
address@hidden menu
+
address@hidden --------------------------------------------------------
address@hidden OptionL2HL2H, OptionL2HSkip, OptionL2H, OptionL2H
address@hidden Where to find @command{latex2html}
address@hidden location, address@hidden
address@hidden address@hidden, location
address@hidden T2H_L2H_L2H
address@hidden l2h_l2h
address@hidden
+name/location of @command{latex2html} program.
+
address@hidden --------------------------------------------------------
address@hidden OptionL2HSkip, OptionL2Htmp, OptionL2HL2H, OptionL2H
address@hidden Skip calling address@hidden
address@hidden address@hidden, skip calling
address@hidden T2H_L2H_SKIP
address@hidden l2h_skip
address@hidden
+If set, skips actual call to @command{latex2html}: tries to
+reuse previously generated content, instead.
+
address@hidden --------------------------------------------------------
address@hidden OptionL2Htmp, , OptionL2HSkip, OptionL2H
address@hidden Temporary files for address@hidden
address@hidden Temporary, address@hidden
address@hidden address@hidden, Temporary files
address@hidden T2H_L2H_TMP
address@hidden l2h_tmp
address@hidden
+If set, l2h uses this directory for temporary files.  The
+path leading to this directory may not contain a dot (i.e.,
+a @samp{.}); otherwise, l2h will fail.
address@hidden ========================================================
address@hidden Reference, Indexop, Options, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on all
address@hidden   subs in the original Perl file.
address@hidden
address@hidden ========================================================
address@hidden Function Reference
+
address@hidden
+* Refptocframe::           Print ToC Frame.
+* Refpphead::              Print page head.
address@hidden menu
+
address@hidden Global variables:
address@hidden T2H_USER which is created throught main part
address@hidden (texi2html.pl)
address@hidden You can use it. (On Windows? On Unix ?)
address@hidden --------------------------------------------------------
address@hidden Refptocframe,Refpphead,,Reference
address@hidden Print ToC Frame
+
+
address@hidden T2H_DEFAULT_print_toc_frame (FileName)
address@hidden 1
+Description of the subroutine.
+What does it do? Which parameters it needs etc.
address@hidden defun
+
+
address@hidden --------------------------------------------------------
address@hidden Refpphead,,Refptocframe,Reference
address@hidden Print Page Head
address@hidden T2H_DEFAULT_print_page_head (FileName)
address@hidden 1
+Description of the subroutine.
+What does it do? Which parameters it needs etc.
address@hidden defun
address@hidden ========================================================
address@hidden commandline option index.
address@hidden Indexop, Indexvr, Reference, Top
address@hidden Indices
address@hidden Command Line Option Index
address@hidden op
address@hidden --------------------------------------------------------
address@hidden Indexvr, Indexcp, Indexop, Top
address@hidden Variable Index
address@hidden vr
address@hidden --------------------------------------------------------
address@hidden Indexcp, , Indexvr, Top
address@hidden Concept Index
address@hidden cp
address@hidden printindex init file options dito.
address@hidden concept index.
address@hidden

Index: texi2html_manual/res_all/texi_texi2html/texi2html.texi.first
===================================================================
RCS file: texi2html_manual/res_all/texi_texi2html/texi2html.texi.first
diff -N texi2html_manual/res_all/texi_texi2html/texi2html.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ texi2html_manual/res_all/texi_texi2html/texi2html.texi.first        2 Aug 
2009 13:12:01 -0000       1.1
@@ -0,0 +1,1366 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden This is the ``Texinfo to HTML Converter'' manual which
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden --------------------------------------------------------
address@hidden
address@hidden Currently most of the material is copied out of
address@hidden texi2html.init file. It's just a start point.
address@hidden In other words this is a draft manual ;-)
address@hidden
address@hidden texi2html.info
address@hidden --------------------------------------------------------
address@hidden Edition and last update date of the manual which might
address@hidden differ to the scripts last update date etc.
address@hidden MANUAL_UPD 14. August 2000
address@hidden MANUAL_ED 0.21
address@hidden
address@hidden MANUAL_AUTHOR Karl Heinz Marbaise
address@hidden MANUAL_AUTHOR_EMAIL khmarbaise@@gmx.de
address@hidden
address@hidden Get the version of the script itself through
address@hidden configure/autoconf etc.
address@hidden version.texi is automatically generated through
address@hidden configure/autoconf.
address@hidden UPDATED 15 September 2001
address@hidden UPDATED-MONTH September 2001
address@hidden EDITION 1.67
address@hidden VERSION 1.67
address@hidden --------------------------------------------------------
address@hidden Index for command line options
address@hidden op
address@hidden --------------------------------------------------------
address@hidden Texinfo to HTML
address@hidden @setchapternewpage on
address@hidden odd
address@hidden separate
address@hidden --------------------------------------------------------
address@hidden support old style Info Dir entries.
address@hidden --------------------------------------------------------
address@hidden Informations for install-info.
address@hidden I think the conversion script should be found
address@hidden where the documentation system lives.
address@hidden What do you think?
address@hidden Texinfo documentation system
address@hidden
+* Texi2html: (texi2html).  Texinfo to HTML Converter.
address@hidden direntry
address@hidden --------------------------------------------------------
address@hidden --------------------------------------------------------
address@hidden ========================================================
address@hidden
address@hidden
address@hidden
address@hidden Top, Overview, (dir), (dir)
address@hidden Texi2html
address@hidden @page
address@hidden ========================================================
address@hidden @node Top, Overview, (dir), (dir)
address@hidden @top
address@hidden @chapter About
+
+This Manual (Edition 0.21, last updated at
+14. August 2000) describes the @command{texi2html} Perl
+script which converters
address@hidden The following construct allows me to get
address@hidden real URL link in HTML and working refs in
address@hidden info.
+Texinfo (@pxref{Top,,Texinfo,Texinfo})
+into @acronym{HTML}.
+
address@hidden @inforef{Top, Top, Texinfo} does not work yet ;-)
address@hidden here we should paste a @inforef or @xref on the
address@hidden Texinfo manual.
+
+Please send bug reports about this manual to Karl Heinz
+Marbaise @email{khmarbaise@@gmx.de}. Please state exact
+version/edition of the manual (can be found at start of
+Texinfo source file; use the entry Id under Revisions).
+
+Please note:
address@hidden
+This manual is currently under
+construction and of course incomplete ;-)
address@hidden example
+
address@hidden The following line within a menu does not work!
address@hidden * Why texi2html and not Makeinfo?:whytexi2html.      Why 
texi2html and not makeinfo?.
address@hidden ========================================================
address@hidden Overview, HowToGetHTML, Top, Top
address@hidden Overview about @command{texi2html}
address@hidden://www.texinfo.org,Texinfo} is the official
+documentation format of the @uref{http://www.gnu.org,GNU}
+project. It uses a single source file to produce both
+online information and printed output.
+
address@hidden much thinking about ...
+It is often proposed to have a way to produce
address@hidden from Texinfo sources, like the GNU-Info
+format. It is much simpler to create one converter instead
+of writing all documentation new in @acronym{HTML}, cause
+there is so much documentation in Texinfo all over
+the world.
+
+A few time ago @command{makeinfo} wasn't able to produce
address@hidden output format, but there are needth to have
address@hidden This was the borning hour for
address@hidden The basic purpose of @file{texi2html}
+is to convert Texinfo documents into HTML.
+
+
address@hidden
+* HowToGetHTML::       Ways to get HTML files.
+* whytexi2html::       Why texi2html and not makeinfo?.
address@hidden menu
address@hidden --------------------------------------------------------
address@hidden HowToGetHTML, whytexi2html, Overview, Overview
address@hidden Ways to get HTML
+You would like to @acronym{HTML} files out of your Texinfo
+files? There exist two ways which you can go.
+This first is to use @command{makeinfo} itself to produce
address@hidden output. The second is to use
address@hidden
+
address@hidden --------------------------------------------------------
address@hidden whytexi2html, Installation, HowToGetHTML, Overview
address@hidden Why @file{texi2html} and not @file{makeinfo}?
+The basic idea of @command{makeinfo}'s @acronym{HTML}
+output was to get an readable @acronym{HTML} output.
+Nothing sophisticated nor good styling just readable.
+
+The current development of texi2html is going into
+different direction.
+
+The main purpose is to get better styling, better design
+etc. of the created @acronym{HTML} pages. This way is
+supported using differnt command line options and of course
+possible changings of the initialization file to fit your
+own needs.
+
+The main disadvantage of @acronym{makeinfo}'s
address@hidden output is your getting only one big file.
+This is of course readable but not very usable. The problem
+of this is, while you like to have splitted chapters or
+nodes the Texinfo source has to be read at minimum twice
+times. This makes it impossible to implement this in
address@hidden This would result in complete new
+implementation of @command{makeinfo}'s source.
+
address@hidden think more about this????
+In contrast to the HTML produced by @command{makeinfo
+--html} (the @command{makeinfo} program is part of the
+Texinfo distribution), the HTML output of @file{texi2html}
+is highly configurable. Among other differences, with
address@hidden allows you to customize your entire
+page layout (like headers, footers, style sheets, etc),
+split documents at various levels, and use
address@hidden to convert @code{@@tex} sections.
+
address@hidden should reasonably convert all Texinfo
+4.0 constructs. If not, please send a bug report to
address@hidden@@mathematik.uni-kl.de}.
+
address@hidden ========================================================
address@hidden Installation, Customizing, whytexi2html, Top
address@hidden Installation of @command{texi2html}
address@hidden Installation
+description of the installation process.
+What do you need?
+How?
+
address@hidden ========================================================
address@hidden Customizing, CustomizingExpand, Installation, Top
address@hidden Customizing files
address@hidden Installation
address@hidden frames
address@hidden 4.) Customizing files to output
address@hidden   ==> -out_file, -prefix, -subdir, -split, -frames etc
+Result based on using @option{-frames}
+
address@hidden
+texi2html -V -frames texi2html.texi
address@hidden example
+Explanation of the output differences against default,
+whatever this is ;-)
+
+
address@hidden ========================================================
address@hidden CustomizingExpand, CustomizingPage, Customizing, Top
address@hidden Customizing what gets expanded
address@hidden 5.) Customizing what gets expanded
address@hidden   ==> -expand, and latex2html
+Test starting.
+
address@hidden info}
address@hidden tex}
+Take a look at optionexpand.
+
address@hidden ========================================================
address@hidden CustomizingPage, CustHTML, CustomizingExpand, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here are the informations about customizing page
address@hidden   layout.
address@hidden
address@hidden ========================================================
address@hidden Customizing page layout
+This chapter is designed to help you to change the
+complete layout of the @acronym{HTML} output if you like to
+do so.
+
+
+a) General: Philosophy, and how it address@hidden
+aa) Navigation address@hidden
+b) Top address@hidden
+c) Section address@hidden
+
+
+
+
address@hidden
+* TipsNewDesign::           .
+* CustPagePhil::            .
+* CustPagePhilNav::         .
+* CustPageTopPage::         .
+* CustPageSectionPages::    .
+* CustPageMiscPage::        .
address@hidden menu
address@hidden --------------------------------------------------------
address@hidden TipsNewDesign,CustPagePhil,CustomizingPage,CustomizingPage
address@hidden Tips how to create a new site design
+
+Here you can find information how you should work to pick
+up a new design with @command{texi2html}.
+
+
address@hidden --------------------------------------------------------
address@hidden CustPagePhil,CustPagePhilNav,TipsNewDesign,CustomizingPage
address@hidden Page Layout and the philosophy
+
address@hidden
+* CustPagePhilNav:: Navigation panels.
address@hidden menu
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustPagePhilNav,CustPageTopPage,CustPagePhil,CustomizingPage
address@hidden Navigation panels
+
+Head and foot Navigation panels.
+
address@hidden --------------------------------------------------------
address@hidden 
CustPageTopPage,CustPageSectionPages,CustPagePhilNav,CustomizingPage
address@hidden Top Page
address@hidden --------------------------------------------------------
address@hidden 
CustPageSectionPages,CustPageMiscPage,CustPageTopPage,CustomizingPage
address@hidden Section Pages
address@hidden --------------------------------------------------------
address@hidden 
CustPageMiscPage,CustPagePageHeadToc,CustPageSectionPages,CustomizingPage
address@hidden Misc pages
+Here you can find information about the creation of the
address@hidden (@i{Table Of content}), About---Page
+etc. and specialy how to change them to get your own
+design.
+
address@hidden @code{T2H_DEFAULT_print_toc_frame} in
address@hidden
+
address@hidden
+* CustPagePageHeadToc:: .
+* CustPagePageHead::    .
+* CustPagePageFoot::    .
address@hidden menu
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden 
CustPagePageHeadToc,CustPagePageHead,CustPageMiscPage,CustPageMiscPage
address@hidden Table Of Contents
+
+The following code is the original code out of the
+initialization file (@pxref{InitFile,Initialization file}).
+
address@hidden
+sub T2H_DEFAULT_print_toc_frame
address@hidden
+  my $fh = shift;
+  &$T2H_print_page_head($fh);
+  print $fh <<EOT;
+<H2>Content</H2>
+EOT
+  print $fh map @{s/HREF=/target=\"main\" HREF=/; $_;@} @@stoc_lines;
+  print $fh "</BODY></HTML>\n";
address@hidden
address@hidden example
+
+As you can see it is very simple Perl Code, which can
+be changed more or less simple to fit you requirements
+(@pxref{CustPagePageHead,,T2H_DEFAULT_print_page_head}).
+
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden 
CustPagePageHead,CustPagePageFoot,CustPagePageHeadToc,CustPageMiscPage
address@hidden Page header
+Page Head @code{T2H_DEFAULT_print_page_head}
+
address@hidden references on T2H_DOCTYPE
address@hidden               T2H_AUTHORS
address@hidden
+sub T2H_DEFAULT_print_page_head
address@hidden
+  my $fh = shift; 
+  my $longtitle = "address@hidden@}: address@hidden@}";
+  print $fh <<EOT;
+<HTML>
+$T2H_DOCTYPE
+<!-- Created on $T2H_TODAY by $THISPROG -->
+<!-- 
+$T2H_AUTHORS 
+-->
+<HEAD>
+<TITLE>$longtitle</TITLE>
+
+<META NAME="description" CONTENT="$longtitle">
+<META NAME="keywords" CONTENT="$longtitle">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="$THISPROG">
+$T2H_EXTRA_HEAD
+</HEAD>
+
+<BODY $T2H_BODYTEXT>
+$T2H_AFTER_BODY_OPEN
+EOT
address@hidden
address@hidden example
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustPagePageFoot, ,CustPagePageHead,CustPageMiscPage
address@hidden Page footer
+
+Page Foot @code{T2H_DEFAULT_print_page_foot}
address@hidden ========================================================
address@hidden CustHTML, InitFile, CustomizingPage, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here are the informations about customizing HTML
address@hidden   BODY, PRE- and AFTER Body.
address@hidden
address@hidden ========================================================
address@hidden Customizing HTML
+If you like to read the following section, it is assumed
+you are famillar with @acronym{HTML}. If not, you shouldn't
+read this, cause you don't know what we are talking about.
+
+Here you can find information how to change the
address@hidden parts of a document. These are the
+header, body etc.
+
+These are the defaults which are
+part of the distribution as @file{texi2html.init}.
+
+
+How to do changes of the customization...
+needed steps.
address@hidden examples.
+
address@hidden
+* CustHTMLBody::        Customizing BODY Text.
+* CustHTMLHead::        Customizing Head.
+* CustHTMLBodyText::    Customizing Head.
+* CustHTMLPreBodyText:: Customizing Head.
+* CustHTMLAfterBody::   Customizing Head.
address@hidden menu
address@hidden --------------------------------------------------------
address@hidden CustHTMLBody,CustHTMLBodyText,,CustHTML
address@hidden Body
+
address@hidden
+* CustHTMLBodyText::    Body Text.
+* CustHTMLPreBodyText:: PRE Body Text.
+* CustHTMLAfterBody::   After Body Text.
address@hidden menu
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustHTMLBodyText,CustHTMLPreBodyText,CustHTMLBody,CustHTML
address@hidden Body Text
+
+
address@hidden T2H_BODYTEXT
+
address@hidden
+$T2H_BODYTEXT =
+    . 'LANG="' . $T2H_LANG . '" BGCOLOR="#FFFFFF" '
+    . 'TEXT="#000000" LINK="#0000FF" '
+    . 'VLINK="#800080" ALINK="#FF0000"';
address@hidden example
+
+If you like to change the basic color combination, you can
+change the entry @var{T2H_BODYTEXT}.
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustHTMLPreBodyText,CustHTMLAfterBody,CustHTMLBodyText,CustHTML
address@hidden Body Text
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustHTMLAfterBody,CustHTMLHead,CustHTMLPreBodyText,CustHTML
address@hidden After Body Text
+
address@hidden T2H_AFTER_BODY_OPEN
address@hidden T2H_PRE_BODY_CLOSE
+
address@hidden T2H_EXTRA_HEAD
+
address@hidden
+# text inserted after <BODY ...>
+$T2H_AFTER_BODY_OPEN = '';
+
+#text inserted before </BODY>
+$T2H_PRE_BODY_CLOSE = '';
+
+# this is used in footer
+$T2H_ADDRESS = "by <I>$T2H_USER</I> " if $T2H_USER;
+$T2H_ADDRESS .= "on <I>$T2H_TODAY</I>";
+
+# this is added inside <HEAD></HEAD> after <TITLE> and some META NAME stuff
+# can be used for <style> <script>, <meta> tags
+$T2H_EXTRA_HEAD = '';
address@hidden example
+
+The default output into the @acronym{HTML} file.
address@hidden
+
+
+The following code is produced by
address@hidden
+
+Detailed information can be found at
address@hidden
+
address@hidden
+<HTML>
+$T2H_DOCTYPE
+<!-- Created on $T2H_TODAY by $THISPROG -->
+<!-- 
+$T2H_AUTHORS
+-->
+<HEAD>
+<TITLE>$longtitle</TITLE>
+
+<META NAME="description" CONTENT="$longtitle">
+<META NAME="keywords" CONTENT="$longtitle">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="$THISPROG">
+$T2H_EXTRA_HEAD
+</HEAD>
+
+<BODY $T2H_BODYTEXT>
+$T2H_AFTER_BODY_OPEN
address@hidden example
+
address@hidden --------------------------------------------------------
address@hidden CustHTMLHead,,CustHTMLAfterBody,CustHTML
address@hidden Head
address@hidden ========================================================
address@hidden InitFile, IFOs, CustHTML, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on the
address@hidden   initialization files.
address@hidden
address@hidden ========================================================
address@hidden Initialization file
address@hidden
address@hidden configure
address@hidden texi2html.init
address@hidden texi2htmlrc, global initialization
address@hidden .texi2htmlrc, user initialization
address@hidden
address@hidden sysconfdir
address@hidden init_file
address@hidden
+
+
address@hidden
+* InitFileBasics::     The basics about
+                         initialization files.
+* InitFileGlobal::     Global initialization file.
+* InitFileUser::       User initialization file.
+* InitFileLoad::       Loadable initialization file.
address@hidden menu
+
address@hidden --------------------------------------------------------
address@hidden InitFileBasics,InitFileGlobal,InitFile,InitFile
address@hidden The basics about init files
+
+Initialization options are read first from
address@hidden/usr/local/etc/texi2htmlrc} (the exact location being
+changeable with the @option{--sysconfdir=dir} option to the
address@hidden script), then from
address@hidden/.texi2htmlrc}, then any command-line options
+including @option{-init_file} option; with later settings
+overriding earlier ones.
+
+The default initialization options are defined in the
address@hidden file contained in the @b{Texi2html}
+distribution (which gets included near the beginning of the
address@hidden script that gets installed).
+
+To customize @file{texi2html} it is best if you copy the
+appropriate sections from the @file{texi2html.init}
+contents into an appropriate local initialization file,
+make the necessary changes there, and then have
address@hidden read this initialization file by one of
+the means described above.
+
+For an example on what you can produces with
address@hidden have a look at the following sites:
address@hidden://www.singular.uni-kl.de/Manual/html/}
+
+
address@hidden --------------------------------------------------------
address@hidden InitFileGlobal,InitFileUser,InitFileBasics,InitFile
address@hidden Global initialization file
address@hidden --------------------------------------------------------
address@hidden InitFileUser,InitFileLoad,InitFileGlobal,InitFile
address@hidden User initialization file
address@hidden --------------------------------------------------------
address@hidden InitFileLoad,,InitFileUser,InitFile
address@hidden Loadable initialization file
address@hidden init_file
address@hidden
+
address@hidden @ref{InitFile}
+
address@hidden --------------------------------------------------------
address@hidden IFOs, Options, InitFile, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on the
address@hidden   initialization files options.
address@hidden
address@hidden --------------------------------------------------------
address@hidden Initialization file options
+This section describes in detail all options that can be used
+only in the initialization file (@file{texi2html.init}),
+and cannot be specified on the command line.
+This means the only way to change those
+options is first to copy the original @file{texi2html.init}
+to e.g.@: @file{texi2html.init.myown} and make changes to fit
+your needs.
+
address@hidden
+* IFOnumber::             Number sectioning.
+* IFOmenu::               Avoid menu redundancy.
+* IFOCenterImage::        Center Image.
+* IFOExampleIndentCell::  Example Indent Cell.
+* IFOSampleIndentCell::   Sample Indent Cell.
+* IFOSmallFontSize::      Small Font Size.
+* IFOTopHeading::         Top Heading.
+* IFOIndexChapter::       Index Chapter.
+* IFOSplitIndex::         Split Index.
+* IFOhrefDirInsteadFile:: HREF Dir Instead file.
address@hidden menu
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOnumber, IFOmenu, IFOs, IFOs
address@hidden Number sections.
address@hidden T2H_NUMBER_SECTIONS
address@hidden T2H_NODE_NAME_IN_MENU
+if set, and @var{$T2H_NUMBER_SECTIONS} is set, then use node
+names in menu entries, instead of section names
+
address@hidden = 0;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOmenu, IFOCenterImage, IFOnumber, IFOs
address@hidden Avoid menu redundancy
address@hidden not sure if correct?
address@hidden menu, redundancy
address@hidden T2H_AVOID_MENU_REDUNDANCY
+If set, and menu entry equals menu description, then do not print
+menu description.  Likewise, if node name equals entry name, do
+not print entry name.
address@hidden = 1;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOCenterImage, IFOExampleIndentCell, IFOmenu, IFOs
address@hidden Center Image
address@hidden images, center
address@hidden T2H_CENTER_IMAGE
+if set, center @@image by default
+otherwise, do not center by default
address@hidden = 1;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOExampleIndentCell, IFOSampleIndentCell, IFOCenterImage, IFOs
address@hidden Example Indent Cell
address@hidden example, indentation
address@hidden T2H_EXAMPLE_INDENT_CELL
+used as indentation for block enclosing command
address@hidden@@example}, etc If not empty, must be enclosed in
address@hidden<td></td>}
address@hidden = '<td>&nbsp;</td>';
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOSampleIndentCell, IFOSmallFontSize, IFOExampleIndentCell, IFOs
address@hidden Small Example Indent
address@hidden example, small indent
address@hidden T2H_SMALL_EXAMPLE_INDENT_CELL
+same as above, only for @code{@@small}
+$T2H_SMALL_EXAMPLE_INDENT_CELL = "<td>&nbsp;</td>";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOSmallFontSize, IFOTopHeading, IFOSampleIndentCell, IFOs
address@hidden Small Font Size
address@hidden Font Size, small
address@hidden T2H_SMALL_FONT_SIZE
+# font size for @@small
+$T2H_SMALL_FONT_SIZE = "-1";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOTopHeading, IFOIndexChapter, IFOSmallFontSize, IFOs
address@hidden Top Heading
address@hidden T2H_TOP_HEADING
+if non-empty, and no @code{@@..heading} appeared in Top
address@hidden here should be a reference to Texinfo Manual
address@hidden @@heading ??
+node, then use this as header for top node/section,
+otherwise use value of  @code{@@settitle} or
address@hidden@@shorttitle} (in that order)
+$T2H_TOP_HEADING = "";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOIndexChapter, IFOSplitIndex, IFOTopHeading, IFOs
address@hidden Index Chapter
address@hidden Chapter, Index
address@hidden T2H_INDEX_CHAPTER
+if set, use this chapter for @strong{Index} button, else
+use first chapter whose name matches @strong{index} (case insensitive)
+$T2H_INDEX_CHAPTER = "";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOSplitIndex, IFOhrefDirInsteadFile, IFOIndexChapter, IFOs
address@hidden Split Index
address@hidden Index, split
address@hidden T2H_SPLIT_INDEX
+if set and @var{$T2H_SPLIT} is set, then split index pages
+at the next letter after they have more than that many
+entries
+
+$T2H_SPLIT_INDEX = 100;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOhrefDirInsteadFile, , IFOSplitIndex, IFOs
address@hidden HREF Dir Instead File.
address@hidden Not very good? :-/
address@hidden HREF Dir instead file
address@hidden T2H_HREF_DIR_INSTEAD_FILE
+if set (e.g., to @file{index.html}) replace @strong{HREF}'s
+to this file  (i.e., to @file{index.html}) by @file{./}
+
+$T2H_HREF_DIR_INSTEAD_FILE = "";
address@hidden ========================================================
address@hidden @include extfile.texi obsolete now, is not documented!
address@hidden ========================================================
address@hidden Options, Reference, IFOs, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on the
address@hidden   command line options.
address@hidden
address@hidden ========================================================
address@hidden Command Line Options
+
address@hidden
+* OptionDebug::               Debugging.
+* OptionDocType::             DocType (HTML)
+* OptionCheck::               Checking files.
+* OptionExpand::              Expanding info, tex areas etc.
+* OptionGlossary::            Glossary.
+* OptionInvisible::           Invisible.
+* OptionIso::                 Iso.
+* OptionInclude::             Include directories.
+* OptionTopFile::             Top File.
+* OptionTocFile::             Table of content File.
+* OptionFrames::              Frames.
+* OptionMenu::                Menus.
+* OptionNumber::              Number sections.
+* OptionSplit::               Splitting.
+* OptionSectionNavigation::   Navigation.
+* OptionSubDir::              Subdirectory.
+* OptionShortExt::            Short extension.
+* OptionPrefix::              Prefix.
+* OptionOutput::              Output.
+* OptionShortRef::            Short Ref.
+* OptionIndexSummary::        Index Summary.
+* OptionVerbose::             Verbose.
+* OptionLanguage::            Language.
+* OptionL2H::                 address@hidden
address@hidden menu
+
+
address@hidden --------------------------------------------------------
address@hidden OptionDebug, OptionDocType, Options, Options
address@hidden Debugging
address@hidden Debugging
address@hidden DEBUG_TOC
address@hidden DEBUG_INDEX
address@hidden DEBUG_BIB
address@hidden DEBUG_GLOSS
address@hidden DEBUG_DEF
address@hidden DEBUG_HTML
address@hidden DEBUG_USER
address@hidden DEBUG_L2H
address@hidden debug
+
address@hidden
+
+debugging: 0 --- no debugging; other values; see beginning
+of texi2html
+
address@hidden   =  1;
address@hidden =  2;
address@hidden   =  4;
address@hidden =  8;
address@hidden   = 16;
address@hidden  = 32;
address@hidden  = 64;
address@hidden   = 128;
+
address@hidden --------------------------------------------------------
address@hidden OptionDocType, OptionCheck, OptionDebug, Options
address@hidden DocType
address@hidden HTML, Doc Type
address@hidden doctype
address@hidden T2H_DOCTYPE
address@hidden
+
address@hidden
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
address@hidden example
+
address@hidden --------------------------------------------------------
address@hidden OptionCheck, OptionExpand, OptionDocType, Options
address@hidden Check
address@hidden Texinfo, checking
address@hidden check
address@hidden T2H_CHECK
address@hidden
+if set, only check files and give the list of all things
+that look like untranslated Texinfo commands
+
address@hidden --------------------------------------------------------
address@hidden OptionExpand, OptionGlossary, OptionCheck, Options
address@hidden Expand
address@hidden expand
address@hidden T2H_EXPAND
address@hidden
+if set to @strong{tex} (or, @strong{info}) expand
address@hidden@@iftex} and @code{@@tex} (or, @code{@@ifinfo})
+sections else, neither expand @code{@@iftex}, @code{@@tex},
+nor @code{@@ifinfo} sections
+
address@hidden $T2H_EXPAND = "info";
+
address@hidden --------------------------------------------------------
address@hidden OptionGlossary, OptionInvisible, OptionExpand, Options
address@hidden Glossary
address@hidden HTML, Glossary
address@hidden Texinfo, Glossary
address@hidden glossary
address@hidden T2H_USE_GLOSSARY
address@hidden
+if set, uses section named @strong{Footnotes} for glossary
+
address@hidden --------------------------------------------------------
address@hidden OptionInvisible, OptionIso, OptionGlossary, Options
address@hidden Invisible
address@hidden Mark, invisible
address@hidden invisible, Mark
address@hidden invisible
address@hidden T2H_INVISIBLE_MARK
address@hidden
address@hidden is the text used to create
+invisible destination anchors for index links (you can for
+instance use the @file{invisible.xbm} file shipped with
+this program). This is a workaround for a known bug of many
address@hidden browsers, including Netscape. For me, it
+works fine without it --- on the contrary: if there, it
+inserts space between headers and start of text (obachman
+3/99)
+
address@hidden
+$T2H_INVISIBLE_MARK = "";
+# $T2H_INVISIBLE_MARK = '&#160;';
address@hidden example
+
address@hidden --------------------------------------------------------
address@hidden OptionIso, OptionInclude, OptionInvisible, Options
address@hidden Iso
address@hidden ISO8859
address@hidden Copyright
address@hidden iso
address@hidden T2H_USE_ISO
address@hidden
+
+if set, ISO8859 characters are used for special symbols
+(like Copyright @address@hidden, etc)
+
+$T2H_USE_ISO = 0;
+
address@hidden --------------------------------------------------------
address@hidden OptionInclude, OptionTopFile, OptionIso, Options
address@hidden Include Directory
address@hidden Include directories
address@hidden I
address@hidden T2H_INCLUDE_DIRS
address@hidden
+
+list directories where @code{@@include} files are searched for
+(besides the directory of the doc file) additional
address@hidden args are add to this list.
+
+@@T2H_INCLUDE_DIRS = (".");
+
address@hidden --------------------------------------------------------
address@hidden OptionTopFile, OptionTocFile, OptionInclude, Options
address@hidden Top File
address@hidden Top Level file
address@hidden HTML, index.html
address@hidden top_file
address@hidden T2H_TOP_FILE
address@hidden
+uses file of this name for top-level file
+extension is manipulated appropriately, if necessary.
+If empty, @file{<basename of document>.html} is used.
+Typically, you would set this to @file{index.html}.
+
+$T2H_TOP_FILE = "";
+
address@hidden --------------------------------------------------------
address@hidden OptionTocFile, OptionFrames, OptionTopFile, Options
address@hidden Table Of content File
address@hidden Table of content file
address@hidden toc_file
address@hidden T2H_TOC_FILE
address@hidden
+uses file of this name for table of contents.  File extension
+is manipulated appropriately, if necessary. If empty,
address@hidden<basename of document>_toc.html} is used.
+
+$T2H_TOC_FILE = "";
+
address@hidden --------------------------------------------------------
address@hidden OptionFrames, OptionMenu, OptionTocFile, Options
address@hidden Frames
address@hidden HTML, frames
address@hidden HTML 4.0, frames
address@hidden frames
address@hidden T2H_FRAMES
address@hidden
+if set, output two additional files which use HTML 4.0
address@hidden
+
+$T2H_FRAMES = 0;
+
address@hidden --------------------------------------------------------
address@hidden OptionMenu, OptionNumber, OptionFrames, Options
address@hidden Menus
address@hidden HTML, menu
address@hidden Texinfo, menu
address@hidden menu
address@hidden nomenu
address@hidden T2H_SHOW_MENU
address@hidden or @option{-nomenu} if set, show the Texinfo
+menus
+
+$T2H_SHOW_MENU = 1;
+
address@hidden --------------------------------------------------------
address@hidden OptionNumber, OptionSplit, OptionMenu, Options
address@hidden Number sections
address@hidden Section numbering
address@hidden number
address@hidden nonumber
address@hidden T2H_NUMBER_SECTIONS
address@hidden @option{-nonumber}
+if set, number sections and show section names and numbers
+in references and menus
+
address@hidden Just think about it?
address@hidden @defvar $T2H_NUMBER_SECTIONS
address@hidden @c = 1;
address@hidden @end defvar
+
address@hidden --------------------------------------------------------
address@hidden OptionSplit, OptionSectionNavigation, OptionNumber, Options
address@hidden Split
address@hidden HTML, split
address@hidden File, split
address@hidden split
address@hidden T2H_SPLIT
address@hidden section|chapter|none}
+if set to @strong{section} (resp. @strong{chapter}) create one
address@hidden file per (sub)section (resp. chapter) and
+separate pages for Top, ToC, Overview, Index, Glossary,
+About.  Otherwise, create a monolithic @acronym{HTML} file that
+contains the whole document.
+
+#$T2H_SPLIT = 'section';
+$T2H_SPLIT = undef;
+
address@hidden --------------------------------------------------------
address@hidden OptionSectionNavigation, OptionSubDir, OptionSplit, Options
address@hidden Section navigation
address@hidden HTML, Navigation
address@hidden section_navigation
address@hidden no-section_navigation
address@hidden T2H_SECTION_NAVIGATION
address@hidden|
address@hidden
+
+if set, then navigation panels are printed at the beginning
+of each section and, possibly at the end (depending on
+whether or not there were more than 
address@hidden words on page). This is most useful
+if you do not want to have section navigation on
address@hidden chapter}
+
address@hidden @vindex T2H_SECTION_NAVIGATION
address@hidden @defvar $T2H_SECTION_NAVIGATION
address@hidden = 1;
address@hidden @end defvar
+
address@hidden --------------------------------------------------------
address@hidden OptionSubDir, OptionShortExt, OptionSectionNavigation, Options
address@hidden Subdirectory
address@hidden Subdirectory
address@hidden T2H_SUBDIR
address@hidden
+If set, then put result files in the specified directory.
+If not set, then result files are put into the current directory.
+
address@hidden #$T2H_SUBDIR = 'html';
address@hidden = undef;
+
address@hidden --------------------------------------------------------
address@hidden OptionShortExt, OptionPrefix, OptionSubDir, Options
address@hidden Short extension
address@hidden HTML, .htm extension
address@hidden HTML, .html extension
address@hidden extension, .html
address@hidden extension, .htm
address@hidden T2H_SHORTEXTN
address@hidden short_extn
address@hidden
+If this is set, then all @acronym{HTML} files will have extension
address@hidden instead of @file{.html}. This is helpful when
+shipping the document to DOS-based systems.
address@hidden = 0;
+
address@hidden --------------------------------------------------------
address@hidden OptionPrefix, OptionOutput, OptionShortExt, Options
address@hidden Prefix
address@hidden Prefix
address@hidden T2H_PREFIX
address@hidden prefix
address@hidden
+Set the output file prefix, prepended to all @file{.html},
address@hidden and @file{.pl} files.
+By default, this is the basename of the document
+
address@hidden = "";
+
address@hidden --------------------------------------------------------
address@hidden OptionOutput, OptionShortRef, OptionPrefix, Options
address@hidden Output filename
address@hidden Output filename
address@hidden Filename, output
address@hidden T2H_OUT
address@hidden o
address@hidden out_file
+
address@hidden filename}|@option{-out_file}
+If set, generate monolithic document output @acronym{HTML}
+into @file{filename}.
+
address@hidden --------------------------------------------------------
address@hidden OptionShortRef, OptionIndexSummary, OptionOutput, Options
address@hidden Short Cross References
address@hidden References, short
address@hidden sections without numbers
address@hidden T2H_SHORT_REF
address@hidden short_ref
address@hidden
+if set cross-references are given without section numbers
+
address@hidden --------------------------------------------------------
address@hidden OptionIndexSummary, OptionVerbose, OptionShortRef, Options
address@hidden Index Summary
address@hidden Index, Summary
address@hidden Summary Index
address@hidden HTML, Index
address@hidden T2H_IDX_SUMMARY
address@hidden idx_sum
address@hidden
+If value is set, then for each @code{@@prinindex $what}
address@hidden is created which contains lines of the
+form @strong{$key\t$ref} sorted alphabetically (case
+matters).
+
address@hidden --------------------------------------------------------
address@hidden OptionVerbose, OptionLanguage, OptionIndexSummary, Options
address@hidden Verbose output
address@hidden Output, verbose
address@hidden Verbose output
address@hidden Debugging, verbose output
address@hidden T2H_VERBOSE
address@hidden verbose
address@hidden
+if set, chatter about what we are doing.
+
address@hidden --------------------------------------------------------
address@hidden OptionLanguage, OptionL2H, OptionVerbose, Options
address@hidden Language Support
address@hidden Language Support
address@hidden Support different languages
address@hidden $T2H_LANG
address@hidden $T2H_WORDS
address@hidden lang
address@hidden
+For page titles, use
address@hidden>@address@hidden>@address@hidden as title. To add
+a new language, supply list of titles (see @var{$T2H_WORDS}),
+and use ISO 639 language codes (see e.g.@: perl module
address@hidden for definitions).
+
+If you don't give a @option{-lang} then we got it from the
+Texinfo source file (@@documentlanguage
address@hidden Put a table with the language codes here!
address@hidden Or better put a reference into the Texinfo
address@hidden Manual, which has a table of ISO 639-Codes.
address@hidden
address@hidden Currently the @xref etc. does not work with
address@hidden external documents, cause we don't know
address@hidden reference (anchor) value or there is no way
address@hidden to get it.
address@hidden The following reference does only work correctly
address@hidden in Info!!!
address@hidden,,,Texinfo}). If there is no
address@hidden@@documentlanguage} we use the default @code{en} for
+the language.
address@hidden
address@hidden put some information about Month names etc. here
address@hidden $MONTH_NAMES !!
address@hidden Supplemental should be a naming scheme for variables in
address@hidden different languages (MONTH_NAMES_DE etc.)
address@hidden --------------------------------------------------------
address@hidden OptionL2H, , OptionLanguage, Options
address@hidden address@hidden for @code{@@math} and @code{@@tex}
address@hidden address@hidden
address@hidden Conversion of @@math and @@tex
address@hidden @@tex
address@hidden @@math
address@hidden T2H_L2H
address@hidden l2h
address@hidden
+if set, uses @command{latex2html} for generation of math
+content.
+
address@hidden
+* OptionL2HL2H::    Where to find address@hidden
+* OptionL2HSkip::   Skip calling address@hidden
+* OptionL2Htmp::    Temporary files for address@hidden
address@hidden menu
+
address@hidden --------------------------------------------------------
address@hidden OptionL2HL2H, OptionL2HSkip, OptionL2H, OptionL2H
address@hidden Where to find @command{latex2html}
address@hidden location, address@hidden
address@hidden address@hidden, location
address@hidden T2H_L2H_L2H
address@hidden l2h_l2h
address@hidden
+name/location of @command{latex2html} program.
+
address@hidden --------------------------------------------------------
address@hidden OptionL2HSkip, OptionL2Htmp, OptionL2HL2H, OptionL2H
address@hidden Skip calling address@hidden
address@hidden address@hidden, skip calling
address@hidden T2H_L2H_SKIP
address@hidden l2h_skip
address@hidden
+If set, skips actual call to @command{latex2html}: tries to
+reuse previously generated content, instead.
+
address@hidden --------------------------------------------------------
address@hidden OptionL2Htmp, , OptionL2HSkip, OptionL2H
address@hidden Temporary files for address@hidden
address@hidden Temporary, address@hidden
address@hidden address@hidden, Temporary files
address@hidden T2H_L2H_TMP
address@hidden l2h_tmp
address@hidden
+If set, l2h uses this directory for temporary files.  The
+path leading to this directory may not contain a dot (i.e.,
+a @samp{.}); otherwise, l2h will fail.
address@hidden ========================================================
address@hidden Reference, Indexop, Options, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on all
address@hidden   subs in the original Perl file.
address@hidden
address@hidden ========================================================
address@hidden Function Reference
+
address@hidden
+* Refptocframe::           Print ToC Frame.
+* Refpphead::              Print page head.
address@hidden menu
+
address@hidden Global variables:
address@hidden T2H_USER which is created throught main part
address@hidden (texi2html.pl)
address@hidden You can use it. (On Windows? On Unix ?)
address@hidden --------------------------------------------------------
address@hidden Refptocframe,Refpphead,,Reference
address@hidden Print ToC Frame
+
+
address@hidden T2H_DEFAULT_print_toc_frame (FileName)
address@hidden 1
+Description of the subroutine.
+What does it do? Which parameters it needs etc.
address@hidden defun
+
+
address@hidden --------------------------------------------------------
address@hidden Refpphead,,Refptocframe,Reference
address@hidden Print Page Head
address@hidden T2H_DEFAULT_print_page_head (FileName)
address@hidden 1
+Description of the subroutine.
+What does it do? Which parameters it needs etc.
address@hidden defun
address@hidden ========================================================
address@hidden commandline option index.
address@hidden Indexop, Indexvr, Reference, Top
address@hidden Indices
address@hidden Command Line Option Index
address@hidden op
address@hidden --------------------------------------------------------
address@hidden Indexvr, Indexcp, Indexop, Top
address@hidden Variable Index
address@hidden vr
address@hidden --------------------------------------------------------
address@hidden Indexcp, , Indexvr, Top
address@hidden Concept Index
address@hidden cp
address@hidden printindex init file options dito.
address@hidden concept index.
address@hidden

Index: texi2html_manual/res_info/texi_texi2html/texi2html.texi.first
===================================================================
RCS file: texi2html_manual/res_info/texi_texi2html/texi2html.texi.first
diff -N texi2html_manual/res_info/texi_texi2html/texi2html.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ texi2html_manual/res_info/texi_texi2html/texi2html.texi.first       2 Aug 
2009 13:12:01 -0000       1.1
@@ -0,0 +1,1475 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden This is the ``Texinfo to HTML Converter'' manual which
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden --------------------------------------------------------
address@hidden
address@hidden Currently most of the material is copied out of
address@hidden texi2html.init file. It's just a start point.
address@hidden In other words this is a draft manual ;-)
address@hidden
address@hidden texi2html.info
address@hidden --------------------------------------------------------
address@hidden Edition and last update date of the manual which might
address@hidden differ to the scripts last update date etc.
address@hidden MANUAL_UPD 14. August 2000
address@hidden MANUAL_ED 0.21
address@hidden
address@hidden MANUAL_AUTHOR Karl Heinz Marbaise
address@hidden MANUAL_AUTHOR_EMAIL khmarbaise@@gmx.de
address@hidden
address@hidden Get the version of the script itself through
address@hidden configure/autoconf etc.
address@hidden version.texi is automatically generated through
address@hidden configure/autoconf.
address@hidden UPDATED 15 September 2001
address@hidden UPDATED-MONTH September 2001
address@hidden EDITION 1.67
address@hidden VERSION 1.67
address@hidden --------------------------------------------------------
address@hidden Index for command line options
address@hidden op
address@hidden --------------------------------------------------------
address@hidden Texinfo to HTML
address@hidden @setchapternewpage on
address@hidden odd
address@hidden separate
address@hidden --------------------------------------------------------
address@hidden support old style Info Dir entries.
address@hidden --------------------------------------------------------
address@hidden Informations for install-info.
address@hidden I think the conversion script should be found
address@hidden where the documentation system lives.
address@hidden What do you think?
address@hidden Texinfo documentation system
address@hidden
+* Texi2html: (texi2html).  Texinfo to HTML Converter.
address@hidden direntry
address@hidden --------------------------------------------------------
+This file documents the texi2html script which converts
+Texinfo into HTML.
+
+Copyright (C) 1999, 2000  Free Software Foundation, Inc.
+
+This edition is for texi2html version 1.67,
+15 September 2001.
+
+Permission is granted to make and distribute verbatim
+copies of this manual provided the copyright notice and
+this permission notice are preserved on all copies.
+
+Permission is granted to copy and distribute modified
+versions of this manual under the conditions for verbatim
+copying, provided that the entire resulting derived work is
+distributed under the terms of a permission notice
+identical to this one.
+
+Permission is granted to copy and distribute translations
+of this manual into another language, under the above
+conditions for modified versions, except that this
+permission notice may be stated in a translation approved
+by the Free Software Foundation.
address@hidden --------------------------------------------------------
address@hidden ========================================================
address@hidden
address@hidden
address@hidden
address@hidden Top, Overview, (dir), (dir)
address@hidden Texi2html
address@hidden @page
address@hidden ========================================================
address@hidden @node Top, Overview, (dir), (dir)
address@hidden @top
address@hidden @chapter About
+
+This Manual (Edition 0.21, last updated at
+14. August 2000) describes the @command{texi2html} Perl
+script which converters
address@hidden The following construct allows me to get
address@hidden real URL link in HTML and working refs in
address@hidden info.
+Texinfo (@pxref{Top,,Texinfo,Texinfo})
+into @acronym{HTML}.
+
address@hidden @inforef{Top, Top, Texinfo} does not work yet ;-)
address@hidden here we should paste a @inforef or @xref on the
address@hidden Texinfo manual.
+
+Please send bug reports about this manual to Karl Heinz
+Marbaise @email{khmarbaise@@gmx.de}. Please state exact
+version/edition of the manual (can be found at start of
+Texinfo source file; use the entry Id under Revisions).
+
+Please note:
address@hidden
+This manual is currently under
+construction and of course incomplete ;-)
address@hidden example
+
address@hidden The following line within a menu does not work!
address@hidden * Why texi2html and not Makeinfo?:whytexi2html.      Why 
texi2html and not makeinfo?.
address@hidden
address@hidden * MenuName:NodeName.       Description.
+* Overview::                  Overview about @command{texi2html}.
+* Installation::              Installation process.
+* Customizing::               Customizing.
+* CustomizingExpand::         Customizing what gets expanded.
+* CustomizingPage::           Customizing page layout.
+* CustHTML::                  Customizing HTML.
+* InitFile::                  Initialization files.
address@hidden * ExtFile::                   Extension file.
+* IFOs::                      Initialization file options
+* Options::                   Command Line Options.
+
+* Reference::                 Reference Manual of functions.
+
address@hidden
+
+/// The Detailed Node Listing ///
+
+--- Overview ---
+
+* whytexi2html::              Why @file{texi2html} and
+                                not @file{makeinfo}?.
+
+
+--- Installation process ---
+
+* Installation::             Installation process.
+
+
+--- Initialization file options ---
+
+* IFOnumber::                 Number sectioning.
+* IFOmenu::                   Avoid menu redundancy.
+* IFOCenterImage::            Center Image.
+* IFOExampleIndentCell::      Example Indent Cell.
+* IFOSampleIndentCell::       Sample Indent Cell.
+* IFOSmallFontSize::          Small Font Size.
+* IFOTopHeading::             Top Heading.
+* IFOIndexChapter::           Index Chapter.
+* IFOSplitIndex::             Split Index.
+* IFOhrefDirInsteadFile::     HREF Dir Instead file.
+
+
+--- Command Line Options ---
+
+* OptionDebug::               Debugging.
+* OptionDocType::             DocType (HTML)
+* OptionCheck::               Checking files.
+* OptionExpand::              Expanding info, tex areas etc.
+* OptionGlossary::            Glossary.
+* OptionInvisible::           Invisible.
+* OptionIso::                 Iso.
+* OptionInclude::             Include directories.
+* OptionTopFile::             Top File.
+* OptionTocFile::             Table of content File.
+* OptionFrames::              Frames.
+* OptionMenu::                Menus.
+* OptionNumber::              Number sections.
+* OptionSplit::               Splitting.
+* OptionSectionNavigation::   Navigation.
+* OptionSubDir::              Subdirectory.
+* OptionShortExt::            Short extension.
+* OptionPrefix::              Prefix.
+* OptionOutput::              Output.
+* OptionShortRef::            Short Ref.
+* OptionIndexSummary::        Index Summary.
+* OptionVerbose::             Verbose.
+* OptionLanguage::            Language.
+* OptionL2H::                 address@hidden
+
+
+--- address@hidden for @code{@@math} and @code{@@tex} ---
+
+* OptionL2HL2H::              Where to find address@hidden
+* OptionL2HSkip::             Skip calling address@hidden
+* OptionL2Htmp::              Temporary files for address@hidden
+
+
+--- Indices ---
+
+* Indexop::                   Command Line Option Index.
+* Indexvr::                   Variable Index.
+* Indexcp::                   Concept Index.
address@hidden detailmenu
address@hidden menu
address@hidden ========================================================
address@hidden Overview, HowToGetHTML, Top, Top
address@hidden Overview about @command{texi2html}
address@hidden://www.texinfo.org,Texinfo} is the official
+documentation format of the @uref{http://www.gnu.org,GNU}
+project. It uses a single source file to produce both
+online information and printed output.
+
address@hidden much thinking about ...
+It is often proposed to have a way to produce
address@hidden from Texinfo sources, like the GNU-Info
+format. It is much simpler to create one converter instead
+of writing all documentation new in @acronym{HTML}, cause
+there is so much documentation in Texinfo all over
+the world.
+
+A few time ago @command{makeinfo} wasn't able to produce
address@hidden output format, but there are needth to have
address@hidden This was the borning hour for
address@hidden The basic purpose of @file{texi2html}
+is to convert Texinfo documents into HTML.
+
+
address@hidden
+* HowToGetHTML::       Ways to get HTML files.
+* whytexi2html::       Why texi2html and not makeinfo?.
address@hidden menu
address@hidden --------------------------------------------------------
address@hidden HowToGetHTML, whytexi2html, Overview, Overview
address@hidden Ways to get HTML
+You would like to @acronym{HTML} files out of your Texinfo
+files? There exist two ways which you can go.
+This first is to use @command{makeinfo} itself to produce
address@hidden output. The second is to use
address@hidden
+
address@hidden --------------------------------------------------------
address@hidden whytexi2html, Installation, HowToGetHTML, Overview
address@hidden Why @file{texi2html} and not @file{makeinfo}?
+The basic idea of @command{makeinfo}'s @acronym{HTML}
+output was to get an readable @acronym{HTML} output.
+Nothing sophisticated nor good styling just readable.
+
+The current development of texi2html is going into
+different direction.
+
+The main purpose is to get better styling, better design
+etc. of the created @acronym{HTML} pages. This way is
+supported using differnt command line options and of course
+possible changings of the initialization file to fit your
+own needs.
+
+The main disadvantage of @acronym{makeinfo}'s
address@hidden output is your getting only one big file.
+This is of course readable but not very usable. The problem
+of this is, while you like to have splitted chapters or
+nodes the Texinfo source has to be read at minimum twice
+times. This makes it impossible to implement this in
address@hidden This would result in complete new
+implementation of @command{makeinfo}'s source.
+
address@hidden think more about this????
+In contrast to the HTML produced by @command{makeinfo
+--html} (the @command{makeinfo} program is part of the
+Texinfo distribution), the HTML output of @file{texi2html}
+is highly configurable. Among other differences, with
address@hidden allows you to customize your entire
+page layout (like headers, footers, style sheets, etc),
+split documents at various levels, and use
address@hidden to convert @code{@@tex} sections.
+
address@hidden should reasonably convert all Texinfo
+4.0 constructs. If not, please send a bug report to
address@hidden@@mathematik.uni-kl.de}.
+
address@hidden ========================================================
address@hidden Installation, Customizing, whytexi2html, Top
address@hidden Installation of @command{texi2html}
address@hidden Installation
+description of the installation process.
+What do you need?
+How?
+
address@hidden ========================================================
address@hidden Customizing, CustomizingExpand, Installation, Top
address@hidden Customizing files
address@hidden Installation
address@hidden frames
address@hidden 4.) Customizing files to output
address@hidden   ==> -out_file, -prefix, -subdir, -split, -frames etc
+Result based on using @option{-frames}
+
address@hidden
+texi2html -V -frames texi2html.texi
address@hidden example
+Explanation of the output differences against default,
+whatever this is ;-)
+
+
address@hidden ========================================================
address@hidden CustomizingExpand, CustomizingPage, Customizing, Top
address@hidden Customizing what gets expanded
address@hidden 5.) Customizing what gets expanded
address@hidden   ==> -expand, and latex2html
+Test starting.
+
address@hidden info}
address@hidden tex}
+Take a look at optionexpand.
+
address@hidden ========================================================
address@hidden CustomizingPage, CustHTML, CustomizingExpand, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here are the informations about customizing page
address@hidden   layout.
address@hidden
address@hidden ========================================================
address@hidden Customizing page layout
+This chapter is designed to help you to change the
+complete layout of the @acronym{HTML} output if you like to
+do so.
+
+
+a) General: Philosophy, and how it address@hidden
+aa) Navigation address@hidden
+b) Top address@hidden
+c) Section address@hidden
+
+
+
+
address@hidden
+* TipsNewDesign::           .
+* CustPagePhil::            .
+* CustPagePhilNav::         .
+* CustPageTopPage::         .
+* CustPageSectionPages::    .
+* CustPageMiscPage::        .
address@hidden menu
address@hidden --------------------------------------------------------
address@hidden TipsNewDesign,CustPagePhil,CustomizingPage,CustomizingPage
address@hidden Tips how to create a new site design
+
+Here you can find information how you should work to pick
+up a new design with @command{texi2html}.
+
+
address@hidden --------------------------------------------------------
address@hidden CustPagePhil,CustPagePhilNav,TipsNewDesign,CustomizingPage
address@hidden Page Layout and the philosophy
+
address@hidden
+* CustPagePhilNav:: Navigation panels.
address@hidden menu
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustPagePhilNav,CustPageTopPage,CustPagePhil,CustomizingPage
address@hidden Navigation panels
+
+Head and foot Navigation panels.
+
address@hidden --------------------------------------------------------
address@hidden 
CustPageTopPage,CustPageSectionPages,CustPagePhilNav,CustomizingPage
address@hidden Top Page
address@hidden --------------------------------------------------------
address@hidden 
CustPageSectionPages,CustPageMiscPage,CustPageTopPage,CustomizingPage
address@hidden Section Pages
address@hidden --------------------------------------------------------
address@hidden 
CustPageMiscPage,CustPagePageHeadToc,CustPageSectionPages,CustomizingPage
address@hidden Misc pages
+Here you can find information about the creation of the
address@hidden (@i{Table Of content}), About---Page
+etc. and specialy how to change them to get your own
+design.
+
address@hidden @code{T2H_DEFAULT_print_toc_frame} in
address@hidden
+
address@hidden
+* CustPagePageHeadToc:: .
+* CustPagePageHead::    .
+* CustPagePageFoot::    .
address@hidden menu
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden 
CustPagePageHeadToc,CustPagePageHead,CustPageMiscPage,CustPageMiscPage
address@hidden Table Of Contents
+
+The following code is the original code out of the
+initialization file (@pxref{InitFile,Initialization file}).
+
address@hidden
+sub T2H_DEFAULT_print_toc_frame
address@hidden
+  my $fh = shift;
+  &$T2H_print_page_head($fh);
+  print $fh <<EOT;
+<H2>Content</H2>
+EOT
+  print $fh map @{s/HREF=/target=\"main\" HREF=/; $_;@} @@stoc_lines;
+  print $fh "</BODY></HTML>\n";
address@hidden
address@hidden example
+
+As you can see it is very simple Perl Code, which can
+be changed more or less simple to fit you requirements
+(@pxref{CustPagePageHead,,T2H_DEFAULT_print_page_head}).
+
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden 
CustPagePageHead,CustPagePageFoot,CustPagePageHeadToc,CustPageMiscPage
address@hidden Page header
+Page Head @code{T2H_DEFAULT_print_page_head}
+
address@hidden references on T2H_DOCTYPE
address@hidden               T2H_AUTHORS
address@hidden
+sub T2H_DEFAULT_print_page_head
address@hidden
+  my $fh = shift; 
+  my $longtitle = "address@hidden@}: address@hidden@}";
+  print $fh <<EOT;
+<HTML>
+$T2H_DOCTYPE
+<!-- Created on $T2H_TODAY by $THISPROG -->
+<!-- 
+$T2H_AUTHORS 
+-->
+<HEAD>
+<TITLE>$longtitle</TITLE>
+
+<META NAME="description" CONTENT="$longtitle">
+<META NAME="keywords" CONTENT="$longtitle">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="$THISPROG">
+$T2H_EXTRA_HEAD
+</HEAD>
+
+<BODY $T2H_BODYTEXT>
+$T2H_AFTER_BODY_OPEN
+EOT
address@hidden
address@hidden example
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustPagePageFoot, ,CustPagePageHead,CustPageMiscPage
address@hidden Page footer
+
+Page Foot @code{T2H_DEFAULT_print_page_foot}
address@hidden ========================================================
address@hidden CustHTML, InitFile, CustomizingPage, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here are the informations about customizing HTML
address@hidden   BODY, PRE- and AFTER Body.
address@hidden
address@hidden ========================================================
address@hidden Customizing HTML
+If you like to read the following section, it is assumed
+you are famillar with @acronym{HTML}. If not, you shouldn't
+read this, cause you don't know what we are talking about.
+
+Here you can find information how to change the
address@hidden parts of a document. These are the
+header, body etc.
+
+These are the defaults which are
+part of the distribution as @file{texi2html.init}.
+
+
+How to do changes of the customization...
+needed steps.
address@hidden examples.
+
address@hidden
+* CustHTMLBody::        Customizing BODY Text.
+* CustHTMLHead::        Customizing Head.
+* CustHTMLBodyText::    Customizing Head.
+* CustHTMLPreBodyText:: Customizing Head.
+* CustHTMLAfterBody::   Customizing Head.
address@hidden menu
address@hidden --------------------------------------------------------
address@hidden CustHTMLBody,CustHTMLBodyText,,CustHTML
address@hidden Body
+
address@hidden
+* CustHTMLBodyText::    Body Text.
+* CustHTMLPreBodyText:: PRE Body Text.
+* CustHTMLAfterBody::   After Body Text.
address@hidden menu
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustHTMLBodyText,CustHTMLPreBodyText,CustHTMLBody,CustHTML
address@hidden Body Text
+
+
address@hidden T2H_BODYTEXT
+
address@hidden
+$T2H_BODYTEXT =
+    . 'LANG="' . $T2H_LANG . '" BGCOLOR="#FFFFFF" '
+    . 'TEXT="#000000" LINK="#0000FF" '
+    . 'VLINK="#800080" ALINK="#FF0000"';
address@hidden example
+
+If you like to change the basic color combination, you can
+change the entry @var{T2H_BODYTEXT}.
+
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustHTMLPreBodyText,CustHTMLAfterBody,CustHTMLBodyText,CustHTML
address@hidden Body Text
address@hidden -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
address@hidden CustHTMLAfterBody,CustHTMLHead,CustHTMLPreBodyText,CustHTML
address@hidden After Body Text
+
address@hidden T2H_AFTER_BODY_OPEN
address@hidden T2H_PRE_BODY_CLOSE
+
address@hidden T2H_EXTRA_HEAD
+
address@hidden
+# text inserted after <BODY ...>
+$T2H_AFTER_BODY_OPEN = '';
+
+#text inserted before </BODY>
+$T2H_PRE_BODY_CLOSE = '';
+
+# this is used in footer
+$T2H_ADDRESS = "by <I>$T2H_USER</I> " if $T2H_USER;
+$T2H_ADDRESS .= "on <I>$T2H_TODAY</I>";
+
+# this is added inside <HEAD></HEAD> after <TITLE> and some META NAME stuff
+# can be used for <style> <script>, <meta> tags
+$T2H_EXTRA_HEAD = '';
address@hidden example
+
+The default output into the @acronym{HTML} file.
address@hidden
+
+
+The following code is produced by
address@hidden
+
+Detailed information can be found at
address@hidden
+
address@hidden
+<HTML>
+$T2H_DOCTYPE
+<!-- Created on $T2H_TODAY by $THISPROG -->
+<!-- 
+$T2H_AUTHORS
+-->
+<HEAD>
+<TITLE>$longtitle</TITLE>
+
+<META NAME="description" CONTENT="$longtitle">
+<META NAME="keywords" CONTENT="$longtitle">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="$THISPROG">
+$T2H_EXTRA_HEAD
+</HEAD>
+
+<BODY $T2H_BODYTEXT>
+$T2H_AFTER_BODY_OPEN
address@hidden example
+
address@hidden --------------------------------------------------------
address@hidden CustHTMLHead,,CustHTMLAfterBody,CustHTML
address@hidden Head
address@hidden ========================================================
address@hidden InitFile, IFOs, CustHTML, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on the
address@hidden   initialization files.
address@hidden
address@hidden ========================================================
address@hidden Initialization file
address@hidden
address@hidden configure
address@hidden texi2html.init
address@hidden texi2htmlrc, global initialization
address@hidden .texi2htmlrc, user initialization
address@hidden
address@hidden sysconfdir
address@hidden init_file
address@hidden
+
+
address@hidden
+* InitFileBasics::     The basics about
+                         initialization files.
+* InitFileGlobal::     Global initialization file.
+* InitFileUser::       User initialization file.
+* InitFileLoad::       Loadable initialization file.
address@hidden menu
+
address@hidden --------------------------------------------------------
address@hidden InitFileBasics,InitFileGlobal,InitFile,InitFile
address@hidden The basics about init files
+
+Initialization options are read first from
address@hidden/usr/local/etc/texi2htmlrc} (the exact location being
+changeable with the @option{--sysconfdir=dir} option to the
address@hidden script), then from
address@hidden/.texi2htmlrc}, then any command-line options
+including @option{-init_file} option; with later settings
+overriding earlier ones.
+
+The default initialization options are defined in the
address@hidden file contained in the @b{Texi2html}
+distribution (which gets included near the beginning of the
address@hidden script that gets installed).
+
+To customize @file{texi2html} it is best if you copy the
+appropriate sections from the @file{texi2html.init}
+contents into an appropriate local initialization file,
+make the necessary changes there, and then have
address@hidden read this initialization file by one of
+the means described above.
+
+For an example on what you can produces with
address@hidden have a look at the following sites:
address@hidden://www.singular.uni-kl.de/Manual/html/}
+
+
address@hidden --------------------------------------------------------
address@hidden InitFileGlobal,InitFileUser,InitFileBasics,InitFile
address@hidden Global initialization file
address@hidden --------------------------------------------------------
address@hidden InitFileUser,InitFileLoad,InitFileGlobal,InitFile
address@hidden User initialization file
address@hidden --------------------------------------------------------
address@hidden InitFileLoad,,InitFileUser,InitFile
address@hidden Loadable initialization file
address@hidden init_file
address@hidden
+
address@hidden @ref{InitFile}
+
address@hidden --------------------------------------------------------
address@hidden IFOs, Options, InitFile, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on the
address@hidden   initialization files options.
address@hidden
address@hidden --------------------------------------------------------
address@hidden Initialization file options
+This section describes in detail all options that can be used
+only in the initialization file (@file{texi2html.init}),
+and cannot be specified on the command line.
+This means the only way to change those
+options is first to copy the original @file{texi2html.init}
+to e.g.@: @file{texi2html.init.myown} and make changes to fit
+your needs.
+
address@hidden
+* IFOnumber::             Number sectioning.
+* IFOmenu::               Avoid menu redundancy.
+* IFOCenterImage::        Center Image.
+* IFOExampleIndentCell::  Example Indent Cell.
+* IFOSampleIndentCell::   Sample Indent Cell.
+* IFOSmallFontSize::      Small Font Size.
+* IFOTopHeading::         Top Heading.
+* IFOIndexChapter::       Index Chapter.
+* IFOSplitIndex::         Split Index.
+* IFOhrefDirInsteadFile:: HREF Dir Instead file.
address@hidden menu
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOnumber, IFOmenu, IFOs, IFOs
address@hidden Number sections.
address@hidden T2H_NUMBER_SECTIONS
address@hidden T2H_NODE_NAME_IN_MENU
+if set, and @var{$T2H_NUMBER_SECTIONS} is set, then use node
+names in menu entries, instead of section names
+
address@hidden = 0;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOmenu, IFOCenterImage, IFOnumber, IFOs
address@hidden Avoid menu redundancy
address@hidden not sure if correct?
address@hidden menu, redundancy
address@hidden T2H_AVOID_MENU_REDUNDANCY
+If set, and menu entry equals menu description, then do not print
+menu description.  Likewise, if node name equals entry name, do
+not print entry name.
address@hidden = 1;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOCenterImage, IFOExampleIndentCell, IFOmenu, IFOs
address@hidden Center Image
address@hidden images, center
address@hidden T2H_CENTER_IMAGE
+if set, center @@image by default
+otherwise, do not center by default
address@hidden = 1;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOExampleIndentCell, IFOSampleIndentCell, IFOCenterImage, IFOs
address@hidden Example Indent Cell
address@hidden example, indentation
address@hidden T2H_EXAMPLE_INDENT_CELL
+used as indentation for block enclosing command
address@hidden@@example}, etc If not empty, must be enclosed in
address@hidden<td></td>}
address@hidden = '<td>&nbsp;</td>';
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOSampleIndentCell, IFOSmallFontSize, IFOExampleIndentCell, IFOs
address@hidden Small Example Indent
address@hidden example, small indent
address@hidden T2H_SMALL_EXAMPLE_INDENT_CELL
+same as above, only for @code{@@small}
+$T2H_SMALL_EXAMPLE_INDENT_CELL = "<td>&nbsp;</td>";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOSmallFontSize, IFOTopHeading, IFOSampleIndentCell, IFOs
address@hidden Small Font Size
address@hidden Font Size, small
address@hidden T2H_SMALL_FONT_SIZE
+# font size for @@small
+$T2H_SMALL_FONT_SIZE = "-1";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOTopHeading, IFOIndexChapter, IFOSmallFontSize, IFOs
address@hidden Top Heading
address@hidden T2H_TOP_HEADING
+if non-empty, and no @code{@@..heading} appeared in Top
address@hidden here should be a reference to Texinfo Manual
address@hidden @@heading ??
+node, then use this as header for top node/section,
+otherwise use value of  @code{@@settitle} or
address@hidden@@shorttitle} (in that order)
+$T2H_TOP_HEADING = "";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOIndexChapter, IFOSplitIndex, IFOTopHeading, IFOs
address@hidden Index Chapter
address@hidden Chapter, Index
address@hidden T2H_INDEX_CHAPTER
+if set, use this chapter for @strong{Index} button, else
+use first chapter whose name matches @strong{index} (case insensitive)
+$T2H_INDEX_CHAPTER = "";
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOSplitIndex, IFOhrefDirInsteadFile, IFOIndexChapter, IFOs
address@hidden Split Index
address@hidden Index, split
address@hidden T2H_SPLIT_INDEX
+if set and @var{$T2H_SPLIT} is set, then split index pages
+at the next letter after they have more than that many
+entries
+
+$T2H_SPLIT_INDEX = 100;
+
address@hidden +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
address@hidden IFOhrefDirInsteadFile, , IFOSplitIndex, IFOs
address@hidden HREF Dir Instead File.
address@hidden Not very good? :-/
address@hidden HREF Dir instead file
address@hidden T2H_HREF_DIR_INSTEAD_FILE
+if set (e.g., to @file{index.html}) replace @strong{HREF}'s
+to this file  (i.e., to @file{index.html}) by @file{./}
+
+$T2H_HREF_DIR_INSTEAD_FILE = "";
address@hidden ========================================================
address@hidden @include extfile.texi obsolete now, is not documented!
address@hidden ========================================================
address@hidden Options, Reference, IFOs, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on the
address@hidden   command line options.
address@hidden
address@hidden ========================================================
address@hidden Command Line Options
+
address@hidden
+* OptionDebug::               Debugging.
+* OptionDocType::             DocType (HTML)
+* OptionCheck::               Checking files.
+* OptionExpand::              Expanding info, tex areas etc.
+* OptionGlossary::            Glossary.
+* OptionInvisible::           Invisible.
+* OptionIso::                 Iso.
+* OptionInclude::             Include directories.
+* OptionTopFile::             Top File.
+* OptionTocFile::             Table of content File.
+* OptionFrames::              Frames.
+* OptionMenu::                Menus.
+* OptionNumber::              Number sections.
+* OptionSplit::               Splitting.
+* OptionSectionNavigation::   Navigation.
+* OptionSubDir::              Subdirectory.
+* OptionShortExt::            Short extension.
+* OptionPrefix::              Prefix.
+* OptionOutput::              Output.
+* OptionShortRef::            Short Ref.
+* OptionIndexSummary::        Index Summary.
+* OptionVerbose::             Verbose.
+* OptionLanguage::            Language.
+* OptionL2H::                 address@hidden
address@hidden menu
+
+
address@hidden --------------------------------------------------------
address@hidden OptionDebug, OptionDocType, Options, Options
address@hidden Debugging
address@hidden Debugging
address@hidden DEBUG_TOC
address@hidden DEBUG_INDEX
address@hidden DEBUG_BIB
address@hidden DEBUG_GLOSS
address@hidden DEBUG_DEF
address@hidden DEBUG_HTML
address@hidden DEBUG_USER
address@hidden DEBUG_L2H
address@hidden debug
+
address@hidden
+
+debugging: 0 --- no debugging; other values; see beginning
+of texi2html
+
address@hidden   =  1;
address@hidden =  2;
address@hidden   =  4;
address@hidden =  8;
address@hidden   = 16;
address@hidden  = 32;
address@hidden  = 64;
address@hidden   = 128;
+
address@hidden --------------------------------------------------------
address@hidden OptionDocType, OptionCheck, OptionDebug, Options
address@hidden DocType
address@hidden HTML, Doc Type
address@hidden doctype
address@hidden T2H_DOCTYPE
address@hidden
+
address@hidden
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
address@hidden example
+
address@hidden --------------------------------------------------------
address@hidden OptionCheck, OptionExpand, OptionDocType, Options
address@hidden Check
address@hidden Texinfo, checking
address@hidden check
address@hidden T2H_CHECK
address@hidden
+if set, only check files and give the list of all things
+that look like untranslated Texinfo commands
+
address@hidden --------------------------------------------------------
address@hidden OptionExpand, OptionGlossary, OptionCheck, Options
address@hidden Expand
address@hidden expand
address@hidden T2H_EXPAND
address@hidden
+if set to @strong{tex} (or, @strong{info}) expand
address@hidden@@iftex} and @code{@@tex} (or, @code{@@ifinfo})
+sections else, neither expand @code{@@iftex}, @code{@@tex},
+nor @code{@@ifinfo} sections
+
address@hidden $T2H_EXPAND = "info";
+
address@hidden --------------------------------------------------------
address@hidden OptionGlossary, OptionInvisible, OptionExpand, Options
address@hidden Glossary
address@hidden HTML, Glossary
address@hidden Texinfo, Glossary
address@hidden glossary
address@hidden T2H_USE_GLOSSARY
address@hidden
+if set, uses section named @strong{Footnotes} for glossary
+
address@hidden --------------------------------------------------------
address@hidden OptionInvisible, OptionIso, OptionGlossary, Options
address@hidden Invisible
address@hidden Mark, invisible
address@hidden invisible, Mark
address@hidden invisible
address@hidden T2H_INVISIBLE_MARK
address@hidden
address@hidden is the text used to create
+invisible destination anchors for index links (you can for
+instance use the @file{invisible.xbm} file shipped with
+this program). This is a workaround for a known bug of many
address@hidden browsers, including Netscape. For me, it
+works fine without it --- on the contrary: if there, it
+inserts space between headers and start of text (obachman
+3/99)
+
address@hidden
+$T2H_INVISIBLE_MARK = "";
+# $T2H_INVISIBLE_MARK = '&#160;';
address@hidden example
+
address@hidden --------------------------------------------------------
address@hidden OptionIso, OptionInclude, OptionInvisible, Options
address@hidden Iso
address@hidden ISO8859
address@hidden Copyright
address@hidden iso
address@hidden T2H_USE_ISO
address@hidden
+
+if set, ISO8859 characters are used for special symbols
+(like Copyright @address@hidden, etc)
+
+$T2H_USE_ISO = 0;
+
address@hidden --------------------------------------------------------
address@hidden OptionInclude, OptionTopFile, OptionIso, Options
address@hidden Include Directory
address@hidden Include directories
address@hidden I
address@hidden T2H_INCLUDE_DIRS
address@hidden
+
+list directories where @code{@@include} files are searched for
+(besides the directory of the doc file) additional
address@hidden args are add to this list.
+
+@@T2H_INCLUDE_DIRS = (".");
+
address@hidden --------------------------------------------------------
address@hidden OptionTopFile, OptionTocFile, OptionInclude, Options
address@hidden Top File
address@hidden Top Level file
address@hidden HTML, index.html
address@hidden top_file
address@hidden T2H_TOP_FILE
address@hidden
+uses file of this name for top-level file
+extension is manipulated appropriately, if necessary.
+If empty, @file{<basename of document>.html} is used.
+Typically, you would set this to @file{index.html}.
+
+$T2H_TOP_FILE = "";
+
address@hidden --------------------------------------------------------
address@hidden OptionTocFile, OptionFrames, OptionTopFile, Options
address@hidden Table Of content File
address@hidden Table of content file
address@hidden toc_file
address@hidden T2H_TOC_FILE
address@hidden
+uses file of this name for table of contents.  File extension
+is manipulated appropriately, if necessary. If empty,
address@hidden<basename of document>_toc.html} is used.
+
+$T2H_TOC_FILE = "";
+
address@hidden --------------------------------------------------------
address@hidden OptionFrames, OptionMenu, OptionTocFile, Options
address@hidden Frames
address@hidden HTML, frames
address@hidden HTML 4.0, frames
address@hidden frames
address@hidden T2H_FRAMES
address@hidden
+if set, output two additional files which use HTML 4.0
address@hidden
+
+$T2H_FRAMES = 0;
+
address@hidden --------------------------------------------------------
address@hidden OptionMenu, OptionNumber, OptionFrames, Options
address@hidden Menus
address@hidden HTML, menu
address@hidden Texinfo, menu
address@hidden menu
address@hidden nomenu
address@hidden T2H_SHOW_MENU
address@hidden or @option{-nomenu} if set, show the Texinfo
+menus
+
+$T2H_SHOW_MENU = 1;
+
address@hidden --------------------------------------------------------
address@hidden OptionNumber, OptionSplit, OptionMenu, Options
address@hidden Number sections
address@hidden Section numbering
address@hidden number
address@hidden nonumber
address@hidden T2H_NUMBER_SECTIONS
address@hidden @option{-nonumber}
+if set, number sections and show section names and numbers
+in references and menus
+
address@hidden Just think about it?
address@hidden @defvar $T2H_NUMBER_SECTIONS
address@hidden @c = 1;
address@hidden @end defvar
+
address@hidden --------------------------------------------------------
address@hidden OptionSplit, OptionSectionNavigation, OptionNumber, Options
address@hidden Split
address@hidden HTML, split
address@hidden File, split
address@hidden split
address@hidden T2H_SPLIT
address@hidden section|chapter|none}
+if set to @strong{section} (resp. @strong{chapter}) create one
address@hidden file per (sub)section (resp. chapter) and
+separate pages for Top, ToC, Overview, Index, Glossary,
+About.  Otherwise, create a monolithic @acronym{HTML} file that
+contains the whole document.
+
+#$T2H_SPLIT = 'section';
+$T2H_SPLIT = undef;
+
address@hidden --------------------------------------------------------
address@hidden OptionSectionNavigation, OptionSubDir, OptionSplit, Options
address@hidden Section navigation
address@hidden HTML, Navigation
address@hidden section_navigation
address@hidden no-section_navigation
address@hidden T2H_SECTION_NAVIGATION
address@hidden|
address@hidden
+
+if set, then navigation panels are printed at the beginning
+of each section and, possibly at the end (depending on
+whether or not there were more than 
address@hidden words on page). This is most useful
+if you do not want to have section navigation on
address@hidden chapter}
+
address@hidden @vindex T2H_SECTION_NAVIGATION
address@hidden @defvar $T2H_SECTION_NAVIGATION
address@hidden = 1;
address@hidden @end defvar
+
address@hidden --------------------------------------------------------
address@hidden OptionSubDir, OptionShortExt, OptionSectionNavigation, Options
address@hidden Subdirectory
address@hidden Subdirectory
address@hidden T2H_SUBDIR
address@hidden
+If set, then put result files in the specified directory.
+If not set, then result files are put into the current directory.
+
address@hidden #$T2H_SUBDIR = 'html';
address@hidden = undef;
+
address@hidden --------------------------------------------------------
address@hidden OptionShortExt, OptionPrefix, OptionSubDir, Options
address@hidden Short extension
address@hidden HTML, .htm extension
address@hidden HTML, .html extension
address@hidden extension, .html
address@hidden extension, .htm
address@hidden T2H_SHORTEXTN
address@hidden short_extn
address@hidden
+If this is set, then all @acronym{HTML} files will have extension
address@hidden instead of @file{.html}. This is helpful when
+shipping the document to DOS-based systems.
address@hidden = 0;
+
address@hidden --------------------------------------------------------
address@hidden OptionPrefix, OptionOutput, OptionShortExt, Options
address@hidden Prefix
address@hidden Prefix
address@hidden T2H_PREFIX
address@hidden prefix
address@hidden
+Set the output file prefix, prepended to all @file{.html},
address@hidden and @file{.pl} files.
+By default, this is the basename of the document
+
address@hidden = "";
+
address@hidden --------------------------------------------------------
address@hidden OptionOutput, OptionShortRef, OptionPrefix, Options
address@hidden Output filename
address@hidden Output filename
address@hidden Filename, output
address@hidden T2H_OUT
address@hidden o
address@hidden out_file
+
address@hidden filename}|@option{-out_file}
+If set, generate monolithic document output @acronym{HTML}
+into @file{filename}.
+
address@hidden --------------------------------------------------------
address@hidden OptionShortRef, OptionIndexSummary, OptionOutput, Options
address@hidden Short Cross References
address@hidden References, short
address@hidden sections without numbers
address@hidden T2H_SHORT_REF
address@hidden short_ref
address@hidden
+if set cross-references are given without section numbers
+
address@hidden --------------------------------------------------------
address@hidden OptionIndexSummary, OptionVerbose, OptionShortRef, Options
address@hidden Index Summary
address@hidden Index, Summary
address@hidden Summary Index
address@hidden HTML, Index
address@hidden T2H_IDX_SUMMARY
address@hidden idx_sum
address@hidden
+If value is set, then for each @code{@@prinindex $what}
address@hidden is created which contains lines of the
+form @strong{$key\t$ref} sorted alphabetically (case
+matters).
+
address@hidden --------------------------------------------------------
address@hidden OptionVerbose, OptionLanguage, OptionIndexSummary, Options
address@hidden Verbose output
address@hidden Output, verbose
address@hidden Verbose output
address@hidden Debugging, verbose output
address@hidden T2H_VERBOSE
address@hidden verbose
address@hidden
+if set, chatter about what we are doing.
+
address@hidden --------------------------------------------------------
address@hidden OptionLanguage, OptionL2H, OptionVerbose, Options
address@hidden Language Support
address@hidden Language Support
address@hidden Support different languages
address@hidden $T2H_LANG
address@hidden $T2H_WORDS
address@hidden lang
address@hidden
+For page titles, use
address@hidden>@address@hidden>@address@hidden as title. To add
+a new language, supply list of titles (see @var{$T2H_WORDS}),
+and use ISO 639 language codes (see e.g.@: perl module
address@hidden for definitions).
+
+If you don't give a @option{-lang} then we got it from the
+Texinfo source file (@@documentlanguage
address@hidden Put a table with the language codes here!
address@hidden Or better put a reference into the Texinfo
address@hidden Manual, which has a table of ISO 639-Codes.
address@hidden
address@hidden Currently the @xref etc. does not work with
address@hidden external documents, cause we don't know
address@hidden reference (anchor) value or there is no way
address@hidden to get it.
address@hidden The following reference does only work correctly
address@hidden in Info!!!
address@hidden,,,Texinfo}). If there is no
address@hidden@@documentlanguage} we use the default @code{en} for
+the language.
address@hidden
address@hidden put some information about Month names etc. here
address@hidden $MONTH_NAMES !!
address@hidden Supplemental should be a naming scheme for variables in
address@hidden different languages (MONTH_NAMES_DE etc.)
address@hidden --------------------------------------------------------
address@hidden OptionL2H, , OptionLanguage, Options
address@hidden address@hidden for @code{@@math} and @code{@@tex}
address@hidden address@hidden
address@hidden Conversion of @@math and @@tex
address@hidden @@tex
address@hidden @@math
address@hidden T2H_L2H
address@hidden l2h
address@hidden
+if set, uses @command{latex2html} for generation of math
+content.
+
address@hidden
+* OptionL2HL2H::    Where to find address@hidden
+* OptionL2HSkip::   Skip calling address@hidden
+* OptionL2Htmp::    Temporary files for address@hidden
address@hidden menu
+
address@hidden --------------------------------------------------------
address@hidden OptionL2HL2H, OptionL2HSkip, OptionL2H, OptionL2H
address@hidden Where to find @command{latex2html}
address@hidden location, address@hidden
address@hidden address@hidden, location
address@hidden T2H_L2H_L2H
address@hidden l2h_l2h
address@hidden
+name/location of @command{latex2html} program.
+
address@hidden --------------------------------------------------------
address@hidden OptionL2HSkip, OptionL2Htmp, OptionL2HL2H, OptionL2H
address@hidden Skip calling address@hidden
address@hidden address@hidden, skip calling
address@hidden T2H_L2H_SKIP
address@hidden l2h_skip
address@hidden
+If set, skips actual call to @command{latex2html}: tries to
+reuse previously generated content, instead.
+
address@hidden --------------------------------------------------------
address@hidden OptionL2Htmp, , OptionL2HSkip, OptionL2H
address@hidden Temporary files for address@hidden
address@hidden Temporary, address@hidden
address@hidden address@hidden, Temporary files
address@hidden T2H_L2H_TMP
address@hidden l2h_tmp
address@hidden
+If set, l2h uses this directory for temporary files.  The
+path leading to this directory may not contain a dot (i.e.,
+a @samp{.}); otherwise, l2h will fail.
address@hidden ========================================================
address@hidden Reference, Indexop, Options, Top
address@hidden
address@hidden This file is part of the ``Texinfo to HTML Converter'' manual
address@hidden which is part of the ``texi2html'' distribution.
address@hidden
address@hidden License:
address@hidden    Copyright (C) 1999, 2000  Free Software Foundation, Inc.
address@hidden
address@hidden    This program is free software; you can redistribute it
address@hidden    and/or modify it under the terms of the GNU General Public
address@hidden    License as published by the Free Software Foundation;
address@hidden    either version 2 of the License, or (at your option) any
address@hidden    later version.
address@hidden
address@hidden    This program is distributed in the hope that it will be
address@hidden    useful, but WITHOUT ANY WARRANTY; without even the implied
address@hidden    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
address@hidden    PURPOSE.  See the GNU General Public License for more
address@hidden    details.
address@hidden
address@hidden    You should have received a copy of the GNU General
address@hidden    Public License along with this program; if not, write to
address@hidden    the Free Software Foundation, Inc., 59 Temple Place, Suite
address@hidden    330, Boston, MA  02111-1307  USA
address@hidden
address@hidden
address@hidden Revisions:
address@hidden 
address@hidden
address@hidden Author:
address@hidden   Karl Heinz Marbaise <address@hidden>
address@hidden
address@hidden Description:
address@hidden   Here you can find the description on all
address@hidden   subs in the original Perl file.
address@hidden
address@hidden ========================================================
address@hidden Function Reference
+
address@hidden
+* Refptocframe::           Print ToC Frame.
+* Refpphead::              Print page head.
address@hidden menu
+
address@hidden Global variables:
address@hidden T2H_USER which is created throught main part
address@hidden (texi2html.pl)
address@hidden You can use it. (On Windows? On Unix ?)
address@hidden --------------------------------------------------------
address@hidden Refptocframe,Refpphead,,Reference
address@hidden Print ToC Frame
+
+
address@hidden T2H_DEFAULT_print_toc_frame (FileName)
address@hidden 1
+Description of the subroutine.
+What does it do? Which parameters it needs etc.
address@hidden defun
+
+
address@hidden --------------------------------------------------------
address@hidden Refpphead,,Refptocframe,Reference
address@hidden Print Page Head
address@hidden T2H_DEFAULT_print_page_head (FileName)
address@hidden 1
+Description of the subroutine.
+What does it do? Which parameters it needs etc.
address@hidden defun
address@hidden ========================================================
address@hidden commandline option index.
address@hidden Indexop, Indexvr, Reference, Top
address@hidden Indices
address@hidden Command Line Option Index
address@hidden op
address@hidden --------------------------------------------------------
address@hidden Indexvr, Indexcp, Indexop, Top
address@hidden Variable Index
address@hidden vr
address@hidden --------------------------------------------------------
address@hidden Indexcp, , Indexvr, Top
address@hidden Concept Index
address@hidden cp
address@hidden printindex init file options dito.
address@hidden concept index.
address@hidden

Index: coverage/delcomment.texi
===================================================================
RCS file: coverage/delcomment.texi
diff -N coverage/delcomment.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/delcomment.texi    2 Aug 2009 13:12:01 -0000       1.1
@@ -0,0 +1,8 @@
+\input texinfo
address@hidden delcomment.info
+
+ this is a comment.
+
+This line is the only output.
+
address@hidden

Index: coverage/res/delcomment/delcomment.1
===================================================================
RCS file: coverage/res/delcomment/delcomment.1
diff -N coverage/res/delcomment/delcomment.1

Index: coverage/res/delcomment/delcomment.2
===================================================================
RCS file: coverage/res/delcomment/delcomment.2
diff -N coverage/res/delcomment/delcomment.2

Index: coverage/res/delcomment/delcomment.html
===================================================================
RCS file: coverage/res/delcomment/delcomment.html
diff -N coverage/res/delcomment/delcomment.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res/delcomment/delcomment.html     2 Aug 2009 13:12:01 -0000       
1.1
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html>
+<!-- Created on a sunny day by texi2html
+texi2html was written by: 
+            Lionel Cons <address@hidden> (original author)
+            Karl Berry  <address@hidden>
+            Olaf Bachmann <address@hidden>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <address@hidden>
+-->
+<head>
+<title>Untitled Document</title>
+
+<meta name="description" content="Untitled Document">
+<meta name="keywords" content="Untitled Document">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" 
vlink="#800080" alink="#FF0000">
+
+
+
+<p>This line is the only output.
+</p>
+<hr size="1">
+<p>
+ <font size="-1">
+  This document was generated by <em>a tester</em> on <em>a sunny day</em> 
using <a href="http://www.nongnu.org/texi2html/";><em>texi2html</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>

Index: coverage/res/texi_comments/comments.texi.first
===================================================================
RCS file: coverage/res/texi_comments/comments.texi.first
diff -N coverage/res/texi_comments/comments.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res/texi_comments/comments.texi.first      2 Aug 2009 13:12:02 
-0000       1.1
@@ -0,0 +1,223 @@
+\input texinfo @c -*-texinfo-*-
address@hidden comments.info
+
address@hidden 
+be-low   
+  may-be to-morow 
+ }
+
address@hidden Top
address@hidden
address@hidden Comment like:
+
+Text line followed by a comment on the same line and another below @c comment
address@hidden comment
+Text line after the comment followed by a comment @comment c
+Text line after the text line followed by the comment.
+
+Comment at the end of the line @c comment
+
+Example with comments 2 lines
address@hidden 
+line @c comment
+second line @c comment
address@hidden example
+
+Example with comments 1 line
address@hidden
+line @c comment
address@hidden example
+
+No comments
address@hidden
+line 
address@hidden example
+
+The same but with oddfooting instead of comment:
+Text line followed by a comment on the same line and another below @oddfooting 
comment
address@hidden some text ignored
+Text line after the comment followed by a comment @oddfooting c
+Text line after the text line followed by the comment.
+
+@@pagesizes @pagesizes 200mm,150mm following @@pagesizes arg
+@@afourpaper @afourpaper on line following afourpaper
+@@smallbook @smallbook on line following smallbook
+@@headings @headings on line following headings
+@@oddfooting @oddfooting on line following oddfooting
+@@everyheading @everyheading on line following everyheading
+@@everyfooting @everyfooting on line following everyfooting
+@@evenheading @evenheading on line following evenheading
+@@evenfooting @evenfooting on line following evenfooting
+@@oddheading @oddheading on line following 
+@@need @need 0.1 on line following
+@@need @need 0.1 
+@@setchapternewpage @setchapternewpage on line following setchapternewpage
+@@raisesections @raisesections on line following raisesections
+@@lowersections @lowersections on line following lowersections
address@hidden @@kbdinputstyle @kbdinputstyle wrong arg on line following 
kbdinputstyle
+@@kbdinputstyle code @kbdinputstyle code something
+@@afourpaper @afourpaper on line following afourpaper
+@@afourlatex @afourlatex on line following afourlatex
+@@afourwide @afourwide on line following afourwide
+
address@hidden tex error: Use of \ doesn't match its definition.
+@@definfoenclose phoo,//,\\  
+//bar\\
+
+@@definfoenclose phi,:,:  
address@hidden this is required
+
+:bar:
+
address@hidden strong}
+
+
+(strong: is it really strong? :)
+
+Makeinfo ignore @@kbdinputstyle:
+
address@hidden code
+
address@hidden
+
address@hidden
address@hidden
address@hidden example
+
address@hidden ignore arg
+
+
+Commands doesn't accept anything after a non numerical arg on the line
+and ignore things after a numerical arg
+
+@@paragraphindent asis @paragraphindent asis
+@@paragraphindent 0 @paragraphindent 0
+@@paragraphindent none @paragraphindent none
+@@paragraphindent 4 @paragraphindent 4
+@@firstparagraphindent none @firstparagraphindent none
+@@exampleindent 6 @exampleindent 6 on line following exampleindent
+@@exampleindent 6 @exampleindent 6 
+@@footnotestyle @footnotestyle end 
+@@footnotestyle @footnotestyle separate 
+
+Special arg for documentencoding. makeinfo complains, not tex
+
address@hidden
+@@documentencoding @documentencoding bad encoding name
address@hidden ISO-8859-1
address@hidden accepts on or off
+@@frenchspacing @frenchspacing on
+@@frenchspacing @frenchspacing off
address@hidden accepts 10 or 11
+@@fonttextsize @fonttextsize 10
address@hidden @@fonttextsize @fonttextsize 11
address@hidden accept bottom and top
address@hidden tex keeps the line, makeinfo doesn't
+@@everyheadingmarks @everyheadingmarks bottom on line following 
everyheadingmarks
address@hidden accept false or true
address@hidden makeinfo don't care about the arg and remove the remaining of 
the line
address@hidden false
address@hidden 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
+
address@hidden true
address@hidden 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
+
+
address@hidden command removed
+
+And now finalout:
+Text line followed by finalout on the same line and another below @finalout
address@hidden
+Text line after the finalout followed by a fianlout @finalout
+Text line after the text line followed by the finalout.
+
+Test text after finalout
address@hidden a word after finalout
+Line after finalout
+
+@@page @page @@noindent @noindent @@refill @refill something
+
address@hidden     noindent at beginning of line
address@hidden  
+noindent on the preceding line
+  @noindent    noindent after space at beginning of line
address@hidden         page at beginning of line
address@hidden
+After page on it's own line.
+
+@@page @page   @@noindent @noindent    @@refill @refill @@novalidate 
@novalidate something
+
+@@contents @contents something
+
+
address@hidden special
+
+Only valid between iftex:
address@hidden @@vskip @vskip @@cropmarks @cropmarks
+Unknown ???
address@hidden @@fillbreak  @fillbreak eol
+
+@@exdent @exdent line after exdent
+
+And now sp:
+Text line followed by a comment on the same line and another below @sp 1
address@hidden 2
+Text line after the comment followed by a comment @sp 1
+Text line after the text line followed by the comment.
address@hidden 2 a number after sp
+
address@hidden @result
+
+A @click{} (result).
+
address@hidden invalid, makeinfo warns about @result needing braces
address@hidden others are also invalid
address@hidden @result on the same line
+
+A @click{} (result on the same line).
+
address@hidden @nocmd
+
+A @click{} (nocmd).
+
address@hidden something
+
+A @click{} (something).
+
+Menu:
address@hidden
+* node::
+* bidule::
+* bidule2::
+* undefined::
address@hidden menu
+
address@hidden node
address@hidden chapter
address@hidden
+* truc::
address@hidden menu
+
address@hidden truc
address@hidden section
+
+first @@contents @contents line following first content
+second @@contents @contents line following second content
+Third content on the following line on his own
address@hidden
+Line following contents
+
address@hidden bidule
address@hidden bidule
+
+@@shortcontents @shortcontents eol
+@@shortcontents @shortcontents eol
+@@summarycontents @summarycontents line following summarycontents
+
address@hidden bidule2
address@hidden last
+
address@hidden no ref ignored because of novalidate
address@hidden
+
address@hidden

Index: coverage/res/texi_delcomment/delcomment.2
===================================================================
RCS file: coverage/res/texi_delcomment/delcomment.2
diff -N coverage/res/texi_delcomment/delcomment.2

Index: coverage/res/texi_delcomment/delcomment.passfirst
===================================================================
RCS file: coverage/res/texi_delcomment/delcomment.passfirst
diff -N coverage/res/texi_delcomment/delcomment.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res/texi_delcomment/delcomment.passfirst   2 Aug 2009 13:12:02 
-0000       1.1
@@ -0,0 +1,6 @@
+delcomment.texi(,2) @setfilename delcomment.info
+delcomment.texi(,3) 
+delcomment.texi(,5) 
+delcomment.texi(,6) This line is the only output.
+delcomment.texi(,7) 
+delcomment.texi(,8) @bye

Index: coverage/res/texi_delcomment/delcomment.passtexi
===================================================================
RCS file: coverage/res/texi_delcomment/delcomment.passtexi
diff -N coverage/res/texi_delcomment/delcomment.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res/texi_delcomment/delcomment.passtexi    2 Aug 2009 13:12:02 
-0000       1.1
@@ -0,0 +1,6 @@
+delcomment.texi(,2) @setfilename delcomment.info
+delcomment.texi(,3) 
+delcomment.texi(,5) 
+delcomment.texi(,6) This line is the only output.
+delcomment.texi(,7) 
+delcomment.texi(,8) @bye

Index: coverage/res/texi_delcomment/delcomment.texi
===================================================================
RCS file: coverage/res/texi_delcomment/delcomment.texi
diff -N coverage/res/texi_delcomment/delcomment.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res/texi_delcomment/delcomment.texi        2 Aug 2009 13:12:02 
-0000       1.1
@@ -0,0 +1,7 @@
+\input texinfo
address@hidden delcomment.info
+
+
+This line is the only output.
+
address@hidden

Index: coverage/res/texi_delcomment/delcomment.texi.first
===================================================================
RCS file: coverage/res/texi_delcomment/delcomment.texi.first
diff -N coverage/res/texi_delcomment/delcomment.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res/texi_delcomment/delcomment.texi.first  2 Aug 2009 13:12:02 
-0000       1.1
@@ -0,0 +1,7 @@
+\input texinfo
address@hidden delcomment.info
+
+
+This line is the only output.
+
address@hidden

Index: coverage/res/texi_float/float.texi.first
===================================================================
RCS file: coverage/res/texi_float/float.texi.first
diff -N coverage/res/texi_float/float.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res/texi_float/float.texi.first    2 Aug 2009 13:12:02 -0000       
1.1
@@ -0,0 +1,311 @@
+\input texinfo.tex    @c -*-texinfo-*-
+
address@hidden float.info
+
address@hidden Top
address@hidden Test floats
+
+A list of floats at the begining.
address@hidden Text
+
+After the listoffloats.
+
address@hidden
+* chapter::
+* Unnumbered::
+* Chapter with unnumbsubsec::
+* list of floats::
address@hidden menu
+
address@hidden Text, text with a lot of features
+An example of float @enddots{}
+
address@hidden makeinfo --docbook segfaults
+An example.
address@hidden 
+example
address@hidden example
+
+A multitable.
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden truc @tab bidule
address@hidden multitable
+
+An index entry
address@hidden float example
+
+A table.
address@hidden @emph
address@hidden truc 
+line
address@hidden table
+
+An itemize.
address@hidden @minus
address@hidden truc 
+line
address@hidden itemize
+
+A ref.
address@hidden,xref Text with features}.
+A footnote.
address@hidden Text with features}.
+
address@hidden and @address@hidden@'address@hidden@address@hidden @sc{and} 
@verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.
+
address@hidden An example of float address@hidden
+An example.
address@hidden 
+example
address@hidden example
+
address@hidden in caption}
+
+A table.
address@hidden @emph
address@hidden truc 
+line
address@hidden table
+
+A multitable.
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden truc @tab bidule
address@hidden multitable
+An index entry
address@hidden float example in caption
+
+An itemize.
address@hidden @minus
address@hidden truc 
+line
address@hidden itemize
+
+A ref.
address@hidden,xref Text with features caption}.
+A footnote.
address@hidden Text with features caption}.
+
address@hidden and @address@hidden@'address@hidden@address@hidden @sc{and} 
@verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.
+}
+
address@hidden@TeX{} and @address@hidden@'address@hidden@address@hidden 
@sc{and} @verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.}
+
address@hidden float
+
+
address@hidden Text
+No label but caption and shortcaption.
+
address@hidden label}
address@hidden label}
address@hidden float
+
address@hidden ,label but no type
+No type but caption and shortcaption.
+
address@hidden type}
address@hidden type}
address@hidden float
+
+
address@hidden ,label but no type and no caption
+No type but label and no caption nor shortcaption.
+                                                                               
 
address@hidden float
+
+
address@hidden
+No label, no type, no caption no shortcaption.
+
address@hidden float
+
address@hidden
+No label, no type, but caption and shortcaption.
address@hidden label, no type, but caption and shortcaption.}
address@hidden label, no type, but caption and shortcaption.}
address@hidden float
+
+
+
address@hidden ,label but no type 2
+Second float with no type.
+
address@hidden type 2}
address@hidden type 2}
address@hidden float
+
address@hidden Warning, warning in top
+A warning
+
address@hidden warning}
address@hidden warning}
address@hidden float
+
address@hidden chapter
address@hidden A chapter
+
address@hidden Text, text in chapter
+Text in chapter
+
address@hidden in chapter}
address@hidden float
+
address@hidden Text, float with a lot of features and no shortcaption
+
+Float text of a float with a lot of features.
+
address@hidden An example of float address@hidden 2
+An example 2.
address@hidden 
+example 2
address@hidden example
+
+A table 2.
address@hidden @emph
address@hidden truc 2 
+line 2
address@hidden table
+
+A multitable 2.
address@hidden {truc} {bidule}
address@hidden truc 2 @tab bidule
address@hidden truc 2 @tab bidule
address@hidden multitable
+An index entry 2
address@hidden float example in caption 2
+
+An itemize 2.
address@hidden @minus
address@hidden truc 2
+line
address@hidden itemize
+
address@hidden in caption 2}
+
+A ref 2.
address@hidden,xref Text with features caption}.
+A footnote 2.
address@hidden Text with features caption 2}.
+
address@hidden and @address@hidden@'address@hidden@address@hidden @sc{and} 
@verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.
+}
+
address@hidden float
+
address@hidden th@'address@hidden, theoreme
+A th@'address@hidden
+
address@hidden th@'address@hidden
address@hidden float
+
address@hidden ,label but no type in chapter
+float with no type.
+
address@hidden type in chapter}
address@hidden type in chapter}
address@hidden float
+
address@hidden Warning, warning in chapter
+A warning
+
address@hidden warning in chapter}
address@hidden warning in chapter}
address@hidden float
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden A section
+
address@hidden Text, text in section
+
+A text in float no caption a label a type.
+
address@hidden float
+
address@hidden Unnumbered
address@hidden Unnumbered
+
address@hidden
+* Section within unnumbered::
address@hidden menu
address@hidden Text, unnumbered float
+unnum
address@hidden float}
address@hidden float}
address@hidden float
+
address@hidden ,label but no type in unnumbered
+float with no type.
+
address@hidden type in unnumbered}
address@hidden type in unnumbered}
address@hidden float
+
+
address@hidden Section within unnumbered
address@hidden Section within unnumbered
+
+
address@hidden Text, Section within unnumbered float
+Section within unnumbered
address@hidden within unnumbered}
address@hidden within unnumbered}
address@hidden float
+
address@hidden Chapter with unnumbsubsec
address@hidden Chapter with unnumbsubsec
+
address@hidden
+* unnumbered sec::
address@hidden menu
address@hidden Text, Chapter with subsec float
+Chap
address@hidden with subsec}
address@hidden with subsec}
address@hidden float
+
address@hidden unnumbered sec
address@hidden unnumbered sec
+
address@hidden Text, unnumbered sec float
+Chap
address@hidden sec float}
address@hidden sec float}
address@hidden float
+
address@hidden ,label but no type in unnumbered subsec in chapter
+float with no type.
+
address@hidden type in unnumbered subsec in chapter}
address@hidden type in unnumbered subsec in chapter}
address@hidden float
+
address@hidden list of floats
address@hidden list of floats
+
+See @ref{text in section}.
+And (@pxref{text in chapter}).
address@hidden with a lot of features}.
+
+And now a ref (without manual or printed manual) 
address@hidden with a lot of features, cross ref, title}.
+
+And now a ref (with manual without printed manual) 
address@hidden with a lot of features, cross ref, title, manual}.
+
+And now a ref (without manual with a printed manual) 
address@hidden with a lot of features, cross ref, title,, printed manual title}.
+
+A ref to float without type @ref{label but no type}.
+
address@hidden Text
address@hidden th@'address@hidden
+
address@hidden cp
+
address@hidden

Index: coverage/res/texi_formats_titles/formats_titles.texi.first
===================================================================
RCS file: coverage/res/texi_formats_titles/formats_titles.texi.first
diff -N coverage/res/texi_formats_titles/formats_titles.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res/texi_formats_titles/formats_titles.texi.first  2 Aug 2009 
13:12:02 -0000       1.1
@@ -0,0 +1,33 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden formats_titles.info
+
address@hidden Top
address@hidden Test formats with text before first item
+
address@hidden
+before first itemize
address@hidden item
address@hidden itemize
+
address@hidden
+before first enumerate
address@hidden enum
address@hidden enumerate
+
address@hidden @emph
+before first table
address@hidden tab
address@hidden table
+
address@hidden @asis
+before first vtable
address@hidden vtab
address@hidden vtable
+
address@hidden @columnfractions 0.5 0.5
+before first multitable
address@hidden item multit @tab tab multit
address@hidden multitable
+
address@hidden

Index: coverage/res/texi_formatting/formatting.texi.first
===================================================================
RCS file: coverage/res/texi_formatting/formatting.texi.first
diff -N coverage/res/texi_formatting/formatting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res/texi_formatting/formatting.texi.first  2 Aug 2009 13:12:02 
-0000       1.1
@@ -0,0 +1,2241 @@
+\input texinfo @c -*-texinfo-*-
address@hidden formatting.info
address@hidden Top
address@hidden Top section
+
address@hidden
+* chapter::               chapter
+
+Menu comment
+
+* description:chapter2.   Chapter 2
address@hidden menu
+
address@hidden mymacro
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden texi2html
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden ifset
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden texi2html
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
address@hidden ifset
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments @
+   more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
address@hidden texi2html
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
address@hidden ifset
+
+
address@hidden invalid texinfo
address@hidden invalid
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
address@hidden ifset
+
address@hidden macro
+
+
+
+Insertcopying in normal text
address@hidden
+
+Normal text
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments    more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\partial_t \eta (t) = g(\eta(t),\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
+
+
address@hidden invalid texinfo
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
+
+
+In example.
address@hidden
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments    more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\partial_t \eta (t) = g(\eta(t),\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
+
+
address@hidden invalid texinfo
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
+
address@hidden example
+
address@hidden t--ruc
address@hidden T--ruc
address@hidden .
address@hidden ?
address@hidden a
address@hidden t--ruc
address@hidden T--ruc
address@hidden .
address@hidden ?
address@hidden a
+
+
+cp
address@hidden cp
+
+fn
address@hidden fn
+
+vr
address@hidden vr
+
+ky
address@hidden ky
+
+pg
address@hidden pg
+
+tp
address@hidden tp
+
+
+
address@hidden chapter
address@hidden chapter
+
address@hidden footnote}
+
address@hidden
address@hidden 
+* address@hidden:: address@hidden
+
+Menu comment
+``simple-double--three---four----''@*
+
address@hidden menu
address@hidden format
+
address@hidden address@hidden
address@hidden A section
+
address@hidden
+* subsection:: 
address@hidden menu
+
address@hidden subsection
address@hidden subsection
+
address@hidden
+* subsubsection ``simple-double--three---four----''::
address@hidden menu
+
address@hidden
+
address@hidden subsubsection ``simple-double--three---four----''
address@hidden subsubsection ``simple-double--three---four----''
+
address@hidden chapter2
address@hidden chapter 2
+
address@hidden cp
address@hidden fn
+
address@hidden
address@hidden
address@hidden

Index: coverage/res/texi_imbrications/imbrications.texi.first
===================================================================
RCS file: coverage/res/texi_imbrications/imbrications.texi.first
diff -N coverage/res/texi_imbrications/imbrications.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res/texi_imbrications/imbrications.texi.first      2 Aug 2009 
13:12:02 -0000       1.1
@@ -0,0 +1,308 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden imbrications.info
+
address@hidden pg cp
+
address@hidden Top,First node,(dir)
address@hidden
address@hidden
+* First node::    node 1
+* name:Second node.    node 2
address@hidden menu
address@hidden * node in table::
address@hidden * node in example::
address@hidden * node in flushright::
address@hidden *node in defun -> bug
address@hidden First node
address@hidden first node chapter
+
address@hidden elem
+
address@hidden
+
+$$ 
+\chi^2 = \sum_{i=1}^N
+\left(y_i - (a + b x_i)
+\over \sigma_i\right)^2 
+$$
+
address@hidden tex
+
address@hidden Second node
address@hidden second
+
+Some text
+
address@hidden Function buffer-end flag
+A nice function
+
+makeinfo accepts a menu within defun but it isn't possible
+to follow it
+
address@hidden
+* node within defun menu::
address@hidden menu
address@hidden makeinfo accepts the following but cannot properly close defun
address@hidden @node node within defun menu
address@hidden @section within menu
+
+end of the function
address@hidden deffn
+
address@hidden node within defun menu
address@hidden the node is within menu
+
+Test @@option inside @@emph
+Foo @emph{emphasized and referring to @option{--some} option}.
+
+Table imbricated in code:@*
address@hidden
+in code
address@hidden @emph
address@hidden line
+text
address@hidden table
+}
+                           
+ref with uref within:@*                                                     
address@hidden(file)node, cross ref with uref 
@uref{href://http/myhost.com/index.html,uref1}, title with uref2 
@uref{href://http/myhost.com/index2.html,uref2}, info file with uref3 
@uref{href://http/myhost.com/index3.html,uref3}, printed manual with uref4 
@uref{href://http/myhost.com/index4.html,uref4}}
+
+footnote with code within:@*                                                   
                             
address@hidden in footnote  @code{par1
+                                                                               
 
+par2}}
+
+Refs in samp:@*
+
+Refs without samp: empty section name see @ref{other node}.
+With a chapter: @ref{Second node}.
+
+A ref in samp to a node with empty section name:
+see @address@hidden node}}.
+
+Same but to a regular node associated with a chapter:
+see @address@hidden node}}.
+
+code with table and example within:@*                                          
          
address@hidden
+in code
address@hidden @emph
address@hidden line
+in code and table
address@hidden
+  in example
address@hidden example
address@hidden table
+}
+
+
address@hidden @bullet
address@hidden item
address@hidden @node node in table
address@hidden @chapter in table
address@hidden table
+
address@hidden
address@hidden @node node in example
address@hidden @chapter example
+
+an example
address@hidden example
+
address@hidden other entry
+
address@hidden
address@hidden
+
+Some html <code>some code</code>.
+
address@hidden html
+after html in example
+
+
+two line breaks
+Tex doesn't like math in @@example
address@hidden
+
+$$ 
+\chi^2 = \sum_{i=1}^N
+\left(y_i - (a + b x_i)
+\over \sigma_i\right)^2 
+$$
+
address@hidden tex
address@hidden index in example
+
+Now a content within example
+
address@hidden
+
address@hidden cp
+printindex  works but cannot be followed in info, in TeX
+the result is quite strange.
+
+and now yes---now and ``so''.
+
address@hidden example
+after example and now yes---now and ``so''.
address@hidden
+
+is the text
+flushed right ?
address@hidden @node node in flushright
address@hidden @chapter flushright
+
+
address@hidden flushright
+
address@hidden
address@hidden
+text flushed  right and then example
+
+it should be flushed
address@hidden example
address@hidden flushright
+
address@hidden
address@hidden
+example and then text flushed  right
address@hidden flushright
address@hidden example
+
address@hidden
+simple displayed text
address@hidden display
+
+a display within example
address@hidden
+example
address@hidden
+display
address@hidden display
address@hidden example
+
address@hidden
+A cartouched text
address@hidden cartouche
+
+A cartouche within example
address@hidden
+example
address@hidden
+A cartouched text
address@hidden cartouche
address@hidden example
+
+An example with table, multitable, quotation, enumerate 
address@hidden
+a table within example
address@hidden @bullet
address@hidden item
+text
address@hidden table
+a multitable
address@hidden {a} {b}
address@hidden beginnin
+
address@hidden @dots{}
address@hidden 
+
+a new column                          no splitting ???????????????????         
                    
address@hidden multitable
+
+a menu
address@hidden
+* node menu::      a node in menu
+
+in menu comment
+html
address@hidden
+<cite>cite me</cite> a cite in html
address@hidden html
+
+A ref in samp in menu comment to a node with empty section name:
address@hidden@ref{other node}}.
+
+Same but to a regular node associated with a chapter:
address@hidden@ref{Second node}}.
+
+* a menu name:other node. 
+      description of other
+      node
+
address@hidden menu
+
+A quotation
address@hidden
+This is a pre
+quotation
+
address@hidden quotation
+
+Enumerate
+
address@hidden
address@hidden first item
address@hidden second  item
+
+still second
address@hidden enumerate
+
address@hidden example
+
+example with deff-like commands
address@hidden
+deffs
address@hidden {my def} args @var{arg} @dots{}
address@hidden {other def} no args
address@hidden {type} {name} and now the args
address@hidden {variables} variable-name
+
address@hidden {variables too} other-variable
+THis is the defvar
+
+A table within the def
address@hidden @asis
address@hidden item
+text
+
+more text
address@hidden second item
address@hidden table
+
+explanation
address@hidden defvar
address@hidden deffn
address@hidden defun
+
address@hidden example
+
+table within display within example
address@hidden
address@hidden
address@hidden @asis
address@hidden item
+Line
address@hidden table
address@hidden display
address@hidden example
+
+table within example within display
address@hidden
address@hidden
address@hidden @asis
address@hidden item
+Line
address@hidden table
address@hidden example
address@hidden display
+
address@hidden  node menu
address@hidden
address@hidden other node
address@hidden
+
+
address@hidden
address@hidden

Index: coverage/res/texi_pass0_macros/pass0_macros.texi.first
===================================================================
RCS file: coverage/res/texi_pass0_macros/pass0_macros.texi.first
diff -N coverage/res/texi_pass0_macros/pass0_macros.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res/texi_pass0_macros/pass0_macros.texi.first      2 Aug 2009 
13:12:02 -0000       1.1
@@ -0,0 +1,46 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top,First node,(dir)
address@hidden pass0 macro
address@hidden
+* First node::    node 1
address@hidden menu
+
address@hidden First node,,Top,Top
address@hidden first node chapter
+
+before syncodeindex @syncodeindex cp fn
+
+syncodeindex on its line
address@hidden cp fn
+line following syncodeindex
+
+One more thing following syncodeindex
address@hidden cp fn    truc
+line following syncodeindex cp fn   truc
+
+documentlanguage @documentlanguage  en  
+
+documentlanguage on its line
address@hidden  en  
+line following documentlanguage
+
+double documentlanguage on its line
address@hidden  en @documentlanguage  en  
+line following documentlanguage
+
address@hidden  en  after documentlanguage
+
+definedx truc
address@hidden truc
+after
+
+definedx chose   machin
address@hidden chose    machin 
+after
+
address@hidden index truc
address@hidden @choseindex index
address@hidden @machinindex machin
+
+Before bye @bye

Index: coverage/res_all/delcomment/delcomment.1
===================================================================
RCS file: coverage/res_all/delcomment/delcomment.1
diff -N coverage/res_all/delcomment/delcomment.1

Index: coverage/res_all/delcomment/delcomment.2
===================================================================
RCS file: coverage/res_all/delcomment/delcomment.2
diff -N coverage/res_all/delcomment/delcomment.2

Index: coverage/res_all/delcomment/delcomment.txt
===================================================================
RCS file: coverage/res_all/delcomment/delcomment.txt
diff -N coverage/res_all/delcomment/delcomment.txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_all/delcomment/delcomment.txt  2 Aug 2009 13:12:03 -0000       
1.1
@@ -0,0 +1,4 @@
+
+
+This line is the only output.
+

Index: coverage/res_all/texi_comments/comments.texi.first
===================================================================
RCS file: coverage/res_all/texi_comments/comments.texi.first
diff -N coverage/res_all/texi_comments/comments.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_all/texi_comments/comments.texi.first  2 Aug 2009 13:12:03 
-0000       1.1
@@ -0,0 +1,223 @@
+\input texinfo @c -*-texinfo-*-
address@hidden comments.info
+
address@hidden 
+be-low   
+  may-be to-morow 
+ }
+
address@hidden Top
address@hidden
address@hidden Comment like:
+
+Text line followed by a comment on the same line and another below @c comment
address@hidden comment
+Text line after the comment followed by a comment @comment c
+Text line after the text line followed by the comment.
+
+Comment at the end of the line @c comment
+
+Example with comments 2 lines
address@hidden 
+line @c comment
+second line @c comment
address@hidden example
+
+Example with comments 1 line
address@hidden
+line @c comment
address@hidden example
+
+No comments
address@hidden
+line 
address@hidden example
+
+The same but with oddfooting instead of comment:
+Text line followed by a comment on the same line and another below @oddfooting 
comment
address@hidden some text ignored
+Text line after the comment followed by a comment @oddfooting c
+Text line after the text line followed by the comment.
+
+@@pagesizes @pagesizes 200mm,150mm following @@pagesizes arg
+@@afourpaper @afourpaper on line following afourpaper
+@@smallbook @smallbook on line following smallbook
+@@headings @headings on line following headings
+@@oddfooting @oddfooting on line following oddfooting
+@@everyheading @everyheading on line following everyheading
+@@everyfooting @everyfooting on line following everyfooting
+@@evenheading @evenheading on line following evenheading
+@@evenfooting @evenfooting on line following evenfooting
+@@oddheading @oddheading on line following 
+@@need @need 0.1 on line following
+@@need @need 0.1 
+@@setchapternewpage @setchapternewpage on line following setchapternewpage
+@@raisesections @raisesections on line following raisesections
+@@lowersections @lowersections on line following lowersections
address@hidden @@kbdinputstyle @kbdinputstyle wrong arg on line following 
kbdinputstyle
+@@kbdinputstyle code @kbdinputstyle code something
+@@afourpaper @afourpaper on line following afourpaper
+@@afourlatex @afourlatex on line following afourlatex
+@@afourwide @afourwide on line following afourwide
+
address@hidden tex error: Use of \ doesn't match its definition.
+@@definfoenclose phoo,//,\\  
+//bar\\
+
+@@definfoenclose phi,:,:  
address@hidden this is required
+
+:bar:
+
address@hidden strong}
+
+
+(strong: is it really strong? :)
+
+Makeinfo ignore @@kbdinputstyle:
+
address@hidden code
+
address@hidden
+
address@hidden
address@hidden
address@hidden example
+
address@hidden ignore arg
+
+
+Commands doesn't accept anything after a non numerical arg on the line
+and ignore things after a numerical arg
+
+@@paragraphindent asis @paragraphindent asis
+@@paragraphindent 0 @paragraphindent 0
+@@paragraphindent none @paragraphindent none
+@@paragraphindent 4 @paragraphindent 4
+@@firstparagraphindent none @firstparagraphindent none
+@@exampleindent 6 @exampleindent 6 on line following exampleindent
+@@exampleindent 6 @exampleindent 6 
+@@footnotestyle @footnotestyle end 
+@@footnotestyle @footnotestyle separate 
+
+Special arg for documentencoding. makeinfo complains, not tex
+
address@hidden
+@@documentencoding @documentencoding bad encoding name
address@hidden ISO-8859-1
address@hidden accepts on or off
+@@frenchspacing @frenchspacing on
+@@frenchspacing @frenchspacing off
address@hidden accepts 10 or 11
+@@fonttextsize @fonttextsize 10
address@hidden @@fonttextsize @fonttextsize 11
address@hidden accept bottom and top
address@hidden tex keeps the line, makeinfo doesn't
+@@everyheadingmarks @everyheadingmarks bottom on line following 
everyheadingmarks
address@hidden accept false or true
address@hidden makeinfo don't care about the arg and remove the remaining of 
the line
address@hidden false
address@hidden 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
+
address@hidden true
address@hidden 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
+
+
address@hidden command removed
+
+And now finalout:
+Text line followed by finalout on the same line and another below @finalout
address@hidden
+Text line after the finalout followed by a fianlout @finalout
+Text line after the text line followed by the finalout.
+
+Test text after finalout
address@hidden a word after finalout
+Line after finalout
+
+@@page @page @@noindent @noindent @@refill @refill something
+
address@hidden     noindent at beginning of line
address@hidden  
+noindent on the preceding line
+  @noindent    noindent after space at beginning of line
address@hidden         page at beginning of line
address@hidden
+After page on it's own line.
+
+@@page @page   @@noindent @noindent    @@refill @refill @@novalidate 
@novalidate something
+
+@@contents @contents something
+
+
address@hidden special
+
+Only valid between iftex:
address@hidden @@vskip @vskip @@cropmarks @cropmarks
+Unknown ???
address@hidden @@fillbreak  @fillbreak eol
+
+@@exdent @exdent line after exdent
+
+And now sp:
+Text line followed by a comment on the same line and another below @sp 1
address@hidden 2
+Text line after the comment followed by a comment @sp 1
+Text line after the text line followed by the comment.
address@hidden 2 a number after sp
+
address@hidden @result
+
+A @click{} (result).
+
address@hidden invalid, makeinfo warns about @result needing braces
address@hidden others are also invalid
address@hidden @result on the same line
+
+A @click{} (result on the same line).
+
address@hidden @nocmd
+
+A @click{} (nocmd).
+
address@hidden something
+
+A @click{} (something).
+
+Menu:
address@hidden
+* node::
+* bidule::
+* bidule2::
+* undefined::
address@hidden menu
+
address@hidden node
address@hidden chapter
address@hidden
+* truc::
address@hidden menu
+
address@hidden truc
address@hidden section
+
+first @@contents @contents line following first content
+second @@contents @contents line following second content
+Third content on the following line on his own
address@hidden
+Line following contents
+
address@hidden bidule
address@hidden bidule
+
+@@shortcontents @shortcontents eol
+@@shortcontents @shortcontents eol
+@@summarycontents @summarycontents line following summarycontents
+
address@hidden bidule2
address@hidden last
+
address@hidden no ref ignored because of novalidate
address@hidden
+
address@hidden

Index: coverage/res_all/texi_delcomment/delcomment.2
===================================================================
RCS file: coverage/res_all/texi_delcomment/delcomment.2
diff -N coverage/res_all/texi_delcomment/delcomment.2

Index: coverage/res_all/texi_delcomment/delcomment.passfirst
===================================================================
RCS file: coverage/res_all/texi_delcomment/delcomment.passfirst
diff -N coverage/res_all/texi_delcomment/delcomment.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_all/texi_delcomment/delcomment.passfirst       2 Aug 2009 
13:12:03 -0000       1.1
@@ -0,0 +1,6 @@
+delcomment.texi(,2) @setfilename delcomment.info
+delcomment.texi(,3) 
+delcomment.texi(,5) 
+delcomment.texi(,6) This line is the only output.
+delcomment.texi(,7) 
+delcomment.texi(,8) @bye

Index: coverage/res_all/texi_delcomment/delcomment.passtexi
===================================================================
RCS file: coverage/res_all/texi_delcomment/delcomment.passtexi
diff -N coverage/res_all/texi_delcomment/delcomment.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_all/texi_delcomment/delcomment.passtexi        2 Aug 2009 
13:12:03 -0000       1.1
@@ -0,0 +1,6 @@
+delcomment.texi(,2) @setfilename delcomment.info
+delcomment.texi(,3) 
+delcomment.texi(,5) 
+delcomment.texi(,6) This line is the only output.
+delcomment.texi(,7) 
+delcomment.texi(,8) @bye

Index: coverage/res_all/texi_delcomment/delcomment.texi
===================================================================
RCS file: coverage/res_all/texi_delcomment/delcomment.texi
diff -N coverage/res_all/texi_delcomment/delcomment.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_all/texi_delcomment/delcomment.texi    2 Aug 2009 13:12:03 
-0000       1.1
@@ -0,0 +1,7 @@
+\input texinfo
address@hidden delcomment.info
+
+
+This line is the only output.
+
address@hidden

Index: coverage/res_all/texi_delcomment/delcomment.texi.first
===================================================================
RCS file: coverage/res_all/texi_delcomment/delcomment.texi.first
diff -N coverage/res_all/texi_delcomment/delcomment.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_all/texi_delcomment/delcomment.texi.first      2 Aug 2009 
13:12:03 -0000       1.1
@@ -0,0 +1,7 @@
+\input texinfo
address@hidden delcomment.info
+
+
+This line is the only output.
+
address@hidden

Index: coverage/res_all/texi_float/float.texi.first
===================================================================
RCS file: coverage/res_all/texi_float/float.texi.first
diff -N coverage/res_all/texi_float/float.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_all/texi_float/float.texi.first        2 Aug 2009 13:12:03 
-0000       1.1
@@ -0,0 +1,311 @@
+\input texinfo.tex    @c -*-texinfo-*-
+
address@hidden float.info
+
address@hidden Top
address@hidden Test floats
+
+A list of floats at the begining.
address@hidden Text
+
+After the listoffloats.
+
address@hidden
+* chapter::
+* Unnumbered::
+* Chapter with unnumbsubsec::
+* list of floats::
address@hidden menu
+
address@hidden Text, text with a lot of features
+An example of float @enddots{}
+
address@hidden makeinfo --docbook segfaults
+An example.
address@hidden 
+example
address@hidden example
+
+A multitable.
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden truc @tab bidule
address@hidden multitable
+
+An index entry
address@hidden float example
+
+A table.
address@hidden @emph
address@hidden truc 
+line
address@hidden table
+
+An itemize.
address@hidden @minus
address@hidden truc 
+line
address@hidden itemize
+
+A ref.
address@hidden,xref Text with features}.
+A footnote.
address@hidden Text with features}.
+
address@hidden and @address@hidden@'address@hidden@address@hidden @sc{and} 
@verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.
+
address@hidden An example of float address@hidden
+An example.
address@hidden 
+example
address@hidden example
+
address@hidden in caption}
+
+A table.
address@hidden @emph
address@hidden truc 
+line
address@hidden table
+
+A multitable.
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden truc @tab bidule
address@hidden multitable
+An index entry
address@hidden float example in caption
+
+An itemize.
address@hidden @minus
address@hidden truc 
+line
address@hidden itemize
+
+A ref.
address@hidden,xref Text with features caption}.
+A footnote.
address@hidden Text with features caption}.
+
address@hidden and @address@hidden@'address@hidden@address@hidden @sc{and} 
@verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.
+}
+
address@hidden@TeX{} and @address@hidden@'address@hidden@address@hidden 
@sc{and} @verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.}
+
address@hidden float
+
+
address@hidden Text
+No label but caption and shortcaption.
+
address@hidden label}
address@hidden label}
address@hidden float
+
address@hidden ,label but no type
+No type but caption and shortcaption.
+
address@hidden type}
address@hidden type}
address@hidden float
+
+
address@hidden ,label but no type and no caption
+No type but label and no caption nor shortcaption.
+                                                                               
 
address@hidden float
+
+
address@hidden
+No label, no type, no caption no shortcaption.
+
address@hidden float
+
address@hidden
+No label, no type, but caption and shortcaption.
address@hidden label, no type, but caption and shortcaption.}
address@hidden label, no type, but caption and shortcaption.}
address@hidden float
+
+
+
address@hidden ,label but no type 2
+Second float with no type.
+
address@hidden type 2}
address@hidden type 2}
address@hidden float
+
address@hidden Warning, warning in top
+A warning
+
address@hidden warning}
address@hidden warning}
address@hidden float
+
address@hidden chapter
address@hidden A chapter
+
address@hidden Text, text in chapter
+Text in chapter
+
address@hidden in chapter}
address@hidden float
+
address@hidden Text, float with a lot of features and no shortcaption
+
+Float text of a float with a lot of features.
+
address@hidden An example of float address@hidden 2
+An example 2.
address@hidden 
+example 2
address@hidden example
+
+A table 2.
address@hidden @emph
address@hidden truc 2 
+line 2
address@hidden table
+
+A multitable 2.
address@hidden {truc} {bidule}
address@hidden truc 2 @tab bidule
address@hidden truc 2 @tab bidule
address@hidden multitable
+An index entry 2
address@hidden float example in caption 2
+
+An itemize 2.
address@hidden @minus
address@hidden truc 2
+line
address@hidden itemize
+
address@hidden in caption 2}
+
+A ref 2.
address@hidden,xref Text with features caption}.
+A footnote 2.
address@hidden Text with features caption 2}.
+
address@hidden and @address@hidden@'address@hidden@address@hidden @sc{and} 
@verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.
+}
+
address@hidden float
+
address@hidden th@'address@hidden, theoreme
+A th@'address@hidden
+
address@hidden th@'address@hidden
address@hidden float
+
address@hidden ,label but no type in chapter
+float with no type.
+
address@hidden type in chapter}
address@hidden type in chapter}
address@hidden float
+
address@hidden Warning, warning in chapter
+A warning
+
address@hidden warning in chapter}
address@hidden warning in chapter}
address@hidden float
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden A section
+
address@hidden Text, text in section
+
+A text in float no caption a label a type.
+
address@hidden float
+
address@hidden Unnumbered
address@hidden Unnumbered
+
address@hidden
+* Section within unnumbered::
address@hidden menu
address@hidden Text, unnumbered float
+unnum
address@hidden float}
address@hidden float}
address@hidden float
+
address@hidden ,label but no type in unnumbered
+float with no type.
+
address@hidden type in unnumbered}
address@hidden type in unnumbered}
address@hidden float
+
+
address@hidden Section within unnumbered
address@hidden Section within unnumbered
+
+
address@hidden Text, Section within unnumbered float
+Section within unnumbered
address@hidden within unnumbered}
address@hidden within unnumbered}
address@hidden float
+
address@hidden Chapter with unnumbsubsec
address@hidden Chapter with unnumbsubsec
+
address@hidden
+* unnumbered sec::
address@hidden menu
address@hidden Text, Chapter with subsec float
+Chap
address@hidden with subsec}
address@hidden with subsec}
address@hidden float
+
address@hidden unnumbered sec
address@hidden unnumbered sec
+
address@hidden Text, unnumbered sec float
+Chap
address@hidden sec float}
address@hidden sec float}
address@hidden float
+
address@hidden ,label but no type in unnumbered subsec in chapter
+float with no type.
+
address@hidden type in unnumbered subsec in chapter}
address@hidden type in unnumbered subsec in chapter}
address@hidden float
+
address@hidden list of floats
address@hidden list of floats
+
+See @ref{text in section}.
+And (@pxref{text in chapter}).
address@hidden with a lot of features}.
+
+And now a ref (without manual or printed manual) 
address@hidden with a lot of features, cross ref, title}.
+
+And now a ref (with manual without printed manual) 
address@hidden with a lot of features, cross ref, title, manual}.
+
+And now a ref (without manual with a printed manual) 
address@hidden with a lot of features, cross ref, title,, printed manual title}.
+
+A ref to float without type @ref{label but no type}.
+
address@hidden Text
address@hidden th@'address@hidden
+
address@hidden cp
+
address@hidden

Index: coverage/res_all/texi_formats_titles/formats_titles.texi.first
===================================================================
RCS file: coverage/res_all/texi_formats_titles/formats_titles.texi.first
diff -N coverage/res_all/texi_formats_titles/formats_titles.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_all/texi_formats_titles/formats_titles.texi.first      2 Aug 
2009 13:12:03 -0000       1.1
@@ -0,0 +1,33 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden formats_titles.info
+
address@hidden Top
address@hidden Test formats with text before first item
+
address@hidden
+before first itemize
address@hidden item
address@hidden itemize
+
address@hidden
+before first enumerate
address@hidden enum
address@hidden enumerate
+
address@hidden @emph
+before first table
address@hidden tab
address@hidden table
+
address@hidden @asis
+before first vtable
address@hidden vtab
address@hidden vtable
+
address@hidden @columnfractions 0.5 0.5
+before first multitable
address@hidden item multit @tab tab multit
address@hidden multitable
+
address@hidden

Index: coverage/res_all/texi_formatting/formatting.texi.first
===================================================================
RCS file: coverage/res_all/texi_formatting/formatting.texi.first
diff -N coverage/res_all/texi_formatting/formatting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_all/texi_formatting/formatting.texi.first      2 Aug 2009 
13:12:04 -0000       1.1
@@ -0,0 +1,2241 @@
+\input texinfo @c -*-texinfo-*-
address@hidden formatting.info
address@hidden Top
address@hidden Top section
+
address@hidden
+* chapter::               chapter
+
+Menu comment
+
+* description:chapter2.   Chapter 2
address@hidden menu
+
address@hidden mymacro
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden texi2html
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden ifset
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden texi2html
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
address@hidden ifset
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments @
+   more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
address@hidden texi2html
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
address@hidden ifset
+
+
address@hidden invalid texinfo
address@hidden invalid
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
address@hidden ifset
+
address@hidden macro
+
+
+
+Insertcopying in normal text
address@hidden
+
+Normal text
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments    more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\partial_t \eta (t) = g(\eta(t),\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
+
+
address@hidden invalid texinfo
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
+
+
+In example.
address@hidden
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments    more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\partial_t \eta (t) = g(\eta(t),\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
+
+
address@hidden invalid texinfo
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
+
address@hidden example
+
address@hidden t--ruc
address@hidden T--ruc
address@hidden .
address@hidden ?
address@hidden a
address@hidden t--ruc
address@hidden T--ruc
address@hidden .
address@hidden ?
address@hidden a
+
+
+cp
address@hidden cp
+
+fn
address@hidden fn
+
+vr
address@hidden vr
+
+ky
address@hidden ky
+
+pg
address@hidden pg
+
+tp
address@hidden tp
+
+
+
address@hidden chapter
address@hidden chapter
+
address@hidden footnote}
+
address@hidden
address@hidden 
+* address@hidden:: address@hidden
+
+Menu comment
+``simple-double--three---four----''@*
+
address@hidden menu
address@hidden format
+
address@hidden address@hidden
address@hidden A section
+
address@hidden
+* subsection:: 
address@hidden menu
+
address@hidden subsection
address@hidden subsection
+
address@hidden
+* subsubsection ``simple-double--three---four----''::
address@hidden menu
+
address@hidden
+
address@hidden subsubsection ``simple-double--three---four----''
address@hidden subsubsection ``simple-double--three---four----''
+
address@hidden chapter2
address@hidden chapter 2
+
address@hidden cp
address@hidden fn
+
address@hidden
address@hidden
address@hidden

Index: coverage/res_all/texi_imbrications/imbrications.texi.first
===================================================================
RCS file: coverage/res_all/texi_imbrications/imbrications.texi.first
diff -N coverage/res_all/texi_imbrications/imbrications.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_all/texi_imbrications/imbrications.texi.first  2 Aug 2009 
13:12:04 -0000       1.1
@@ -0,0 +1,308 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden imbrications.info
+
address@hidden pg cp
+
address@hidden Top,First node,(dir)
address@hidden
address@hidden
+* First node::    node 1
+* name:Second node.    node 2
address@hidden menu
address@hidden * node in table::
address@hidden * node in example::
address@hidden * node in flushright::
address@hidden *node in defun -> bug
address@hidden First node
address@hidden first node chapter
+
address@hidden elem
+
address@hidden
+
+$$ 
+\chi^2 = \sum_{i=1}^N
+\left(y_i - (a + b x_i)
+\over \sigma_i\right)^2 
+$$
+
address@hidden tex
+
address@hidden Second node
address@hidden second
+
+Some text
+
address@hidden Function buffer-end flag
+A nice function
+
+makeinfo accepts a menu within defun but it isn't possible
+to follow it
+
address@hidden
+* node within defun menu::
address@hidden menu
address@hidden makeinfo accepts the following but cannot properly close defun
address@hidden @node node within defun menu
address@hidden @section within menu
+
+end of the function
address@hidden deffn
+
address@hidden node within defun menu
address@hidden the node is within menu
+
+Test @@option inside @@emph
+Foo @emph{emphasized and referring to @option{--some} option}.
+
+Table imbricated in code:@*
address@hidden
+in code
address@hidden @emph
address@hidden line
+text
address@hidden table
+}
+                           
+ref with uref within:@*                                                     
address@hidden(file)node, cross ref with uref 
@uref{href://http/myhost.com/index.html,uref1}, title with uref2 
@uref{href://http/myhost.com/index2.html,uref2}, info file with uref3 
@uref{href://http/myhost.com/index3.html,uref3}, printed manual with uref4 
@uref{href://http/myhost.com/index4.html,uref4}}
+
+footnote with code within:@*                                                   
                             
address@hidden in footnote  @code{par1
+                                                                               
 
+par2}}
+
+Refs in samp:@*
+
+Refs without samp: empty section name see @ref{other node}.
+With a chapter: @ref{Second node}.
+
+A ref in samp to a node with empty section name:
+see @address@hidden node}}.
+
+Same but to a regular node associated with a chapter:
+see @address@hidden node}}.
+
+code with table and example within:@*                                          
          
address@hidden
+in code
address@hidden @emph
address@hidden line
+in code and table
address@hidden
+  in example
address@hidden example
address@hidden table
+}
+
+
address@hidden @bullet
address@hidden item
address@hidden @node node in table
address@hidden @chapter in table
address@hidden table
+
address@hidden
address@hidden @node node in example
address@hidden @chapter example
+
+an example
address@hidden example
+
address@hidden other entry
+
address@hidden
address@hidden
+
+Some html <code>some code</code>.
+
address@hidden html
+after html in example
+
+
+two line breaks
+Tex doesn't like math in @@example
address@hidden
+
+$$ 
+\chi^2 = \sum_{i=1}^N
+\left(y_i - (a + b x_i)
+\over \sigma_i\right)^2 
+$$
+
address@hidden tex
address@hidden index in example
+
+Now a content within example
+
address@hidden
+
address@hidden cp
+printindex  works but cannot be followed in info, in TeX
+the result is quite strange.
+
+and now yes---now and ``so''.
+
address@hidden example
+after example and now yes---now and ``so''.
address@hidden
+
+is the text
+flushed right ?
address@hidden @node node in flushright
address@hidden @chapter flushright
+
+
address@hidden flushright
+
address@hidden
address@hidden
+text flushed  right and then example
+
+it should be flushed
address@hidden example
address@hidden flushright
+
address@hidden
address@hidden
+example and then text flushed  right
address@hidden flushright
address@hidden example
+
address@hidden
+simple displayed text
address@hidden display
+
+a display within example
address@hidden
+example
address@hidden
+display
address@hidden display
address@hidden example
+
address@hidden
+A cartouched text
address@hidden cartouche
+
+A cartouche within example
address@hidden
+example
address@hidden
+A cartouched text
address@hidden cartouche
address@hidden example
+
+An example with table, multitable, quotation, enumerate 
address@hidden
+a table within example
address@hidden @bullet
address@hidden item
+text
address@hidden table
+a multitable
address@hidden {a} {b}
address@hidden beginnin
+
address@hidden @dots{}
address@hidden 
+
+a new column                          no splitting ???????????????????         
                    
address@hidden multitable
+
+a menu
address@hidden
+* node menu::      a node in menu
+
+in menu comment
+html
address@hidden
+<cite>cite me</cite> a cite in html
address@hidden html
+
+A ref in samp in menu comment to a node with empty section name:
address@hidden@ref{other node}}.
+
+Same but to a regular node associated with a chapter:
address@hidden@ref{Second node}}.
+
+* a menu name:other node. 
+      description of other
+      node
+
address@hidden menu
+
+A quotation
address@hidden
+This is a pre
+quotation
+
address@hidden quotation
+
+Enumerate
+
address@hidden
address@hidden first item
address@hidden second  item
+
+still second
address@hidden enumerate
+
address@hidden example
+
+example with deff-like commands
address@hidden
+deffs
address@hidden {my def} args @var{arg} @dots{}
address@hidden {other def} no args
address@hidden {type} {name} and now the args
address@hidden {variables} variable-name
+
address@hidden {variables too} other-variable
+THis is the defvar
+
+A table within the def
address@hidden @asis
address@hidden item
+text
+
+more text
address@hidden second item
address@hidden table
+
+explanation
address@hidden defvar
address@hidden deffn
address@hidden defun
+
address@hidden example
+
+table within display within example
address@hidden
address@hidden
address@hidden @asis
address@hidden item
+Line
address@hidden table
address@hidden display
address@hidden example
+
+table within example within display
address@hidden
address@hidden
address@hidden @asis
address@hidden item
+Line
address@hidden table
address@hidden example
address@hidden display
+
address@hidden  node menu
address@hidden
address@hidden other node
address@hidden
+
+
address@hidden
address@hidden

Index: coverage/res_all/texi_pass0_macros/pass0_macros.texi.first
===================================================================
RCS file: coverage/res_all/texi_pass0_macros/pass0_macros.texi.first
diff -N coverage/res_all/texi_pass0_macros/pass0_macros.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_all/texi_pass0_macros/pass0_macros.texi.first  2 Aug 2009 
13:12:04 -0000       1.1
@@ -0,0 +1,46 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top,First node,(dir)
address@hidden pass0 macro
address@hidden
+* First node::    node 1
address@hidden menu
+
address@hidden First node,,Top,Top
address@hidden first node chapter
+
+before syncodeindex @syncodeindex cp fn
+
+syncodeindex on its line
address@hidden cp fn
+line following syncodeindex
+
+One more thing following syncodeindex
address@hidden cp fn    truc
+line following syncodeindex cp fn   truc
+
+documentlanguage @documentlanguage  en  
+
+documentlanguage on its line
address@hidden  en  
+line following documentlanguage
+
+double documentlanguage on its line
address@hidden  en @documentlanguage  en  
+line following documentlanguage
+
address@hidden  en  after documentlanguage
+
+definedx truc
address@hidden truc
+after
+
+definedx chose   machin
address@hidden chose    machin 
+after
+
address@hidden index truc
address@hidden @choseindex index
address@hidden @machinindex machin
+
+Before bye @bye

Index: coverage/res_info/delcomment/delcomment.1
===================================================================
RCS file: coverage/res_info/delcomment/delcomment.1
diff -N coverage/res_info/delcomment/delcomment.1

Index: coverage/res_info/delcomment/delcomment.2
===================================================================
RCS file: coverage/res_info/delcomment/delcomment.2
diff -N coverage/res_info/delcomment/delcomment.2
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/delcomment/delcomment.2   2 Aug 2009 13:12:04 -0000       
1.1
@@ -0,0 +1 @@
+Document without nodes.

Index: coverage/res_info/delcomment/delcomment.info
===================================================================
RCS file: coverage/res_info/delcomment/delcomment.info
diff -N coverage/res_info/delcomment/delcomment.info
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/delcomment/delcomment.info        2 Aug 2009 13:12:04 
-0000       1.1
@@ -0,0 +1,5 @@
+This is delcomment.info, produced by makeinfo version 4.13 from
+delcomment.texi.
+
+This line is the only output.
+

Index: coverage/res_info/texi_comments/comments.texi.first
===================================================================
RCS file: coverage/res_info/texi_comments/comments.texi.first
diff -N coverage/res_info/texi_comments/comments.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/texi_comments/comments.texi.first 2 Aug 2009 13:12:05 
-0000       1.1
@@ -0,0 +1,223 @@
+\input texinfo @c -*-texinfo-*-
address@hidden comments.info
+
address@hidden 
+be-low   
+  may-be to-morow 
+ }
+
address@hidden Top
address@hidden
address@hidden Comment like:
+
+Text line followed by a comment on the same line and another below @c comment
address@hidden comment
+Text line after the comment followed by a comment @comment c
+Text line after the text line followed by the comment.
+
+Comment at the end of the line @c comment
+
+Example with comments 2 lines
address@hidden 
+line @c comment
+second line @c comment
address@hidden example
+
+Example with comments 1 line
address@hidden
+line @c comment
address@hidden example
+
+No comments
address@hidden
+line 
address@hidden example
+
+The same but with oddfooting instead of comment:
+Text line followed by a comment on the same line and another below @oddfooting 
comment
address@hidden some text ignored
+Text line after the comment followed by a comment @oddfooting c
+Text line after the text line followed by the comment.
+
+@@pagesizes @pagesizes 200mm,150mm following @@pagesizes arg
+@@afourpaper @afourpaper on line following afourpaper
+@@smallbook @smallbook on line following smallbook
+@@headings @headings on line following headings
+@@oddfooting @oddfooting on line following oddfooting
+@@everyheading @everyheading on line following everyheading
+@@everyfooting @everyfooting on line following everyfooting
+@@evenheading @evenheading on line following evenheading
+@@evenfooting @evenfooting on line following evenfooting
+@@oddheading @oddheading on line following 
+@@need @need 0.1 on line following
+@@need @need 0.1 
+@@setchapternewpage @setchapternewpage on line following setchapternewpage
+@@raisesections @raisesections on line following raisesections
+@@lowersections @lowersections on line following lowersections
address@hidden @@kbdinputstyle @kbdinputstyle wrong arg on line following 
kbdinputstyle
+@@kbdinputstyle code @kbdinputstyle code something
+@@afourpaper @afourpaper on line following afourpaper
+@@afourlatex @afourlatex on line following afourlatex
+@@afourwide @afourwide on line following afourwide
+
address@hidden tex error: Use of \ doesn't match its definition.
+@@definfoenclose phoo,//,\\  
+//bar\\
+
+@@definfoenclose phi,:,:  
address@hidden this is required
+
+:bar:
+
address@hidden strong}
+
+
+(strong: is it really strong? :)
+
+Makeinfo ignore @@kbdinputstyle:
+
address@hidden code
+
address@hidden
+
address@hidden
address@hidden
address@hidden example
+
address@hidden ignore arg
+
+
+Commands doesn't accept anything after a non numerical arg on the line
+and ignore things after a numerical arg
+
+@@paragraphindent asis @paragraphindent asis
+@@paragraphindent 0 @paragraphindent 0
+@@paragraphindent none @paragraphindent none
+@@paragraphindent 4 @paragraphindent 4
+@@firstparagraphindent none @firstparagraphindent none
+@@exampleindent 6 @exampleindent 6 on line following exampleindent
+@@exampleindent 6 @exampleindent 6 
+@@footnotestyle @footnotestyle end 
+@@footnotestyle @footnotestyle separate 
+
+Special arg for documentencoding. makeinfo complains, not tex
+
address@hidden
+@@documentencoding @documentencoding bad encoding name
address@hidden ISO-8859-1
address@hidden accepts on or off
+@@frenchspacing @frenchspacing on
+@@frenchspacing @frenchspacing off
address@hidden accepts 10 or 11
+@@fonttextsize @fonttextsize 10
address@hidden @@fonttextsize @fonttextsize 11
address@hidden accept bottom and top
address@hidden tex keeps the line, makeinfo doesn't
+@@everyheadingmarks @everyheadingmarks bottom on line following 
everyheadingmarks
address@hidden accept false or true
address@hidden makeinfo don't care about the arg and remove the remaining of 
the line
address@hidden false
address@hidden 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
+
address@hidden true
address@hidden 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
+
+
address@hidden command removed
+
+And now finalout:
+Text line followed by finalout on the same line and another below @finalout
address@hidden
+Text line after the finalout followed by a fianlout @finalout
+Text line after the text line followed by the finalout.
+
+Test text after finalout
address@hidden a word after finalout
+Line after finalout
+
+@@page @page @@noindent @noindent @@refill @refill something
+
address@hidden     noindent at beginning of line
address@hidden  
+noindent on the preceding line
+  @noindent    noindent after space at beginning of line
address@hidden         page at beginning of line
address@hidden
+After page on it's own line.
+
+@@page @page   @@noindent @noindent    @@refill @refill @@novalidate 
@novalidate something
+
+@@contents @contents something
+
+
address@hidden special
+
+Only valid between iftex:
address@hidden @@vskip @vskip @@cropmarks @cropmarks
+Unknown ???
address@hidden @@fillbreak  @fillbreak eol
+
+@@exdent @exdent line after exdent
+
+And now sp:
+Text line followed by a comment on the same line and another below @sp 1
address@hidden 2
+Text line after the comment followed by a comment @sp 1
+Text line after the text line followed by the comment.
address@hidden 2 a number after sp
+
address@hidden @result
+
+A @click{} (result).
+
address@hidden invalid, makeinfo warns about @result needing braces
address@hidden others are also invalid
address@hidden @result on the same line
+
+A @click{} (result on the same line).
+
address@hidden @nocmd
+
+A @click{} (nocmd).
+
address@hidden something
+
+A @click{} (something).
+
+Menu:
address@hidden
+* node::
+* bidule::
+* bidule2::
+* undefined::
address@hidden menu
+
address@hidden node
address@hidden chapter
address@hidden
+* truc::
address@hidden menu
+
address@hidden truc
address@hidden section
+
+first @@contents @contents line following first content
+second @@contents @contents line following second content
+Third content on the following line on his own
address@hidden
+Line following contents
+
address@hidden bidule
address@hidden bidule
+
+@@shortcontents @shortcontents eol
+@@shortcontents @shortcontents eol
+@@summarycontents @summarycontents line following summarycontents
+
address@hidden bidule2
address@hidden last
+
address@hidden no ref ignored because of novalidate
address@hidden
+
address@hidden

Index: coverage/res_info/texi_delcomment/delcomment.2
===================================================================
RCS file: coverage/res_info/texi_delcomment/delcomment.2
diff -N coverage/res_info/texi_delcomment/delcomment.2

Index: coverage/res_info/texi_delcomment/delcomment.passfirst
===================================================================
RCS file: coverage/res_info/texi_delcomment/delcomment.passfirst
diff -N coverage/res_info/texi_delcomment/delcomment.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/texi_delcomment/delcomment.passfirst      2 Aug 2009 
13:12:05 -0000       1.1
@@ -0,0 +1,6 @@
+delcomment.texi(,2) @setfilename delcomment.info
+delcomment.texi(,3) 
+delcomment.texi(,5) 
+delcomment.texi(,6) This line is the only output.
+delcomment.texi(,7) 
+delcomment.texi(,8) @bye

Index: coverage/res_info/texi_delcomment/delcomment.passtexi
===================================================================
RCS file: coverage/res_info/texi_delcomment/delcomment.passtexi
diff -N coverage/res_info/texi_delcomment/delcomment.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/texi_delcomment/delcomment.passtexi       2 Aug 2009 
13:12:05 -0000       1.1
@@ -0,0 +1,6 @@
+delcomment.texi(,2) @setfilename delcomment.info
+delcomment.texi(,3) 
+delcomment.texi(,5) 
+delcomment.texi(,6) This line is the only output.
+delcomment.texi(,7) 
+delcomment.texi(,8) @bye

Index: coverage/res_info/texi_delcomment/delcomment.texi
===================================================================
RCS file: coverage/res_info/texi_delcomment/delcomment.texi
diff -N coverage/res_info/texi_delcomment/delcomment.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/texi_delcomment/delcomment.texi   2 Aug 2009 13:12:05 
-0000       1.1
@@ -0,0 +1,7 @@
+\input texinfo
address@hidden delcomment.info
+
+
+This line is the only output.
+
address@hidden

Index: coverage/res_info/texi_delcomment/delcomment.texi.first
===================================================================
RCS file: coverage/res_info/texi_delcomment/delcomment.texi.first
diff -N coverage/res_info/texi_delcomment/delcomment.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/texi_delcomment/delcomment.texi.first     2 Aug 2009 
13:12:05 -0000       1.1
@@ -0,0 +1,7 @@
+\input texinfo
address@hidden delcomment.info
+
+
+This line is the only output.
+
address@hidden

Index: coverage/res_info/texi_float/float.texi.first
===================================================================
RCS file: coverage/res_info/texi_float/float.texi.first
diff -N coverage/res_info/texi_float/float.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/texi_float/float.texi.first       2 Aug 2009 13:12:05 
-0000       1.1
@@ -0,0 +1,311 @@
+\input texinfo.tex    @c -*-texinfo-*-
+
address@hidden float.info
+
address@hidden Top
address@hidden Test floats
+
+A list of floats at the begining.
address@hidden Text
+
+After the listoffloats.
+
address@hidden
+* chapter::
+* Unnumbered::
+* Chapter with unnumbsubsec::
+* list of floats::
address@hidden menu
+
address@hidden Text, text with a lot of features
+An example of float @enddots{}
+
address@hidden makeinfo --docbook segfaults
+An example.
address@hidden 
+example
address@hidden example
+
+A multitable.
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden truc @tab bidule
address@hidden multitable
+
+An index entry
address@hidden float example
+
+A table.
address@hidden @emph
address@hidden truc 
+line
address@hidden table
+
+An itemize.
address@hidden @minus
address@hidden truc 
+line
address@hidden itemize
+
+A ref.
address@hidden,xref Text with features}.
+A footnote.
address@hidden Text with features}.
+
address@hidden and @address@hidden@'address@hidden@address@hidden @sc{and} 
@verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.
+
address@hidden An example of float address@hidden
+An example.
address@hidden 
+example
address@hidden example
+
address@hidden in caption}
+
+A table.
address@hidden @emph
address@hidden truc 
+line
address@hidden table
+
+A multitable.
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden truc @tab bidule
address@hidden multitable
+An index entry
address@hidden float example in caption
+
+An itemize.
address@hidden @minus
address@hidden truc 
+line
address@hidden itemize
+
+A ref.
address@hidden,xref Text with features caption}.
+A footnote.
address@hidden Text with features caption}.
+
address@hidden and @address@hidden@'address@hidden@address@hidden @sc{and} 
@verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.
+}
+
address@hidden@TeX{} and @address@hidden@'address@hidden@address@hidden 
@sc{and} @verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.}
+
address@hidden float
+
+
address@hidden Text
+No label but caption and shortcaption.
+
address@hidden label}
address@hidden label}
address@hidden float
+
address@hidden ,label but no type
+No type but caption and shortcaption.
+
address@hidden type}
address@hidden type}
address@hidden float
+
+
address@hidden ,label but no type and no caption
+No type but label and no caption nor shortcaption.
+                                                                               
 
address@hidden float
+
+
address@hidden
+No label, no type, no caption no shortcaption.
+
address@hidden float
+
address@hidden
+No label, no type, but caption and shortcaption.
address@hidden label, no type, but caption and shortcaption.}
address@hidden label, no type, but caption and shortcaption.}
address@hidden float
+
+
+
address@hidden ,label but no type 2
+Second float with no type.
+
address@hidden type 2}
address@hidden type 2}
address@hidden float
+
address@hidden Warning, warning in top
+A warning
+
address@hidden warning}
address@hidden warning}
address@hidden float
+
address@hidden chapter
address@hidden A chapter
+
address@hidden Text, text in chapter
+Text in chapter
+
address@hidden in chapter}
address@hidden float
+
address@hidden Text, float with a lot of features and no shortcaption
+
+Float text of a float with a lot of features.
+
address@hidden An example of float address@hidden 2
+An example 2.
address@hidden 
+example 2
address@hidden example
+
+A table 2.
address@hidden @emph
address@hidden truc 2 
+line 2
address@hidden table
+
+A multitable 2.
address@hidden {truc} {bidule}
address@hidden truc 2 @tab bidule
address@hidden truc 2 @tab bidule
address@hidden multitable
+An index entry 2
address@hidden float example in caption 2
+
+An itemize 2.
address@hidden @minus
address@hidden truc 2
+line
address@hidden itemize
+
address@hidden in caption 2}
+
+A ref 2.
address@hidden,xref Text with features caption}.
+A footnote 2.
address@hidden Text with features caption 2}.
+
address@hidden and @address@hidden@'address@hidden@address@hidden @sc{and} 
@verb{!it is @verb!} @ a address@hidden @!@@ @AE{}.
+}
+
address@hidden float
+
address@hidden th@'address@hidden, theoreme
+A th@'address@hidden
+
address@hidden th@'address@hidden
address@hidden float
+
address@hidden ,label but no type in chapter
+float with no type.
+
address@hidden type in chapter}
address@hidden type in chapter}
address@hidden float
+
address@hidden Warning, warning in chapter
+A warning
+
address@hidden warning in chapter}
address@hidden warning in chapter}
address@hidden float
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden A section
+
address@hidden Text, text in section
+
+A text in float no caption a label a type.
+
address@hidden float
+
address@hidden Unnumbered
address@hidden Unnumbered
+
address@hidden
+* Section within unnumbered::
address@hidden menu
address@hidden Text, unnumbered float
+unnum
address@hidden float}
address@hidden float}
address@hidden float
+
address@hidden ,label but no type in unnumbered
+float with no type.
+
address@hidden type in unnumbered}
address@hidden type in unnumbered}
address@hidden float
+
+
address@hidden Section within unnumbered
address@hidden Section within unnumbered
+
+
address@hidden Text, Section within unnumbered float
+Section within unnumbered
address@hidden within unnumbered}
address@hidden within unnumbered}
address@hidden float
+
address@hidden Chapter with unnumbsubsec
address@hidden Chapter with unnumbsubsec
+
address@hidden
+* unnumbered sec::
address@hidden menu
address@hidden Text, Chapter with subsec float
+Chap
address@hidden with subsec}
address@hidden with subsec}
address@hidden float
+
address@hidden unnumbered sec
address@hidden unnumbered sec
+
address@hidden Text, unnumbered sec float
+Chap
address@hidden sec float}
address@hidden sec float}
address@hidden float
+
address@hidden ,label but no type in unnumbered subsec in chapter
+float with no type.
+
address@hidden type in unnumbered subsec in chapter}
address@hidden type in unnumbered subsec in chapter}
address@hidden float
+
address@hidden list of floats
address@hidden list of floats
+
+See @ref{text in section}.
+And (@pxref{text in chapter}).
address@hidden with a lot of features}.
+
+And now a ref (without manual or printed manual) 
address@hidden with a lot of features, cross ref, title}.
+
+And now a ref (with manual without printed manual) 
address@hidden with a lot of features, cross ref, title, manual}.
+
+And now a ref (without manual with a printed manual) 
address@hidden with a lot of features, cross ref, title,, printed manual title}.
+
+A ref to float without type @ref{label but no type}.
+
address@hidden Text
address@hidden th@'address@hidden
+
address@hidden cp
+
address@hidden

Index: coverage/res_info/texi_formats_titles/formats_titles.texi.first
===================================================================
RCS file: coverage/res_info/texi_formats_titles/formats_titles.texi.first
diff -N coverage/res_info/texi_formats_titles/formats_titles.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/texi_formats_titles/formats_titles.texi.first     2 Aug 
2009 13:12:05 -0000       1.1
@@ -0,0 +1,33 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden formats_titles.info
+
address@hidden Top
address@hidden Test formats with text before first item
+
address@hidden
+before first itemize
address@hidden item
address@hidden itemize
+
address@hidden
+before first enumerate
address@hidden enum
address@hidden enumerate
+
address@hidden @emph
+before first table
address@hidden tab
address@hidden table
+
address@hidden @asis
+before first vtable
address@hidden vtab
address@hidden vtable
+
address@hidden @columnfractions 0.5 0.5
+before first multitable
address@hidden item multit @tab tab multit
address@hidden multitable
+
address@hidden

Index: coverage/res_info/texi_formatting/formatting.texi.first
===================================================================
RCS file: coverage/res_info/texi_formatting/formatting.texi.first
diff -N coverage/res_info/texi_formatting/formatting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/texi_formatting/formatting.texi.first     2 Aug 2009 
13:12:06 -0000       1.1
@@ -0,0 +1,2951 @@
+\input texinfo @c -*-texinfo-*-
address@hidden formatting.info
address@hidden Top
address@hidden Top section
+
address@hidden
+* chapter::               chapter
+
+Menu comment
+
+* description:chapter2.   Chapter 2
address@hidden menu
+
address@hidden mymacro
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden texi2html
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden ifset
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden texi2html
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
address@hidden ifset
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments @
+   more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\\partial_t \\eta (t) = g(\\eta(t),\\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
address@hidden texi2html
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
address@hidden ifset
+
+
address@hidden invalid texinfo
address@hidden invalid
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
address@hidden ifset
+
address@hidden macro
+
+
+
+Insertcopying in normal text
+In copying
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments    more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\partial_t \eta (t) = g(\eta(t),\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
+
+
address@hidden invalid texinfo
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
+
+
+Normal text
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments    more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\partial_t \eta (t) = g(\eta(t),\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
+
+
address@hidden invalid texinfo
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
+
+
+In example.
address@hidden
+
+<
+>
+"
+&
+'
+`
+
+``simple-double--three---four----''@*
+code: @code{``simple-double--three---four----''} @*
+asis: @asis{``simple-double--three---four----''} @*
+strong: @strong{``simple-double--three---four----''} @*
+kbd: @kbd{``simple-double--three---four----''} @*
+
address@hidden@w{}-three---four----'@w{}'@*
+
address@hidden --option
address@hidden ``
address@hidden ``
address@hidden --foption
+
+@@"u @"u 
+@@"@address@hidden @"{U} 
+@@~n @~n
+@@^a @^a
+@@'e @'e
+@@=o @=o
+@@`i @`i
+@@'@address@hidden @'{e}
+@@'@{@@address@hidden@address@hidden @'address@hidden 
+@@address@hidden@} @dotless{i}
+@@address@hidden@} @dotless{j}
+@@address@hidden@@address@hidden @address@hidden 
+@@address@hidden@} @l{}
+@@,@{@@'address@hidden @,{@'C}
+@@,c @,c
+@@,c@@"u @,c@"u @*
+
+@@* @*
+@@ followed by a space
+@ 
+@@ followed by a tab
+@      
+@@ followed by a new line
+@
address@hidden@@-} @-
address@hidden@@|} @|
address@hidden@@:} @:
address@hidden@@!} @!
address@hidden@@?} @?
address@hidden@@.} @.
address@hidden@@@@} @@
address@hidden@@@}} @}
address@hidden@@@{} @{
address@hidden@@/} @/
+
+foo vs.@: bar. 
+colon :@:And something else.
+semi colon ;@:.
+And ? ?@:.
+Now ! !@:@@
+but , ,@:
+
+@@TeX @TeX{}
+@@LaTeX @LaTeX{}
+@@bullet @bullet{}
+@@copyright @copyright{}
+@@dots @dots{}
+@@enddots @enddots{}
+@@equiv @equiv{}
+@@error @error{}
+@@expansion @expansion{}
+@@minus @minus{}
+@@point @point{}
+@@print @print{}
+@@result @result{}
+@@today @today{}
+@@aa @aa{}
+@@AA @AA{}
+@@ae @ae{}
+@@oe @oe{}
+@@AE @AE{}
+@@OE @OE{}
+@@o @o{}
+@@O @O{}
+@@ss @ss{}
+@@l @l{}
+@@L @L{}
+@@DH @DH{}
+@@TH @TH{}
+@@dh @dh{}
+@@th @th{}
+@@exclamdown @exclamdown{}
+@@questiondown @questiondown{}
+@@pounds @pounds{}
+@@registeredsymbol @registeredsymbol{}
+@@ordf @ordf{}
+@@ordm @ordm{}
+@@comma @comma{}
+@@quotedblleft @quotedblleft{}
+@@quotedblright @quotedblright{}
+@@quoteleft @quoteleft{}
+@@quoteright @quoteright{}
+@@quotedblbase @quotedblbase{}
+@@quotesinglbase @quotesinglbase{}
+@@guillemetleft @guillemetleft{}
+@@guillemetright @guillemetright{}
+@@guillemotleft @guillemotleft{}
+@@guillemotright @guillemotright{}
+@@guilsinglleft @guilsinglleft{}
+@@guilsinglright @guilsinglright{}
+@@textdegree @textdegree{}
+@@euro @euro{}
+@@arrow @arrow{}
+@@leq @leq{}
+@@geq @geq{}
+
address@hidden@@address@hidden,an address@hidden @acronym{--a,an accronym}
address@hidden@@address@hidden@}} @acronym{--a}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., @@'Etude Autonome 
@}} @abbr{@'E--. @comma{}A., @'Etude Autonome }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
address@hidden@@address@hidden@}} @asis{--a}
address@hidden@@address@hidden@}} @b{--a}
address@hidden@@address@hidden@}} @cite{--a}
address@hidden@@address@hidden@}} @code{--a}
address@hidden@@address@hidden@}} @command{--a}
address@hidden@@address@hidden@}} @ctrl{--a}
address@hidden@@address@hidden@}} @dfn{--a}
address@hidden@@address@hidden@}} @dmn{--a}
address@hidden@@address@hidden,address@hidden @email{--a,--b}
address@hidden@@address@hidden,address@hidden @email{,--b}
address@hidden@@address@hidden@}} @email{--a}
address@hidden@@address@hidden@}} @emph{--a}
address@hidden@@address@hidden@}} @env{--a}
address@hidden@@address@hidden@}} @file{--a}
address@hidden@@address@hidden@}} @i{--a}
address@hidden@@address@hidden@}} @kbd{--a}
address@hidden@@address@hidden@}} @key{--a}
address@hidden@@address@hidden @address@hidden@address@hidden@address@hidden 
@@address@hidden@address@hidden @math{--a {\frac{1}{2}} @minus{}}
address@hidden@@address@hidden@}} @option{--a}
address@hidden@@address@hidden@}} @r{--a}
address@hidden@@address@hidden@}} @samp{--a}
address@hidden@@address@hidden@}} @sc{--a}
address@hidden@@address@hidden@}} @strong{--a}
address@hidden@@address@hidden@}} @t{--a}
address@hidden@@address@hidden@}} @sansserif{--a}
address@hidden@@address@hidden@}} @titlefont{--a}
address@hidden@@address@hidden@}} @indicateurl{--a}
address@hidden@@address@hidden,address@hidden @uref{--a,--b}
address@hidden@@address@hidden@}} @uref{--a}
address@hidden@@address@hidden,address@hidden @uref{,--b}
address@hidden@@address@hidden,--b,address@hidden @uref{--a,--b,--c}
address@hidden@@address@hidden,--b,address@hidden @uref{,--b,--c}
address@hidden@@address@hidden,,address@hidden @uref{--a,,--c}
address@hidden@@address@hidden,,address@hidden @uref{,,--c}
address@hidden@@address@hidden,address@hidden @url{--a,--b}
address@hidden@@address@hidden,@}} @url{--a,}
address@hidden@@address@hidden,address@hidden @url{,--b}
address@hidden@@address@hidden@}} @var{--a}
address@hidden@@address@hidden:--a:@}} @verb{:--a:}
address@hidden@@address@hidden:a  < & @@ % " --    b:@}} @verb{:a  < & @ % " -- 
   b:}
address@hidden@@address@hidden@}} @w{}
address@hidden@@address@hidden@}} @H{a}
address@hidden@@address@hidden@}} @H{--a}
address@hidden@@address@hidden@}} @dotaccent{a}
address@hidden@@address@hidden@}} @dotaccent{--a}
address@hidden@@address@hidden@}} @ringaccent{a}
address@hidden@@address@hidden@}} @ringaccent{--a}
address@hidden@@address@hidden@}} @tieaccent{a}
address@hidden@@address@hidden@}} @tieaccent{--a}
address@hidden@@address@hidden@}} @u{a}
address@hidden@@address@hidden@}} @u{--a}
address@hidden@@address@hidden@}} @ubaraccent{a}
address@hidden@@address@hidden@}} @ubaraccent{--a}
address@hidden@@address@hidden@}} @udotaccent{a}
address@hidden@@address@hidden@}} @udotaccent{--a}
address@hidden@@address@hidden@}} @v{a}
address@hidden@@address@hidden@}} @v{--a}
address@hidden@@,@address@hidden @,{c}
address@hidden@@,@address@hidden @,{--c}
address@hidden@@address@hidden@}} @ogonek{a}
address@hidden@@address@hidden@}} @ogonek{--a}
address@hidden@@address@hidden address@hidden @footnote{in footnote}
address@hidden@@address@hidden address@hidden @footnote{in footnote2}
+
address@hidden@@address@hidden@}} @image{f--ile}
address@hidden@@address@hidden,address@hidden @image{f--ile,l--i}
address@hidden@@address@hidden,,address@hidden @image{f--ile,,l--e}
address@hidden@@address@hidden,,,address@hidden @image{f--ile,,,alt}
address@hidden@@address@hidden,,,,address@hidden @image{f--ile,,,,e--xt}
address@hidden@@address@hidden,aze,az,alt,address@hidden 
@image{f--ile,aze,az,alt,e--xt}
address@hidden@@address@hidden,aze,,address@hidden @image{f-ile,aze,,a--lt}
address@hidden@@address@hidden@@address@hidden@}@@@@@@.,aze,az,alt,@@address@hidden
 address@hidden e--xt@@@}} @address@hidden@@@.,aze,az,alt,@file{file ext} 
address@hidden
+
address@hidden 2
+
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @result
+After clickstyle @result{}
address@hidden@@address@hidden @@address@hidden@} address@hidden 
@clicksequence{click @click{} A}
address@hidden @arrow
+
address@hidden 
+A quot---ation
address@hidden quotation
+
address@hidden Note
+A Note
address@hidden quotation
+
address@hidden note
+A note
address@hidden quotation
+
address@hidden Caution
+Caution
address@hidden quotation
+
address@hidden Important
+Important
address@hidden quotation
+
address@hidden Tip
+a Tip
address@hidden quotation
+
address@hidden Warning
+a Warning.
address@hidden quotation
+
address@hidden something @'e @TeX{}
+The something @'e @TeX{} is here.
address@hidden quotation
+
address@hidden @@ at the end of line @
+A @@ at the end of the @@quotation line.
address@hidden quotation
+
address@hidden something, other thing
+something, other thing
address@hidden quotation
+
address@hidden Note, the note
+Note, the note
address@hidden quotation
+
address@hidden
address@hidden quotation
+
address@hidden Empty
address@hidden quotation
+
address@hidden @asis{}
address@hidden quotation
+
address@hidden @*
address@hidden quotation
+
address@hidden 
+A small quot---ation
address@hidden smallquotation
+
address@hidden Note
+A small Note
address@hidden smallquotation
+
address@hidden something, other thing
+something, other thing
address@hidden smallquotation
+
address@hidden
address@hidden i--temize
address@hidden itemize
+
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden b--ullet
address@hidden itemize
+
address@hidden @minus
address@hidden minu--s
address@hidden itemize
+
address@hidden @emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden @emph{after emph}
address@hidden comment in itemize
address@hidden e--mph item
address@hidden itemize
+
address@hidden @bullet{} a--n itemize line
address@hidden index entry within itemize
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden
address@hidden e--numerate
address@hidden enumerate
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+
address@hidden
+e--xample  some
+   text
address@hidden example
+
address@hidden
+s--mallexample
address@hidden smallexample
+
address@hidden 
+d--isplay
address@hidden display
+
address@hidden
+s--malldisplay
address@hidden smalldisplay
+
address@hidden
+l--isp
address@hidden lisp
+
address@hidden
+s--malllisp
address@hidden smalllisp
+
address@hidden
+f--ormat
address@hidden format
+
address@hidden
+s--mallformat
address@hidden smallformat
+
address@hidden c--ategory d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments    more args @* even more so
+def--fn
address@hidden deffn
+ 
address@hidden fset @var{i} a g
address@hidden index entry within deffn
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden @b{id @samp{i} ule}    
address@hidden 
address@hidden aaa
address@hidden {} {}
address@hidden
address@hidden machin
address@hidden {bidule machin}
address@hidden machin
address@hidden { }
address@hidden followed by a comment
address@hidden comment
address@hidden
address@hidden {}
address@hidden {truc} a b c d e @b{f g} {h i}
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+
address@hidden empty deffn
address@hidden deffn
+
address@hidden empty deffn with deffnx
address@hidden comment between deffn and deffnx
address@hidden empty deffnx
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden comment
+text in def item for second def item
address@hidden deffn
+
address@hidden c--ategory d--efvr_name
+d--efvr
address@hidden defvr
+
address@hidden c--ategory t--ype d--eftypefn_name a--rguments...
+d--eftypefn
address@hidden deftypefn
+
address@hidden c--ategory c--lass t--ype d--eftypeop_name a--rguments...
+d--eftypeop
address@hidden deftypeop
+
address@hidden c--ategory t--ype d--eftypevr_name
+d--eftypevr
address@hidden deftypevr
+
address@hidden c--ategory c--lass d--efcv_name
+d--efcv
address@hidden defcv
+
address@hidden c--ategory c--lass d--efop_name a--rguments...
+d--efop
address@hidden defop
+
address@hidden c--ategory d--eftp_name a--ttributes...
+d--eftp
address@hidden deftp
+
address@hidden d--efun_name a--rguments...
+d--efun
address@hidden defun
+
address@hidden d--efmac_name a--rguments...
+d--efmac
address@hidden defmac
+
address@hidden d--efspec_name a--rguments...
+d--efspec
address@hidden defspec
+
address@hidden d--efvar_name argvar argvar1
+d--efvar
address@hidden defvar
+
address@hidden d--efopt_name
+d--efopt
address@hidden defopt
+
address@hidden t--ype d--eftypefun_name a--rguments...
+d--eftypefun
address@hidden deftypefun
+
address@hidden t--ype d--eftypevar_name
+d--eftypevar
address@hidden deftypevar
+
address@hidden c--lass d--efivar_name
+d--efivar
address@hidden defivar
+
address@hidden c--lass t--ype d--eftypeivar_name
+d--eftypeivar
address@hidden deftypeivar
+
address@hidden c--lass d--efmethod_name a--rguments...
+d--efmethod
address@hidden defmethod
+
address@hidden c--lass t--ype d--eftypemethod_name a--rguments...
+d--eftypemethod
address@hidden deftypemethod
+
address@hidden@@address@hidden@@@@, cross r---ef name@@@@, t---itle@@@@, file 
n---ame@@@@, ma---nual@@@@@}} @xref{c---hapter@@, cross r---ef name@@, 
t---itle@@, file n---ame@@, ma---nual@@}.
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @ref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, title, file name, 
address@hidden @pxref{chapter, cross ref name, title, file name, manual}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
+
address@hidden@@address@hidden@}} @ref{chapter}
address@hidden@@address@hidden@}} @xref{chapter}.
address@hidden@@address@hidden@}} @pxref{chapter}
address@hidden@@address@hidden@@address@hidden@address@hidden @address@hidden
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in title, a comma@@address@hidden@} in file, a 
@@address@hidden@} in manual name @}}
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in title, a address@hidden in file, a @comma{} in manual 
name }
+
address@hidden@@address@hidden,cross ref address@hidden @ref{chapter,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{chapter,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{chapter,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{chapter,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{chapter,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{chapter,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden 
@ref{chapter,cross ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{chapter,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{chapter,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{chapter,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden 
@ref{chapter,,title,file name}
address@hidden@@address@hidden,,title,,address@hidden 
@ref{chapter,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{chapter,,,file 
name,manual}
+
+
address@hidden@@address@hidden(pman)anode,cross ref address@hidden 
@ref{(pman)anode,cross ref name}
address@hidden@@address@hidden(pman)anode,,address@hidden 
@ref{(pman)anode,,title}
address@hidden@@address@hidden(pman)anode,,,file address@hidden 
@ref{(pman)anode,,,file name}
address@hidden@@address@hidden(pman)anode,,,,address@hidden 
@ref{(pman)anode,,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,@}} 
@ref{(pman)anode,cross ref name,title,}
address@hidden@@address@hidden(pman)anode,cross ref name,,file address@hidden 
@ref{(pman)anode,cross ref name,,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,,,address@hidden 
@ref{(pman)anode,cross ref name,,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title,file 
address@hidden @ref{(pman)anode,cross ref name,title,file name}
address@hidden@@address@hidden(pman)anode,cross ref name,title,,address@hidden 
@ref{(pman)anode,cross ref name,title,,manual}
address@hidden@@address@hidden(pman)anode,cross ref name,title, file name, 
address@hidden @ref{(pman)anode,cross ref name,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,title,file address@hidden 
@ref{(pman)anode,,title,file name}
address@hidden@@address@hidden(pman)anode,,title,,address@hidden 
@ref{(pman)anode,,title,,manual}
address@hidden@@address@hidden(pman)anode,,title, file name, address@hidden 
@ref{(pman)anode,,title, file name, manual}
address@hidden@@address@hidden(pman)anode,,,file name,address@hidden 
@ref{(pman)anode,,,file name,manual}
+
+
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{chapter, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{chapter}
address@hidden@@address@hidden, cross ref address@hidden @inforef{chapter, 
cross ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{chapter,,file name}
address@hidden@@address@hidden, cross ref name, file address@hidden 
@inforef{node, cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{node}
address@hidden@@address@hidden, cross ref address@hidden @inforef{node, cross 
ref name}
address@hidden@@address@hidden,,file address@hidden @inforef{node,,file name}
address@hidden@@address@hidden, cross ref name, file name, spurious 
address@hidden @inforef{chapter, cross ref name, file name, spurious arg}
+
address@hidden@@address@hidden@@address@hidden@}ion, a @@address@hidden@} in 
cross
+ref, a comma@@address@hidden@} in address@hidden
address@hidden@comma{}ion, a @comma{} in cross
+ref, a address@hidden in file}
+
+
address@hidden @bullet
address@hidden comment in table
address@hidden a
+l--ine
address@hidden table
+
address@hidden @asis
address@hidden a
address@hidden comment between item and itemx
address@hidden b
+l--ine
address@hidden vtable
+
address@hidden @minus
address@hidden a
address@hidden index entry between item and itemx
address@hidden b
+l--ine
address@hidden ftable
+
address@hidden
+c--artouche
address@hidden cartouche
+
address@hidden
+f--lushleft
address@hidden flushleft
+
address@hidden
+f--lushright
address@hidden flushright
+
address@hidden ce--ntered line
+
address@hidden simplest.texi
+
address@hidden
+in verbatim ''
address@hidden verbatim
+
address@hidden
+<para> xml para </para> ''
address@hidden xml
+
address@hidden
+html ''
address@hidden html
+
address@hidden
+$$\partial_t \eta (t) = g(\eta(t),\varphi(t))$$ ''
address@hidden tex
+
address@hidden
+docbook ''
address@hidden docbook
+
address@hidden majorheading
+
address@hidden chapheading
+
address@hidden heading
+
address@hidden subheading
+
address@hidden subsubheading
+
address@hidden makeinfo cannot handle that
+
address@hidden@@address@hidden,an accronym @@address@hidden@} 
@@address@hidden@address@hidden @acronym{--a,an accronym @comma{} @enddots{}}
address@hidden@@address@hidden@@'E--. @@address@hidden@}A., 
@@'Etude--@@address@hidden@} @@address@hidden@} @}} @abbr{@'E--. @comma{}A., 
@'address@hidden @b{Autonome} }
address@hidden@@address@hidden@@'E--. @@address@hidden@address@hidden 
@abbr{@'E--. @comma{}A.}
+
address@hidden@@address@hidden@@address@hidden@} 
@address@hidden@address@hidden@address@hidden@}} @address@hidden {\frac{1}{2}}}
+
address@hidden@@address@hidden,,,alt@@address@hidden:jk _" %@:@address@hidden 
@image{f-ile,,,address@hidden:jk _" %@:}}
address@hidden@@address@hidden,aze,az,@@address@hidden:jk _" %@@:@} 
@@address@hidden b "@},address@hidden @image{f--ile,aze,az,@verb{:jk _" %@:} 
@b{in b "},e--xt}
address@hidden@@address@hidden@@address@hidden:jk _" 
%@@:@},,,alt@@address@hidden:jk _" %@@:@address@hidden @address@hidden:jk _" 
%@:},,,address@hidden:jk _" %@:}}
+
address@hidden invalid
+
+
address@hidden invalid texinfo
+
+Somehow invalid use of @@,:@*
+@@, @,
address@hidden
+@@,@@"u @,@"u
+
+Invalid use of @@':@*
+@@' @'
address@hidden
+@@'@@"u @'@"u
+
address@hidden only i or j as arg
+@@address@hidden@} @dotless{truc}
+@@address@hidden@} @dotless{ij}
address@hidden@@address@hidden@}} @dotless{--a}
address@hidden@@address@hidden@}} @dotless{a}
+
address@hidden braces missing
+@@TeX, but without brace @TeX
+
address@hidden unknown command
address@hidden@@#} @#
+
address@hidden no arg
address@hidden@@address@hidden@}} @w{--a}
+
address@hidden no file
address@hidden@@address@hidden,address@hidden @image{,1--xt}
address@hidden@@address@hidden,,address@hidden @image{,,2--xt}
address@hidden@@address@hidden,,,address@hidden @image{,,,3--xt}
+
address@hidden
+
address@hidden braces missing
address@hidden @emph after emph
address@hidden e--mph item
address@hidden itemize
+
address@hidden braces missing
address@hidden @bullet a--n itemize line
address@hidden i--tem 1
address@hidden i--tem 2
address@hidden itemize
+
address@hidden deffnx after deff lines
address@hidden fun
address@hidden truc machin bidule chose and }
address@hidden truc machin bidule chose and } after
address@hidden truc machin bidule chose and {
address@hidden truc machin bidule chose and { and after
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden deffn
+
address@hidden node is non existent, or missing first arg
address@hidden@@address@hidden@}} @ref{node}
+
address@hidden@@address@hidden,cross ref address@hidden @ref{,cross ref name}
address@hidden@@address@hidden,,address@hidden @ref{,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{,,,,manual}
address@hidden@@address@hidden,cross ref address@hidden @ref{node,cross ref 
name}
address@hidden@@address@hidden,,address@hidden @ref{node,,title}
address@hidden@@address@hidden,,,file address@hidden @ref{node,,,file name}
address@hidden@@address@hidden,,,,address@hidden @ref{node,,,,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{node,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden 
@ref{node,cross ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{node,cross 
ref name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{node,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden 
@ref{node,cross ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{node,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{node,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{node,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{chapter,,title, file name, manual}
address@hidden@@address@hidden,,title, file name, address@hidden 
@ref{node,,title, file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{node,,,file 
name,manual}
address@hidden@@address@hidden,cross ref name,title,@}} @ref{,cross ref 
name,title,}
address@hidden@@address@hidden,cross ref name,,file address@hidden @ref{,cross 
ref name,,file name}
address@hidden@@address@hidden,cross ref name,,,address@hidden @ref{,cross ref 
name,,,manual}
address@hidden@@address@hidden,cross ref name,title,file address@hidden 
@ref{,cross ref name,title,file name}
address@hidden@@address@hidden,cross ref name,title,,address@hidden @ref{,cross 
ref name,title,,manual}
address@hidden@@address@hidden,cross ref name,title, file name, address@hidden 
@ref{,cross ref name,title, file name, manual}
address@hidden@@address@hidden,,title,file address@hidden @ref{,,title,file 
name}
address@hidden@@address@hidden,,title,,address@hidden @ref{,,title,,manual}
address@hidden@@address@hidden,,title, file name, address@hidden @ref{,,title, 
file name, manual}
address@hidden@@address@hidden,,,file name,address@hidden @ref{,,,file 
name,manual}
+
address@hidden@@address@hidden,cross ref name @}} @inforef{,cross ref name }
address@hidden@@address@hidden,,file address@hidden @inforef{,,file name}
address@hidden@@address@hidden,cross ref name, file address@hidden 
@inforef{,cross ref name, file name}
address@hidden@@address@hidden@}} @inforef{}
+
+
address@hidden example
+
address@hidden t--ruc
address@hidden T--ruc
address@hidden .
address@hidden ?
address@hidden a
address@hidden t--ruc
address@hidden T--ruc
address@hidden .
address@hidden ?
address@hidden a
+
+
+cp
address@hidden cp
+
+fn
address@hidden fn
+
+vr
address@hidden vr
+
+ky
address@hidden ky
+
+pg
address@hidden pg
+
+tp
address@hidden tp
+
+
+
address@hidden chapter
address@hidden chapter
+
address@hidden footnote}
+
address@hidden
address@hidden 
+* address@hidden:: address@hidden
+
+Menu comment
+``simple-double--three---four----''@*
+
address@hidden menu
address@hidden format
+
address@hidden address@hidden
address@hidden A section
+
address@hidden
+* subsection:: 
address@hidden menu
+
address@hidden subsection
address@hidden subsection
+
address@hidden
+* subsubsection ``simple-double--three---four----''::
address@hidden menu
+
address@hidden
+
address@hidden subsubsection ``simple-double--three---four----''
address@hidden subsubsection ``simple-double--three---four----''
+
address@hidden chapter2
address@hidden chapter 2
+
address@hidden cp
address@hidden fn
+
address@hidden
address@hidden
address@hidden

Index: coverage/res_info/texi_imbrications/imbrications.texi.first
===================================================================
RCS file: coverage/res_info/texi_imbrications/imbrications.texi.first
diff -N coverage/res_info/texi_imbrications/imbrications.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/texi_imbrications/imbrications.texi.first 2 Aug 2009 
13:12:06 -0000       1.1
@@ -0,0 +1,308 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden imbrications.info
+
address@hidden pg cp
+
address@hidden Top,First node,(dir)
address@hidden
address@hidden
+* First node::    node 1
+* name:Second node.    node 2
address@hidden menu
address@hidden * node in table::
address@hidden * node in example::
address@hidden * node in flushright::
address@hidden *node in defun -> bug
address@hidden First node
address@hidden first node chapter
+
address@hidden elem
+
address@hidden
+
+$$ 
+\chi^2 = \sum_{i=1}^N
+\left(y_i - (a + b x_i)
+\over \sigma_i\right)^2 
+$$
+
address@hidden tex
+
address@hidden Second node
address@hidden second
+
+Some text
+
address@hidden Function buffer-end flag
+A nice function
+
+makeinfo accepts a menu within defun but it isn't possible
+to follow it
+
address@hidden
+* node within defun menu::
address@hidden menu
address@hidden makeinfo accepts the following but cannot properly close defun
address@hidden @node node within defun menu
address@hidden @section within menu
+
+end of the function
address@hidden deffn
+
address@hidden node within defun menu
address@hidden the node is within menu
+
+Test @@option inside @@emph
+Foo @emph{emphasized and referring to @option{--some} option}.
+
+Table imbricated in code:@*
address@hidden
+in code
address@hidden @emph
address@hidden line
+text
address@hidden table
+}
+                           
+ref with uref within:@*                                                     
address@hidden(file)node, cross ref with uref 
@uref{href://http/myhost.com/index.html,uref1}, title with uref2 
@uref{href://http/myhost.com/index2.html,uref2}, info file with uref3 
@uref{href://http/myhost.com/index3.html,uref3}, printed manual with uref4 
@uref{href://http/myhost.com/index4.html,uref4}}
+
+footnote with code within:@*                                                   
                             
address@hidden in footnote  @code{par1
+                                                                               
 
+par2}}
+
+Refs in samp:@*
+
+Refs without samp: empty section name see @ref{other node}.
+With a chapter: @ref{Second node}.
+
+A ref in samp to a node with empty section name:
+see @address@hidden node}}.
+
+Same but to a regular node associated with a chapter:
+see @address@hidden node}}.
+
+code with table and example within:@*                                          
          
address@hidden
+in code
address@hidden @emph
address@hidden line
+in code and table
address@hidden
+  in example
address@hidden example
address@hidden table
+}
+
+
address@hidden @bullet
address@hidden item
address@hidden @node node in table
address@hidden @chapter in table
address@hidden table
+
address@hidden
address@hidden @node node in example
address@hidden @chapter example
+
+an example
address@hidden example
+
address@hidden other entry
+
address@hidden
address@hidden
+
+Some html <code>some code</code>.
+
address@hidden html
+after html in example
+
+
+two line breaks
+Tex doesn't like math in @@example
address@hidden
+
+$$ 
+\chi^2 = \sum_{i=1}^N
+\left(y_i - (a + b x_i)
+\over \sigma_i\right)^2 
+$$
+
address@hidden tex
address@hidden index in example
+
+Now a content within example
+
address@hidden
+
address@hidden cp
+printindex  works but cannot be followed in info, in TeX
+the result is quite strange.
+
+and now yes---now and ``so''.
+
address@hidden example
+after example and now yes---now and ``so''.
address@hidden
+
+is the text
+flushed right ?
address@hidden @node node in flushright
address@hidden @chapter flushright
+
+
address@hidden flushright
+
address@hidden
address@hidden
+text flushed  right and then example
+
+it should be flushed
address@hidden example
address@hidden flushright
+
address@hidden
address@hidden
+example and then text flushed  right
address@hidden flushright
address@hidden example
+
address@hidden
+simple displayed text
address@hidden display
+
+a display within example
address@hidden
+example
address@hidden
+display
address@hidden display
address@hidden example
+
address@hidden
+A cartouched text
address@hidden cartouche
+
+A cartouche within example
address@hidden
+example
address@hidden
+A cartouched text
address@hidden cartouche
address@hidden example
+
+An example with table, multitable, quotation, enumerate 
address@hidden
+a table within example
address@hidden @bullet
address@hidden item
+text
address@hidden table
+a multitable
address@hidden {a} {b}
address@hidden beginnin
+
address@hidden @dots{}
address@hidden 
+
+a new column                          no splitting ???????????????????         
                    
address@hidden multitable
+
+a menu
address@hidden
+* node menu::      a node in menu
+
+in menu comment
+html
address@hidden
+<cite>cite me</cite> a cite in html
address@hidden html
+
+A ref in samp in menu comment to a node with empty section name:
address@hidden@ref{other node}}.
+
+Same but to a regular node associated with a chapter:
address@hidden@ref{Second node}}.
+
+* a menu name:other node. 
+      description of other
+      node
+
address@hidden menu
+
+A quotation
address@hidden
+This is a pre
+quotation
+
address@hidden quotation
+
+Enumerate
+
address@hidden
address@hidden first item
address@hidden second  item
+
+still second
address@hidden enumerate
+
address@hidden example
+
+example with deff-like commands
address@hidden
+deffs
address@hidden {my def} args @var{arg} @dots{}
address@hidden {other def} no args
address@hidden {type} {name} and now the args
address@hidden {variables} variable-name
+
address@hidden {variables too} other-variable
+THis is the defvar
+
+A table within the def
address@hidden @asis
address@hidden item
+text
+
+more text
address@hidden second item
address@hidden table
+
+explanation
address@hidden defvar
address@hidden deffn
address@hidden defun
+
address@hidden example
+
+table within display within example
address@hidden
address@hidden
address@hidden @asis
address@hidden item
+Line
address@hidden table
address@hidden display
address@hidden example
+
+table within example within display
address@hidden
address@hidden
address@hidden @asis
address@hidden item
+Line
address@hidden table
address@hidden example
address@hidden display
+
address@hidden  node menu
address@hidden
address@hidden other node
address@hidden
+
+
address@hidden
address@hidden

Index: coverage/res_info/texi_pass0_macros/pass0_macros.texi.first
===================================================================
RCS file: coverage/res_info/texi_pass0_macros/pass0_macros.texi.first
diff -N coverage/res_info/texi_pass0_macros/pass0_macros.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ coverage/res_info/texi_pass0_macros/pass0_macros.texi.first 2 Aug 2009 
13:12:06 -0000       1.1
@@ -0,0 +1,46 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top,First node,(dir)
address@hidden pass0 macro
address@hidden
+* First node::    node 1
address@hidden menu
+
address@hidden First node,,Top,Top
address@hidden first node chapter
+
+before syncodeindex @syncodeindex cp fn
+
+syncodeindex on its line
address@hidden cp fn
+line following syncodeindex
+
+One more thing following syncodeindex
address@hidden cp fn    truc
+line following syncodeindex cp fn   truc
+
+documentlanguage @documentlanguage  en  
+
+documentlanguage on its line
address@hidden  en  
+line following documentlanguage
+
+double documentlanguage on its line
address@hidden  en @documentlanguage  en  
+line following documentlanguage
+
address@hidden  en  after documentlanguage
+
+definedx truc
address@hidden truc
+after
+
+definedx chose   machin
address@hidden chose    machin 
+after
+
address@hidden index truc
address@hidden @choseindex index
address@hidden @machinindex machin
+
+Before bye @bye




reply via email to

[Prev in Thread] Current Thread [Next in Thread]