texi2html-cvs
[Top][All Lists]
Advanced

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

[Texi2html-cvs] texi2html/test invalid/Makefile.am invalid/Make...


From: Patrice Dumas
Subject: [Texi2html-cvs] texi2html/test invalid/Makefile.am invalid/Make...
Date: Sun, 02 Aug 2009 13:13:34 +0000

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

Modified files:
        test/invalid   : Makefile.am Makefile.in tests.txt 
        test/invalid/res/invalid_command_in_table: 
                                                   invalid_command_in_table.2 
        test/invalid/res/texi_copying_not_closed: copying_not_closed.2 
        test/invalid/res/texi_html_not_closed: html_not_closed.2 
        test/invalid/res/texi_ignored_not_closed: ignored_not_closed.2 
        test/invalid/res/texi_macro_call_not_closed: 
                                                     macro_call_not_closed.2 
                                                     
macro_call_not_closed.passfirst 
                                                     
macro_call_not_closed.passtexi 
                                                     macro_call_not_closed.texi 
        test/invalid/res/texi_macro_def_not_closed: 
                                                    macro_def_not_closed.2 
                                                    
macro_def_not_closed.passfirst 
                                                    
macro_def_not_closed.passtexi 
                                                    macro_def_not_closed.texi 
        test/invalid/res/texi_math_not_closed: math_not_closed.2 
        test/invalid/res/texi_tex_not_closed: tex_not_closed.2 
        test/invalid/res/texi_titlepage_not_closed: 
                                                    titlepage_not_closed.2 
        test/invalid/res/texi_verb_not_closed: verb_not_closed.2 
        test/invalid/res/texi_verbatim_not_closed: verbatim_not_closed.2 
        test/invalid/res_all/invalid_command_in_table: 
                                                       
invalid_command_in_table.2 
        test/invalid/res_all/texi_copying_not_closed: 
                                                      copying_not_closed.2 
        test/invalid/res_all/texi_html_not_closed: html_not_closed.2 
        test/invalid/res_all/texi_ignored_not_closed: 
                                                      ignored_not_closed.2 
        test/invalid/res_all/texi_macro_call_not_closed: 
                                                         
macro_call_not_closed.2 
                                                         
macro_call_not_closed.passfirst 
                                                         
macro_call_not_closed.passtexi 
                                                         
macro_call_not_closed.texi 
        test/invalid/res_all/texi_macro_def_not_closed: 
                                                        macro_def_not_closed.2 
                                                        
macro_def_not_closed.passfirst 
                                                        
macro_def_not_closed.passtexi 
                                                        
macro_def_not_closed.texi 
        test/invalid/res_all/texi_tex_not_closed: tex_not_closed.2 
        test/invalid/res_all/texi_titlepage_not_closed: 
                                                        titlepage_not_closed.2 
        test/invalid/res_all/texi_verb_not_closed: verb_not_closed.2 
        test/invalid/res_all/texi_verbatim_not_closed: 
                                                       verbatim_not_closed.2 
        test/invalid/res_info/invalid_command_in_table: 
                                                        
invalid_command_in_table.2 
        test/invalid/res_info/texi_copying_not_closed: 
                                                       copying_not_closed.2 
        test/invalid/res_info/texi_html_not_closed: html_not_closed.2 
        test/invalid/res_info/texi_ignored_not_closed: 
                                                       ignored_not_closed.2 
        test/invalid/res_info/texi_macro_call_not_closed: 
                                                          
macro_call_not_closed.2 
                                                          
macro_call_not_closed.passfirst 
                                                          
macro_call_not_closed.passtexi 
                                                          
macro_call_not_closed.texi 
        test/invalid/res_info/texi_macro_def_not_closed: 
                                                         macro_def_not_closed.2 
                                                         
macro_def_not_closed.passfirst 
                                                         
macro_def_not_closed.passtexi 
                                                         
macro_def_not_closed.texi 
        test/invalid/res_info/texi_tex_not_closed: tex_not_closed.2 
        test/invalid/res_info/texi_titlepage_not_closed: 
                                                         titlepage_not_closed.2 
        test/invalid/res_info/texi_verb_not_closed: verb_not_closed.2 
        test/invalid/res_info/texi_verbatim_not_closed: 
                                                        verbatim_not_closed.2 
        test/misc      : tests.txt 
        test/misc/res/formatting_html32: formatting.2 formatting.html 
        test/misc/res/mini_ker_httex: mini_ker.html 
        test/misc/res/mini_ker_l2h: mini_ker.html 
        test/misc/res/templates: templates.2 
        test/misc/res/verbatim_html: verbatim_html.html 
        test/misc/res_all/formatting_html32: formatting.2 index.html 
        test/misc/res_all/templates: templates.2 
        test/misc/res_all/verbatim_html: verbatim_html.txt 
        test/misc/res_info/formatting_html32: formatting.2 index.html 
        test/misc/res_info/templates: templates.2 
        test/misc/res_info/verbatim_html: verbatim_html.info 
        test/encodings/res/formatting_converted_to_utf8: formatting.2 
                                                         formatting.html 
        test/encodings/res/formatting_fr: formatting.2 formatting.html 
        test/encodings/res/formatting_fr_icons: formatting.2 
                                                formatting.html 
        test/encodings/res/multi_lang: multi_lang.2 
        test/encodings/res/texi_multi_lang: multi_lang.2 
        test/encodings/res/texi_nodetest: nodetest.2 
        test/encodings/res/texi_unknown_language: unknown_language.2 
        test/encodings/res/unknown_language: unknown_language.2 
        test/encodings/res_all/formatting_converted_to_utf8: 
                                                             formatting.2 
        test/encodings/res_all/formatting_fr: formatting.2 
        test/encodings/res_all/formatting_fr_icons: formatting.2 
        test/encodings/res_all/multi_lang: multi_lang.2 
        test/encodings/res_all/texi_multi_lang: multi_lang.2 
        test/encodings/res_all/texi_nodetest: nodetest.2 
        test/encodings/res_all/texi_unknown_language: unknown_language.2 
        test/encodings/res_all/unknown_language: unknown_language.2 
        test/encodings/res_info/formatting_converted_to_utf8: 
                                                              formatting.2 
        test/encodings/res_info/formatting_fr: formatting.2 
        test/encodings/res_info/formatting_fr_icons: formatting.2 
        test/encodings/res_info/multi_lang: multi_lang.2 
        test/encodings/res_info/nodetest_to_utf8_latin1: 
                                                         nodetest_latin1.2 
        test/encodings/res_info/texi_multi_lang: multi_lang.2 
        test/encodings/res_info/texi_nodetest: nodetest.2 
        test/encodings/res_info/texi_unknown_language: 
                                                       unknown_language.2 
        test/encodings/res_info/umlaut: umlaut.2 
        test/encodings/res_info/unknown_language: unknown_language.2 
Added files:
        test/invalid   : node_too_much_arguments.texi 
        test/invalid/res/node_too_much_arguments: 
                                                  node_too_much_arguments.1 
                                                  node_too_much_arguments.2 
                                                  node_too_much_arguments.html 
        test/invalid/res/texi_bad_nesting: bad_nesting.texi.first 
        test/invalid/res/texi_bad_style_nesting: 
                                                 bad_style_nesting.texi.first 
        test/invalid/res/texi_bad_tab_nesting: 
                                               bad_tab_nesting.texi.first 
        test/invalid/res/texi_brace_not_closed: 
                                                brace_not_closed.texi.first 
        test/invalid/res/texi_caption_not_closed: 
                                                  caption_not_closed.texi.first 
        test/invalid/res/texi_code_not_closed: 
                                               code_not_closed.texi.first 
        test/invalid/res/texi_code_not_closed_no_newline: 
                                                          
code_not_closed_no_newline.texi.first 
        test/invalid/res/texi_commands_not_closed: 
                                                   
commands_not_closed.texi.first 
        test/invalid/res/texi_copying_not_closed: 
                                                  copying_not_closed.texi.first 
        test/invalid/res/texi_def_bad_defx_command: 
                                                    
def_bad_defx_command.texi.first 
        test/invalid/res/texi_def_cmd_dble: def_cmd_dble.texi.first 
        test/invalid/res/texi_direntry_dircategory_after_first_node: 
                                                                     
direntry_dircategory_after_first_node.2 
                                                                     
direntry_dircategory_after_first_node.passfirst 
                                                                     
direntry_dircategory_after_first_node.passtexi 
                                                                     
direntry_dircategory_after_first_node.texi 
                                                                     
direntry_dircategory_after_first_node.texi.first 
        test/invalid/res/texi_footnote_not_closed: 
                                                   
footnote_not_closed.texi.first 
        test/invalid/res/texi_formats_not_closed: 
                                                  formats_not_closed.texi.first 
        test/invalid/res/texi_html_not_closed: 
                                               html_not_closed.texi.first 
        test/invalid/res/texi_ignored_not_closed: 
                                                  ignored_not_closed.texi.first 
        test/invalid/res/texi_invalid_command_in_table: 
                                                        
invalid_command_in_table.texi.first 
        test/invalid/res/texi_macro_call_not_closed: 
                                                     
macro_call_not_closed.texi.first 
        test/invalid/res/texi_macro_def_not_closed: 
                                                    
macro_def_not_closed.texi.first 
        test/invalid/res/texi_math_not_closed: 
                                               math_not_closed.texi.first 
        test/invalid/res/texi_multitable_begin_with_tab: 
                                                         
multitable_begin_with_tab.texi.first 
        test/invalid/res/texi_multitable_too_much_col: 
                                                       
multitable_too_much_col.texi.first 
        test/invalid/res/texi_node_in_copying: 
                                               node_in_copying.texi.first 
        test/invalid/res/texi_node_too_much_arguments: 
                                                       
node_too_much_arguments.2 
                                                       
node_too_much_arguments.passfirst 
                                                       
node_too_much_arguments.passtexi 
                                                       
node_too_much_arguments.texi 
                                                       
node_too_much_arguments.texi.first 
        test/invalid/res/texi_not_closed_in_menu: 
                                                  not_closed_in_menu.texi.first 
        test/invalid/res/texi_recursive_copying: 
                                                 recursive_copying.texi.first 
        test/invalid/res/texi_ref_to_unknown_node: 
                                                   
ref_to_unknown_node.texi.first 
        test/invalid/res/texi_style_not_closed_in_cartouche: 
                                                             
style_not_closed_in_cartouche.texi.first 
        test/invalid/res/texi_style_not_closed_in_table_line: 
                                                              
style_not_closed_in_table_line.texi.first 
        test/invalid/res/texi_tab_in_index: tab_in_index.texi.first 
        test/invalid/res/texi_tex_in_copying: tex_in_copying.texi.first 
        test/invalid/res/texi_tex_not_closed: tex_not_closed.texi.first 
        test/invalid/res/texi_titlepage_not_closed: 
                                                    
titlepage_not_closed.texi.first 
        test/invalid/res/texi_unknown_command_with_braces: 
                                                           
unknown_command_with_braces.texi.first 
        test/invalid/res/texi_verb_not_closed: 
                                               verb_not_closed.texi.first 
        test/invalid/res/texi_verbatim_not_closed: 
                                                   
verbatim_not_closed.texi.first 
        test/invalid/res_all/node_too_much_arguments: 
                                                      node_too_much_arguments.1 
                                                      node_too_much_arguments.2 
                                                      
node_too_much_arguments.txt 
        test/invalid/res_all/texi_bad_nesting: bad_nesting.texi.first 
        test/invalid/res_all/texi_bad_style_nesting: 
                                                     
bad_style_nesting.texi.first 
        test/invalid/res_all/texi_bad_tab_nesting: 
                                                   bad_tab_nesting.texi.first 
        test/invalid/res_all/texi_brace_not_closed: 
                                                    brace_not_closed.texi.first 
        test/invalid/res_all/texi_caption_not_closed: 
                                                      
caption_not_closed.texi.first 
        test/invalid/res_all/texi_code_not_closed: 
                                                   code_not_closed.texi.first 
        test/invalid/res_all/texi_code_not_closed_no_newline: 
                                                              
code_not_closed_no_newline.texi.first 
        test/invalid/res_all/texi_commands_not_closed: 
                                                       
commands_not_closed.texi.first 
        test/invalid/res_all/texi_copying_not_closed: 
                                                      
copying_not_closed.texi.first 
        test/invalid/res_all/texi_def_bad_defx_command: 
                                                        
def_bad_defx_command.texi.first 
        test/invalid/res_all/texi_def_cmd_dble: def_cmd_dble.texi.first 
        test/invalid/res_all/texi_direntry_dircategory_after_first_node: 
                                                                         
direntry_dircategory_after_first_node.2 
                                                                         
direntry_dircategory_after_first_node.passfirst 
                                                                         
direntry_dircategory_after_first_node.passtexi 
                                                                         
direntry_dircategory_after_first_node.texi 
                                                                         
direntry_dircategory_after_first_node.texi.first 
        test/invalid/res_all/texi_footnote_not_closed: 
                                                       
footnote_not_closed.texi.first 
        test/invalid/res_all/texi_formats_not_closed: 
                                                      
formats_not_closed.texi.first 
        test/invalid/res_all/texi_html_not_closed: 
                                                   html_not_closed.texi.first 
        test/invalid/res_all/texi_ignored_not_closed: 
                                                      
ignored_not_closed.texi.first 
        test/invalid/res_all/texi_invalid_command_in_table: 
                                                            
invalid_command_in_table.texi.first 
        test/invalid/res_all/texi_macro_call_not_closed: 
                                                         
macro_call_not_closed.texi.first 
        test/invalid/res_all/texi_macro_def_not_closed: 
                                                        
macro_def_not_closed.texi.first 
        test/invalid/res_all/texi_math_not_closed: 
                                                   math_not_closed.texi.first 
        test/invalid/res_all/texi_multitable_begin_with_tab: 
                                                             
multitable_begin_with_tab.texi.first 
        test/invalid/res_all/texi_multitable_too_much_col: 
                                                           
multitable_too_much_col.texi.first 
        test/invalid/res_all/texi_node_in_copying: 
                                                   node_in_copying.texi.first 
        test/invalid/res_all/texi_node_too_much_arguments: 
                                                           
node_too_much_arguments.2 
                                                           
node_too_much_arguments.passfirst 
                                                           
node_too_much_arguments.passtexi 
                                                           
node_too_much_arguments.texi 
                                                           
node_too_much_arguments.texi.first 
        test/invalid/res_all/texi_not_closed_in_menu: 
                                                      
not_closed_in_menu.texi.first 
        test/invalid/res_all/texi_recursive_copying: 
                                                     
recursive_copying.texi.first 
        test/invalid/res_all/texi_ref_to_unknown_node: 
                                                       
ref_to_unknown_node.texi.first 
        test/invalid/res_all/texi_style_not_closed_in_cartouche: 
                                                                 
style_not_closed_in_cartouche.texi.first 
        test/invalid/res_all/texi_style_not_closed_in_table_line: 
                                                                  
style_not_closed_in_table_line.texi.first 
        test/invalid/res_all/texi_tab_in_index: tab_in_index.texi.first 
        test/invalid/res_all/texi_tex_in_copying: 
                                                  tex_in_copying.texi.first 
        test/invalid/res_all/texi_tex_not_closed: 
                                                  tex_not_closed.texi.first 
        test/invalid/res_all/texi_titlepage_not_closed: 
                                                        
titlepage_not_closed.texi.first 
        test/invalid/res_all/texi_unknown_command_with_braces: 
                                                               
unknown_command_with_braces.texi.first 
        test/invalid/res_all/texi_verb_not_closed: 
                                                   verb_not_closed.texi.first 
        test/invalid/res_all/texi_verbatim_not_closed: 
                                                       
verbatim_not_closed.texi.first 
        test/invalid/res_info/node_too_much_arguments: 
                                                       
node_too_much_arguments.1 
                                                       
node_too_much_arguments.2 
                                                       
node_too_much_arguments.info 
        test/invalid/res_info/texi_bad_nesting: bad_nesting.texi.first 
        test/invalid/res_info/texi_bad_style_nesting: 
                                                      
bad_style_nesting.texi.first 
        test/invalid/res_info/texi_bad_tab_nesting: 
                                                    bad_tab_nesting.texi.first 
        test/invalid/res_info/texi_brace_not_closed: 
                                                     
brace_not_closed.texi.first 
        test/invalid/res_info/texi_caption_not_closed: 
                                                       
caption_not_closed.texi.first 
        test/invalid/res_info/texi_code_not_closed: 
                                                    code_not_closed.texi.first 
        test/invalid/res_info/texi_code_not_closed_no_newline: 
                                                               
code_not_closed_no_newline.texi.first 
        test/invalid/res_info/texi_commands_not_closed: 
                                                        
commands_not_closed.texi.first 
        test/invalid/res_info/texi_copying_not_closed: 
                                                       
copying_not_closed.texi.first 
        test/invalid/res_info/texi_def_bad_defx_command: 
                                                         
def_bad_defx_command.texi.first 
        test/invalid/res_info/texi_def_cmd_dble: def_cmd_dble.texi.first 
        test/invalid/res_info/texi_direntry_dircategory_after_first_node: 
                                                                          
direntry_dircategory_after_first_node.2 
                                                                          
direntry_dircategory_after_first_node.passfirst 
                                                                          
direntry_dircategory_after_first_node.passtexi 
                                                                          
direntry_dircategory_after_first_node.texi 
                                                                          
direntry_dircategory_after_first_node.texi.first 
        test/invalid/res_info/texi_footnote_not_closed: 
                                                        
footnote_not_closed.texi.first 
        test/invalid/res_info/texi_formats_not_closed: 
                                                       
formats_not_closed.texi.first 
        test/invalid/res_info/texi_html_not_closed: 
                                                    html_not_closed.texi.first 
        test/invalid/res_info/texi_ignored_not_closed: 
                                                       
ignored_not_closed.texi.first 
        test/invalid/res_info/texi_invalid_command_in_table: 
                                                             
invalid_command_in_table.texi.first 
        test/invalid/res_info/texi_macro_call_not_closed: 
                                                          
macro_call_not_closed.texi.first 
        test/invalid/res_info/texi_macro_def_not_closed: 
                                                         
macro_def_not_closed.texi.first 
        test/invalid/res_info/texi_math_not_closed: 
                                                    math_not_closed.texi.first 
        test/invalid/res_info/texi_multitable_begin_with_tab: 
                                                              
multitable_begin_with_tab.texi.first 
        test/invalid/res_info/texi_multitable_too_much_col: 
                                                            
multitable_too_much_col.texi.first 
        test/invalid/res_info/texi_node_in_copying: 
                                                    node_in_copying.texi.first 
        test/invalid/res_info/texi_node_too_much_arguments: 
                                                            
node_too_much_arguments.2 
                                                            
node_too_much_arguments.passfirst 
                                                            
node_too_much_arguments.passtexi 
                                                            
node_too_much_arguments.texi 
                                                            
node_too_much_arguments.texi.first 
        test/invalid/res_info/texi_not_closed_in_menu: 
                                                       
not_closed_in_menu.texi.first 
        test/invalid/res_info/texi_recursive_copying: 
                                                      
recursive_copying.texi.first 
        test/invalid/res_info/texi_ref_to_unknown_node: 
                                                        
ref_to_unknown_node.texi.first 
        test/invalid/res_info/texi_style_not_closed_in_cartouche: 
                                                                  
style_not_closed_in_cartouche.texi.first 
        test/invalid/res_info/texi_style_not_closed_in_table_line: 
                                                                   
style_not_closed_in_table_line.texi.first 
        test/invalid/res_info/texi_tab_in_index: tab_in_index.texi.first 
        test/invalid/res_info/texi_tex_in_copying: 
                                                   tex_in_copying.texi.first 
        test/invalid/res_info/texi_tex_not_closed: 
                                                   tex_not_closed.texi.first 
        test/invalid/res_info/texi_titlepage_not_closed: 
                                                         
titlepage_not_closed.texi.first 
        test/invalid/res_info/texi_unknown_command_with_braces: 
                                                                
unknown_command_with_braces.texi.first 
        test/invalid/res_info/texi_verb_not_closed: 
                                                    verb_not_closed.texi.first 
        test/invalid/res_info/texi_verbatim_not_closed: 
                                                        
verbatim_not_closed.texi.first 
        test/misc/res/texi_templates: templates.2 templates.passfirst 
                                      templates.passtexi templates.texi 
                                      templates.texi.first 
        test/misc/res/texi_testkb: testkb.texi.first 
        test/misc/res/texi_verbatim_html: verbatim_html.texi.first 
        test/misc/res/texi_viper: viper.texi.first 
        test/misc/res_all/texi_templates: templates.2 
                                          templates.passfirst 
                                          templates.passtexi 
                                          templates.texi 
                                          templates.texi.first 
        test/misc/res_all/texi_testkb: testkb.texi.first 
        test/misc/res_all/texi_verbatim_html: verbatim_html.texi.first 
        test/misc/res_all/texi_viper: viper.texi.first 
        test/misc/res_info/texi_templates: templates.2 
                                           templates.passfirst 
                                           templates.passtexi 
                                           templates.texi 
                                           templates.texi.first 
        test/misc/res_info/texi_testkb: testkb.texi.first 
        test/misc/res_info/texi_verbatim_html: verbatim_html.texi.first 
        test/misc/res_info/texi_viper: viper.texi.first 
        test/contents/res/texi_contents_at_begin: 
                                                  contents_at_begin.texi.first 
        test/contents/res/texi_contents_at_end: 
                                                contents_at_end.texi.first 
        test/contents/res/texi_contents_in_middle_chapter: 
                                                           
contents_in_middle_chapter.texi.first 
        test/contents/res/texi_contents_in_middle_section: 
                                                           
contents_in_middle_section.texi.first 
        test/contents/res/texi_double_contents: 
                                                double_contents.texi.first 
        test/contents/res/texi_double_contents_setcontentsaftertitlepage: 
                                                                          
double_contents_setcontentsaftertitlepage.texi.first 
        test/contents/res/texi_no_content: no_content.texi.first 
        test/contents/res/texi_no_content_setcatpage: 
                                                      
no_content_setcatpage.texi.first 
        test/contents/res_all/texi_contents_at_begin: 
                                                      
contents_at_begin.texi.first 
        test/contents/res_all/texi_contents_at_end: 
                                                    contents_at_end.texi.first 
        test/contents/res_all/texi_contents_in_middle_chapter: 
                                                               
contents_in_middle_chapter.texi.first 
        test/contents/res_all/texi_contents_in_middle_section: 
                                                               
contents_in_middle_section.texi.first 
        test/contents/res_all/texi_double_contents: 
                                                    double_contents.texi.first 
        test/contents/res_all/texi_double_contents_setcontentsaftertitlepage: 
                                                                              
double_contents_setcontentsaftertitlepage.texi.first 
        test/contents/res_all/texi_no_content: no_content.texi.first 
        test/contents/res_all/texi_no_content_setcatpage: 
                                                          
no_content_setcatpage.texi.first 
        test/contents/res_info/texi_contents_at_begin: 
                                                       
contents_at_begin.texi.first 
        test/contents/res_info/texi_contents_at_end: 
                                                     contents_at_end.texi.first 
        test/contents/res_info/texi_contents_in_middle_chapter: 
                                                                
contents_in_middle_chapter.texi.first 
        test/contents/res_info/texi_contents_in_middle_section: 
                                                                
contents_in_middle_section.texi.first 
        test/contents/res_info/texi_double_contents: 
                                                     double_contents.texi.first 
        test/contents/res_info/texi_double_contents_setcontentsaftertitlepage: 
                                                                               
double_contents_setcontentsaftertitlepage.texi.first 
        test/contents/res_info/texi_no_content: no_content.texi.first 
        test/contents/res_info/texi_no_content_setcatpage: 
                                                           
no_content_setcatpage.texi.first 
        test/encodings/res/texi_accent: accent.texi.first 
        test/encodings/res/texi_accentenc: accentenc.texi.first 
        test/encodings/res/texi_documentlanguage_set: 
                                                      
documentlanguage_set.texi.first 
        test/encodings/res/texi_multi_lang: multi_lang.texi.first 
        test/encodings/res/texi_nodetest: nodetest.texi.first 
        test/encodings/res/texi_nodetest_latin1: 
                                                 nodetest_latin1.texi.first 
        test/encodings/res/texi_nodetest_utf8: nodetest_utf8.texi.first 
        test/encodings/res/texi_ogolat2: ogolat2.texi.first 
        test/encodings/res/texi_ogoutf: ogoutf.texi.first 
        test/encodings/res/texi_umlaut: umlaut.texi.first 
        test/encodings/res/texi_unknown_language: 
                                                  unknown_language.texi.first 
        test/encodings/res/texi_weird_accents: weird_accents.texi.first 
        test/encodings/res_all/texi_accent: accent.texi.first 
        test/encodings/res_all/texi_accentenc: accentenc.texi.first 
        test/encodings/res_all/texi_documentlanguage_set: 
                                                          
documentlanguage_set.texi.first 
        test/encodings/res_all/texi_multi_lang: multi_lang.texi.first 
        test/encodings/res_all/texi_nodetest: nodetest.texi.first 
        test/encodings/res_all/texi_nodetest_latin1: 
                                                     nodetest_latin1.texi.first 
        test/encodings/res_all/texi_nodetest_utf8: 
                                                   nodetest_utf8.texi.first 
        test/encodings/res_all/texi_ogolat2: ogolat2.texi.first 
        test/encodings/res_all/texi_ogoutf: ogoutf.texi.first 
        test/encodings/res_all/texi_umlaut: umlaut.texi.first 
        test/encodings/res_all/texi_unknown_language: 
                                                      
unknown_language.texi.first 
        test/encodings/res_all/texi_weird_accents: 
                                                   weird_accents.texi.first 
        test/encodings/res_info/texi_accent: accent.texi.first 
        test/encodings/res_info/texi_accentenc: accentenc.texi.first 
        test/encodings/res_info/texi_documentlanguage_set: 
                                                           
documentlanguage_set.texi.first 
        test/encodings/res_info/texi_multi_lang: multi_lang.texi.first 
        test/encodings/res_info/texi_nodetest: nodetest.texi.first 
        test/encodings/res_info/texi_nodetest_latin1: 
                                                      
nodetest_latin1.texi.first 
        test/encodings/res_info/texi_nodetest_utf8: 
                                                    nodetest_utf8.texi.first 
        test/encodings/res_info/texi_ogolat2: ogolat2.texi.first 
        test/encodings/res_info/texi_ogoutf: ogoutf.texi.first 
        test/encodings/res_info/texi_umlaut: umlaut.texi.first 
        test/encodings/res_info/texi_unknown_language: 
                                                       
unknown_language.texi.first 
        test/encodings/res_info/texi_weird_accents: 
                                                    weird_accents.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/invalid/Makefile.am?cvsroot=texi2html&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/Makefile.in?cvsroot=texi2html&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/tests.txt?cvsroot=texi2html&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/node_too_much_arguments.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/invalid_command_in_table/invalid_command_in_table.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/node_too_much_arguments/node_too_much_arguments.1?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/node_too_much_arguments/node_too_much_arguments.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/node_too_much_arguments/node_too_much_arguments.html?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_bad_nesting/bad_nesting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_bad_style_nesting/bad_style_nesting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_bad_tab_nesting/bad_tab_nesting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_brace_not_closed/brace_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_caption_not_closed/caption_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_code_not_closed/code_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_commands_not_closed/commands_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_copying_not_closed/copying_not_closed.2?cvsroot=texi2html&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_copying_not_closed/copying_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_def_bad_defx_command/def_bad_defx_command.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_def_cmd_dble/def_cmd_dble.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_footnote_not_closed/footnote_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_formats_not_closed/formats_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_html_not_closed/html_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_html_not_closed/html_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_ignored_not_closed/ignored_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_ignored_not_closed/ignored_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_invalid_command_in_table/invalid_command_in_table.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_macro_call_not_closed/macro_call_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_macro_call_not_closed/macro_call_not_closed.passfirst?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_macro_call_not_closed/macro_call_not_closed.passtexi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_macro_call_not_closed/macro_call_not_closed.texi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_macro_call_not_closed/macro_call_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_macro_def_not_closed/macro_def_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_macro_def_not_closed/macro_def_not_closed.passfirst?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_macro_def_not_closed/macro_def_not_closed.passtexi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_macro_def_not_closed/macro_def_not_closed.texi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_macro_def_not_closed/macro_def_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_math_not_closed/math_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_math_not_closed/math_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_multitable_too_much_col/multitable_too_much_col.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_node_in_copying/node_in_copying.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_node_too_much_arguments/node_too_much_arguments.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_node_too_much_arguments/node_too_much_arguments.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_node_too_much_arguments/node_too_much_arguments.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_node_too_much_arguments/node_too_much_arguments.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_node_too_much_arguments/node_too_much_arguments.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_not_closed_in_menu/not_closed_in_menu.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_recursive_copying/recursive_copying.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_tab_in_index/tab_in_index.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_tex_in_copying/tex_in_copying.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_tex_not_closed/tex_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_tex_not_closed/tex_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_titlepage_not_closed/titlepage_not_closed.2?cvsroot=texi2html&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_titlepage_not_closed/titlepage_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_verb_not_closed/verb_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_verb_not_closed/verb_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_verbatim_not_closed/verbatim_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res/texi_verbatim_not_closed/verbatim_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/invalid_command_in_table/invalid_command_in_table.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/node_too_much_arguments/node_too_much_arguments.1?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/node_too_much_arguments/node_too_much_arguments.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/node_too_much_arguments/node_too_much_arguments.txt?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_bad_nesting/bad_nesting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_bad_style_nesting/bad_style_nesting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_bad_tab_nesting/bad_tab_nesting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_brace_not_closed/brace_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_caption_not_closed/caption_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_code_not_closed/code_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_commands_not_closed/commands_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_copying_not_closed/copying_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_copying_not_closed/copying_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_def_bad_defx_command/def_bad_defx_command.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_def_cmd_dble/def_cmd_dble.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_footnote_not_closed/footnote_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_formats_not_closed/formats_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_html_not_closed/html_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_html_not_closed/html_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_ignored_not_closed/ignored_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_ignored_not_closed/ignored_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_invalid_command_in_table/invalid_command_in_table.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.passfirst?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.passtexi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.texi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.passfirst?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.passtexi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.texi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_math_not_closed/math_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_multitable_too_much_col/multitable_too_much_col.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_node_in_copying/node_in_copying.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_not_closed_in_menu/not_closed_in_menu.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_recursive_copying/recursive_copying.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_tab_in_index/tab_in_index.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_tex_in_copying/tex_in_copying.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_tex_not_closed/tex_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_tex_not_closed/tex_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_titlepage_not_closed/titlepage_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_titlepage_not_closed/titlepage_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_verb_not_closed/verb_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_verb_not_closed/verb_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_verbatim_not_closed/verbatim_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_all/texi_verbatim_not_closed/verbatim_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/invalid_command_in_table/invalid_command_in_table.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/node_too_much_arguments/node_too_much_arguments.1?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/node_too_much_arguments/node_too_much_arguments.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/node_too_much_arguments/node_too_much_arguments.info?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_bad_nesting/bad_nesting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_bad_style_nesting/bad_style_nesting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_bad_tab_nesting/bad_tab_nesting.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_brace_not_closed/brace_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_caption_not_closed/caption_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_code_not_closed/code_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_commands_not_closed/commands_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_copying_not_closed/copying_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_copying_not_closed/copying_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_def_bad_defx_command/def_bad_defx_command.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_def_cmd_dble/def_cmd_dble.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_footnote_not_closed/footnote_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_formats_not_closed/formats_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_html_not_closed/html_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_html_not_closed/html_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_ignored_not_closed/ignored_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_ignored_not_closed/ignored_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_invalid_command_in_table/invalid_command_in_table.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.passfirst?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.passtexi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.texi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.passfirst?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.passtexi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.texi?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_math_not_closed/math_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_multitable_too_much_col/multitable_too_much_col.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_node_in_copying/node_in_copying.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_not_closed_in_menu/not_closed_in_menu.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_recursive_copying/recursive_copying.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_tab_in_index/tab_in_index.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_tex_in_copying/tex_in_copying.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_tex_not_closed/tex_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_tex_not_closed/tex_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_titlepage_not_closed/titlepage_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_titlepage_not_closed/titlepage_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_verb_not_closed/verb_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_verb_not_closed/verb_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_verbatim_not_closed/verbatim_not_closed.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/invalid/res_info/texi_verbatim_not_closed/verbatim_not_closed.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/tests.txt?cvsroot=texi2html&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/formatting_html32/formatting.2?cvsroot=texi2html&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/formatting_html32/formatting.html?cvsroot=texi2html&r1=1.25&r2=1.26
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/mini_ker_httex/mini_ker.html?cvsroot=texi2html&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/mini_ker_l2h/mini_ker.html?cvsroot=texi2html&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/templates/templates.2?cvsroot=texi2html&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/texi_templates/templates.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/texi_templates/templates.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/texi_templates/templates.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/texi_templates/templates.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/texi_templates/templates.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/texi_testkb/testkb.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/texi_verbatim_html/verbatim_html.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/texi_viper/viper.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res/verbatim_html/verbatim_html.html?cvsroot=texi2html&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/formatting_html32/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/formatting_html32/index.html?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/templates/templates.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/texi_templates/templates.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/texi_templates/templates.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/texi_templates/templates.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/texi_templates/templates.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/texi_templates/templates.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/texi_testkb/testkb.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/texi_verbatim_html/verbatim_html.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/texi_viper/viper.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_all/verbatim_html/verbatim_html.txt?cvsroot=texi2html&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/formatting_html32/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/formatting_html32/index.html?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/templates/templates.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/texi_templates/templates.2?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/texi_templates/templates.passfirst?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/texi_templates/templates.passtexi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/texi_templates/templates.texi?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/texi_templates/templates.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/texi_testkb/testkb.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/texi_verbatim_html/verbatim_html.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/texi_viper/viper.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/misc/res_info/verbatim_html/verbatim_html.info?cvsroot=texi2html&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res/texi_contents_at_begin/contents_at_begin.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res/texi_contents_at_end/contents_at_end.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res/texi_contents_in_middle_section/contents_in_middle_section.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res/texi_double_contents/double_contents.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res/texi_no_content/no_content.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res/texi_no_content_setcatpage/no_content_setcatpage.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_all/texi_contents_at_begin/contents_at_begin.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_all/texi_contents_at_end/contents_at_end.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_all/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_all/texi_contents_in_middle_section/contents_in_middle_section.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_all/texi_double_contents/double_contents.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_all/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_all/texi_no_content/no_content.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_all/texi_no_content_setcatpage/no_content_setcatpage.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_info/texi_contents_at_begin/contents_at_begin.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_info/texi_contents_at_end/contents_at_end.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_info/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_info/texi_contents_in_middle_section/contents_in_middle_section.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_info/texi_double_contents/double_contents.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_info/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_info/texi_no_content/no_content.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/contents/res_info/texi_no_content_setcatpage/no_content_setcatpage.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/formatting_converted_to_utf8/formatting.2?cvsroot=texi2html&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/formatting_converted_to_utf8/formatting.html?cvsroot=texi2html&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/formatting_fr/formatting.2?cvsroot=texi2html&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/formatting_fr/formatting.html?cvsroot=texi2html&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/formatting_fr_icons/formatting.2?cvsroot=texi2html&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/formatting_fr_icons/formatting.html?cvsroot=texi2html&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/multi_lang/multi_lang.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_accent/accent.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_accentenc/accentenc.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_documentlanguage_set/documentlanguage_set.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_multi_lang/multi_lang.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_multi_lang/multi_lang.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_nodetest/nodetest.2?cvsroot=texi2html&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_nodetest/nodetest.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_nodetest_latin1/nodetest_latin1.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_nodetest_utf8/nodetest_utf8.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_ogolat2/ogolat2.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_ogoutf/ogoutf.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_umlaut/umlaut.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_unknown_language/unknown_language.2?cvsroot=texi2html&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_unknown_language/unknown_language.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/texi_weird_accents/weird_accents.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res/unknown_language/unknown_language.2?cvsroot=texi2html&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/formatting_converted_to_utf8/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/formatting_fr/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/formatting_fr_icons/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/multi_lang/multi_lang.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_accent/accent.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_accentenc/accentenc.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_documentlanguage_set/documentlanguage_set.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_multi_lang/multi_lang.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_multi_lang/multi_lang.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_nodetest/nodetest.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_nodetest/nodetest.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_nodetest_latin1/nodetest_latin1.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_nodetest_utf8/nodetest_utf8.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_ogolat2/ogolat2.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_ogoutf/ogoutf.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_umlaut/umlaut.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_unknown_language/unknown_language.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_unknown_language/unknown_language.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/texi_weird_accents/weird_accents.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_all/unknown_language/unknown_language.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/formatting_converted_to_utf8/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/formatting_fr/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/formatting_fr_icons/formatting.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/multi_lang/multi_lang.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/nodetest_to_utf8_latin1/nodetest_latin1.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_accent/accent.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_accentenc/accentenc.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_documentlanguage_set/documentlanguage_set.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_multi_lang/multi_lang.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_multi_lang/multi_lang.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_nodetest/nodetest.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_nodetest/nodetest.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_nodetest_latin1/nodetest_latin1.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_nodetest_utf8/nodetest_utf8.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_ogolat2/ogolat2.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_ogoutf/ogoutf.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_umlaut/umlaut.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_unknown_language/unknown_language.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_unknown_language/unknown_language.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/texi_weird_accents/weird_accents.texi.first?cvsroot=texi2html&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/umlaut/umlaut.2?cvsroot=texi2html&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texi2html/test/encodings/res_info/unknown_language/unknown_language.2?cvsroot=texi2html&r1=1.1&r2=1.2

Patches:
Index: invalid/Makefile.am
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/invalid/Makefile.am,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- invalid/Makefile.am 31 Jul 2009 15:56:30 -0000      1.7
+++ invalid/Makefile.am 2 Aug 2009 13:13:05 -0000       1.8
@@ -11,7 +11,7 @@
  code_not_closed_no_newline.texi invalid_command_in_table.texi \
  unknown_command_with_braces.texi multitable_begin_with_tab.texi \
  ref_to_unknown_node.texi def_bad_defx_command.texi \
- direntry_dircategory_after_first_node.texi \
+ direntry_dircategory_after_first_node.texi node_too_much_arguments.texi \
  tests.txt res res_all res_info
 
 DISTCLEANFILES = l2h_tmp_dir.init tests.log tests.out

Index: invalid/Makefile.in
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/invalid/Makefile.in,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- invalid/Makefile.in 31 Jul 2009 15:56:30 -0000      1.12
+++ invalid/Makefile.in 2 Aug 2009 13:13:05 -0000       1.13
@@ -142,7 +142,7 @@
  code_not_closed_no_newline.texi invalid_command_in_table.texi \
  unknown_command_with_braces.texi multitable_begin_with_tab.texi \
  ref_to_unknown_node.texi def_bad_defx_command.texi \
- direntry_dircategory_after_first_node.texi \
+ direntry_dircategory_after_first_node.texi node_too_much_arguments.texi \
  tests.txt res res_all res_info
 
 DISTCLEANFILES = l2h_tmp_dir.init tests.log tests.out

Index: invalid/tests.txt
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/invalid/tests.txt,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- invalid/tests.txt   31 Jul 2009 15:56:30 -0000      1.6
+++ invalid/tests.txt   2 Aug 2009 13:13:05 -0000       1.7
@@ -33,6 +33,7 @@
 texi ref_to_unknown_node.texi
 texi def_bad_defx_command.texi
 texi direntry_dircategory_after_first_node.texi
+texi node_too_much_arguments.texi
 brace_not_closed brace_not_closed.texi
 recursive_copying recursive_copying.texi
 bad_nesting bad_nesting.texi
@@ -69,3 +70,4 @@
 ref_to_unknown_node ref_to_unknown_node.texi
 def_bad_defx_command def_bad_defx_command.texi
 direntry_dircategory_after_first_node 
direntry_dircategory_after_first_node.texi
+node_too_much_arguments node_too_much_arguments.texi

Index: invalid/res/invalid_command_in_table/invalid_command_in_table.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/invalid_command_in_table/invalid_command_in_table.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/invalid_command_in_table/invalid_command_in_table.2     28 Jul 
2009 18:42:26 -0000      1.1
+++ invalid/res/invalid_command_in_table/invalid_command_in_table.2     2 Aug 
2009 13:13:05 -0000       1.2
@@ -1,3 +1,3 @@
 *** '{' without macro. Before:  @itemTop,, title (l. 9)
-** Unknown command address@hidden' (left as is) (l. 9)
+** Unknown command address@hidden' (l. 9)
 *** '}' without opening '{' before:  (l. 10)

Index: invalid/res/texi_copying_not_closed/copying_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_copying_not_closed/copying_not_closed.2,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- invalid/res/texi_copying_not_closed/copying_not_closed.2    27 Apr 2009 
01:56:45 -0000      1.2
+++ invalid/res/texi_copying_not_closed/copying_not_closed.2    2 Aug 2009 
13:13:06 -0000       1.3
@@ -1,2 +1 @@
 ** 2 @copying not closed (l. 17)
-** 2 @copying not closed (l. 17)

Index: invalid/res/texi_html_not_closed/html_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_html_not_closed/html_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_html_not_closed/html_not_closed.2  18 Aug 2008 18:04:00 
-0000      1.1
+++ invalid/res/texi_html_not_closed/html_not_closed.2  2 Aug 2009 13:13:07 
-0000       1.2
@@ -1,2 +1 @@
 ** closing @html raw format (l. 13)
-** closing @html raw format (l. 13)

Index: invalid/res/texi_ignored_not_closed/ignored_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_ignored_not_closed/ignored_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_ignored_not_closed/ignored_not_closed.2    18 Aug 2008 
18:04:00 -0000      1.1
+++ invalid/res/texi_ignored_not_closed/ignored_not_closed.2    2 Aug 2009 
13:13:07 -0000       1.2
@@ -1,2 +1 @@
 ** closing ignore (l. 10)
-** closing ignore (l. 10)

Index: invalid/res/texi_macro_call_not_closed/macro_call_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_macro_call_not_closed/macro_call_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_macro_call_not_closed/macro_call_not_closed.2      18 Aug 
2008 18:04:01 -0000      1.1
+++ invalid/res/texi_macro_call_not_closed/macro_call_not_closed.2      2 Aug 
2009 13:13:07 -0000       1.2
@@ -1,2 +1 @@
 ** closing macro1 (3 braces missing) (l. 15)
-** closing macro1 (3 braces missing) (l. 15)

Index: invalid/res/texi_macro_call_not_closed/macro_call_not_closed.passfirst
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_macro_call_not_closed/macro_call_not_closed.passfirst,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_macro_call_not_closed/macro_call_not_closed.passfirst      
18 Aug 2008 18:04:01 -0000      1.1
+++ invalid/res/texi_macro_call_not_closed/macro_call_not_closed.passfirst      
2 Aug 2009 13:13:07 -0000       1.2
@@ -1,4 +1,7 @@
 macro_call_not_closed.texi(,2) 
+macro_call_not_closed.texi(,3) @macro macro1 { arg1 , arg2 }
+macro_call_not_closed.texi(,4) result: @emph{\arg1\} protected \\ -> \\arg1\\ 
@emph{\arg2\}
+macro_call_not_closed.texi(,5) @end macro 
 macro_call_not_closed.texi(,6) 
 macro_call_not_closed.texi(,7) @node Top
 macro_call_not_closed.texi(,8) 

Index: invalid/res/texi_macro_call_not_closed/macro_call_not_closed.passtexi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_macro_call_not_closed/macro_call_not_closed.passtexi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_macro_call_not_closed/macro_call_not_closed.passtexi       
18 Aug 2008 18:04:01 -0000      1.1
+++ invalid/res/texi_macro_call_not_closed/macro_call_not_closed.passtexi       
2 Aug 2009 13:13:07 -0000       1.2
@@ -1,4 +1,7 @@
 macro_call_not_closed.texi(,2) 
+macro_call_not_closed.texi(,3) @macro macro1 { arg1 , arg2 }
+macro_call_not_closed.texi(,4) result: @emph{\arg1\} protected \\ -> \\arg1\\ 
@emph{\arg2\}
+macro_call_not_closed.texi(,5) @end macro 
 macro_call_not_closed.texi(,6) 
 macro_call_not_closed.texi(,7) @node Top
 macro_call_not_closed.texi(,8) 

Index: invalid/res/texi_macro_call_not_closed/macro_call_not_closed.texi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_macro_call_not_closed/macro_call_not_closed.texi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_macro_call_not_closed/macro_call_not_closed.texi   18 Aug 
2008 18:04:01 -0000      1.1
+++ invalid/res/texi_macro_call_not_closed/macro_call_not_closed.texi   2 Aug 
2009 13:13:07 -0000       1.2
@@ -1,5 +1,8 @@
 \input texinfo @c -*-texinfo-*-
 
address@hidden macro1 { arg1 , arg2 }
+result: @emph{\arg1\} protected \\ -> \\arg1\\ @emph{\arg2\}
address@hidden macro 
 
 @node Top
 

Index: invalid/res/texi_macro_def_not_closed/macro_def_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_macro_def_not_closed/macro_def_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_macro_def_not_closed/macro_def_not_closed.2        18 Aug 
2008 18:04:01 -0000      1.1
+++ invalid/res/texi_macro_def_not_closed/macro_def_not_closed.2        2 Aug 
2009 13:13:07 -0000       1.2
@@ -1,2 +1 @@
 ** closing macro (l. 10)
-** closing macro (l. 10)

Index: invalid/res/texi_macro_def_not_closed/macro_def_not_closed.passfirst
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_macro_def_not_closed/macro_def_not_closed.passfirst,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_macro_def_not_closed/macro_def_not_closed.passfirst        
18 Aug 2008 18:04:01 -0000      1.1
+++ invalid/res/texi_macro_def_not_closed/macro_def_not_closed.passfirst        
2 Aug 2009 13:13:07 -0000       1.2
@@ -3,3 +3,8 @@
 macro_def_not_closed.texi(,4) 
 macro_def_not_closed.texi(,5) texte
 macro_def_not_closed.texi(,6) 
+macro_def_not_closed.texi(,7) @macro the_macro {arg1, arg2}
+macro_def_not_closed.texi(,8) 
+macro_def_not_closed.texi(,9) Macro body
+macro_def_not_closed.texi(,10) 
+no file(,) @end macro

Index: invalid/res/texi_macro_def_not_closed/macro_def_not_closed.passtexi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_macro_def_not_closed/macro_def_not_closed.passtexi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_macro_def_not_closed/macro_def_not_closed.passtexi 18 Aug 
2008 18:04:02 -0000      1.1
+++ invalid/res/texi_macro_def_not_closed/macro_def_not_closed.passtexi 2 Aug 
2009 13:13:07 -0000       1.2
@@ -3,3 +3,8 @@
 macro_def_not_closed.texi(,4) 
 macro_def_not_closed.texi(,5) texte
 macro_def_not_closed.texi(,6) 
+macro_def_not_closed.texi(,7) @macro the_macro {arg1, arg2}
+macro_def_not_closed.texi(,8) 
+macro_def_not_closed.texi(,9) Macro body
+macro_def_not_closed.texi(,10) 
+no file(,) @end macro

Index: invalid/res/texi_macro_def_not_closed/macro_def_not_closed.texi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_macro_def_not_closed/macro_def_not_closed.texi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_macro_def_not_closed/macro_def_not_closed.texi     18 Aug 
2008 18:04:02 -0000      1.1
+++ invalid/res/texi_macro_def_not_closed/macro_def_not_closed.texi     2 Aug 
2009 13:13:07 -0000       1.2
@@ -4,3 +4,8 @@
 
 texte
 
address@hidden the_macro {arg1, arg2}
+
+Macro body
+
address@hidden macro

Index: invalid/res/texi_math_not_closed/math_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_math_not_closed/math_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_math_not_closed/math_not_closed.2  18 Aug 2008 18:04:02 
-0000      1.1
+++ invalid/res/texi_math_not_closed/math_not_closed.2  2 Aug 2009 13:13:07 
-0000       1.2
@@ -1,4 +1,2 @@
 *** Closing specially handled @-command math (l. 8)
 *** Closing specially handled @-command math (l. 11)
-*** Closing specially handled @-command math (l. 8)
-*** Closing specially handled @-command math (l. 11)

Index: invalid/res/texi_tex_not_closed/tex_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_tex_not_closed/tex_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_tex_not_closed/tex_not_closed.2    18 Aug 2008 18:04:04 
-0000      1.1
+++ invalid/res/texi_tex_not_closed/tex_not_closed.2    2 Aug 2009 13:13:09 
-0000       1.2
@@ -1,2 +1 @@
 ** closing @tex raw format (l. 10)
-** closing @tex raw format (l. 10)

Index: invalid/res/texi_titlepage_not_closed/titlepage_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_titlepage_not_closed/titlepage_not_closed.2,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- invalid/res/texi_titlepage_not_closed/titlepage_not_closed.2        27 Apr 
2009 01:56:45 -0000      1.2
+++ invalid/res/texi_titlepage_not_closed/titlepage_not_closed.2        2 Aug 
2009 13:13:09 -0000       1.3
@@ -1,2 +1 @@
 ** 2 @titlepage not closed (l. 16)
-** 2 @titlepage not closed (l. 16)

Index: invalid/res/texi_verb_not_closed/verb_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_verb_not_closed/verb_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_verb_not_closed/verb_not_closed.2  18 Aug 2008 18:04:05 
-0000      1.1
+++ invalid/res/texi_verb_not_closed/verb_not_closed.2  2 Aug 2009 13:13:09 
-0000       1.2
@@ -1,2 +1 @@
 ** closing @verb (l. 11)
-** closing @verb (l. 11)

Index: invalid/res/texi_verbatim_not_closed/verbatim_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res/texi_verbatim_not_closed/verbatim_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res/texi_verbatim_not_closed/verbatim_not_closed.2  18 Aug 2008 
18:04:06 -0000      1.1
+++ invalid/res/texi_verbatim_not_closed/verbatim_not_closed.2  2 Aug 2009 
13:13:09 -0000       1.2
@@ -1,2 +1 @@
 ** closing @verbatim raw format (l. 13)
-** closing @verbatim raw format (l. 13)

Index: invalid/res_all/invalid_command_in_table/invalid_command_in_table.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/invalid_command_in_table/invalid_command_in_table.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/invalid_command_in_table/invalid_command_in_table.2 28 Jul 
2009 18:42:28 -0000      1.1
+++ invalid/res_all/invalid_command_in_table/invalid_command_in_table.2 2 Aug 
2009 13:13:09 -0000       1.2
@@ -1,3 +1,3 @@
 *** '{' without macro. Before:  @itemTop,, title (l. 9)
-** Unknown command address@hidden' (left as is) (l. 9)
+** Unknown command address@hidden' (l. 9)
 *** '}' without opening '{' before:  (l. 10)

Index: invalid/res_all/texi_copying_not_closed/copying_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_copying_not_closed/copying_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_copying_not_closed/copying_not_closed.2        28 Jul 
2009 18:42:31 -0000      1.1
+++ invalid/res_all/texi_copying_not_closed/copying_not_closed.2        2 Aug 
2009 13:13:10 -0000       1.2
@@ -1,2 +1 @@
 ** 2 @copying not closed (l. 17)
-** 2 @copying not closed (l. 17)

Index: invalid/res_all/texi_html_not_closed/html_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_html_not_closed/html_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_html_not_closed/html_not_closed.2      28 Jul 2009 
18:42:32 -0000      1.1
+++ invalid/res_all/texi_html_not_closed/html_not_closed.2      2 Aug 2009 
13:13:11 -0000       1.2
@@ -1,2 +1 @@
 ** closing @html raw format (l. 13)
-** closing @html raw format (l. 13)

Index: invalid/res_all/texi_ignored_not_closed/ignored_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_ignored_not_closed/ignored_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_ignored_not_closed/ignored_not_closed.2        28 Jul 
2009 18:42:32 -0000      1.1
+++ invalid/res_all/texi_ignored_not_closed/ignored_not_closed.2        2 Aug 
2009 13:13:11 -0000       1.2
@@ -1,2 +1 @@
 ** closing ignore (l. 10)
-** closing ignore (l. 10)

Index: invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.2  28 Jul 
2009 18:42:32 -0000      1.1
+++ invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.2  2 Aug 
2009 13:13:11 -0000       1.2
@@ -1,2 +1 @@
 ** closing macro1 (3 braces missing) (l. 15)
-** closing macro1 (3 braces missing) (l. 15)

Index: 
invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.passfirst
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.passfirst,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.passfirst  
28 Jul 2009 18:42:32 -0000      1.1
+++ invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.passfirst  
2 Aug 2009 13:13:11 -0000       1.2
@@ -1,4 +1,7 @@
 macro_call_not_closed.texi(,2) 
+macro_call_not_closed.texi(,3) @macro macro1 { arg1 , arg2 }
+macro_call_not_closed.texi(,4) result: @emph{\arg1\} protected \\ -> \\arg1\\ 
@emph{\arg2\}
+macro_call_not_closed.texi(,5) @end macro 
 macro_call_not_closed.texi(,6) 
 macro_call_not_closed.texi(,7) @node Top
 macro_call_not_closed.texi(,8) 

Index: invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.passtexi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.passtexi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.passtexi   
28 Jul 2009 18:42:32 -0000      1.1
+++ invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.passtexi   
2 Aug 2009 13:13:11 -0000       1.2
@@ -1,4 +1,7 @@
 macro_call_not_closed.texi(,2) 
+macro_call_not_closed.texi(,3) @macro macro1 { arg1 , arg2 }
+macro_call_not_closed.texi(,4) result: @emph{\arg1\} protected \\ -> \\arg1\\ 
@emph{\arg2\}
+macro_call_not_closed.texi(,5) @end macro 
 macro_call_not_closed.texi(,6) 
 macro_call_not_closed.texi(,7) @node Top
 macro_call_not_closed.texi(,8) 

Index: invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.texi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.texi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.texi       
28 Jul 2009 18:42:32 -0000      1.1
+++ invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.texi       
2 Aug 2009 13:13:11 -0000       1.2
@@ -1,5 +1,8 @@
 \input texinfo @c -*-texinfo-*-
 
address@hidden macro1 { arg1 , arg2 }
+result: @emph{\arg1\} protected \\ -> \\arg1\\ @emph{\arg2\}
address@hidden macro 
 
 @node Top
 

Index: invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.2    28 Jul 
2009 18:42:32 -0000      1.1
+++ invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.2    2 Aug 
2009 13:13:11 -0000       1.2
@@ -1,2 +1 @@
 ** closing macro (l. 10)
-** closing macro (l. 10)

Index: invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.passfirst
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.passfirst,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.passfirst    
28 Jul 2009 18:42:32 -0000      1.1
+++ invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.passfirst    
2 Aug 2009 13:13:11 -0000       1.2
@@ -3,3 +3,8 @@
 macro_def_not_closed.texi(,4) 
 macro_def_not_closed.texi(,5) texte
 macro_def_not_closed.texi(,6) 
+macro_def_not_closed.texi(,7) @macro the_macro {arg1, arg2}
+macro_def_not_closed.texi(,8) 
+macro_def_not_closed.texi(,9) Macro body
+macro_def_not_closed.texi(,10) 
+no file(,) @end macro

Index: invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.passtexi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.passtexi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.passtexi     
28 Jul 2009 18:42:32 -0000      1.1
+++ invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.passtexi     
2 Aug 2009 13:13:11 -0000       1.2
@@ -3,3 +3,8 @@
 macro_def_not_closed.texi(,4) 
 macro_def_not_closed.texi(,5) texte
 macro_def_not_closed.texi(,6) 
+macro_def_not_closed.texi(,7) @macro the_macro {arg1, arg2}
+macro_def_not_closed.texi(,8) 
+macro_def_not_closed.texi(,9) Macro body
+macro_def_not_closed.texi(,10) 
+no file(,) @end macro

Index: invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.texi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.texi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.texi 28 Jul 
2009 18:42:32 -0000      1.1
+++ invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.texi 2 Aug 
2009 13:13:11 -0000       1.2
@@ -4,3 +4,8 @@
 
 texte
 
address@hidden the_macro {arg1, arg2}
+
+Macro body
+
address@hidden macro

Index: invalid/res_all/texi_tex_not_closed/tex_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_tex_not_closed/tex_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_tex_not_closed/tex_not_closed.2        28 Jul 2009 
18:42:34 -0000      1.1
+++ invalid/res_all/texi_tex_not_closed/tex_not_closed.2        2 Aug 2009 
13:13:12 -0000       1.2
@@ -1,2 +1 @@
 ** closing @tex raw format (l. 10)
-** closing @tex raw format (l. 10)

Index: invalid/res_all/texi_titlepage_not_closed/titlepage_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_titlepage_not_closed/titlepage_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_titlepage_not_closed/titlepage_not_closed.2    28 Jul 
2009 18:42:34 -0000      1.1
+++ invalid/res_all/texi_titlepage_not_closed/titlepage_not_closed.2    2 Aug 
2009 13:13:12 -0000       1.2
@@ -1,2 +1 @@
 ** 2 @titlepage not closed (l. 16)
-** 2 @titlepage not closed (l. 16)

Index: invalid/res_all/texi_verb_not_closed/verb_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_verb_not_closed/verb_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_verb_not_closed/verb_not_closed.2      28 Jul 2009 
18:42:34 -0000      1.1
+++ invalid/res_all/texi_verb_not_closed/verb_not_closed.2      2 Aug 2009 
13:13:12 -0000       1.2
@@ -1,2 +1 @@
 ** closing @verb (l. 11)
-** closing @verb (l. 11)

Index: invalid/res_all/texi_verbatim_not_closed/verbatim_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_all/texi_verbatim_not_closed/verbatim_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_all/texi_verbatim_not_closed/verbatim_not_closed.2      28 Jul 
2009 18:42:34 -0000      1.1
+++ invalid/res_all/texi_verbatim_not_closed/verbatim_not_closed.2      2 Aug 
2009 13:13:12 -0000       1.2
@@ -1,2 +1 @@
 ** closing @verbatim raw format (l. 13)
-** closing @verbatim raw format (l. 13)

Index: invalid/res_info/invalid_command_in_table/invalid_command_in_table.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/invalid_command_in_table/invalid_command_in_table.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/invalid_command_in_table/invalid_command_in_table.2        
28 Jul 2009 18:42:38 -0000      1.1
+++ invalid/res_info/invalid_command_in_table/invalid_command_in_table.2        
2 Aug 2009 13:13:13 -0000       1.2
@@ -1,3 +1,3 @@
 *** '{' without macro. Before:  @itemTop,, title (l. 9)
-** Unknown command address@hidden' (left as is) (l. 9)
+** Unknown command address@hidden' (l. 9)
 *** '}' without opening '{' before:  (l. 10)

Index: invalid/res_info/texi_copying_not_closed/copying_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_copying_not_closed/copying_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_copying_not_closed/copying_not_closed.2       28 Jul 
2009 18:42:40 -0000      1.1
+++ invalid/res_info/texi_copying_not_closed/copying_not_closed.2       2 Aug 
2009 13:13:14 -0000       1.2
@@ -1,2 +1 @@
 ** 2 @copying not closed (l. 17)
-** 2 @copying not closed (l. 17)

Index: invalid/res_info/texi_html_not_closed/html_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_html_not_closed/html_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_html_not_closed/html_not_closed.2     28 Jul 2009 
18:42:41 -0000      1.1
+++ invalid/res_info/texi_html_not_closed/html_not_closed.2     2 Aug 2009 
13:13:14 -0000       1.2
@@ -1,2 +1 @@
 ** closing @html raw format (l. 13)
-** closing @html raw format (l. 13)

Index: invalid/res_info/texi_ignored_not_closed/ignored_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_ignored_not_closed/ignored_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_ignored_not_closed/ignored_not_closed.2       28 Jul 
2009 18:42:41 -0000      1.1
+++ invalid/res_info/texi_ignored_not_closed/ignored_not_closed.2       2 Aug 
2009 13:13:15 -0000       1.2
@@ -1,2 +1 @@
 ** closing ignore (l. 10)
-** closing ignore (l. 10)

Index: invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.2 28 Jul 
2009 18:42:42 -0000      1.1
+++ invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.2 2 Aug 
2009 13:13:15 -0000       1.2
@@ -1,2 +1 @@
 ** closing macro1 (3 braces missing) (l. 15)
-** closing macro1 (3 braces missing) (l. 15)

Index: 
invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.passfirst
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.passfirst,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.passfirst 
28 Jul 2009 18:42:42 -0000      1.1
+++ invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.passfirst 
2 Aug 2009 13:13:15 -0000       1.2
@@ -1,4 +1,7 @@
 macro_call_not_closed.texi(,2) 
+macro_call_not_closed.texi(,3) @macro macro1 { arg1 , arg2 }
+macro_call_not_closed.texi(,4) result: @emph{\arg1\} protected \\ -> \\arg1\\ 
@emph{\arg2\}
+macro_call_not_closed.texi(,5) @end macro 
 macro_call_not_closed.texi(,6) 
 macro_call_not_closed.texi(,7) @node Top
 macro_call_not_closed.texi(,8) 

Index: 
invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.passtexi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.passtexi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.passtexi  
28 Jul 2009 18:42:42 -0000      1.1
+++ invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.passtexi  
2 Aug 2009 13:13:15 -0000       1.2
@@ -1,4 +1,7 @@
 macro_call_not_closed.texi(,2) 
+macro_call_not_closed.texi(,3) @macro macro1 { arg1 , arg2 }
+macro_call_not_closed.texi(,4) result: @emph{\arg1\} protected \\ -> \\arg1\\ 
@emph{\arg2\}
+macro_call_not_closed.texi(,5) @end macro 
 macro_call_not_closed.texi(,6) 
 macro_call_not_closed.texi(,7) @node Top
 macro_call_not_closed.texi(,8) 

Index: invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.texi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.texi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.texi      
28 Jul 2009 18:42:42 -0000      1.1
+++ invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.texi      
2 Aug 2009 13:13:15 -0000       1.2
@@ -1,5 +1,8 @@
 \input texinfo @c -*-texinfo-*-
 
address@hidden macro1 { arg1 , arg2 }
+result: @emph{\arg1\} protected \\ -> \\arg1\\ @emph{\arg2\}
address@hidden macro 
 
 @node Top
 

Index: invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.2   28 Jul 
2009 18:42:42 -0000      1.1
+++ invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.2   2 Aug 
2009 13:13:15 -0000       1.2
@@ -1,2 +1 @@
 ** closing macro (l. 10)
-** closing macro (l. 10)

Index: invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.passfirst
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.passfirst,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.passfirst   
28 Jul 2009 18:42:42 -0000      1.1
+++ invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.passfirst   
2 Aug 2009 13:13:15 -0000       1.2
@@ -3,3 +3,8 @@
 macro_def_not_closed.texi(,4) 
 macro_def_not_closed.texi(,5) texte
 macro_def_not_closed.texi(,6) 
+macro_def_not_closed.texi(,7) @macro the_macro {arg1, arg2}
+macro_def_not_closed.texi(,8) 
+macro_def_not_closed.texi(,9) Macro body
+macro_def_not_closed.texi(,10) 
+no file(,) @end macro

Index: invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.passtexi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.passtexi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.passtexi    
28 Jul 2009 18:42:42 -0000      1.1
+++ invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.passtexi    
2 Aug 2009 13:13:15 -0000       1.2
@@ -3,3 +3,8 @@
 macro_def_not_closed.texi(,4) 
 macro_def_not_closed.texi(,5) texte
 macro_def_not_closed.texi(,6) 
+macro_def_not_closed.texi(,7) @macro the_macro {arg1, arg2}
+macro_def_not_closed.texi(,8) 
+macro_def_not_closed.texi(,9) Macro body
+macro_def_not_closed.texi(,10) 
+no file(,) @end macro

Index: invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.texi
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.texi,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.texi        
28 Jul 2009 18:42:42 -0000      1.1
+++ invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.texi        
2 Aug 2009 13:13:15 -0000       1.2
@@ -4,3 +4,8 @@
 
 texte
 
address@hidden the_macro {arg1, arg2}
+
+Macro body
+
address@hidden macro

Index: invalid/res_info/texi_tex_not_closed/tex_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_tex_not_closed/tex_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_tex_not_closed/tex_not_closed.2       28 Jul 2009 
18:42:43 -0000      1.1
+++ invalid/res_info/texi_tex_not_closed/tex_not_closed.2       2 Aug 2009 
13:13:16 -0000       1.2
@@ -1,2 +1 @@
 ** closing @tex raw format (l. 10)
-** closing @tex raw format (l. 10)

Index: invalid/res_info/texi_titlepage_not_closed/titlepage_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_titlepage_not_closed/titlepage_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_titlepage_not_closed/titlepage_not_closed.2   28 Jul 
2009 18:42:44 -0000      1.1
+++ invalid/res_info/texi_titlepage_not_closed/titlepage_not_closed.2   2 Aug 
2009 13:13:16 -0000       1.2
@@ -1,2 +1 @@
 ** 2 @titlepage not closed (l. 16)
-** 2 @titlepage not closed (l. 16)

Index: invalid/res_info/texi_verb_not_closed/verb_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_verb_not_closed/verb_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_verb_not_closed/verb_not_closed.2     28 Jul 2009 
18:42:44 -0000      1.1
+++ invalid/res_info/texi_verb_not_closed/verb_not_closed.2     2 Aug 2009 
13:13:16 -0000       1.2
@@ -1,2 +1 @@
 ** closing @verb (l. 11)
-** closing @verb (l. 11)

Index: invalid/res_info/texi_verbatim_not_closed/verbatim_not_closed.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/invalid/res_info/texi_verbatim_not_closed/verbatim_not_closed.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- invalid/res_info/texi_verbatim_not_closed/verbatim_not_closed.2     28 Jul 
2009 18:42:44 -0000      1.1
+++ invalid/res_info/texi_verbatim_not_closed/verbatim_not_closed.2     2 Aug 
2009 13:13:16 -0000       1.2
@@ -1,2 +1 @@
 ** closing @verbatim raw format (l. 13)
-** closing @verbatim raw format (l. 13)

Index: misc/tests.txt
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/misc/tests.txt,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- misc/tests.txt      1 Nov 2008 00:01:31 -0000       1.3
+++ misc/tests.txt      2 Aug 2009 13:13:16 -0000       1.4
@@ -1,6 +1,7 @@
 texi testkb.texi
 texi verbatim_html.texi
 texi viper.texi -ifinfo
+texi templates.texi
 testkb testkb.texi
 verbatim_html verbatim_html.texi
 viper_unsplit viper.texi -ifinfo

Index: misc/res/formatting_html32/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res/formatting_html32/formatting.2,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- misc/res/formatting_html32/formatting.2     27 Apr 2009 01:56:47 -0000      
1.6
+++ misc/res/formatting_html32/formatting.2     2 Aug 2009 13:13:16 -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: misc/res/formatting_html32/formatting.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res/formatting_html32/formatting.html,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- misc/res/formatting_html32/formatting.html  23 May 2009 17:09:51 -0000      
1.25
+++ misc/res/formatting_html32/formatting.html  2 Aug 2009 13:13:16 -0000       
1.26
@@ -1247,7 +1247,7 @@
 </p>
 <p align="right">f-lushright
 </p>
-<p align="center"> ce-ntered line
+<p align="center">ce-ntered line
 </p>
 <pre>\input texinfo @c -*-texinfo-*-
 
@@ -1941,7 +1941,7 @@
 </p>
 <p align="right">f-lushright
 </p>
-<p align="center"> ce-ntered line
+<p align="center">ce-ntered line
 </p>
 <pre>\input texinfo @c -*-texinfo-*-
 

Index: misc/res/mini_ker_httex/mini_ker.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res/mini_ker_httex/mini_ker.html,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- misc/res/mini_ker_httex/mini_ker.html       17 May 2009 15:35:36 -0000      
1.13
+++ misc/res/mini_ker_httex/mini_ker.html       2 Aug 2009 13:13:17 -0000       
1.14
@@ -5975,7 +5975,7 @@
 <h2 class="appendixsec">C.1 GNU Free Documentation License</h2>
 
 <a name="index-FDL_002c-GNU-Free-Documentation-License"></a>
-<p align="center"> Version 1.1, March 2000
+<p align="center">Version 1.1, March 2000
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="display">Copyright &copy; 2000 Free 
Software Foundation, Inc.
 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA

Index: misc/res/mini_ker_l2h/mini_ker.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res/mini_ker_l2h/mini_ker.html,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- misc/res/mini_ker_l2h/mini_ker.html 17 May 2009 15:35:36 -0000      1.13
+++ misc/res/mini_ker_l2h/mini_ker.html 2 Aug 2009 13:13:17 -0000       1.14
@@ -6587,7 +6587,7 @@
 <h2 class="appendixsec">C.1 GNU Free Documentation License</h2>
 
 <a name="index-FDL_002c-GNU-Free-Documentation-License"></a>
-<p align="center"> Version 1.1, March 2000
+<p align="center">Version 1.1, March 2000
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="display">Copyright &copy; 2000 Free 
Software Foundation, Inc.
 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA

Index: misc/res/templates/templates.2
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/misc/res/templates/templates.2,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- misc/res/templates/templates.2      21 Jun 2009 09:25:44 -0000      1.3
+++ misc/res/templates/templates.2      2 Aug 2009 13:13:17 -0000       1.4
@@ -1,4 +1,4 @@
 ** `Related' doesn't appear in menus
-** `Overview' is up for `Related', but has no menu entry for this node (l. 55)
-*** Undefined node `EExpansion' in @xref (l. 263)
+** `Overview' is up for `Related', but has no menu entry for this node (l. 58)
 *** Undefined node `EExpansion' in @xref (l. 266)
+*** Undefined node `EExpansion' in @xref (l. 269)

Index: misc/res/verbatim_html/verbatim_html.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res/verbatim_html/verbatim_html.html,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- misc/res/verbatim_html/verbatim_html.html   30 Jul 2009 09:57:24 -0000      
1.13
+++ misc/res/verbatim_html/verbatim_html.html   2 Aug 2009 13:13:18 -0000       
1.14
@@ -229,12 +229,12 @@
 </table>
 
 <p>A flushright
-</p><p align="right"> some text flushed right
+</p><p align="right">some text flushed right
 </p>
-<p>A center </p><p align="center"> Centered line
+<p>A center </p><p align="center">Centered line
 </p><p>And a center after empty line
 </p>
-<p align="center"> centered line after empty line
+<p align="center">centered line after empty line
 </p>
 <p>And a center at end of line </p>
 <p>And an empty center </p>   
@@ -350,7 +350,7 @@
 <h2 class="section">3.1 node</h2>
 
 <p>A node with gggggggg
-before example </p><table><tr><td>&nbsp;</td><td><pre class="example"> after 
example
+before example </p><table><tr><td>&nbsp;</td><td><pre class="example">after 
example
 
 the example
 before end example  </pre></td></tr></table>

Index: misc/res_all/formatting_html32/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res_all/formatting_html32/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- misc/res_all/formatting_html32/formatting.2 30 Jul 2009 09:54:31 -0000      
1.1
+++ misc/res_all/formatting_html32/formatting.2 2 Aug 2009 13:13:18 -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)
@@ -47,11 +51,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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)
@@ -82,11 +86,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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)
@@ -117,11 +121,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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)
@@ -152,11 +156,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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)
@@ -187,11 +191,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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)
@@ -223,11 +227,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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: misc/res_all/formatting_html32/index.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res_all/formatting_html32/index.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- misc/res_all/formatting_html32/index.html   30 Jul 2009 09:54:31 -0000      
1.1
+++ misc/res_all/formatting_html32/index.html   2 Aug 2009 13:13:18 -0000       
1.2
@@ -1245,7 +1245,7 @@
 </p>
 <p align="right">f-lushright
 </p>
-<p align="center"> ce-ntered line
+<p align="center">ce-ntered line
 </p>
 
 <pre>in verbatim ''
@@ -1930,7 +1930,7 @@
 </p>
 <p align="right">f-lushright
 </p>
-<p align="center"> ce-ntered line
+<p align="center">ce-ntered line
 </p>
 
 <pre>in verbatim ''

Index: misc/res_all/templates/templates.2
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/misc/res_all/templates/templates.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- misc/res_all/templates/templates.2  30 Jul 2009 09:54:32 -0000      1.1
+++ misc/res_all/templates/templates.2  2 Aug 2009 13:13:18 -0000       1.2
@@ -1,4 +1,4 @@
 ** `Related' doesn't appear in menus
-** `Overview' is up for `Related', but has no menu entry for this node (l. 55)
-*** Undefined node `EExpansion' in @xref (l. 263)
+** `Overview' is up for `Related', but has no menu entry for this node (l. 58)
 *** Undefined node `EExpansion' in @xref (l. 266)
+*** Undefined node `EExpansion' in @xref (l. 269)

Index: misc/res_all/verbatim_html/verbatim_html.txt
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res_all/verbatim_html/verbatim_html.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- misc/res_all/verbatim_html/verbatim_html.txt        30 Jul 2009 09:57:24 
-0000      1.2
+++ misc/res_all/verbatim_html/verbatim_html.txt        2 Aug 2009 13:13:19 
-0000       1.3
@@ -108,7 +108,7 @@
  new line
 
 A flushright
- some text flushed right
+some text flushed right
 
 A center Centered line
 And a center after empty line

Index: misc/res_info/formatting_html32/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res_info/formatting_html32/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- misc/res_info/formatting_html32/formatting.2        30 Jul 2009 09:54:33 
-0000      1.1
+++ misc/res_info/formatting_html32/formatting.2        2 Aug 2009 13:13:19 
-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)
@@ -47,11 +51,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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)
@@ -82,11 +86,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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)
@@ -117,11 +121,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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)
@@ -152,11 +156,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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)
@@ -187,11 +191,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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)
@@ -223,11 +227,11 @@
 ** no image file for f--ile, (using f--ile.e--xt) (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: misc/res_info/formatting_html32/index.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res_info/formatting_html32/index.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- misc/res_info/formatting_html32/index.html  30 Jul 2009 09:54:33 -0000      
1.1
+++ misc/res_info/formatting_html32/index.html  2 Aug 2009 13:13:19 -0000       
1.2
@@ -1245,7 +1245,7 @@
 </p>
 <p align="right">f-lushright
 </p>
-<p align="center"> ce-ntered line
+<p align="center">ce-ntered line
 </p>
 
 <pre>in verbatim ''
@@ -1930,7 +1930,7 @@
 </p>
 <p align="right">f-lushright
 </p>
-<p align="center"> ce-ntered line
+<p align="center">ce-ntered line
 </p>
 
 <pre>in verbatim ''

Index: misc/res_info/templates/templates.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res_info/templates/templates.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- misc/res_info/templates/templates.2 30 Jul 2009 09:54:34 -0000      1.1
+++ misc/res_info/templates/templates.2 2 Aug 2009 13:13:19 -0000       1.2
@@ -1,4 +1,5 @@
 ** `Related' doesn't appear in menus
-** `Overview' is up for `Related', but has no menu entry for this node (l. 55)
-*** Undefined node `EExpansion' in @xref (l. 263)
+** `Overview' is up for `Related', but has no menu entry for this node (l. 58)
 *** Undefined node `EExpansion' in @xref (l. 266)
+*** Undefined node `EExpansion' in @xref (l. 269)
+** `.' or `,' must follow @xref. (l. 269)

Index: misc/res_info/verbatim_html/verbatim_html.info
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/misc/res_info/verbatim_html/verbatim_html.info,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3

Index: encodings/res/formatting_converted_to_utf8/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res/formatting_converted_to_utf8/formatting.2,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- encodings/res/formatting_converted_to_utf8/formatting.2     27 Apr 2009 
01:56:41 -0000      1.6
+++ encodings/res/formatting_converted_to_utf8/formatting.2     2 Aug 2009 
13:13:22 -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: encodings/res/formatting_converted_to_utf8/formatting.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res/formatting_converted_to_utf8/formatting.html,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- encodings/res/formatting_converted_to_utf8/formatting.html  17 May 2009 
15:35:23 -0000      1.22
+++ encodings/res/formatting_converted_to_utf8/formatting.html  2 Aug 2009 
13:13:22 -0000       1.23
@@ -1263,7 +1263,7 @@
 </p>
 <p align="right">f–lushright
 </p>
-<p align="center"> ce–ntered line
+<p align="center">ce–ntered line
 </p>
 <pre class="verbatim">\input texinfo @c -*-texinfo-*-
 
@@ -1957,7 +1957,7 @@
 </p>
 <p align="right">f–lushright
 </p>
-<p align="center"> ce–ntered line
+<p align="center">ce–ntered line
 </p>
 <pre class="verbatim">\input texinfo @c -*-texinfo-*-
 

Index: encodings/res/formatting_fr/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res/formatting_fr/formatting.2,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- encodings/res/formatting_fr/formatting.2    27 Apr 2009 01:56:41 -0000      
1.6
+++ encodings/res/formatting_fr/formatting.2    2 Aug 2009 13:13:22 -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: encodings/res/formatting_fr/formatting.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res/formatting_fr/formatting.html,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- encodings/res/formatting_fr/formatting.html 23 May 2009 17:09:44 -0000      
1.24
+++ encodings/res/formatting_fr/formatting.html 2 Aug 2009 13:13:22 -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: encodings/res/formatting_fr_icons/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res/formatting_fr_icons/formatting.2,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- encodings/res/formatting_fr_icons/formatting.2      27 Apr 2009 01:56:42 
-0000      1.6
+++ encodings/res/formatting_fr_icons/formatting.2      2 Aug 2009 13:13:22 
-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: encodings/res/formatting_fr_icons/formatting.html
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res/formatting_fr_icons/formatting.html,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- encodings/res/formatting_fr_icons/formatting.html   23 May 2009 17:09:44 
-0000      1.24
+++ encodings/res/formatting_fr_icons/formatting.html   2 Aug 2009 13:13:22 
-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: encodings/res/multi_lang/multi_lang.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res/multi_lang/multi_lang.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res/multi_lang/multi_lang.2       18 Aug 2008 18:02:18 -0000      
1.1
+++ encodings/res/multi_lang/multi_lang.2       2 Aug 2009 13:13:23 -0000       
1.2
@@ -0,0 +1 @@
+** NOWHERE is not a valid region code. (l. 5)

Index: encodings/res/texi_multi_lang/multi_lang.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res/texi_multi_lang/multi_lang.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res/texi_multi_lang/multi_lang.2  18 Aug 2008 18:02:55 -0000      
1.1
+++ encodings/res/texi_multi_lang/multi_lang.2  2 Aug 2009 13:13:23 -0000       
1.2
@@ -0,0 +1 @@
+** NOWHERE is not a valid region code. (l. 5)

Index: encodings/res/texi_nodetest/nodetest.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res/texi_nodetest/nodetest.2,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- encodings/res/texi_nodetest/nodetest.2      9 Jan 2009 16:55:21 -0000       
1.2
+++ encodings/res/texi_nodetest/nodetest.2      2 Aug 2009 13:13:23 -0000       
1.3
@@ -1,2 +1 @@
 *** Duplicate node for anchor found: @,{c} (l. 269)
-*** Duplicate node for anchor found: @,{c} (l. 269)

Index: encodings/res/texi_unknown_language/unknown_language.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res/texi_unknown_language/unknown_language.2,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- encodings/res/texi_unknown_language/unknown_language.2      17 May 2009 
15:35:24 -0000      1.2
+++ encodings/res/texi_unknown_language/unknown_language.2      2 Aug 2009 
13:13:24 -0000       1.3
@@ -1,4 +1,5 @@
+** unknown is not a valid language code. (l. 5)
 *** Translations for 'unknown' not found. Reverting to 'en'. (l. 5)
-*** Translations for 'another_UNKNOWN' not found. Reverting to 'en'. (l. 12)
-*** Translations for 'unknown' not found. Reverting to 'en'. (l. 5)
+** another is not a valid language code. (l. 12)
+** UNKNOWN is not a valid region code. (l. 12)
 *** Translations for 'another_UNKNOWN' not found. Reverting to 'en'. (l. 12)

Index: encodings/res/unknown_language/unknown_language.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res/unknown_language/unknown_language.2,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- encodings/res/unknown_language/unknown_language.2   17 May 2009 15:35:25 
-0000      1.2
+++ encodings/res/unknown_language/unknown_language.2   2 Aug 2009 13:13:24 
-0000       1.3
@@ -1,2 +1,5 @@
+** unknown is not a valid language code. (l. 5)
 *** Translations for 'unknown' not found. Reverting to 'en'. (l. 5)
+** another is not a valid language code. (l. 12)
+** UNKNOWN is not a valid region code. (l. 12)
 *** Translations for 'another_UNKNOWN' not found. Reverting to 'en'. (l. 12)

Index: encodings/res_all/formatting_converted_to_utf8/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_all/formatting_converted_to_utf8/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_all/formatting_converted_to_utf8/formatting.2 6 Jul 2009 
21:59:22 -0000       1.1
+++ encodings/res_all/formatting_converted_to_utf8/formatting.2 2 Aug 2009 
13:13:25 -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)
@@ -36,11 +40,11 @@
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -60,11 +64,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -84,11 +88,11 @@
 *** First argument to @inforef may not be empty (l. 28 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -108,11 +112,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -132,11 +136,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -157,11 +161,11 @@
 *** @center should not appear in another format (l. 42 in @mymacro)
 *** Can't find simplest.texi, skipping (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: encodings/res_all/formatting_fr/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_all/formatting_fr/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_all/formatting_fr/formatting.2        6 Jul 2009 21:59:22 
-0000       1.1
+++ encodings/res_all/formatting_fr/formatting.2        2 Aug 2009 13:13:25 
-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)
@@ -36,11 +40,11 @@
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -60,11 +64,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -84,11 +88,11 @@
 *** First argument to @inforef may not be empty (l. 28 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -108,11 +112,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -132,11 +136,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -157,11 +161,11 @@
 *** @center should not appear in another format (l. 42 in @mymacro)
 *** Can't find simplest.texi, skipping (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: encodings/res_all/formatting_fr_icons/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_all/formatting_fr_icons/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_all/formatting_fr_icons/formatting.2  6 Jul 2009 21:59:22 
-0000       1.1
+++ encodings/res_all/formatting_fr_icons/formatting.2  2 Aug 2009 13:13:25 
-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)
@@ -36,11 +40,11 @@
 ** Empty index entry for @deffn (l. 42 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -60,11 +64,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -84,11 +88,11 @@
 *** First argument to @inforef may not be empty (l. 28 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -108,11 +112,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -132,11 +136,11 @@
 *** First argument to @inforef may not be empty (l. 18 in @mymacro)
 *** Can't find simplest.texi, skipping (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)
@@ -157,11 +161,11 @@
 *** @center should not appear in another format (l. 42 in @mymacro)
 *** Can't find simplest.texi, skipping (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: encodings/res_all/multi_lang/multi_lang.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_all/multi_lang/multi_lang.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_all/multi_lang/multi_lang.2   6 Jul 2009 21:59:22 -0000       
1.1
+++ encodings/res_all/multi_lang/multi_lang.2   2 Aug 2009 13:13:25 -0000       
1.2
@@ -0,0 +1 @@
+** NOWHERE is not a valid region code. (l. 5)

Index: encodings/res_all/texi_multi_lang/multi_lang.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_all/texi_multi_lang/multi_lang.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_all/texi_multi_lang/multi_lang.2      6 Jul 2009 21:59:32 
-0000       1.1
+++ encodings/res_all/texi_multi_lang/multi_lang.2      2 Aug 2009 13:13:26 
-0000       1.2
@@ -0,0 +1 @@
+** NOWHERE is not a valid region code. (l. 5)

Index: encodings/res_all/texi_nodetest/nodetest.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_all/texi_nodetest/nodetest.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_all/texi_nodetest/nodetest.2  6 Jul 2009 21:59:32 -0000       
1.1
+++ encodings/res_all/texi_nodetest/nodetest.2  2 Aug 2009 13:13:27 -0000       
1.2
@@ -1,2 +1 @@
 *** Duplicate node for anchor found: @,{c} (l. 269)
-*** Duplicate node for anchor found: @,{c} (l. 269)

Index: encodings/res_all/texi_unknown_language/unknown_language.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_all/texi_unknown_language/unknown_language.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_all/texi_unknown_language/unknown_language.2  6 Jul 2009 
21:59:33 -0000       1.1
+++ encodings/res_all/texi_unknown_language/unknown_language.2  2 Aug 2009 
13:13:27 -0000       1.2
@@ -1,4 +1,5 @@
+** unknown is not a valid language code. (l. 5)
 *** Translations for 'unknown' not found. Reverting to 'en'. (l. 5)
-*** Translations for 'another_UNKNOWN' not found. Reverting to 'en'. (l. 12)
-*** Translations for 'unknown' not found. Reverting to 'en'. (l. 5)
+** another is not a valid language code. (l. 12)
+** UNKNOWN is not a valid region code. (l. 12)
 *** Translations for 'another_UNKNOWN' not found. Reverting to 'en'. (l. 12)

Index: encodings/res_all/unknown_language/unknown_language.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_all/unknown_language/unknown_language.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_all/unknown_language/unknown_language.2       6 Jul 2009 
21:59:34 -0000       1.1
+++ encodings/res_all/unknown_language/unknown_language.2       2 Aug 2009 
13:13:28 -0000       1.2
@@ -1,2 +1,5 @@
+** unknown is not a valid language code. (l. 5)
 *** Translations for 'unknown' not found. Reverting to 'en'. (l. 5)
+** another is not a valid language code. (l. 12)
+** UNKNOWN is not a valid region code. (l. 12)
 *** Translations for 'another_UNKNOWN' not found. Reverting to 'en'. (l. 12)

Index: encodings/res_info/formatting_converted_to_utf8/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_info/formatting_converted_to_utf8/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_info/formatting_converted_to_utf8/formatting.2        6 Jul 
2009 21:59:37 -0000       1.1
+++ encodings/res_info/formatting_converted_to_utf8/formatting.2        2 Aug 
2009 13:13:28 -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)
@@ -65,7 +71,7 @@
 ** Cannot find @image file `f--ile.txt' (l. 18 in @mymacro)
 ** Cannot find @image file `file.txt' (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)
@@ -97,7 +103,7 @@
 ** Cannot find @image file `f--ile.txt' (l. 28 in @mymacro)
 ** Cannot find @image file `file.txt' (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)
@@ -129,7 +135,7 @@
 ** Cannot find @image file `f--ile.txt' (l. 18 in @mymacro)
 ** Cannot find @image file `file.txt' (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)
@@ -156,12 +162,14 @@
 ** Cannot find @image file `f--ile.txt' (l. 18 in @mymacro)
 ** Cannot find @image file `f-ile.txt' (l. 18 in @mymacro)
 ** Cannot find @image file ``'@..txt' (l. 18 in @mymacro)
+** `.' or `,' must follow @xref, not `. (l. 18 in @mymacro)
+** `.' or `,' must follow @xref, not `. (l. 18 in @mymacro)
 *** Can't find simplest.texi, skipping (l. 18 in @mymacro)
 ** Cannot find @image file `f-ile.txt' (l. 18 in @mymacro)
 ** Cannot find @image file `f--ile.txt' (l. 18 in @mymacro)
 ** Cannot find @image file `file.txt' (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)
@@ -188,12 +196,14 @@
 ** Cannot find @image file `f--ile.txt' (l. 38 in @mymacro)
 ** Cannot find @image file `f-ile.txt' (l. 38 in @mymacro)
 ** Cannot find @image file ``'@..txt' (l. 38 in @mymacro)
+** `.' or `,' must follow @xref, not `. (l. 38 in @mymacro)
+** `.' or `,' must follow @xref, not `. (l. 38 in @mymacro)
 *** Can't find simplest.texi, skipping (l. 38 in @mymacro)
 ** Cannot find @image file `f-ile.txt' (l. 38 in @mymacro)
 ** Cannot find @image file `f--ile.txt' (l. 38 in @mymacro)
 ** Cannot find @image file `file.txt' (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)
@@ -226,7 +236,7 @@
 ** Cannot find @image file `f--ile.txt' (l. 42 in @mymacro)
 ** Cannot find @image file `file.txt' (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)
@@ -245,3 +255,5 @@
 *** First argument to @inforef may not be empty (l. 42 in @mymacro)
 *** First argument to @inforef may not be empty (l. 42 in @mymacro)
 *** First argument to @inforef may not be empty (l. 42 in @mymacro)
+** `.' or `,' must follow @xref, not `. (l. 43)
+** `.' or `,' must follow @xref, not `. (l. 43)

Index: encodings/res_info/formatting_fr/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_info/formatting_fr/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_info/formatting_fr/formatting.2       6 Jul 2009 21:59:37 
-0000       1.1
+++ encodings/res_info/formatting_fr/formatting.2       2 Aug 2009 13:13:28 
-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)
@@ -65,7 +71,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)
@@ -97,7 +103,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)
@@ -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)
@@ -161,7 +167,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)
@@ -193,7 +199,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)
@@ -226,7 +232,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: encodings/res_info/formatting_fr_icons/formatting.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_info/formatting_fr_icons/formatting.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_info/formatting_fr_icons/formatting.2 6 Jul 2009 21:59:37 
-0000       1.1
+++ encodings/res_info/formatting_fr_icons/formatting.2 2 Aug 2009 13:13:29 
-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)
@@ -65,7 +71,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)
@@ -97,7 +103,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)
@@ -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)
@@ -161,7 +167,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)
@@ -193,7 +199,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)
@@ -226,7 +232,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: encodings/res_info/multi_lang/multi_lang.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_info/multi_lang/multi_lang.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_info/multi_lang/multi_lang.2  6 Jul 2009 21:59:37 -0000       
1.1
+++ encodings/res_info/multi_lang/multi_lang.2  2 Aug 2009 13:13:29 -0000       
1.2
@@ -0,0 +1 @@
+** NOWHERE is not a valid region code. (l. 5)

Index: encodings/res_info/nodetest_to_utf8_latin1/nodetest_latin1.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_info/nodetest_to_utf8_latin1/nodetest_latin1.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_info/nodetest_to_utf8_latin1/nodetest_latin1.2        6 Jul 
2009 21:59:40 -0000       1.1
+++ encodings/res_info/nodetest_to_utf8_latin1/nodetest_latin1.2        2 Aug 
2009 13:13:29 -0000       1.2
@@ -1 +1,3 @@
 *** Node equivalent with address@hidden' already used address@hidden'
+** `.' or `,' must follow @xref. (l. 48)
+** `.' or `,' must follow @xref. (l. 52)

Index: encodings/res_info/texi_multi_lang/multi_lang.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_info/texi_multi_lang/multi_lang.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_info/texi_multi_lang/multi_lang.2     6 Jul 2009 21:59:50 
-0000       1.1
+++ encodings/res_info/texi_multi_lang/multi_lang.2     2 Aug 2009 13:13:29 
-0000       1.2
@@ -0,0 +1 @@
+** NOWHERE is not a valid region code. (l. 5)

Index: encodings/res_info/texi_nodetest/nodetest.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_info/texi_nodetest/nodetest.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_info/texi_nodetest/nodetest.2 6 Jul 2009 21:59:51 -0000       
1.1
+++ encodings/res_info/texi_nodetest/nodetest.2 2 Aug 2009 13:13:29 -0000       
1.2
@@ -1,2 +1 @@
 *** Duplicate node for anchor found: @,{c} (l. 269)
-*** Duplicate node for anchor found: @,{c} (l. 269)

Index: encodings/res_info/texi_unknown_language/unknown_language.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_info/texi_unknown_language/unknown_language.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_info/texi_unknown_language/unknown_language.2 6 Jul 2009 
21:59:53 -0000       1.1
+++ encodings/res_info/texi_unknown_language/unknown_language.2 2 Aug 2009 
13:13:30 -0000       1.2
@@ -1,4 +1,5 @@
+** unknown is not a valid language code. (l. 5)
 *** Translations for 'unknown' not found. Reverting to 'en'. (l. 5)
-*** Translations for 'another_UNKNOWN' not found. Reverting to 'en'. (l. 12)
-*** Translations for 'unknown' not found. Reverting to 'en'. (l. 5)
+** another is not a valid language code. (l. 12)
+** UNKNOWN is not a valid region code. (l. 12)
 *** Translations for 'another_UNKNOWN' not found. Reverting to 'en'. (l. 12)

Index: encodings/res_info/umlaut/umlaut.2
===================================================================
RCS file: /cvsroot/texi2html/texi2html/test/encodings/res_info/umlaut/umlaut.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_info/umlaut/umlaut.2  6 Jul 2009 21:59:53 -0000       1.1
+++ encodings/res_info/umlaut/umlaut.2  2 Aug 2009 13:13:30 -0000       1.2
@@ -0,0 +1 @@
+Document without nodes.

Index: encodings/res_info/unknown_language/unknown_language.2
===================================================================
RCS file: 
/cvsroot/texi2html/texi2html/test/encodings/res_info/unknown_language/unknown_language.2,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- encodings/res_info/unknown_language/unknown_language.2      6 Jul 2009 
21:59:53 -0000       1.1
+++ encodings/res_info/unknown_language/unknown_language.2      2 Aug 2009 
13:13:30 -0000       1.2
@@ -1,2 +1,5 @@
+** unknown is not a valid language code. (l. 5)
 *** Translations for 'unknown' not found. Reverting to 'en'. (l. 5)
+** another is not a valid language code. (l. 12)
+** UNKNOWN is not a valid region code. (l. 12)
 *** Translations for 'another_UNKNOWN' not found. Reverting to 'en'. (l. 12)

Index: invalid/node_too_much_arguments.texi
===================================================================
RCS file: invalid/node_too_much_arguments.texi
diff -N invalid/node_too_much_arguments.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/node_too_much_arguments.texi        2 Aug 2009 13:13:05 -0000       
1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden node_too_much_arguments.info
+
address@hidden Top
address@hidden Top
+
address@hidden
+* node::
address@hidden menu
+
address@hidden node,,,,too much arg
+
address@hidden

Index: invalid/res/node_too_much_arguments/node_too_much_arguments.1
===================================================================
RCS file: invalid/res/node_too_much_arguments/node_too_much_arguments.1
diff -N invalid/res/node_too_much_arguments/node_too_much_arguments.1

Index: invalid/res/node_too_much_arguments/node_too_much_arguments.2
===================================================================
RCS file: invalid/res/node_too_much_arguments/node_too_much_arguments.2
diff -N invalid/res/node_too_much_arguments/node_too_much_arguments.2
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/node_too_much_arguments/node_too_much_arguments.2       2 Aug 
2009 13:13:05 -0000       1.1
@@ -0,0 +1 @@
+** Superfluous arguments for node (l. 12)

Index: invalid/res/node_too_much_arguments/node_too_much_arguments.html
===================================================================
RCS file: invalid/res/node_too_much_arguments/node_too_much_arguments.html
diff -N invalid/res/node_too_much_arguments/node_too_much_arguments.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/node_too_much_arguments/node_too_much_arguments.html    2 Aug 
2009 13:13:05 -0000       1.1
@@ -0,0 +1,64 @@
+<!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="Top-1"></a>
+<h1 class="unnumbered">Top</h1>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#node">&bull; 
node</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<a name="node"></a>
+
+<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: invalid/res/texi_bad_nesting/bad_nesting.texi.first
===================================================================
RCS file: invalid/res/texi_bad_nesting/bad_nesting.texi.first
diff -N invalid/res/texi_bad_nesting/bad_nesting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_bad_nesting/bad_nesting.texi.first 2 Aug 2009 13:13:05 
-0000       1.1
@@ -0,0 +1,46 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden bad_nesting.info
+
address@hidden Top
address@hidden Test for bad nestings
+
+Tests for environments not matching
+
address@hidden
+A quotation
address@hidden cartouche
+
address@hidden {Function Reference} print_navigation $filehandle
+Text
address@hidden deftypefun
+
address@hidden
address@hidden item
+line
address@hidden vtable
+
address@hidden @emph
address@hidden ref
address@hidden
+example
address@hidden display
address@hidden table
+
address@hidden
+in group
address@hidden table
+
address@hidden
+in group 2
address@hidden cartouche
+
address@hidden
+cartouche
address@hidden group
+
address@hidden
+carouche
address@hidden float
+
address@hidden

Index: invalid/res/texi_bad_style_nesting/bad_style_nesting.texi.first
===================================================================
RCS file: invalid/res/texi_bad_style_nesting/bad_style_nesting.texi.first
diff -N invalid/res/texi_bad_style_nesting/bad_style_nesting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_bad_style_nesting/bad_style_nesting.texi.first     2 Aug 
2009 13:13:06 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden bad_style_nesting.info
+
address@hidden Top
address@hidden Test for bad style @@-command nestings
+
+
address@hidden
address@hidden
+in quotation}
address@hidden quotation
+
address@hidden

Index: invalid/res/texi_bad_tab_nesting/bad_tab_nesting.texi.first
===================================================================
RCS file: invalid/res/texi_bad_tab_nesting/bad_tab_nesting.texi.first
diff -N invalid/res/texi_bad_tab_nesting/bad_tab_nesting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_bad_tab_nesting/bad_tab_nesting.texi.first 2 Aug 2009 
13:13:06 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden bad_tab_nesting.info
+
address@hidden Top
address@hidden Test for bad @@tab  nesting with style @@-command
+
+
address@hidden {truc} {bidule}
address@hidden truc
address@hidden@tab bidule}
address@hidden multitable
+
address@hidden

Index: invalid/res/texi_brace_not_closed/brace_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_brace_not_closed/brace_not_closed.texi.first
diff -N invalid/res/texi_brace_not_closed/brace_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_brace_not_closed/brace_not_closed.texi.first       2 Aug 
2009 13:13:06 -0000       1.1
@@ -0,0 +1,15 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden brace_not_closed
+
address@hidden ToP
+Top node
+
address@hidden @samp{ @} without opening macro }.}
+
address@hidden @anchor{truc}.
+
+Some text @|.
+More text
+
address@hidden

Index: invalid/res/texi_caption_not_closed/caption_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_caption_not_closed/caption_not_closed.texi.first
diff -N invalid/res/texi_caption_not_closed/caption_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_caption_not_closed/caption_not_closed.texi.first   2 Aug 
2009 13:13:06 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo.tex    @c -*-texinfo-*-
+
address@hidden caption_not_closed.info
+
address@hidden Top
address@hidden Test caption not closed
+
address@hidden Text
+No label but caption.
+
address@hidden closed caption
+
+The caption trigger a keep_texi, so everything until the end of the file
+is in the caption. Also the caption is formatted twice which leads to 2
+error messages.
+
address@hidden float
+
address@hidden Text
+
address@hidden

Index: invalid/res/texi_code_not_closed/code_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_code_not_closed/code_not_closed.texi.first
diff -N invalid/res/texi_code_not_closed/code_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_code_not_closed/code_not_closed.texi.first 2 Aug 2009 
13:13:06 -0000       1.1
@@ -0,0 +1,18 @@
+\input texinfo @c -*-texinfo-*-
address@hidden code_not_closed
+
address@hidden Top
address@hidden Missing closing bracket
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden closed
+
address@hidden chapter
address@hidden chapter
+
address@hidden not closed
+
address@hidden

Index: 
invalid/res/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
===================================================================
RCS file: 
invalid/res/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
diff -N 
invalid/res/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
   2 Aug 2009 13:13:06 -0000       1.1
@@ -0,0 +1,16 @@
+\input texinfo @c -*-texinfo-*-
address@hidden code_not_closed_no_newline
+
address@hidden Top
address@hidden Missing closing bracket without a following newline
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden closed
address@hidden chapter
address@hidden chapter
+
address@hidden not closed
address@hidden

Index: invalid/res/texi_commands_not_closed/commands_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_commands_not_closed/commands_not_closed.texi.first
diff -N invalid/res/texi_commands_not_closed/commands_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_commands_not_closed/commands_not_closed.texi.first 2 Aug 
2009 13:13:06 -0000       1.1
@@ -0,0 +1,34 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden commands_not_closed.info
+
address@hidden Top
+
+@'{e
+
address@hidden Chapter 1
+
address@hidden
+
+anchor}
+
address@hidden anchor
+
address@hidden Chapter 2
+
+See @ref{my anchor}, and @ref{an anchor}, and @ref{footnote anchor}
+
address@hidden Chapter 3
+
address@hidden anchor
+
address@hidden Chapter 4
+
address@hidden
address@hidden Chapter 5
+
address@hidden
+Footnote
address@hidden anchor}
+
address@hidden

Index: invalid/res/texi_copying_not_closed/copying_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_copying_not_closed/copying_not_closed.texi.first
diff -N invalid/res/texi_copying_not_closed/copying_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_copying_not_closed/copying_not_closed.texi.first   2 Aug 
2009 13:13:06 -0000       1.1
@@ -0,0 +1,8 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+

Index: invalid/res/texi_def_bad_defx_command/def_bad_defx_command.texi.first
===================================================================
RCS file: invalid/res/texi_def_bad_defx_command/def_bad_defx_command.texi.first
diff -N invalid/res/texi_def_bad_defx_command/def_bad_defx_command.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_def_bad_defx_command/def_bad_defx_command.texi.first       
2 Aug 2009 13:13:06 -0000       1.1
@@ -0,0 +1,15 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden def_bad_defx_command.info
+
address@hidden Top
address@hidden Test wrong @@def*x
+
address@hidden {my def} args @var{arg} @dots{}
address@hidden {type} {name} and now the args
+
+In defun.
+
address@hidden defun
+
address@hidden

Index: invalid/res/texi_def_cmd_dble/def_cmd_dble.texi.first
===================================================================
RCS file: invalid/res/texi_def_cmd_dble/def_cmd_dble.texi.first
diff -N invalid/res/texi_def_cmd_dble/def_cmd_dble.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_def_cmd_dble/def_cmd_dble.texi.first       2 Aug 2009 
13:13:06 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
address@hidden def_cmd_dble.info
address@hidden Top
address@hidden Test for double definition commands
+
address@hidden func plot (a, b, c, ...) @deffnx func plot2 (a, b, c, ..., d)
+aaa
address@hidden deffn
+
address@hidden func aaaa args  @defvr c--ategory d--efvr_name
+bbb
address@hidden deffn
+
address@hidden

Index: 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2
===================================================================
RCS file: 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2
diff -N 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2

Index: 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
===================================================================
RCS file: 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
diff -N 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
      2 Aug 2009 13:13:06 -0000       1.1
@@ -0,0 +1,12 @@
+direntry_dircategory_after_first_node.texi(,2) 
+direntry_dircategory_after_first_node.texi(,3) @setfilename 
direntry_dircategory_after_first_node.info
+direntry_dircategory_after_first_node.texi(,4) 
+direntry_dircategory_after_first_node.texi(,5) @node Top
+direntry_dircategory_after_first_node.texi(,6) @top direntry direcategory 
after first node
+direntry_dircategory_after_first_node.texi(,7) 
+direntry_dircategory_after_first_node.texi(,8) @dircategory Cat
+direntry_dircategory_after_first_node.texi(,9) @direntry
+direntry_dircategory_after_first_node.texi(,10) * in text: (in_text). in text
+direntry_dircategory_after_first_node.texi(,11) @end direntry
+direntry_dircategory_after_first_node.texi(,12) 
+direntry_dircategory_after_first_node.texi(,13) @bye

Index: 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
===================================================================
RCS file: 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
diff -N 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
       2 Aug 2009 13:13:06 -0000       1.1
@@ -0,0 +1,12 @@
+direntry_dircategory_after_first_node.texi(,2) 
+direntry_dircategory_after_first_node.texi(,3) @setfilename 
direntry_dircategory_after_first_node.info
+direntry_dircategory_after_first_node.texi(,4) 
+direntry_dircategory_after_first_node.texi(,5) @node Top
+direntry_dircategory_after_first_node.texi(,6) @top direntry direcategory 
after first node
+direntry_dircategory_after_first_node.texi(,7) 
+direntry_dircategory_after_first_node.texi(,8) @dircategory Cat
+direntry_dircategory_after_first_node.texi(,9) @direntry
+direntry_dircategory_after_first_node.texi(,10) * in text: (in_text). in text
+direntry_dircategory_after_first_node.texi(,11) @end direntry
+direntry_dircategory_after_first_node.texi(,12) 
+direntry_dircategory_after_first_node.texi(,13) @bye

Index: 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
===================================================================
RCS file: 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
diff -N 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
   2 Aug 2009 13:13:06 -0000       1.1
@@ -0,0 +1,13 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden direntry_dircategory_after_first_node.info
+
address@hidden Top
address@hidden direntry direcategory after first node
+
address@hidden Cat
address@hidden
+* in text: (in_text). in text
address@hidden direntry
+
address@hidden

Index: 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
===================================================================
RCS file: 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
diff -N 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
     2 Aug 2009 13:13:06 -0000       1.1
@@ -0,0 +1,13 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden direntry_dircategory_after_first_node.info
+
address@hidden Top
address@hidden direntry direcategory after first node
+
address@hidden Cat
address@hidden
+* in text: (in_text). in text
address@hidden direntry
+
address@hidden

Index: invalid/res/texi_footnote_not_closed/footnote_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_footnote_not_closed/footnote_not_closed.texi.first
diff -N invalid/res/texi_footnote_not_closed/footnote_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_footnote_not_closed/footnote_not_closed.texi.first 2 Aug 
2009 13:13:06 -0000       1.1
@@ -0,0 +1,29 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden footnote_not_closed.info
+
address@hidden Top
address@hidden Top section
+
address@hidden have a footnote.
+
+This is an important footnote.
+
address@hidden
+* chapter::           the chapter
+* chapter2::           the second chapter
address@hidden menu
+
address@hidden chapter
address@hidden Chapter
+
+In address@hidden footnote
+
address@hidden
+In a quotation
+
address@hidden chapter2
address@hidden Chapter2
+
+
address@hidden

Index: invalid/res/texi_formats_not_closed/formats_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_formats_not_closed/formats_not_closed.texi.first
diff -N invalid/res/texi_formats_not_closed/formats_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_formats_not_closed/formats_not_closed.texi.first   2 Aug 
2009 13:13:07 -0000       1.1
@@ -0,0 +1,64 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
address@hidden
+
address@hidden @minus
address@hidden item
+table line
+
+Some text.
address@hidden
+
address@hidden first item
address@hidden an item
+
address@hidden example
+
+
address@hidden a section
+
+Node text
+
+an end table without correspondiing opening part
address@hidden table
+
+Multitable not closed with item and tab
+
address@hidden {r} {t}
address@hidden rt @tab ds
+
address@hidden a section
+Multitable not closed with item
+
address@hidden {r} {t}
address@hidden rt 
+
address@hidden a section
+Multitable not closed
address@hidden {r} {t}
+
+
address@hidden a section
address@hidden truc bidule machin
address@hidden truc chose args
address@hidden type1 var bidule
+
address@hidden a section 
+
+flushright not closed
+
address@hidden
+
+text flushed right
+
address@hidden a section
+
+group not closed
+
address@hidden
+
+text in group
+
address@hidden

Index: invalid/res/texi_html_not_closed/html_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_html_not_closed/html_not_closed.texi.first
diff -N invalid/res/texi_html_not_closed/html_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_html_not_closed/html_not_closed.texi.first 2 Aug 2009 
13:13:07 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+
+This is some html
+<address> my address </address>
+
+
+
address@hidden html
\ No newline at end of file

Index: invalid/res/texi_ignored_not_closed/ignored_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_ignored_not_closed/ignored_not_closed.texi.first
diff -N invalid/res/texi_ignored_not_closed/ignored_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_ignored_not_closed/ignored_not_closed.texi.first   2 Aug 
2009 13:13:07 -0000       1.1
@@ -0,0 +1,6 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+

Index: 
invalid/res/texi_invalid_command_in_table/invalid_command_in_table.texi.first
===================================================================
RCS file: 
invalid/res/texi_invalid_command_in_table/invalid_command_in_table.texi.first
diff -N 
invalid/res/texi_invalid_command_in_table/invalid_command_in_table.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res/texi_invalid_command_in_table/invalid_command_in_table.texi.first   
    2 Aug 2009 13:13:07 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden invalid_command_in_table.info
+
address@hidden Top
+Top node
+
address@hidden
+{ @itemTop,, title
+long title}
+Item line
address@hidden table
+
address@hidden

Index: invalid/res/texi_macro_call_not_closed/macro_call_not_closed.texi.first
===================================================================
RCS file: 
invalid/res/texi_macro_call_not_closed/macro_call_not_closed.texi.first
diff -N invalid/res/texi_macro_call_not_closed/macro_call_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_macro_call_not_closed/macro_call_not_closed.texi.first     
2 Aug 2009 13:13:07 -0000       1.1
@@ -0,0 +1,12 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden macro1 { arg1 , arg2 }
+result: @emph{\arg1\} protected \\ -> \\arg1\\ @emph{\arg2\}
address@hidden macro 
+
address@hidden Top
+
+after end macro
+
+
+

Index: invalid/res/texi_macro_def_not_closed/macro_def_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_macro_def_not_closed/macro_def_not_closed.texi.first
diff -N invalid/res/texi_macro_def_not_closed/macro_def_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_macro_def_not_closed/macro_def_not_closed.texi.first       
2 Aug 2009 13:13:07 -0000       1.1
@@ -0,0 +1,11 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden the_macro {arg1, arg2}
+
+Macro body
+
address@hidden macro

Index: invalid/res/texi_math_not_closed/math_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_math_not_closed/math_not_closed.texi.first
diff -N invalid/res/texi_math_not_closed/math_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_math_not_closed/math_not_closed.texi.first 2 Aug 2009 
13:13:07 -0000       1.1
@@ -0,0 +1,10 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden math_no_closed.info
+
address@hidden Top
+
address@hidden
address@hidden Chapter 
+
address@hidden

Index: 
invalid/res/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first
===================================================================
RCS file: 
invalid/res/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first
diff -N 
invalid/res/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first 
    2 Aug 2009 13:13:07 -0000       1.1
@@ -0,0 +1,17 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden multitable_begin_with_tab.info
+
address@hidden Top
address@hidden Test for tab beginning a multitable
+
address@hidden {a} {b}
address@hidden t
address@hidden multitable
+
address@hidden {c} {d}
address@hidden t2
address@hidden it
address@hidden multitable
+
address@hidden

Index: 
invalid/res/texi_multitable_too_much_col/multitable_too_much_col.texi.first
===================================================================
RCS file: 
invalid/res/texi_multitable_too_much_col/multitable_too_much_col.texi.first
diff -N 
invalid/res/texi_multitable_too_much_col/multitable_too_much_col.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_multitable_too_much_col/multitable_too_much_col.texi.first 
2 Aug 2009 13:13:07 -0000       1.1
@@ -0,0 +1,25 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
address@hidden test multitable with too much cells
+
+
address@hidden
address@hidden item in empty multitable @tab tab in empty m @tab second tab in 
empty m
address@hidden item in empty m
address@hidden multitable
+
address@hidden {a}
address@hidden a @tab additional tab @tab other additional tab @tab 3rd  
additiona tab
address@hidden a1
address@hidden a2 @tab additional tab2 @tab other additional tab2 @tab 3rd  
additional tab2
address@hidden a3 @tab one additional tab
address@hidden multitable
+
address@hidden @columnfractions 0.4 0.6
address@hidden first @tab second @tab first out @tab second out @tab third out
address@hidden first1 
address@hidden first2 @tab second2 @tab first2 out
address@hidden multitable
+
address@hidden

Index: invalid/res/texi_node_in_copying/node_in_copying.texi.first
===================================================================
RCS file: invalid/res/texi_node_in_copying/node_in_copying.texi.first
diff -N invalid/res/texi_node_in_copying/node_in_copying.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_node_in_copying/node_in_copying.texi.first 2 Aug 2009 
13:13:08 -0000       1.1
@@ -0,0 +1,12 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden node_in_copying.info
+
address@hidden Top
address@hidden Top section
+
address@hidden
+
+This is a manual testing @@node appearing within an unterminated @@copying.
+
address@hidden

Index: invalid/res/texi_node_too_much_arguments/node_too_much_arguments.2
===================================================================
RCS file: invalid/res/texi_node_too_much_arguments/node_too_much_arguments.2
diff -N invalid/res/texi_node_too_much_arguments/node_too_much_arguments.2
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_node_too_much_arguments/node_too_much_arguments.2  2 Aug 
2009 13:13:08 -0000       1.1
@@ -0,0 +1 @@
+** Superfluous arguments for node (l. 12)

Index: 
invalid/res/texi_node_too_much_arguments/node_too_much_arguments.passfirst
===================================================================
RCS file: 
invalid/res/texi_node_too_much_arguments/node_too_much_arguments.passfirst
diff -N 
invalid/res/texi_node_too_much_arguments/node_too_much_arguments.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_node_too_much_arguments/node_too_much_arguments.passfirst  
2 Aug 2009 13:13:08 -0000       1.1
@@ -0,0 +1,13 @@
+node_too_much_arguments.texi(,2) 
+node_too_much_arguments.texi(,3) @setfilename node_too_much_arguments.info
+node_too_much_arguments.texi(,4) 
+node_too_much_arguments.texi(,5) @node Top
+node_too_much_arguments.texi(,6) @top Top
+node_too_much_arguments.texi(,7) 
+node_too_much_arguments.texi(,8) @menu
+node_too_much_arguments.texi(,9) * node::
+node_too_much_arguments.texi(,10) @end menu
+node_too_much_arguments.texi(,11) 
+node_too_much_arguments.texi(,12) @node node,,,,too much arg
+node_too_much_arguments.texi(,13) 
+node_too_much_arguments.texi(,14) @bye

Index: invalid/res/texi_node_too_much_arguments/node_too_much_arguments.passtexi
===================================================================
RCS file: 
invalid/res/texi_node_too_much_arguments/node_too_much_arguments.passtexi
diff -N 
invalid/res/texi_node_too_much_arguments/node_too_much_arguments.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_node_too_much_arguments/node_too_much_arguments.passtexi   
2 Aug 2009 13:13:08 -0000       1.1
@@ -0,0 +1,13 @@
+node_too_much_arguments.texi(,2) 
+node_too_much_arguments.texi(,3) @setfilename node_too_much_arguments.info
+node_too_much_arguments.texi(,4) 
+node_too_much_arguments.texi(,5) @node Top
+node_too_much_arguments.texi(,6) @top Top
+node_too_much_arguments.texi(,7) 
+node_too_much_arguments.texi(,8) @menu
+node_too_much_arguments.texi(,9) * node::
+node_too_much_arguments.texi(,10) @end menu
+node_too_much_arguments.texi(,11) 
+node_too_much_arguments.texi(,12) @node node,,,,too much arg
+node_too_much_arguments.texi(,13) 
+node_too_much_arguments.texi(,14) @bye

Index: invalid/res/texi_node_too_much_arguments/node_too_much_arguments.texi
===================================================================
RCS file: invalid/res/texi_node_too_much_arguments/node_too_much_arguments.texi
diff -N invalid/res/texi_node_too_much_arguments/node_too_much_arguments.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_node_too_much_arguments/node_too_much_arguments.texi       
2 Aug 2009 13:13:08 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden node_too_much_arguments.info
+
address@hidden Top
address@hidden Top
+
address@hidden
+* node::
address@hidden menu
+
address@hidden node,,,,too much arg
+
address@hidden

Index: 
invalid/res/texi_node_too_much_arguments/node_too_much_arguments.texi.first
===================================================================
RCS file: 
invalid/res/texi_node_too_much_arguments/node_too_much_arguments.texi.first
diff -N 
invalid/res/texi_node_too_much_arguments/node_too_much_arguments.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_node_too_much_arguments/node_too_much_arguments.texi.first 
2 Aug 2009 13:13:08 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden node_too_much_arguments.info
+
address@hidden Top
address@hidden Top
+
address@hidden
+* node::
address@hidden menu
+
address@hidden node,,,,too much arg
+
address@hidden

Index: invalid/res/texi_not_closed_in_menu/not_closed_in_menu.texi.first
===================================================================
RCS file: invalid/res/texi_not_closed_in_menu/not_closed_in_menu.texi.first
diff -N invalid/res/texi_not_closed_in_menu/not_closed_in_menu.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_not_closed_in_menu/not_closed_in_menu.texi.first   2 Aug 
2009 13:13:08 -0000       1.1
@@ -0,0 +1,32 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
address@hidden
+* (gcc):: text @table @minus
address@hidden item
+table line
address@hidden menu
+
+Some text.
+
address@hidden
+* (manual):: desc
+
address@hidden @bullet
address@hidden item
+comment
+* (manual2)::
address@hidden menu
+
address@hidden
+* (info):: before deff @deffn bidule truc chose
+
+deffn text
address@hidden menu
+After menu
+
address@hidden
+* (manual_in_menu):: desc2
+
address@hidden

Index: invalid/res/texi_recursive_copying/recursive_copying.texi.first
===================================================================
RCS file: invalid/res/texi_recursive_copying/recursive_copying.texi.first
diff -N invalid/res/texi_recursive_copying/recursive_copying.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_recursive_copying/recursive_copying.texi.first     2 Aug 
2009 13:13:08 -0000       1.1
@@ -0,0 +1,13 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden recursive_copying.info
+
+
address@hidden Top
address@hidden Test recursive copying
+
+Test recursive copying.
+
address@hidden
+
address@hidden

Index: invalid/res/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first
===================================================================
RCS file: invalid/res/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first
diff -N invalid/res/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first 2 Aug 
2009 13:13:08 -0000       1.1
@@ -0,0 +1,10 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden ref_to_unknown_node.info
+
address@hidden Top
address@hidden Ref to nonexisting node.
+
+ref to a non existing address@hidden
+
address@hidden

Index: 
invalid/res/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
===================================================================
RCS file: 
invalid/res/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
diff -N 
invalid/res/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
     2 Aug 2009 13:13:08 -0000       1.1
@@ -0,0 +1,12 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden style_not_closed_in_cartouche.info
+
address@hidden Top
address@hidden Test command not closed in cartouche
+
address@hidden
+cartouche @code{in code 
address@hidden cartouche
+
address@hidden

Index: 
invalid/res/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
===================================================================
RCS file: 
invalid/res/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
diff -N 
invalid/res/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
   2 Aug 2009 13:13:08 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden style_not_closed_in_table_line.info
+
address@hidden Top
address@hidden Test command not closed on table line
+
address@hidden @asis
address@hidden first item
+line
+line @code{in code @item in item
address@hidden table
+
address@hidden

Index: invalid/res/texi_tab_in_index/tab_in_index.texi.first
===================================================================
RCS file: invalid/res/texi_tab_in_index/tab_in_index.texi.first
diff -N invalid/res/texi_tab_in_index/tab_in_index.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_tab_in_index/tab_in_index.texi.first       2 Aug 2009 
13:13:09 -0000       1.1
@@ -0,0 +1,22 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden tab_in_index.info
+
address@hidden Top
address@hidden Test for @@tab in @@index
+
address@hidden {one nonlettered character} {normal text}
address@hidden one nonlettered character @tab aaa
address@hidden in index entry @tab in tab
address@hidden multitable
+
address@hidden {aaa} {bbb}
address@hidden @item on item line
address@hidden multitable
+
+
+
address@hidden vr
+
+
address@hidden

Index: invalid/res/texi_tex_in_copying/tex_in_copying.texi.first
===================================================================
RCS file: invalid/res/texi_tex_in_copying/tex_in_copying.texi.first
diff -N invalid/res/texi_tex_in_copying/tex_in_copying.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_tex_in_copying/tex_in_copying.texi.first   2 Aug 2009 
13:13:09 -0000       1.1
@@ -0,0 +1,27 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden tex_in_copying.info
+
+
+
address@hidden Top
address@hidden Top node
+
address@hidden
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden
+
address@hidden chapter
address@hidden chapter
+
+The fundamental equation is
address@hidden
+
address@hidden
+
+
address@hidden

Index: invalid/res/texi_tex_not_closed/tex_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_tex_not_closed/tex_not_closed.texi.first
diff -N invalid/res/texi_tex_not_closed/tex_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_tex_not_closed/tex_not_closed.texi.first   2 Aug 2009 
13:13:09 -0000       1.1
@@ -0,0 +1,7 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
\ No newline at end of file

Index: invalid/res/texi_titlepage_not_closed/titlepage_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_titlepage_not_closed/titlepage_not_closed.texi.first
diff -N invalid/res/texi_titlepage_not_closed/titlepage_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_titlepage_not_closed/titlepage_not_closed.texi.first       
2 Aug 2009 13:13:09 -0000       1.1
@@ -0,0 +1,7 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
+

Index: 
invalid/res/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
===================================================================
RCS file: 
invalid/res/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
diff -N 
invalid/res/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
 2 Aug 2009 13:13:09 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden unknown_command_with_braces.info
+
address@hidden Top 
address@hidden Test unknown command with braces
+
+Unknown macro @unknown{ first paragraph
+
+second paragraph}
+
address@hidden first paragraph
+
+second paragraph
+
+third}
+
+
+Unknown thing @thing{}
+
address@hidden

Index: invalid/res/texi_verb_not_closed/verb_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_verb_not_closed/verb_not_closed.texi.first
diff -N invalid/res/texi_verb_not_closed/verb_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_verb_not_closed/verb_not_closed.texi.first 2 Aug 2009 
13:13:09 -0000       1.1
@@ -0,0 +1,11 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+
+In verb
+
+*

Index: invalid/res/texi_verbatim_not_closed/verbatim_not_closed.texi.first
===================================================================
RCS file: invalid/res/texi_verbatim_not_closed/verbatim_not_closed.texi.first
diff -N invalid/res/texi_verbatim_not_closed/verbatim_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res/texi_verbatim_not_closed/verbatim_not_closed.texi.first 2 Aug 
2009 13:13:09 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+
+some verbatim @
+
address@hidden
+
+
address@hidden verbatim
\ No newline at end of file

Index: invalid/res_all/node_too_much_arguments/node_too_much_arguments.1
===================================================================
RCS file: invalid/res_all/node_too_much_arguments/node_too_much_arguments.1
diff -N invalid/res_all/node_too_much_arguments/node_too_much_arguments.1

Index: invalid/res_all/node_too_much_arguments/node_too_much_arguments.2
===================================================================
RCS file: invalid/res_all/node_too_much_arguments/node_too_much_arguments.2
diff -N invalid/res_all/node_too_much_arguments/node_too_much_arguments.2
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/node_too_much_arguments/node_too_much_arguments.2   2 Aug 
2009 13:13:09 -0000       1.1
@@ -0,0 +1 @@
+** Superfluous arguments for node (l. 12)

Index: invalid/res_all/node_too_much_arguments/node_too_much_arguments.txt
===================================================================
RCS file: invalid/res_all/node_too_much_arguments/node_too_much_arguments.txt
diff -N invalid/res_all/node_too_much_arguments/node_too_much_arguments.txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/node_too_much_arguments/node_too_much_arguments.txt 2 Aug 
2009 13:13:09 -0000       1.1
@@ -0,0 +1,8 @@
+Top
+***
+
+* node::
+
+node
+----
+

Index: invalid/res_all/texi_bad_nesting/bad_nesting.texi.first
===================================================================
RCS file: invalid/res_all/texi_bad_nesting/bad_nesting.texi.first
diff -N invalid/res_all/texi_bad_nesting/bad_nesting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_bad_nesting/bad_nesting.texi.first     2 Aug 2009 
13:13:09 -0000       1.1
@@ -0,0 +1,46 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden bad_nesting.info
+
address@hidden Top
address@hidden Test for bad nestings
+
+Tests for environments not matching
+
address@hidden
+A quotation
address@hidden cartouche
+
address@hidden {Function Reference} print_navigation $filehandle
+Text
address@hidden deftypefun
+
address@hidden
address@hidden item
+line
address@hidden vtable
+
address@hidden @emph
address@hidden ref
address@hidden
+example
address@hidden display
address@hidden table
+
address@hidden
+in group
address@hidden table
+
address@hidden
+in group 2
address@hidden cartouche
+
address@hidden
+cartouche
address@hidden group
+
address@hidden
+carouche
address@hidden float
+
address@hidden

Index: invalid/res_all/texi_bad_style_nesting/bad_style_nesting.texi.first
===================================================================
RCS file: invalid/res_all/texi_bad_style_nesting/bad_style_nesting.texi.first
diff -N invalid/res_all/texi_bad_style_nesting/bad_style_nesting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_bad_style_nesting/bad_style_nesting.texi.first 2 Aug 
2009 13:13:09 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden bad_style_nesting.info
+
address@hidden Top
address@hidden Test for bad style @@-command nestings
+
+
address@hidden
address@hidden
+in quotation}
address@hidden quotation
+
address@hidden

Index: invalid/res_all/texi_bad_tab_nesting/bad_tab_nesting.texi.first
===================================================================
RCS file: invalid/res_all/texi_bad_tab_nesting/bad_tab_nesting.texi.first
diff -N invalid/res_all/texi_bad_tab_nesting/bad_tab_nesting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_bad_tab_nesting/bad_tab_nesting.texi.first     2 Aug 
2009 13:13:09 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden bad_tab_nesting.info
+
address@hidden Top
address@hidden Test for bad @@tab  nesting with style @@-command
+
+
address@hidden {truc} {bidule}
address@hidden truc
address@hidden@tab bidule}
address@hidden multitable
+
address@hidden

Index: invalid/res_all/texi_brace_not_closed/brace_not_closed.texi.first
===================================================================
RCS file: invalid/res_all/texi_brace_not_closed/brace_not_closed.texi.first
diff -N invalid/res_all/texi_brace_not_closed/brace_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_brace_not_closed/brace_not_closed.texi.first   2 Aug 
2009 13:13:10 -0000       1.1
@@ -0,0 +1,15 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden brace_not_closed
+
address@hidden ToP
+Top node
+
address@hidden @samp{ @} without opening macro }.}
+
address@hidden @anchor{truc}.
+
+Some text @|.
+More text
+
address@hidden

Index: invalid/res_all/texi_caption_not_closed/caption_not_closed.texi.first
===================================================================
RCS file: invalid/res_all/texi_caption_not_closed/caption_not_closed.texi.first
diff -N invalid/res_all/texi_caption_not_closed/caption_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_caption_not_closed/caption_not_closed.texi.first       
2 Aug 2009 13:13:10 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo.tex    @c -*-texinfo-*-
+
address@hidden caption_not_closed.info
+
address@hidden Top
address@hidden Test caption not closed
+
address@hidden Text
+No label but caption.
+
address@hidden closed caption
+
+The caption trigger a keep_texi, so everything until the end of the file
+is in the caption. Also the caption is formatted twice which leads to 2
+error messages.
+
address@hidden float
+
address@hidden Text
+
address@hidden

Index: invalid/res_all/texi_code_not_closed/code_not_closed.texi.first
===================================================================
RCS file: invalid/res_all/texi_code_not_closed/code_not_closed.texi.first
diff -N invalid/res_all/texi_code_not_closed/code_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_code_not_closed/code_not_closed.texi.first     2 Aug 
2009 13:13:10 -0000       1.1
@@ -0,0 +1,18 @@
+\input texinfo @c -*-texinfo-*-
address@hidden code_not_closed
+
address@hidden Top
address@hidden Missing closing bracket
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden closed
+
address@hidden chapter
address@hidden chapter
+
address@hidden not closed
+
address@hidden

Index: 
invalid/res_all/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
diff -N 
invalid/res_all/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
       2 Aug 2009 13:13:10 -0000       1.1
@@ -0,0 +1,16 @@
+\input texinfo @c -*-texinfo-*-
address@hidden code_not_closed_no_newline
+
address@hidden Top
address@hidden Missing closing bracket without a following newline
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden closed
address@hidden chapter
address@hidden chapter
+
address@hidden not closed
address@hidden

Index: invalid/res_all/texi_commands_not_closed/commands_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_commands_not_closed/commands_not_closed.texi.first
diff -N invalid/res_all/texi_commands_not_closed/commands_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_commands_not_closed/commands_not_closed.texi.first     
2 Aug 2009 13:13:10 -0000       1.1
@@ -0,0 +1,34 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden commands_not_closed.info
+
address@hidden Top
+
+@'{e
+
address@hidden Chapter 1
+
address@hidden
+
+anchor}
+
address@hidden anchor
+
address@hidden Chapter 2
+
+See @ref{my anchor}, and @ref{an anchor}, and @ref{footnote anchor}
+
address@hidden Chapter 3
+
address@hidden anchor
+
address@hidden Chapter 4
+
address@hidden
address@hidden Chapter 5
+
address@hidden
+Footnote
address@hidden anchor}
+
address@hidden

Index: invalid/res_all/texi_copying_not_closed/copying_not_closed.texi.first
===================================================================
RCS file: invalid/res_all/texi_copying_not_closed/copying_not_closed.texi.first
diff -N invalid/res_all/texi_copying_not_closed/copying_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_copying_not_closed/copying_not_closed.texi.first       
2 Aug 2009 13:13:10 -0000       1.1
@@ -0,0 +1,8 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+

Index: invalid/res_all/texi_def_bad_defx_command/def_bad_defx_command.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_def_bad_defx_command/def_bad_defx_command.texi.first
diff -N 
invalid/res_all/texi_def_bad_defx_command/def_bad_defx_command.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_def_bad_defx_command/def_bad_defx_command.texi.first   
2 Aug 2009 13:13:10 -0000       1.1
@@ -0,0 +1,15 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden def_bad_defx_command.info
+
address@hidden Top
address@hidden Test wrong @@def*x
+
address@hidden {my def} args @var{arg} @dots{}
address@hidden {type} {name} and now the args
+
+In defun.
+
address@hidden defun
+
address@hidden

Index: invalid/res_all/texi_def_cmd_dble/def_cmd_dble.texi.first
===================================================================
RCS file: invalid/res_all/texi_def_cmd_dble/def_cmd_dble.texi.first
diff -N invalid/res_all/texi_def_cmd_dble/def_cmd_dble.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_def_cmd_dble/def_cmd_dble.texi.first   2 Aug 2009 
13:13:10 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
address@hidden def_cmd_dble.info
address@hidden Top
address@hidden Test for double definition commands
+
address@hidden func plot (a, b, c, ...) @deffnx func plot2 (a, b, c, ..., d)
+aaa
address@hidden deffn
+
address@hidden func aaaa args  @defvr c--ategory d--efvr_name
+bbb
address@hidden deffn
+
address@hidden

Index: 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2
===================================================================
RCS file: 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2
diff -N 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2

Index: 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
===================================================================
RCS file: 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
diff -N 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
  2 Aug 2009 13:13:10 -0000       1.1
@@ -0,0 +1,12 @@
+direntry_dircategory_after_first_node.texi(,2) 
+direntry_dircategory_after_first_node.texi(,3) @setfilename 
direntry_dircategory_after_first_node.info
+direntry_dircategory_after_first_node.texi(,4) 
+direntry_dircategory_after_first_node.texi(,5) @node Top
+direntry_dircategory_after_first_node.texi(,6) @top direntry direcategory 
after first node
+direntry_dircategory_after_first_node.texi(,7) 
+direntry_dircategory_after_first_node.texi(,8) @dircategory Cat
+direntry_dircategory_after_first_node.texi(,9) @direntry
+direntry_dircategory_after_first_node.texi(,10) * in text: (in_text). in text
+direntry_dircategory_after_first_node.texi(,11) @end direntry
+direntry_dircategory_after_first_node.texi(,12) 
+direntry_dircategory_after_first_node.texi(,13) @bye

Index: 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
===================================================================
RCS file: 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
diff -N 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
   2 Aug 2009 13:13:10 -0000       1.1
@@ -0,0 +1,12 @@
+direntry_dircategory_after_first_node.texi(,2) 
+direntry_dircategory_after_first_node.texi(,3) @setfilename 
direntry_dircategory_after_first_node.info
+direntry_dircategory_after_first_node.texi(,4) 
+direntry_dircategory_after_first_node.texi(,5) @node Top
+direntry_dircategory_after_first_node.texi(,6) @top direntry direcategory 
after first node
+direntry_dircategory_after_first_node.texi(,7) 
+direntry_dircategory_after_first_node.texi(,8) @dircategory Cat
+direntry_dircategory_after_first_node.texi(,9) @direntry
+direntry_dircategory_after_first_node.texi(,10) * in text: (in_text). in text
+direntry_dircategory_after_first_node.texi(,11) @end direntry
+direntry_dircategory_after_first_node.texi(,12) 
+direntry_dircategory_after_first_node.texi(,13) @bye

Index: 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
===================================================================
RCS file: 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
diff -N 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
       2 Aug 2009 13:13:10 -0000       1.1
@@ -0,0 +1,13 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden direntry_dircategory_after_first_node.info
+
address@hidden Top
address@hidden direntry direcategory after first node
+
address@hidden Cat
address@hidden
+* in text: (in_text). in text
address@hidden direntry
+
address@hidden

Index: 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
diff -N 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
 2 Aug 2009 13:13:10 -0000       1.1
@@ -0,0 +1,13 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden direntry_dircategory_after_first_node.info
+
address@hidden Top
address@hidden direntry direcategory after first node
+
address@hidden Cat
address@hidden
+* in text: (in_text). in text
address@hidden direntry
+
address@hidden

Index: invalid/res_all/texi_footnote_not_closed/footnote_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_footnote_not_closed/footnote_not_closed.texi.first
diff -N invalid/res_all/texi_footnote_not_closed/footnote_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_footnote_not_closed/footnote_not_closed.texi.first     
2 Aug 2009 13:13:10 -0000       1.1
@@ -0,0 +1,29 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden footnote_not_closed.info
+
address@hidden Top
address@hidden Top section
+
address@hidden have a footnote.
+
+This is an important footnote.
+
address@hidden
+* chapter::           the chapter
+* chapter2::           the second chapter
address@hidden menu
+
address@hidden chapter
address@hidden Chapter
+
+In address@hidden footnote
+
address@hidden
+In a quotation
+
address@hidden chapter2
address@hidden Chapter2
+
+
address@hidden

Index: invalid/res_all/texi_formats_not_closed/formats_not_closed.texi.first
===================================================================
RCS file: invalid/res_all/texi_formats_not_closed/formats_not_closed.texi.first
diff -N invalid/res_all/texi_formats_not_closed/formats_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_formats_not_closed/formats_not_closed.texi.first       
2 Aug 2009 13:13:11 -0000       1.1
@@ -0,0 +1,64 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
address@hidden
+
address@hidden @minus
address@hidden item
+table line
+
+Some text.
address@hidden
+
address@hidden first item
address@hidden an item
+
address@hidden example
+
+
address@hidden a section
+
+Node text
+
+an end table without correspondiing opening part
address@hidden table
+
+Multitable not closed with item and tab
+
address@hidden {r} {t}
address@hidden rt @tab ds
+
address@hidden a section
+Multitable not closed with item
+
address@hidden {r} {t}
address@hidden rt 
+
address@hidden a section
+Multitable not closed
address@hidden {r} {t}
+
+
address@hidden a section
address@hidden truc bidule machin
address@hidden truc chose args
address@hidden type1 var bidule
+
address@hidden a section 
+
+flushright not closed
+
address@hidden
+
+text flushed right
+
address@hidden a section
+
+group not closed
+
address@hidden
+
+text in group
+
address@hidden

Index: invalid/res_all/texi_html_not_closed/html_not_closed.texi.first
===================================================================
RCS file: invalid/res_all/texi_html_not_closed/html_not_closed.texi.first
diff -N invalid/res_all/texi_html_not_closed/html_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_html_not_closed/html_not_closed.texi.first     2 Aug 
2009 13:13:11 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+
+This is some html
+<address> my address </address>
+
+
+
address@hidden html
\ No newline at end of file

Index: invalid/res_all/texi_ignored_not_closed/ignored_not_closed.texi.first
===================================================================
RCS file: invalid/res_all/texi_ignored_not_closed/ignored_not_closed.texi.first
diff -N invalid/res_all/texi_ignored_not_closed/ignored_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_ignored_not_closed/ignored_not_closed.texi.first       
2 Aug 2009 13:13:11 -0000       1.1
@@ -0,0 +1,6 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+

Index: 
invalid/res_all/texi_invalid_command_in_table/invalid_command_in_table.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_invalid_command_in_table/invalid_command_in_table.texi.first
diff -N 
invalid/res_all/texi_invalid_command_in_table/invalid_command_in_table.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_invalid_command_in_table/invalid_command_in_table.texi.first
   2 Aug 2009 13:13:11 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden invalid_command_in_table.info
+
address@hidden Top
+Top node
+
address@hidden
+{ @itemTop,, title
+long title}
+Item line
address@hidden table
+
address@hidden

Index: 
invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.texi.first
diff -N 
invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_macro_call_not_closed/macro_call_not_closed.texi.first 
2 Aug 2009 13:13:11 -0000       1.1
@@ -0,0 +1,12 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden macro1 { arg1 , arg2 }
+result: @emph{\arg1\} protected \\ -> \\arg1\\ @emph{\arg2\}
address@hidden macro 
+
address@hidden Top
+
+after end macro
+
+
+

Index: invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.texi.first
diff -N 
invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_macro_def_not_closed/macro_def_not_closed.texi.first   
2 Aug 2009 13:13:11 -0000       1.1
@@ -0,0 +1,11 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden the_macro {arg1, arg2}
+
+Macro body
+
address@hidden macro

Index: invalid/res_all/texi_math_not_closed/math_not_closed.texi.first
===================================================================
RCS file: invalid/res_all/texi_math_not_closed/math_not_closed.texi.first
diff -N invalid/res_all/texi_math_not_closed/math_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_math_not_closed/math_not_closed.texi.first     2 Aug 
2009 13:13:11 -0000       1.1
@@ -0,0 +1,11 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden math_no_closed.info
+
address@hidden Top
+
address@hidden + 2
address@hidden Chapter 
+
address@hidden + 2
address@hidden

Index: 
invalid/res_all/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first
diff -N 
invalid/res_all/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first
 2 Aug 2009 13:13:11 -0000       1.1
@@ -0,0 +1,17 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden multitable_begin_with_tab.info
+
address@hidden Top
address@hidden Test for tab beginning a multitable
+
address@hidden {a} {b}
address@hidden t
address@hidden multitable
+
address@hidden {c} {d}
address@hidden t2
address@hidden it
address@hidden multitable
+
address@hidden

Index: 
invalid/res_all/texi_multitable_too_much_col/multitable_too_much_col.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_multitable_too_much_col/multitable_too_much_col.texi.first
diff -N 
invalid/res_all/texi_multitable_too_much_col/multitable_too_much_col.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_multitable_too_much_col/multitable_too_much_col.texi.first 
    2 Aug 2009 13:13:11 -0000       1.1
@@ -0,0 +1,25 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
address@hidden test multitable with too much cells
+
+
address@hidden
address@hidden item in empty multitable @tab tab in empty m @tab second tab in 
empty m
address@hidden item in empty m
address@hidden multitable
+
address@hidden {a}
address@hidden a @tab additional tab @tab other additional tab @tab 3rd  
additiona tab
address@hidden a1
address@hidden a2 @tab additional tab2 @tab other additional tab2 @tab 3rd  
additional tab2
address@hidden a3 @tab one additional tab
address@hidden multitable
+
address@hidden @columnfractions 0.4 0.6
address@hidden first @tab second @tab first out @tab second out @tab third out
address@hidden first1 
address@hidden first2 @tab second2 @tab first2 out
address@hidden multitable
+
address@hidden

Index: invalid/res_all/texi_node_in_copying/node_in_copying.texi.first
===================================================================
RCS file: invalid/res_all/texi_node_in_copying/node_in_copying.texi.first
diff -N invalid/res_all/texi_node_in_copying/node_in_copying.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_node_in_copying/node_in_copying.texi.first     2 Aug 
2009 13:13:11 -0000       1.1
@@ -0,0 +1,12 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden node_in_copying.info
+
address@hidden Top
address@hidden Top section
+
address@hidden
+
+This is a manual testing @@node appearing within an unterminated @@copying.
+
address@hidden

Index: invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.2
===================================================================
RCS file: invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.2
diff -N invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.2
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.2      
2 Aug 2009 13:13:11 -0000       1.1
@@ -0,0 +1 @@
+** Superfluous arguments for node (l. 12)

Index: 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.passfirst
===================================================================
RCS file: 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.passfirst
diff -N 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.passfirst  
    2 Aug 2009 13:13:11 -0000       1.1
@@ -0,0 +1,13 @@
+node_too_much_arguments.texi(,2) 
+node_too_much_arguments.texi(,3) @setfilename node_too_much_arguments.info
+node_too_much_arguments.texi(,4) 
+node_too_much_arguments.texi(,5) @node Top
+node_too_much_arguments.texi(,6) @top Top
+node_too_much_arguments.texi(,7) 
+node_too_much_arguments.texi(,8) @menu
+node_too_much_arguments.texi(,9) * node::
+node_too_much_arguments.texi(,10) @end menu
+node_too_much_arguments.texi(,11) 
+node_too_much_arguments.texi(,12) @node node,,,,too much arg
+node_too_much_arguments.texi(,13) 
+node_too_much_arguments.texi(,14) @bye

Index: 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.passtexi
===================================================================
RCS file: 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.passtexi
diff -N 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.passtexi   
    2 Aug 2009 13:13:11 -0000       1.1
@@ -0,0 +1,13 @@
+node_too_much_arguments.texi(,2) 
+node_too_much_arguments.texi(,3) @setfilename node_too_much_arguments.info
+node_too_much_arguments.texi(,4) 
+node_too_much_arguments.texi(,5) @node Top
+node_too_much_arguments.texi(,6) @top Top
+node_too_much_arguments.texi(,7) 
+node_too_much_arguments.texi(,8) @menu
+node_too_much_arguments.texi(,9) * node::
+node_too_much_arguments.texi(,10) @end menu
+node_too_much_arguments.texi(,11) 
+node_too_much_arguments.texi(,12) @node node,,,,too much arg
+node_too_much_arguments.texi(,13) 
+node_too_much_arguments.texi(,14) @bye

Index: invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.texi
===================================================================
RCS file: 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.texi
diff -N 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.texi   
2 Aug 2009 13:13:11 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden node_too_much_arguments.info
+
address@hidden Top
address@hidden Top
+
address@hidden
+* node::
address@hidden menu
+
address@hidden node,,,,too much arg
+
address@hidden

Index: 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.texi.first
diff -N 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_node_too_much_arguments/node_too_much_arguments.texi.first 
    2 Aug 2009 13:13:12 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden node_too_much_arguments.info
+
address@hidden Top
address@hidden Top
+
address@hidden
+* node::
address@hidden menu
+
address@hidden node,,,,too much arg
+
address@hidden

Index: invalid/res_all/texi_not_closed_in_menu/not_closed_in_menu.texi.first
===================================================================
RCS file: invalid/res_all/texi_not_closed_in_menu/not_closed_in_menu.texi.first
diff -N invalid/res_all/texi_not_closed_in_menu/not_closed_in_menu.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_not_closed_in_menu/not_closed_in_menu.texi.first       
2 Aug 2009 13:13:12 -0000       1.1
@@ -0,0 +1,32 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
address@hidden
+* (gcc):: text @table @minus
address@hidden item
+table line
address@hidden menu
+
+Some text.
+
address@hidden
+* (manual):: desc
+
address@hidden @bullet
address@hidden item
+comment
+* (manual2)::
address@hidden menu
+
address@hidden
+* (info):: before deff @deffn bidule truc chose
+
+deffn text
address@hidden menu
+After menu
+
address@hidden
+* (manual_in_menu):: desc2
+
address@hidden

Index: invalid/res_all/texi_recursive_copying/recursive_copying.texi.first
===================================================================
RCS file: invalid/res_all/texi_recursive_copying/recursive_copying.texi.first
diff -N invalid/res_all/texi_recursive_copying/recursive_copying.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_recursive_copying/recursive_copying.texi.first 2 Aug 
2009 13:13:12 -0000       1.1
@@ -0,0 +1,13 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden recursive_copying.info
+
+
address@hidden Top
address@hidden Test recursive copying
+
+Test recursive copying.
+
address@hidden
+
address@hidden

Index: invalid/res_all/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first
diff -N invalid/res_all/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first     
2 Aug 2009 13:13:12 -0000       1.1
@@ -0,0 +1,10 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden ref_to_unknown_node.info
+
address@hidden Top
address@hidden Ref to nonexisting node.
+
+ref to a non existing address@hidden
+
address@hidden

Index: 
invalid/res_all/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
diff -N 
invalid/res_all/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
 2 Aug 2009 13:13:12 -0000       1.1
@@ -0,0 +1,12 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden style_not_closed_in_cartouche.info
+
address@hidden Top
address@hidden Test command not closed in cartouche
+
address@hidden
+cartouche @code{in code 
address@hidden cartouche
+
address@hidden

Index: 
invalid/res_all/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
diff -N 
invalid/res_all/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
       2 Aug 2009 13:13:12 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden style_not_closed_in_table_line.info
+
address@hidden Top
address@hidden Test command not closed on table line
+
address@hidden @asis
address@hidden first item
+line
+line @code{in code @item in item
address@hidden table
+
address@hidden

Index: invalid/res_all/texi_tab_in_index/tab_in_index.texi.first
===================================================================
RCS file: invalid/res_all/texi_tab_in_index/tab_in_index.texi.first
diff -N invalid/res_all/texi_tab_in_index/tab_in_index.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_tab_in_index/tab_in_index.texi.first   2 Aug 2009 
13:13:12 -0000       1.1
@@ -0,0 +1,22 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden tab_in_index.info
+
address@hidden Top
address@hidden Test for @@tab in @@index
+
address@hidden {one nonlettered character} {normal text}
address@hidden one nonlettered character @tab aaa
address@hidden in index entry @tab in tab
address@hidden multitable
+
address@hidden {aaa} {bbb}
address@hidden @item on item line
address@hidden multitable
+
+
+
address@hidden vr
+
+
address@hidden

Index: invalid/res_all/texi_tex_in_copying/tex_in_copying.texi.first
===================================================================
RCS file: invalid/res_all/texi_tex_in_copying/tex_in_copying.texi.first
diff -N invalid/res_all/texi_tex_in_copying/tex_in_copying.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_tex_in_copying/tex_in_copying.texi.first       2 Aug 
2009 13:13:12 -0000       1.1
@@ -0,0 +1,31 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden tex_in_copying.info
+
+
+
address@hidden Top
address@hidden Top node
+
address@hidden
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden
+
address@hidden chapter
address@hidden chapter
+
+The fundamental equation is
address@hidden 
+$$
+2 a = \dot{\phi}
+$$
address@hidden tex
+
address@hidden
+
+
address@hidden

Index: invalid/res_all/texi_tex_not_closed/tex_not_closed.texi.first
===================================================================
RCS file: invalid/res_all/texi_tex_not_closed/tex_not_closed.texi.first
diff -N invalid/res_all/texi_tex_not_closed/tex_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_tex_not_closed/tex_not_closed.texi.first       2 Aug 
2009 13:13:12 -0000       1.1
@@ -0,0 +1,11 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+
+This is some \LaTeX{}
+
address@hidden tex
\ No newline at end of file

Index: invalid/res_all/texi_titlepage_not_closed/titlepage_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_titlepage_not_closed/titlepage_not_closed.texi.first
diff -N 
invalid/res_all/texi_titlepage_not_closed/titlepage_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_titlepage_not_closed/titlepage_not_closed.texi.first   
2 Aug 2009 13:13:12 -0000       1.1
@@ -0,0 +1,7 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
+

Index: 
invalid/res_all/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
diff -N 
invalid/res_all/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_all/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
     2 Aug 2009 13:13:12 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden unknown_command_with_braces.info
+
address@hidden Top 
address@hidden Test unknown command with braces
+
+Unknown macro @unknown{ first paragraph
+
+second paragraph}
+
address@hidden first paragraph
+
+second paragraph
+
+third}
+
+
+Unknown thing @thing{}
+
address@hidden

Index: invalid/res_all/texi_verb_not_closed/verb_not_closed.texi.first
===================================================================
RCS file: invalid/res_all/texi_verb_not_closed/verb_not_closed.texi.first
diff -N invalid/res_all/texi_verb_not_closed/verb_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_verb_not_closed/verb_not_closed.texi.first     2 Aug 
2009 13:13:12 -0000       1.1
@@ -0,0 +1,11 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+
+In verb
+
+*

Index: invalid/res_all/texi_verbatim_not_closed/verbatim_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_all/texi_verbatim_not_closed/verbatim_not_closed.texi.first
diff -N invalid/res_all/texi_verbatim_not_closed/verbatim_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_all/texi_verbatim_not_closed/verbatim_not_closed.texi.first     
2 Aug 2009 13:13:12 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+
+some verbatim @
+
address@hidden
+
+
address@hidden verbatim
\ No newline at end of file

Index: invalid/res_info/node_too_much_arguments/node_too_much_arguments.1
===================================================================
RCS file: invalid/res_info/node_too_much_arguments/node_too_much_arguments.1
diff -N invalid/res_info/node_too_much_arguments/node_too_much_arguments.1

Index: invalid/res_info/node_too_much_arguments/node_too_much_arguments.2
===================================================================
RCS file: invalid/res_info/node_too_much_arguments/node_too_much_arguments.2
diff -N invalid/res_info/node_too_much_arguments/node_too_much_arguments.2
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/node_too_much_arguments/node_too_much_arguments.2  2 Aug 
2009 13:13:13 -0000       1.1
@@ -0,0 +1 @@
+** Superfluous arguments for node (l. 12)

Index: invalid/res_info/node_too_much_arguments/node_too_much_arguments.info
===================================================================
RCS file: invalid/res_info/node_too_much_arguments/node_too_much_arguments.info
diff -N invalid/res_info/node_too_much_arguments/node_too_much_arguments.info
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/node_too_much_arguments/node_too_much_arguments.info       
2 Aug 2009 13:13:13 -0000       1.1
@@ -0,0 +1,23 @@
+This is node_too_much_arguments.info, produced by makeinfo version 4.13
+from node_too_much_arguments.texi.
+
+
+File: node_too_much_arguments.info,  Node: Top,  Next: node,  Up: (dir)
+
+Top
+***
+
+* Menu:
+
+* node::
+
+
+File: node_too_much_arguments.info,  Node: node,  Prev: Top
+
+
+
+Tag Table:
+Node: Top108
+Node: node211
+
+End Tag Table

Index: invalid/res_info/texi_bad_nesting/bad_nesting.texi.first
===================================================================
RCS file: invalid/res_info/texi_bad_nesting/bad_nesting.texi.first
diff -N invalid/res_info/texi_bad_nesting/bad_nesting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_bad_nesting/bad_nesting.texi.first    2 Aug 2009 
13:13:13 -0000       1.1
@@ -0,0 +1,46 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden bad_nesting.info
+
address@hidden Top
address@hidden Test for bad nestings
+
+Tests for environments not matching
+
address@hidden
+A quotation
address@hidden cartouche
+
address@hidden {Function Reference} print_navigation $filehandle
+Text
address@hidden deftypefun
+
address@hidden
address@hidden item
+line
address@hidden vtable
+
address@hidden @emph
address@hidden ref
address@hidden
+example
address@hidden display
address@hidden table
+
address@hidden
+in group
address@hidden table
+
address@hidden
+in group 2
address@hidden cartouche
+
address@hidden
+cartouche
address@hidden group
+
address@hidden
+carouche
address@hidden float
+
address@hidden

Index: invalid/res_info/texi_bad_style_nesting/bad_style_nesting.texi.first
===================================================================
RCS file: invalid/res_info/texi_bad_style_nesting/bad_style_nesting.texi.first
diff -N invalid/res_info/texi_bad_style_nesting/bad_style_nesting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_bad_style_nesting/bad_style_nesting.texi.first        
2 Aug 2009 13:13:13 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden bad_style_nesting.info
+
address@hidden Top
address@hidden Test for bad style @@-command nestings
+
+
address@hidden
address@hidden
+in quotation}
address@hidden quotation
+
address@hidden

Index: invalid/res_info/texi_bad_tab_nesting/bad_tab_nesting.texi.first
===================================================================
RCS file: invalid/res_info/texi_bad_tab_nesting/bad_tab_nesting.texi.first
diff -N invalid/res_info/texi_bad_tab_nesting/bad_tab_nesting.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_bad_tab_nesting/bad_tab_nesting.texi.first    2 Aug 
2009 13:13:13 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden bad_tab_nesting.info
+
address@hidden Top
address@hidden Test for bad @@tab  nesting with style @@-command
+
+
address@hidden {truc} {bidule}
address@hidden truc
address@hidden@tab bidule}
address@hidden multitable
+
address@hidden

Index: invalid/res_info/texi_brace_not_closed/brace_not_closed.texi.first
===================================================================
RCS file: invalid/res_info/texi_brace_not_closed/brace_not_closed.texi.first
diff -N invalid/res_info/texi_brace_not_closed/brace_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_brace_not_closed/brace_not_closed.texi.first  2 Aug 
2009 13:13:13 -0000       1.1
@@ -0,0 +1,15 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden brace_not_closed
+
address@hidden ToP
+Top node
+
address@hidden @samp{ @} without opening macro }.}
+
address@hidden @anchor{truc}.
+
+Some text @|.
+More text
+
address@hidden

Index: invalid/res_info/texi_caption_not_closed/caption_not_closed.texi.first
===================================================================
RCS file: invalid/res_info/texi_caption_not_closed/caption_not_closed.texi.first
diff -N invalid/res_info/texi_caption_not_closed/caption_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_caption_not_closed/caption_not_closed.texi.first      
2 Aug 2009 13:13:13 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo.tex    @c -*-texinfo-*-
+
address@hidden caption_not_closed.info
+
address@hidden Top
address@hidden Test caption not closed
+
address@hidden Text
+No label but caption.
+
address@hidden closed caption
+
+The caption trigger a keep_texi, so everything until the end of the file
+is in the caption. Also the caption is formatted twice which leads to 2
+error messages.
+
address@hidden float
+
address@hidden Text
+
address@hidden

Index: invalid/res_info/texi_code_not_closed/code_not_closed.texi.first
===================================================================
RCS file: invalid/res_info/texi_code_not_closed/code_not_closed.texi.first
diff -N invalid/res_info/texi_code_not_closed/code_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_code_not_closed/code_not_closed.texi.first    2 Aug 
2009 13:13:14 -0000       1.1
@@ -0,0 +1,18 @@
+\input texinfo @c -*-texinfo-*-
address@hidden code_not_closed
+
address@hidden Top
address@hidden Missing closing bracket
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden closed
+
address@hidden chapter
address@hidden chapter
+
address@hidden not closed
+
address@hidden

Index: 
invalid/res_info/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
diff -N 
invalid/res_info/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_code_not_closed_no_newline/code_not_closed_no_newline.texi.first
      2 Aug 2009 13:13:14 -0000       1.1
@@ -0,0 +1,16 @@
+\input texinfo @c -*-texinfo-*-
address@hidden code_not_closed_no_newline
+
address@hidden Top
address@hidden Missing closing bracket without a following newline
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden closed
address@hidden chapter
address@hidden chapter
+
address@hidden not closed
address@hidden

Index: invalid/res_info/texi_commands_not_closed/commands_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_commands_not_closed/commands_not_closed.texi.first
diff -N invalid/res_info/texi_commands_not_closed/commands_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_commands_not_closed/commands_not_closed.texi.first    
2 Aug 2009 13:13:14 -0000       1.1
@@ -0,0 +1,34 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden commands_not_closed.info
+
address@hidden Top
+
+@'{e
+
address@hidden Chapter 1
+
address@hidden
+
+anchor}
+
address@hidden anchor
+
address@hidden Chapter 2
+
+See @ref{my anchor}, and @ref{an anchor}, and @ref{footnote anchor}
+
address@hidden Chapter 3
+
address@hidden anchor
+
address@hidden Chapter 4
+
address@hidden
address@hidden Chapter 5
+
address@hidden
+Footnote
address@hidden anchor}
+
address@hidden

Index: invalid/res_info/texi_copying_not_closed/copying_not_closed.texi.first
===================================================================
RCS file: invalid/res_info/texi_copying_not_closed/copying_not_closed.texi.first
diff -N invalid/res_info/texi_copying_not_closed/copying_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_copying_not_closed/copying_not_closed.texi.first      
2 Aug 2009 13:13:14 -0000       1.1
@@ -0,0 +1,7 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
+

Index: 
invalid/res_info/texi_def_bad_defx_command/def_bad_defx_command.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_def_bad_defx_command/def_bad_defx_command.texi.first
diff -N 
invalid/res_info/texi_def_bad_defx_command/def_bad_defx_command.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_def_bad_defx_command/def_bad_defx_command.texi.first  
2 Aug 2009 13:13:14 -0000       1.1
@@ -0,0 +1,15 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden def_bad_defx_command.info
+
address@hidden Top
address@hidden Test wrong @@def*x
+
address@hidden {my def} args @var{arg} @dots{}
address@hidden {type} {name} and now the args
+
+In defun.
+
address@hidden defun
+
address@hidden

Index: invalid/res_info/texi_def_cmd_dble/def_cmd_dble.texi.first
===================================================================
RCS file: invalid/res_info/texi_def_cmd_dble/def_cmd_dble.texi.first
diff -N invalid/res_info/texi_def_cmd_dble/def_cmd_dble.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_def_cmd_dble/def_cmd_dble.texi.first  2 Aug 2009 
13:13:14 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
address@hidden def_cmd_dble.info
address@hidden Top
address@hidden Test for double definition commands
+
address@hidden func plot (a, b, c, ...) @deffnx func plot2 (a, b, c, ..., d)
+aaa
address@hidden deffn
+
address@hidden func aaaa args  @defvr c--ategory d--efvr_name
+bbb
address@hidden deffn
+
address@hidden

Index: 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2
===================================================================
RCS file: 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2
diff -N 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.2

Index: 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
===================================================================
RCS file: 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
diff -N 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passfirst
 2 Aug 2009 13:13:14 -0000       1.1
@@ -0,0 +1,12 @@
+direntry_dircategory_after_first_node.texi(,2) 
+direntry_dircategory_after_first_node.texi(,3) @setfilename 
direntry_dircategory_after_first_node.info
+direntry_dircategory_after_first_node.texi(,4) 
+direntry_dircategory_after_first_node.texi(,5) @node Top
+direntry_dircategory_after_first_node.texi(,6) @top direntry direcategory 
after first node
+direntry_dircategory_after_first_node.texi(,7) 
+direntry_dircategory_after_first_node.texi(,8) @dircategory Cat
+direntry_dircategory_after_first_node.texi(,9) @direntry
+direntry_dircategory_after_first_node.texi(,10) * in text: (in_text). in text
+direntry_dircategory_after_first_node.texi(,11) @end direntry
+direntry_dircategory_after_first_node.texi(,12) 
+direntry_dircategory_after_first_node.texi(,13) @bye

Index: 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
===================================================================
RCS file: 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
diff -N 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.passtexi
  2 Aug 2009 13:13:14 -0000       1.1
@@ -0,0 +1,12 @@
+direntry_dircategory_after_first_node.texi(,2) 
+direntry_dircategory_after_first_node.texi(,3) @setfilename 
direntry_dircategory_after_first_node.info
+direntry_dircategory_after_first_node.texi(,4) 
+direntry_dircategory_after_first_node.texi(,5) @node Top
+direntry_dircategory_after_first_node.texi(,6) @top direntry direcategory 
after first node
+direntry_dircategory_after_first_node.texi(,7) 
+direntry_dircategory_after_first_node.texi(,8) @dircategory Cat
+direntry_dircategory_after_first_node.texi(,9) @direntry
+direntry_dircategory_after_first_node.texi(,10) * in text: (in_text). in text
+direntry_dircategory_after_first_node.texi(,11) @end direntry
+direntry_dircategory_after_first_node.texi(,12) 
+direntry_dircategory_after_first_node.texi(,13) @bye

Index: 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
===================================================================
RCS file: 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
diff -N 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi
      2 Aug 2009 13:13:14 -0000       1.1
@@ -0,0 +1,13 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden direntry_dircategory_after_first_node.info
+
address@hidden Top
address@hidden direntry direcategory after first node
+
address@hidden Cat
address@hidden
+* in text: (in_text). in text
address@hidden direntry
+
address@hidden

Index: 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
diff -N 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_direntry_dircategory_after_first_node/direntry_dircategory_after_first_node.texi.first
        2 Aug 2009 13:13:14 -0000       1.1
@@ -0,0 +1,13 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden direntry_dircategory_after_first_node.info
+
address@hidden Top
address@hidden direntry direcategory after first node
+
address@hidden Cat
address@hidden
+* in text: (in_text). in text
address@hidden direntry
+
address@hidden

Index: invalid/res_info/texi_footnote_not_closed/footnote_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_footnote_not_closed/footnote_not_closed.texi.first
diff -N invalid/res_info/texi_footnote_not_closed/footnote_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_footnote_not_closed/footnote_not_closed.texi.first    
2 Aug 2009 13:13:14 -0000       1.1
@@ -0,0 +1,29 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden footnote_not_closed.info
+
address@hidden Top
address@hidden Top section
+
address@hidden have a footnote.
+
+This is an important footnote.
+
address@hidden
+* chapter::           the chapter
+* chapter2::           the second chapter
address@hidden menu
+
address@hidden chapter
address@hidden Chapter
+
+In address@hidden footnote
+
address@hidden
+In a quotation
+
address@hidden chapter2
address@hidden Chapter2
+
+
address@hidden

Index: invalid/res_info/texi_formats_not_closed/formats_not_closed.texi.first
===================================================================
RCS file: invalid/res_info/texi_formats_not_closed/formats_not_closed.texi.first
diff -N invalid/res_info/texi_formats_not_closed/formats_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_formats_not_closed/formats_not_closed.texi.first      
2 Aug 2009 13:13:14 -0000       1.1
@@ -0,0 +1,64 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
address@hidden
+
address@hidden @minus
address@hidden item
+table line
+
+Some text.
address@hidden
+
address@hidden first item
address@hidden an item
+
address@hidden example
+
+
address@hidden a section
+
+Node text
+
+an end table without correspondiing opening part
address@hidden table
+
+Multitable not closed with item and tab
+
address@hidden {r} {t}
address@hidden rt @tab ds
+
address@hidden a section
+Multitable not closed with item
+
address@hidden {r} {t}
address@hidden rt 
+
address@hidden a section
+Multitable not closed
address@hidden {r} {t}
+
+
address@hidden a section
address@hidden truc bidule machin
address@hidden truc chose args
address@hidden type1 var bidule
+
address@hidden a section 
+
+flushright not closed
+
address@hidden
+
+text flushed right
+
address@hidden a section
+
+group not closed
+
address@hidden
+
+text in group
+
address@hidden

Index: invalid/res_info/texi_html_not_closed/html_not_closed.texi.first
===================================================================
RCS file: invalid/res_info/texi_html_not_closed/html_not_closed.texi.first
diff -N invalid/res_info/texi_html_not_closed/html_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_html_not_closed/html_not_closed.texi.first    2 Aug 
2009 13:13:14 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+
+This is some html
+<address> my address </address>
+
+
+
address@hidden html
\ No newline at end of file

Index: invalid/res_info/texi_ignored_not_closed/ignored_not_closed.texi.first
===================================================================
RCS file: invalid/res_info/texi_ignored_not_closed/ignored_not_closed.texi.first
diff -N invalid/res_info/texi_ignored_not_closed/ignored_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_ignored_not_closed/ignored_not_closed.texi.first      
2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,6 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+

Index: 
invalid/res_info/texi_invalid_command_in_table/invalid_command_in_table.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_invalid_command_in_table/invalid_command_in_table.texi.first
diff -N 
invalid/res_info/texi_invalid_command_in_table/invalid_command_in_table.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_invalid_command_in_table/invalid_command_in_table.texi.first
  2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden invalid_command_in_table.info
+
address@hidden Top
+Top node
+
address@hidden
+{ @itemTop,, title
+long title}
+Item line
address@hidden table
+
address@hidden

Index: 
invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.texi.first
diff -N 
invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_macro_call_not_closed/macro_call_not_closed.texi.first    
    2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,12 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden macro1 { arg1 , arg2 }
+result: @emph{\arg1\} protected \\ -> \\arg1\\ @emph{\arg2\}
address@hidden macro 
+
address@hidden Top
+
+after end macro
+
+
+

Index: 
invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.texi.first
diff -N 
invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_macro_def_not_closed/macro_def_not_closed.texi.first  
2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,11 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden the_macro {arg1, arg2}
+
+Macro body
+
address@hidden macro

Index: invalid/res_info/texi_math_not_closed/math_not_closed.texi.first
===================================================================
RCS file: invalid/res_info/texi_math_not_closed/math_not_closed.texi.first
diff -N invalid/res_info/texi_math_not_closed/math_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_math_not_closed/math_not_closed.texi.first    2 Aug 
2009 13:13:15 -0000       1.1
@@ -0,0 +1,11 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden math_no_closed.info
+
address@hidden Top
+
address@hidden + 2
address@hidden Chapter 
+
address@hidden + 2
address@hidden

Index: 
invalid/res_info/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first
diff -N 
invalid/res_info/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_multitable_begin_with_tab/multitable_begin_with_tab.texi.first
        2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,17 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden multitable_begin_with_tab.info
+
address@hidden Top
address@hidden Test for tab beginning a multitable
+
address@hidden {a} {b}
address@hidden t
address@hidden multitable
+
address@hidden {c} {d}
address@hidden t2
address@hidden it
address@hidden multitable
+
address@hidden

Index: 
invalid/res_info/texi_multitable_too_much_col/multitable_too_much_col.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_multitable_too_much_col/multitable_too_much_col.texi.first
diff -N 
invalid/res_info/texi_multitable_too_much_col/multitable_too_much_col.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_multitable_too_much_col/multitable_too_much_col.texi.first
    2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,25 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
address@hidden test multitable with too much cells
+
+
address@hidden
address@hidden item in empty multitable @tab tab in empty m @tab second tab in 
empty m
address@hidden item in empty m
address@hidden multitable
+
address@hidden {a}
address@hidden a @tab additional tab @tab other additional tab @tab 3rd  
additiona tab
address@hidden a1
address@hidden a2 @tab additional tab2 @tab other additional tab2 @tab 3rd  
additional tab2
address@hidden a3 @tab one additional tab
address@hidden multitable
+
address@hidden @columnfractions 0.4 0.6
address@hidden first @tab second @tab first out @tab second out @tab third out
address@hidden first1 
address@hidden first2 @tab second2 @tab first2 out
address@hidden multitable
+
address@hidden

Index: invalid/res_info/texi_node_in_copying/node_in_copying.texi.first
===================================================================
RCS file: invalid/res_info/texi_node_in_copying/node_in_copying.texi.first
diff -N invalid/res_info/texi_node_in_copying/node_in_copying.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_node_in_copying/node_in_copying.texi.first    2 Aug 
2009 13:13:15 -0000       1.1
@@ -0,0 +1,15 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden node_in_copying.info
+
address@hidden Top
address@hidden Top section
+
+
+This is an unterminatted copyright notice
+
+
+
+This is a manual testing @@node appearing within an unterminated @@copying.
+
address@hidden

Index: invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.2
===================================================================
RCS file: 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.2
diff -N invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.2
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.2     
2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1 @@
+** Superfluous arguments for node (l. 12)

Index: 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.passfirst
===================================================================
RCS file: 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.passfirst
diff -N 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.passfirst 
    2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,13 @@
+node_too_much_arguments.texi(,2) 
+node_too_much_arguments.texi(,3) @setfilename node_too_much_arguments.info
+node_too_much_arguments.texi(,4) 
+node_too_much_arguments.texi(,5) @node Top
+node_too_much_arguments.texi(,6) @top Top
+node_too_much_arguments.texi(,7) 
+node_too_much_arguments.texi(,8) @menu
+node_too_much_arguments.texi(,9) * node::
+node_too_much_arguments.texi(,10) @end menu
+node_too_much_arguments.texi(,11) 
+node_too_much_arguments.texi(,12) @node node,,,,too much arg
+node_too_much_arguments.texi(,13) 
+node_too_much_arguments.texi(,14) @bye

Index: 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.passtexi
===================================================================
RCS file: 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.passtexi
diff -N 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.passtexi  
    2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,13 @@
+node_too_much_arguments.texi(,2) 
+node_too_much_arguments.texi(,3) @setfilename node_too_much_arguments.info
+node_too_much_arguments.texi(,4) 
+node_too_much_arguments.texi(,5) @node Top
+node_too_much_arguments.texi(,6) @top Top
+node_too_much_arguments.texi(,7) 
+node_too_much_arguments.texi(,8) @menu
+node_too_much_arguments.texi(,9) * node::
+node_too_much_arguments.texi(,10) @end menu
+node_too_much_arguments.texi(,11) 
+node_too_much_arguments.texi(,12) @node node,,,,too much arg
+node_too_much_arguments.texi(,13) 
+node_too_much_arguments.texi(,14) @bye

Index: 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.texi
===================================================================
RCS file: 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.texi
diff -N 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.texi  
2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden node_too_much_arguments.info
+
address@hidden Top
address@hidden Top
+
address@hidden
+* node::
address@hidden menu
+
address@hidden node,,,,too much arg
+
address@hidden

Index: 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.texi.first
diff -N 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_node_too_much_arguments/node_too_much_arguments.texi.first
    2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden node_too_much_arguments.info
+
address@hidden Top
address@hidden Top
+
address@hidden
+* node::
address@hidden menu
+
address@hidden node,,,,too much arg
+
address@hidden

Index: invalid/res_info/texi_not_closed_in_menu/not_closed_in_menu.texi.first
===================================================================
RCS file: invalid/res_info/texi_not_closed_in_menu/not_closed_in_menu.texi.first
diff -N invalid/res_info/texi_not_closed_in_menu/not_closed_in_menu.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_not_closed_in_menu/not_closed_in_menu.texi.first      
2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,32 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
address@hidden
+* (gcc):: text @table @minus
address@hidden item
+table line
address@hidden menu
+
+Some text.
+
address@hidden
+* (manual):: desc
+
address@hidden @bullet
address@hidden item
+comment
+* (manual2)::
address@hidden menu
+
address@hidden
+* (info):: before deff @deffn bidule truc chose
+
+deffn text
address@hidden menu
+After menu
+
address@hidden
+* (manual_in_menu):: desc2
+
address@hidden

Index: invalid/res_info/texi_recursive_copying/recursive_copying.texi.first
===================================================================
RCS file: invalid/res_info/texi_recursive_copying/recursive_copying.texi.first
diff -N invalid/res_info/texi_recursive_copying/recursive_copying.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_recursive_copying/recursive_copying.texi.first        
2 Aug 2009 13:13:15 -0000       1.1
@@ -0,0 +1,18 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden recursive_copying.info
+
+
address@hidden Top
address@hidden Test recursive copying
+
+Test recursive copying.
+
+
+In copying.
+
+
+In copying.
+
+
address@hidden

Index: invalid/res_info/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first
diff -N invalid/res_info/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_ref_to_unknown_node/ref_to_unknown_node.texi.first    
2 Aug 2009 13:13:16 -0000       1.1
@@ -0,0 +1,10 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden ref_to_unknown_node.info
+
address@hidden Top
address@hidden Ref to nonexisting node.
+
+ref to a non existing address@hidden
+
address@hidden

Index: 
invalid/res_info/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
diff -N 
invalid/res_info/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_style_not_closed_in_cartouche/style_not_closed_in_cartouche.texi.first
        2 Aug 2009 13:13:16 -0000       1.1
@@ -0,0 +1,12 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden style_not_closed_in_cartouche.info
+
address@hidden Top
address@hidden Test command not closed in cartouche
+
address@hidden
+cartouche @code{in code 
address@hidden cartouche
+
address@hidden

Index: 
invalid/res_info/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
diff -N 
invalid/res_info/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_style_not_closed_in_table_line/style_not_closed_in_table_line.texi.first
      2 Aug 2009 13:13:16 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden style_not_closed_in_table_line.info
+
address@hidden Top
address@hidden Test command not closed on table line
+
address@hidden @asis
address@hidden first item
+line
+line @code{in code @item in item
address@hidden table
+
address@hidden

Index: invalid/res_info/texi_tab_in_index/tab_in_index.texi.first
===================================================================
RCS file: invalid/res_info/texi_tab_in_index/tab_in_index.texi.first
diff -N invalid/res_info/texi_tab_in_index/tab_in_index.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_tab_in_index/tab_in_index.texi.first  2 Aug 2009 
13:13:16 -0000       1.1
@@ -0,0 +1,22 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden tab_in_index.info
+
address@hidden Top
address@hidden Test for @@tab in @@index
+
address@hidden {one nonlettered character} {normal text}
address@hidden one nonlettered character @tab aaa
address@hidden in index entry @tab in tab
address@hidden multitable
+
address@hidden {aaa} {bbb}
address@hidden @item on item line
address@hidden multitable
+
+
+
address@hidden vr
+
+
address@hidden

Index: invalid/res_info/texi_tex_in_copying/tex_in_copying.texi.first
===================================================================
RCS file: invalid/res_info/texi_tex_in_copying/tex_in_copying.texi.first
diff -N invalid/res_info/texi_tex_in_copying/tex_in_copying.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_tex_in_copying/tex_in_copying.texi.first      2 Aug 
2009 13:13:16 -0000       1.1
@@ -0,0 +1,55 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden tex_in_copying.info
+
+
+
address@hidden Top
address@hidden Top node
+
+Some equation is indeed needed to understand the copyright of
+that file
address@hidden 
+From @ someone <> !
+$$
+a = \phi
+$$
address@hidden tex
+
+
address@hidden
+* chapter::
address@hidden menu
+
+Some equation is indeed needed to understand the copyright of
+that file
address@hidden 
+From @ someone <> !
+$$
+a = \phi
+$$
address@hidden tex
+
+
address@hidden chapter
address@hidden chapter
+
+The fundamental equation is
address@hidden 
+$$
+2 a = \dot{\phi}
+$$
address@hidden tex
+
+Some equation is indeed needed to understand the copyright of
+that file
address@hidden 
+From @ someone <> !
+$$
+a = \phi
+$$
address@hidden tex
+
+
+
address@hidden

Index: invalid/res_info/texi_tex_not_closed/tex_not_closed.texi.first
===================================================================
RCS file: invalid/res_info/texi_tex_not_closed/tex_not_closed.texi.first
diff -N invalid/res_info/texi_tex_not_closed/tex_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_tex_not_closed/tex_not_closed.texi.first      2 Aug 
2009 13:13:16 -0000       1.1
@@ -0,0 +1,11 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+
+This is some \LaTeX{}
+
address@hidden tex
\ No newline at end of file

Index: 
invalid/res_info/texi_titlepage_not_closed/titlepage_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_titlepage_not_closed/titlepage_not_closed.texi.first
diff -N 
invalid/res_info/texi_titlepage_not_closed/titlepage_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_titlepage_not_closed/titlepage_not_closed.texi.first  
2 Aug 2009 13:13:16 -0000       1.1
@@ -0,0 +1,7 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
+

Index: 
invalid/res_info/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
diff -N 
invalid/res_info/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
invalid/res_info/texi_unknown_command_with_braces/unknown_command_with_braces.texi.first
    2 Aug 2009 13:13:16 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden unknown_command_with_braces.info
+
address@hidden Top 
address@hidden Test unknown command with braces
+
+Unknown macro @unknown{ first paragraph
+
+second paragraph}
+
address@hidden first paragraph
+
+second paragraph
+
+third}
+
+
+Unknown thing @thing{}
+
address@hidden

Index: invalid/res_info/texi_verb_not_closed/verb_not_closed.texi.first
===================================================================
RCS file: invalid/res_info/texi_verb_not_closed/verb_not_closed.texi.first
diff -N invalid/res_info/texi_verb_not_closed/verb_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_verb_not_closed/verb_not_closed.texi.first    2 Aug 
2009 13:13:16 -0000       1.1
@@ -0,0 +1,11 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+
+In verb
+
+*

Index: invalid/res_info/texi_verbatim_not_closed/verbatim_not_closed.texi.first
===================================================================
RCS file: 
invalid/res_info/texi_verbatim_not_closed/verbatim_not_closed.texi.first
diff -N invalid/res_info/texi_verbatim_not_closed/verbatim_not_closed.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ invalid/res_info/texi_verbatim_not_closed/verbatim_not_closed.texi.first    
2 Aug 2009 13:13:16 -0000       1.1
@@ -0,0 +1,14 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top
+
+texte
+
address@hidden
+
+some verbatim @
+
address@hidden
+
+
address@hidden verbatim
\ No newline at end of file

Index: misc/res/texi_templates/templates.2
===================================================================
RCS file: misc/res/texi_templates/templates.2
diff -N misc/res/texi_templates/templates.2

Index: misc/res/texi_templates/templates.passfirst
===================================================================
RCS file: misc/res/texi_templates/templates.passfirst
diff -N misc/res/texi_templates/templates.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res/texi_templates/templates.passfirst 2 Aug 2009 13:13:17 -0000       
1.1
@@ -0,0 +1,725 @@
+templates.texi(,2) @c %**start of header
+templates.texi(,3) @setfilename templates.info
+templates.texi(,4) @documentencoding iso-8859-1
+templates.texi(,5) @documentlanguage en
+templates.texi(,6) @settitle  Emacs template package documentation, version 
3.1c
+templates.texi(,7) @c %**end of header
+templates.texi(,8) @alias kbdmenu = kbd
+templates.texi(,9) @alias codetpl = samp
+templates.texi(,10) @alias codevar = code
+templates.texi(,11) 
+templates.texi(,20) 
+templates.texi(,21) @dircategory Emacs
+templates.texi(,22) @direntry
+templates.texi(,23) * Templates: (templates). Creating templates for files 
creation.
+templates.texi(,24) @end direntry
+templates.texi(,25) 
+templates.texi(,26) 
+templates.texi(,40) 
+templates.texi(,42) @node Top,,,(dir)top
+templates.texi(,43) @top Top node.
+templates.texi(,44) 
+templates.texi(,45) This is the manual of Emacs template package
+templates.texi(,47) 
+templates.texi(,48) @menu
+templates.texi(,49) * Overview:: Overview.
+templates.texi(,50) * Installation:: how to install the template package.
+templates.texi(,51) * Basics:: How to make and use templates.
+templates.texi(,52) * Advanced:: Templates for advanced users.
+templates.texi(,53) * Indexes:: Indexes for commands, keyword, and variable.
+templates.texi(,54) * News:: News for Package Template.
+templates.texi(,55) * Acknowledgements:: Acknowledgements.
+templates.texi(,56) @end menu
+templates.texi(,57) 
+templates.texi(,58) @node Overview,,,Top
+templates.texi(,59) @chapter Overview
+templates.texi(,60) 
+templates.texi(,61) When you create a new file with Emacs, package Template 
supplies an initial
+templates.texi(,62) buffer content via a template: a file with normal text and 
expansion forms.
+templates.texi(,63) There is a menu to easily create such templates.  You can 
also use new commands
+templates.texi(,64) to decorate comments and update the buffer contents.
+templates.texi(,65) 
+templates.texi(,66) 
+templates.texi(,67) The main difference between Template and 
@ref{Related,other similar
+templates.texi(,68) packages} is that you can define very flexible templates 
without having
+templates.texi(,69) to learn Lisp or changing your Emacs init file.  This 
package does not
+templates.texi(,70) help Lisp programmers to define complex macros.
+templates.texi(,71) 
+templates.texi(,72) @itemize
+templates.texi(,73) @item
+templates.texi(,74) The template mechanism is hooked into the normal find/open 
file command.  There
+templates.texi(,75) are also new commands for creating a new file using a 
template and inserting &amp;
+templates.texi(,76) expanding a template.
+templates.texi(,77) @item
+templates.texi(,78) You do not have to enter the file name of the template 
file.  This package uses
+templates.texi(,79) a sophisticated search to find the most appropritate 
template (supporting
+templates.texi(,80) project- and subproject specific template files).  You can 
change the
+templates.texi(,81) suggestion, of course.
+templates.texi(,82) @item
+templates.texi(,83) A template file can be easily created.  Most of the file 
usually contains
+templates.texi(,84) simple text; only @dfn{expansion forms} which look like
+templates.texi(,85) @samp{(>>>@var{Key}<<<)} will get replaced.
+templates.texi(,86) @item
+templates.texi(,87) There are various useful predefined expansions: set point 
(the cursor
+templates.texi(,88) position), mark and registers to the current position; 
insert various parts of
+templates.texi(,89) the filename, the user/system name, the current date/time 
in various formats,
+templates.texi(,90) and some text to be entered by the user.
+templates.texi(,91) @item
+templates.texi(,92) Template-specific expansions can be defined at the end of 
the template file.
+templates.texi(,93) There are commands to create these definitions; only 
complex expansions would
+templates.texi(,94) require some knowledge of Lisp.
+templates.texi(,95) @end itemize
+templates.texi(,96) 
+templates.texi(,97) There is a menu to support the creation of template files. 
 Additionally, this
+templates.texi(,98) package provides the following features:
+templates.texi(,99) 
+templates.texi(,100) @itemize
+templates.texi(,101) @item
+templates.texi(,102) When saving a buffer, some parts of the buffer contents 
(header and time
+templates.texi(,103) stamps) are automatically updated if necessary.
+templates.texi(,104) @item
+templates.texi(,105) There are commands to decorate comments with dashes and 
alike.  Works for
+templates.texi(,106) languages with any comment style, even languages having 
mixed comments like C++
+templates.texi(,107) and Java.
+templates.texi(,108) @end itemize
+templates.texi(,109) 
+templates.texi(,110) 
+templates.texi(,111) @node Related,,,Overview
+templates.texi(,112) @section Packages Related to Template
+templates.texi(,113) 
+templates.texi(,114) 
+templates.texi(,115) There are template packages of two different categories, 
which are determined
+templates.texi(,116) by one question:
+templates.texi(,117) 
+templates.texi(,118) @emph{What do you want to do with templates?} Do you want 
to use templates
+templates.texi(,119) when creating new files, or do you want to insert some 
stuff during editing
+templates.texi(,120) (but you are not satisfied with the standard macro 
mechanism)?
+templates.texi(,121) 
+templates.texi(,122) Well, templates could be seen as both new-file templates 
and macro-like
+templates.texi(,123) template, but the main application of templates 
determines the answers for the
+templates.texi(,124) following questions:
+templates.texi(,125)       
+templates.texi(,126) @itemize
+templates.texi(,127) @item
+templates.texi(,128) @emph{How do you define a template?} You can define it by 
one file per
+templates.texi(,129) template or by customizing some Emacs variables.  The 
first solution (which is
+templates.texi(,130) used by package Template) avoids Emacs hacking but might 
not be optimal if you
+templates.texi(,131) just want to define complex macros or if you want to use 
templates to program a
+templates.texi(,132) new Emacs major-mode.
+templates.texi(,133) @item
+templates.texi(,134) @emph{How is an appropriate template selected?} If you 
want to use complex
+templates.texi(,135) macro during editing, the answer is clear: the user have 
to provide the name of
+templates.texi(,136) the template.  For new files, the appropriate template 
should be automatically
+templates.texi(,137) selected.  But of course, you don't want to loose any 
flexibility and you don't
+templates.texi(,138) want to customize your Emacs for every project you start.
+templates.texi(,139) @item
+templates.texi(,140) @emph{How do you do "clever" things in the template?} The 
aims are to have
+templates.texi(,141) many predefined expansions (e.g., the current date) and 
to define some
+templates.texi(,142) non-trivial things without learning Lisp.  Any 
functionality here is the
+templates.texi(,143) overlapping point of both template categories.
+templates.texi(,144) @end itemize
+templates.texi(,145) 
+templates.texi(,146) 
+templates.texi(,147) 
+templates.texi(,148) Here is a little list of related files, collected around 
1998, some discarded
+templates.texi(,149) later (no @abbr{URL}s, no active updating, but you can 
send me a mail):
+templates.texi(,150) 
+templates.texi(,151) @itemize
+templates.texi(,152) @item
+templates.texi(,153) Package @cite{autoinsert.el} uses templates when creating 
new files.
+templates.texi(,154) These templates are defined via files or by customizing 
Emacs.  For each new
+templates.texi(,155) template you want to introduce, you must customize your 
Emacs, the selection is
+templates.texi(,156) restricted to one template per major-mode or regexp 
match.  No predefined
+templates.texi(,157) expansions; clever things are provided by usual Lisp 
expressions or the
+templates.texi(,158) macro-like templates of package @cite{skeleton}.
+templates.texi(,159) @item
+templates.texi(,160) Package @cite{skeleton.el} is a Lisp language extension 
for
+templates.texi(,161) writing statement skeletons, i.e., you get macro-like 
Lisp commands.
+templates.texi(,162) @item
+templates.texi(,163) Package @cite{tempo.el} helps you defining and using 
named macro-like
+templates.texi(,164) templates.  Its predefined macros are similar to some 
predefined expansions of
+templates.texi(,165) package Template.  A specific template is used by
+templates.texi(,166) <code class="lisp">html-helper-mode</code> when creating 
a new html file.
+templates.texi(,167) (This is turned off with the default installation of 
package Template.)
+templates.texi(,168) @item
+templates.texi(,169) Package @cite{hm--html-menus} provides a command to 
insert templates
+templates.texi(,170) editing.  These templates are defined via files.  There 
are no predefined
+templates.texi(,171) expansions (except setting point), non-trivial expansions 
are defined via Lisp.
+templates.texi(,172) @end itemize
+templates.texi(,173) 
+templates.texi(,174) 
+templates.texi(,175) 
+templates.texi(,176) 
+templates.texi(,177) @node Installation,,,Top
+templates.texi(,178) @chapter Installation
+templates.texi(,179) 
+templates.texi(,180) @section Installation Instructions
+templates.texi(,181) 
+templates.texi(,182) @enumerate
+templates.texi(,183) @item
+templates.texi(,184) Copy file @file{template/lisp/template.el} into your
+templates.texi(,185) load-path and byte-compile it.
+templates.texi(,186) @item
+templates.texi(,187) Insert the following code into your Emacs init file
+templates.texi(,188) (@file{~/.emacs}):
+templates.texi(,189) 
+templates.texi(,190) @lisp
+templates.texi(,191) (require 'template)
+templates.texi(,192) (template-initialize)
+templates.texi(,193) @end lisp
+templates.texi(,194) 
+templates.texi(,195) @item
+templates.texi(,196) If you want to customize package Template, use @kbd{M-x
+templates.texi(,197) customize-group @key{RET} template
+templates.texi(,198) @key{RET}} or the customize entry in menu
+templates.texi(,199) @kbd{Options}.
+templates.texi(,200) @item
+templates.texi(,201) You might want to copy the template files from directory
+templates.texi(,202) @file{template/templates/} to
+templates.texi(,203) @file{~/.templates/} and change them according to your
+templates.texi(,204) preferences.
+templates.texi(,205) @end enumerate
+templates.texi(,206) 
+templates.texi(,207) 
+templates.texi(,208) Installation instructions with further explanations can 
be found in file
+templates.texi(,209) @file{template/INSTALL} of the distribution.
+templates.texi(,210) 
+templates.texi(,211)  
+templates.texi(,212) 
+templates.texi(,213) @node Basics,,,Top
+templates.texi(,214) @chapter Basics
+templates.texi(,215) 
+templates.texi(,216) Emacs, template, file template, comment decoration, 
auto-updating, time stamp, details
+templates.texi(,217) 
+templates.texi(,218) @menu
+templates.texi(,219) * menus:: Menus and Key-Bindings.
+templates.texi(,220) * using:: Using a Template.
+templates.texi(,221) * finding:: Finding a Template.
+templates.texi(,222) * creating:: Creating a Template.
+templates.texi(,223) * decorating:: Decorating a Comment.
+templates.texi(,224) * updating:: Updating a Buffer.
+templates.texi(,225) @end menu
+templates.texi(,226) 
+templates.texi(,227) @node menus,,,Basics
+templates.texi(,228) @section  Menus and Key-Bindings
+templates.texi(,229) @c 
--------------------------------------------------------------------------------
+templates.texi(,230) For Emacs-21.1+ and XEmacs, this package defines the 
following menu entries and
+templates.texi(,231) key-bindings: 
+templates.texi(,232) 
+templates.texi(,233) @itemize
+templates.texi(,234) @item
+templates.texi(,235) In menu @kbd{File} , there is a new menu item @kbd{New 
File
+templates.texi(,236) Using Template...}  .  The corresponding command is also 
bound to the
+templates.texi(,237) key sequence @kbd{C-x t}.
+templates.texi(,238) @item
+templates.texi(,239) At the end of menu @kbd{Cmds} (in XEmacs if it exists) or 
menu
+templates.texi(,240)  @kbd{Edit} , there is a new submenu @kbd{Template 
Creation}.
+templates.texi(,241) @item
+templates.texi(,242) Enter @kbd{C-x C-=} (command 
@command{template-single-comment}) to
+templates.texi(,243) insert dashes and alike into the current line and end the 
comment.
+templates.texi(,244) @item
+templates.texi(,245) Enter @kbd{C-x C-;} (command 
@command{template-single-comment}) to
+templates.texi(,246) insert dashes and alike around the current comment block.
+templates.texi(,247) @item
+templates.texi(,248) At the end of menu @kbd{Edit} , there is a new submenu
+templates.texi(,249) @kbd{Comment}.  It also contains the two commands just 
mentioned.
+templates.texi(,250) @end itemize
+templates.texi(,251) 
+templates.texi(,252) @c 
--------------------------------------------------------------------------------
+templates.texi(,253) @node using,,,Basics
+templates.texi(,254) @section  Using a Template
+templates.texi(,255) @c 
--------------------------------------------------------------------------------
+templates.texi(,256) Package Template offers various ways how to use template 
files:
+templates.texi(,257) 
+templates.texi(,258) In Emacs, the usual way to create a new file is by typing 
@kbd{C-x C-f},
+templates.texi(,259) using the menu or the toolbar (running command 
@command{find-file} or
+templates.texi(,260) @command{ffap}) and entering a non-existent file name.  
In this case,
+templates.texi(,261) you will be asked whether to use a template for the new 
file.  You can
+templates.texi(,262) turn off this feature.
+templates.texi(,263) 
+templates.texi(,264) @itemize
+templates.texi(,265) @item
+templates.texi(,266) Here a first undefined xref @xref{EExpansion}.
+templates.texi(,267) There is a new command @command{template-new-file} 
@footnote{for the
+templates.texi(,268) menu entry and its key-binding type @kbd{C-h f 
template-new-file},
+templates.texi(,269) @xref{EExpansion}} to create a new file using a template. 
 Here, you have
+templates.texi(,270) the chance to edit the name of the template file.  This 
command also
+templates.texi(,271) supports file name refinement which is useful to create a 
file in a
+templates.texi(,272) series of files like @file{exercise2.tex} etc.
+templates.texi(,273) @item
+templates.texi(,274) There is also a command (@kbd{M-x 
template-expand-template})
+templates.texi(,275) to insert a template file into the current buffer and 
expand its expansion
+templates.texi(,276) forms.
+templates.texi(,277) @end itemize
+templates.texi(,278) 
+templates.texi(,279) 
+templates.texi(,280) For more @command{template-new-file} and 
@code{template-auto-insert},
+templates.texi(,281)  @xref{Expansion}.
+templates.texi(,282) 
+templates.texi(,283) @c 
--------------------------------------------------------------------------------
+templates.texi(,284) 
+templates.texi(,285) @node finding,,,Basics
+templates.texi(,286) @section  Finding a Template
+templates.texi(,287) @c 
--------------------------------------------------------------------------------
+templates.texi(,288) The algorithm for finding the most appropriate template 
can be best explained
+templates.texi(,289) with a little example:
+templates.texi(,290) 
+templates.texi(,291) @itemize
+templates.texi(,292) @item
+templates.texi(,293) You have a project @file{~/proj/} with subprojects 
@file{foo/} and
+templates.texi(,294) @file{bar/} containing @file{.java} files.
+templates.texi(,295) @item
+templates.texi(,296) You want to define a general template for the 
@file{.java} in your
+templates.texi(,297) project files, although @file{.java} files in subproject 
@file{foo/}
+templates.texi(,298) should use their own template.  You also want to define a 
special
+templates.texi(,299) template for all files @file{proj.java} in the project.
+templates.texi(,300) @item
+templates.texi(,301) Since you do not want to clutter the project directory 
with template
+templates.texi(,302) files, you first create a directory 
@file{~/proj/Templates/}.  In this
+templates.texi(,303) directory, you create new files @file{TEMPLATE.java.tpl} 
and
+templates.texi(,304) @file{proj.java.tpl}.  In directory @file{~/proj/foo/}, 
you create a new
+templates.texi(,305) file @file{TEMPLATE.java.tpl}.
+templates.texi(,306) @end itemize
+templates.texi(,307) 
+templates.texi(,308) The creation of the template files in the right directory 
is already enough for
+templates.texi(,309) packages Template to find the most appropriate template 
for a new file:
+templates.texi(,310) 
+templates.texi(,311) @itemize
+templates.texi(,312) @item
+templates.texi(,313) If you create a new file @file{~/proj/foo/abc.java}, this 
package tries
+templates.texi(,314) to find a template based on the file extension of the new 
file.  The
+templates.texi(,315) generic base file name for a template is @file{TEMPLATE} 
and the
+templates.texi(,316) additional extension is @file{.tpl}, a file 
@file{TEMPLATE.java.tpl}
+templates.texi(,317) exists in @file{~/proj/foo/}, so that file is used as the 
template.
+templates.texi(,318) @item
+templates.texi(,319) If you create a new file @file{~/proj/bar/abc.java}, this 
package again
+templates.texi(,320) tries to find @file{TEMPLATE.java.tpl}.  Since this file 
doesn't exist
+templates.texi(,321) in @file{~/proj/bar/}, it first inspects the subdirectory
+templates.texi(,322) @file{Templates/} which doesn't exist.  The search 
continues with the
+templates.texi(,323) parent directory @file{~/proj/} and then its subdirectory
+templates.texi(,324) @file{Templates/}.  Thus 
@file{~/proj/Templates/TEMPLATE.java.tpl} will
+templates.texi(,325) be used.
+templates.texi(,326) @item
+templates.texi(,327) If you create a new file @file{~/proj/foo/proj.java}, 
this package finds
+templates.texi(,328) a template file with the same base name: it uses
+templates.texi(,329) @file{~/proj/Templates/proj.java.tpl}.  You might argue 
that
+templates.texi(,330) @file{~/proj/foo/TEMPLATE.java.tpl} resides in a more 
specific
+templates.texi(,331) directory, but having the same base name is considered to 
be more
+templates.texi(,332) important (remember that some file like Makefiles do not 
have file
+templates.texi(,333) extensions).
+templates.texi(,334) @item
+templates.texi(,335) If you create a new file 
@file{~/other_proj/foo/proj.java}, i.e., a
+templates.texi(,336) project where you have defined no template files, this 
package uses one
+templates.texi(,337) of the default templates, in this case
+templates.texi(,338) @file{~/.templates/TEMPLATE.java.tpl}.
+templates.texi(,339) @end itemize
+templates.texi(,340) 
+templates.texi(,341) For more on derivation @xref{Derivation}.
+templates.texi(,342) 
+templates.texi(,343) @c 
--------------------------------------------------------------------------------
+templates.texi(,344) 
+templates.texi(,345) @node creating,,,Basics
+templates.texi(,346) @section  Creating a Template
+templates.texi(,347) @c 
--------------------------------------------------------------------------------
+templates.texi(,348) 
+templates.texi(,349) There are various predefined expansions which are 
probably enough for
+templates.texi(,350) most templates.  A corresponding expansion forms can be 
easily inserted
+templates.texi(,351) by selecting the appropriate entry in the new submenu  
@kbd{Template
+templates.texi(,352) Creation}
+templates.texi(,353) :
+templates.texi(,354) 
+templates.texi(,355) @itemize
+templates.texi(,356) @item
+templates.texi(,357) Remember positions: use @samp{(>>>POINT<<<)} to set point 
(the cursor
+templates.texi(,358) position), @samp{(>>>MARK<<<)} to set mark (e.g., the 
opposite position
+templates.texi(,359) when a region is highlighted), and @samp{(>>>1<<<)} to 
@samp{(>>>0<<<)}
+templates.texi(,360) to registers to the current position.  Remember that 
@kbd{C-x r j
+templates.texi(,361) @var{Key}} jumps to the position stored in register 
@var{Key}.
+templates.texi(,362) @item
+templates.texi(,363) 
+templates.texi(,364) Insert parts of the file name, e.g., when creating the 
new file
+templates.texi(,365) @file{~/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is 
replaced by
+templates.texi(,366) @file{/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by 
@file{abc1.java},
+templates.texi(,367) @samp{(>>>FILE_SANS<<<)} by @file{abc1} , 
@samp{(>>>FILE_UPCASE<<<)} by
+templates.texi(,368) @file{ABC1} , @samp{(>>>FILE_RAW<<<)} by @file{abc},
+templates.texi(,369) @samp{(>>>FILE_NUM<<<)} by @file{1} , and 
@samp{(>>>FILE_EXT<<<)} by
+templates.texi(,370) @file{java}.
+templates.texi(,371) @item
+templates.texi(,372) Insert the current date/time in two customizable and 
three fixed
+templates.texi(,373) formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
+templates.texi(,374) @samp{(>>>TIME<<<)} for @samp{20:01:13} , 
@samp{(>>>YEAR<<<)} for
+templates.texi(,375) @samp{2002} , @samp{(>>>ISO_DATE<<<)} for 
@samp{2002-02-20} , and
+templates.texi(,376) @samp{(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
+templates.texi(,377) @item
+templates.texi(,378) Insert the user/system name in various formats: use
+templates.texi(,379) @samp{(>>>AUTHOR<<<)} for @email{Christoph Wedler
+templates.texi(,380) <wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
+templates.texi(,381) @samp{Christoph Wedler} , @samp{(>>>LOGIN_NAME<<<)} for 
@samp{wedler} ,
+templates.texi(,382) and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} 
.
+templates.texi(,383) @item
+templates.texi(,384) Ask the user for some initial comment.  If this expansion 
is used, the buffer
+templates.texi(,385) for the new file will be marked as modified.  For each 
undefined expansion, the
+templates.texi(,386) user is also asked.
+templates.texi(,387) @item
+templates.texi(,388) Disabling the search for expansion forms:
+templates.texi(,389) @samp{(>>>ZERO_FORM<<<)} can be inserted into a string 
which
+templates.texi(,390) will be otherwise regarded as an expansion form, the 
region between
+templates.texi(,391) @samp{(>>>LITERAL<<<)} and the first
+templates.texi(,392) @samp{(>>>/LITERAL<<<)} after it will be skipped.
+templates.texi(,393) @end itemize
+templates.texi(,394)     
+templates.texi(,395) You can define your own expansions in your Emacs init 
file and at the end of a
+templates.texi(,396) template file.  A corresponding definition can be easily 
inserted by selecting
+templates.texi(,397) the appropriate entry in the new submenu  @kbd{Template
+templates.texi(,398) Creation}:
+templates.texi(,399)     
+templates.texi(,400) @itemize
+templates.texi(,401) 
+templates.texi(,402) @item
+templates.texi(,403) @kbd{Define User Input}
+templates.texi(,404) .  Ask the user to insert some text
+templates.texi(,405) using some specific prompt.  Optionally, ask for a text 
with completion, or for
+templates.texi(,406) a sequence of user input (exit with empty input).
+templates.texi(,407) @item
+templates.texi(,408) @kbd{Define Text Register} 
+templates.texi(,409) .  Define a text for
+templates.texi(,410) register @var{Reg} which can be inserted with @kbd{C-x r 
i @var{Reg}}.
+templates.texi(,411) Optionally, provide a comment for it which will be 
temporarily shown at
+templates.texi(,412) point.
+templates.texi(,413) @item
+templates.texi(,414) @kbd{Define Message}
+templates.texi(,415) .  Define a message which will be
+templates.texi(,416) temporarily shown at point or before/after the expansion 
in a special buffer.
+templates.texi(,417) There is also a computed message in the echo area.
+templates.texi(,418) @item
+templates.texi(,419) 
+templates.texi(,420) Execute some Lisp coding defined at the end of the 
template.  By default, you
+templates.texi(,421) have to confirm it first, since it is insecure to execute 
unchecked coding.
+templates.texi(,422) (You do not have menu support to define this kind of 
expansion.)
+templates.texi(,423) @end itemize
+templates.texi(,424) 
+templates.texi(,425) @defopt template-default-expansion-alist
+templates.texi(,426) @end defopt
+templates.texi(,427) @defopt template-definition-start
+templates.texi(,428) @end defopt
+templates.texi(,429) 
+templates.texi(,430)     
+templates.texi(,431) @c 
--------------------------------------------------------------------------------
+templates.texi(,432) 
+templates.texi(,433) @node decorating,,,Basics
+templates.texi(,434) @section  Decorating a Comment
+templates.texi(,435) @c 
--------------------------------------------------------------------------------
+templates.texi(,436) 
+templates.texi(,437) There are commands to decorate comments with dashes and 
alike (@samp{-},
+templates.texi(,438) @samp{=} and @samp{#} by default).  Both commands are 
included in the
+templates.texi(,439) new submenu @kbd{Comments} 
+templates.texi(,440) and bound to keys:
+templates.texi(,441) 
+templates.texi(,442) @itemize
+templates.texi(,443) @item
+templates.texi(,444) Use command @code{template-single-comment} to jump to the
+templates.texi(,445) end of the current line and insert the dashes and the 
final
+templates.texi(,446) comment end-string up-to the fill position.  This command 
works with any
+templates.texi(,447) comment style, including for languages having mixed 
comments like C++ and Java.
+templates.texi(,448) It also works in major modes without a defined comment 
syntax.
+templates.texi(,449) @item
+templates.texi(,450) Use command @code{template-block-comment} to surround the
+templates.texi(,451) current comment block (i.e., contiguous comment lines) 
with extra lines
+templates.texi(,452) containing dashes and alike and to put the correct number 
of newlines around
+templates.texi(,453) the block.  This command only works with comments which 
are terminated with the
+templates.texi(,454) end of the line (like Java's @code{//address@hidden code 
class=text
+templates.texi(,455)  comment).
+templates.texi(,456) @end itemize
+templates.texi(,457) 
+templates.texi(,458) The comment decoration style is highly customizable and 
can be controlled by
+templates.texi(,459) 
+templates.texi(,460) @itemize
+templates.texi(,461) @item
+templates.texi(,462) The prefix argument given to the two commands.
+templates.texi(,463) @item
+templates.texi(,464) The existing comment decoration style when present.
+templates.texi(,465) @item
+templates.texi(,466) Determined by the indentation or the repetition of a 
single-character comment
+templates.texi(,467) start (like Emacs-Lisp's @code{;address@hidden code 
class=text
+templates.texi(,468) ).
+templates.texi(,469) @end itemize
+templates.texi(,470) 
+templates.texi(,471) For more on comments @xref{Comments}.
+templates.texi(,472) 
+templates.texi(,473) @c 
--------------------------------------------------------------------------------
+templates.texi(,474) 
+templates.texi(,475) @node updating,,,Basics
+templates.texi(,476) @section  Updating a Buffer
+templates.texi(,477) @c 
--------------------------------------------------------------------------------
+templates.texi(,478) A buffer is automatically updated according to some rules 
when saving
+templates.texi(,479) the file.  This updating can be invoked explicitly by 
selecting the menu
+templates.texi(,480) entry @kbd{Update Buffer} in the new submenu 
@kbd{Comments} .
+templates.texi(,481) 
+templates.texi(,482) @itemize
+templates.texi(,483) @item
+templates.texi(,484) Update the file name in the first three lines of the 
buffer if the file name is
+templates.texi(,485) indicated by @code{@@(#) @address@hidden code class=text
+templates.texi(,486)  or
+templates.texi(,487) @code{;;; @var{FileName} address@hidden code class=text
+templates.texi(,488)  where
+templates.texi(,489) @code{;;;address@hidden code class=text
+templates.texi(,490)  stands for any comment start (with optional
+templates.texi(,491) repetition of a single-character comment start).
+templates.texi(,492) @item
+templates.texi(,493) Update the date if it is the last text inside the
+templates.texi(,494) @address@hidden code class=html
+templates.texi(,495)  element of a HTML buffer.
+templates.texi(,496) @item
+templates.texi(,497) Automatic updating is optional, as is user confirmation 
for it.  Automatic
+templates.texi(,498) updating can be disabled for buffers whose file name 
matches a regular
+templates.texi(,499) expression.
+templates.texi(,500) @item
+templates.texi(,501) If nothing will be changed by the updating, there will be 
no user confirmation
+templates.texi(,502) and the buffer will not be marked as modified.
+templates.texi(,503) @end itemize
+templates.texi(,504) 
+templates.texi(,505) @defopt template-update-buffer
+templates.texi(,506) @end defopt
+templates.texi(,507) @defopt template-auto-update
+templates.texi(,508) @end defopt
+templates.texi(,509) @defopt template-update-buffer-alist
+templates.texi(,510) @end defopt
+templates.texi(,511) @defopt template-header-regexp-alist
+templates.texi(,512) @end defopt
+templates.texi(,513) 
+templates.texi(,514) @node Advanced,,,Top  
+templates.texi(,515) @chapter Templates for advanced users
+templates.texi(,516) 
+templates.texi(,517) @menu
+templates.texi(,518) * Customization:: Templates customization.
+templates.texi(,519) @end menu
+templates.texi(,520) 
+templates.texi(,521) @node Customization,,,Advanced
+templates.texi(,522) @section Templates customization
+templates.texi(,523) 
+templates.texi(,524) @menu
+templates.texi(,525) * Expansion:: Customization of keyword expansion rules.
+templates.texi(,526) * Derivation:: Customization of how templates are derived.
+templates.texi(,527) * Comments:: Customization of comments.
+templates.texi(,528) @end menu
+templates.texi(,529) 
+templates.texi(,530) @node Expansion,,,Customization
+templates.texi(,531) @subsection Customization of keyword expansion rules
+templates.texi(,532) 
+templates.texi(,533) @deffn {Interactive Command} template-new-file {file 
template with-undo}
+templates.texi(,534) Open a new file @var{file} by using a @var{template}.
+templates.texi(,535) Using a template for creating a new file consists of, 
steps 1 to 3 are
+templates.texi(,536) only executed when called interactively:
+templates.texi(,537) @enumerate
+templates.texi(,538) @item
+templates.texi(,539) Prompt for the name of the new file.
+templates.texi(,540) @item
+templates.texi(,541) Template derivation: suggest a reasonable template file 
to the user see
+templates.texi(,542) @code{template-derivation-alist}.
+templates.texi(,543) @item
+templates.texi(,544) File name refinement: e.g., if the given file name is 
@file{exercise}
+templates.texi(,545) and there are two files @file{exercise1.tex} and 
@file{exercise2.tex} in
+templates.texi(,546) the same directory and if we have a template 
@file{exercise.tex.tpl},
+templates.texi(,547) the file name is refined to @file{exercise3.tex}.  This 
is turned off
+templates.texi(,548) when @kbd{C-x t} is called with a prefix argument.
+templates.texi(,549) @item
+templates.texi(,550) Template insertion: insert the template file into the 
empty buffer.
+templates.texi(,551) @item
+templates.texi(,552) Read per-template expansion definition section starting at
+templates.texi(,553) @code{template-definition-start} and delete it.
+templates.texi(,554) @item
+templates.texi(,555) Display: before message in @code{template-message-buffer}.
+templates.texi(,556) @item
+templates.texi(,557) Execute pre-expansion commands defined in the definition 
section.
+templates.texi(,558) @item
+templates.texi(,559) Set local variables defined in the definition section.
+templates.texi(,560) @item
+templates.texi(,561) Expansion: expand the expansion forms (text matched by
+templates.texi(,562) @code{template-expansion-regexp}) They are defined in the 
definition
+templates.texi(,563) section, in @code{template-expansion-alist}, or provided 
by default,
+templates.texi(,564) see @code{template-expansion-regexp} and
+templates.texi(,565) @code{template-register-regexp}.
+templates.texi(,566) @item
+templates.texi(,567) Execute post-expansion commands defined in the definition 
section.
+templates.texi(,568) @item
+templates.texi(,569) Run @code{normal-mode} and functions in 
@code{find-file-hooks}.
+templates.texi(,570) @item
+templates.texi(,571) Update header according to 
@command{template-update-header} with
+templates.texi(,572) @c Vincent: What is this if-exists argument ?
+templates.texi(,573) argument @code{if-exists}.
+templates.texi(,574) @item
+templates.texi(,575) Display: after message in @code{template-message-buffer}.
+templates.texi(,576) @item
+templates.texi(,577) Report: display a temporary message at point defined in 
the definition
+templates.texi(,578) section and an automatically generated message in the 
minibuffer area,
+templates.texi(,579) see @code{template-message-timeout}.
+templates.texi(,580) @end enumerate
+templates.texi(,581) If optional @var{with-undo} is non-nil, store 
corresponding changes in
+templates.texi(,582) @code{buffer-undo-list}.  If @var{file} is nil, the 
buffer for @var{file} has
+templates.texi(,583) already been created and the accessible part will be 
replaced by the
+templates.texi(,584) expanded template.  If @var{template} is nil (empty input 
when called
+templates.texi(,585) interactively), do not use a template.
+templates.texi(,586) @end deffn
+templates.texi(,587) 
+templates.texi(,588) @defopt template-auto-insert
+templates.texi(,589) @end defopt
+templates.texi(,590) 
+templates.texi(,591) @node Derivation,,,Customization
+templates.texi(,592) @subsection Customization of how templates are derived
+templates.texi(,593) 
+templates.texi(,594) @defopt template-derivation-alist
+templates.texi(,595) @end defopt
+templates.texi(,596) 
+templates.texi(,597) @node Comments,,,Customization
+templates.texi(,598) @subsection Customization of comments
+templates.texi(,599) 
+templates.texi(,600) @defopt template-single-comment
+templates.texi(,601) @end defopt
+templates.texi(,602) 
+templates.texi(,603) @deffn {Interactive command} template-block-comment arg
+templates.texi(,604) It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> 
<Comment> <Decorate Comment Block>}.
+templates.texi(,605) 
+templates.texi(,606) Decorate the current block of comment-only lines with 
dashes and alike.
+templates.texi(,607) That is, surround the the contiguous comment-only lines 
around point
+templates.texi(,608) with extra lines containing dashes and alike and to put 
the correct
+templates.texi(,609) number of newlines around the block.
+templates.texi(,610) 
+templates.texi(,611) Barf if the comment syntax at point has a non-empty 
@code{comment-end} or if
+templates.texi(,612) point is not in a comment-only line.
+templates.texi(,613) 
+templates.texi(,614) A block comment consists of all neighboring lines which 
start with
+templates.texi(,615) spaces and @code{comment-start}.  If @code{comment-start} 
is a string of length 1,
+templates.texi(,616) the number of repetitions of @code{comment-start} must be 
the same or larger
+templates.texi(,617) than in the line where the command is invoked from, too.
+templates.texi(,618) 
+templates.texi(,619) Prefix argument @var{arg} and 
@code{template-comment-specification} determines the
+templates.texi(,620) comment style to use.  The length of the separator line 
is determined by
+templates.texi(,621) @code{template-max-column}.
+templates.texi(,622) 
+templates.texi(,623) This command can also be used with point in an empty line 
after a block
+templates.texi(,624) comment.  A second invocation of this command directly 
after a
+templates.texi(,625) successful invocation deletes the remaining empty lines 
from the current
+templates.texi(,626) line on.
+templates.texi(,627) @end deffn
+templates.texi(,628) 
+templates.texi(,629) @defopt template-comment-specification-alist
+templates.texi(,630) List of specifications for comment functions.  Each 
specification at
+templates.texi(,631) @var{level}, starting at 1, is a list 
@code{(@var{separator}
+templates.texi(,632) @var{before-block} @var{after-block} @var{DELETE-LINES})}
+templates.texi(,633) 
+templates.texi(,634) @var{separator} is the string which is inserted 
repeatedly by commands
+templates.texi(,635) @kbd{C-x C-=} and @kbd{C-x C-;} up to 
@code{template-max-column}.
+templates.texi(,636) 
+templates.texi(,637) After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} 
after the comment block
+templates.texi(,638) and inserts string @var{after-block} at the end of the 
block and
+templates.texi(,639) @var{before-block} at the front of the block.
+templates.texi(,640) 
+templates.texi(,641) The specification @var{level} to use is determined by:
+templates.texi(,642) @enumerate
+templates.texi(,643) @item
+templates.texi(,644) If the prefix argument is non-nil and its numeric value 
is > 0, this
+templates.texi(,645) value is the @var{level}.
+templates.texi(,646) @item
+templates.texi(,647) If the prefix argument is nil, and there is an old 
comment style, use
+templates.texi(,648) old comment style.
+templates.texi(,649) @item
+templates.texi(,650) If @code{template-comment-specification-special} is a 
function or the
+templates.texi(,651) current major mode has a property with this name and its 
value is a
+templates.texi(,652) function, this function returns the specification.
+templates.texi(,653) @item
+templates.texi(,654) If @code{comment-end} is empty and @code{comment-start} 
is a string of
+templates.texi(,655) length 1: @var{level} is number of repetitions of 
@code{comment-start}
+templates.texi(,656) at the beginning of the line.  Otherwise, if the 
correctly indented line
+templates.texi(,657) starts at the beginning of the line, @var{level}=3, else 
@var{level}=2.
+templates.texi(,658) @end enumerate
+templates.texi(,659) @end defopt
+templates.texi(,660) 
+templates.texi(,661) 
+templates.texi(,662) @node Indexes,,,Top  
+templates.texi(,663) @chapter Indexes for commands, keyword, and variable
+templates.texi(,664) 
+templates.texi(,665) @menu
+templates.texi(,666) * Keyword Index:: Keyword Index.
+templates.texi(,667) * Command Index:: Command Index.
+templates.texi(,668) * Variable Index:: Customizable Variable Index.
+templates.texi(,669) @end menu
+templates.texi(,670) 
+templates.texi(,671) @node Keyword Index,,,Indexes
+templates.texi(,672) @section Keyword Index
+templates.texi(,673) 
+templates.texi(,674) @node Command Index,,,Indexes
+templates.texi(,675) @section Keyword Index
+templates.texi(,676) 
+templates.texi(,677) @printindex fn
+templates.texi(,678) 
+templates.texi(,679) @node Variable Index,,,Indexes
+templates.texi(,680) @section Variable Index
+templates.texi(,681) 
+templates.texi(,682) @printindex vr
+templates.texi(,683) 
+templates.texi(,684) @node News,,,Top  
+templates.texi(,685) @chapter News for Package Template
+templates.texi(,686) 
+templates.texi(,687) @table @asis
+templates.texi(,688) @item Latest Version:
+templates.texi(,689) @strong{3.1c} (21 Aug 2003).
+templates.texi(,690) @item Requirements:
+templates.texi(,691) @cite{Emacs-20.2}, @cite{XEmacs-20.2}, or higher.  
+templates.texi(,692) 
+templates.texi(,693) No menu support for Emacs before Version 21.1.
+templates.texi(,694) @item Licence: 
+templates.texi(,695) @cite{GNU General Public License}.
+templates.texi(,696) @end table
+templates.texi(,697) 
+templates.texi(,698) @section Changes with Release 3.1c
+templates.texi(,699) 
+templates.texi(,700) @itemize
+templates.texi(,701) @item
+templates.texi(,702) Bug fix: on XEmacs, initialization would fail without 
menus "File" and "Edit" in menubar.
+templates.texi(,703) @item
+templates.texi(,704) Allow messages to be displayed in a separate buffer 
"*Template Messages*"
+templates.texi(,705) instead at point.
+templates.texi(,706) @item
+templates.texi(,707) Correct and improve header updating.
+templates.texi(,708) @item
+templates.texi(,709) Extend use of @code{M-x template-single-comment}.
+templates.texi(,710) @item
+templates.texi(,711) Minor bug fixes.  Miscellaneous.
+templates.texi(,712) @end itemize
+templates.texi(,713) 
+templates.texi(,714)     
+templates.texi(,715) @section Changes with Release 3.1
+templates.texi(,716) 
+templates.texi(,717) @itemize
+templates.texi(,718) @item
+templates.texi(,719) Moved to SourceForge.net.  Less technical description on 
web page.
+templates.texi(,720) @item
+templates.texi(,721) Remove examples from distribution, they were more 
confusing than helpful.
+templates.texi(,722) @item
+templates.texi(,723) Bug fix: would sometimes indent the current line when 
using the menubar.
+templates.texi(,724) @item
+templates.texi(,725) Menus work with Emacs-21, too.  Rename some menu entries.
+templates.texi(,726) @item
+templates.texi(,727) Don't search further for remote templates.  Nuke this 
home/base directory
+templates.texi(,728) stuff, stop search at root.
+templates.texi(,729) @item
+templates.texi(,730) Don't rely on command @command{ffap} to always add an 
entry to
+templates.texi(,731) @code{command-history} if the filename is read from 
terminal.  Special
+templates.texi(,732) setup for @code{ffap} and @code{html-helper}.
+templates.texi(,733) @item
+templates.texi(,734) Make date/time formats work as names suggest.
+templates.texi(,735) @item
+templates.texi(,736) Command to insert & expand a template file.
+templates.texi(,737) @item
+templates.texi(,738) Allow user to define a choice in the definition section 
to be answered
+templates.texi(,739) via @code{y-or-n-p}.
+templates.texi(,740) @item
+templates.texi(,741) Various miscellaneous improvements.  Minor bug fixes.
+templates.texi(,742) @end itemize
+templates.texi(,743)     
+templates.texi(,744) @node Acknowledgements,,,Top  
+templates.texi(,745) 
+templates.texi(,746) Christoph Wedler 
@uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+templates.texi(,747) 
+templates.texi(,748) 
+templates.texi(,749) @bye

Index: misc/res/texi_templates/templates.passtexi
===================================================================
RCS file: misc/res/texi_templates/templates.passtexi
diff -N misc/res/texi_templates/templates.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res/texi_templates/templates.passtexi  2 Aug 2009 13:13:17 -0000       
1.1
@@ -0,0 +1,746 @@
+templates.texi(,2) @c %**start of header
+templates.texi(,3) @setfilename templates.info
+templates.texi(,4) @documentencoding iso-8859-1
+templates.texi(,5) @documentlanguage en
+templates.texi(,6) @settitle  Emacs template package documentation, version 
3.1c
+templates.texi(,7) @c %**end of header
+templates.texi(,8) @alias kbdmenu = kbd
+templates.texi(,9) @alias codetpl = samp
+templates.texi(,10) @alias codevar = code
+templates.texi(,11) 
+templates.texi(,12) @copying
+templates.texi(,13) This is the Emacs template package documentation, version 
3.1c
+templates.texi(,14) Copyright @copyright{} 2008 Christoph Wedler, Vincent 
Belaïche.
+templates.texi(,15) 
+templates.texi(,16) @quotation
+templates.texi(,17) Permission is granted to ...
+templates.texi(,18) @end quotation
+templates.texi(,19) @end copying
+templates.texi(,20) 
+templates.texi(,21) @dircategory Emacs
+templates.texi(,22) @direntry
+templates.texi(,23) * Templates: (templates). Creating templates for files 
creation.
+templates.texi(,24) @end direntry
+templates.texi(,25) 
+templates.texi(,26) 
+templates.texi(,27) @titlepage
+templates.texi(,28) @title Emacs template package manual
+templates.texi(,29) @subtitle Details of Package Template
+templates.texi(,30) @author Christoph Wedler
+templates.texi(,31) 
+templates.texi(,32) @c  The following two commands
+templates.texi(,33) @c  start the copyright page.
+templates.texi(,34) @page
+templates.texi(,35) @vskip 0pt plus 1filll
+templates.texi(,36) @insertcopying
+templates.texi(,37) 
+templates.texi(,38) Published by ...
+templates.texi(,39) @end titlepage
+templates.texi(,40) 
+templates.texi(,42) @node Top,,,(dir)top
+templates.texi(,43) @top Top node.
+templates.texi(,44) 
+templates.texi(,45) This is the manual of Emacs template package
+templates.texi(,47) 
+templates.texi(,48) @menu
+templates.texi(,49) * Overview:: Overview.
+templates.texi(,50) * Installation:: how to install the template package.
+templates.texi(,51) * Basics:: How to make and use templates.
+templates.texi(,52) * Advanced:: Templates for advanced users.
+templates.texi(,53) * Indexes:: Indexes for commands, keyword, and variable.
+templates.texi(,54) * News:: News for Package Template.
+templates.texi(,55) * Acknowledgements:: Acknowledgements.
+templates.texi(,56) @end menu
+templates.texi(,57) 
+templates.texi(,58) @node Overview,,,Top
+templates.texi(,59) @chapter Overview
+templates.texi(,60) 
+templates.texi(,61) When you create a new file with Emacs, package Template 
supplies an initial
+templates.texi(,62) buffer content via a template: a file with normal text and 
expansion forms.
+templates.texi(,63) There is a menu to easily create such templates.  You can 
also use new commands
+templates.texi(,64) to decorate comments and update the buffer contents.
+templates.texi(,65) 
+templates.texi(,66) 
+templates.texi(,67) The main difference between Template and 
@ref{Related,other similar
+templates.texi(,68) packages} is that you can define very flexible templates 
without having
+templates.texi(,69) to learn Lisp or changing your Emacs init file.  This 
package does not
+templates.texi(,70) help Lisp programmers to define complex macros.
+templates.texi(,71) 
+templates.texi(,72) @itemize
+templates.texi(,73) @item
+templates.texi(,74) The template mechanism is hooked into the normal find/open 
file command.  There
+templates.texi(,75) are also new commands for creating a new file using a 
template and inserting &amp;
+templates.texi(,76) expanding a template.
+templates.texi(,77) @item
+templates.texi(,78) You do not have to enter the file name of the template 
file.  This package uses
+templates.texi(,79) a sophisticated search to find the most appropritate 
template (supporting
+templates.texi(,80) project- and subproject specific template files).  You can 
change the
+templates.texi(,81) suggestion, of course.
+templates.texi(,82) @item
+templates.texi(,83) A template file can be easily created.  Most of the file 
usually contains
+templates.texi(,84) simple text; only @dfn{expansion forms} which look like
+templates.texi(,85) @samp{(>>>@var{Key}<<<)} will get replaced.
+templates.texi(,86) @item
+templates.texi(,87) There are various useful predefined expansions: set point 
(the cursor
+templates.texi(,88) position), mark and registers to the current position; 
insert various parts of
+templates.texi(,89) the filename, the user/system name, the current date/time 
in various formats,
+templates.texi(,90) and some text to be entered by the user.
+templates.texi(,91) @item
+templates.texi(,92) Template-specific expansions can be defined at the end of 
the template file.
+templates.texi(,93) There are commands to create these definitions; only 
complex expansions would
+templates.texi(,94) require some knowledge of Lisp.
+templates.texi(,95) @end itemize
+templates.texi(,96) 
+templates.texi(,97) There is a menu to support the creation of template files. 
 Additionally, this
+templates.texi(,98) package provides the following features:
+templates.texi(,99) 
+templates.texi(,100) @itemize
+templates.texi(,101) @item
+templates.texi(,102) When saving a buffer, some parts of the buffer contents 
(header and time
+templates.texi(,103) stamps) are automatically updated if necessary.
+templates.texi(,104) @item
+templates.texi(,105) There are commands to decorate comments with dashes and 
alike.  Works for
+templates.texi(,106) languages with any comment style, even languages having 
mixed comments like C++
+templates.texi(,107) and Java.
+templates.texi(,108) @end itemize
+templates.texi(,109) 
+templates.texi(,110) 
+templates.texi(,111) @node Related,,,Overview
+templates.texi(,112) @section Packages Related to Template
+templates.texi(,113) 
+templates.texi(,114) 
+templates.texi(,115) There are template packages of two different categories, 
which are determined
+templates.texi(,116) by one question:
+templates.texi(,117) 
+templates.texi(,118) @emph{What do you want to do with templates?} Do you want 
to use templates
+templates.texi(,119) when creating new files, or do you want to insert some 
stuff during editing
+templates.texi(,120) (but you are not satisfied with the standard macro 
mechanism)?
+templates.texi(,121) 
+templates.texi(,122) Well, templates could be seen as both new-file templates 
and macro-like
+templates.texi(,123) template, but the main application of templates 
determines the answers for the
+templates.texi(,124) following questions:
+templates.texi(,125)       
+templates.texi(,126) @itemize
+templates.texi(,127) @item
+templates.texi(,128) @emph{How do you define a template?} You can define it by 
one file per
+templates.texi(,129) template or by customizing some Emacs variables.  The 
first solution (which is
+templates.texi(,130) used by package Template) avoids Emacs hacking but might 
not be optimal if you
+templates.texi(,131) just want to define complex macros or if you want to use 
templates to program a
+templates.texi(,132) new Emacs major-mode.
+templates.texi(,133) @item
+templates.texi(,134) @emph{How is an appropriate template selected?} If you 
want to use complex
+templates.texi(,135) macro during editing, the answer is clear: the user have 
to provide the name of
+templates.texi(,136) the template.  For new files, the appropriate template 
should be automatically
+templates.texi(,137) selected.  But of course, you don't want to loose any 
flexibility and you don't
+templates.texi(,138) want to customize your Emacs for every project you start.
+templates.texi(,139) @item
+templates.texi(,140) @emph{How do you do "clever" things in the template?} The 
aims are to have
+templates.texi(,141) many predefined expansions (e.g., the current date) and 
to define some
+templates.texi(,142) non-trivial things without learning Lisp.  Any 
functionality here is the
+templates.texi(,143) overlapping point of both template categories.
+templates.texi(,144) @end itemize
+templates.texi(,145) 
+templates.texi(,146) 
+templates.texi(,147) 
+templates.texi(,148) Here is a little list of related files, collected around 
1998, some discarded
+templates.texi(,149) later (no @abbr{URL}s, no active updating, but you can 
send me a mail):
+templates.texi(,150) 
+templates.texi(,151) @itemize
+templates.texi(,152) @item
+templates.texi(,153) Package @cite{autoinsert.el} uses templates when creating 
new files.
+templates.texi(,154) These templates are defined via files or by customizing 
Emacs.  For each new
+templates.texi(,155) template you want to introduce, you must customize your 
Emacs, the selection is
+templates.texi(,156) restricted to one template per major-mode or regexp 
match.  No predefined
+templates.texi(,157) expansions; clever things are provided by usual Lisp 
expressions or the
+templates.texi(,158) macro-like templates of package @cite{skeleton}.
+templates.texi(,159) @item
+templates.texi(,160) Package @cite{skeleton.el} is a Lisp language extension 
for
+templates.texi(,161) writing statement skeletons, i.e., you get macro-like 
Lisp commands.
+templates.texi(,162) @item
+templates.texi(,163) Package @cite{tempo.el} helps you defining and using 
named macro-like
+templates.texi(,164) templates.  Its predefined macros are similar to some 
predefined expansions of
+templates.texi(,165) package Template.  A specific template is used by
+templates.texi(,166) <code class="lisp">html-helper-mode</code> when creating 
a new html file.
+templates.texi(,167) (This is turned off with the default installation of 
package Template.)
+templates.texi(,168) @item
+templates.texi(,169) Package @cite{hm--html-menus} provides a command to 
insert templates
+templates.texi(,170) editing.  These templates are defined via files.  There 
are no predefined
+templates.texi(,171) expansions (except setting point), non-trivial expansions 
are defined via Lisp.
+templates.texi(,172) @end itemize
+templates.texi(,173) 
+templates.texi(,174) 
+templates.texi(,175) 
+templates.texi(,176) 
+templates.texi(,177) @node Installation,,,Top
+templates.texi(,178) @chapter Installation
+templates.texi(,179) 
+templates.texi(,180) @section Installation Instructions
+templates.texi(,181) 
+templates.texi(,182) @enumerate
+templates.texi(,183) @item
+templates.texi(,184) Copy file @file{template/lisp/template.el} into your
+templates.texi(,185) load-path and byte-compile it.
+templates.texi(,186) @item
+templates.texi(,187) Insert the following code into your Emacs init file
+templates.texi(,188) (@file{~/.emacs}):
+templates.texi(,189) 
+templates.texi(,190) @lisp
+templates.texi(,191) (require 'template)
+templates.texi(,192) (template-initialize)
+templates.texi(,193) @end lisp
+templates.texi(,194) 
+templates.texi(,195) @item
+templates.texi(,196) If you want to customize package Template, use @kbd{M-x
+templates.texi(,197) customize-group @key{RET} template
+templates.texi(,198) @key{RET}} or the customize entry in menu
+templates.texi(,199) @kbd{Options}.
+templates.texi(,200) @item
+templates.texi(,201) You might want to copy the template files from directory
+templates.texi(,202) @file{template/templates/} to
+templates.texi(,203) @file{~/.templates/} and change them according to your
+templates.texi(,204) preferences.
+templates.texi(,205) @end enumerate
+templates.texi(,206) 
+templates.texi(,207) 
+templates.texi(,208) Installation instructions with further explanations can 
be found in file
+templates.texi(,209) @file{template/INSTALL} of the distribution.
+templates.texi(,210) 
+templates.texi(,211)  
+templates.texi(,212) 
+templates.texi(,213) @node Basics,,,Top
+templates.texi(,214) @chapter Basics
+templates.texi(,215) 
+templates.texi(,216) Emacs, template, file template, comment decoration, 
auto-updating, time stamp, details
+templates.texi(,217) 
+templates.texi(,218) @menu
+templates.texi(,219) * menus:: Menus and Key-Bindings.
+templates.texi(,220) * using:: Using a Template.
+templates.texi(,221) * finding:: Finding a Template.
+templates.texi(,222) * creating:: Creating a Template.
+templates.texi(,223) * decorating:: Decorating a Comment.
+templates.texi(,224) * updating:: Updating a Buffer.
+templates.texi(,225) @end menu
+templates.texi(,226) 
+templates.texi(,227) @node menus,,,Basics
+templates.texi(,228) @section  Menus and Key-Bindings
+templates.texi(,229) @c 
--------------------------------------------------------------------------------
+templates.texi(,230) For Emacs-21.1+ and XEmacs, this package defines the 
following menu entries and
+templates.texi(,231) key-bindings: 
+templates.texi(,232) 
+templates.texi(,233) @itemize
+templates.texi(,234) @item
+templates.texi(,235) In menu @kbd{File} , there is a new menu item @kbd{New 
File
+templates.texi(,236) Using Template...}  .  The corresponding command is also 
bound to the
+templates.texi(,237) key sequence @kbd{C-x t}.
+templates.texi(,238) @item
+templates.texi(,239) At the end of menu @kbd{Cmds} (in XEmacs if it exists) or 
menu
+templates.texi(,240)  @kbd{Edit} , there is a new submenu @kbd{Template 
Creation}.
+templates.texi(,241) @item
+templates.texi(,242) Enter @kbd{C-x C-=} (command 
@command{template-single-comment}) to
+templates.texi(,243) insert dashes and alike into the current line and end the 
comment.
+templates.texi(,244) @item
+templates.texi(,245) Enter @kbd{C-x C-;} (command 
@command{template-single-comment}) to
+templates.texi(,246) insert dashes and alike around the current comment block.
+templates.texi(,247) @item
+templates.texi(,248) At the end of menu @kbd{Edit} , there is a new submenu
+templates.texi(,249) @kbd{Comment}.  It also contains the two commands just 
mentioned.
+templates.texi(,250) @end itemize
+templates.texi(,251) 
+templates.texi(,252) @c 
--------------------------------------------------------------------------------
+templates.texi(,253) @node using,,,Basics
+templates.texi(,254) @section  Using a Template
+templates.texi(,255) @c 
--------------------------------------------------------------------------------
+templates.texi(,256) Package Template offers various ways how to use template 
files:
+templates.texi(,257) 
+templates.texi(,258) In Emacs, the usual way to create a new file is by typing 
@kbd{C-x C-f},
+templates.texi(,259) using the menu or the toolbar (running command 
@command{find-file} or
+templates.texi(,260) @command{ffap}) and entering a non-existent file name.  
In this case,
+templates.texi(,261) you will be asked whether to use a template for the new 
file.  You can
+templates.texi(,262) turn off this feature.
+templates.texi(,263) 
+templates.texi(,264) @itemize
+templates.texi(,265) @item
+templates.texi(,266) Here a first undefined xref @xref{EExpansion}.
+templates.texi(,267) There is a new command @command{template-new-file} 
@footnote{for the
+templates.texi(,268) menu entry and its key-binding type @kbd{C-h f 
template-new-file},
+templates.texi(,269) @xref{EExpansion}} to create a new file using a template. 
 Here, you have
+templates.texi(,270) the chance to edit the name of the template file.  This 
command also
+templates.texi(,271) supports file name refinement which is useful to create a 
file in a
+templates.texi(,272) series of files like @file{exercise2.tex} etc.
+templates.texi(,273) @item
+templates.texi(,274) There is also a command (@kbd{M-x 
template-expand-template})
+templates.texi(,275) to insert a template file into the current buffer and 
expand its expansion
+templates.texi(,276) forms.
+templates.texi(,277) @end itemize
+templates.texi(,278) 
+templates.texi(,279) 
+templates.texi(,280) For more @command{template-new-file} and 
@code{template-auto-insert},
+templates.texi(,281)  @xref{Expansion}.
+templates.texi(,282) 
+templates.texi(,283) @c 
--------------------------------------------------------------------------------
+templates.texi(,284) 
+templates.texi(,285) @node finding,,,Basics
+templates.texi(,286) @section  Finding a Template
+templates.texi(,287) @c 
--------------------------------------------------------------------------------
+templates.texi(,288) The algorithm for finding the most appropriate template 
can be best explained
+templates.texi(,289) with a little example:
+templates.texi(,290) 
+templates.texi(,291) @itemize
+templates.texi(,292) @item
+templates.texi(,293) You have a project @file{~/proj/} with subprojects 
@file{foo/} and
+templates.texi(,294) @file{bar/} containing @file{.java} files.
+templates.texi(,295) @item
+templates.texi(,296) You want to define a general template for the 
@file{.java} in your
+templates.texi(,297) project files, although @file{.java} files in subproject 
@file{foo/}
+templates.texi(,298) should use their own template.  You also want to define a 
special
+templates.texi(,299) template for all files @file{proj.java} in the project.
+templates.texi(,300) @item
+templates.texi(,301) Since you do not want to clutter the project directory 
with template
+templates.texi(,302) files, you first create a directory 
@file{~/proj/Templates/}.  In this
+templates.texi(,303) directory, you create new files @file{TEMPLATE.java.tpl} 
and
+templates.texi(,304) @file{proj.java.tpl}.  In directory @file{~/proj/foo/}, 
you create a new
+templates.texi(,305) file @file{TEMPLATE.java.tpl}.
+templates.texi(,306) @end itemize
+templates.texi(,307) 
+templates.texi(,308) The creation of the template files in the right directory 
is already enough for
+templates.texi(,309) packages Template to find the most appropriate template 
for a new file:
+templates.texi(,310) 
+templates.texi(,311) @itemize
+templates.texi(,312) @item
+templates.texi(,313) If you create a new file @file{~/proj/foo/abc.java}, this 
package tries
+templates.texi(,314) to find a template based on the file extension of the new 
file.  The
+templates.texi(,315) generic base file name for a template is @file{TEMPLATE} 
and the
+templates.texi(,316) additional extension is @file{.tpl}, a file 
@file{TEMPLATE.java.tpl}
+templates.texi(,317) exists in @file{~/proj/foo/}, so that file is used as the 
template.
+templates.texi(,318) @item
+templates.texi(,319) If you create a new file @file{~/proj/bar/abc.java}, this 
package again
+templates.texi(,320) tries to find @file{TEMPLATE.java.tpl}.  Since this file 
doesn't exist
+templates.texi(,321) in @file{~/proj/bar/}, it first inspects the subdirectory
+templates.texi(,322) @file{Templates/} which doesn't exist.  The search 
continues with the
+templates.texi(,323) parent directory @file{~/proj/} and then its subdirectory
+templates.texi(,324) @file{Templates/}.  Thus 
@file{~/proj/Templates/TEMPLATE.java.tpl} will
+templates.texi(,325) be used.
+templates.texi(,326) @item
+templates.texi(,327) If you create a new file @file{~/proj/foo/proj.java}, 
this package finds
+templates.texi(,328) a template file with the same base name: it uses
+templates.texi(,329) @file{~/proj/Templates/proj.java.tpl}.  You might argue 
that
+templates.texi(,330) @file{~/proj/foo/TEMPLATE.java.tpl} resides in a more 
specific
+templates.texi(,331) directory, but having the same base name is considered to 
be more
+templates.texi(,332) important (remember that some file like Makefiles do not 
have file
+templates.texi(,333) extensions).
+templates.texi(,334) @item
+templates.texi(,335) If you create a new file 
@file{~/other_proj/foo/proj.java}, i.e., a
+templates.texi(,336) project where you have defined no template files, this 
package uses one
+templates.texi(,337) of the default templates, in this case
+templates.texi(,338) @file{~/.templates/TEMPLATE.java.tpl}.
+templates.texi(,339) @end itemize
+templates.texi(,340) 
+templates.texi(,341) For more on derivation @xref{Derivation}.
+templates.texi(,342) 
+templates.texi(,343) @c 
--------------------------------------------------------------------------------
+templates.texi(,344) 
+templates.texi(,345) @node creating,,,Basics
+templates.texi(,346) @section  Creating a Template
+templates.texi(,347) @c 
--------------------------------------------------------------------------------
+templates.texi(,348) 
+templates.texi(,349) There are various predefined expansions which are 
probably enough for
+templates.texi(,350) most templates.  A corresponding expansion forms can be 
easily inserted
+templates.texi(,351) by selecting the appropriate entry in the new submenu  
@kbd{Template
+templates.texi(,352) Creation}
+templates.texi(,353) :
+templates.texi(,354) 
+templates.texi(,355) @itemize
+templates.texi(,356) @item
+templates.texi(,357) Remember positions: use @samp{(>>>POINT<<<)} to set point 
(the cursor
+templates.texi(,358) position), @samp{(>>>MARK<<<)} to set mark (e.g., the 
opposite position
+templates.texi(,359) when a region is highlighted), and @samp{(>>>1<<<)} to 
@samp{(>>>0<<<)}
+templates.texi(,360) to registers to the current position.  Remember that 
@kbd{C-x r j
+templates.texi(,361) @var{Key}} jumps to the position stored in register 
@var{Key}.
+templates.texi(,362) @item
+templates.texi(,363) 
+templates.texi(,364) Insert parts of the file name, e.g., when creating the 
new file
+templates.texi(,365) @file{~/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is 
replaced by
+templates.texi(,366) @file{/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by 
@file{abc1.java},
+templates.texi(,367) @samp{(>>>FILE_SANS<<<)} by @file{abc1} , 
@samp{(>>>FILE_UPCASE<<<)} by
+templates.texi(,368) @file{ABC1} , @samp{(>>>FILE_RAW<<<)} by @file{abc},
+templates.texi(,369) @samp{(>>>FILE_NUM<<<)} by @file{1} , and 
@samp{(>>>FILE_EXT<<<)} by
+templates.texi(,370) @file{java}.
+templates.texi(,371) @item
+templates.texi(,372) Insert the current date/time in two customizable and 
three fixed
+templates.texi(,373) formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
+templates.texi(,374) @samp{(>>>TIME<<<)} for @samp{20:01:13} , 
@samp{(>>>YEAR<<<)} for
+templates.texi(,375) @samp{2002} , @samp{(>>>ISO_DATE<<<)} for 
@samp{2002-02-20} , and
+templates.texi(,376) @samp{(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
+templates.texi(,377) @item
+templates.texi(,378) Insert the user/system name in various formats: use
+templates.texi(,379) @samp{(>>>AUTHOR<<<)} for @email{Christoph Wedler
+templates.texi(,380) <wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
+templates.texi(,381) @samp{Christoph Wedler} , @samp{(>>>LOGIN_NAME<<<)} for 
@samp{wedler} ,
+templates.texi(,382) and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} 
.
+templates.texi(,383) @item
+templates.texi(,384) Ask the user for some initial comment.  If this expansion 
is used, the buffer
+templates.texi(,385) for the new file will be marked as modified.  For each 
undefined expansion, the
+templates.texi(,386) user is also asked.
+templates.texi(,387) @item
+templates.texi(,388) Disabling the search for expansion forms:
+templates.texi(,389) @samp{(>>>ZERO_FORM<<<)} can be inserted into a string 
which
+templates.texi(,390) will be otherwise regarded as an expansion form, the 
region between
+templates.texi(,391) @samp{(>>>LITERAL<<<)} and the first
+templates.texi(,392) @samp{(>>>/LITERAL<<<)} after it will be skipped.
+templates.texi(,393) @end itemize
+templates.texi(,394)     
+templates.texi(,395) You can define your own expansions in your Emacs init 
file and at the end of a
+templates.texi(,396) template file.  A corresponding definition can be easily 
inserted by selecting
+templates.texi(,397) the appropriate entry in the new submenu  @kbd{Template
+templates.texi(,398) Creation}:
+templates.texi(,399)     
+templates.texi(,400) @itemize
+templates.texi(,401) 
+templates.texi(,402) @item
+templates.texi(,403) @kbd{Define User Input}
+templates.texi(,404) .  Ask the user to insert some text
+templates.texi(,405) using some specific prompt.  Optionally, ask for a text 
with completion, or for
+templates.texi(,406) a sequence of user input (exit with empty input).
+templates.texi(,407) @item
+templates.texi(,408) @kbd{Define Text Register} 
+templates.texi(,409) .  Define a text for
+templates.texi(,410) register @var{Reg} which can be inserted with @kbd{C-x r 
i @var{Reg}}.
+templates.texi(,411) Optionally, provide a comment for it which will be 
temporarily shown at
+templates.texi(,412) point.
+templates.texi(,413) @item
+templates.texi(,414) @kbd{Define Message}
+templates.texi(,415) .  Define a message which will be
+templates.texi(,416) temporarily shown at point or before/after the expansion 
in a special buffer.
+templates.texi(,417) There is also a computed message in the echo area.
+templates.texi(,418) @item
+templates.texi(,419) 
+templates.texi(,420) Execute some Lisp coding defined at the end of the 
template.  By default, you
+templates.texi(,421) have to confirm it first, since it is insecure to execute 
unchecked coding.
+templates.texi(,422) (You do not have menu support to define this kind of 
expansion.)
+templates.texi(,423) @end itemize
+templates.texi(,424) 
+templates.texi(,425) @defopt template-default-expansion-alist
+templates.texi(,426) @end defopt
+templates.texi(,427) @defopt template-definition-start
+templates.texi(,428) @end defopt
+templates.texi(,429) 
+templates.texi(,430)     
+templates.texi(,431) @c 
--------------------------------------------------------------------------------
+templates.texi(,432) 
+templates.texi(,433) @node decorating,,,Basics
+templates.texi(,434) @section  Decorating a Comment
+templates.texi(,435) @c 
--------------------------------------------------------------------------------
+templates.texi(,436) 
+templates.texi(,437) There are commands to decorate comments with dashes and 
alike (@samp{-},
+templates.texi(,438) @samp{=} and @samp{#} by default).  Both commands are 
included in the
+templates.texi(,439) new submenu @kbd{Comments} 
+templates.texi(,440) and bound to keys:
+templates.texi(,441) 
+templates.texi(,442) @itemize
+templates.texi(,443) @item
+templates.texi(,444) Use command @code{template-single-comment} to jump to the
+templates.texi(,445) end of the current line and insert the dashes and the 
final
+templates.texi(,446) comment end-string up-to the fill position.  This command 
works with any
+templates.texi(,447) comment style, including for languages having mixed 
comments like C++ and Java.
+templates.texi(,448) It also works in major modes without a defined comment 
syntax.
+templates.texi(,449) @item
+templates.texi(,450) Use command @code{template-block-comment} to surround the
+templates.texi(,451) current comment block (i.e., contiguous comment lines) 
with extra lines
+templates.texi(,452) containing dashes and alike and to put the correct number 
of newlines around
+templates.texi(,453) the block.  This command only works with comments which 
are terminated with the
+templates.texi(,454) end of the line (like Java's @code{//address@hidden code 
class=text
+templates.texi(,455)  comment).
+templates.texi(,456) @end itemize
+templates.texi(,457) 
+templates.texi(,458) The comment decoration style is highly customizable and 
can be controlled by
+templates.texi(,459) 
+templates.texi(,460) @itemize
+templates.texi(,461) @item
+templates.texi(,462) The prefix argument given to the two commands.
+templates.texi(,463) @item
+templates.texi(,464) The existing comment decoration style when present.
+templates.texi(,465) @item
+templates.texi(,466) Determined by the indentation or the repetition of a 
single-character comment
+templates.texi(,467) start (like Emacs-Lisp's @code{;address@hidden code 
class=text
+templates.texi(,468) ).
+templates.texi(,469) @end itemize
+templates.texi(,470) 
+templates.texi(,471) For more on comments @xref{Comments}.
+templates.texi(,472) 
+templates.texi(,473) @c 
--------------------------------------------------------------------------------
+templates.texi(,474) 
+templates.texi(,475) @node updating,,,Basics
+templates.texi(,476) @section  Updating a Buffer
+templates.texi(,477) @c 
--------------------------------------------------------------------------------
+templates.texi(,478) A buffer is automatically updated according to some rules 
when saving
+templates.texi(,479) the file.  This updating can be invoked explicitly by 
selecting the menu
+templates.texi(,480) entry @kbd{Update Buffer} in the new submenu 
@kbd{Comments} .
+templates.texi(,481) 
+templates.texi(,482) @itemize
+templates.texi(,483) @item
+templates.texi(,484) Update the file name in the first three lines of the 
buffer if the file name is
+templates.texi(,485) indicated by @code{@@(#) @address@hidden code class=text
+templates.texi(,486)  or
+templates.texi(,487) @code{;;; @var{FileName} address@hidden code class=text
+templates.texi(,488)  where
+templates.texi(,489) @code{;;;address@hidden code class=text
+templates.texi(,490)  stands for any comment start (with optional
+templates.texi(,491) repetition of a single-character comment start).
+templates.texi(,492) @item
+templates.texi(,493) Update the date if it is the last text inside the
+templates.texi(,494) @address@hidden code class=html
+templates.texi(,495)  element of a HTML buffer.
+templates.texi(,496) @item
+templates.texi(,497) Automatic updating is optional, as is user confirmation 
for it.  Automatic
+templates.texi(,498) updating can be disabled for buffers whose file name 
matches a regular
+templates.texi(,499) expression.
+templates.texi(,500) @item
+templates.texi(,501) If nothing will be changed by the updating, there will be 
no user confirmation
+templates.texi(,502) and the buffer will not be marked as modified.
+templates.texi(,503) @end itemize
+templates.texi(,504) 
+templates.texi(,505) @defopt template-update-buffer
+templates.texi(,506) @end defopt
+templates.texi(,507) @defopt template-auto-update
+templates.texi(,508) @end defopt
+templates.texi(,509) @defopt template-update-buffer-alist
+templates.texi(,510) @end defopt
+templates.texi(,511) @defopt template-header-regexp-alist
+templates.texi(,512) @end defopt
+templates.texi(,513) 
+templates.texi(,514) @node Advanced,,,Top  
+templates.texi(,515) @chapter Templates for advanced users
+templates.texi(,516) 
+templates.texi(,517) @menu
+templates.texi(,518) * Customization:: Templates customization.
+templates.texi(,519) @end menu
+templates.texi(,520) 
+templates.texi(,521) @node Customization,,,Advanced
+templates.texi(,522) @section Templates customization
+templates.texi(,523) 
+templates.texi(,524) @menu
+templates.texi(,525) * Expansion:: Customization of keyword expansion rules.
+templates.texi(,526) * Derivation:: Customization of how templates are derived.
+templates.texi(,527) * Comments:: Customization of comments.
+templates.texi(,528) @end menu
+templates.texi(,529) 
+templates.texi(,530) @node Expansion,,,Customization
+templates.texi(,531) @subsection Customization of keyword expansion rules
+templates.texi(,532) 
+templates.texi(,533) @deffn {Interactive Command} template-new-file {file 
template with-undo}
+templates.texi(,534) Open a new file @var{file} by using a @var{template}.
+templates.texi(,535) Using a template for creating a new file consists of, 
steps 1 to 3 are
+templates.texi(,536) only executed when called interactively:
+templates.texi(,537) @enumerate
+templates.texi(,538) @item
+templates.texi(,539) Prompt for the name of the new file.
+templates.texi(,540) @item
+templates.texi(,541) Template derivation: suggest a reasonable template file 
to the user see
+templates.texi(,542) @code{template-derivation-alist}.
+templates.texi(,543) @item
+templates.texi(,544) File name refinement: e.g., if the given file name is 
@file{exercise}
+templates.texi(,545) and there are two files @file{exercise1.tex} and 
@file{exercise2.tex} in
+templates.texi(,546) the same directory and if we have a template 
@file{exercise.tex.tpl},
+templates.texi(,547) the file name is refined to @file{exercise3.tex}.  This 
is turned off
+templates.texi(,548) when @kbd{C-x t} is called with a prefix argument.
+templates.texi(,549) @item
+templates.texi(,550) Template insertion: insert the template file into the 
empty buffer.
+templates.texi(,551) @item
+templates.texi(,552) Read per-template expansion definition section starting at
+templates.texi(,553) @code{template-definition-start} and delete it.
+templates.texi(,554) @item
+templates.texi(,555) Display: before message in @code{template-message-buffer}.
+templates.texi(,556) @item
+templates.texi(,557) Execute pre-expansion commands defined in the definition 
section.
+templates.texi(,558) @item
+templates.texi(,559) Set local variables defined in the definition section.
+templates.texi(,560) @item
+templates.texi(,561) Expansion: expand the expansion forms (text matched by
+templates.texi(,562) @code{template-expansion-regexp}) They are defined in the 
definition
+templates.texi(,563) section, in @code{template-expansion-alist}, or provided 
by default,
+templates.texi(,564) see @code{template-expansion-regexp} and
+templates.texi(,565) @code{template-register-regexp}.
+templates.texi(,566) @item
+templates.texi(,567) Execute post-expansion commands defined in the definition 
section.
+templates.texi(,568) @item
+templates.texi(,569) Run @code{normal-mode} and functions in 
@code{find-file-hooks}.
+templates.texi(,570) @item
+templates.texi(,571) Update header according to 
@command{template-update-header} with
+templates.texi(,572) @c Vincent: What is this if-exists argument ?
+templates.texi(,573) argument @code{if-exists}.
+templates.texi(,574) @item
+templates.texi(,575) Display: after message in @code{template-message-buffer}.
+templates.texi(,576) @item
+templates.texi(,577) Report: display a temporary message at point defined in 
the definition
+templates.texi(,578) section and an automatically generated message in the 
minibuffer area,
+templates.texi(,579) see @code{template-message-timeout}.
+templates.texi(,580) @end enumerate
+templates.texi(,581) If optional @var{with-undo} is non-nil, store 
corresponding changes in
+templates.texi(,582) @code{buffer-undo-list}.  If @var{file} is nil, the 
buffer for @var{file} has
+templates.texi(,583) already been created and the accessible part will be 
replaced by the
+templates.texi(,584) expanded template.  If @var{template} is nil (empty input 
when called
+templates.texi(,585) interactively), do not use a template.
+templates.texi(,586) @end deffn
+templates.texi(,587) 
+templates.texi(,588) @defopt template-auto-insert
+templates.texi(,589) @end defopt
+templates.texi(,590) 
+templates.texi(,591) @node Derivation,,,Customization
+templates.texi(,592) @subsection Customization of how templates are derived
+templates.texi(,593) 
+templates.texi(,594) @defopt template-derivation-alist
+templates.texi(,595) @end defopt
+templates.texi(,596) 
+templates.texi(,597) @node Comments,,,Customization
+templates.texi(,598) @subsection Customization of comments
+templates.texi(,599) 
+templates.texi(,600) @defopt template-single-comment
+templates.texi(,601) @end defopt
+templates.texi(,602) 
+templates.texi(,603) @deffn {Interactive command} template-block-comment arg
+templates.texi(,604) It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> 
<Comment> <Decorate Comment Block>}.
+templates.texi(,605) 
+templates.texi(,606) Decorate the current block of comment-only lines with 
dashes and alike.
+templates.texi(,607) That is, surround the the contiguous comment-only lines 
around point
+templates.texi(,608) with extra lines containing dashes and alike and to put 
the correct
+templates.texi(,609) number of newlines around the block.
+templates.texi(,610) 
+templates.texi(,611) Barf if the comment syntax at point has a non-empty 
@code{comment-end} or if
+templates.texi(,612) point is not in a comment-only line.
+templates.texi(,613) 
+templates.texi(,614) A block comment consists of all neighboring lines which 
start with
+templates.texi(,615) spaces and @code{comment-start}.  If @code{comment-start} 
is a string of length 1,
+templates.texi(,616) the number of repetitions of @code{comment-start} must be 
the same or larger
+templates.texi(,617) than in the line where the command is invoked from, too.
+templates.texi(,618) 
+templates.texi(,619) Prefix argument @var{arg} and 
@code{template-comment-specification} determines the
+templates.texi(,620) comment style to use.  The length of the separator line 
is determined by
+templates.texi(,621) @code{template-max-column}.
+templates.texi(,622) 
+templates.texi(,623) This command can also be used with point in an empty line 
after a block
+templates.texi(,624) comment.  A second invocation of this command directly 
after a
+templates.texi(,625) successful invocation deletes the remaining empty lines 
from the current
+templates.texi(,626) line on.
+templates.texi(,627) @end deffn
+templates.texi(,628) 
+templates.texi(,629) @defopt template-comment-specification-alist
+templates.texi(,630) List of specifications for comment functions.  Each 
specification at
+templates.texi(,631) @var{level}, starting at 1, is a list 
@code{(@var{separator}
+templates.texi(,632) @var{before-block} @var{after-block} @var{DELETE-LINES})}
+templates.texi(,633) 
+templates.texi(,634) @var{separator} is the string which is inserted 
repeatedly by commands
+templates.texi(,635) @kbd{C-x C-=} and @kbd{C-x C-;} up to 
@code{template-max-column}.
+templates.texi(,636) 
+templates.texi(,637) After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} 
after the comment block
+templates.texi(,638) and inserts string @var{after-block} at the end of the 
block and
+templates.texi(,639) @var{before-block} at the front of the block.
+templates.texi(,640) 
+templates.texi(,641) The specification @var{level} to use is determined by:
+templates.texi(,642) @enumerate
+templates.texi(,643) @item
+templates.texi(,644) If the prefix argument is non-nil and its numeric value 
is > 0, this
+templates.texi(,645) value is the @var{level}.
+templates.texi(,646) @item
+templates.texi(,647) If the prefix argument is nil, and there is an old 
comment style, use
+templates.texi(,648) old comment style.
+templates.texi(,649) @item
+templates.texi(,650) If @code{template-comment-specification-special} is a 
function or the
+templates.texi(,651) current major mode has a property with this name and its 
value is a
+templates.texi(,652) function, this function returns the specification.
+templates.texi(,653) @item
+templates.texi(,654) If @code{comment-end} is empty and @code{comment-start} 
is a string of
+templates.texi(,655) length 1: @var{level} is number of repetitions of 
@code{comment-start}
+templates.texi(,656) at the beginning of the line.  Otherwise, if the 
correctly indented line
+templates.texi(,657) starts at the beginning of the line, @var{level}=3, else 
@var{level}=2.
+templates.texi(,658) @end enumerate
+templates.texi(,659) @end defopt
+templates.texi(,660) 
+templates.texi(,661) 
+templates.texi(,662) @node Indexes,,,Top  
+templates.texi(,663) @chapter Indexes for commands, keyword, and variable
+templates.texi(,664) 
+templates.texi(,665) @menu
+templates.texi(,666) * Keyword Index:: Keyword Index.
+templates.texi(,667) * Command Index:: Command Index.
+templates.texi(,668) * Variable Index:: Customizable Variable Index.
+templates.texi(,669) @end menu
+templates.texi(,670) 
+templates.texi(,671) @node Keyword Index,,,Indexes
+templates.texi(,672) @section Keyword Index
+templates.texi(,673) 
+templates.texi(,674) @node Command Index,,,Indexes
+templates.texi(,675) @section Keyword Index
+templates.texi(,676) 
+templates.texi(,677) @printindex fn
+templates.texi(,678) 
+templates.texi(,679) @node Variable Index,,,Indexes
+templates.texi(,680) @section Variable Index
+templates.texi(,681) 
+templates.texi(,682) @printindex vr
+templates.texi(,683) 
+templates.texi(,684) @node News,,,Top  
+templates.texi(,685) @chapter News for Package Template
+templates.texi(,686) 
+templates.texi(,687) @table @asis
+templates.texi(,688) @item Latest Version:
+templates.texi(,689) @strong{3.1c} (21 Aug 2003).
+templates.texi(,690) @item Requirements:
+templates.texi(,691) @cite{Emacs-20.2}, @cite{XEmacs-20.2}, or higher.  
+templates.texi(,692) 
+templates.texi(,693) No menu support for Emacs before Version 21.1.
+templates.texi(,694) @item Licence: 
+templates.texi(,695) @cite{GNU General Public License}.
+templates.texi(,696) @end table
+templates.texi(,697) 
+templates.texi(,698) @section Changes with Release 3.1c
+templates.texi(,699) 
+templates.texi(,700) @itemize
+templates.texi(,701) @item
+templates.texi(,702) Bug fix: on XEmacs, initialization would fail without 
menus "File" and "Edit" in menubar.
+templates.texi(,703) @item
+templates.texi(,704) Allow messages to be displayed in a separate buffer 
"*Template Messages*"
+templates.texi(,705) instead at point.
+templates.texi(,706) @item
+templates.texi(,707) Correct and improve header updating.
+templates.texi(,708) @item
+templates.texi(,709) Extend use of @code{M-x template-single-comment}.
+templates.texi(,710) @item
+templates.texi(,711) Minor bug fixes.  Miscellaneous.
+templates.texi(,712) @end itemize
+templates.texi(,713) 
+templates.texi(,714)     
+templates.texi(,715) @section Changes with Release 3.1
+templates.texi(,716) 
+templates.texi(,717) @itemize
+templates.texi(,718) @item
+templates.texi(,719) Moved to SourceForge.net.  Less technical description on 
web page.
+templates.texi(,720) @item
+templates.texi(,721) Remove examples from distribution, they were more 
confusing than helpful.
+templates.texi(,722) @item
+templates.texi(,723) Bug fix: would sometimes indent the current line when 
using the menubar.
+templates.texi(,724) @item
+templates.texi(,725) Menus work with Emacs-21, too.  Rename some menu entries.
+templates.texi(,726) @item
+templates.texi(,727) Don't search further for remote templates.  Nuke this 
home/base directory
+templates.texi(,728) stuff, stop search at root.
+templates.texi(,729) @item
+templates.texi(,730) Don't rely on command @command{ffap} to always add an 
entry to
+templates.texi(,731) @code{command-history} if the filename is read from 
terminal.  Special
+templates.texi(,732) setup for @code{ffap} and @code{html-helper}.
+templates.texi(,733) @item
+templates.texi(,734) Make date/time formats work as names suggest.
+templates.texi(,735) @item
+templates.texi(,736) Command to insert & expand a template file.
+templates.texi(,737) @item
+templates.texi(,738) Allow user to define a choice in the definition section 
to be answered
+templates.texi(,739) via @code{y-or-n-p}.
+templates.texi(,740) @item
+templates.texi(,741) Various miscellaneous improvements.  Minor bug fixes.
+templates.texi(,742) @end itemize
+templates.texi(,743)     
+templates.texi(,744) @node Acknowledgements,,,Top  
+templates.texi(,745) 
+templates.texi(,746) Christoph Wedler 
@uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+templates.texi(,747) 
+templates.texi(,748) 
+templates.texi(,749) @bye

Index: misc/res/texi_templates/templates.texi
===================================================================
RCS file: misc/res/texi_templates/templates.texi
diff -N misc/res/texi_templates/templates.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res/texi_templates/templates.texi      2 Aug 2009 13:13:17 -0000       
1.1
@@ -0,0 +1,747 @@
+\input texinfo   @c -*- mode: texinfo; coding: iso-8859-1-unix -*-
address@hidden %**start of header
address@hidden templates.info
address@hidden iso-8859-1
address@hidden en
address@hidden  Emacs template package documentation, version 3.1c
address@hidden %**end of header
address@hidden kbdmenu = kbd
address@hidden codetpl = samp
address@hidden codevar = code
+
address@hidden
+This is the Emacs template package documentation, version 3.1c
+Copyright @copyright{} 2008 Christoph Wedler, Vincent Belaïche.
+
address@hidden
+Permission is granted to ...
address@hidden quotation
address@hidden copying
+
address@hidden Emacs
address@hidden
+* Templates: (templates). Creating templates for files creation.
address@hidden direntry
+
+
address@hidden
address@hidden Emacs template package manual
address@hidden Details of Package Template
address@hidden Christoph Wedler
+
address@hidden  The following two commands
address@hidden  start the copyright page.
address@hidden
address@hidden 0pt plus 1filll
address@hidden
+
+Published by ...
address@hidden titlepage
+
address@hidden Top,,,(dir)top
address@hidden Top node.
+
+This is the manual of Emacs template package
+
address@hidden
+* Overview:: Overview.
+* Installation:: how to install the template package.
+* Basics:: How to make and use templates.
+* Advanced:: Templates for advanced users.
+* Indexes:: Indexes for commands, keyword, and variable.
+* News:: News for Package Template.
+* Acknowledgements:: Acknowledgements.
address@hidden menu
+
address@hidden Overview,,,Top
address@hidden Overview
+
+When you create a new file with Emacs, package Template supplies an initial
+buffer content via a template: a file with normal text and expansion forms.
+There is a menu to easily create such templates.  You can also use new commands
+to decorate comments and update the buffer contents.
+
+
+The main difference between Template and @ref{Related,other similar
+packages} is that you can define very flexible templates without having
+to learn Lisp or changing your Emacs init file.  This package does not
+help Lisp programmers to define complex macros.
+
address@hidden
address@hidden
+The template mechanism is hooked into the normal find/open file command.  There
+are also new commands for creating a new file using a template and inserting 
&amp;
+expanding a template.
address@hidden
+You do not have to enter the file name of the template file.  This package uses
+a sophisticated search to find the most appropritate template (supporting
+project- and subproject specific template files).  You can change the
+suggestion, of course.
address@hidden
+A template file can be easily created.  Most of the file usually contains
+simple text; only @dfn{expansion forms} which look like
address@hidden(>>>@var{Key}<<<)} will get replaced.
address@hidden
+There are various useful predefined expansions: set point (the cursor
+position), mark and registers to the current position; insert various parts of
+the filename, the user/system name, the current date/time in various formats,
+and some text to be entered by the user.
address@hidden
+Template-specific expansions can be defined at the end of the template file.
+There are commands to create these definitions; only complex expansions would
+require some knowledge of Lisp.
address@hidden itemize
+
+There is a menu to support the creation of template files.  Additionally, this
+package provides the following features:
+
address@hidden
address@hidden
+When saving a buffer, some parts of the buffer contents (header and time
+stamps) are automatically updated if necessary.
address@hidden
+There are commands to decorate comments with dashes and alike.  Works for
+languages with any comment style, even languages having mixed comments like C++
+and Java.
address@hidden itemize
+
+
address@hidden Related,,,Overview
address@hidden Packages Related to Template
+
+
+There are template packages of two different categories, which are determined
+by one question:
+
address@hidden do you want to do with templates?} Do you want to use templates
+when creating new files, or do you want to insert some stuff during editing
+(but you are not satisfied with the standard macro mechanism)?
+
+Well, templates could be seen as both new-file templates and macro-like
+template, but the main application of templates determines the answers for the
+following questions:
+      
address@hidden
address@hidden
address@hidden do you define a template?} You can define it by one file per
+template or by customizing some Emacs variables.  The first solution (which is
+used by package Template) avoids Emacs hacking but might not be optimal if you
+just want to define complex macros or if you want to use templates to program a
+new Emacs major-mode.
address@hidden
address@hidden is an appropriate template selected?} If you want to use complex
+macro during editing, the answer is clear: the user have to provide the name of
+the template.  For new files, the appropriate template should be automatically
+selected.  But of course, you don't want to loose any flexibility and you don't
+want to customize your Emacs for every project you start.
address@hidden
address@hidden do you do "clever" things in the template?} The aims are to have
+many predefined expansions (e.g., the current date) and to define some
+non-trivial things without learning Lisp.  Any functionality here is the
+overlapping point of both template categories.
address@hidden itemize
+
+
+
+Here is a little list of related files, collected around 1998, some discarded
+later (no @abbr{URL}s, no active updating, but you can send me a mail):
+
address@hidden
address@hidden
+Package @cite{autoinsert.el} uses templates when creating new files.
+These templates are defined via files or by customizing Emacs.  For each new
+template you want to introduce, you must customize your Emacs, the selection is
+restricted to one template per major-mode or regexp match.  No predefined
+expansions; clever things are provided by usual Lisp expressions or the
+macro-like templates of package @cite{skeleton}.
address@hidden
+Package @cite{skeleton.el} is a Lisp language extension for
+writing statement skeletons, i.e., you get macro-like Lisp commands.
address@hidden
+Package @cite{tempo.el} helps you defining and using named macro-like
+templates.  Its predefined macros are similar to some predefined expansions of
+package Template.  A specific template is used by
+<code class="lisp">html-helper-mode</code> when creating a new html file.
+(This is turned off with the default installation of package Template.)
address@hidden
+Package @cite{hm--html-menus} provides a command to insert templates
+editing.  These templates are defined via files.  There are no predefined
+expansions (except setting point), non-trivial expansions are defined via Lisp.
address@hidden itemize
+
+
+
+
address@hidden Installation,,,Top
address@hidden Installation
+
address@hidden Installation Instructions
+
address@hidden
address@hidden
+Copy file @file{template/lisp/template.el} into your
+load-path and byte-compile it.
address@hidden
+Insert the following code into your Emacs init file
+(@file{~/.emacs}):
+
address@hidden
+(require 'template)
+(template-initialize)
address@hidden lisp
+
address@hidden
+If you want to customize package Template, use @kbd{M-x
+customize-group @key{RET} template
address@hidden or the customize entry in menu
address@hidden
address@hidden
+You might want to copy the template files from directory
address@hidden/templates/} to
address@hidden/.templates/} and change them according to your
+preferences.
address@hidden enumerate
+
+
+Installation instructions with further explanations can be found in file
address@hidden/INSTALL} of the distribution.
+
+ 
+
address@hidden Basics,,,Top
address@hidden Basics
+
+Emacs, template, file template, comment decoration, auto-updating, time stamp, 
details
+
address@hidden
+* menus:: Menus and Key-Bindings.
+* using:: Using a Template.
+* finding:: Finding a Template.
+* creating:: Creating a Template.
+* decorating:: Decorating a Comment.
+* updating:: Updating a Buffer.
address@hidden menu
+
address@hidden menus,,,Basics
address@hidden  Menus and Key-Bindings
address@hidden 
--------------------------------------------------------------------------------
+For Emacs-21.1+ and XEmacs, this package defines the following menu entries and
+key-bindings: 
+
address@hidden
address@hidden
+In menu @kbd{File} , there is a new menu item @kbd{New File
+Using Template...}  .  The corresponding command is also bound to the
+key sequence @kbd{C-x t}.
address@hidden
+At the end of menu @kbd{Cmds} (in XEmacs if it exists) or menu
+ @kbd{Edit} , there is a new submenu @kbd{Template Creation}.
address@hidden
+Enter @kbd{C-x C-=} (command @command{template-single-comment}) to
+insert dashes and alike into the current line and end the comment.
address@hidden
+Enter @kbd{C-x C-;} (command @command{template-single-comment}) to
+insert dashes and alike around the current comment block.
address@hidden
+At the end of menu @kbd{Edit} , there is a new submenu
address@hidden  It also contains the two commands just mentioned.
address@hidden itemize
+
address@hidden 
--------------------------------------------------------------------------------
address@hidden using,,,Basics
address@hidden  Using a Template
address@hidden 
--------------------------------------------------------------------------------
+Package Template offers various ways how to use template files:
+
+In Emacs, the usual way to create a new file is by typing @kbd{C-x C-f},
+using the menu or the toolbar (running command @command{find-file} or
address@hidden) and entering a non-existent file name.  In this case,
+you will be asked whether to use a template for the new file.  You can
+turn off this feature.
+
address@hidden
address@hidden
+Here a first undefined xref @xref{EExpansion}.
+There is a new command @command{template-new-file} @footnote{for the
+menu entry and its key-binding type @kbd{C-h f template-new-file},
address@hidden to create a new file using a template.  Here, you have
+the chance to edit the name of the template file.  This command also
+supports file name refinement which is useful to create a file in a
+series of files like @file{exercise2.tex} etc.
address@hidden
+There is also a command (@kbd{M-x template-expand-template})
+to insert a template file into the current buffer and expand its expansion
+forms.
address@hidden itemize
+
+
+For more @command{template-new-file} and @code{template-auto-insert},
+ @xref{Expansion}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden finding,,,Basics
address@hidden  Finding a Template
address@hidden 
--------------------------------------------------------------------------------
+The algorithm for finding the most appropriate template can be best explained
+with a little example:
+
address@hidden
address@hidden
+You have a project @file{~/proj/} with subprojects @file{foo/} and
address@hidden/} containing @file{.java} files.
address@hidden
+You want to define a general template for the @file{.java} in your
+project files, although @file{.java} files in subproject @file{foo/}
+should use their own template.  You also want to define a special
+template for all files @file{proj.java} in the project.
address@hidden
+Since you do not want to clutter the project directory with template
+files, you first create a directory @file{~/proj/Templates/}.  In this
+directory, you create new files @file{TEMPLATE.java.tpl} and
address@hidden  In directory @file{~/proj/foo/}, you create a new
+file @file{TEMPLATE.java.tpl}.
address@hidden itemize
+
+The creation of the template files in the right directory is already enough for
+packages Template to find the most appropriate template for a new file:
+
address@hidden
address@hidden
+If you create a new file @file{~/proj/foo/abc.java}, this package tries
+to find a template based on the file extension of the new file.  The
+generic base file name for a template is @file{TEMPLATE} and the
+additional extension is @file{.tpl}, a file @file{TEMPLATE.java.tpl}
+exists in @file{~/proj/foo/}, so that file is used as the template.
address@hidden
+If you create a new file @file{~/proj/bar/abc.java}, this package again
+tries to find @file{TEMPLATE.java.tpl}.  Since this file doesn't exist
+in @file{~/proj/bar/}, it first inspects the subdirectory
address@hidden/} which doesn't exist.  The search continues with the
+parent directory @file{~/proj/} and then its subdirectory
address@hidden/}.  Thus @file{~/proj/Templates/TEMPLATE.java.tpl} will
+be used.
address@hidden
+If you create a new file @file{~/proj/foo/proj.java}, this package finds
+a template file with the same base name: it uses
address@hidden/proj/Templates/proj.java.tpl}.  You might argue that
address@hidden/proj/foo/TEMPLATE.java.tpl} resides in a more specific
+directory, but having the same base name is considered to be more
+important (remember that some file like Makefiles do not have file
+extensions).
address@hidden
+If you create a new file @file{~/other_proj/foo/proj.java}, i.e., a
+project where you have defined no template files, this package uses one
+of the default templates, in this case
address@hidden/.templates/TEMPLATE.java.tpl}.
address@hidden itemize
+
+For more on derivation @xref{Derivation}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden creating,,,Basics
address@hidden  Creating a Template
address@hidden 
--------------------------------------------------------------------------------
+
+There are various predefined expansions which are probably enough for
+most templates.  A corresponding expansion forms can be easily inserted
+by selecting the appropriate entry in the new submenu  @kbd{Template
+Creation}
+:
+
address@hidden
address@hidden
+Remember positions: use @samp{(>>>POINT<<<)} to set point (the cursor
+position), @samp{(>>>MARK<<<)} to set mark (e.g., the opposite position
+when a region is highlighted), and @samp{(>>>1<<<)} to @samp{(>>>0<<<)}
+to registers to the current position.  Remember that @kbd{C-x r j
address@hidden jumps to the position stored in register @var{Key}.
address@hidden
+
+Insert parts of the file name, e.g., when creating the new file
address@hidden/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is replaced by
address@hidden/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by @file{abc1.java},
address@hidden(>>>FILE_SANS<<<)} by @file{abc1} , @samp{(>>>FILE_UPCASE<<<)} by
address@hidden , @samp{(>>>FILE_RAW<<<)} by @file{abc},
address@hidden(>>>FILE_NUM<<<)} by @file{1} , and @samp{(>>>FILE_EXT<<<)} by
address@hidden
address@hidden
+Insert the current date/time in two customizable and three fixed
+formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
address@hidden(>>>TIME<<<)} for @samp{20:01:13} , @samp{(>>>YEAR<<<)} for
address@hidden , @samp{(>>>ISO_DATE<<<)} for @samp{2002-02-20} , and
address@hidden(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
address@hidden
+Insert the user/system name in various formats: use
address@hidden(>>>AUTHOR<<<)} for @email{Christoph Wedler
+<wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
address@hidden Wedler} , @samp{(>>>LOGIN_NAME<<<)} for @samp{wedler} ,
+and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} .
address@hidden
+Ask the user for some initial comment.  If this expansion is used, the buffer
+for the new file will be marked as modified.  For each undefined expansion, the
+user is also asked.
address@hidden
+Disabling the search for expansion forms:
address@hidden(>>>ZERO_FORM<<<)} can be inserted into a string which
+will be otherwise regarded as an expansion form, the region between
address@hidden(>>>LITERAL<<<)} and the first
address@hidden(>>>/LITERAL<<<)} after it will be skipped.
address@hidden itemize
+    
+You can define your own expansions in your Emacs init file and at the end of a
+template file.  A corresponding definition can be easily inserted by selecting
+the appropriate entry in the new submenu  @kbd{Template
+Creation}:
+    
address@hidden
+
address@hidden
address@hidden User Input}
+.  Ask the user to insert some text
+using some specific prompt.  Optionally, ask for a text with completion, or for
+a sequence of user input (exit with empty input).
address@hidden
address@hidden Text Register} 
+.  Define a text for
+register @var{Reg} which can be inserted with @kbd{C-x r i @var{Reg}}.
+Optionally, provide a comment for it which will be temporarily shown at
+point.
address@hidden
address@hidden Message}
+.  Define a message which will be
+temporarily shown at point or before/after the expansion in a special buffer.
+There is also a computed message in the echo area.
address@hidden
+
+Execute some Lisp coding defined at the end of the template.  By default, you
+have to confirm it first, since it is insecure to execute unchecked coding.
+(You do not have menu support to define this kind of expansion.)
address@hidden itemize
+
address@hidden template-default-expansion-alist
address@hidden defopt
address@hidden template-definition-start
address@hidden defopt
+
+    
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden decorating,,,Basics
address@hidden  Decorating a Comment
address@hidden 
--------------------------------------------------------------------------------
+
+There are commands to decorate comments with dashes and alike (@samp{-},
address@hidden and @samp{#} by default).  Both commands are included in the
+new submenu @kbd{Comments} 
+and bound to keys:
+
address@hidden
address@hidden
+Use command @code{template-single-comment} to jump to the
+end of the current line and insert the dashes and the final
+comment end-string up-to the fill position.  This command works with any
+comment style, including for languages having mixed comments like C++ and Java.
+It also works in major modes without a defined comment syntax.
address@hidden
+Use command @code{template-block-comment} to surround the
+current comment block (i.e., contiguous comment lines) with extra lines
+containing dashes and alike and to put the correct number of newlines around
+the block.  This command only works with comments which are terminated with the
+end of the line (like Java's @code{//address@hidden code class=text
+ comment).
address@hidden itemize
+
+The comment decoration style is highly customizable and can be controlled by
+
address@hidden
address@hidden
+The prefix argument given to the two commands.
address@hidden
+The existing comment decoration style when present.
address@hidden
+Determined by the indentation or the repetition of a single-character comment
+start (like Emacs-Lisp's @code{;address@hidden code class=text
+).
address@hidden itemize
+
+For more on comments @xref{Comments}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden updating,,,Basics
address@hidden  Updating a Buffer
address@hidden 
--------------------------------------------------------------------------------
+A buffer is automatically updated according to some rules when saving
+the file.  This updating can be invoked explicitly by selecting the menu
+entry @kbd{Update Buffer} in the new submenu @kbd{Comments} .
+
address@hidden
address@hidden
+Update the file name in the first three lines of the buffer if the file name is
+indicated by @code{@@(#) @address@hidden code class=text
+ or
address@hidden;;; @var{FileName} address@hidden code class=text
+ where
address@hidden;;;address@hidden code class=text
+ stands for any comment start (with optional
+repetition of a single-character comment start).
address@hidden
+Update the date if it is the last text inside the
address@hidden@c code class=html
+ element of a HTML buffer.
address@hidden
+Automatic updating is optional, as is user confirmation for it.  Automatic
+updating can be disabled for buffers whose file name matches a regular
+expression.
address@hidden
+If nothing will be changed by the updating, there will be no user confirmation
+and the buffer will not be marked as modified.
address@hidden itemize
+
address@hidden template-update-buffer
address@hidden defopt
address@hidden template-auto-update
address@hidden defopt
address@hidden template-update-buffer-alist
address@hidden defopt
address@hidden template-header-regexp-alist
address@hidden defopt
+
address@hidden Advanced,,,Top  
address@hidden Templates for advanced users
+
address@hidden
+* Customization:: Templates customization.
address@hidden menu
+
address@hidden Customization,,,Advanced
address@hidden Templates customization
+
address@hidden
+* Expansion:: Customization of keyword expansion rules.
+* Derivation:: Customization of how templates are derived.
+* Comments:: Customization of comments.
address@hidden menu
+
address@hidden Expansion,,,Customization
address@hidden Customization of keyword expansion rules
+
address@hidden {Interactive Command} template-new-file {file template with-undo}
+Open a new file @var{file} by using a @var{template}.
+Using a template for creating a new file consists of, steps 1 to 3 are
+only executed when called interactively:
address@hidden
address@hidden
+Prompt for the name of the new file.
address@hidden
+Template derivation: suggest a reasonable template file to the user see
address@hidden
address@hidden
+File name refinement: e.g., if the given file name is @file{exercise}
+and there are two files @file{exercise1.tex} and @file{exercise2.tex} in
+the same directory and if we have a template @file{exercise.tex.tpl},
+the file name is refined to @file{exercise3.tex}.  This is turned off
+when @kbd{C-x t} is called with a prefix argument.
address@hidden
+Template insertion: insert the template file into the empty buffer.
address@hidden
+Read per-template expansion definition section starting at
address@hidden and delete it.
address@hidden
+Display: before message in @code{template-message-buffer}.
address@hidden
+Execute pre-expansion commands defined in the definition section.
address@hidden
+Set local variables defined in the definition section.
address@hidden
+Expansion: expand the expansion forms (text matched by
address@hidden) They are defined in the definition
+section, in @code{template-expansion-alist}, or provided by default,
+see @code{template-expansion-regexp} and
address@hidden
address@hidden
+Execute post-expansion commands defined in the definition section.
address@hidden
+Run @code{normal-mode} and functions in @code{find-file-hooks}.
address@hidden
+Update header according to @command{template-update-header} with
address@hidden Vincent: What is this if-exists argument ?
+argument @code{if-exists}.
address@hidden
+Display: after message in @code{template-message-buffer}.
address@hidden
+Report: display a temporary message at point defined in the definition
+section and an automatically generated message in the minibuffer area,
+see @code{template-message-timeout}.
address@hidden enumerate
+If optional @var{with-undo} is non-nil, store corresponding changes in
address@hidden  If @var{file} is nil, the buffer for @var{file} has
+already been created and the accessible part will be replaced by the
+expanded template.  If @var{template} is nil (empty input when called
+interactively), do not use a template.
address@hidden deffn
+
address@hidden template-auto-insert
address@hidden defopt
+
address@hidden Derivation,,,Customization
address@hidden Customization of how templates are derived
+
address@hidden template-derivation-alist
address@hidden defopt
+
address@hidden Comments,,,Customization
address@hidden Customization of comments
+
address@hidden template-single-comment
address@hidden defopt
+
address@hidden {Interactive command} template-block-comment arg
+It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> <Comment> <Decorate 
Comment Block>}.
+
+Decorate the current block of comment-only lines with dashes and alike.
+That is, surround the the contiguous comment-only lines around point
+with extra lines containing dashes and alike and to put the correct
+number of newlines around the block.
+
+Barf if the comment syntax at point has a non-empty @code{comment-end} or if
+point is not in a comment-only line.
+
+A block comment consists of all neighboring lines which start with
+spaces and @code{comment-start}.  If @code{comment-start} is a string of 
length 1,
+the number of repetitions of @code{comment-start} must be the same or larger
+than in the line where the command is invoked from, too.
+
+Prefix argument @var{arg} and @code{template-comment-specification} determines 
the
+comment style to use.  The length of the separator line is determined by
address@hidden
+
+This command can also be used with point in an empty line after a block
+comment.  A second invocation of this command directly after a
+successful invocation deletes the remaining empty lines from the current
+line on.
address@hidden deffn
+
address@hidden template-comment-specification-alist
+List of specifications for comment functions.  Each specification at
address@hidden, starting at 1, is a list @code{(@var{separator}
address@hidden @var{after-block} @var{DELETE-LINES})}
+
address@hidden is the string which is inserted repeatedly by commands
address@hidden C-=} and @kbd{C-x C-;} up to @code{template-max-column}.
+
+After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} after the comment block
+and inserts string @var{after-block} at the end of the block and
address@hidden at the front of the block.
+
+The specification @var{level} to use is determined by:
address@hidden
address@hidden
+If the prefix argument is non-nil and its numeric value is > 0, this
+value is the @var{level}.
address@hidden
+If the prefix argument is nil, and there is an old comment style, use
+old comment style.
address@hidden
+If @code{template-comment-specification-special} is a function or the
+current major mode has a property with this name and its value is a
+function, this function returns the specification.
address@hidden
+If @code{comment-end} is empty and @code{comment-start} is a string of
+length 1: @var{level} is number of repetitions of @code{comment-start}
+at the beginning of the line.  Otherwise, if the correctly indented line
+starts at the beginning of the line, @var{level}=3, else @var{level}=2.
address@hidden enumerate
address@hidden defopt
+
+
address@hidden Indexes,,,Top  
address@hidden Indexes for commands, keyword, and variable
+
address@hidden
+* Keyword Index:: Keyword Index.
+* Command Index:: Command Index.
+* Variable Index:: Customizable Variable Index.
address@hidden menu
+
address@hidden Keyword Index,,,Indexes
address@hidden Keyword Index
+
address@hidden Command Index,,,Indexes
address@hidden Keyword Index
+
address@hidden fn
+
address@hidden Variable Index,,,Indexes
address@hidden Variable Index
+
address@hidden vr
+
address@hidden News,,,Top  
address@hidden News for Package Template
+
address@hidden @asis
address@hidden Latest Version:
address@hidden (21 Aug 2003).
address@hidden Requirements:
address@hidden, @cite{XEmacs-20.2}, or higher.  
+
+No menu support for Emacs before Version 21.1.
address@hidden Licence: 
address@hidden General Public License}.
address@hidden table
+
address@hidden Changes with Release 3.1c
+
address@hidden
address@hidden
+Bug fix: on XEmacs, initialization would fail without menus "File" and "Edit" 
in menubar.
address@hidden
+Allow messages to be displayed in a separate buffer "*Template Messages*"
+instead at point.
address@hidden
+Correct and improve header updating.
address@hidden
+Extend use of @code{M-x template-single-comment}.
address@hidden
+Minor bug fixes.  Miscellaneous.
address@hidden itemize
+
+    
address@hidden Changes with Release 3.1
+
address@hidden
address@hidden
+Moved to SourceForge.net.  Less technical description on web page.
address@hidden
+Remove examples from distribution, they were more confusing than helpful.
address@hidden
+Bug fix: would sometimes indent the current line when using the menubar.
address@hidden
+Menus work with Emacs-21, too.  Rename some menu entries.
address@hidden
+Don't search further for remote templates.  Nuke this home/base directory
+stuff, stop search at root.
address@hidden
+Don't rely on command @command{ffap} to always add an entry to
address@hidden if the filename is read from terminal.  Special
+setup for @code{ffap} and @code{html-helper}.
address@hidden
+Make date/time formats work as names suggest.
address@hidden
+Command to insert & expand a template file.
address@hidden
+Allow user to define a choice in the definition section to be answered
+via @code{y-or-n-p}.
address@hidden
+Various miscellaneous improvements.  Minor bug fixes.
address@hidden itemize
+    
address@hidden Acknowledgements,,,Top  
+
+Christoph Wedler @uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+
+
address@hidden

Index: misc/res/texi_templates/templates.texi.first
===================================================================
RCS file: misc/res/texi_templates/templates.texi.first
diff -N misc/res/texi_templates/templates.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res/texi_templates/templates.texi.first        2 Aug 2009 13:13:17 
-0000       1.1
@@ -0,0 +1,726 @@
+\input texinfo   @c -*- mode: texinfo; coding: iso-8859-1-unix -*-
address@hidden %**start of header
address@hidden templates.info
address@hidden iso-8859-1
address@hidden en
address@hidden  Emacs template package documentation, version 3.1c
address@hidden %**end of header
address@hidden kbdmenu = kbd
address@hidden codetpl = samp
address@hidden codevar = code
+
+
address@hidden Emacs
address@hidden
+* Templates: (templates). Creating templates for files creation.
address@hidden direntry
+
+
+
address@hidden Top,,,(dir)top
address@hidden Top node.
+
+This is the manual of Emacs template package
+
address@hidden
+* Overview:: Overview.
+* Installation:: how to install the template package.
+* Basics:: How to make and use templates.
+* Advanced:: Templates for advanced users.
+* Indexes:: Indexes for commands, keyword, and variable.
+* News:: News for Package Template.
+* Acknowledgements:: Acknowledgements.
address@hidden menu
+
address@hidden Overview,,,Top
address@hidden Overview
+
+When you create a new file with Emacs, package Template supplies an initial
+buffer content via a template: a file with normal text and expansion forms.
+There is a menu to easily create such templates.  You can also use new commands
+to decorate comments and update the buffer contents.
+
+
+The main difference between Template and @ref{Related,other similar
+packages} is that you can define very flexible templates without having
+to learn Lisp or changing your Emacs init file.  This package does not
+help Lisp programmers to define complex macros.
+
address@hidden
address@hidden
+The template mechanism is hooked into the normal find/open file command.  There
+are also new commands for creating a new file using a template and inserting 
&amp;
+expanding a template.
address@hidden
+You do not have to enter the file name of the template file.  This package uses
+a sophisticated search to find the most appropritate template (supporting
+project- and subproject specific template files).  You can change the
+suggestion, of course.
address@hidden
+A template file can be easily created.  Most of the file usually contains
+simple text; only @dfn{expansion forms} which look like
address@hidden(>>>@var{Key}<<<)} will get replaced.
address@hidden
+There are various useful predefined expansions: set point (the cursor
+position), mark and registers to the current position; insert various parts of
+the filename, the user/system name, the current date/time in various formats,
+and some text to be entered by the user.
address@hidden
+Template-specific expansions can be defined at the end of the template file.
+There are commands to create these definitions; only complex expansions would
+require some knowledge of Lisp.
address@hidden itemize
+
+There is a menu to support the creation of template files.  Additionally, this
+package provides the following features:
+
address@hidden
address@hidden
+When saving a buffer, some parts of the buffer contents (header and time
+stamps) are automatically updated if necessary.
address@hidden
+There are commands to decorate comments with dashes and alike.  Works for
+languages with any comment style, even languages having mixed comments like C++
+and Java.
address@hidden itemize
+
+
address@hidden Related,,,Overview
address@hidden Packages Related to Template
+
+
+There are template packages of two different categories, which are determined
+by one question:
+
address@hidden do you want to do with templates?} Do you want to use templates
+when creating new files, or do you want to insert some stuff during editing
+(but you are not satisfied with the standard macro mechanism)?
+
+Well, templates could be seen as both new-file templates and macro-like
+template, but the main application of templates determines the answers for the
+following questions:
+      
address@hidden
address@hidden
address@hidden do you define a template?} You can define it by one file per
+template or by customizing some Emacs variables.  The first solution (which is
+used by package Template) avoids Emacs hacking but might not be optimal if you
+just want to define complex macros or if you want to use templates to program a
+new Emacs major-mode.
address@hidden
address@hidden is an appropriate template selected?} If you want to use complex
+macro during editing, the answer is clear: the user have to provide the name of
+the template.  For new files, the appropriate template should be automatically
+selected.  But of course, you don't want to loose any flexibility and you don't
+want to customize your Emacs for every project you start.
address@hidden
address@hidden do you do "clever" things in the template?} The aims are to have
+many predefined expansions (e.g., the current date) and to define some
+non-trivial things without learning Lisp.  Any functionality here is the
+overlapping point of both template categories.
address@hidden itemize
+
+
+
+Here is a little list of related files, collected around 1998, some discarded
+later (no @abbr{URL}s, no active updating, but you can send me a mail):
+
address@hidden
address@hidden
+Package @cite{autoinsert.el} uses templates when creating new files.
+These templates are defined via files or by customizing Emacs.  For each new
+template you want to introduce, you must customize your Emacs, the selection is
+restricted to one template per major-mode or regexp match.  No predefined
+expansions; clever things are provided by usual Lisp expressions or the
+macro-like templates of package @cite{skeleton}.
address@hidden
+Package @cite{skeleton.el} is a Lisp language extension for
+writing statement skeletons, i.e., you get macro-like Lisp commands.
address@hidden
+Package @cite{tempo.el} helps you defining and using named macro-like
+templates.  Its predefined macros are similar to some predefined expansions of
+package Template.  A specific template is used by
+<code class="lisp">html-helper-mode</code> when creating a new html file.
+(This is turned off with the default installation of package Template.)
address@hidden
+Package @cite{hm--html-menus} provides a command to insert templates
+editing.  These templates are defined via files.  There are no predefined
+expansions (except setting point), non-trivial expansions are defined via Lisp.
address@hidden itemize
+
+
+
+
address@hidden Installation,,,Top
address@hidden Installation
+
address@hidden Installation Instructions
+
address@hidden
address@hidden
+Copy file @file{template/lisp/template.el} into your
+load-path and byte-compile it.
address@hidden
+Insert the following code into your Emacs init file
+(@file{~/.emacs}):
+
address@hidden
+(require 'template)
+(template-initialize)
address@hidden lisp
+
address@hidden
+If you want to customize package Template, use @kbd{M-x
+customize-group @key{RET} template
address@hidden or the customize entry in menu
address@hidden
address@hidden
+You might want to copy the template files from directory
address@hidden/templates/} to
address@hidden/.templates/} and change them according to your
+preferences.
address@hidden enumerate
+
+
+Installation instructions with further explanations can be found in file
address@hidden/INSTALL} of the distribution.
+
+ 
+
address@hidden Basics,,,Top
address@hidden Basics
+
+Emacs, template, file template, comment decoration, auto-updating, time stamp, 
details
+
address@hidden
+* menus:: Menus and Key-Bindings.
+* using:: Using a Template.
+* finding:: Finding a Template.
+* creating:: Creating a Template.
+* decorating:: Decorating a Comment.
+* updating:: Updating a Buffer.
address@hidden menu
+
address@hidden menus,,,Basics
address@hidden  Menus and Key-Bindings
address@hidden 
--------------------------------------------------------------------------------
+For Emacs-21.1+ and XEmacs, this package defines the following menu entries and
+key-bindings: 
+
address@hidden
address@hidden
+In menu @kbd{File} , there is a new menu item @kbd{New File
+Using Template...}  .  The corresponding command is also bound to the
+key sequence @kbd{C-x t}.
address@hidden
+At the end of menu @kbd{Cmds} (in XEmacs if it exists) or menu
+ @kbd{Edit} , there is a new submenu @kbd{Template Creation}.
address@hidden
+Enter @kbd{C-x C-=} (command @command{template-single-comment}) to
+insert dashes and alike into the current line and end the comment.
address@hidden
+Enter @kbd{C-x C-;} (command @command{template-single-comment}) to
+insert dashes and alike around the current comment block.
address@hidden
+At the end of menu @kbd{Edit} , there is a new submenu
address@hidden  It also contains the two commands just mentioned.
address@hidden itemize
+
address@hidden 
--------------------------------------------------------------------------------
address@hidden using,,,Basics
address@hidden  Using a Template
address@hidden 
--------------------------------------------------------------------------------
+Package Template offers various ways how to use template files:
+
+In Emacs, the usual way to create a new file is by typing @kbd{C-x C-f},
+using the menu or the toolbar (running command @command{find-file} or
address@hidden) and entering a non-existent file name.  In this case,
+you will be asked whether to use a template for the new file.  You can
+turn off this feature.
+
address@hidden
address@hidden
+Here a first undefined xref @xref{EExpansion}.
+There is a new command @command{template-new-file} @footnote{for the
+menu entry and its key-binding type @kbd{C-h f template-new-file},
address@hidden to create a new file using a template.  Here, you have
+the chance to edit the name of the template file.  This command also
+supports file name refinement which is useful to create a file in a
+series of files like @file{exercise2.tex} etc.
address@hidden
+There is also a command (@kbd{M-x template-expand-template})
+to insert a template file into the current buffer and expand its expansion
+forms.
address@hidden itemize
+
+
+For more @command{template-new-file} and @code{template-auto-insert},
+ @xref{Expansion}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden finding,,,Basics
address@hidden  Finding a Template
address@hidden 
--------------------------------------------------------------------------------
+The algorithm for finding the most appropriate template can be best explained
+with a little example:
+
address@hidden
address@hidden
+You have a project @file{~/proj/} with subprojects @file{foo/} and
address@hidden/} containing @file{.java} files.
address@hidden
+You want to define a general template for the @file{.java} in your
+project files, although @file{.java} files in subproject @file{foo/}
+should use their own template.  You also want to define a special
+template for all files @file{proj.java} in the project.
address@hidden
+Since you do not want to clutter the project directory with template
+files, you first create a directory @file{~/proj/Templates/}.  In this
+directory, you create new files @file{TEMPLATE.java.tpl} and
address@hidden  In directory @file{~/proj/foo/}, you create a new
+file @file{TEMPLATE.java.tpl}.
address@hidden itemize
+
+The creation of the template files in the right directory is already enough for
+packages Template to find the most appropriate template for a new file:
+
address@hidden
address@hidden
+If you create a new file @file{~/proj/foo/abc.java}, this package tries
+to find a template based on the file extension of the new file.  The
+generic base file name for a template is @file{TEMPLATE} and the
+additional extension is @file{.tpl}, a file @file{TEMPLATE.java.tpl}
+exists in @file{~/proj/foo/}, so that file is used as the template.
address@hidden
+If you create a new file @file{~/proj/bar/abc.java}, this package again
+tries to find @file{TEMPLATE.java.tpl}.  Since this file doesn't exist
+in @file{~/proj/bar/}, it first inspects the subdirectory
address@hidden/} which doesn't exist.  The search continues with the
+parent directory @file{~/proj/} and then its subdirectory
address@hidden/}.  Thus @file{~/proj/Templates/TEMPLATE.java.tpl} will
+be used.
address@hidden
+If you create a new file @file{~/proj/foo/proj.java}, this package finds
+a template file with the same base name: it uses
address@hidden/proj/Templates/proj.java.tpl}.  You might argue that
address@hidden/proj/foo/TEMPLATE.java.tpl} resides in a more specific
+directory, but having the same base name is considered to be more
+important (remember that some file like Makefiles do not have file
+extensions).
address@hidden
+If you create a new file @file{~/other_proj/foo/proj.java}, i.e., a
+project where you have defined no template files, this package uses one
+of the default templates, in this case
address@hidden/.templates/TEMPLATE.java.tpl}.
address@hidden itemize
+
+For more on derivation @xref{Derivation}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden creating,,,Basics
address@hidden  Creating a Template
address@hidden 
--------------------------------------------------------------------------------
+
+There are various predefined expansions which are probably enough for
+most templates.  A corresponding expansion forms can be easily inserted
+by selecting the appropriate entry in the new submenu  @kbd{Template
+Creation}
+:
+
address@hidden
address@hidden
+Remember positions: use @samp{(>>>POINT<<<)} to set point (the cursor
+position), @samp{(>>>MARK<<<)} to set mark (e.g., the opposite position
+when a region is highlighted), and @samp{(>>>1<<<)} to @samp{(>>>0<<<)}
+to registers to the current position.  Remember that @kbd{C-x r j
address@hidden jumps to the position stored in register @var{Key}.
address@hidden
+
+Insert parts of the file name, e.g., when creating the new file
address@hidden/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is replaced by
address@hidden/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by @file{abc1.java},
address@hidden(>>>FILE_SANS<<<)} by @file{abc1} , @samp{(>>>FILE_UPCASE<<<)} by
address@hidden , @samp{(>>>FILE_RAW<<<)} by @file{abc},
address@hidden(>>>FILE_NUM<<<)} by @file{1} , and @samp{(>>>FILE_EXT<<<)} by
address@hidden
address@hidden
+Insert the current date/time in two customizable and three fixed
+formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
address@hidden(>>>TIME<<<)} for @samp{20:01:13} , @samp{(>>>YEAR<<<)} for
address@hidden , @samp{(>>>ISO_DATE<<<)} for @samp{2002-02-20} , and
address@hidden(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
address@hidden
+Insert the user/system name in various formats: use
address@hidden(>>>AUTHOR<<<)} for @email{Christoph Wedler
+<wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
address@hidden Wedler} , @samp{(>>>LOGIN_NAME<<<)} for @samp{wedler} ,
+and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} .
address@hidden
+Ask the user for some initial comment.  If this expansion is used, the buffer
+for the new file will be marked as modified.  For each undefined expansion, the
+user is also asked.
address@hidden
+Disabling the search for expansion forms:
address@hidden(>>>ZERO_FORM<<<)} can be inserted into a string which
+will be otherwise regarded as an expansion form, the region between
address@hidden(>>>LITERAL<<<)} and the first
address@hidden(>>>/LITERAL<<<)} after it will be skipped.
address@hidden itemize
+    
+You can define your own expansions in your Emacs init file and at the end of a
+template file.  A corresponding definition can be easily inserted by selecting
+the appropriate entry in the new submenu  @kbd{Template
+Creation}:
+    
address@hidden
+
address@hidden
address@hidden User Input}
+.  Ask the user to insert some text
+using some specific prompt.  Optionally, ask for a text with completion, or for
+a sequence of user input (exit with empty input).
address@hidden
address@hidden Text Register} 
+.  Define a text for
+register @var{Reg} which can be inserted with @kbd{C-x r i @var{Reg}}.
+Optionally, provide a comment for it which will be temporarily shown at
+point.
address@hidden
address@hidden Message}
+.  Define a message which will be
+temporarily shown at point or before/after the expansion in a special buffer.
+There is also a computed message in the echo area.
address@hidden
+
+Execute some Lisp coding defined at the end of the template.  By default, you
+have to confirm it first, since it is insecure to execute unchecked coding.
+(You do not have menu support to define this kind of expansion.)
address@hidden itemize
+
address@hidden template-default-expansion-alist
address@hidden defopt
address@hidden template-definition-start
address@hidden defopt
+
+    
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden decorating,,,Basics
address@hidden  Decorating a Comment
address@hidden 
--------------------------------------------------------------------------------
+
+There are commands to decorate comments with dashes and alike (@samp{-},
address@hidden and @samp{#} by default).  Both commands are included in the
+new submenu @kbd{Comments} 
+and bound to keys:
+
address@hidden
address@hidden
+Use command @code{template-single-comment} to jump to the
+end of the current line and insert the dashes and the final
+comment end-string up-to the fill position.  This command works with any
+comment style, including for languages having mixed comments like C++ and Java.
+It also works in major modes without a defined comment syntax.
address@hidden
+Use command @code{template-block-comment} to surround the
+current comment block (i.e., contiguous comment lines) with extra lines
+containing dashes and alike and to put the correct number of newlines around
+the block.  This command only works with comments which are terminated with the
+end of the line (like Java's @code{//address@hidden code class=text
+ comment).
address@hidden itemize
+
+The comment decoration style is highly customizable and can be controlled by
+
address@hidden
address@hidden
+The prefix argument given to the two commands.
address@hidden
+The existing comment decoration style when present.
address@hidden
+Determined by the indentation or the repetition of a single-character comment
+start (like Emacs-Lisp's @code{;address@hidden code class=text
+).
address@hidden itemize
+
+For more on comments @xref{Comments}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden updating,,,Basics
address@hidden  Updating a Buffer
address@hidden 
--------------------------------------------------------------------------------
+A buffer is automatically updated according to some rules when saving
+the file.  This updating can be invoked explicitly by selecting the menu
+entry @kbd{Update Buffer} in the new submenu @kbd{Comments} .
+
address@hidden
address@hidden
+Update the file name in the first three lines of the buffer if the file name is
+indicated by @code{@@(#) @address@hidden code class=text
+ or
address@hidden;;; @var{FileName} address@hidden code class=text
+ where
address@hidden;;;address@hidden code class=text
+ stands for any comment start (with optional
+repetition of a single-character comment start).
address@hidden
+Update the date if it is the last text inside the
address@hidden@c code class=html
+ element of a HTML buffer.
address@hidden
+Automatic updating is optional, as is user confirmation for it.  Automatic
+updating can be disabled for buffers whose file name matches a regular
+expression.
address@hidden
+If nothing will be changed by the updating, there will be no user confirmation
+and the buffer will not be marked as modified.
address@hidden itemize
+
address@hidden template-update-buffer
address@hidden defopt
address@hidden template-auto-update
address@hidden defopt
address@hidden template-update-buffer-alist
address@hidden defopt
address@hidden template-header-regexp-alist
address@hidden defopt
+
address@hidden Advanced,,,Top  
address@hidden Templates for advanced users
+
address@hidden
+* Customization:: Templates customization.
address@hidden menu
+
address@hidden Customization,,,Advanced
address@hidden Templates customization
+
address@hidden
+* Expansion:: Customization of keyword expansion rules.
+* Derivation:: Customization of how templates are derived.
+* Comments:: Customization of comments.
address@hidden menu
+
address@hidden Expansion,,,Customization
address@hidden Customization of keyword expansion rules
+
address@hidden {Interactive Command} template-new-file {file template with-undo}
+Open a new file @var{file} by using a @var{template}.
+Using a template for creating a new file consists of, steps 1 to 3 are
+only executed when called interactively:
address@hidden
address@hidden
+Prompt for the name of the new file.
address@hidden
+Template derivation: suggest a reasonable template file to the user see
address@hidden
address@hidden
+File name refinement: e.g., if the given file name is @file{exercise}
+and there are two files @file{exercise1.tex} and @file{exercise2.tex} in
+the same directory and if we have a template @file{exercise.tex.tpl},
+the file name is refined to @file{exercise3.tex}.  This is turned off
+when @kbd{C-x t} is called with a prefix argument.
address@hidden
+Template insertion: insert the template file into the empty buffer.
address@hidden
+Read per-template expansion definition section starting at
address@hidden and delete it.
address@hidden
+Display: before message in @code{template-message-buffer}.
address@hidden
+Execute pre-expansion commands defined in the definition section.
address@hidden
+Set local variables defined in the definition section.
address@hidden
+Expansion: expand the expansion forms (text matched by
address@hidden) They are defined in the definition
+section, in @code{template-expansion-alist}, or provided by default,
+see @code{template-expansion-regexp} and
address@hidden
address@hidden
+Execute post-expansion commands defined in the definition section.
address@hidden
+Run @code{normal-mode} and functions in @code{find-file-hooks}.
address@hidden
+Update header according to @command{template-update-header} with
address@hidden Vincent: What is this if-exists argument ?
+argument @code{if-exists}.
address@hidden
+Display: after message in @code{template-message-buffer}.
address@hidden
+Report: display a temporary message at point defined in the definition
+section and an automatically generated message in the minibuffer area,
+see @code{template-message-timeout}.
address@hidden enumerate
+If optional @var{with-undo} is non-nil, store corresponding changes in
address@hidden  If @var{file} is nil, the buffer for @var{file} has
+already been created and the accessible part will be replaced by the
+expanded template.  If @var{template} is nil (empty input when called
+interactively), do not use a template.
address@hidden deffn
+
address@hidden template-auto-insert
address@hidden defopt
+
address@hidden Derivation,,,Customization
address@hidden Customization of how templates are derived
+
address@hidden template-derivation-alist
address@hidden defopt
+
address@hidden Comments,,,Customization
address@hidden Customization of comments
+
address@hidden template-single-comment
address@hidden defopt
+
address@hidden {Interactive command} template-block-comment arg
+It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> <Comment> <Decorate 
Comment Block>}.
+
+Decorate the current block of comment-only lines with dashes and alike.
+That is, surround the the contiguous comment-only lines around point
+with extra lines containing dashes and alike and to put the correct
+number of newlines around the block.
+
+Barf if the comment syntax at point has a non-empty @code{comment-end} or if
+point is not in a comment-only line.
+
+A block comment consists of all neighboring lines which start with
+spaces and @code{comment-start}.  If @code{comment-start} is a string of 
length 1,
+the number of repetitions of @code{comment-start} must be the same or larger
+than in the line where the command is invoked from, too.
+
+Prefix argument @var{arg} and @code{template-comment-specification} determines 
the
+comment style to use.  The length of the separator line is determined by
address@hidden
+
+This command can also be used with point in an empty line after a block
+comment.  A second invocation of this command directly after a
+successful invocation deletes the remaining empty lines from the current
+line on.
address@hidden deffn
+
address@hidden template-comment-specification-alist
+List of specifications for comment functions.  Each specification at
address@hidden, starting at 1, is a list @code{(@var{separator}
address@hidden @var{after-block} @var{DELETE-LINES})}
+
address@hidden is the string which is inserted repeatedly by commands
address@hidden C-=} and @kbd{C-x C-;} up to @code{template-max-column}.
+
+After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} after the comment block
+and inserts string @var{after-block} at the end of the block and
address@hidden at the front of the block.
+
+The specification @var{level} to use is determined by:
address@hidden
address@hidden
+If the prefix argument is non-nil and its numeric value is > 0, this
+value is the @var{level}.
address@hidden
+If the prefix argument is nil, and there is an old comment style, use
+old comment style.
address@hidden
+If @code{template-comment-specification-special} is a function or the
+current major mode has a property with this name and its value is a
+function, this function returns the specification.
address@hidden
+If @code{comment-end} is empty and @code{comment-start} is a string of
+length 1: @var{level} is number of repetitions of @code{comment-start}
+at the beginning of the line.  Otherwise, if the correctly indented line
+starts at the beginning of the line, @var{level}=3, else @var{level}=2.
address@hidden enumerate
address@hidden defopt
+
+
address@hidden Indexes,,,Top  
address@hidden Indexes for commands, keyword, and variable
+
address@hidden
+* Keyword Index:: Keyword Index.
+* Command Index:: Command Index.
+* Variable Index:: Customizable Variable Index.
address@hidden menu
+
address@hidden Keyword Index,,,Indexes
address@hidden Keyword Index
+
address@hidden Command Index,,,Indexes
address@hidden Keyword Index
+
address@hidden fn
+
address@hidden Variable Index,,,Indexes
address@hidden Variable Index
+
address@hidden vr
+
address@hidden News,,,Top  
address@hidden News for Package Template
+
address@hidden @asis
address@hidden Latest Version:
address@hidden (21 Aug 2003).
address@hidden Requirements:
address@hidden, @cite{XEmacs-20.2}, or higher.  
+
+No menu support for Emacs before Version 21.1.
address@hidden Licence: 
address@hidden General Public License}.
address@hidden table
+
address@hidden Changes with Release 3.1c
+
address@hidden
address@hidden
+Bug fix: on XEmacs, initialization would fail without menus "File" and "Edit" 
in menubar.
address@hidden
+Allow messages to be displayed in a separate buffer "*Template Messages*"
+instead at point.
address@hidden
+Correct and improve header updating.
address@hidden
+Extend use of @code{M-x template-single-comment}.
address@hidden
+Minor bug fixes.  Miscellaneous.
address@hidden itemize
+
+    
address@hidden Changes with Release 3.1
+
address@hidden
address@hidden
+Moved to SourceForge.net.  Less technical description on web page.
address@hidden
+Remove examples from distribution, they were more confusing than helpful.
address@hidden
+Bug fix: would sometimes indent the current line when using the menubar.
address@hidden
+Menus work with Emacs-21, too.  Rename some menu entries.
address@hidden
+Don't search further for remote templates.  Nuke this home/base directory
+stuff, stop search at root.
address@hidden
+Don't rely on command @command{ffap} to always add an entry to
address@hidden if the filename is read from terminal.  Special
+setup for @code{ffap} and @code{html-helper}.
address@hidden
+Make date/time formats work as names suggest.
address@hidden
+Command to insert & expand a template file.
address@hidden
+Allow user to define a choice in the definition section to be answered
+via @code{y-or-n-p}.
address@hidden
+Various miscellaneous improvements.  Minor bug fixes.
address@hidden itemize
+    
address@hidden Acknowledgements,,,Top  
+
+Christoph Wedler @uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+
+
address@hidden

Index: misc/res/texi_testkb/testkb.texi.first
===================================================================
RCS file: misc/res/texi_testkb/testkb.texi.first
diff -N misc/res/texi_testkb/testkb.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res/texi_testkb/testkb.texi.first      2 Aug 2009 13:13:17 -0000       
1.1
@@ -0,0 +1,202 @@
+\input texinfo @c -*-texinfo-*-
address@hidden testkb.info
address@hidden de
address@hidden ASCII
address@hidden on
address@hidden separate
address@hidden
address@hidden 
----------------------------------------------------------------------------
address@hidden Top,Overview,,(dir)
address@hidden Test 1
+Hier kann eine Erkl@"arung zum Thema stehen oder auch nicht.
+Noch mehr erkl@"arungen zu dem Thema.
address@hidden
+* Overview::.       Methode four.
address@hidden menu
address@hidden 
----------------------------------------------------------------------------
address@hidden Overview,,Top,Top
address@hidden Class
+Here you can read many things I need for this documentation.
+But more and more of this exploration can be done here.
address@hidden Overview
+Das ist ein Test @r{Roman Text in einer Umgebung}
+
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+
address@hidden dcvKat dcvClass dcvName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
address@hidden defcv
+
address@hidden {dfnKat} dfnName (dfnArgumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden
address@hidden Erstens
address@hidden Zweitens
address@hidden Drittens
address@hidden itemize
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden 2
address@hidden
+Das ist ein Beispiel in HTML
+Das ist ein Beispiel in HTML
+Das ist ein Beispiel in HTML
+Das ist ein Beispiel in HTML
address@hidden example
address@hidden
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden deffn
+
address@hidden {dfnKat1} dfnName1 (dfnArgumente11)
address@hidden {dfnKat2} dfnName2 (dfnArgumente12)
address@hidden {dfnKat3} dfnName3 (dfnArgumente13)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden deffn
+
address@hidden {divClass} {divExemplarVar}
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defivar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defivar.
address@hidden defivar
+
address@hidden dmcName (dmcArgumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defmac. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defmac.
address@hidden defmac
+
address@hidden {dmeClass} dmName (dmArguments)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defmethod. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defmethod.
address@hidden defmethod
+
address@hidden {dopKat} {dopClass} dopName (dopArgumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defop. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defop.
address@hidden defop
+
address@hidden {dptName}
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defopt. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defopt.
address@hidden defopt
+
address@hidden dspName (dspArgument)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defspec. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defspec.
address@hidden defspec
+
address@hidden {dtpKat} dtpType (dtpA1 dtpA2)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftp. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftp.
address@hidden deftp
+
address@hidden {PUBLIC} int EditLine (int col, int row)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypefn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypefn.
address@hidden deftypefn
+
address@hidden int FunktionEins (int col, int row)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypefun. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypefun.
address@hidden deftypefun
+
address@hidden {dtmClass} int dtmName (int col, int row)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypemethod. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypemethod.
address@hidden deftypemethod
+
address@hidden DataType VarName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypevar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypevar.
address@hidden deftypevar
+
address@hidden {dtiv} DataType VarName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypeivar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypeivar.
address@hidden deftypeivar
+
address@hidden {dtv} DataType VarName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypevr. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypevr.
address@hidden deftypevr
+
address@hidden FuntionName (Argumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defun. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defun.
address@hidden defun
+
address@hidden VariablenName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defvar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defvar.
address@hidden defvar
+
address@hidden {dvrKat} dvrName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defvr. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defvr.
address@hidden defvr
+
address@hidden {dtypeopCat} deftypeopClass deftypeopType deftypeopName 
deftypeopArgs
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypeop. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypeop.
address@hidden deftypeop
+
address@hidden Indizes
address@hidden Konzept Index
address@hidden cp
address@hidden Funktionen Index
address@hidden fn
address@hidden Programme Index
address@hidden pg
address@hidden Tasten Index
address@hidden ky
address@hidden Var Index
address@hidden vr
address@hidden
address@hidden

Index: misc/res/texi_verbatim_html/verbatim_html.texi.first
===================================================================
RCS file: misc/res/texi_verbatim_html/verbatim_html.texi.first
diff -N misc/res/texi_verbatim_html/verbatim_html.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res/texi_verbatim_html/verbatim_html.texi.first        2 Aug 2009 
13:13:17 -0000       1.1
@@ -0,0 +1,283 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top,First node,(dir)
address@hidden Tests
address@hidden
+* First node::    node 1
+* description: node @'{a}.    node with braces
+* node: (manual)A node. node in another manual
+
+a verbatim in menu comment @verbatim verbatim on same line than @verbatim
+
+bidule
+
address@hidden verbatim
+
+* node d@'a::       node without braces
address@hidden menu
+
+Tests for environments not matching
+
address@hidden
+A quotation
address@hidden cartouche
+
address@hidden {Function Reference} print_navigation $filehandle
+Text
address@hidden deftypefun
+
address@hidden
address@hidden item
+line
address@hidden vtable
+
address@hidden @emph
address@hidden ref
address@hidden
+example
address@hidden display
address@hidden table
+
+
+
address@hidden First node
address@hidden first node chapter
+
+
+A list with bullet
+Before itemize, in that case @@bullet isn'right, one needs @@address@hidden@} 
(in info) @itemize @bullet{} @c segfault <- @item on the same line that itemize
address@hidden on the same line than item
+some text
address@hidden
+more text @end itemize
+
+A list with text before first @@item:
+
address@hidden @bullet
+text @item more
+text
address@hidden itemize
+
+a verbatim, not first on the line @verbatim text following @verbatim
+
+text
+
+
+@@@@ @ text before @end  verbatim @end verbatim Text following end verbatim, 
must be exactly one space 
+between end and verbatim. @@end verbatim doesn't need to begin at beginning 
+of line.
+
+In tex, @@end verbatim must be on its own on a line.
+
+A verbatim with begin and end on its own line
address@hidden
+verbatim @samp{item}
+
address@hidden verbatim
+
+
+Now html  @html 
+<b>
+some html </b> 
address@hidden html bidule ignored
+
+@@end html begins the line, and there must be exactly one space between @@end
+and html and thing following @@end html are ignored in info. Strangely
+the empty line following @@end html is ignored but spaces are inserted.
+
+Now html valid for @TeX{}  @html 
+<b>
+some html </b> 
address@hidden html 
+Some text one the line following @@end html
+
+And html on it's own line
+
address@hidden
+<tt> an html tt</tt>
address@hidden html
+
+
+A sc: @sc{ieee}, and another one in example:
address@hidden
address@hidden
address@hidden example
+
+ignore  bidule ignore
+
+Ignore is the same than @@html.
+
+Now ifnothtml on same line 
+@@end ifnothtml doesn't need to begin the line, and there can be more
+than one space between @@end and ifnothtml, but nothing more
+on the line.
+
+Text on the line before ifnothtml with text following,
+Text on the line following ifnothtml.
+
+Text on the line before ifnothtml without text following,
+Text on the line following ifnothtml.
+
+Text on the line before ifnothtml,
+Text on the line following empty ifnothtml
+
+
address@hidden has problems with the ftable.
+
+an ftable on same line @ftable @bullet
address@hidden fun1
address@hidden fun2
+fun1 et fun2 @item more fun
+text on the same line than end   @end ftable
+works like @@ifnothtml
+
address@hidden outside format.
+
address@hidden outside format.
+
address@hidden address@hidden
+truc before table beginning @item first cell @tab ignored cell
address@hidden second row
address@hidden multitable
+
+before bad  multitable @multitable 6 7
address@hidden 1-1 @tab 1-2 @address@hidden@item 3-1 @tab 3-2 @end multitable
+
+right multitable
address@hidden @columnfractions 6 7
address@hidden 1-1 @tab 1-2 @address@hidden@item 3-1 @tab 3-2 @end multitable
+
+Columnfraction multitable with an ignored cell
address@hidden @columnfractions 0.3 0.4
address@hidden 1-1 @tab 1-2 @tab 1-3 (ignored)
address@hidden multitable
+
+multitable beginning with @@tab
address@hidden address@hidden@verb{.something.}}} {sec}
address@hidden after first tab 
address@hidden new line
address@hidden multitable
+
+A flushright
address@hidden some text flushed right
address@hidden flushright
+
+A center @center Centered line
+And a center after empty line
+
address@hidden centered line after empty line
+
+And a center at end of line @center
+And an empty center @center   
+
+An empty flushright @flushright
+
address@hidden flushright
+
+A verb follows:
+
address@hidden' a little
+
+very little
+verb '}
+
+another with space as delimiter
+
address@hidden what@@ }
+
+@@verb followed by end of line seems incorrect.
+Now verb delimited with *, with an empty line, a comment and @@samp:
+
address@hidden
+verb @c comment
+
+and samp @samp{text }
+*}
+
+
+
address@hidden node @'{a}, node d@'a, First node, Top
address@hidden node 'a with braces
+In the node with braces
+
+A footnote with an empty line within.
address@hidden empty line
+
+before before} 
+
+Now a ref with a footnote within, there aren't 2 paragraphes in the footnote
+in that case in info. tex doesn't like the paragraph break in the ref
address@hidden 
+node, within ref a footnote @footnote{with empty line
+
+before before}}.
+
+Conversely, a ref in a footnote
address@hidden This is a ref @ref{First node} }
+
+A footnote with an example
address@hidden
address@hidden
+
+
+An example
+
address@hidden example
+}
+
+
+Some @@verbatim, @@verb and @@ignore within an xref, very hard for @TeX{}:
address@hidden node, 
address@hidden
+
+some
+verbatim   @@
+text
+within an xref
+
address@hidden verbatim
+
+
+and now verb delimited with * with an empty line a comment and @@samp
address@hidden
+verb @c comment
+
+and samp @samp{text }
+next line
+*}
+
+last ignored sentence
+
+}.
+
address@hidden node,
+no verb}.
+
address@hidden node d@'a,, node @'{a}, Top
address@hidden node 'a without braces
address@hidden
+* node::       node 
address@hidden menu
+
address@hidden node,,,
address@hidden node
+
+A node with gggggggg
+before example @example after example
+
+the example
+before end example  @end example 
+after end example
+
+Text only after the end
+
address@hidden
+Example
address@hidden example text following end example.
+
address@hidden category name args
+Deffn.
address@hidden deffn text following end deffn.
+
address@hidden
address@hidden

Index: misc/res/texi_viper/viper.texi.first
===================================================================
RCS file: misc/res/texi_viper/viper.texi.first
diff -N misc/res/texi_viper/viper.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res/texi_viper/viper.texi.first        2 Aug 2009 13:13:17 -0000       
1.1
@@ -0,0 +1,4486 @@
+% -*-texinfo-*-
+\input texinfo
+
address@hidden Using viper.info instead of viper in setfilename breaks DOS.
address@hidden @setfilename viper
address@hidden @setfilename viper.info
address@hidden viper
+
address@hidden Editors
address@hidden
+* VIPER: (viper).       The newest Emacs VI-emulation mode.
+                          (also, A VI Plan for Emacs Rescue
+                           or the VI PERil.)
address@hidden direntry
+
+
+
address@hidden Distribution
+
address@hidden
+Copyright @copyright{} 1995, 1996, 1997, 2001, 2002 Free Software Foundation, 
Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
+
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software.  Copies published by the Free
+Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License.  If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+
address@hidden Top, Overview,, (DIR)
+
address@hidden Viper
+
+We believe that one or more of the following statements are adequate
+descriptions of Viper:
+
address@hidden
+Viper Is a Package for Emacs Rebels;
+it is a VI Plan for Emacs Rescue
+and/or a venomous VI PERil.
address@hidden example
+
+Technically speaking, Viper is a Vi emulation package for Emacs.  It
+implements all Vi and Ex commands, occasionally improving on them and
+adding many new features.  It gives the user the best of both worlds: Vi
+keystrokes for editing combined with the power of the Emacs environment.
+
+Viper emulates Vi at several levels, from the one that closely follows Vi
+conventions to the one that departs from many of them.  It has many
+customizable options, which can be used to tailor Viper to the work habits
+of various users.
+This manual describes Viper, concentrating on the differences from Vi and
+new features of Viper.
+
+Viper, formerly known as VIP-19, was written by Michael Kifer.  It is based
+on VIP version 3.5 by Masahiko Sato and VIP version 4.4 by Aamod Sane.
+About 15% of the code still comes from those older packages.
+
+Viper is intended to be usable without reading this manual --- the defaults
+are set to make Viper as close to Vi as possible.  At startup, Viper will
+try to set the most appropriate default environment for you, based on
+your familiarity with Emacs.  It will also tell you the basic GNU Emacs window
+management commands to help you start immediately.
+
+Although this manual explains how to customize Viper, some basic
+familiarity with Emacs Lisp is a plus.
+
+It is recommended that you read the Overview node.  The other nodes may
+be visited as needed.
+
+Comments and bug reports are welcome.
address@hidden@@cs.stonybrook.edu} is the current address for Viper bug reports.
+Please use the Ex command @kbd{:submitReport} for this address@hidden
+
+
address@hidden
+* Overview::                    Read for a smoother start
+* Improvements over Vi::        New features, Improvements
+* Customization::               How to customize Viper
+* Commands::                    Vi and Ex Commands
+
+* Key Index::                   Index of Vi and Ex Commands
+* Function Index::              Index of Viper Functions
+* Variable Index::              Index of Viper Variables
+* Package Index::               Index of Packages Mentioned in this Document
+* Concept Index::               Vi, Ex and Emacs concepts
+
+* Acknowledgments::
address@hidden menu
+
address@hidden Overview,Improvements over Vi,Top,Top
address@hidden Overview of Viper
+
+Viper is a Vi emulation on top of Emacs.  At the same time, Viper provides a
+virtually unrestricted access to Emacs facilities.  Perfect compatibility
+with Vi is possible but not desirable.  This chapter tells you about the
+Emacs ideas that you should know about, how to use Viper within Emacs and
+some incompatibilities.
+
+This manual is written with the assumption that you are an experienced Vi
+user who wants to switch to Emacs while retaining the ability to edit files
+Vi style. Incredible as it might seem, there are experienced Emacs users
+who use Viper as a backdoor into the superior (as every Vi user already knows)
+world of Vi! These users are well familiar with Emacs bindings and prefer them
+in some cases, especially in the Vi Insert state. John Hawkins
+<jshawkin@@eecs.umich.edu> has provided a set of customizations, which
+enables additional Emacs bindings under Viper.  These customizations can be
+included in your @file{~/.viper} file and are found at the following URL:
address@hidden://www.eecs.umich.edu/~jshawkin/viper-sample}.
+
address@hidden
+* Emacs Preliminaries::         Basic concepts in Emacs.
+* Loading Viper::               Loading and Preliminary Configuration.
+* States in Viper::             Viper has four states orthogonal to Emacs
+                                modes.
+* The Minibuffer::              Command line in Emacs.
+* Multiple Files in Viper::     True multiple file handling.
+* Unimplemented Features::      That are unlikely to be implemented.
address@hidden menu
+
address@hidden Emacs Preliminaries, Loading Viper, Overview, Overview
address@hidden Emacs Preliminaries
+
address@hidden buffer
address@hidden point
address@hidden mark
address@hidden text
address@hidden looking at
address@hidden end (of buffer)
address@hidden end (of line)
address@hidden region
+
+Emacs can edit several files at once.  A file in Emacs is placed in a
address@hidden that usually has the same name as the file.  Buffers are also 
used
+for other purposes, such as shell interfaces, directory editing, etc.
address@hidden,,Directory Editor,emacs,The
+Gnu Emacs Manual}, for an address@hidden
+
+A buffer has a distinguished position called the @dfn{point}.
+A @dfn{point} is always between 2 characters, and is @dfn{looking at}
+the right hand character.  The cursor is positioned on the right hand
+character.  Thus, when the @dfn{point} is looking at the end-of-line,
+the cursor is on the end-of-line character, i.e.@: beyond the last
+character on the line.  This is the default Emacs address@hidden
+
+The default settings of Viper try to mimic the behavior of Vi, preventing
+the cursor from going beyond the last character on the line.  By using
+Emacs commands directly (such as those bound to arrow keys), it is possible
+to get the cursor beyond the end-of-line.  However, this won't (or
+shouldn't) happen if you restrict yourself to standard Vi keys, unless you
+modify the default editing style.  @address@hidden
+
+In addition to the @dfn{point}, there is another distinguished buffer
+position called the @dfn{mark}.  @xref{Mark,,Mark,emacs,The GNU Emacs
+manual}, for more info on the mark.  The text between the @dfn{point} and
+the @dfn{mark} is called the @dfn{region} of the buffer.  For the Viper
+user, this simply means that in addition to the Vi textmarkers a--z, there
+is another marker called @dfn{mark}.  This is similar to the unnamed Vi
+marker used by the jump commands @kbd{``} and @kbd{''}, which move the
+cursor to the position of the last absolute jump.  Viper provides access to
+the region in most text manipulation commands as @kbd{r} and @kbd{R} suffix
+to commands that operate on text regions, e.g., @kbd{dr} to delete region,
+etc.
+
+Furthermore, Viper lets Ex-style commands to work on the current region.
+This is done by typing a digit argument before @kbd{:}.  For instance,
+typing @kbd{1:} will propmt you with something like @emph{:123,135},
+assuming that the current region starts at line 123 and ends at line
+135.  There is no need to type the line numbers, since Viper inserts them
+automatically in front of the Ex command.
+
address@hidden, for more address@hidden
+
address@hidden window
address@hidden mode line
address@hidden buffer information
address@hidden Minibuffer
address@hidden command line
address@hidden buffer (modified)
+
+Emacs divides the screen into tiled @dfn{windows}.  You can see the
+contents of a buffer through the window associated with the buffer.  The
+cursor of the screen is positioned on the character after @dfn{point}.
+Every window has a @dfn{mode line} that displays information about the buffer.
+You can change the format of the mode
+line, but normally if you see @samp{**} at the beginning of a mode line it
+means that the buffer is @dfn{modified}.  If you write out the contents of
+a buffer to a file, then the buffer will become not modified.  Also if
+you see @samp{%%} at the beginning of the mode line, it means that the file
+associated with the buffer is write protected.  The mode line will also
+show the buffer name and current major and minor modes (see below).
+A special buffer called @dfn{Minibuffer} is displayed as the last line
+in a Minibuffer window.  The Minibuffer window is used for command input
+output.  Viper uses Minibuffer window for @kbd{/} and @kbd{:}
address@hidden
+
address@hidden mode
address@hidden keymap
address@hidden local keymap
address@hidden global keymap
address@hidden major mode
address@hidden minor mode
+
+An Emacs buffer can have a @dfn{major mode} that customizes Emacs for
+editing text of a particular sort by changing the functionality of the keys.
+Keys are defined using a @dfn{keymap} that records the bindings between
+keystrokes and
+functions.  The @dfn{global keymap} is common to all the
+buffers.  Additionally, each buffer has its @dfn{local keymap} that determines 
the
address@hidden of the buffer.  If a function is bound to some key in the local
+keymap then that function will be executed when you type the key.
+If no function is bound to a key in the
+local map, however, the function bound to the key in the global map
+will be executed.  @xref{Major Modes,Major Modes,Major Modes,emacs,The
+GNU Emacs Manual}, for more address@hidden
+
+A buffer can also have a @dfn{minor mode}.  Minor modes are options that
+you can use or not.  A buffer in @code{text-mode} can have
address@hidden as minor mode, which can be turned off or on at
+any time.  In Emacs, a minor mode may have it own keymap,
+which overrides the local keymap when the minor mode is turned on.  For
+more information, @pxref{Minor Modes,Minor Modes,Minor Modes,emacs,The
+GNU Emacs Manual} @refill
+
address@hidden Viper as minor mode
address@hidden Control keys
address@hidden Meta key
+
+Viper is implemented as a collection of minor modes.  Different minor modes
+are involved when Viper emulates Vi command mode, Vi insert mode, etc.
+You can also turn Viper on and off at any time while in Vi command mode.
address@hidden in Viper}, for
+more address@hidden
+
+Emacs uses Control and Meta modifiers.  These are denoted as C and M,
+e.g.@: @kbd{^Z} as @kbd{C-z} and @kbd{Meta-x} as @kbd{M-x}.  The Meta key is
+usually located on each side of the Space bar; it is used in a manner
+similar to the Control key, e.g., @kbd{M-x} means typing @kbd{x} while
+holding the Meta key down.  For keyboards that do not have a Meta key,
address@hidden is used as Meta.  Thus @kbd{M-x} is typed as @address@hidden
+x}.  Viper uses @key{ESC} to switch from Insert state to Vi state.  Therefore
+Viper defines @kbd{C-\} as its Meta key in Vi state.  @xref{Vi State}, for
+more address@hidden
+
+Emacs is structured as a lisp interpreter around a C core.  Emacs keys
+cause lisp functions to be called.  It is possible to call these
+functions directly, by typing @kbd{M-x function-name}.
+
address@hidden Loading Viper, States in Viper, Emacs Preliminaries, Overview
address@hidden Loading Viper
+
+The most common way to load it automatically is to include the following
+lines (in the given order!):
+
address@hidden
+(setq viper-mode t)
+(require 'viper)
address@hidden lisp
+
address@hidden
+in your @file{~/.emacs} file.  The @file{.emacs} file is placed in your
+home directory and it is be executed every time you invoke Emacs.  This is
+the place where all general Emacs customization takes place.  Beginning with
+version 20.0, Emacsen have an interactive interface, which simplifies the
+job of customization significantly.
+
+Viper also uses the file @file{~/.viper} for Viper-specific customization.
+The location of Viper customization file can be changed by setting the
+variable @code{viper-custom-file-name} in @file{.emacs} @emph{prior} to loading
+Viper.
+
+The latest versions of Emacs have an interactive customization facility,
+which allows you to (mostly) bypass the use of the @file{.emacs} and
address@hidden files. You can reach this customization
+facility from within Viper's VI state by executing the Ex command
address@hidden:customize}.
+
+Once invoked, Viper will arrange to bring up Emacs buffers in Vi state
+whenever this makes sense.
address@hidden that Change Keymaps}, to find out when forcing Vi command state
+on a buffer may be counter-productive.
+
+Even if your @file{.emacs} file does not invoke Viper automatically,
+you can still load Viper and enter the Vi command state by typing the
+following from within Emacs:
+
address@hidden
+M-x viper-mode
address@hidden lisp
+
+When Emacs first comes up, if you have not specified a file on the
+command line, it will show the @samp{*scratch*} buffer, in the
address@hidden Interaction} mode.  After you invoke Viper, you can start
+editing files by using @kbd{:e}, @kbd{:vi}, or @kbd{v} commands.
+(@xref{File and Buffer Handling}, for more information on @kbd{v} and other
+new commands that, in many cases, are more convenient than @kbd{:e},
address@hidden:vi}, and similar old-style Vi commands.)@refill
+
+Finally, if at some point you would want to de-Viperize your running
+copy of Emacs after Viper has been loaded, the command @kbd{M-x
+viper-go-away} will do it for you.  The function @code{toggle-viper-mode}
+toggles Viperization of Emacs on and off.
+
address@hidden States in Viper, The Minibuffer, Loading Viper,Overview
address@hidden States in Viper
+
address@hidden @kbd{C-z}
address@hidden @key{ESC}
address@hidden @kbd{i}
address@hidden Emacs state
address@hidden Vi state
address@hidden Insert state
address@hidden Replace state
address@hidden Ex commands
address@hidden @code{viper-go-away}
address@hidden @code{toggle-viper-mode}
+
+Viper has four states, Emacs, Vi, Insert, and Replace.
+
address@hidden @samp
address@hidden Emacs state
+This is the state plain vanilla Emacs is normally in.  After you have loaded
+Viper, @kbd{C-z} will normally take you to Vi command state.  Another
address@hidden will take you back to Emacs state.  This toggle key can be
+changed, @pxref{Customization} You can also type @kbd{M-x viper-mode} to
+change to Vi address@hidden
+
+
+For users who chose to set their user level to 1 at Viper setup time,
+switching to Emacs state is deliberately made harder in order to not
+confuse the novice user.  In this case, @kbd{C-z} will either iconify Emacs
+(if Emacs runs as an application under X) or it will stop Emacs (if
+Emacs runs on a dumb terminal or in an Xterm window).
+
address@hidden Vi state
+This is the Vi command mode.  Any of the Vi commands, such as @kbd{i, o, a},
address@hidden, will take you to Insert state.  All Vi commands may
+be used in this mode.  Most Ex commands can also be used.
+For a full list of Ex commands supported by Viper, type
address@hidden:} and then @key{TAB}.  To get help on any issue, including the Ex
+commands, type @kbd{:help}.  This will invoke Viper Info
+(if it is installed).  Then typing @kbd{i} will prompt you for a topic to
+search in the index.  Note: to search for Ex commands in the index, you
+should start them with a @kbd{:}, e.g., @kbd{:WW}.
+
+In Viper, Ex commands can be made to work on the current Emacs region.
+This is done by typing a digit argument before @kbd{:}.
+For instance, typing @kbd{1:} will propmt you with something like
address@hidden:123,135}, assuming that the current region starts at line 123 and
+ends at line 135.  There is no need to type the line numbers, since Viper
+inserts them automatically in front of the Ex command.
+
address@hidden Insert state
+Insert state is the Vi insertion mode.  @key{ESC} will take you back to
+Vi state.  Insert state editing can be done, including auto-indentation.  By
+default, Viper disables Emacs key bindings in Insert state.
+
address@hidden Replace state
+Commands like @kbd{cw} invoke the Replace state.  When you cross the
+boundary of a replacement region (usually designated via a @samp{$} sign),
+it will automatically change to Insert state.  You do not have to worry
+about it.  The key bindings remain practically the same as in Insert
+state.  If you type @key{ESC}, Viper will switch to Vi command mode, 
terminating the
+replacement address@hidden
address@hidden table
+
address@hidden mode line
+
+The modes are indicated on the @dfn{mode line} as <E>, <I>, <V>, and <R>,
+so that the multiple modes do not confuse you.  Most of your editing can be
+done in Vi and Insert states.  Viper will try to make all new buffers be in Vi
+state, but sometimes they may come up in Emacs state.  @kbd{C-z}
+will take you to Vi state in such a case.  In some major modes, like Dired,
+Info, Gnus, etc., you should not switch to Vi state (and Viper will not
+attempt to do so) because these modes are not intended for text editing and
+many of the Vi keys have special meaning there.  If you plan to read news,
+browse directories, read mail, etc., from Emacs (which you should start
+doing soon!), you should learn about the meaning of the various keys in
+those special modes (typing @kbd{C-h m} in a buffer provides
+help with key bindings for the major mode of that buffer).
+
+If you switch to Vi in Dired or similar modes---no harm is done.  It is just
+that the special key bindings provided by those modes will be temporarily
+overshadowed by Viper's bindings.  Switching back to Viper's Emacs state
+will revive the environment provided by the current major mode.
+
+States in Viper are orthogonal to Emacs major modes, such as C mode or Dired
+mode.  You can turn Viper on and off for any Emacs state.  When Viper is turned
+on, Vi state can be used to move around.  In Insert state, the bindings for
+these modes can be accessed.  For beginners (users at Viper levels 1 and 2),
+these bindings are suppressed in Insert state, so that new users are not
+confused by the Emacs states.  Note that unless you allow Emacs bindings in
+Insert state, you cannot do many interesting things, like language
+sensitive editing.  For the novice user (at Viper level 1), all major mode
+bindings are turned off in Vi state as well.  This includes the bindings for
+key sequences that start with @kbd{C-c}, which practically means that all
+major mode bindings are unsupported.  @xref{Customization}, to find out how
+to allow Emacs keys in Insert state.
+
address@hidden
+* Emacs State::         This is the state you should learn more about when
+                        you get up to speed with Viper.
+* Vi State::            Vi commands are executed in this state.
+* Insert State::        You can enter text, and also can do sophisticated
+                        editing if you know enough Emacs commands.
+* Replace State::       Like Insert mode, but it is invoked via the
+                        replacement commands, such as cw, C, R, etc.
address@hidden menu
+
address@hidden Emacs State, Vi State, States in Viper, States in Viper
address@hidden Emacs State
+
address@hidden @kbd{C-z}
address@hidden Emacs state
+
+
+You will be in this mode only by accident (hopefully).  This is the state
+Emacs is normally in (imagine!!).  Now leave it as soon as possible by
+typing @kbd{C-z}.  Then you will be in Vi state (sigh of relief) :-).
+
+Emacs state is actually a Viperism to denote all the major and minor modes
+(@pxref{Emacs Preliminaries}) other than Viper that Emacs can be in.  Emacs
+can have several modes, such as C mode for editing C programs, LaTeX mode
+for editing LaTeX documents, Dired for directory editing, etc.  These are
+major modes, each with a different set of key-bindings.  Viper states are
+orthogonal to these Emacs major modes.  The presence of these language
+sensitive and other modes is a major win over Vi.  @xref{Improvements over
+Vi}, for address@hidden
+
+The bindings for these modes can be made available in the Viper Insert state
+as well as in Emacs state.  Unless you specify your user level as 1 (a
+novice), all major mode key sequences that start with @kbd{C-x} and
address@hidden are also available in Vi state.  This is important because major
+modes designed for editing files, such as cc-mode or latex-mode, use key
+sequences that begin with @kbd{C-x} and @kbd{C-c}.
+
+There is also a key that lets you temporarily escape to Vi command state
+from Emacs or Insert states: typing @kbd{C-c \} will let you execute a
+single Vi command while staying in Viper's Emacs or Insert state.
+In Insert state, the same can also be achieved by typing @kbd{C-z}.
+
+
address@hidden Vi State, Insert State, Emacs State, States in Viper
address@hidden Vi State
+
address@hidden Vi state
+
+This is the Vi command mode.  When Viper is in Vi state, you will see the sign
+<V> in the mode line.  Most keys will work as in Vi.  The notable
+exceptions are:
+
address@hidden @kbd
address@hidden C-x
address@hidden @kbd{C-x}
address@hidden is used to invoke Emacs commands, mainly those that do window
+management.  @kbd{C-x 2} will split a window, @kbd{C-x 0} will close a
+window.  @kbd{C-x 1} will close all other windows.  @kbd{C-xb} is used to
+switch buffers in a window, and @kbd{C-xo} to move through windows.
+These are about the only necessary keystrokes.
+For the rest, see the GNU Emacs Manual.
+
address@hidden C-c
address@hidden @kbd{C-c}
+For user levels 2 and higher, this key serves as a prefix key for the key
+sequences used by various major modes.  For users at Viper level 1, @kbd{C-c}
+simply beeps.
+
address@hidden C-g and C-]
address@hidden @kbd{C-g}
address@hidden @kbd{C-]}
+
+These are the Emacs @samp{quit} keys.
+There will be cases where you will have to
+use @kbd{C-g} to quit.  Similarly, @kbd{C-]} is used to exit
address@hidden Edits} in Emacs for which there is no comparable Vi
+functionality and no key-binding.  Recursive edits are indicated by
address@hidden brackets framing the modes on the mode line.
address@hidden Edit,Recursive
+Edit,Recursive Edit,emacs,The GNU Emacs Manual}.
+At user level 1, @kbd{C-g} is bound to @code{viper-info-on-file}
+function instead.
address@hidden
address@hidden C-\
address@hidden @kbd{C-\}
address@hidden Meta key
+
+Viper uses @key{ESC} as a switch between Insert and Vi states.  Emacs uses
address@hidden for Meta.  The Meta key is very important in Emacs since many
+functions are accessible only via that key as @kbd{M-x function-name}.
+Therefore, we need to simulate it somehow.  In Viper's Vi, Insert, and
+Replace states, the meta key is set to be @kbd{C-\}.  Thus, to get
address@hidden, you should type @kbd{C-\ x} (if the keyboard has no Meta key,
+which is rare these days).
+This works both in the Vi command state and in the Insert and Replace
+states.  In Vi command state, you can also use @kbd{\ @key{ESC}} as the
+meta key.
+
+Note: Emacs binds @kbd{C-\} to a function that offers to change the
+keyboard input method in the multilingual environment.  Viper overrides this
+binding.  However, it is still possible to switch the input method by typing
address@hidden C-\} in the Vi command state and @kbd{C-z \ C-\} in the Insert 
state.
+Or you can use the MULE menu in the menubar.
address@hidden table
address@hidden
+Other differences are mostly improvements.  The ones you should know
+about are:
+
address@hidden @samp
address@hidden Undo
address@hidden @kbd{u}
address@hidden will undo.  Undo can be repeated by the @kbd{.} key.  Undo itself
+can be undone.  Another @kbd{u} will change the direction.  The presence
+of repeatable undo means that @kbd{U}, undoing lines, is not very
+important.  Therefore, @kbd{U} also calls @code{viper-undo}.
address@hidden multiple undo
address@hidden undo
+
+
address@hidden Counts
+Most commands, @kbd{~}, @kbd{[[}, @kbd{p}, @kbd{/}, @dots{}, etc., take counts.
+
address@hidden ]] Just to balance parens
address@hidden Regexps
+Viper uses Emacs Regular Expressions for searches.  These are a superset of
+Vi regular
+expressions, excepting the change-of-case escapes @samp{\u}, @samp{\L},
address@hidden, etc.  @xref{Regular Expressions,,Regular Expressions,emacs,The
+GNU Emacs Manual}, for details.
+Files specified to @kbd{:e} use @code{csh} regular expressions
+(globbing, wildcards, what have you).
+However, the function @code{viper-toggle-search-style}, bound to @kbd{C-c /},
+lets the user switch from search with regular expressions to plain vanilla
+search and vice versa.  It also lets one switch from case-sensitive search
+to case-insensitive and back.
address@hidden Specials}, for more details.
address@hidden regular expressions
address@hidden vanilla search
address@hidden case-sensitive search
address@hidden case-insensitive search
address@hidden @kbd{C-c /}
+
address@hidden Ex commands
address@hidden Ex commands
+The current working directory of a buffer is automatically inserted in the
+minibuffer if you type @kbd{:e} then space.  Absolute filenames are
+required less often in Viper.  For file names, Emacs uses a convention that
+is slightly different from other programs.  It is designed to minimize the
+need for deleting file names that Emacs provides in its prompts.  (This is
+usually convenient, but occasionally the prompt may suggest a wrong file
+name for you.)  If you see a prompt @kbd{/usr/foo/} and you wish to edit the
+file @kbd{~/.viper}, you don't have to erase the prompt.  Instead, simply
+continue typing what you need.  Emacs will interpret @kbd{/usr/foo/~/.viper}
+correctly.  Similarly, if the prompt is @kbd{~/foo/} and you need to get to
address@hidden/bar/file}, keep typing.  Emacs interprets @kbd{~/foo//bar/} as
address@hidden/bar/file}, since when it sees @samp{//}, it understands that
address@hidden/foo/} is to be discarded.
+
+The command @kbd{:cd} will change the default directory for the
+current buffer.  The command @kbd{:e} will interpret the
+filename argument in @code{csh}.  @xref{Customization}, if you
+want to change the default shell.
+The command @kbd{:next} takes counts from
address@hidden:args}, so that @kbd{:rew} is obsolete.  Also, @kbd{:args} will 
show only
+the invisible files (i.e., those that are not currently seen in Emacs
+windows).
+
+When applicable, Ex commands support file completion and history.  This
+means that by typing a partial file name and then @key{TAB}, Emacs will try
+to complete the name or it will offer a menu of possible completions.
+This works similarly to Tcsh and extends the behavior of Csh.  While Emacs
+is waiting for a file name, you can type @kbd{M-p} to get the previous file
+name you typed.  Repeatedly typing @kbd{M-p} and @kbd{M-n} will let you
+browse through the file history.
+
+Like file names, partially typed Ex commands can be completed by typing
address@hidden, and Viper keeps the history of Ex commands.  After typing
address@hidden:}, you can browse through the previously entered Ex commands by
+typing @kbd{M-p} and @kbd{M-n}.  Viper tries to rationalize when it puts Ex
+commands on the history list.  For instance, if you typed @kbd{:w!@: foo},
+only @kbd{:w!} will be placed on the history list.  This is because the
+last history element is the default that can be invoked simply by typing
address@hidden: @key{RET}}.  If @kbd{:w!@: foo} were placed on the list, it 
would be all to
+easy to override valuable data in another file.  Reconstructing the full
+command, @kbd{:w!@: foo}, from the history is still not that hard, since Viper
+has a separate history for file names.  By typing @kbd{: M-p}, you will get
address@hidden:w!} in the Minibuffer.  Then, repeated @kbd{M-p} will get you 
through
+the file history, inserting one file name after another.
+
+In contrast to @kbd{:w!@: foo}, if the command were @kbd{:r foo}, the entire
+command will appear in the history list.  This is because having @kbd{:r}
+alone as a default is meaningless, since this command requires a file
+argument.
address@hidden
address@hidden table
address@hidden
+As Vi, Viper's destructive commands can be re-executed by typing 
address@hidden'.
+However, in addition, Viper keeps track of the history of such commands.  This
+history can be perused by typing @kbd{C-c M-p} and @kbd{C-c M-n}.
+Having found the appropriate command, it can be then executed by typing
address@hidden'.
address@hidden over Vi}, for more information.
+
address@hidden Insert State, Replace State, Vi State, States in Viper
address@hidden Insert State
+
address@hidden Insert state
+
+To avoid confusing the beginner (at Viper level 1 and 2), Viper makes only the
+standard Vi keys available in Insert state.  The implication is that
+Emacs major modes cannot be used in Insert state.
+It is strongly recommended that as soon as you are comfortable, make the
+Emacs state bindings visible (by changing your user level to 3 or higher).
address@hidden,
+to see how to do address@hidden
+
+Once this is done, it is possible to do quite a bit of editing in
+Insert state.  For instance, Emacs has a @dfn{yank} command, @kbd{C-y},
+which is similar to Vi's @kbd{p}.  However, unlike @kbd{p}, @kbd{C-y} can be
+used in Insert state of Viper.  Emacs also has a kill ring where it keeps
+pieces of text you deleted while editing buffers.  The command @kbd{M-y} is
+used to delete the text previously put back by Emacs' @kbd{C-y} or by Vi's
address@hidden command and reinsert text that was placed on the kill-ring 
earlier.
+
+This works both in Vi and Insert states.
+In Vi state, @kbd{M-y} is a much better alternative to the usual Vi's way
+of recovering the 10 previously deleted chunks of text.  In Insert state,
+you can
+use this as follows.  Suppose you deleted a piece of text and now you need
+to re-insert it while editing in Insert mode.  The key @kbd{C-y} will put
+back the most recently deleted chunk.  If this is not what you want, type
address@hidden repeatedly and, hopefully, you will find the chunk you want.
+
+Finally, in Insert and Replace states, Viper provides the history of
+pieces of text inserted in previous insert or replace commands.  These
+strings of text can be recovered by repeatedly typing @kbd{C-c M-p} or
address@hidden M-n} while in Insert or Replace state.  (This feature is disabled
+in the minibuffer: the above keys are usually bound to other histories,
+which are more appropriate in the minibuffer.)
+
+
address@hidden Meta key
+
+You can call Meta functions from Insert state.  As in Vi state, the Meta key
+is @kbd{C-\}.  Thus @kbd{M-x} is typed as @kbd{C-\ x}.
+
+Other Emacs commands that are useful in Insert state are @kbd{C-e}
+and @kbd{C-a}, which move the cursor to the end and the beginning of the
+current line, respectively.  You can also use @kbd{M-f} and @kbd{M-b},
+which move the cursor forward (or backward) one word.
+If your display has a Meta key, these functions are invoked by holding the
+Meta key and then typing @kbd{f} and @kbd{b}, respectively.  On displays
+without the Meta key, these functions are invoked by typing
address@hidden f} and @kbd{C-\ b} (@kbd{C-\} simulates the Meta key in Insert
+state, as explained above).
+
+The key @kbd{C-z} is sometimes also useful in Insert state: it allows you
+to execute a single command in Vi state without leaving the Insert state!
+For instance, @kbd{C-z d2w} will delete the next two words without leaving
+the Insert state.
+
+When Viper is in Insert state, you will see <I> in the mode line.
+
address@hidden Replace State,, Insert State, States in Viper
address@hidden Replace State
+
address@hidden Replace state
+
+This state is entered through Vi replacement commands, such as @kbd{C},
address@hidden, etc., or by typing @kbd{R}.  In Replace state, Viper puts <R> in
+the mode line to let you know which state is in effect.  If Replace state is
+entered through @kbd{R}, Viper stays in that state until the user hits
address@hidden  If this state is entered via the other replacement commands,
+then Replace state is in effect until you hit @key{ESC} or until you cross
+the rightmost boundary of the replacement region.  In the latter case, Viper
+changes its state from Replace to Insert (which you will notice by the
+change in the mode line).
+
+Since Viper runs under Emacs, it is possible to switch between buffers
+while in Replace state.  You can also move the cursor using the arrow keys
+(even on dumb terminals!)@: and the mouse.  Because of this freedom (which is
+unattainable in regular Vi), it is possible to take the cursor outside the
+replacement region.  (This may be necessary for several reasons, including
+the need to enable text selection and region-setting with the mouse.)
+
+The issue then arises as to what to do when the user
+hits the @key{ESC} key.  In Vi, this would cause the text between cursor and
+the end of the replacement region to be deleted.  But what if, as is
+possible in Viper, the cursor is not inside the replacement region?
+
+To solve the problem, Viper keeps track of the last cursor position while it
+was still inside the replacement region.  So, in the above situation, Viper
+would delete text between this position and the end of the replacement
+region.
+
address@hidden The Minibuffer,Multiple Files in Viper, States in Viper, Overview
address@hidden The Minibuffer
+
address@hidden Minibuffer
+
+The Minibuffer is where commands are entered in.  Editing can be done
+by commands from Insert state, namely:
+
address@hidden @kbd
address@hidden C-h
+Backspace
address@hidden C-w
+Delete Word
address@hidden C-u
+Erase line
address@hidden C-v
+Quote the following character
address@hidden @key{RET}
+Execute command
address@hidden C-g and C-]
+Emacs quit and abort keys.  These may be necessary.  @xref{Vi State}, for an
+explanation.
address@hidden M-p and M-n
+These keys are bound to functions that peruse minibuffer history.  The
+precise history to be perused depends on the context.  It may be the history
+of search strings, Ex commands, file names, etc.
address@hidden table
+
+Most of the Emacs keys are functional in the Minibuffer.  While in the
+Minibuffer, Viper tries to make editing resemble Vi's behavior when the
+latter is waiting for the user to type an Ex command.  In particular, you
+can use the regular Vi commands to edit the Minibuffer.  You can switch
+between the Vi state and Insert state at will, and even use the replace mode.
+Initially, the Minibuffer comes up in Insert state.
+
+Some users prefer plain Emacs bindings in the Minibuffer.  To this end, set
address@hidden to @code{nil} in @file{.viper}.
address@hidden, to learn how to do this.
+
+When the Minibuffer changes Viper states, you will notice that the appearance
+of the text there changes as well.  This is useful because the Minibuffer
+has no mode line to tell which Vi state it is in.
+The appearance of the text in the Minibuffer can be changed.
address@hidden Specials}, for more details.
+
address@hidden Multiple Files in Viper,Unimplemented Features,The 
Minibuffer,Overview
address@hidden Multiple Files in Viper
+
address@hidden multiple files
address@hidden managing multiple files
+
+Viper can edit multiple files.  This means, for example that you never need
+to suffer through @code{No write since last change} errors.
+Some Viper elements are common over all the files.
+
address@hidden @samp
address@hidden Textmarkers
address@hidden markers
address@hidden textmarkers
+Textmarkers remember @emph{files and positions}.
+If you set marker @samp{a} in
+file @file{foo}, start editing file @file{bar} and type @kbd{'a}, then
address@hidden WILL SWITCH TO FILE @file{foo}}.  You can see the contents of a
+textmarker using the Viper command @kbd{[<a-z>} where <a-z> are the
+textmarkers, e.g., @kbd{[a} to view marker @samp{a} address@hidden
address@hidden Repeated Commands
+Command repetitions are common over files.  Typing @kbd{!!} will repeat the
+last @kbd{!} command whichever file it was issued from.
+Typing @kbd{.} will repeat the last command from any file, and
+searches will repeat the last search.  Ex commands can be repeated by typing
address@hidden: @address@hidden
+Note: in some rare cases, that @kbd{: @key{RET}} may do something dangerous.
+However, usually its effect can be undone by typing @kbd{u}.
address@hidden Registers
address@hidden registers
+Registers are common to files.  Also, text yanked with @kbd{y} can be
+put back (@kbd{p}) into any file.  The Viper command @kbd{]<a-z>}, where <a-z> 
are
+the registers, can be used to look at the contents of a register, e.g.,
+type @kbd{]a} to view register @samp{a}.
+
+There is one difference in text deletion that you should be
+aware of.  This difference comes from Emacs and was adopted in Viper
+because we find it very useful.  In Vi, if you delete a line, say, and then
+another line, these two deletions are separated and are put back
+separately if you use the @samp{p} command.  In Emacs (and Viper), successive
+series of deletions that are @emph{not interrupted} by other commands are
+lumped together, so the deleted text gets accumulated and can be put back
+as one chunk.  If you want to break a sequence of deletions so that the
+newly deleted text could be put back separately from the previously deleted
+text, you should perform a non-deleting action, e.g., move the cursor one
+character in any direction.
address@hidden Absolute Filenames
address@hidden absolute file names
+The current directory name for a file is automatically prepended to the
+file name in any
address@hidden:e}, @kbd{:r}, @kbd{:w}, etc., command (in Emacs, each buffer has 
a
+current directory).
+This directory is inserted in the Minibuffer once you type space after
address@hidden:e, r}, etc.  Viper also supports completion of file names and Ex
+commands (@key{TAB}), and it keeps track of
+command and file history (@kbd{M-p}, @kbd{M-n}).
+Absolute filenames are required less
+often in Viper.
+
+You should be aware that Emacs interprets @kbd{/foo/bar//bla} as
address@hidden/bla} and @kbd{/foo/~/bar} as @kbd{~/bar}.  This is designed to
+minimize the need for erasing file names that Emacs suggests in its
+prompts, if a suggested file name is not what you wanted.
+
+The command @kbd{:cd} will change the default directory for the
+current Emacs buffer.  The Ex command @kbd{:e} will interpret the
+filename argument in @samp{csh}, by default.  @xref{Customization}, if you
+want to change this.
address@hidden table
+
address@hidden
+Currently undisplayed files can be listed using the @kbd{:ar} command.  The
+command @kbd{:n} can be given counts from the @kbd{:ar} list to switch to
+other files. For example, use `:n3' to move to the third file in that list.
+
address@hidden Unimplemented Features,,Multiple Files in Viper,Overview
address@hidden Unimplemented Features
+
+Unimplemented features include:
+
address@hidden @bullet
address@hidden
address@hidden:ab} and @kbd{:una} are not implemented, since
address@hidden:ab} is considered obsolete, since Emacs has much
+more powerful facilities for defining abbreviations.
address@hidden
address@hidden:set option?} is not implemented.  The current
address@hidden:set} can also be used to set Emacs variables.
address@hidden
address@hidden:se list} requires modification of the display code for Emacs, so
+it is not implemented.
+A useful alternative is @code{cat -t -e file}.  Unfortunately, it cannot
+be used directly inside Emacs, since Emacs will obdurately change @samp{^I}
+back to normal address@hidden
address@hidden itemize
+
address@hidden  node-name,  next,  previous,  up
address@hidden Improvements over Vi, Customization, Overview, Top
address@hidden Improvements over Vi
+
+Some common problems with Vi and Ex have been solved in Viper.  This
+includes better implementation of existing commands, new commands, and
+the facilities provided by Emacs.
+
address@hidden
+* Basics::                  Basic Viper differences, Multi-file effects.
+* Undo and Backups::        Multiple undo, auto-save, backups and changes
+* History::                 History for Ex and Vi commands.
+* Macros and Registers::    Keyboard Macros (extended ".")@: @@reg execution.
+* Completion::              Filename and Command Completion for Ex.
+* Improved Search::         Incremental Search and Buffer Content Search.
+* Abbreviation Facilities:: Normal Abbrevs, Templates, and Dynamic Abbrevs.
+* Movement and Markers::    Screen Editor movements, viewing textmarkers.
+* New Commands::            Commands that do not exist in Vi.
+* Useful Packages::         A Sampling of some Emacs packages, and things
+                            you should know about.
address@hidden menu
+
address@hidden Basics, Undo and Backups, Improvements over Vi, Improvements 
over Vi
address@hidden Basics
+
+The Vi command set is based on the idea of combining motion commands
+with other commands.  The motion command is used as a text region
+specifier for other commands.
+We classify motion commands into @dfn{point commands} and
address@hidden address@hidden
+
address@hidden point commands
+
+The point commands are:
+
address@hidden
address@hidden, @kbd{l}, @kbd{0},  @kbd{$}, @kbd{w}, @kbd{W}, @kbd{b}, @kbd{B},
address@hidden, @kbd{E}, @kbd{(}, @kbd{)}, @kbd{/}, @kbd{?}, @kbd{`}, @kbd{f},
address@hidden, @kbd{t}, @kbd{T}, @kbd{%}, @kbd{;}, @kbd{,}, @kbd{^}
address@hidden quotation
+
address@hidden line commands
+
+The line commands are:
+
address@hidden
address@hidden, @kbd{k}, @kbd{+}, @kbd{-}, @kbd{H}, @kbd{M}, @kbd{L}, 
@address@hidden,
address@hidden@}}, @kbd{G}, @kbd{'},  @kbd{[[}, @kbd{]]}, @kbd{[]}
address@hidden quotation
+
address@hidden region
address@hidden region specification
address@hidden expanding (region)
address@hidden describing regions
address@hidden movement commands
+
address@hidden
+If a point command is given as an argument to a modifying command, the
+region determined by the point command will be affected by the modifying
+command.  On the other hand, if a line command is given as an argument to a
+modifying command, the region determined by the line command will be
+enlarged so that it will become the smallest region properly containing the
+region and consisting of whole lines (we call this process @dfn{expanding
+the region}), and then the enlarged region will be affected by the modifying
+command.
+Text Deletion Commands (@pxref{Deleting Text}), Change commands
+(@pxref{Changing Text}), even Shell Commands (@pxref{Shell Commands})
+use these commands to describe a region of text to operate on.
+Thus, type @kbd{dw} to delete a word, @kbd{>@}} to shift a paragraph, or
address@hidden'afmt} to format a region from @samp{point} to textmarker
address@hidden
+
address@hidden r and R region specifiers
+
+Viper adds the region specifiers @samp{r} and @samp{R}.  Emacs has a
+special marker called @dfn{mark}.  The text-area between the current cursor
+position @dfn{point} and the @dfn{mark} is called the @dfn{region}.
address@hidden specifies the raw region and @samp{R} is the expanded region
+(i.e., the minimal contiguous chunk of full lines that contains the raw
+region).
address@hidden will now delete the region, @kbd{>r} will shift it, etc.
address@hidden,R} are not motion commands, however.  The special mark is set by
address@hidden and other commands.  @xref{Marking}, for more info.
+
+Viper also adds counts to most commands for which it would make sense.
+
+In the Overview chapter, some Multiple File issues were discussed
+(@pxref{Multiple Files in Viper}).  In addition to the files, Emacs has
+buffers.  These can be seen in the @kbd{:args} list and switched using
address@hidden:next} if you type @kbd{:set ex-cycle-through-non-files t}, or
+specify @code{(setq ex-cycle-through-non-files t)} in your @file{.viper}
+file.  @xref{Customization}, for details.
+
address@hidden Undo and Backups, History, Basics, Improvements over Vi
address@hidden Undo and Backups
+
address@hidden undo
+
+Viper provides multiple undo.  The number of undo's and the size is limited
+by the machine.  The Viper command @kbd{u} does an undo.  Undo can be
+repeated by typing @kbd{.} (a period).  Another @kbd{u} will undo the undo,
+and further
address@hidden will repeat it.  Typing @kbd{u} does the first undo, and changes 
the
+direction.
+
address@hidden backup files
address@hidden auto save
+
+Since the undo size is limited, Viper can create backup files and
+auto-save files.  It will normally do this automatically.  It is possible
+to have numbered backups, etc.  For details, @pxref{Backup,,Backup and
+Auto-Save,emacs,The GNU Emacs Manual} @refill
+
address@hidden [ balance parens
address@hidden viewing registers and markers
address@hidden registers
address@hidden markers
address@hidden textmarkers
+
+The results of the 9 previous changes are available in the 9 numeric
+registers, as in Vi.  The extra goody is the ability to @emph{view} these
+registers, in addition to being able to access them through @kbd{p} and
address@hidden (@xref{Insert State}, for details.)
+The Viper command @kbd{] register} will display the contents of any
+register, numeric or alphabetical.  The related command @kbd{[ textmarker}
+will show the text around the textmarker.  @samp{register} and 
@samp{textmarker}
+can be any letters from a through z.
address@hidden ] balance parens
+
address@hidden History,  Macros and Registers, Undo and Backups,Improvements 
over Vi
address@hidden History
+
address@hidden history
address@hidden Minibuffer
+
+History is provided for Ex commands, Vi searches, file names, pieces of
+text inserted in earlier commands that use Insert or Replace state, and for
+destructive commands in Vi state.  These are
+useful for fixing those small typos that screw up searches and @kbd{:s},
+and for eliminating routine associated with repeated typing of file names
+or pieces of text that need to be inserted frequently.
+At the @kbd{:} or @kbd{/} prompts in the Minibuffer, you can do the following:
+
address@hidden @kbd
address@hidden M-p and M-n
+To move to previous and next history items.  This causes the history
+items to appear on the command line, where you can edit them, or
+simply type Return to execute.
address@hidden M-r and M-s
+To search backward and forward through the history.
address@hidden @key{RET}
+Type @key{RET} to accept a default (which is displayed in the prompt).
address@hidden table
+
+The history of insertions  can be perused by
+typing @kbd{C-c M-p} and @kbd{C-c M-n} while in Insert or Replace state.
+The history of destructive Vi commands can be perused via the same keys
+when Viper is in Vi state.  @xref{Viper Specials}, for details.
+
+All Ex commands have a file history.  For instance, typing @kbd{:e}, space
+and then @kbd{M-p} will bring up the name of the previously typed file
+name.  Repeatedly typing @kbd{M-p}, @kbd{M-n}, etc., will let you browse
+through the file history.
+
+Similarly, commands that have to do with switching buffers
+have a buffer history, and commands that expect strings or regular
+expressions keep a history on those items.
+
address@hidden Macros and Registers,Completion,History,Improvements over Vi
address@hidden Macros and Registers
+
address@hidden keyboard macros
address@hidden macros
address@hidden registers
address@hidden register execution
+
+Viper facilitates the use of Emacs-style keyboard macros.  @kbd{@@#} will
+start a macro definition.  As you type, the commands will be executed, and
+remembered (This is called ``learn mode'' in some editors.)
address@hidden@@register} will complete the macro, putting it into 
@samp{register},
+where @samp{register} is any character from @samp{a} through @samp{z}.  Then
+you can execute this macro using @kbd{@@register}.  It is, of course,
+possible to yank some text into a register and execute it using
address@hidden@@register}.  Typing @kbd{@@@@}, @kbd{@@RET}, or @kbd{@@C-j} will
+execute the last macro that was executed using @kbd{@@address@hidden
+
+Viper will automatically lowercase the register, so that pressing the
address@hidden key for @kbd{@@} will not create problems.  This is for
address@hidden@@} macros and @kbd{"p} @emph{only}.  In the case of @kbd{y},
address@hidden"Ayy} will append to @emph{register a}.  For @kbd{[,],',`}, it
+is an error to use a Uppercase register name.
+
address@hidden [ balance parens
address@hidden viewing registers and markers
+
+The contents of a register can be seen by @kbd{]register}.  (@kbd{[textmarker}
+will show the contents of a textmarker).
address@hidden ] balance parens
+
address@hidden last keyboard macro
+
+The last keyboard macro can also be executed using
address@hidden, and it can be yanked into a register using @kbd{@@!register}.
+This is useful for Emacs style keyboard macros defined using @kbd{C-x(}
+and @kbd{C-x)}.  Emacs keyboard macros have more capabilities.
address@hidden Macros,,Keyboard Macros,emacs, The GNU Emacs Manual}, for
address@hidden
+
+Keyboard Macros allow an interesting form of Query-Replace:
address@hidden/pattern} or @kbd{n} to go to the next pattern (the query), 
followed by a
+Keyboard Macro execution @kbd{@@@@} (the replace).
+
+Viper also provides Vi-style macros.  @xref{Vi Macros}, for details.
+
+
address@hidden Completion, Improved Search, Macros and Registers, Improvements 
over Vi
address@hidden Completion
+
address@hidden completion
+
+Completion is done when you type @key{TAB}.  The Emacs completer does not
+grok wildcards in file names.  Once you type a wildcard, the completer will
+no longer work for that file name.  Remember that Emacs interprets a file name
+of the form @kbd{/foo//bar} as @kbd{/bar} and @kbd{/foo/~/bar} as
address@hidden/bar}.
+
address@hidden Improved Search, Abbreviation Facilities, Completion, 
Improvements over Vi
address@hidden Improved Search
+
address@hidden buffer search
address@hidden word search
+
+Viper provides buffer search, the ability to search the buffer for a region
+under the cursor.  You have to turn this on in @file{.viper} either by calling
+
address@hidden
+(viper-buffer-search-enable)
address@hidden example
+
address@hidden
+or by setting @code{viper-buffer-search-char} to, say, @kbd{f3}:
address@hidden
+(setq viper-buffer-search-char ?g)
address@hidden example
+
address@hidden
+If the user calls @code{viper-buffer-search-enable} explicitly (the first
+method), then @code{viper-buffer-search-char} will be set to @kbd{g}.
+Regardless of how this feature is enabled, the key
address@hidden will take movement commands, like
address@hidden,/,e}, to find a region and then search for the contents of that
+region.  This command is very useful for searching for variable names, etc.,
+in a program.  The search can be repeated by @kbd{n} or reversed by @kbd{N}.
+
address@hidden incremental search
+
+Emacs provides incremental search.  As you type the string in, the
+cursor will move to the next match.  You can snarf words from the buffer
+as you go along.  Incremental Search is normally bound to @kbd{C-s} and
address@hidden  @xref{Customization}, to find out how to change the bindings
+of @kbd{C-r or C-s}.
+For details, @pxref{Incremental Search,,Incremental
+Search,emacs,The GNU Emacs Manual} @refill
+
address@hidden query replace
+
+Viper also provides a query replace function that prompts through the
+Minibuffer.  It is invoked by the @kbd{Q} key in Vi state.
+
address@hidden mouse search
+
+On a window display, Viper supports mouse search, i.e., you can search for a
+word by clicking on it.  @xref{Viper Specials}, for details.
+
+Finally, on a window display, Viper highlights search patterns as it finds
+them.  This is done through what is known as @emph{faces} in Emacs.  The
+variable that controls how search patterns are highlighted is
address@hidden  If you don't want any highlighting at all, put
address@hidden
+(copy-face 'default 'viper-search-face)
address@hidden example
address@hidden @code{viper-search-face}
address@hidden
+in @file{~/.viper}.  If you want to change how patterns are highlighted, you
+will have to change @code{viper-search-face} to your liking.  The easiest
+way to do this is to use Emacs customization widget, which is accessible
+from the menubar.  Viper customization group is located under the
address@hidden customization group, which in turn is under the
address@hidden group (or simply by typing @kbd{:customize}).  All Viper
+faces are grouped together under Viper's 
address@hidden group.
+
+Try it: it is really simple!
+
address@hidden Abbreviation Facilities,Movement and Markers,Improved 
Search,Improvements over Vi
address@hidden Abbreviation Facilities
+
address@hidden abbrevs
+
+It is possible in Emacs to define abbrevs based on the contents of the
+buffer.
+Sophisticated templates can be defined using the Emacs abbreviation
+facilities.  @xref{Abbrevs,,Abbreviations,emacs,The GNU Emacs Manual}, for
+details.
+
address@hidden dynamic abbrevs
+
+Emacs also provides Dynamic Abbreviations.  Given a partial word, Emacs
+will search the buffer to find an extension for this word.  For instance,
+one can type @samp{Abbreviations} by typing @samp{A}, followed by a keystroke
+that completed the @samp{A} to @samp{Abbreviations}.  Repeated typing
+will search further back in the buffer, so that one could get
address@hidden by repeating the
+keystroke, which appears earlier in the text.  Emacs binds this to
address@hidden@key{ESC} /}, so you will have to find a key and bind the function
address@hidden to that key.
+Facilities like this make Vi's @kbd{:ab} command obsolete.
+
address@hidden Movement and Markers, New Commands, Abbreviation Facilities, 
Improvements over Vi
address@hidden Movement and Markers
+
address@hidden Ex style motion
address@hidden line editor motion
+
+Viper can be set free from the line--limited movements in Vi, such as @kbd{l}
+refusing to move beyond the line, @key{ESC} moving one character back,
+etc.  These derive from Ex, which is a line editor.  If your @file{.viper}
+contains
+
address@hidden
address@hidden(setq viper-ex-style-motion nil)}
address@hidden example
+
address@hidden
+the motion will be a true screen editor motion.  One thing you must then
+watch out for is that it is possible to be on the end-of-line character.
+The keys @kbd{x} and @kbd{%} will still work correctly, i.e., as if they
+were on the last character.
+
address@hidden @code{viper-syntax-preference}
address@hidden syntax table
+
+The word-movement commands @kbd{w}, @kbd{e}, etc., and the associated
+deletion/yanking commands, @kbd{dw}, @kbd{yw}, etc., can be made to
+understand Emacs syntax tables.  If the variable
address@hidden is set to @code{strict-vi} then
+the meaning of @emph{word} is the same as in
+Vi.  However, if the value is @code{reformed-vi} (the default) then the
+alphanumeric symbols will be those specified by the current Emacs syntax
+table (which may be different for different major modes) plus the
+underscore symbol @kbd{_}, minus some non-word symbols, like '.;,|, etc.
+Both @code{strict-vi} and @code{reformed-vi} work close to Vi in
+traditional cases, but @code{reformed-vi} does a better job when editing
+text in non-Latin alphabets.
+
+The user can also specify the value @code{emacs}, which would
+make Viper use exactly the Emacs notion of word.  In particular, the
+underscore may not be part of a word.  Finally, if
address@hidden is set to @code{extended}, Viper words would
+consist of characters that are classified as alphanumeric @emph{or} as
+parts of symbols.  This is convenient for writing programs and in many other
+situations.
+
address@hidden is a local variable, so it can have different
+values for different major modes.  For instance, in programming modes it can
+have the value @code{extended}.  In text modes where words contain special
+characters, such as European (non-English) letters, Cyrillic letters, etc.,
+the value can be @code{reformed-vi} or @code{emacs}.
+
+Changes to @code{viper-syntax-preference} should be done in the hooks to
+various major modes by executing @code{viper-set-syntax-preference} as in
+the following example:
+
address@hidden
+(viper-set-syntax-preference nil "emacs")
address@hidden example
+
address@hidden @code{viper-set-syntax-preference}
+
+The above discussion of the meaning of Viper's words concerns only Viper's
+movement commands.  In regular expressions, words remain the same as in
+Emacs.  That is, the expressions @code{\w}, @code{\>}, @code{\<}, etc., use
+Emacs' idea of what is a word, and they don't look into the value of
+variable @code{viper-syntax-preference}.  This is because Viper doesn't change
+syntax tables in fear of upsetting the various major modes that set these
+tables.
+
address@hidden textmarkers
+
+Textmarkers in Viper remember the file and the position, so that you can
+switch files by simply doing @kbd{'a}.  If you set up a regimen for using
+Textmarkers, this is very useful.  Contents of textmarkers can be viewed
+by @kbd{[marker}.  (Contents of registers can be viewed by @kbd{]register}).
+
address@hidden New Commands, Useful Packages, Movement and Markers, 
Improvements over Vi
address@hidden New Commands
+
+These commands have no Vi analogs.
+
address@hidden @kbd
address@hidden C-x, C-c
address@hidden @kbd{C-x}
address@hidden @kbd{C-c}
+These two keys invoke many important Emacs functions.  For example, if you
+hit @kbd{C-x} followed by @kbd{2}, then the current window will be split
+into 2.  Except for novice users, @kbd{C-c} is also set to execute an Emacs
+command from the current major mode.  @key{ESC} will do the same, if you
+configure @key{ESC} as Meta by setting @code{viper-no-multiple-ESC} to nil
+in @file{.viper}.  @xref{Customization}.  @kbd{C-\} in Insert, Replace, or Vi
+states will make Emacs think @kbd{Meta} has been address@hidden
address@hidden \
address@hidden @kbd{\}
+Escape to Emacs to execute a single Emacs command.  For instance,
address@hidden @key{ESC}} will act like a Meta key.
address@hidden Q
address@hidden @kbd{Q}
address@hidden query replace
address@hidden is for query replace.  By default,
+each string to be replaced is treated as a regular expression.  You can use
address@hidden(setq viper-re-query-replace nil)} in your @file{.emacs} file to
+turn this off.  (For normal searches, @kbd{:se nomagic} will work.  Note
+that @kbd{:se nomagic} turns Regexps off completely, unlike Vi).
address@hidden v
address@hidden V
address@hidden C-v
address@hidden @kbd{v}
address@hidden @kbd{V}
address@hidden @kbd{C-v}
+These keys are used to visit files.  @kbd{v} will switch to a buffer
+visiting file whose name can be entered in the Minibuffer.  @kbd{V} is
+similar, but will use a window different from the current window.
address@hidden is like @kbd{V}, except that a new frame (X window) will be used
+instead of a new Emacs window.
address@hidden #
address@hidden @kbd{#}
+If followed by a certain character @var{ch}, it becomes an operator whose
+argument is the region determined by the motion command that follows
+(indicated as <move>).
+Currently, @var{ch} can be one of @kbd{c}, @kbd{C}, @kbd{g}, @kbd{q}, and
address@hidden  For instance, @kbd{#qr} will prompt you for a string and then
+prepend this string to each line in the address@hidden
address@hidden # c
address@hidden @kbd{#c<move>}
address@hidden changing case
+Change upper-case characters in the region to lower-case
+(@code{downcase-region}).
+Emacs command @kbd{M-l} does the same for words.
address@hidden # C
address@hidden @kbd{#C<move>}
+Change lower-case characters in the region to upper-case.  For instance,
address@hidden C 3 w} will capitalize 3 words from the current point
+(@code{upcase-region}).
+Emacs command @kbd{M-u} does the same for words.
address@hidden # g
address@hidden @kbd{#g<move>}
+Execute last keyboard macro for each line in the region
+(@code{viper-global-execute})address@hidden
address@hidden # q
address@hidden @kbd{#q<move>}
+Insert specified string at the beginning of each line in the region
+(@code{viper-quote-region}).  The default string is composed of the comment
+character(s) appropriate for the current major mode.
address@hidden # s
address@hidden @kbd{#s<move>}
+Check spelling of words in the region (@code{spell-region}).
+The function used for spelling is determined from the variable
address@hidden
address@hidden @code{viper-spell-function}
address@hidden *
address@hidden @kbd{*}
+Call last keyboard macro.
address@hidden m .
+Set mark at point and push old mark off the ring
address@hidden m<
address@hidden m>
+Set mark at beginning and end of buffer, respectively.
address@hidden m,
+Jump to mark and pop mark off the ring.  @xref{Mark,,Mark,emacs,The GNU
+Emacs Manual}, for more info.
address@hidden ] register
address@hidden @kbd{]<a-z>}
+View contents of register
address@hidden [ textmarker
address@hidden @kbd{[<a-z>}
+View filename and position of textmarker
address@hidden @@#
address@hidden @@register
address@hidden @@!
address@hidden @kbd{@@#}
address@hidden @kbd{@@<a-z>}
address@hidden @kbd{@@!}
address@hidden keyboard macros
address@hidden register execution
+
+Begin/end keyboard macro.  @@register has a different meaning when used after
+a @kbd{@@#}.  @xref{Macros and Registers}, for details
address@hidden []
address@hidden @kbd{[]}
+Go to end of heading.
address@hidden g <@emph{movement command}>
+Search buffer for text delimited by movement command.  The canonical
+example is @kbd{gw} to search for the word under the cursor.
address@hidden Search}, for address@hidden
address@hidden C-g and C-]
address@hidden @kbd{C-g}
address@hidden @kbd{C-]}
+Quit and Abort Recursive edit.  These may be necessary on occasion.
address@hidden State}, for a reason.
address@hidden C-c C-g
address@hidden @kbd{C-c C-g}
+Hitting @kbd{C-c} followed by @kbd{C-g} will display the information on the
+current buffer.  This is the same as hitting @kbd{C-g} in Vi, but, as
+explained above, @kbd{C-g} is needed for other purposes in Emacs.
address@hidden C-c /
address@hidden @kbd{C-c /}
+Without a prefix argument, this command toggles
+case-sensitive/case-insensitive search modes and plain vanilla/regular
+expression search.  With the prefix argument 1, i.e.,
address@hidden C-c /}, this toggles case-sensitivity; with the prefix argument 
2,
+toggles plain vanilla search and search using
+regular expressions.  @xref{Viper Specials}, for alternative ways to invoke
+this function.
address@hidden vanilla search
address@hidden case-sensitive search
address@hidden case-insensitive search
+
address@hidden M-p and M-n
address@hidden @kbd{M-p}
address@hidden @kbd{M-n}
+In the Minibuffer, these commands navigate through the minibuffer
+histories, such as the history of search strings, Ex commands, etc.
+
address@hidden C-c M-p and C-c M-n
address@hidden @kbd{C-c M-p}
address@hidden @kbd{C-c M-n}
address@hidden Insertion history
address@hidden Insertion ring
address@hidden Command history
address@hidden Command ring
+
+In Insert or Replace state, these commands let  the user
+peruse the history of insertion strings used in previous insert or replace
+commands.  Try to hit @kbd{C-c M-p} or @kbd{C-c M-n} repeatedly and see what
+happens.  @xref{Viper Specials}, for more.
+
+In Vi state, these commands let the user peruse the history of Vi-style
+destructive commands, such as @kbd{dw}, @kbd{J}, @kbd{a}, etc.
+By repeatedly typing @kbd{C-c M-p} or @kbd{C-c M-n} you will cycle Viper
+through the recent history of Vi commands, displaying the commands one by
+one.  Once
+an appropriate command is found, it can be executed by typing address@hidden'.
+
+Since typing @kbd{C-c M-p} is tedious, it is more convenient to bind an
+appropriate function to a function key on the keyboard and use that key.
address@hidden Specials}, for details.
+
address@hidden Ex commands
address@hidden  @kbd{:args}
address@hidden  @kbd{:n}
address@hidden  @kbd{:pwd}
address@hidden  @kbd{:pre}
+The commands @kbd{:args}, @kbd{:next}, @kbd{:pre} behave
+differently.  @kbd{:pwd} exists to get current directory.
+The commands @kbd{:b} and @kbd{:B} switch buffers around.  @xref{File and
+Buffer Handling}, for details.
+There are also the new commands @kbd{:RelatedFile} and
address@hidden (which abbreviate to @kbd{R} and @kbd{P},
+respectively.  @xref{Viper Specials}, for details.
address@hidden @kbd{:RelatedFile}
address@hidden @kbd{:PreviousRelatedFile}
address@hidden table
+
+Apart from the new commands, many old commands have been enhanced.  Most
+notably, Vi style macros are much more powerful in Viper than in Vi.  @xref{Vi
+Macros}, for details.
+
address@hidden Useful Packages, ,New Commands, Improvements over Vi
address@hidden Useful Packages
+
+Some Emacs packages are mentioned here as an aid to the new Viper user, to
+indicate what Viper is capable of.
+A vast number comes with the standard Emacs distribution, and many more exist
+on the net and on the archives.
+
+This manual also mentions some Emacs features a new user
+should know about.  The details of these are found in the GNU Emacs
+Manual.
+
+The features first.  For details, look up the Emacs Manual.
+
address@hidden @samp
address@hidden Make
address@hidden make
address@hidden compiling
+
+Makes and Compiles can be done from the editor.  Error messages will be
+parsed and you can move to the error lines.
address@hidden Shell
address@hidden shell
address@hidden interactive shell
+You can talk to Shells from inside the editor.  Your entire shell session
+can be treated as a file.
address@hidden Mail
address@hidden email
address@hidden mail
+Mail can be read from and sent within the editor.  Several sophisticated
+packages exist.
address@hidden Language Sensitive Editing
+Editing modes are written for most computer languages in existence.  By
+controlling indentation, they catch punctuation errors.
address@hidden table
+
+The packages, below, represents a drop in the sea of special-purpose
+packages that come with standard distribution of Emacs.
+
address@hidden @samp
address@hidden Transparent FTP
address@hidden transparent ftp
address@hidden ange-ftp.el
address@hidden can ftp from the editor to files on other machines
+transparent to the user.
address@hidden RCS Interfaces
address@hidden version maintenance
address@hidden RCS
address@hidden vc.el
address@hidden for doing RCS commands from inside the editor
address@hidden Directory Editor
address@hidden dired
address@hidden dired.el
address@hidden for editing contents of directories and for navigating in
+the file system.
address@hidden Syntactic Highlighting
address@hidden font-lock
address@hidden font-lock.el
address@hidden for automatic highlighting various parts of a buffer
+using different fonts and colors.
address@hidden Saving Emacs Configuration
address@hidden desktop
address@hidden desktop.el
address@hidden for saving/restoring configuration on Emacs exit/startup.
address@hidden Spell Checker
address@hidden ispell
address@hidden ispell.el
address@hidden for spell checking the buffer, words, regions, etc.
address@hidden File and Buffer Comparison
address@hidden ediff
address@hidden ediff.el
address@hidden for finding differences between files and for applying
+patches.
address@hidden table
+
address@hidden
+Emacs Lisp archives exist on
address@hidden
+and @address@hidden
+
+
address@hidden Customization,Commands,Improvements over Vi,Top
address@hidden Customization
+
address@hidden customization
+
+Customization can be done in 2 ways.
+
address@hidden @bullet
address@hidden
address@hidden initialization
address@hidden .viper
+Elisp code in a @file{.viper} file in your home directory.  Viper
+loads @file{.viper} just before it does the binding for mode
+hooks.  This is recommended for experts only.
address@hidden
address@hidden .emacs
+Elisp code in your @file{.emacs} file before and after the @code{(require
+'viper)} line.  This method is @emph{not} recommended, unless you know what
+you are doing.  Only two variables, @code{viper-mode} and
address@hidden, are supposed to be customized in @file{.emacs},
+prior to loading Viper (i.e., prior to @code{(require 'viper)} address@hidden
address@hidden
address@hidden :customize
+By executing the @kbd{:customize} Ex command. This takes you to the Emacs
+customization widget, which lets you change the values of Viper
+customizable variables easily. This method is good for novice and
+experts alike. The customization code in the form of Lisp commands will be
+placed in @file{~/.emacs} or some other customization file depending on the
+version of Emacs that you use. Still, it is recommended to separate
+Viper-related customization produced by the Emacs customization widget
+and keep it in the @file{.viper} file.
+
+Some advanced customization cannot be accomplished this way, however, and
+has to be done in Emacs Lisp in the @file{.viper} file.  For the common
+cases, examples are provided that you can use directly.
address@hidden itemize
+
+
address@hidden
+* Rudimentary Changes::          Simple constant definitions.
+* Key Bindings::                 Enabling Emacs Keys, Rebinding keys, etc.
+* Packages that Change Keymaps:: How to deal with such beasts.
+* Viper Specials::               Special Viper commands.
+* Vi Macros::                    How to do Vi style macros.
address@hidden menu
+
address@hidden Rudimentary Changes,Key Bindings,Customization,Customization
address@hidden Rudimentary Changes
+
address@hidden setting variables
address@hidden variables for customization
address@hidden @kbd{:set}
+
+An easy way to customize Viper is to change the values of constants used in
+Viper.  Here is the list of the constants used in Viper and their default
+values.  The corresponding :se command is also indicated.  (The symbols
address@hidden and @code{nil} represent ``true'' and ``false'' in Lisp).
+
+Viper supports both the abbreviated Vi variable names and their full
+names.  Variable completion is done on full names only.  @key{TAB} and
address@hidden complete
+variable names.  Typing `=' will complete the name and then will prompt for
+a value, if applicable.  For instance, @kbd{:se au @key{SPC}} will complete the
+command to @kbd{:set autoindent}; @kbd{:se ta @key{SPC}} will complete the 
command
+and prompt further like this: @kbd{:set tabstop = }.
+However, typing @kbd{:se ts @key{SPC}} will produce a ``No match'' message
+because @kbd{ts} is an abbreviation for @kbd{tabstop} and Viper supports
+completion on full names only.  However, you can still hit @key{RET}
+or @kbd{=}, which will complete the command like this: @kbd{:set ts = } and
+Viper will be waiting for you to type a value for the tabstop variable.
+To get the full list of Vi variables, type @kbd{:se @key{SPC} @key{TAB}}.
+
address@hidden @code
address@hidden viper-auto-indent nil
address@hidden :se ai (:se autoindent)
address@hidden :se ai-g (:se autoindent-global)
+If @code{t}, enable auto indentation.
+by @key{RET}, @kbd{o} or @kbd{O} command.
+
address@hidden is a local variable.  To change the value globally, use
address@hidden  It may be useful for certain major modes to have their
+own values of @code{viper-auto-indent}.  This can be achieved by using
address@hidden to change the local value of this variable in the hooks to the
+appropriate major modes.
+
address@hidden:se ai} changes the value of @code{viper-auto-indent} in the 
current
+buffer only; @kbd{:se ai-g} does the same globally.
address@hidden viper-electric-mode t
+If not @code{nil}, auto-indentation becomes electric, which means that
address@hidden, @kbd{O}, and @kbd{o} indent cursor according to the current
+major mode.  In the future, this variable may control additional electric
+features.
+
+This is a local variable: @code{setq} changes the value of this variable
+in the current buffer only.  Use @code{setq-default} to change the value in
+all buffers.
address@hidden viper-case-fold-search nil
address@hidden :se ic (:se ignorecase)
+If not @code{nil}, search ignores cases.
+This can also be toggled by quickly hitting @kbd{/} twice.
address@hidden viper-re-search nil
address@hidden :se magic
+If not @code{nil}, search will use regular expressions; if @code{nil} then
+use vanilla search.
+This behavior can also be toggled by quickly hitting @kbd{/} trice.
address@hidden buffer-read-only
address@hidden :se ro (:se readonly)
+Set current buffer to read only.  To change globally put
address@hidden(setq-default buffer-read-only t)} in your @file{.emacs} file.
address@hidden blink-matching-paren t
address@hidden :se sm (:se showmatch)
+Show matching parens by blinking cursor.
address@hidden tab-width t (default setting via @code{setq-default})
address@hidden :se ts=value (:se tabstop=value)
address@hidden :se ts-g=value (:se tabstop-global=value)
address@hidden is a local variable that controls the width of the tab stops.
+To change the value globally, use @code{setq-default}; for local settings,
+use @code{setq}.
+
+The command @kbd{:se ts}
+sets the tab width in the current
+buffer only; it has no effect on other buffers.
+
+The command @kbd{:se ts-g} sets tab width globally,
+for all buffers where the tab is not yet set locally,
+including the new buffers.
+
+Note that typing @key{TAB} normally
+doesn't insert the tab, since this key is usually bound to
+a text-formatting function, @code{indent-for-tab-command} (which facilitates
+programming and document writing).  Instead, the tab is inserted via the
+command @code{viper-insert-tab}, which is bound to @kbd{S-tab} (shift + tab).
+
+On some non-windowing terminals, Shift doesn't modify the @key{TAB} key, so
address@hidden behaves as if it were @key{TAB}.  In such a case, you will have
+to bind @code{viper-insert-tab} to some other convenient key.
+
address@hidden viper-shift-width 8
address@hidden :se sw=value  (:se shiftwidth=value)
+The number of columns shifted by @kbd{>} and @kbd{<} commands.
address@hidden viper-search-wrap-around t
address@hidden :se ws (:se wrapscan)
+If not @code{nil}, search wraps around the end/beginning of buffer.
address@hidden viper-search-scroll-threshold 2
+If search lands within this many lines of the window top or bottom, the
+window will be scrolled up or down by about 1/7-th of its size, to reveal
+the context.  If the value is negative---don't scroll.
address@hidden viper-tags-file-name "TAGS"
+The name of the file used as the tag table.
address@hidden viper-re-query-replace nil
+If not @code{nil}, use reg-exp replace in query replace.
address@hidden viper-want-ctl-h-help nil
+If not @code{nil}, @kbd{C-h} is bound to @code{help-command};
+otherwise, @kbd{C-h} is bound as usual in Vi.
address@hidden viper-vi-style-in-minibuffer t
+If not @code{nil}, Viper provides a high degree of compatibility with Vi
+insert mode when you type text in the Minibuffer; if @code{nil}, typing in
+the Minibuffer feels like plain Emacs.
address@hidden viper-no-multiple-ESC t
+If you set this to @code{nil}, you can use @key{ESC} as Meta in Vi state.
+Normally, this is not necessary, since graphical displays have separate
+Meta keys (usually on each side of the space bar).  On a dumb terminal, Viper
+sets this variable to @code{twice}, which is almost like @code{nil}, except
+that double @key{ESC} beeps.  This, too, lets @key{ESC} to be used as a Meta.
address@hidden viper-ESC-keyseq-timeout 200 on tty, 0 on windowing display
+Escape key sequences separated by this much delay (in milliseconds) are
+interpreted as command, ignoring the special meaning of @key{ESC} in
+VI.  The default is suitable for most terminals.  However, if your terminal
+is extremely slow, you might want to increase this slightly.  You will know
+if your terminal is slow if the @key{ESC} key sequences emitted by the
+arrow keys are interpreted as separately typed characters (and thus the
+arrow keys won't work).  Making this value too large will slow you down, so
+exercise restraint.
address@hidden viper-fast-keyseq-timeout 200
+Key sequences separated by this many milliseconds are treated as Vi-style
+keyboard macros.  If the key sequence is defined as such a macro, it will be
+executed.  Otherwise, it is processed as an ordinary sequence of typed keys.
+
+Setting this variable too high may slow down your typing.  Setting it too
+low may make it hard to type macros quickly enough.
address@hidden viper-translate-all-ESC-keysequences t on tty, nil on windowing 
display
+Normally, Viper lets Emacs translate only those ESC key sequences that are
+defined in the low-level key-translation-map or function-key-map, such as those
+emitted by the arrow and function keys. Other sequences, e.g., @kbd{\\e/}, are
+treated as @kbd{ESC} command followed by a @kbd{/}. This is good for people
+who type fast and tend to hit other characters right after they hit
+ESC. Other people like Emacs to translate @kbd{ESC} sequences all the time. 
+The default is to translate all sequences only when using a dumb terminal.
+This permits you to use @kbd{ESC} as a meta key in insert mode. For instance,
+hitting @kbd{ESC x} fast would have the effect of typing @kbd{M-x}.
+If your dumb terminal is not so dumb and understands the meta key, then you
+probably will be better off setting this variable to nil. Try and see which
+way suits you best.
address@hidden viper-ex-style-motion t
+Set this to @code{nil}, if you want @kbd{l,h} to cross
+lines, etc.  @xref{Movement and Markers}, for more info.
address@hidden viper-ex-style-editing t
+Set this to @code{nil}, if you want
address@hidden and @key{DEL} to not stop
+at the beginning of a line in Insert state, @key{X} and @key{x} to delete
+characters across lines in Vi command state, etc.
address@hidden viper-ESC-moves-cursor-back t
+It t, cursor moves back 1 character when switching from insert state to vi
+state.  If nil, the cursor stays where it was before the switch.
address@hidden viper-always t
address@hidden means: leave it to Viper to decide when a buffer must be brought
+up in Vi state,
+Insert state, or Emacs state.  This heuristics works well in virtually all
+cases.  @code{nil} means you either has to invoke @code{viper-mode} manually
+for each buffer (or you can add @code{viper-mode} to the appropriate major mode
+hooks using @code{viper-load-hook}).
+
+This option must be set in the file @file{~/.viper}.
address@hidden viper-custom-file-name "~/.viper"
+File used for Viper-specific customization.
+Change this setting, if you want.  Must be set in @file{.emacs} (not 
@file{.viper}!)
+before Viper is loaded.  Note that you
+have to set it as a string inside double quotes.
address@hidden viper-spell-function 'ispell-region
+Function used by the command @kbd{#c<move>} to spell.
address@hidden viper-glob-function
+The value of this variable is the function symbol used to expand wildcard
+symbols. This is platform-dependent. The default tries to set this variable
+to work with most shells, MS Windows, OS/2, etc. However, if it
+doesn't work the way you expect, you should write your own.
+Use @code{viper-glob-unix-files} and @code{viper-glob-mswindows-files} in
address@hidden as examples.
+
+This feature is used to expand wildcards in the Ex command @kbd{:e}.
+Note that Viper doesn't support wildcards in the @kbd{:r} and @kbd{:w}
+commands, because file completion is a better mechanism.
address@hidden @code{viper-glob-function}
+
address@hidden ex-cycle-other-window t
+If not @code{nil}, @kbd{:n} and @kbd{:b} will cycle through files in another
+window, if one exists.
address@hidden ex-cycle-through-non-files nil
address@hidden:n} does not normally cycle through buffers.  Set this to get
+buffers also.
address@hidden viper-want-emacs-keys-in-insert
+This is set to @code{nil} for user levels 1 and 2 and to @code{t} for user
+levels 3 and 4.  Users who specify level 5 are allowed to set this variable
+as they please (the default for this level is @code{t}).  If set to
address@hidden, complete Vi compatibility is provided in Insert state.  This is
+really not recommended, as this precludes you from using language-specific
+features provided by the major modes.
address@hidden viper-want-emacs-keys-in-vi
+This is set to @code{nil} for user
+level 1 and to @code{t} for user levels 2--4.
+At level 5, users are allowed to set this variable as they please (the
+default for this level is @code{t}).
+If set to @code{nil}, complete Vi compatibility is provided
+in Vi command state.  Setting this to @code{nil} is really a bad idea,
+unless you are a novice, as this precludes the use
+of language-specific features provided by the major modes.
address@hidden viper-keep-point-on-repeat t
+If not @code{nil}, point is not moved when the user repeats the previous
+command by typing `.'  This is very useful for doing repeated changes with
+the @kbd{.} key.
address@hidden viper-repeat-from-history-key 'f12
+Prefix key used to invoke the macros @kbd{f12 1} and @kbd{f12 2} that repeat
+the second-last and the third-last destructive command.
+Both these macros are bound (as Viper macros) to
address@hidden,
+which checks the second key by which it is invoked to see which of the
+previous commands to invoke.  Viper binds @kbd{f12 1} and @kbd{f12 2} only,
+but the user can bind more in @file{~/.viper}.  @xref{Vi Macros}, for how to do
+this.
address@hidden viper-keep-point-on-undo nil
+If not @code{nil}, Viper tries to not move point when undoing commands.
+Instead, it will briefly move the cursor to the place where change has
+taken place.  However, if the undone piece of text is not seen in window,
+then point will be moved to the place where the change took place.
+Set it to @code{t} and see if you like it better.
address@hidden viper-delete-backwards-in-replace nil
+If not @code{nil}, @key{DEL} key will delete characters while moving the cursor
+backwards.  If @code{nil}, the cursor will move backwards without deleting
+anything.
address@hidden viper-replace-overlay-face 'viper-replace-overlay-face
+On a graphical display, Viper highlights replacement regions instead of
+putting a @samp{$} at the end.  This variable controls the so called
address@hidden used to highlight the region.
+
+By default, @code{viper-replace-overlay-face} underlines the replacement on
+monochrome displays and also lays a stipple over them.  On color displays,
+replacement regions are highlighted with color.
+
+If you know something about Emacs faces and don't like how Viper highlights
+replacement regions, you can change @code{viper-replace-overlay-face} by
+specifying a new face.  (Emacs faces are described in the Emacs Lisp
+reference.)  On a color display, the following customization method is
+usually most effective:
address@hidden
+(set-face-foreground viper-replace-overlay-face "DarkSlateBlue")
+(set-face-background viper-replace-overlay-face "yellow")
address@hidden example
+For a complete list of colors available to you, evaluate the expression
address@hidden(x-defined-colors)}.  (Type it in the buffer @code{*scratch*} and 
then
+hit the @kbd{C-j} key.
+
address@hidden viper-replace-overlay-cursor-color  "Red"
address@hidden @code{viper-replace-overlay-cursor-color}
+Cursor color when it is inside the replacement region.
+This has effect only on color displays and only when Emacs runs as an X
+application.
address@hidden viper-insert-state-cursor-color nil
address@hidden @code{viper-insert-state-cursor-color}
+If set to a valid color, this will be the cursor color when Viper is in
+insert state.
address@hidden viper-replace-region-end-delimiter "$"
+A string used to mark the end of replacement regions.  It is used only on
+TTYs or if @code{viper-use-replace-region-delimiters} is non-nil.
address@hidden viper-replace-region-start-delimiter  ""
+A string used to mark the beginning of replacement regions.  It is used
+only on TTYs or if @code{viper-use-replace-region-delimiters} is non-nil.
address@hidden viper-use-replace-region-delimiters
+If non-nil, Viper will always use @code{viper-replace-region-end-delimiter} and
address@hidden to delimit replacement regions,
+even on color displays (where this is unnecessary).  By default, this
+variable is non-nil only on TTYs or monochrome displays.
address@hidden viper-allow-multiline-replace-regions t
+If non-nil, multi-line text replacement regions, such as those produced by
+commands @kbd{c55w}, @kbd{3C}, etc., will stay around until the user exits
+the replacement mode.  In this variable is set to @code{nil}, Viper will
+emulate the standard Vi behavior, which supports only intra-line
+replacement regions (and multi-line replacement regions are deleted).
address@hidden viper-toggle-key "\C-z"
+Specifies the key used to switch from Emacs to Vi and back.
+Must be set in @file{.viper}.  This variable can't be
+changed interactively after Viper is loaded.
+
+In Insert state, this key acts as a temporary escape to Vi state, i.e., it
+will set Viper up so that the very next command will be executed as if it
+were typed in Vi state.
address@hidden viper-ESC-key "\e"
+Specifies the key used to escape from Insert/Replace states to Vi.
+Must be set in @file{.viper}.  This variable cannot be
+changed interactively after Viper is loaded.
address@hidden viper-buffer-search-char nil
+Key used for buffer search.  @xref{Viper Specials}, for details.
address@hidden viper-surrounding-word-function 'viper-surrounding-word
+The value of this variable is a function name that is used to determine
+what constitutes a word clicked upon by the mouse.  This is used by mouse
+search and insert.
address@hidden viper-search-face 'viper-search-face
+Variable that controls how search patterns are highlighted when they are
+found.
address@hidden viper-vi-state-hook nil
+List of parameterless functions to be run just after entering the Vi
+command state.
address@hidden viper-insert-state-hook nil
+Same for Insert state.  This hook is also run after entering Replace state.
address@hidden viper-replace-state-hook  nil
+List of (parameterless) functions called just after entering Replace state
+(and after all @code{viper-insert-state-hook}).
address@hidden viper-emacs-state-hook nil
+List of (parameterless) functions called just after switching from Vi state
+to Emacs state.
address@hidden viper-load-hook nil
+List of (parameterless) functions called just after loading Viper.  This is
+the last chance to do customization before Viper is up and running.
address@hidden table
address@hidden
+You can reset some of these constants in Viper with the Ex command @kbd{:set}
+(when so indicated in the table).  Or you
+can include a line like this in your @file{.viper} file:
address@hidden
+(setq viper-case-fold-search t)
address@hidden example
address@hidden @code{viper-auto-indent}
address@hidden @code{viper-electric-mode}
address@hidden @code{viper-case-fold-search}
address@hidden @code{viper-re-search}
address@hidden @code{viper-shift-width}
address@hidden @code{buffer-read-only}
address@hidden @code{viper-search-wrap-around}
address@hidden @code{viper-search-scroll-threshold}
address@hidden @code{viper-search-face}
address@hidden @code{viper-tags-file-name}
address@hidden @code{viper-re-query-replace}
address@hidden @code{viper-want-ctl-h-help}
address@hidden @code{viper-vi-style-in-minibuffer}
address@hidden @code{viper-no-multiple-ESC}
address@hidden @code{viper-always}
address@hidden @code{viper-ESC-keyseq-timeout}
address@hidden @code{viper-fast-keyseq-timeout}
address@hidden @code{viper-ex-style-motion}
address@hidden @code{viper-ex-style-editing}
address@hidden @code{viper-ESC-moves-cursor-back}
address@hidden @code{viper-custom-file-name}
address@hidden @code{viper-spell-function}
address@hidden @code{ex-cycle-other-window}
address@hidden @code{ex-cycle-through-non-files}
address@hidden @code{viper-want-emacs-keys-in-insert}
address@hidden @code{viper-want-emacs-keys-in-vi}
address@hidden @code{viper-keep-point-on-repeat}
address@hidden @code{viper-keep-point-on-undo}
address@hidden @code{viper-delete-backwards-in-replace}
address@hidden @code{viper-replace-overlay-face}
address@hidden @code{viper-replace-region-end-symbol}
address@hidden @code{viper-replace-region-start-symbol}
address@hidden @code{viper-allow-multiline-replace-regions}
address@hidden @code{viper-toggle-key}
address@hidden @code{viper-ESC-key}
address@hidden @code{viper-buffer-search-char}
address@hidden @code{viper-surrounding-word-function}
address@hidden @code{viper-vi-state-hook}
address@hidden @code{viper-insert-state-hook}
address@hidden @code{viper-replace-state-hook}
address@hidden @code{viper-emacs-state-hook}
+
address@hidden Key Bindings, Packages that Change Keymaps, Rudimentary 
Changes,Customization
address@hidden Key Bindings
+
address@hidden key bindings
address@hidden keymaps
+
+Viper lets you define hot keys, i.e., you can associate keyboard keys
+such as F1, Help, PgDn, etc., with Emacs Lisp functions (that may already
+exist or that you will write).  Each key has a "preferred form" in
+Emacs.  For instance, the Up key's preferred form is [up], the Help key's
+preferred form is [help], and the Undo key has the preferred form [f14].
+You can find out the preferred form of a key by typing @kbd{M-x
+describe-key-briefly} and then typing the key you want to know about.
+
+Under the X Window System, every keyboard key emits its preferred form,
+so you can just type
+
address@hidden
+(global-set-key [f11] 'calendar)                        ; L1, Stop
+(global-set-key [f14] 'undo)                            ; L4, Undo
address@hidden lisp
+
address@hidden
+to bind L1 (a key that exists on some SUN workstations) so it will invoke
+the Emacs Calendar and to bind L4 so it will undo changes.
+However, on a dumb terminal or in an Xterm window, even the standard arrow
+keys may
+not emit the right signals for Emacs to understand.  To let Emacs know about
+those keys, you will have to find out which key sequences they emit
+by typing @kbd{C-q} and then the key (you should switch to Emacs state
+first).  Then you can bind those sequences to their preferred forms using
address@hidden as follows:
+
address@hidden
+(cond ((string= (getenv "TERM") "xterm")
+(define-key function-key-map "\e[192z" [f11])    ; L1
+(define-key function-key-map "\e[195z" [f14])    ; L4, Undo
address@hidden lisp
+
+The above illustrates how to do this for Xterm.  On VT100, you would have to
+replace "xterm" with "vt100" and also change the key sequences (the same
+key may emit different sequences on different types of terminals).
+
+The above keys are global, so they are overwritten by the local maps
+defined by the major modes and by Viper itself.  Therefore, if you wish to
+change a binding set by a major mode or by Viper, read this.
+
+Viper users who wish to specify their own key bindings should be concerned
+only with the following three keymaps:
address@hidden for Vi state commands,
address@hidden for Insert state commands,
+and @code{viper-emacs-global-user-map} for Emacs state commands (note:
+customized bindings for Emacs state made to @code{viper-emacs-global-user-map}
+are @emph{not} inherited by Insert state).
+
+For more information on Viper keymaps, see the header of the file
address@hidden
+If you wish to change a Viper binding, you can use the
address@hidden command, to modify @code{viper-vi-global-user-map},
address@hidden, and @code{viper-emacs-global-user-map}, as
+explained below.  Each of these key maps affects the corresponding Viper state.
+The keymap @code{viper-insert-global-user-map} also affects Viper's Replace
+state. 
+
address@hidden
+If you want to
+bind a key, say @kbd{C-v}, to the function that scrolls
+page down and to make @kbd{0} display information on the current buffer,
+putting this in @file{.viper} will do the trick in Vi state:
address@hidden
+(define-key viper-vi-global-user-map "\C-v" 'scroll-down)
address@hidden example
address@hidden
+To set a key globally,
address@hidden
+(define-key viper-emacs-global-user-map "\C-c m" 'smail)
+(define-key viper-vi-global-user-map "0" 'viper-info-on-file)
address@hidden example
address@hidden
+Note, however, that this binding may be overwritten by other keymaps, since
+the global keymap has the lowest priority.
+To make sure that nothing will override a binding in Emacs state, you
+can write this:
address@hidden
+(define-key viper-emacs-global-user-map "\C-c m" 'smail)
address@hidden example
address@hidden
+To customize the binding for @kbd{C-h} in Insert state:
address@hidden
+(define-key viper-insert-global-user-map "\C-h" 'my-del-backwards-function)
address@hidden example
address@hidden
+
+Each Emacs command key calls some lisp function.  If you have enabled the
+Help, (@pxref{Rudimentary Changes}) @kbd{C-h k} will show you the function
+for each specific key; @kbd{C-h b} will show all bindings, and @kbd{C-h m}
+will provide information on the major mode in effect.  If Help is not
+enabled, you can still get help in Vi state by prefixing the above commands
+with @kbd{\}, e.g., @kbd{\ C-h k} (or you can use the Help menu in the
+menu bar, if Emacs runs under X).
+
+Viper users can also change bindings on a per major mode basis.  As with
+global bindings, this can be done separately for each of the three main Viper
+states.  To this end, Viper provides the function
address@hidden
address@hidden @code{viper-modify-major-mode}
+
+To modify keys in Emacs state for @code{my-favorite-major-mode}, the user
+needs to create a sparse keymap, say, @code{my-fancy-map}, bind whatever
+keys necessary in that keymap, and put
+
address@hidden
+(viper-modify-major-mode 'dired-mode 'emacs-state my-fancy-map)
address@hidden example
+
address@hidden
+in @file{~/.viper}.  To do the same in Vi and Insert states, you should use
address@hidden and @code{insert-state}.  Changes in Insert state are also
+in effect in Replace state.  For instance, suppose that the user wants to
+use @kbd{dd} in Vi state under Dired mode to delete files, @kbd{u} to unmark
+files, etc.  The following code in @file{~/.viper} will then do the job:
+
address@hidden
+(setq my-dired-modifier-map (make-sparse-keymap))
+(define-key my-dired-modifier-map "dd" 'dired-flag-file-deletion)
+(define-key my-dired-modifier-map "u" 'dired-unmark)
+(viper-modify-major-mode 'dired-mode 'vi-state my-dired-modifier-map)
address@hidden example
+
+A Vi purist may want to modify Emacs state under Dired mode so that
address@hidden, @kbd{l}, etc., will move around in directory buffers, as in
+Vi.  Although this is not recommended, as these keys are bound to useful
+Dired functions, the trick can be accomplished via the following code:
+
address@hidden
+(setq my-dired-vi-purist-map (make-sparse-keymap))
+(define-key my-dired-vi-purist-map "k" 'viper-previous-line)
+(define-key my-dired-vi-purist-map "l" 'viper-forward-char)
+(viper-modify-major-mode 'dired-mode 'emacs-state my-dired-vi-purist-map)
address@hidden example
+
+Yet another way to customize key bindings in a major mode is to edit the
+list @code{viper-major-mode-modifier-list} using the customization widget.
address@hidden @code{viper-major-mode-modifier-list}
+(This variable is in the Viper-misc customization group.)
+The elements of this list are triples of the form: (major-mode viper-state
+keymap), where the keymap contains bindings that are supposed to be active
+in the given major mode and the given viper-state.
+
+Effects similar to key binding changes can be achieved by defining Vi
+keyboard macros using the Ex commands @kbd{:map} and @kbd{:map!}.  The
+difference is that multi-key Vi macros do not override the keys they are
+bound to, unless these keys are typed in quick succession.  So, with macros,
+one can use the normal keys alongside with the macros.  If per-mode
+modifications are needed, the user can try both ways and see which one is
+more convenient.
address@hidden @kbd{:map}
address@hidden Macros}, for details.
+
+Note: in major modes that come up in @emph{Emacs state} by default, the
+aforesaid modifications may not take place immediately (but only after the
+buffer switches to some other Viper state and then back to Emacs state).  To
+avoid this, one should add @code{viper-change-state-to-emacs} to an
+appropriate hook of that major mode.  (Check the function
address@hidden in @file{viper.el} for examples.)  However, if you
+did not set @code{viper-always} to @code{nil}, chances are that you won't
+need to perform the above procedure, because Viper will take care of most
+useful defaults.
+
+
+Finally, Viper has a facility that lets the user define per-buffer
+bindings, i.e., bindings that are in effect in some specific buffers
+only.  Unlike per-mode bindings described above, per-buffer bindings can be
+defined based on considerations other than the major mode.  This is done
+via the function @code{viper-add-local-keys}, which lets one specify bindings
+that should be in effect in the current buffer only and for a specific Viper
+state.  For instance,
address@hidden
+(viper-add-local-keys 'vi-state '(("ZZ" .@: TeX-command-master)
+                                 ("ZQ" .@: viper-save-kill-buffer)))
address@hidden lisp
address@hidden
+redefines @kbd{ZZ} to invoke @code{TeX-command-master} in @code{vi-state}
+and @kbd{ZQ} to save-then-kill the current buffer.  These bindings take
+effect only in the buffer where this command is executed.  The typical use
+of this function is to execute the above expression from within a function
+that is included in a hook to some major mode.  For instance, the above
+expression
+could be called from a function, @code{my-tex-init}, which may be added to
address@hidden as follows:
address@hidden
+(add-hook 'tex-mode-hook 'my-tex-init)
address@hidden lisp
address@hidden
+When TeX mode starts, the hook is executed and the above Lisp expression is
+evaluated.  Then, the bindings for @kbd{ZZ} and @kbd{ZQ} are changed in Vi
+command mode for all buffers in TeX mode.
+
+Another useful application is to bind @kbd{ZZ} to @code{send-mail}
+in the Mail mode buffers (the specifics of this depend on which mail
+package you are using, @code{rmail}, @code{mh-e}, @code{vm}, etc.
+For instance, here is how to do this for @code{mh-e}, the Emacs interface
+to MH:
address@hidden
+(defun mh-add-vi-keys ()
+  "Set up ZZ for MH-e and XMH."
+  (viper-add-local-keys 'vi-state '(("ZZ" .@: mh-send-letter))))
+(add-hook 'mh-letter-mode-hook 'mh-add-vi-keys)
address@hidden lisp
+
+You can also use @code{viper-add-local-keys} to set per buffer
+bindings in Insert state and Emacs state by passing as a parameter the
+symbols @code{insert-state} and @code{emacs-state}, respectively.
+As with global bindings, customized local bindings done to Emacs state
+are not inherited by Insert state.
+
+On rare occasions, local keys may be added by mistake.  Usually this is done
+indirectly, by invoking a major mode that adds local keys (e.g.,
address@hidden redefines @key{RET}).  In such a case, exiting the wrong
+major mode won't rid you from unwanted local keys, since these keys are
+local to Viper state and the current buffer, not to the major mode.
+In such situations, the remedy is to type @kbd{M-x viper-zap-local-keys}.
+
+So much about Viper-specific bindings.
address@hidden,,Customization,emacs,The GNU Emacs
+Manual}, and the Emacs quick reference card for the general info on key
+bindings in Emacs.
+
address@hidden @code{function-key-map}
address@hidden @code{viper-vi-global-user-map}
address@hidden @code{viper-insert-global-user-map}
address@hidden @code{viper-emacs-global-user-map}
address@hidden @code{viper-add-local-keys}
address@hidden @code{viper-zap-local-keys}
+
address@hidden Packages that Change Keymaps,Viper Specials,Key 
Bindings,Customization
address@hidden Packages that Change Keymaps
address@hidden C-c and Viper
address@hidden Viper and C-c
+
+Viper is designed to coexist with all major and minor modes of Emacs.  This
+means that bindings set by those modes are generally available with Viper
+(unless you explicitly prohibit them by setting
address@hidden and @code{viper-want-emacs-keys-in-insert} to
address@hidden).
+If @code{viper-always} is set to @code{t} (which is the default), Viper
+will try to bring each buffer 
+in the Viper state that is most appropriate for that buffer.
+Usually, this would be the Vi state, but sometimes it could be the Insert
+state or the Emacs state.
+
+Some major mode bindings will necessarily be overwritten by Viper.  Indeed, in
+Vi state, most of the 1-character keys are used for Vi-style editing.  This
+usually causes no problems because most packages designed for editing files
+typically do not bind such keys.  Instead, they use key sequences that start
+with @kbd{C-x} and @kbd{C-c}.  This is why it was so important for us to
+free up @kbd{C-x} and @kbd{C-c}.
+It is common for language-specific major modes to bind @key{TAB} and
address@hidden (the line feed) keys to various formatting functions.  This is
+extremely useful, but may require some getting used to for a Vi user.  If you
+decide that this feature is not for you, you can re-bind these keys as
+explained earlier (@pxref{Customization}).
+
+Binding for @key{TAB} is one of the most unusual aspects of Viper for many
+novice users.  In Emacs, @key{TAB} is used to format text and programs, and
+is extremely useful.  For instance, hitting @key{TAB} causes the current
+line to be re-indented in accordance with the context.  In programming,
+this is very important, since improper automatic indentation would
+immediately alert the programmer to a possible error.  For instance, if a
address@hidden)} or a @kbd{"} is missing somewhere above the current
+line, @key{TAB} is likely to mis-indent the line.
+
+For this reason, Viper doesn't change the standard Emacs binding of
address@hidden, thereby sacrificing Vi compatibility
+(except for users at level 1).  Instead, in Viper, the key
address@hidden (shift+ tab) is chosen to emulate Vi's @key{TAB}.
+
+We should note that on some non-windowing terminals, Shift doesn't modify
+the @key{TAB} key, so @kbd{S-tab} behaves as if it were @key{TAB}.  In such
+a case, you will have to bind @code{viper-insert-tab} to some other
+convenient key.
+
+Some packages, notably Dired, Gnus, Info, etc., attach special meaning to
+common keys like @key{SPC}, @kbd{x}, @kbd{d}, @kbd{v}, and others.  This
+means that Vi command state is inappropriate for working with these
+packages.  Fortunately, these modes operate on read-only buffers and are
+designed not for editing files, but for special-purpose browsing, reading
+news, mail, etc., and Vi commands are meaningless in these situations.  For
+this reason, Viper doesn't force Vi state on such major modes---it
+brings them in Emacs state.  You can switch to Vi state by typing @kbd{C-z}
+if, for instance, you want to do Vi-style search in a buffer (although,
+usually, incremental search, which is bound to @kbd{C-s}, is sufficient in
+these situations).  But you should then switch back to Emacs state if you
+plan to continue using these major modes productively.  You can also switch
+to Vi temporarily, to execute just one command.  This is done by typing
address@hidden \}.  (In some of these modes, @kbd{/} and @kbd{:} are bound
+Vi-style, unless these keys perform essential duties.)
+
+If you would like certain major modes to come up in Emacs state rather than
+Vi state (but Viper thinks otherwise), you should put these major modes
+on the @code{viper-emacs-state-mode-list} list and delete them from
address@hidden
+Likewise, you can force Viper's Insert state on a major mode by putting it
+in @code{viper-insert-state-mode-list}.
address@hidden @code{viper-emacs-state-mode-list}
address@hidden @code{viper-insert-state-mode-list}
address@hidden @code{viper-vi-state-mode-list}
+
+It is also possible to impose Vi on some major modes, even though they may
+bind common keys to specialized commands.  This might make sense for modes
+that bind only a small number of common keys.  For instance, Viper subverts
+the Shell mode by changing the bindings for @kbd{C-m} and @kbd{C-d} using
address@hidden described in section on customization
+(@pxref{Customization}).
+
+In some cases, some @emph{minor} modes might override certain essential
+bindings in Vi command state.  This is not a big priblem because this
+can happen only in the beginning, when the minor mode kicks in.  Typing
address@hidden viper-mode} will correct the situation.  Viper knows about
+several such minor modes and takes care of them, so the above trick
+is usually not necessary.  If you find that some minor mode, e.g.,
address@hidden interferes with Viper, putting the following in
address@hidden should fix the problem:
address@hidden
+(viper-harness-minor-mode "nasty-mode")
address@hidden lisp
address@hidden
+The argument to @code{viper-harness-minor-mode} is the name of the file for the
+offending minor mode with the suffixes @file{.el} and @file{.elc} removed.
+
+It may not be always obvious which minor mode is at fault.  The only
+guidance here is to look into the file that defines the minor mode you are
+suspecting, say @code{nasty-mode.el}, and see if it has a variable called
address@hidden  Then check if there is a statement of the form
address@hidden
+(define-key nasty-mode-map key function)
address@hidden lisp
address@hidden
+that binds the misbehaving
+keys.  If so, use the above line to harness @code{nasty-mode}.  If your
+suspicion is wrong, no harm is done if you harness a minor mode that
+doesn't need to be harnessed.
+
address@hidden @code{viper-want-emacs-keys-in-vi}
address@hidden @code{viper-want-emacs-keys-in-insert}
address@hidden @code{viper-always}
address@hidden @code{viper-set-hooks}
address@hidden @code{viper-mode}
address@hidden @code{viper-harness-minor-mode}
address@hidden @code{remove-hook}
address@hidden @code{add-hook}
+
address@hidden Viper Specials,Vi Macros,Packages that Change 
Keymaps,Customization
address@hidden Viper Specials
+
+Viper extends Vi with a number of useful features.  This includes various
+search functions, histories of search strings, Ex commands, insertions, and
+Vi's destructive commands.  In addition, Viper supports file name completion
+and history, completion of Ex commands and variables, and many other
+features.  Some of these features are explained in detail elsewhere in this
+document.  Other features are explained here.
+
address@hidden @code
address@hidden (viper-buffer-search-enable)
address@hidden viper-buffer-search-char nil
+Enable buffer search.  Explicit call to @code{viper-buffer-search-enable}
+sets @code{viper-buffer-search-char} to @kbd{g}.  Alternatively, the user can
+set @code{viper-buffer-search-char} in @file{.viper} to a key sequence
+to be used for buffer search.  There is no need to call
address@hidden in that case.
address@hidden @code{viper-buffer-search-enable}
address@hidden @code{viper-buffer-search-char}
address@hidden viper-toggle-search-style
+This function, bound to @kbd{C-c /}, lets one toggle case-sensitive and
+case-insensitive search, and also switch between plain vanilla search and
+search via regular expressions.  Without the prefix argument, the user is
+asked which mode to toggle.  With prefix argument 1, this toggles
+case-sensitivity.  With prefix argument 2, regular expression/vanilla search
+will be toggled.
+
+However, we found that the most convenient way to toggle
+these options is to bind a Vi macro to
+bind @kbd{//} to toggles case sensitivity and to @kbd{///} to toggles
+vanilla search.  Thus, quickly hitting @kbd{/} twice will switch Viper from
+case sensitive search to case-insensitive.  Repeating this once again will
+restore the original state.  Likewise, quickly hitting @kbd{/} three times
+will switch you from vanilla-style search to search via regular expressions.
+If you hit something other than @kbd{/} after the first @kbd{/} or if the
+second @kbd{/} doesn't follow quickly enough, then Viper will issue the
+usual prompt @kbd{/} and will wait for input, as usual in Vi.
+If you don't like this behavior, you can ``unrecord'' these macros in your
address@hidden/.viper} file.  For instance, if you don't like the above 
feature, put
+this in @file{~/.viper}:
address@hidden
+(viper-set-searchstyle-toggling-macros 'undefine)
address@hidden example
address@hidden @code{viper-set-searchstyle-toggling-macros}
+
address@hidden Vi-isms in Emacs state
+Some people find it useful to use the Vi-style search key, `/', to invoke
+search in modes which Viper leaves in emacs-state.  These modes are:
address@hidden, @code{mh-folder-mode}, @code{gnus-group-mode},
address@hidden, @code{Info-mode}, and @code{Buffer-menu-mode}
+(more may be added in the future).  So, in the above modes, Viper binds `/'
+so that it will behave Vi-style.  Furthermore, in those major modes, Viper
+binds `:' to invoke ex-style commands, like in vi-state.  And, as described
+above, `//' and `///' get bound to Vi-style macros that toggle
+case-insensitivity and regexp-search.
+
+If you don't like these features---which I don't really understand---you
+can unbind `/' and `:' in @code{viper-dired-modifier-map} (for Dired) or in
address@hidden, for other modes.
address@hidden @code{viper-slash-and-colon-map}
address@hidden @code{viper-dired-modifier-map}
+
+To unbind the macros `//' and `///' for a major mode where you feel they
+are undesirable, execute @code{viper-set-emacs-state-searchstyle-macros} with a
+non-nil argument.  This can be done either interactively, by supplying a
+prefix argument, or by placing
address@hidden
+(viper-set-emacs-state-searchstyle-macros 'undefine)
address@hidden example
address@hidden @code{viper-set-emacs-state-searchstyle-macros}
+in the hook to the major mode (e.g., @code{dired-mode-hook}).
address@hidden Macros}, for more information on Vi macros.
+
address@hidden viper-heading-start
address@hidden viper-heading-end
address@hidden headings
address@hidden sections
address@hidden paragraphs
address@hidden sentences
+Regular Expressions for @kbd{[[} and @kbd{]]}.  Note that Emacs defines
+Regexps for paragraphs and sentences.  @xref{Paragraphs,,Paragraphs and
+Sentences,emacs,The GNU Emacs Manual}, for details.
address@hidden M-x viper-set-expert-level
address@hidden @code{viper-set-expert-level}
+Change your user level interactively.
address@hidden viper-smart-suffix-list  '("" "tex" "c" "cc" "el" "p")
address@hidden @code{viper-smart-suffix-list}
+Viper supports Emacs-style file completion when it prompts the user for a
+file name.  However, in many cases, the same directory may contain files
+with identical prefix but different suffixes, e.g., prog.c, prog.o,
+paper.tex, paper.dvi.  In such cases, completion will stop at the `.'.
+If the above variable is a list of strings representing suffixes, Viper will
+try these suffixes
+in the order listed and will check if the corresponding file exists.
+
+For instance, if completion stopped at `paper.'@: and the user typed
address@hidden,
+then Viper will check if the files `paper.', `paper.tex', `paper.c', etc., 
exist.
+It will take the first such file.  If no file exists, Viper will give a chance
+to complete the file name by typing the appropriate suffix.  If `paper.'@: was
+the intended file name, hitting return will accept it.
+
+To turn this feature off, set the above variable to @code{nil}.
+
address@hidden viper-insertion-ring-size  14
address@hidden @code{viper-insertion-ring-size}
address@hidden Insertion ring
+Viper remembers what was previously inserted in Insert and Replace states.
+Several such recent insertions are kept in a special ring of strings of size
address@hidden
+If you enter Insert or Replace state you can reinsert strings from this
+ring by typing @kbd{C-c M-p} or @kbd{C-c M-n}.  The former will search the
+ring in
+the direction of older insertions, and the latter will search in
+the direction of newer insertions.  Hitting @kbd{C-c M-p} or @kbd{C-c M-n}
+in succession
+will undo the previous insertion from the ring and insert the next item on
+the ring.  If a larger ring size is needed, change the value of the above
+variable in the @file{~/.viper} file.
+
+Since typing these sequences of keys may be tedious, it is suggested that the
+user should bind a function key, such as @kbd{f31}, as follows:
address@hidden
+(define-key viper-insert-global-user-map [f31]
+            'viper-insert-prev-from-insertion-ring)
address@hidden example
+This binds @kbd{f31} (which is usually @kbd{R11} on a Sun workstation)
+to the function that inserts the previous string in the insertion history.
+To rotate the history in the opposite
+direction, you can either bind an unused key to
address@hidden or hit any digit (1 to 9) then
address@hidden
+
+One should not bind the above functions to @kbd{M-p} or @kbd{M-n}, since
+this will interfere with the Minibuffer histories and, possibly, other
+major modes.
+
address@hidden viper-command-ring-size  14
address@hidden @code{viper-command-ring-size}
address@hidden Destructive command ring
address@hidden Destructive command history
+Viper keeps track of the recent history of destructive
+commands, such as @kbd{dw}, @kbd{i}, etc.
+In Vi state,
+the most recent command can be re-executed by hitting address@hidden', as in 
Vi.
+However, repeated typing @kbd{C-c M-p} will cause Viper to show the
+previous destructive commands in the minibuffer.  Subsequent hitting 
address@hidden'
+will execute the command that was displayed last.
+The key @kbd{C-c M-n} will cycle through the command history in the
+opposite direction.
+Since typing @kbd{C-c M-p} may be tedious, it is more convenient to bind an
+appropriate function to an unused function key on the keyboard and use that
+key.  For instance, the following
address@hidden
+(define-key viper-vi-global-user-map [f31]
+            'viper-prev-destructive-command)
address@hidden example
+binds the key @kbd{f31} (which is usually @kbd{R11} on a Sun workstation)
+to the function that searches the command history in the direction of older
+commands.  To search in the opposite
+direction, you can either bind an unused key to
address@hidden or hit any digit (1 to 9) then @kbd{f31}.
+
+One should not bind the above functions to @kbd{M-p} or @kbd{M-n}, since
+this will interfere with the Minibuffer histories and, possibly, other
+major modes.
+
address@hidden viper-minibuffer-vi-face  'viper-minibuffer-vi-face
address@hidden viper-minibuffer-insert-face  'viper-minibuffer-insert-face
address@hidden viper-minibuffer-emacs-face  'viper-minibuffer-emacs-face
+These faces control the appearance of the minibuffer text in the
+corresponding Viper states.  You can change the appearance of these faces
+through Emacs' customization widget, which is accessible through the
+menubar.
+
+Viper is located in this widget under the @emph{Emulations} customization
+subgroup of the @emph{Editing} group.  All Viper faces are grouped together
+in Viper's @emph{Highlighting} customization subgroup.
+
+Note that only the text you type in is affected by the above faces.
+Prompts and Minibuffer messages are not affected.
+
+Purists who do not like adornments in the minibuffer can always zap them by
+putting
address@hidden
+(copy-face 'default 'viper-minibuffer-vi-face)
+(copy-face 'default 'viper-minibuffer-insert-face)
+(copy-face 'default 'viper-minibuffer-emacs-face)
address@hidden example
+in the @file{~/.viper} file or through the customization widget, as
+described above.  However, in that case, the user will not have any
+indication of the current Viper state in the minibuffer.  (This is important
+if the user accidentally switches to another Viper state by typing @key{ESC} or
address@hidden).
address@hidden M-x viper-go-away
address@hidden @code{viper-go-away}
+Make Viper disappear from the face of your running Emacs instance.  If your
+fingers start aching again, @kbd{M-x viper-mode} might save your day.
address@hidden M-x toggle-viper-mode
address@hidden @code{toggle-viper-mode}
+Toggle Viperization of Emacs on and off.
address@hidden table
+
address@hidden Multifile documents and programs
+
+Viper provides some support for multi-file documents and programs.
+If a document consists of several files we can designate one of them as a
+master and put the following at the end of that file:
address@hidden
+;;; Local Variables:
+;;; eval: (viper-setup-master-buffer "file1" "file2" "file3" "file4")
+;;; End:
address@hidden lisp
address@hidden
+where @code{file1} to @code{file4} are names of files related to the master
+file.  Next time, when the master file is visited, the command
address@hidden will be evaluated and the above files will
+be associated with the master file.  Then, the new Ex command
address@hidden:RelatedFile} (abbr.@: @kbd{:R}) will display files 1 to 4 one 
after
+another, so you can edit them.  If a file is not in any Emacs buffer, it
+will be visited.  The command @kbd{PreviousRelatedFile} (abbr., @kbd{:P})
+goes through the file list in the opposite direction.
address@hidden @kbd{:RelatedFile}
address@hidden @kbd{:PreviousRelatedFile}
+
+These commands are akin to @kbd{:n} and @kbd{:N}, but they allow the user to
+focus on relevant files only.
+
+Note that only the master file needs to have the aforementioned block of
+commands.  Also, ";;;" above can be replaced by some other
+markers.  Semicolon is good for Lisp programs, since it is considered a
+comment designator there.  For LaTeX, this could be "%%%", and for C the
+above block should be commented out.
+
+Even though these commands are sometimes useful, they are no substitute for
+the powerful @emph{tag table} facility of Emacs.  Viper's @kbd{:tag} command
+in a primitive interface to Emacs tags.  @xref{Tags,Tags,Tags,emacs,
+The Gnu Emacs Manual}, for more information on tags.
+
+The following two commands are normally bound to a mouse click and are part
+of Viper.  They work only if Emacs runs as an application under X
+Windows (or under some other window system for which a port of GNU Emacs 20
+is available).  Clicking the mouse when Emacs is invoked in an Xterm window
+(using @code{emacs -nw}) will do no good.
+
address@hidden @code
address@hidden mouse
address@hidden mouse-search
address@hidden viper-mouse-search-key  (meta shift 1)
address@hidden @code{viper-mouse-insert-key}
+This variable controls the @emph{mouse-search} feature of Viper.  The
+default value
+states that holding Meta and Shift keys while clicking mouse button 1
+should initiate search for a region under the mouse pointer (defined
+below).  This command can take a prefix argument, which indicates the
+occurrence of the pattern to search for.
+
+Note: while loading initially, Viper binds this mouse action only if it is
+not already bound to something else.  If you want to use the mouse-search
+feature, and the @kbd{Meta-Shift-Mouse-1} mouse action is already bound to
+something else, you can rebind the mouse-search feature by setting
address@hidden to something else in your @code{~/.viper}
+file:
address@hidden
+(setq viper-mouse-search-key '(meta 1))
address@hidden lisp
+This would bind mouse search to the action invoked by pressing the
+Meta key and clicking mouse button 1.  The allowed values of
address@hidden are lists that contain a mouse-button number
+(1,2, or 3) and any combination of the words `control', `meta', and
+`shift'.
+
+If the requested mouse action (e.g., (meta 1)) is already taken for other
+purposes then you have to confirm your intention by placing the following
+command in @code{~/.viper} after setting @code{viper-mouse-search-key}:
address@hidden
+(viper-bind-mouse-search-key 'force)
address@hidden lisp
+
+You can also change this setting interactively, through the customization
+widget of Emacs (type @kbd{:customize}).
+
+The region that is chosen as a pattern to search for is determined as
+follows.  If search is invoked via a single click, Viper chooses the region
+that lies between the beginning of the ``word'' under the pointer (``word''
+is understood in Vi sense) and the end of that word.  The only difference
+with Vi's words is that in Lisp major modes `-' is considered an
+alphanumeric symbol.  This is done for the convenience of working with Lisp
+symbols, which often have an `-' in them.  Also, if you click on a
+non-alphanumeric character that is not a word separator (in Vi sense) then
+this character will also be considered alphanumeric, provided that it is
+adjacent (from either side) to an alphanumeric character.  This useful
+feature gives added control over the patterns selected by the mouse click.
+
+On a double-click, the region is determined by the beginning of the current
+Vi's ``Word'' (i.e., the largest non-separator chunk of text) and the End
+of that ``Word'' (as determined by the @kbd{E} command).
+
+On a triple-click, the region consists of the entire line where the click
+occurred with all leading and trailing spaces and tabs removed.
+
address@hidden mouse-insert
address@hidden viper-mouse-insert-key (meta shift 2)
address@hidden @code{viper-mouse-insert-key}
+This variable controls the @emph{mouse-insert} feature of Viper.
+The above default value states that
+holding Meta and Shift keys while clicking mouse button 2
+should insert the region surrounding the
+mouse pointer.  The rules defining this region are the same as for
+mouse-search.  This command takes an optional prefix argument, which
+indicates how many such regions to snarf from the buffer and insert.  (In
+case of a triple-click, the prefix argument is ignored.)
+
+Note: while loading initially, Viper binds this mouse action only if it not
+already bound to something else.  If you want to use this feature and the
+default mouse action is already bound, you can rebind mouse-insert by
+placing this command in @code{~/.viper}:
address@hidden
+(setq viper-mouse-insert-key '(meta 2))
address@hidden lisp
+If you want to bind mouse-insert to an action even if this action is
+already taked for other purposes in Emacs, then you should add this command
+to @code{~/.viper}, after setting @code{viper-mouse-insert-key}:
address@hidden
+(viper-bind-mouse-insert-key 'force)
address@hidden lisp
+
+This value can also be changed via the Emacs customization widget at the
+menubar.
+
address@hidden viper-multiclick-timeout
+This variable controls the rate at which double-clicking must occur for the
+purpose of mouse search and mouse insert.  By default, this is set to
address@hidden in Emacs and to
address@hidden milliseconds in XEmacs.
address@hidden table        
address@hidden @kbd{S-Mouse-1}
address@hidden @kbd{S-Mouse-2}
address@hidden @kbd{meta shift button1up}
address@hidden @kbd{meta shift button2up}
address@hidden @code{viper-multiclick-timeout}
address@hidden @code{viper-mouse-click-insert-word}
address@hidden @code{viper-mouse-click-search-word}
+
+Note: The above functions search and insert in the selected window of
+the latest active frame.  This means that you can click in another window or
+another frame and have search or insertion done in the frame and window you
+just left.  This lets one use these functions in a multi-frame
+configuration.  However, this may require some getting used to.  For
+instance, if you are typing in a frame, A, and then move the mouse to frame
+B and click to invoke mouse search, search (or insertion) will be performed
+in frame A.  To perform search/insertion in frame B, you will first have to
+shift focus there, which doesn't happen until you type a character or
+perform some other action in frame B---mouse search doesn't shift focus.
+
+If you decide that you don't like the above feature and always want
+search/insertion be performed in the frame where the click occurs, don't
+bind (and unbind, if necessary) @code{viper-mouse-catch-frame-switch} from
+the mouse event it is bound to.
+
+Mouse search is integrated with Vi-style search, so you can
+repeat it with @kbd{n} and @kbd{N}.  It should be also noted that, while
+case-sensitivity of search in Viper is controlled by the variable
address@hidden, the case of mouse search is
+controlled by the Emacs variable @code{case-fold-search}, which may be set
+differently from @code{viper-case-fold-search}.  Therefore, case-sensitivity
+of mouse search may be different from that of the usual Vi-style search.
+
+Finally, if the way Viper determines the word to be searched for or to be
+inserted is not what you want, there is a variable,
address@hidden, which can be changed to indicate
+another function for snarfing words out of the buffer.  The catch is that
+you will then have to write such a function and make it known to your
+Emacs.  The function @code{viper-surrounding-word} in @file{viper.el} can be
+used as a guiding example.
+
address@hidden Vi Macros, ,Viper Specials,Customization
address@hidden Vi Macros
+
address@hidden Vi macros
+
+Viper supports much enhanced Vi-style macros and also facilitates the use
+of Emacs-style macros.  To define a temporary macro, it is generally more
+convenient to use Emacs keyboard macro facility.  Emacs keyboard macros are
+usually defined anonymously, and the latest macro can be executed by typing
address@hidden e} (or @kbd{*}, if Viper is in Vi state).  If you need to use 
several
+temporary macros, Viper lets you save them to a
+register (a lowercase letter); such macros can then be executed by typing
address@hidden@@a} in Vi state (if a macro was previously saved in register
address@hidden).
address@hidden and Registers}, for details.
+
+If, however, you need to use a macro regularly, it must be given a
+permanent name and saved.  Emacs manual explains how to do this, but
+invocation of named Emacs macros is quite different from Vi's.  First,
+invocation of permanent Emacs macros takes time because it requires typing
+too many keys (to  a Vi user's taste, anyway).
+Second, binding such macros to function keys, for
+fast access, hogs valuable real estate on the keyboard.
+
+Vi-style macros are better in that respect, since Vi lets the user overload
+the meaning of key sequences: keys typed in fast succession are treated
+specially, if this key sequence is bound to a macro.
+
+Viper provides Vi-style keyboard macros through the usual Ex commands,
address@hidden:map} and 
address@hidden:map!}.  These macros are much more powerful in Viper than
+they are in the original Vi and in other emulators.  This is because Viper
+implements an enhanced vi-style
+interface to the powerful Emacs keyboard macro facility.
+
+First, any Emacs
+command can be executed while defining a macro, not just the Vi
+commands.  In particular, the user can invoke Emacs commands via @kbd{M-x
+command-name} or by pressing various function keys on the keyboard.  One
+can even use the mouse, although this is usually not useful and is not
+recommended (and macros defined with the use of the mouse cannot be saved in
+command history and in the startup file, for future use).
+
+Macros defined by mixing Vi and Emacs commands are represented as
+vectors.  So, don't be confused when you see one (usually through the
+history of Ex commands).  For instance, if @kbd{gg} is defined by typing
address@hidden, the up-arrow key and @kbd{M-x next-line}, its definition will 
look
+as follows in Emacs (in XEmacs, it looks slightly different, see below):
+
address@hidden
+[l up (meta x) n e x t - l i n e return]
address@hidden example
+
+Second, Viper macros are defined in a WYSIWYG style.  This means that
+commands are executed as you type them, so you can see precisely what is
+being defined.  Third, macros can be bound to arbitrary sequences of keys,
+not just to printable keys.  For instance, one can define a macro that will
+be invoked by hitting @kbd{f3} then @kbd{f2} function keys.  (The keys
address@hidden and @kbd{backspace} are excluded; also, a macro invocation
+sequence can't start with @key{ESC}.  Some other keys, such as @kbd{f1} and
address@hidden, can't be bound to macros under Emacs, since they
+are bound in @code{key-translation-map}, which overrides any other binding
+the user gives to keys.  In general, keys that have a binding in
address@hidden can't be bound to a macro.)
+
+Fourth, in Viper, one can define macros that are specific to a given
+buffer, a given major mode, or macros that are defined for all buffers.  In
+fact, the same macro name can have several different definitions: one
+global, several definitions for various major modes, and
+definitions for various specific buffers.  Buffer-specific definitions
+override mode-specific definitions, which, in turn, override global
+definitions.
+
+As if all that is not enough, Viper (through its interface to Emacs
+macros) lets the user define keyboard macros that ask for confirmation or
+even prompt the user for input and then continue.  To do this, one should
+type @kbd{C-x q} (for confirmation) or @kbd{C-u C-x q} (for prompt).
+For details, @pxref{Kbd Macro Query,,Customization,emacs,The GNU Emacs
+Manual} @refill
+
+When the user finishes defining a macro (which is done by typing @kbd{C-x)} ---
+a departure from Vi), you will be asked whether you want this
+macro to be global, mode-specific, or buffer-specific.  You will also be
+given a chance to save the macro in your @file{~/.viper} file.
+This is the easiest way to save a macro and make
+it permanently available.  If you work your startup files with bare hands,
+here is how Viper saves the above macro so that it will be
+available in Viper's Insert state (and Replace state) in buffer @code{my-buf}
+only:
+
address@hidden
+(viper-record-kbd-macro "gg" 'insert-state
+       [l up (meta x) n e x t - l i n e return]
+       "my-buf")
address@hidden example
+
address@hidden
+To do the same for Vi state and all buffers with the major mode
address@hidden, use:
+
address@hidden
+(viper-record-kbd-macro "gg" 'vi-state
+       [l up (meta x) n e x t - l i n e return]
+       'cc-mode)
address@hidden example
+
address@hidden
+Both macro names and macro definitions are vectors of symbols that denote
+keys on the keyboard.  Some keys, like @kbd{\}, @kbd{ }, or digit-keys must
+be escaped with a backslash.  Modified keys are represented as lists.  For
+instance, holding Meta and Control and pressing @kbd{f4} is represented as
address@hidden(control meta f4)}.
+If all members of a vectors are printable characters (or sequences, such as
address@hidden, @kbd{\t}, for @key{ESC} and @key{TAB}), then they can also be 
represented as
+strings:
+
address@hidden
+(viper-record-kbd-macro "aa" 'vi-state  "aaa\e"  "my-buffer")
address@hidden example
+
address@hidden
+Thus, typing @kbd{aa} fast in Vi state will switch Viper to Insert state
+(due to the first @kbd{a}), insert @kbd{aa}, and then it will switch back to Vi
+state.  All this will take effect only in the buffer named @code{my-buffer}.
+
+Note that the last argument to @code{viper-record-kbd-macro} must be either a
+string (a buffer name), a symbol representing a major mode, or @code{t};
+the latter says that the macro is to be defined for all buffers
+(which is how macros are defined in original Vi).
+
+For convenience, Viper also lets you define Vi-style macros in its Emacs
+state.  There is no Ex command, like @kbd{:map} and @kbd{:map!} for doing
+this, but the user can include such a macro in the @file{~/.viper} file.  The
+only thing is that the @code{viper-record-kbd-macro} command should specify
address@hidden instead of @code{vi-state} or @code{insert-state}.
+
+The user can get rid of a macro either by using the Ex commands @kbd{:unmap}
+and @kbd{:unmap!} or by issuing a call to @code{viper-unrecord-kbd-macro}.
+The latter is more powerful, since it can delete macros even in
address@hidden  However, @code{viper-unrecord-kbd-macro} is usually
+needed only when the user needs to get rid of the macros that are already
+predefined in Viper.
+The syntax is:
address@hidden @code{viper-unrecord-kbd-macro}
address@hidden
+(viper-unrecord-kbd-macro macro state)
address@hidden example
address@hidden
+The second argument must be @code{vi-state}, @code{insert-state}, or
address@hidden  The first argument is a name of a macro.  To avoid
+mistakes in specifying names of existing macros, type @kbd{M-x
+viper-describe-kbd-macros} and use a name from the list displayed by this
+command.
+
+If an error occurs during macro definition, Emacs
+aborts the process, and it must be repeated.  This is analogous to Vi,
+except that in Vi the user doesn't know there is an error until the macro is
+actually run.  All that means that in order for a definition to be
+successful, the user must do some simple planning of the process in
+advance, to avoid errors.  For instance, if you want to map @kbd{gg} to
address@hidden in Vi state, you must make sure that there is enough room on the
+current line.  Since @kbd{l} moves the cursor forward, it may signal an
+error on reaching the end of line, which will abort the definition.
+
+These precautions are necessary only when defining macros; they will help
+avoid the need to redo the job.  When macros are actually run, an error
+during the execution will simply terminate the current execution
+(but the macro will remain mapped).
+
+A macro name can be a string of characters or a vector of keys.
+The latter makes it possible to define macros bound to, say, double-hits
+on a function key, such as @kbd{up} or @kbd{f13}.
+This is very useful if you run out of function keys on your keyboard; it
+makes Viper macro facility a @emph{keyboard doubler}, so to speak.
+
+Elsewhere (@xref{Key Bindings}, for details), we review
+the standard Emacs mechanism for binding function keys to commands.
+For instance,
+
address@hidden
+(global-set-key [f13] 'repeat-complex-command)
address@hidden example
+
address@hidden
+binds the key f13 to the Emacs function that repeats the last minibuffer
+command.  Under Viper, however, you may still use this key for additional
+purposes, if you bind, say, a double-hitting action for that key to some
+other function.  Emacs doesn't allow the user to do that, but Viper does
+this through its keyboard macro facility.  To do this, type @kbd{:map }
+first.  When you are asked to enter a macro name, hit f13 twice, followed by
address@hidden or @key{SPC}.
+
+Emacs will now start the mapping process by actually executing
+Vi and Emacs commands, so that you could see what will happen each time the
+macro is executed.  Suppose now we wanted to bind the key sequence
address@hidden f13} to the command @code{eval-last-sexp}.  To accomplish this, 
we
+can type @kbd{M-x eval-last-sexp} followed by @kbd{C-x )}.
+If you answer positively to Viper's offer to save this macro in @file{~/.viper}
+for future uses, the following will be inserted in that file:
+
address@hidden
+(viper-record-kbd-macro [f16 f16] 'vi-state
+         [(meta x) e v a l - l a s t - s e x p]
+         'lisp-interaction-mode)
address@hidden example
+
+To illustrate the above point, Viper provides two canned macros, which, by
+default, are bound to @kbd{[f12 \1]} and @kbd{[f12 \2]} (invoked by typing
address@hidden then @kbd{1} and @kbd{2}, respectively).  These macros are useful
+shortcuts to Viper's command ring history.  The first macro will execute the
+second-last destructive command (the last one is executed by @kbd{.}, as
+usual).  The second macro executes the third-last command.
+
+If you need to go deeper into the command history, you will have to use
+other commands, as described earlier in this section; or you can bind,
+say, @kbd{f12 \3} like this:
+
address@hidden
+(viper-record-kbd-macro [f12 \3] 'vi-state
+                      [(meta x) r e p e a t - f r o m - h i s t o r y]
+                      t)
address@hidden example
+
+
+Note that even though the macro uses the function key @kbd{f12}, the key is
+actually free and can still be bound to some Emacs function via
address@hidden or @code{global-set-key}.
+
+
+Viper allows the user to define macro names that are prefixes of other macros.
+For instance, one can define @kbd{[[} and @kbd{[[[[} to be macros.
+If you type the exact sequence of such keys and then pause, Viper will
+execute the right macro.  However, if you don't pause and, say, type
address@hidden then the conflict is resolved as follows.  If only one of the
+key sequences, @kbd{[[} or @kbd{[[[[} has a definition applicable to the
+current buffer, then, in fact, there is no conflict and the right macro
+will be chosen.  If both have applicable definitions, then the first one
+found will be executed.  Usually this is the macro with a shorter name.  So,
+in our case, @kbd{[[[[text} will cause the macro @kbd{[[} to be executed
+twice and then the remaining keys, @kbd{t e x t}, will be processed.
+
+When defining macros using @kbd{:map} or @kbd{:map!}, the user enters
+the actually keys to be used to invoke the macro.  For instance, you
+should hit the actual key @kbd{f6} if it is to be part of a macro
+name; you do @emph{not} write @kbd{f 6}.  When entering keys, Viper
+displays them as strings or vectors (e.g., @code{"abc"} or @code{[f6
+f7 a]}).  The same holds for unmapping.  Hitting @key{TAB} while
+typing a macro name in the @kbd{:unmap} or @kbd{:unmap!} command will
+cause name completion.  Completions are displayed as strings or
+vectors.  However, as before, you don't actually type @samp{"},
address@hidden, or @samp{]} that appear in the completions.  These are
+meta-symbols that indicate whether the corresponding macro name is a
+vector or a string.
+
+One last difference from Vi: Vi-style keyboard macros cannot be defined in
+terms of other Vi-style keyboard macros (but named Emacs macros are OK).
+More precisely, while defining or executing a macro, the special meaning
+of key sequences (as Vi macros) is ignored.
+This is because it is all too easy to create an infinite loop in this way.
+Since Viper macros are much more powerful than Vi's it is impossible to
+detect such loops.  In practice, this is not really a limitation but,
+rather, a feature.
+
+We should also note that Vi macros are disabled in the Minibuffer, which
+helps keep some potential troubles away.
+
+The rate at which the user must type keys in order for them to be
+recognized as a timeout macro is controlled by the variable
address@hidden, which defaults to 200 milliseconds.
+
+For the most part, Viper macros defined in @file{~/.viper} can be shared
+between Emacs, XEmacs, and X and TTY modes.  However, macros defined via
+function keys may need separate definitions when XEmacs and Emacs have
+different names for the same keyboard key.  For instance, the `Page Up' key
+may be known in Emacs as @kbd{prior} and in XEmacs as @kbd{pgup}.
+The problem with TTY may be that the function keys there generate sequences
+of events instead of a single event (as under a window system).
+Emacs maps some of these sequences back to the logical keys
+(e.g., the sequences generated by the arrow keys are mapped to @kbd{up},
address@hidden, etc.).  However, not all function keys are mapped in this way.
+Macros that are bound to key sequences that contain such unmapped function
+keys have to be redefined for TTY's (and possibly for every type of TTY you
+may be using).  To do this, start Emacs on an appropriate TTY device and
+define the macro using @kbd{:map}, as usual.
+
address@hidden @code{viper-describe-kbd-macros}
+Finally, Viper provides a function that conveniently displays all macros
+currently defined.  To see all macros along with their definitions, type
address@hidden viper-describe-kbd-macros}.
+
address@hidden Commands,,Customization,Top
address@hidden Commands
+
+This section is a semi-automatically bowdlerized version of the Vi
+reference created by @* @samp{maart@@cs.vu.nl} and others.  It can be
+found on the Vi archives.  This reference has been adapted for address@hidden
+
address@hidden
+* Groundwork::                 Textual Conventions and Viper basics
+* Text Handling::              Moving, Editing, Undoing.
+* Display::                    Scrolling.
+* File and Buffer Handling::   Editing, Writing and Quitting.
+* Mapping::                    Mapping Keys, Keyboard Macros
+* Shell Commands::             Accessing Shell Commands, Processing Text
+* Options::                    Ex options, the @kbd{:set} commands
+* Emacs Related Commands::     Meta Keys, Windows
+* Mouse-bound Commands::        Search and insertion of text
address@hidden menu
+
address@hidden Groundwork, Text Handling, Commands, Commands
address@hidden  node-name,  next,  previous,  up
address@hidden Groundwork
+
+The VI command set is based on the idea of combining motion commands
+with other commands.  The motion command is used as a text region
+specifier for other commands.
+We classify motion commands into @dfn{point commands} and
address@hidden address@hidden
+
address@hidden point commands
+
+The point commands are:
+
address@hidden
address@hidden, @kbd{l}, @kbd{0},  @kbd{$}, @kbd{w}, @kbd{W}, @kbd{b}, @kbd{B},
address@hidden, @kbd{E}, @kbd{(}, @kbd{)}, @kbd{/}, @kbd{?}, @kbd{`}, @kbd{f},
address@hidden, @kbd{t}, @kbd{T}, @kbd{%}, @kbd{;}, @kbd{,}, @kbd{^}
address@hidden quotation
+
address@hidden line commands
+
+The line commands are:
+
address@hidden
address@hidden, @kbd{k}, @kbd{+}, @kbd{-}, @kbd{H}, @kbd{M}, @kbd{L}, 
@address@hidden,
address@hidden@}}, @kbd{G}, @kbd{'},  @kbd{[[}, @kbd{]]}, @kbd{[]}
address@hidden quotation
address@hidden
+
+Text Deletion Commands (@pxref{Deleting Text}), Change commands
+(@pxref{Changing Text}), even Shell Commands (@pxref{Shell Commands})
+use these commands to describe a region of text to operate on.
+
address@hidden r and R region specifiers
+
+Viper adds two region descriptors, @kbd{r} and @kbd{R}.  These describe
+the Emacs regions (@pxref{Basics}), but they are not movement commands.
+
+The command description uses angle brackets @samp{<>} to indicate
+metasyntactic variables, since the normal conventions of using simple
+text can be confusing with Viper where the commands themselves are
+characters.  Watch out where @kbd{<} shift commands and @kbd{<count>} are
+mentioned together!!!
+
address@hidden <move>
address@hidden <a-z>
address@hidden <address>
address@hidden <move>
address@hidden <a-z>
address@hidden <address>
address@hidden movements
+
address@hidden<move>} refers to the above movement commands, and @samp{<a-z>}
+refers to registers or textmarkers from @samp{a} to @samp{z}.  Note
+that the @samp{<move>}  is described by full move commands, that is to
+say they will take counts, and otherwise behave like normal move commands.
address@hidden Ex addresses
address@hidden<address>} refers to Ex line addresses, which include
+
address@hidden @kbd
address@hidden .@: <No address>
+Current line
address@hidden .+n .-n
+Add or subtract for current line
address@hidden number
+Actual line number, use @kbd{.=} to get the line number
address@hidden '<a-z>
+Textmarker
address@hidden $
+Last line
address@hidden x,y
+Where x and y are one of the above
address@hidden %
address@hidden % (Ex address)
+For the whole file, same as (1,$).
address@hidden /<pat>/
address@hidden ?<pat>?
+Next or previous line with pattern <pat>.
+
+Note that the pattern is allowed to contain newline character (inserted as
address@hidden).  Therefore, one can search for patterns that span several
+lines.
address@hidden table
+
address@hidden % (Current file)
+Note that @samp{%} is used in Ex commands @kbd{:e} and @kbd{:r <shell-cmd>}
+to mean current file.  If you want a @samp{%} in your command, it must be
+escaped as @samp{\%}. Note that @kbd{:w} and the regular @kbd{:r <file>}
+command doesn't support the meta symbols @samp{%} and @samp{#}, because
+file history is a better mechanism.
address@hidden # (Previous file)
+Similarly, @samp{#} expands to the previous file.  The previous file is
+the first file in @kbd{:args} listing.  This defaults to previous window
+in the VI sense if you have one window only.
+
address@hidden <args>
address@hidden <cmd>
address@hidden <args>
address@hidden <cmd>
address@hidden
+Others like @samp{<args> -- arguments}, @samp{<cmd> -- command} etc.
+should be fairly obvious.
+
address@hidden
+Common characters referred to include:
+
address@hidden @kbd
address@hidden <sp>
+Space
address@hidden <ht>
+Tab
address@hidden <lf>
+Linefeed
address@hidden <esc>
+Escape
address@hidden <cr>
+Return, Enter
address@hidden table
address@hidden <cr>
address@hidden <esc>
address@hidden <lf>
address@hidden <ht>
address@hidden <sp>
+
address@hidden words
address@hidden WORDS
address@hidden char
address@hidden CHAR
+
+We also use @samp{word} for alphanumeric/non-alphanumeric words, and
address@hidden for whitespace delimited words.  @samp{char} refers to any
+ASCII character, @samp{CHAR} to non-whitespace character.
+Brackets @samp{[]} indicate optional parameters; @samp{<count>} also
+optional, usually defaulting to 1.  Brackets are elided for
address@hidden<count>} to eschew obfuscation.
+
+Viper's idea of Vi's words is slightly different from Vi.  First, Viper
+words understand Emacs symbol tables.  Therefore, all symbols declared to be
+alphanumeric in a symbol table can automatically be made part of the Viper
+word.  This is useful when, for instance, editing text containing European,
+Cyrillic, Japanese, etc., texts.
+
+Second, Viper lets you depart from Vi's idea of a word by changing the a
+syntax preference via the customization widget (the variable
address@hidden) or by executing
address@hidden interactively.
+
+By default, Viper syntax preference is @code{reformed-vi}, which means that
+Viper considers only those symbols to be part of a word that are specified
+as word-symbols by the current Emacs syntax table (which may be different
+for different major modes) plus the underscore symbol @kbd{_}, minus the
+symbols that are not considered words in Vi (e.g., `,',;, etc.), but may be
+considered as word-symbols by various Emacs major modes.  Reformed-Vi works
+very close to Vi, and it also recognizes words in other
+alphabets.  Therefore, this is the most appropriate mode for editing text
+and is likely to fit all your needs.
+
+You can also set Viper syntax preference to @code{strict-vi}, which would
+cause Viper to view all non-English letters as non-word-symbols.
+
+You can also specify @code{emacs} as your preference, which would
+make Viper use exactly the same notion of a word as Emacs does.  In
+particular, the underscore may not be part of a word in some major modes.
+
+Finally, if @code{viper-syntax-preference} is set to @code{extended}, Viper
+words would consist of characters that are classified as alphanumeric
address@hidden as parts of symbols.  This is convenient for editing programs.
+
address@hidden is a local variable, so it can have different
+values for different major modes.  For instance, in programming modes it can
+have the value @code{extended}.  In text modes where words contain special
+characters, such as European (non-English) letters, Cyrillic letters, etc.,
+the value can be @code{reformed-vi} or @code{emacs}.
+If you consider using different syntactic preferences for different major
+modes, you should execute, for example,
+
address@hidden
+(viper-set-syntax-preference nil "extended")
address@hidden example
+
+in the appropriate major mode hooks.
+
address@hidden @code{viper-syntax-preference}
address@hidden @code{viper-set-syntax-preference}
address@hidden syntax table
+
+
+
+The above discussion concerns only the movement commands.  In regular
+expressions, words remain the same as in Emacs.  That is, the expressions
address@hidden, @code{\>}, @code{\<}, etc., use Emacs' idea of what is a word,
+and they don't look into the value of variable
address@hidden  This is because Viper avoids changing
+syntax tables in order to not thwart the various major modes that set these
+tables.
+
+The usual Emacs convention is used to indicate Control Characters, i.e
+C-h for Control-h.  @emph{Do not confuse this with a sequence of separate
+characters
+C, -, h!!!} The @kbd{^} is itself, never used to indicate a
+Control character.
+
+Finally, we note that Viper's Ex-style commands can be made to work on the
+current Emacs region.  This is done by typing a digit argument before
address@hidden:}.  For instance, typing @kbd{1:} will propmt you with something 
like
address@hidden:123,135}, assuming that the current region starts at line 123 and
+ends at line 135.  There is no need to type the line numbers, since Viper
+inserts them automatically in front of the Ex command.
address@hidden Ex commands
+
address@hidden Text Handling, Display, Groundwork, Commands
address@hidden Text Handling
+
address@hidden
+* Move Commands::              Moving, Searching
+* Marking::                    Textmarkers in Viper and the Emacs Mark.
+* Appending Text::             Text insertion, Shifting, Putting
+* Editing in Insert State::    Autoindent, Quoting etc.
+* Deleting Text::              Deleting
+* Changing Text::              Changing, Replacement, Joining
+* Search and Replace::         Searches, Query Replace, Pattern Commands
+* Yanking::                    Yanking, Viewing Registers
+* Undoing::                    Multiple Undo, Backups
address@hidden menu
+
address@hidden Move Commands,Marking,,Text Handling
address@hidden Move Commands
+
address@hidden movement commands
address@hidden searching
address@hidden textmarkers
address@hidden markers
address@hidden column movement
address@hidden paragraphs
address@hidden headings
address@hidden sections
address@hidden sentences
address@hidden matching parens
address@hidden paren matching
+
address@hidden @kbd
address@hidden <count>  h  C-h
+<count> chars to the left.
address@hidden <count>  j  <lf> C-n
+<count> lines downward.
address@hidden <count>  l  <sp>
+<count> chars to the right.
address@hidden <count>  k  C-p
+<count> lines upward.
address@hidden <count>  $
+To the end of line <count> from the cursor.
address@hidden <count>  ^
+To the first CHAR <count> - 1 lines lower.
address@hidden <count>  -
+To the first CHAR <count> lines higher.
address@hidden <count>  +  <cr>
+To the first CHAR <count> lines lower.
address@hidden  0
+To the first char of the line.
address@hidden <count> |
+To column <count>
address@hidden <count>  f<char>
+<count> <char>s to the right (find).
address@hidden <count>  t<char>
+Till before <count> <char>s to the right.
address@hidden <count>  F<char>
+<count> <char>s to the left.
address@hidden <count>  T<char>
+Till after <count> <char>s to the left.
address@hidden <count>  ;
+Repeat latest @kbd{f t F T} <count> times.
address@hidden <count>  ,
+Repeat latest @kbd{f t F T}
+<count> times in opposite direction.
address@hidden <count>  w
+<count> words forward.
address@hidden <count>  W
+<count> WORDS forward.
address@hidden <count>  b
+<count> words backward.
address@hidden <count>  B
+<count> WORDS backward.
address@hidden <count>  e
+To the end of word <count> forward.
address@hidden <count>  E
+To the end of WORD <count> forward.
address@hidden <count>  G
+Go to line <count> (default end-of-file).
address@hidden <count>  H
+To line <count> from top of the screen (home).
address@hidden <count>  L
+To line <count> from bottom of the screen (last).
address@hidden  M
+To the middle line of the screen.
address@hidden <count>  )
+<count> sentences forward.
address@hidden <count>  (
+<count> sentences backward.
address@hidden <count>  @}
+<count> paragraphs forward.
address@hidden <count>  @{
+<count> paragraphs backward.
address@hidden <count>  ]]
+To the <count>th heading.
address@hidden <count>  [[
+To the <count>th previous heading.
address@hidden <count>  []
+To the end of <count>th heading.
address@hidden  m<a-z>
+Mark the cursor position with a letter.
address@hidden  `<a-z>
+To the mark.
address@hidden  '<a-z>
+To the first CHAR of the line with the mark.
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden  ``
+To the cursor position before the latest absolute
+jump (of which are examples @kbd{/} and @kbd{G}).
address@hidden  ''
+To the first CHAR of the line on which the cursor
+was placed before the latest absolute jump.
address@hidden <count>  /<string>
+To the <count>th occurrence of <string>.
address@hidden <count>  /<cr>
+To the <count>th occurrence of <string> from previous @kbd{/ or ?}.
address@hidden <count>  ?<string>
+To the <count>th previous occurrence of <string>.
address@hidden <count>  ?<cr>
+To the <count>th previous occurrence of <string> from previous @kbd{?@: or /}.
address@hidden  n
+Repeat latest @kbd{/} @kbd{?} (next).
address@hidden  N
+Repeat latest search in opposite direction.
address@hidden C-c /
+Without a prefix argument, this command toggles
+case-sensitive/case-insensitive search modes and plain vanilla/regular
+expression search.  With the prefix argument 1, i.e.,
address@hidden C-c /}, this toggles case-sensitivity; with the prefix argument 
2,
+toggles plain vanilla search and search using
+regular expressions.  @xref{Viper Specials}, for alternative ways to invoke
+this function.
address@hidden vanilla search
address@hidden case-sensitive search
address@hidden case-insensitive search
address@hidden  %
+Find the next bracket/parenthesis/brace and go to its match.
+By default, Viper ignores brackets/parentheses/braces that occur inside
+parentheses.  You can change this by setting
address@hidden to nil in your @file{.viper} file.
+This option can also be toggled interactively if you quickly hit @kbd{%%%}.
+
+This latter feature is implemented as a vi-style keyboard macro.  If you
+don't want this macro, put
+
address@hidden
+(viper-set-parsing-style-toggling-macro 'undefine)
address@hidden example
address@hidden @code{viper-set-parsing-style-toggling-macro}
+
+in your @file{~/.viper} file.
+
address@hidden table
address@hidden @kbd{%}
address@hidden @kbd{C-c /}
address@hidden @kbd{N}
address@hidden @kbd{n}
address@hidden @kbd{?<cr>}
address@hidden @kbd{/<cr>}
address@hidden @kbd{?<string>}
address@hidden @kbd{/<string>}
address@hidden @kbd{''}
address@hidden @kbd{``}
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{'<a-z>}
address@hidden @kbd{`<a-z>}
address@hidden @kbd{m<a-z>}
address@hidden @kbd{[]}
address@hidden @kbd{[[}
address@hidden @kbd{]]}
address@hidden @address@hidden
address@hidden @address@hidden
address@hidden @kbd{(}
address@hidden @kbd{)}
address@hidden @kbd{M}
address@hidden @kbd{L}
address@hidden @kbd{H}
address@hidden @kbd{G}
address@hidden @kbd{E}
address@hidden @kbd{e}
address@hidden @kbd{B}
address@hidden @kbd{b}
address@hidden @kbd{W}
address@hidden @kbd{w}
address@hidden @kbd{,}
address@hidden @kbd{;}
address@hidden @kbd{T<char>}
address@hidden @kbd{F<char>}
address@hidden @kbd{t<char>}
address@hidden @kbd{f<char>}
address@hidden @kbd{|}
address@hidden @kbd{0}
address@hidden @kbd{<cr>}
address@hidden @kbd{+}
address@hidden @kbd{-}
address@hidden @kbd{^}
address@hidden @kbd{$}
address@hidden @kbd{C-p}
address@hidden @kbd{<lf>}
address@hidden @kbd{<sp>}
address@hidden @kbd{C-n}
address@hidden @kbd{C-h}
address@hidden @kbd{h}
address@hidden @kbd{j}
address@hidden @kbd{k}
address@hidden @kbd{l}
address@hidden @code{viper-parse-sexp-ignore-comments}
+
address@hidden Marking,Appending Text,Move Commands,Text Handling
address@hidden Marking
+
+Emacs mark is referred to in the region specifiers @kbd{r} and @kbd{R}.
address@hidden Preliminaries}, and @xref{Basics}, for explanation.  Also
+see @ref{Mark,,Mark,emacs,The GNU Emacs manual}, for an explanation of
+the Emacs mark ring.
+
address@hidden marking
+
address@hidden @kbd
address@hidden m<a-z>
+Mark the current file and position with the specified letter.
address@hidden m .
+Set the Emacs mark (@pxref{Emacs Preliminaries}) at point.
address@hidden m ^
+Set the Emacs mark (@pxref{Emacs Preliminaries}) back to where it was last
+set with the @kbd{m.} command. This is useful when you set the mark with
address@hidden, but then some other command (such as @kbd{L} or @kbd{G}) changes
+it in a way that you didn't like.
address@hidden m <
+Set the Emacs mark at beginning of buffer.
address@hidden m >
+Set the Emacs mark at end of buffer.
address@hidden m ,
+Jump to the Emacs mark.
address@hidden :mark <char>
+Mark position with text marker named <char>.  This is an Ex command.
address@hidden :k <char>
+Same as @kbd{:mark}.
address@hidden ``
+Exchange point and mark.
address@hidden ''
+Exchange point and mark and go to the first CHAR on line.
address@hidden '<a-z>
+Go to specified Viper mark.
address@hidden
+Go to specified Viper mark and go to the first CHAR on line.
address@hidden table
address@hidden @kbd{m<a-z>}
address@hidden @kbd{m.}
address@hidden @kbd{m>}
address@hidden @kbd{m<}
address@hidden @kbd{m,}
address@hidden @kbd{m^}
address@hidden @kbd{:mark}
address@hidden @kbd{:k}
address@hidden @kbd{''}
address@hidden @kbd{``}
address@hidden @kbd{`<a-z>}
address@hidden @kbd{'<a-z>}
+
address@hidden  Appending Text, Editing in Insert State, Marking,Text Handling
address@hidden Appending Text
+
address@hidden, to see how to change tab and shiftwidth size.  See the GNU
+Emacs manual, or try @kbd{C-ha tabs} (If you have turned Emacs help on).
+Check out the variable @code{indent-tabs-mode} to put in just spaces.
+Also see options for word-wrap.
+
address@hidden inserting
address@hidden appending
address@hidden paste
address@hidden put
+
address@hidden @kbd
address@hidden <count>  a
+<count> times after the cursor.
address@hidden <count>  A
+<count> times at the end of line.
address@hidden <count>  i
+<count> times before the cursor (insert).
address@hidden <count>  I
+<count> times before the first CHAR of the line
address@hidden <count>  o
+On a new line below the current (open).
+The count is only useful on a slow terminal.
address@hidden <count>  O
+On a new line above the current.
+The count is only useful on a slow terminal.
address@hidden <count>  ><move>
+Shift the lines described by <count><move> one
+shiftwidth to the right (layout!).
address@hidden <count>  >>
+Shift <count> lines one shiftwidth to the right.
address@hidden <count>  ["<a-z1-9>]p
+Put the contents of the (default undo) buffer
+<count> times after the cursor.  The register will
+be automatically down-cased.
address@hidden <count>  ["<a-z1-9>]P
+Put the contents of the (default undo) buffer
+<count> times before the cursor.  The register will
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden <count>  .
+Repeat previous command <count> times.  For destructive
+commands as well as undo.
address@hidden f1 1 and f1 2
+While @kbd{.} repeats the last destructive command,
+these two macros repeat the second-last and the third-last destructive
+commands.  @xref{Vi Macros}, for more information on Vi macros.
address@hidden C-c M-p and C-c M-n
+In Vi state,
+these commands help peruse the history of Vi's destructive commands.
+Successive typing of @kbd{C-c M-p} causes Viper to search the history in
+the direction
+of older commands, while hitting @kbd{C-c M-n} does so in reverse
+order.  Each command in the history is displayed in the Minibuffer.  The
+displayed command can
+then be executed by typing address@hidden'.
+
+Since typing the above sequences of keys may be tedious, the
+functions doing the perusing can be bound to unused keyboard keys in the
address@hidden/.viper} file.  @xref{Viper Specials}, for details.
address@hidden table
address@hidden @kbd{C-c M-p}
address@hidden @kbd{C-c M-n}
address@hidden @kbd{.}
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{P}
address@hidden @kbd{p}
address@hidden @kbd{"<a-z1-9>p}
address@hidden @kbd{"<a-z1-9>P}
address@hidden @kbd{>>}
address@hidden @kbd{><move>}
address@hidden @kbd{O}
address@hidden @kbd{o}
address@hidden @kbd{i}
address@hidden @kbd{A}
address@hidden @kbd{a}
+
address@hidden Editing in Insert State, Deleting Text, Appending Text,Text 
Handling
address@hidden Editing in Insert State
+
+Minibuffer can be edited similarly to Insert state, and you can switch
+between Insert/Replace/Vi states at will.
+Some users prefer plain Emacs feel in the Minibuffer.  To this end, set
address@hidden to @code{nil}.
+
address@hidden Insert state
+
address@hidden @kbd
address@hidden C-v
+Deprive the next char of its special meaning (quoting).
address@hidden C-h
+One char back.
address@hidden C-w
+One word back.
address@hidden C-u
+Back to the begin of the change on the
+current line.
+
address@hidden table
address@hidden @kbd{C-u}
address@hidden @kbd{C-w}
address@hidden @kbd{C-v}
+
address@hidden Deleting Text, Changing Text, Editing in Insert State, Text 
Handling
address@hidden Deleting Text
+
+
+There is one difference in text deletion that you should be
+aware of.  This difference comes from Emacs and was adopted in Viper
+because we find it very useful.  In Vi, if you delete a line, say, and then
+another line, these two deletions are separated and are put back
+separately if you use the @samp{p} command.  In Emacs (and Viper), successive
+series of deletions that are @emph{not interrupted} by other commands are
+lumped together, so the deleted text gets accumulated and can be put back
+as one chunk.  If you want to break a sequence of deletions so that the
+newly deleted text could be put back separately from the previously deleted
+text, you should perform a non-deleting action, e.g., move the cursor one
+character in any direction.
+
address@hidden shifting text
+
address@hidden @kbd
address@hidden <count>  x
+Delete <count> chars under and after the cursor.
address@hidden <count>  X
+Delete <count> chars before the cursor.
address@hidden <count>  d<move>
+Delete from point to endpoint of <count><move>.
address@hidden <count>  dd
+Delete <count> lines.
address@hidden  D
+The rest of the line.
address@hidden <count>  <<move>
+Shift the lines described by <count><move> one
+shiftwidth to the left (layout!).
address@hidden <count>  <<
+Shift <count> lines one shiftwidth to the left.
address@hidden table
address@hidden @kbd{<<}
address@hidden @kbd{<<move>}
address@hidden @kbd{D}
address@hidden @kbd{dd}
address@hidden @kbd{d<move>}
address@hidden @kbd{X}
address@hidden @kbd{x}
+
address@hidden Changing Text, Search and Replace, Deleting Text,Text Handling
address@hidden Changing Text
+
address@hidden joining lines
address@hidden changing case
address@hidden quoting regions
address@hidden substitution
+
address@hidden @kbd
address@hidden <count>  r<char>
+Replace <count> chars by <char> - no <esc>.
address@hidden <count>  R
+Overwrite the rest of the line,
+appending change @var{count - 1} times.
address@hidden <count>  s
+Substitute <count> chars.
address@hidden <count>  S
+Change <count> lines.
address@hidden <count>  c<move>
+Change from begin to endpoint of <count><move>.
address@hidden <count>  cc
+Change <count> lines.
address@hidden <count>  C
+The rest of the line and <count> - 1 next lines.
address@hidden <count>  =<move>
+Reindent the region described by move.
address@hidden <count>  ~
+Switch lower and upper cases.
address@hidden <count>  J
+Join <count> lines (default 2).
address@hidden  :[x,y]s/<pat>/<repl>/<f>
+Substitute (on lines x through y) the pattern
+<pat> (default the last pattern) with <repl>.  Useful
+flags <f> are @samp{g} for @samp{global} (i.e.@: change every
+non-overlapping occurrence of <pat>) and @samp{c} for
address@hidden (type @samp{y} to confirm a particular
+substitution, else @samp{n} ).  Instead of @kbd{/} any
+punctuation CHAR unequal to <space> <tab> and <lf> can be used as
+delimiter.
+
+In Emacs, @samp{\&} stands for the last matched expression, so
address@hidden/[ab]+/\&\&/} will double the string matched by @kbd{[ab]}.
+Viper doesn't treat @samp{&} specially, unlike Vi: use @samp{\&} instead.
+
+Viper does not parse search patterns and does not expand special symbols
+found there (e.g., @samp{~} is not expanded to the result of the previous
+substitution).
+
+Note: @emph{The newline character (inserted as @kbd{C-qC-j})
+can be used in <repl>}.
address@hidden  :[x,y]copy [z]
+Copy text between @kbd{x} and @kbd{y} to the position after @kbd{z}.
address@hidden  :[x,y]t [z]
+Same as @kbd{:copy}.
address@hidden  :[x,y]move [z]
+Move text between @kbd{x} and @kbd{y} to the position after @kbd{z}.
address@hidden  &
+Repeat latest Ex substitute command, e.g.
address@hidden:s/wrong/right}.
address@hidden :x,yp
address@hidden :g/Pat/p
address@hidden :v/Pat/p
+The above commands display certain buffer lines in a
+temporary buffer. The first form above displays the buffer lines between
address@hidden and @kbd{y}. The second displays the lines of the buffer, which
+match a given pattern. The third form displays the lines that do @emph{not}
+match the given pattern.
address@hidden #c<move>
+Change upper-case characters in the region to lower-case.
address@hidden #C<move>
+Change lower-case characters in the region to upper-case.
address@hidden #q<move>
+Insert specified string at the beginning of each line in the region
address@hidden C-c M-p and C-c M-n
+In Insert and Replace states, these keys are bound to commands that peruse
+the history of the text
+previously inserted in other insert or replace commands.  By repeatedly typing
address@hidden M-p} or @kbd{C-c M-n}, you will cause Viper to
+insert these previously used strings one by one.
+When a new string is inserted, the previous one is deleted.
+
+In Vi state, these keys are bound to functions that peruse the history of
+destructive Vi commands.
address@hidden Specials}, for details.
address@hidden table
address@hidden @kbd{C-c M-p}
address@hidden @kbd{C-c M-n}
address@hidden @kbd{#q<move> }
address@hidden @kbd{#C<move>}
address@hidden @kbd{#c<move>}
address@hidden @kbd{&}
address@hidden @kbd{\&}
address@hidden @kbd{:substitute/<pat>/<repl>/<f>}
address@hidden @kbd{:s/<pat>/<repl>/<f>}
address@hidden @kbd{:copy [z]}
address@hidden @kbd{:t [z]}
address@hidden @kbd{:move [z]}
address@hidden @kbd{J}
address@hidden @kbd{~}
address@hidden @kbd{=<move>}
address@hidden @kbd{C}
address@hidden @kbd{cc}
address@hidden @kbd{c<move>}
address@hidden @kbd{S}
address@hidden @kbd{s}
address@hidden @kbd{R}
address@hidden @kbd{r<char>}
+
address@hidden Search and Replace, Yanking, Changing Text,Text Handling
address@hidden Search and Replace
+
address@hidden, for Ex address syntax.  @xref{Options}, to see how to
+get literal (non-regular-expression) search and how to stop search from
+wrapping around.
+
address@hidden @kbd
address@hidden C-c /
+Toggle case-sensitive search.  With prefix argument, toggle vanilla/regular
+expression search.
address@hidden <count>  /<string>
+To the <count>th occurrence of <string>.
+
+Viper does not parse search patterns and does not expand special symbols
+found there (e.g., @samp{~} is not expanded to the result of the previous
+substitution).
+
address@hidden <count>  ?<string>
+To the <count>th previous occurrence of <string>.
address@hidden <count>  g<move>
+Search for the text described by move.  (off by default)
address@hidden n
+Repeat latest @kbd{/} @kbd{?} (next).
address@hidden N
+Idem in opposite direction.
address@hidden %
+Find the next bracket and go to its match
address@hidden :[x,y]g/<string>/<cmd>
address@hidden text processing
+Search globally [from line x to y] for <string>
+and execute the Ex <cmd> on each occurrence.
address@hidden :[x,y]v/<string>/<cmd>
+Execute <cmd> on the lines that don't match.
address@hidden #g<move>
+Execute the last keyboard macro for each line in the region.
address@hidden and Registers}, for more info.
address@hidden Q
+Query Replace.
address@hidden :ta <name>
+Search in the tags file where <name> is defined (file, line), and go to it.
address@hidden  :[x,y]s/<pat>/<repl>/<f>
+Substitute (on lines x through y) the pattern <pat> (default the last
+pattern) with <repl>.  Useful
+flags <f> are @samp{g} for @samp{global} (i.e.@: change every
+non-overlapping occurrence of <pat>) and @samp{c} for
address@hidden (type @samp{y} to confirm a particular
+substitution, else @samp{n}).  Instead of @kbd{/} any
+punctuation character other than <space> <tab> and <lf> can be used as
+delimiter.
+
+Note: @emph{The newline character (inserted as @kbd{C-qC-j})
+can be used in <repl>}.
address@hidden  &
+Repeat latest Ex substitute command, e.g.@: @kbd{:s/wrong/right}.
address@hidden :global /<pattern>/<ex-command>
address@hidden :g /<pattern>/<ex-command>
+Execute <ex-command> on all lines that match <pattern>.
address@hidden :vglobal /<pattern>/<ex-command>
address@hidden :v /<pattern>/<ex-command>
+Execute <ex-command> on all lines that do not match <pattern>.
address@hidden table
address@hidden @kbd{&}
address@hidden @kbd{:substitute/<pat>/<repl>/<f>}
address@hidden @kbd{Q}
address@hidden @kbd{#g<move>}
address@hidden @kbd{:v}
address@hidden @kbd{:g}
address@hidden @kbd{:global}
address@hidden @kbd{:vglobal}
address@hidden @kbd{:tag <name>}
address@hidden @kbd{%}
address@hidden @kbd{N}
address@hidden @kbd{n}
address@hidden @kbd{g<move>}
address@hidden @kbd{?<string>}
address@hidden @kbd{/<string>}
+
address@hidden Yanking,Undoing,Search and Replace,Text Handling
address@hidden Yanking
+
address@hidden cut and paste
address@hidden paste
+
address@hidden @kbd
address@hidden <count>  y<move>
+Yank from begin to endpoint of <count><move>.
address@hidden <count>  "<a-z>y<move>
+Yank from begin to endpoint of <count><move> to register.
address@hidden <count>  "<A-Z>y<move>
+Yank from begin to endpoint of <count><move> and append
+to register.
address@hidden <count>  yy
+<count> lines.
address@hidden <count>  Y
+Idem (should be equivalent to @kbd{y$} though).
address@hidden  m<a-z>
+Mark the cursor position with a letter.
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden <count>  ["<a-z1-9>]p
+Put the contents of the (default undo) buffer
+<count> times after the cursor.  The register will
+be automatically down-cased.
address@hidden <count>  ["<a-z1-9>]P
+Put the contents of the (default undo) buffer
+<count> times before the cursor.  The register will
address@hidden table
address@hidden @kbd{P}
address@hidden @kbd{p}
address@hidden @kbd{"<a-z1-9>p}
address@hidden @kbd{"<a-z1-9>P}
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{m<a-z>}
address@hidden @kbd{Y}
address@hidden @kbd{yy}
address@hidden @kbd{"<A-Z>y<move>}
address@hidden @kbd{"<a-z>y<move>}
address@hidden @kbd{y<move>}
address@hidden @kbd{yank}
address@hidden @kbd{:yank}
+
address@hidden Undoing,, Yanking,Text Handling
address@hidden Undoing
+
address@hidden undo
address@hidden backup files
+
address@hidden @kbd
address@hidden  u U
+Undo the latest change.
address@hidden  .
+Repeat undo.
address@hidden :q!
+Quit Vi without writing.
address@hidden :e!
+Re-edit a messed-up file.
address@hidden :rec
+Recover file from autosave.  Viper also creates backup files
+that have a @samp{~} appended to them.
address@hidden table
address@hidden @kbd{:rec}
address@hidden @kbd{:e!}
address@hidden @kbd{:q!}
address@hidden @kbd{.}
address@hidden @kbd{U}
address@hidden @kbd{u}
+
address@hidden Display, File and Buffer Handling, Text Handling, Commands
address@hidden Display
+
address@hidden scrolling
+
address@hidden @kbd
address@hidden C-g
+At user level 1,
+give file name, status, current line number
+and relative address@hidden
+At user levels 2 and higher, abort the current command.
address@hidden C-c g
+Give file name, status, current line number and relative position -- all
+user levels.
address@hidden C-l
+Refresh the screen.
address@hidden <count> C-e
+Expose <count> more lines at bottom, cursor stays put (if possible).
address@hidden <count> C-y
+Expose <count> more lines at top, cursor stays put (if possible).
address@hidden <count> C-d
+Scroll <count> lines downward (default the number of the previous scroll;
+initialization: half a page).
address@hidden <count> C-u
+Scroll <count> lines upward (default the number of the previous scroll;
+initialization: half a page).
address@hidden <count> C-f
+<count> pages forward.
address@hidden <count> C-b
+<count> pages backward (in older versions @kbd{C-b} only works without count).
address@hidden <count> z<cr>
address@hidden zH
+Put line <count> at the top of the window (default the current line).
address@hidden <count> z-
address@hidden zL
+Put line <count> at the bottom of the window
+(default the current line).
address@hidden <count> z.
address@hidden zM
+Put line <count> in the center of the window
+(default the current line).
address@hidden table
address@hidden @kbd{zM}
address@hidden @kbd{zL}
address@hidden @kbd{zH}
address@hidden @kbd{z<cr>}
address@hidden @kbd{z.}
address@hidden @kbd{z-}
address@hidden @kbd{z<cr>}
address@hidden @kbd{C-b}
address@hidden @kbd{C-f}
address@hidden @kbd{C-u}
address@hidden @kbd{C-d}
address@hidden @kbd{C-y}
address@hidden @kbd{C-e}
address@hidden @kbd{C-l}
address@hidden @kbd{C-g}
+
+
address@hidden File and Buffer Handling, Mapping, Display,Commands
address@hidden File and Buffer Handling
+
address@hidden multiple files
+
+In all file handling commands, space should be typed before entering the file
+name.  If you need to type a modifier, such as @kbd{>>} or @kbd{!}, don't
+put any space between the command and the modifier.
+
+Note that many Ex commands, e.g., @kbd{:w}, accept command arguments. The
+effect is that the command would start acting on the current region. For
+instance, if the current region spans the lines 11 through 22, then if you
+type @kbd{1:w} you would see @samp{:11,22w} in the minibuffer.
+
address@hidden @kbd
address@hidden :q
+Quit buffer except if modified.
address@hidden :q!
+Quit buffer without checking.  In Viper, these two commands
+are identical.  Confirmation is required if exiting modified buffers that
+visit files.
address@hidden :suspend
address@hidden :stop
+Suspend Viper
address@hidden :[x,y] w
+Write the file.  Viper makes sure that a final newline is always added to
+any file where this newline is missing.  This is done by setting Emacs
+variable @code{require-final-newline} to @code{t}.  If you don't like this
+feature, use @code{setq-default} to set @code{require-final-newline} to
address@hidden  This must be done in @file{.viper} file.
address@hidden :[x,y] w <name>
+Write to the file <name>.
address@hidden :[x,y] w>> <name>
+Append the buffer to the file <name>.  There should be no space between
address@hidden and @kbd{>>}.  Type space after the @kbd{>>} and see what 
happens.
address@hidden :w!@: <name>
+Overwrite the file <name>.  In Viper, @kbd{:w} and @kbd{:w!} are identical.
+Confirmation is required for writing to an existing file (if this is not
+the file the buffer is visiting) or to a read-only file.
address@hidden :x,y w <name>
+Write lines x through y to the file <name>.
address@hidden :wq
+Write the file and kill buffer.
address@hidden :r <file> [<file> ...]
+Read file into a buffer, inserting its contents after the current line.
address@hidden :xit
+Same as @kbd{:wq}.
address@hidden :Write
address@hidden :W
+Save all unsaved buffers, asking for confirmation.
address@hidden :WWrite
address@hidden :WW
+Like @kbd{W}, but without asking for confirmation.
address@hidden ZZ
+Save current buffer and kill it.  If user level is 1, then save all files
+and kill Emacs.  Killing Emacs is the wrong way to use it, so you should
+switch to higher user levels as soon as possible.
address@hidden :x [<file>]
+Save and kill buffer.
address@hidden :x!@: [<file>]
address@hidden:w![<file>]} and @kbd{:q}.
address@hidden :pre
+Preserve the file -- autosave buffers.
address@hidden :rec
+Recover file from autosave.
address@hidden :f [<file>]
+without the argument, prints file name and character/line information afout
+the currently visited file. With an argument, sets the currently visited
+filename to @file{file}.
address@hidden :cd [<dir>]
+Set the working directory to <dir> (default home directory).
address@hidden :pwd
+Print present working directory.
address@hidden :e [+<cmd>] <files>
+Edit files.  If no filename is given, edit the file visited by the current
+buffer.  If buffer was modified or the file changed on disk, ask for
+confirmation.  Unlike Vi, Viper allows @kbd{:e} to take multiple arguments.
+The first file is edited the same way as in Vi.  The rest are visited
+in the usual Emacs way.
address@hidden :e!@: [+<cmd>] <files>
+Re-edit file.  If no filename, re-edit current file.
+In Viper, unlike Vi, @kbd{e!} is identical to @kbd{:e}.  In both cases, the
+user is asked to confirm if there is a danger of discarding changes to a
+buffer.
address@hidden :q!
+Quit Vi without writing.
address@hidden C-^
+Edit the alternate (normally the previous) file.
address@hidden :rew
+Obsolete
address@hidden :args
+List files not shown anywhere with counts for next
address@hidden :n [count]  [+<cmd>] [<files>]
+Edit <count> file, or edit files.  The count comes from @kbd{:args}.  
address@hidden :N [count] [+<cmd>] [<files>] 
+Like @kbd{:n}, but the meaning of the variable
address@hidden is reversed.
address@hidden :b
+Switch to another buffer.  If @var{ex-cycle-other-window} is @code{t},
+switch in another window.  Buffer completion is supported.
+The variable @var{viper-read-buffer-function} controls which function is
+actually used to read the buffer name. The default is @code{read-buffer},
+but better alternatives are also available in Emacs (e.g.,
address@hidden).
address@hidden @var{viper-read-buffer-function}
address@hidden :B
+Like @kbd{:b}, but the meaning of @var{ex-cycle-other-window} is reversed.
address@hidden :<address>r <name>
+Read the file <name> into the buffer after the line <address>.
address@hidden v, V, C-v
+Edit a file in current or another window, or in another frame.  File name
+is typed in Minibuffer.  File completion and history are supported.
address@hidden table
address@hidden @kbd{v}
address@hidden @kbd{V}
address@hidden @kbd{:args}
address@hidden @kbd{:rew}
address@hidden @kbd{C-^}
address@hidden @kbd{:e!@: [<files>]}
address@hidden @kbd{:e [<files>]}
address@hidden @kbd{:edit [<files>]}
address@hidden @kbd{:edit!@: [<files>]}
address@hidden @kbd{:q!}
address@hidden @kbd{:q}
address@hidden @kbd{:quit}
address@hidden @kbd{:quit!}
address@hidden @kbd{:f}
address@hidden @kbd{:rec}
address@hidden @kbd{:r}
address@hidden @kbd{:read}
address@hidden @kbd{:pre}
address@hidden @kbd{ZZ}
address@hidden @kbd{:wq}
address@hidden @kbd{:w <file>}
address@hidden @kbd{:w!@: <file>}
address@hidden @kbd{:w >> <file>}
address@hidden @kbd{:write <file>}
address@hidden @kbd{:write!@: <file>}
address@hidden @kbd{:write >> <file>}
address@hidden @kbd{:W}
address@hidden @kbd{:WW}
address@hidden @kbd{:Write}
address@hidden @kbd{:WWrite}
address@hidden @kbd{:WWrite}
address@hidden @kbd{:x}
address@hidden @kbd{:x!}
address@hidden @kbd{:suspend}
address@hidden @kbd{:stop}
address@hidden @kbd{:n [<count> | <file>]}
address@hidden @kbd{:cd [<dir>]}
address@hidden @kbd{:pwd}
+
address@hidden Mapping, Shell Commands, File and Buffer Handling, Commands
address@hidden Mapping
+
address@hidden key bindings
address@hidden key mapping
+
address@hidden @kbd
address@hidden :map <string>
+Start defining a Vi-style keyboard macro.
+For instance, typing
address@hidden:map www} followed by @kbd{:!wc %} and then typing @kbd{C-x )}
+will cause @kbd{www} to run wc on
+current file (Vi replaces @samp{%} with the current file name).
address@hidden C-x )
+Finish defining a keyboard macro.
+In Viper, this command completes the process of defining all keyboard
+macros, whether they are Emacs-style or Vi-style.
+This is a departure from Vi, needed to allow WYSIWYG mapping of
+keyboard macros and to permit the use of function keys and arbitrary Emacs
+functions in the macros.
address@hidden :unmap <string>
+Deprive <string> of its mappings in Vi state.
address@hidden :map!@: <string>
+Map a macro for Insert state.
address@hidden :unmap!@: <string>
+Deprive <string> of its mapping in Insert state (see @kbd{:unmap}).
address@hidden @@<a-z>
+In Vi state,
+execute the contents of register as a command.
address@hidden @@@@
+In Vi state,
+repeat last register command.
address@hidden @@#
+In Vi state,
+begin keyboard macro.  End with @@<a-z>.  This will
+put the macro in the proper register.  Register will
+be automatically down-cased.
address@hidden and Registers}, for more info.
address@hidden @@!<a-z>
+In Vi state,
+yank anonymous macro to register
address@hidden *
+In Vi state,
+execute anonymous macro (defined by C-x( and C-x )).
address@hidden C-x e
+Like @kbd{*}, but works in all Viper states.
address@hidden #g<move>
+Execute the last keyboard macro for each line in the region.
address@hidden and Registers}, for more info.
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden table
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{#g<move>}
address@hidden @kbd{*}
address@hidden @kbd{@@!<a-z>}
address@hidden @kbd{@@#}
address@hidden @kbd{@@@@}
address@hidden @kbd{@@<a-z>}
address@hidden @kbd{:unmap <char>}
address@hidden @kbd{:map <char> <seq>}
address@hidden @kbd{:unmap!@: <char>}
address@hidden @kbd{:map!@: <char> <seq>}
+
address@hidden Shell Commands, Options, Mapping, Commands
address@hidden Shell Commands
+
address@hidden % (Current file)
+
+The symbol @samp{%} is used in Ex shell commands to mean current file.  If
+you want a @samp{%} in your command, it must be escaped as @samp{\%}.
address@hidden @samp{%} (Ex address)
+However if @samp{%} is the first character, it stands as the address for
+the whole file.
address@hidden @samp{#} (Previous file)
+Similarly, @samp{#} expands to the previous file.  The previous file is the
+first file in @kbd{:args} listing.  This defaults to the previous file in
+the VI sense if you have one address@hidden
+
+Symbols @samp{%} and @samp{#} are also used in the Ex commands @kbd{:e} and
address@hidden:r <shell-cmd>}.  The commands @kbd{:w} and the regular @kbd{:r
+<file>} command don't support these meta symbols, because file history is a
+better mechanism.
+
address@hidden shell commands
+
address@hidden @kbd
address@hidden :sh
+Execute a subshell in another window
address@hidden :[x,y]!<cmd>
+Execute a shell <cmd> [on lines x through y;
+% is replace by current file, \% is changed to %
address@hidden :[x,y]!!@: [<args>]
+Repeat last shell command [and append <args>].
address@hidden :!<cmd>
+Just execute command and display result in a buffer.
address@hidden :!!@: <args>
+Repeat last shell command and append <args>
address@hidden <count> !<move><cmd>
+The shell executes <cmd>, with standard
+input the lines described by <count><move>,
+next the standard output replaces those lines
+(think of @samp{cb}, @samp{sort}, @samp{nroff}, etc.).
address@hidden <count> !!<cmd>
+Give <count> lines as standard input to the
+shell <cmd>, next let the standard output
+replace those lines.
address@hidden :[x,y] w !<cmd>
+Let lines x to y be standard input for <cmd>
+(notice the <sp> between @kbd{w} and @kbd{!}).
address@hidden :<address>r !<cmd>
+Put the output of <cmd> after the line <address> (default current).
address@hidden :<address>r <name>
+Read the file <name> into the buffer after the line <address> (default
+current).
address@hidden :make
+Run the make command in the current directory.
address@hidden table
address@hidden @kbd{:<address>r <name>}
address@hidden @kbd{:<address>r !<cmd>}
address@hidden @kbd{!<cmd>}
address@hidden @kbd{!!<cmd>}
address@hidden @kbd{!<move><cmd>}
address@hidden @kbd{:w !<cmd>}
address@hidden @kbd{:x,y w !<cmd>}
address@hidden @kbd{:!!@: <args>}
address@hidden @kbd{:!<cmd>}
address@hidden @kbd{:sh}
address@hidden @kbd{:make}
+
address@hidden Options,Emacs Related Commands,Shell Commands,Commands
address@hidden Options
+
address@hidden Vi options
+
address@hidden @kbd
address@hidden autoindent
address@hidden ai
address@hidden autoindent
+autoindent -- In append mode after a <cr> the
+cursor will move directly below the first
+character on the previous line.
+This setting affects the current buffer only.
address@hidden autoindent-global
address@hidden ai-global
+Same as `autoindent', but affects all buffers.
address@hidden noautoindent
address@hidden noai
+Cancel autoindent.
address@hidden noautoindent-global
address@hidden noai-g
+Cancel autoindent-global.
address@hidden ignorecase
address@hidden ic
address@hidden case and searching
+ignorecase -- No distinction between upper and lower cases when searching.
address@hidden noignorecase
address@hidden noic
+Cancel ignorecase.
address@hidden magic
address@hidden ma
address@hidden literal searching
+Regular expressions used in searches; nomagic means no regexps.
address@hidden nomagic
address@hidden noma
+Cancel magic.
address@hidden readonly
address@hidden ro
address@hidden readonly files
+readonly -- The file is not to be changed.
+If the user attempts to write to this file, confirmation will be requested.
address@hidden noreadonly
address@hidden noro
+Cancel readonly.
address@hidden shell=<string>
address@hidden sh=<string>
address@hidden shell
+shell -- The program to be used for shell escapes
+(default @samp{$SHELL} (default @file{/bin/sh})).
address@hidden shiftwidth=<count>
address@hidden sw=<count>
address@hidden layout
address@hidden shifting text
+shiftwidth -- Gives the shiftwidth (default 8 positions).
address@hidden showmatch
address@hidden sm
address@hidden paren matching
address@hidden matching parens
+showmatch -- Whenever you append a @kbd{)}, Vi shows
+its match if it's on the same page; also with
address@hidden@{} and @address@hidden  If there's no match, Vi will beep.
address@hidden noshowmatch
address@hidden nosm
+Cancel showmatch.
address@hidden tabstop=<count>
address@hidden ts=<count>
address@hidden changing tab width
address@hidden tabbing
+tabstop -- The length of a <ht>; warning: this is
+only IN the editor, outside of it <ht>s have
+their normal length (default 8 positions).
+This setting affects the current buffer only.
address@hidden tabstop-global
address@hidden ts-g
+Same as `tabstop', but affects all buffers.
address@hidden wrapmargin=<count>
address@hidden wm=<count>
address@hidden auto fill
address@hidden word wrap
+wrapmargin -- In append mode Vi automatically
+puts a <lf> whenever there is a <sp> or <ht>
+within <wm> columns from the right margin.
address@hidden wrapscan
address@hidden ws
address@hidden searching
+wrapscan -- When searching, the end is
+considered @samp{stuck} to the begin of the file.
address@hidden nowrapscan
address@hidden nows
+Cancel wrapscan.
address@hidden :set <option>
+Turn <option> on.
address@hidden :set no<option>
+Turn <option> off.
address@hidden :set <option>=<value>
+Set <option> to <value>.
address@hidden table
address@hidden @kbd{:set <option>=<value>}
address@hidden @kbd{:set no<option>}
address@hidden @kbd{:set <option>}
address@hidden @kbd{:set ws}
address@hidden @kbd{:set wrapscan}
address@hidden @kbd{:set wm=<count>}
address@hidden @kbd{:set wrapmargin=<count>}
address@hidden @kbd{:set ts=<count>}
address@hidden @kbd{:set tabstop=<count>}
address@hidden @kbd{:set tab-stop-local=<count>}
address@hidden @kbd{:set sm}
address@hidden @kbd{:set showmatch}
address@hidden @kbd{:set sw=<count>}
address@hidden @kbd{:set shiftwidth=<count>}
address@hidden @kbd{:set sh=<string>}
address@hidden @kbd{:set shell=<string>}
address@hidden @kbd{:set ro}
address@hidden @kbd{:set readonly}
address@hidden @kbd{:set magic}
address@hidden @kbd{:set ic}
address@hidden @kbd{:set ignorecase}
address@hidden @kbd{:set ai}
address@hidden @kbd{:set autoindent}
+
address@hidden Emacs Related Commands,,Options,Commands
address@hidden Emacs Related Commands
+
address@hidden @kbd
address@hidden C-\
+Begin Meta command in Vi or Insert states.  Most often used as C-\ x (M-x).
+
+Note: Emacs binds @kbd{C-\} to a function that offers to change the
+keyboard input method in the multilingual environment.  Viper overrides this
+binding.  However, it is still possible to switch the input method by typing
address@hidden C-\} in the Vi command state and @kbd{C-z \ C-\} in the Insert 
state.
+Or you can use the MULE menu on the menubar.
address@hidden C-z
+In Insert and Replace states, prepare Viper to accept the next command and
+execute it as if Viper was in Vi state.  Then return to Insert state.
+
+In Vi state, switch to Emacs state; in Emacs state, switch to Vi state.
address@hidden C-c \
+Switches to Vi state for the duration of a single command.  Then goes back
+to the original Viper state.  Works from Vi, Insert, Replace, and Emacs states.
address@hidden C-x0
+Close Window
address@hidden C-x1
+Close Other Windows
address@hidden C-x2
+Split Window
address@hidden C-xo
+Move among windows
address@hidden C-xC-f
+Emacs find-file, useful in Insert state
address@hidden C-y
+Put back the last killed text.  Similar to Vi's @kbd{p}, but also works in
+Insert and Replace state.  This command doesn't work in Vi command state,
+since this binding is taken for something else.
address@hidden M-y
+Undoes the last @kbd{C-y} and puts another kill from the kill ring.
+Using this command, you can try may different kills until you find the one
+you need.
address@hidden table
address@hidden @kbd{M-y}
address@hidden @kbd{C-y}
address@hidden @kbd{C-xC-f}
address@hidden @kbd{C-xo}
address@hidden @kbd{C-x2}
address@hidden @kbd{C-x1}
address@hidden @kbd{C-x0}
address@hidden @kbd{C-z}
address@hidden @kbd{C-\}
address@hidden @kbd{C-c\}
+
address@hidden Mouse-bound Commands,,,Commands
address@hidden Mouse-bound Commands
+
+The following two mouse actions are normally bound to special search and
+insert commands in of Viper:
+
address@hidden @kbd
address@hidden S-Mouse-1 (Emacs)
address@hidden meta button1up (XEmacs)
+Holding Shift (or Meta, if XEmacs) and clicking mouse button 1 will
+initiate search for 
+a region under the mouse pointer.
+This command can take a prefix argument.  Note: Viper sets this
+binding only if this mouse action is not
+already bound to something else.
address@hidden Specials}, for more address@hidden
+
address@hidden S-Mouse-2 (Emacs)
address@hidden meta button2up (XEmacs)
+Holding Shift (or Meta, if XEmacs) and clicking button 2 of the mouse will
+insert a region surrounding the mouse pointer.
+This command can also take a prefix argument.
+Note: Viper sets this binding only if this mouse action is not
+already bound to something else.
address@hidden Specials}, for more address@hidden
address@hidden table
address@hidden @kbd{S-Mouse-1}
address@hidden @kbd{S-Mouse-2}
address@hidden @kbd{meta button1up}
address@hidden @kbd{meta button2up}
+
address@hidden Acknowledgments,,,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Acknowledgments
+
+Viper, formerly known as VIP-19, was written by Michael Kifer.  Viper is
+based on the original VIP package by Masahiko Sato and on its enhancement,
+VIP 4.4, by Aamod Sane.  This manual is an adaptation of the manual for VIP
+4.4, which, in turn, was based on Sato's manual for VIP 3.5.
+
+Many contributors on the Net pointed out bugs and suggested a number of
+useful features. Scott Bronson and Samuel Padgett contributed patches that
+were incorporated in this code.  Here is a hopefully complete list of
+contributors:
+
address@hidden
+aaronl@@vitelus.com (Aaron Lehmann),
+ahg@@panix.com (Al Gelders),
+amade@@diagram.fr (Paul-Bernard Amade),
+ascott@@fws214.intel.com (Andy Scott),
+bronson@@trestle.com (Scott Bronson),
+cook@@biostat.wisc.edu (Tom Cook),
+csdayton@@midway.uchicago.edu (Soren Dayton),
+dave@@hellgate.utah.edu,
+dm@@scs.cs.nyu.edu (David Mazieres),
+dominik@@strw.LeidenUniv.nl (Carsten Dominik),
+dwallach@@cs.princeton.edu (Dan Wallach),
+dwight@@toolucky.llnl.gov (Dwight Shih),
+dxc@@xprt.net (David X Callaway),
+edmonds@@edmonds.home.cs.ubc.ca (Brian Edmonds),
+gin@@mo.msk.ru (Golubev I.N.),
+gviswana@@cs.wisc.edu (Guhan Viswanathan),
+gvr@@halcyon.com (George V.@: Reilly),
+hatazaki@@bach.convex.com (Takao Hatazaki),
+hpz@@ibmhpz.aug.ipp-garching.mpg.de (Hans-Peter Zehrfeld),
+jackr@@dblues.engr.sgi.com (Jack Repenning),
+jamesm@@bga.com (D.J.@: Miller II),
+jjm@@hplb.hpl.hp.com (Jean-Jacques Moreau),
+jl@@cse.ogi.edu (John Launchbury),
+jobrien@@hchp.org (John O'Brien),
+johnw@@borland.com (John Wiegley),
+kanze@@gabi-soft.fr (James Kanze),
+kin@@isi.com (Kin Cho),
+kwzh@@gnu.org (Karl Heuer),
+lindstro@@biostat.wisc.edu (Mary Lindstrom),
+minakaji@@osaka.email.ne.jp (Mikio Nakajima),
+Mark.Bordas@@East.Sun.COM (Mark Bordas),
+meyering@@comco.com (Jim Meyering),
+martin@@xemacs.org (Martin Buchholz),
+mbutler@@redfernnetworks.com (Malcolm Butler),
+mveiga@@dit.upm.es (Marcelino Veiga Tuimil),
+paulk@@summit.esg.apertus.com (Paul Keusemann),
+pfister@@cs.stonybrook.edu (Hanspeter Pfister),
+phil_brooks@@MENTORG.COM (Phil Brooks),
+pogrell@@informatik.hu-berlin.de (Lutz Pogrell),
+pradyut@@cs.uchicago.edu (Pradyut Shah),
+roderick@@argon.org (Roderick Schertler),
+rxga@@ulysses.att.com,
+sawdey@@lcse.umn.edu (Aaron Sawdey),
+simonb@@prl.philips.co.uk (Simon Blanchard),
+spadgett1@@nc.rr.com (Samuel Padgett),
+stephen@@farrell.org (Stephen Farrell),
+sudish@@MindSpring.COM (Sudish Joseph),
+schwab@@issan.informatik.uni-dortmund.de (Andreas Schwab)
+terra@@diku.dk (Morten Welinder),
+thanh@@informatics.muni.cz (Han The Thanh),
+toma@@convex.convex.com,
+vrenjak@@sun1.racal.com (Milan Vrenjak),
+whicken@@dragon.parasoft.com (Wendell Hicken),
+zapman@@cc.gatech.edu (Jason Zapman II),
address@hidden example
+
+
address@hidden Key Index,Function Index,,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Key Index
+
address@hidden ky
+
address@hidden Function Index,Variable Index,Key Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Function Index
+
address@hidden fn
+
address@hidden Variable Index,Package Index,Function Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Variable Index
+
address@hidden vr
+
address@hidden Package Index,Concept Index,Variable Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Package Index
+
address@hidden pg
+
address@hidden Concept Index,,Package Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Concept Index
+
address@hidden cp
+
address@hidden odd
address@hidden
address@hidden

Index: misc/res_all/texi_templates/templates.2
===================================================================
RCS file: misc/res_all/texi_templates/templates.2
diff -N misc/res_all/texi_templates/templates.2

Index: misc/res_all/texi_templates/templates.passfirst
===================================================================
RCS file: misc/res_all/texi_templates/templates.passfirst
diff -N misc/res_all/texi_templates/templates.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_all/texi_templates/templates.passfirst     2 Aug 2009 13:13:18 
-0000       1.1
@@ -0,0 +1,725 @@
+templates.texi(,2) @c %**start of header
+templates.texi(,3) @setfilename templates.info
+templates.texi(,4) @documentencoding iso-8859-1
+templates.texi(,5) @documentlanguage en
+templates.texi(,6) @settitle  Emacs template package documentation, version 
3.1c
+templates.texi(,7) @c %**end of header
+templates.texi(,8) @alias kbdmenu = kbd
+templates.texi(,9) @alias codetpl = samp
+templates.texi(,10) @alias codevar = code
+templates.texi(,11) 
+templates.texi(,20) 
+templates.texi(,21) @dircategory Emacs
+templates.texi(,22) @direntry
+templates.texi(,23) * Templates: (templates). Creating templates for files 
creation.
+templates.texi(,24) @end direntry
+templates.texi(,25) 
+templates.texi(,26) 
+templates.texi(,40) 
+templates.texi(,42) @node Top,,,(dir)top
+templates.texi(,43) @top Top node.
+templates.texi(,44) 
+templates.texi(,45) This is the manual of Emacs template package
+templates.texi(,47) 
+templates.texi(,48) @menu
+templates.texi(,49) * Overview:: Overview.
+templates.texi(,50) * Installation:: how to install the template package.
+templates.texi(,51) * Basics:: How to make and use templates.
+templates.texi(,52) * Advanced:: Templates for advanced users.
+templates.texi(,53) * Indexes:: Indexes for commands, keyword, and variable.
+templates.texi(,54) * News:: News for Package Template.
+templates.texi(,55) * Acknowledgements:: Acknowledgements.
+templates.texi(,56) @end menu
+templates.texi(,57) 
+templates.texi(,58) @node Overview,,,Top
+templates.texi(,59) @chapter Overview
+templates.texi(,60) 
+templates.texi(,61) When you create a new file with Emacs, package Template 
supplies an initial
+templates.texi(,62) buffer content via a template: a file with normal text and 
expansion forms.
+templates.texi(,63) There is a menu to easily create such templates.  You can 
also use new commands
+templates.texi(,64) to decorate comments and update the buffer contents.
+templates.texi(,65) 
+templates.texi(,66) 
+templates.texi(,67) The main difference between Template and 
@ref{Related,other similar
+templates.texi(,68) packages} is that you can define very flexible templates 
without having
+templates.texi(,69) to learn Lisp or changing your Emacs init file.  This 
package does not
+templates.texi(,70) help Lisp programmers to define complex macros.
+templates.texi(,71) 
+templates.texi(,72) @itemize
+templates.texi(,73) @item
+templates.texi(,74) The template mechanism is hooked into the normal find/open 
file command.  There
+templates.texi(,75) are also new commands for creating a new file using a 
template and inserting &amp;
+templates.texi(,76) expanding a template.
+templates.texi(,77) @item
+templates.texi(,78) You do not have to enter the file name of the template 
file.  This package uses
+templates.texi(,79) a sophisticated search to find the most appropritate 
template (supporting
+templates.texi(,80) project- and subproject specific template files).  You can 
change the
+templates.texi(,81) suggestion, of course.
+templates.texi(,82) @item
+templates.texi(,83) A template file can be easily created.  Most of the file 
usually contains
+templates.texi(,84) simple text; only @dfn{expansion forms} which look like
+templates.texi(,85) @samp{(>>>@var{Key}<<<)} will get replaced.
+templates.texi(,86) @item
+templates.texi(,87) There are various useful predefined expansions: set point 
(the cursor
+templates.texi(,88) position), mark and registers to the current position; 
insert various parts of
+templates.texi(,89) the filename, the user/system name, the current date/time 
in various formats,
+templates.texi(,90) and some text to be entered by the user.
+templates.texi(,91) @item
+templates.texi(,92) Template-specific expansions can be defined at the end of 
the template file.
+templates.texi(,93) There are commands to create these definitions; only 
complex expansions would
+templates.texi(,94) require some knowledge of Lisp.
+templates.texi(,95) @end itemize
+templates.texi(,96) 
+templates.texi(,97) There is a menu to support the creation of template files. 
 Additionally, this
+templates.texi(,98) package provides the following features:
+templates.texi(,99) 
+templates.texi(,100) @itemize
+templates.texi(,101) @item
+templates.texi(,102) When saving a buffer, some parts of the buffer contents 
(header and time
+templates.texi(,103) stamps) are automatically updated if necessary.
+templates.texi(,104) @item
+templates.texi(,105) There are commands to decorate comments with dashes and 
alike.  Works for
+templates.texi(,106) languages with any comment style, even languages having 
mixed comments like C++
+templates.texi(,107) and Java.
+templates.texi(,108) @end itemize
+templates.texi(,109) 
+templates.texi(,110) 
+templates.texi(,111) @node Related,,,Overview
+templates.texi(,112) @section Packages Related to Template
+templates.texi(,113) 
+templates.texi(,114) 
+templates.texi(,115) There are template packages of two different categories, 
which are determined
+templates.texi(,116) by one question:
+templates.texi(,117) 
+templates.texi(,118) @emph{What do you want to do with templates?} Do you want 
to use templates
+templates.texi(,119) when creating new files, or do you want to insert some 
stuff during editing
+templates.texi(,120) (but you are not satisfied with the standard macro 
mechanism)?
+templates.texi(,121) 
+templates.texi(,122) Well, templates could be seen as both new-file templates 
and macro-like
+templates.texi(,123) template, but the main application of templates 
determines the answers for the
+templates.texi(,124) following questions:
+templates.texi(,125)       
+templates.texi(,126) @itemize
+templates.texi(,127) @item
+templates.texi(,128) @emph{How do you define a template?} You can define it by 
one file per
+templates.texi(,129) template or by customizing some Emacs variables.  The 
first solution (which is
+templates.texi(,130) used by package Template) avoids Emacs hacking but might 
not be optimal if you
+templates.texi(,131) just want to define complex macros or if you want to use 
templates to program a
+templates.texi(,132) new Emacs major-mode.
+templates.texi(,133) @item
+templates.texi(,134) @emph{How is an appropriate template selected?} If you 
want to use complex
+templates.texi(,135) macro during editing, the answer is clear: the user have 
to provide the name of
+templates.texi(,136) the template.  For new files, the appropriate template 
should be automatically
+templates.texi(,137) selected.  But of course, you don't want to loose any 
flexibility and you don't
+templates.texi(,138) want to customize your Emacs for every project you start.
+templates.texi(,139) @item
+templates.texi(,140) @emph{How do you do "clever" things in the template?} The 
aims are to have
+templates.texi(,141) many predefined expansions (e.g., the current date) and 
to define some
+templates.texi(,142) non-trivial things without learning Lisp.  Any 
functionality here is the
+templates.texi(,143) overlapping point of both template categories.
+templates.texi(,144) @end itemize
+templates.texi(,145) 
+templates.texi(,146) 
+templates.texi(,147) 
+templates.texi(,148) Here is a little list of related files, collected around 
1998, some discarded
+templates.texi(,149) later (no @abbr{URL}s, no active updating, but you can 
send me a mail):
+templates.texi(,150) 
+templates.texi(,151) @itemize
+templates.texi(,152) @item
+templates.texi(,153) Package @cite{autoinsert.el} uses templates when creating 
new files.
+templates.texi(,154) These templates are defined via files or by customizing 
Emacs.  For each new
+templates.texi(,155) template you want to introduce, you must customize your 
Emacs, the selection is
+templates.texi(,156) restricted to one template per major-mode or regexp 
match.  No predefined
+templates.texi(,157) expansions; clever things are provided by usual Lisp 
expressions or the
+templates.texi(,158) macro-like templates of package @cite{skeleton}.
+templates.texi(,159) @item
+templates.texi(,160) Package @cite{skeleton.el} is a Lisp language extension 
for
+templates.texi(,161) writing statement skeletons, i.e., you get macro-like 
Lisp commands.
+templates.texi(,162) @item
+templates.texi(,163) Package @cite{tempo.el} helps you defining and using 
named macro-like
+templates.texi(,164) templates.  Its predefined macros are similar to some 
predefined expansions of
+templates.texi(,165) package Template.  A specific template is used by
+templates.texi(,166) <code class="lisp">html-helper-mode</code> when creating 
a new html file.
+templates.texi(,167) (This is turned off with the default installation of 
package Template.)
+templates.texi(,168) @item
+templates.texi(,169) Package @cite{hm--html-menus} provides a command to 
insert templates
+templates.texi(,170) editing.  These templates are defined via files.  There 
are no predefined
+templates.texi(,171) expansions (except setting point), non-trivial expansions 
are defined via Lisp.
+templates.texi(,172) @end itemize
+templates.texi(,173) 
+templates.texi(,174) 
+templates.texi(,175) 
+templates.texi(,176) 
+templates.texi(,177) @node Installation,,,Top
+templates.texi(,178) @chapter Installation
+templates.texi(,179) 
+templates.texi(,180) @section Installation Instructions
+templates.texi(,181) 
+templates.texi(,182) @enumerate
+templates.texi(,183) @item
+templates.texi(,184) Copy file @file{template/lisp/template.el} into your
+templates.texi(,185) load-path and byte-compile it.
+templates.texi(,186) @item
+templates.texi(,187) Insert the following code into your Emacs init file
+templates.texi(,188) (@file{~/.emacs}):
+templates.texi(,189) 
+templates.texi(,190) @lisp
+templates.texi(,191) (require 'template)
+templates.texi(,192) (template-initialize)
+templates.texi(,193) @end lisp
+templates.texi(,194) 
+templates.texi(,195) @item
+templates.texi(,196) If you want to customize package Template, use @kbd{M-x
+templates.texi(,197) customize-group @key{RET} template
+templates.texi(,198) @key{RET}} or the customize entry in menu
+templates.texi(,199) @kbd{Options}.
+templates.texi(,200) @item
+templates.texi(,201) You might want to copy the template files from directory
+templates.texi(,202) @file{template/templates/} to
+templates.texi(,203) @file{~/.templates/} and change them according to your
+templates.texi(,204) preferences.
+templates.texi(,205) @end enumerate
+templates.texi(,206) 
+templates.texi(,207) 
+templates.texi(,208) Installation instructions with further explanations can 
be found in file
+templates.texi(,209) @file{template/INSTALL} of the distribution.
+templates.texi(,210) 
+templates.texi(,211)  
+templates.texi(,212) 
+templates.texi(,213) @node Basics,,,Top
+templates.texi(,214) @chapter Basics
+templates.texi(,215) 
+templates.texi(,216) Emacs, template, file template, comment decoration, 
auto-updating, time stamp, details
+templates.texi(,217) 
+templates.texi(,218) @menu
+templates.texi(,219) * menus:: Menus and Key-Bindings.
+templates.texi(,220) * using:: Using a Template.
+templates.texi(,221) * finding:: Finding a Template.
+templates.texi(,222) * creating:: Creating a Template.
+templates.texi(,223) * decorating:: Decorating a Comment.
+templates.texi(,224) * updating:: Updating a Buffer.
+templates.texi(,225) @end menu
+templates.texi(,226) 
+templates.texi(,227) @node menus,,,Basics
+templates.texi(,228) @section  Menus and Key-Bindings
+templates.texi(,229) @c 
--------------------------------------------------------------------------------
+templates.texi(,230) For Emacs-21.1+ and XEmacs, this package defines the 
following menu entries and
+templates.texi(,231) key-bindings: 
+templates.texi(,232) 
+templates.texi(,233) @itemize
+templates.texi(,234) @item
+templates.texi(,235) In menu @kbd{File} , there is a new menu item @kbd{New 
File
+templates.texi(,236) Using Template...}  .  The corresponding command is also 
bound to the
+templates.texi(,237) key sequence @kbd{C-x t}.
+templates.texi(,238) @item
+templates.texi(,239) At the end of menu @kbd{Cmds} (in XEmacs if it exists) or 
menu
+templates.texi(,240)  @kbd{Edit} , there is a new submenu @kbd{Template 
Creation}.
+templates.texi(,241) @item
+templates.texi(,242) Enter @kbd{C-x C-=} (command 
@command{template-single-comment}) to
+templates.texi(,243) insert dashes and alike into the current line and end the 
comment.
+templates.texi(,244) @item
+templates.texi(,245) Enter @kbd{C-x C-;} (command 
@command{template-single-comment}) to
+templates.texi(,246) insert dashes and alike around the current comment block.
+templates.texi(,247) @item
+templates.texi(,248) At the end of menu @kbd{Edit} , there is a new submenu
+templates.texi(,249) @kbd{Comment}.  It also contains the two commands just 
mentioned.
+templates.texi(,250) @end itemize
+templates.texi(,251) 
+templates.texi(,252) @c 
--------------------------------------------------------------------------------
+templates.texi(,253) @node using,,,Basics
+templates.texi(,254) @section  Using a Template
+templates.texi(,255) @c 
--------------------------------------------------------------------------------
+templates.texi(,256) Package Template offers various ways how to use template 
files:
+templates.texi(,257) 
+templates.texi(,258) In Emacs, the usual way to create a new file is by typing 
@kbd{C-x C-f},
+templates.texi(,259) using the menu or the toolbar (running command 
@command{find-file} or
+templates.texi(,260) @command{ffap}) and entering a non-existent file name.  
In this case,
+templates.texi(,261) you will be asked whether to use a template for the new 
file.  You can
+templates.texi(,262) turn off this feature.
+templates.texi(,263) 
+templates.texi(,264) @itemize
+templates.texi(,265) @item
+templates.texi(,266) Here a first undefined xref @xref{EExpansion}.
+templates.texi(,267) There is a new command @command{template-new-file} 
@footnote{for the
+templates.texi(,268) menu entry and its key-binding type @kbd{C-h f 
template-new-file},
+templates.texi(,269) @xref{EExpansion}} to create a new file using a template. 
 Here, you have
+templates.texi(,270) the chance to edit the name of the template file.  This 
command also
+templates.texi(,271) supports file name refinement which is useful to create a 
file in a
+templates.texi(,272) series of files like @file{exercise2.tex} etc.
+templates.texi(,273) @item
+templates.texi(,274) There is also a command (@kbd{M-x 
template-expand-template})
+templates.texi(,275) to insert a template file into the current buffer and 
expand its expansion
+templates.texi(,276) forms.
+templates.texi(,277) @end itemize
+templates.texi(,278) 
+templates.texi(,279) 
+templates.texi(,280) For more @command{template-new-file} and 
@code{template-auto-insert},
+templates.texi(,281)  @xref{Expansion}.
+templates.texi(,282) 
+templates.texi(,283) @c 
--------------------------------------------------------------------------------
+templates.texi(,284) 
+templates.texi(,285) @node finding,,,Basics
+templates.texi(,286) @section  Finding a Template
+templates.texi(,287) @c 
--------------------------------------------------------------------------------
+templates.texi(,288) The algorithm for finding the most appropriate template 
can be best explained
+templates.texi(,289) with a little example:
+templates.texi(,290) 
+templates.texi(,291) @itemize
+templates.texi(,292) @item
+templates.texi(,293) You have a project @file{~/proj/} with subprojects 
@file{foo/} and
+templates.texi(,294) @file{bar/} containing @file{.java} files.
+templates.texi(,295) @item
+templates.texi(,296) You want to define a general template for the 
@file{.java} in your
+templates.texi(,297) project files, although @file{.java} files in subproject 
@file{foo/}
+templates.texi(,298) should use their own template.  You also want to define a 
special
+templates.texi(,299) template for all files @file{proj.java} in the project.
+templates.texi(,300) @item
+templates.texi(,301) Since you do not want to clutter the project directory 
with template
+templates.texi(,302) files, you first create a directory 
@file{~/proj/Templates/}.  In this
+templates.texi(,303) directory, you create new files @file{TEMPLATE.java.tpl} 
and
+templates.texi(,304) @file{proj.java.tpl}.  In directory @file{~/proj/foo/}, 
you create a new
+templates.texi(,305) file @file{TEMPLATE.java.tpl}.
+templates.texi(,306) @end itemize
+templates.texi(,307) 
+templates.texi(,308) The creation of the template files in the right directory 
is already enough for
+templates.texi(,309) packages Template to find the most appropriate template 
for a new file:
+templates.texi(,310) 
+templates.texi(,311) @itemize
+templates.texi(,312) @item
+templates.texi(,313) If you create a new file @file{~/proj/foo/abc.java}, this 
package tries
+templates.texi(,314) to find a template based on the file extension of the new 
file.  The
+templates.texi(,315) generic base file name for a template is @file{TEMPLATE} 
and the
+templates.texi(,316) additional extension is @file{.tpl}, a file 
@file{TEMPLATE.java.tpl}
+templates.texi(,317) exists in @file{~/proj/foo/}, so that file is used as the 
template.
+templates.texi(,318) @item
+templates.texi(,319) If you create a new file @file{~/proj/bar/abc.java}, this 
package again
+templates.texi(,320) tries to find @file{TEMPLATE.java.tpl}.  Since this file 
doesn't exist
+templates.texi(,321) in @file{~/proj/bar/}, it first inspects the subdirectory
+templates.texi(,322) @file{Templates/} which doesn't exist.  The search 
continues with the
+templates.texi(,323) parent directory @file{~/proj/} and then its subdirectory
+templates.texi(,324) @file{Templates/}.  Thus 
@file{~/proj/Templates/TEMPLATE.java.tpl} will
+templates.texi(,325) be used.
+templates.texi(,326) @item
+templates.texi(,327) If you create a new file @file{~/proj/foo/proj.java}, 
this package finds
+templates.texi(,328) a template file with the same base name: it uses
+templates.texi(,329) @file{~/proj/Templates/proj.java.tpl}.  You might argue 
that
+templates.texi(,330) @file{~/proj/foo/TEMPLATE.java.tpl} resides in a more 
specific
+templates.texi(,331) directory, but having the same base name is considered to 
be more
+templates.texi(,332) important (remember that some file like Makefiles do not 
have file
+templates.texi(,333) extensions).
+templates.texi(,334) @item
+templates.texi(,335) If you create a new file 
@file{~/other_proj/foo/proj.java}, i.e., a
+templates.texi(,336) project where you have defined no template files, this 
package uses one
+templates.texi(,337) of the default templates, in this case
+templates.texi(,338) @file{~/.templates/TEMPLATE.java.tpl}.
+templates.texi(,339) @end itemize
+templates.texi(,340) 
+templates.texi(,341) For more on derivation @xref{Derivation}.
+templates.texi(,342) 
+templates.texi(,343) @c 
--------------------------------------------------------------------------------
+templates.texi(,344) 
+templates.texi(,345) @node creating,,,Basics
+templates.texi(,346) @section  Creating a Template
+templates.texi(,347) @c 
--------------------------------------------------------------------------------
+templates.texi(,348) 
+templates.texi(,349) There are various predefined expansions which are 
probably enough for
+templates.texi(,350) most templates.  A corresponding expansion forms can be 
easily inserted
+templates.texi(,351) by selecting the appropriate entry in the new submenu  
@kbd{Template
+templates.texi(,352) Creation}
+templates.texi(,353) :
+templates.texi(,354) 
+templates.texi(,355) @itemize
+templates.texi(,356) @item
+templates.texi(,357) Remember positions: use @samp{(>>>POINT<<<)} to set point 
(the cursor
+templates.texi(,358) position), @samp{(>>>MARK<<<)} to set mark (e.g., the 
opposite position
+templates.texi(,359) when a region is highlighted), and @samp{(>>>1<<<)} to 
@samp{(>>>0<<<)}
+templates.texi(,360) to registers to the current position.  Remember that 
@kbd{C-x r j
+templates.texi(,361) @var{Key}} jumps to the position stored in register 
@var{Key}.
+templates.texi(,362) @item
+templates.texi(,363) 
+templates.texi(,364) Insert parts of the file name, e.g., when creating the 
new file
+templates.texi(,365) @file{~/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is 
replaced by
+templates.texi(,366) @file{/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by 
@file{abc1.java},
+templates.texi(,367) @samp{(>>>FILE_SANS<<<)} by @file{abc1} , 
@samp{(>>>FILE_UPCASE<<<)} by
+templates.texi(,368) @file{ABC1} , @samp{(>>>FILE_RAW<<<)} by @file{abc},
+templates.texi(,369) @samp{(>>>FILE_NUM<<<)} by @file{1} , and 
@samp{(>>>FILE_EXT<<<)} by
+templates.texi(,370) @file{java}.
+templates.texi(,371) @item
+templates.texi(,372) Insert the current date/time in two customizable and 
three fixed
+templates.texi(,373) formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
+templates.texi(,374) @samp{(>>>TIME<<<)} for @samp{20:01:13} , 
@samp{(>>>YEAR<<<)} for
+templates.texi(,375) @samp{2002} , @samp{(>>>ISO_DATE<<<)} for 
@samp{2002-02-20} , and
+templates.texi(,376) @samp{(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
+templates.texi(,377) @item
+templates.texi(,378) Insert the user/system name in various formats: use
+templates.texi(,379) @samp{(>>>AUTHOR<<<)} for @email{Christoph Wedler
+templates.texi(,380) <wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
+templates.texi(,381) @samp{Christoph Wedler} , @samp{(>>>LOGIN_NAME<<<)} for 
@samp{wedler} ,
+templates.texi(,382) and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} 
.
+templates.texi(,383) @item
+templates.texi(,384) Ask the user for some initial comment.  If this expansion 
is used, the buffer
+templates.texi(,385) for the new file will be marked as modified.  For each 
undefined expansion, the
+templates.texi(,386) user is also asked.
+templates.texi(,387) @item
+templates.texi(,388) Disabling the search for expansion forms:
+templates.texi(,389) @samp{(>>>ZERO_FORM<<<)} can be inserted into a string 
which
+templates.texi(,390) will be otherwise regarded as an expansion form, the 
region between
+templates.texi(,391) @samp{(>>>LITERAL<<<)} and the first
+templates.texi(,392) @samp{(>>>/LITERAL<<<)} after it will be skipped.
+templates.texi(,393) @end itemize
+templates.texi(,394)     
+templates.texi(,395) You can define your own expansions in your Emacs init 
file and at the end of a
+templates.texi(,396) template file.  A corresponding definition can be easily 
inserted by selecting
+templates.texi(,397) the appropriate entry in the new submenu  @kbd{Template
+templates.texi(,398) Creation}:
+templates.texi(,399)     
+templates.texi(,400) @itemize
+templates.texi(,401) 
+templates.texi(,402) @item
+templates.texi(,403) @kbd{Define User Input}
+templates.texi(,404) .  Ask the user to insert some text
+templates.texi(,405) using some specific prompt.  Optionally, ask for a text 
with completion, or for
+templates.texi(,406) a sequence of user input (exit with empty input).
+templates.texi(,407) @item
+templates.texi(,408) @kbd{Define Text Register} 
+templates.texi(,409) .  Define a text for
+templates.texi(,410) register @var{Reg} which can be inserted with @kbd{C-x r 
i @var{Reg}}.
+templates.texi(,411) Optionally, provide a comment for it which will be 
temporarily shown at
+templates.texi(,412) point.
+templates.texi(,413) @item
+templates.texi(,414) @kbd{Define Message}
+templates.texi(,415) .  Define a message which will be
+templates.texi(,416) temporarily shown at point or before/after the expansion 
in a special buffer.
+templates.texi(,417) There is also a computed message in the echo area.
+templates.texi(,418) @item
+templates.texi(,419) 
+templates.texi(,420) Execute some Lisp coding defined at the end of the 
template.  By default, you
+templates.texi(,421) have to confirm it first, since it is insecure to execute 
unchecked coding.
+templates.texi(,422) (You do not have menu support to define this kind of 
expansion.)
+templates.texi(,423) @end itemize
+templates.texi(,424) 
+templates.texi(,425) @defopt template-default-expansion-alist
+templates.texi(,426) @end defopt
+templates.texi(,427) @defopt template-definition-start
+templates.texi(,428) @end defopt
+templates.texi(,429) 
+templates.texi(,430)     
+templates.texi(,431) @c 
--------------------------------------------------------------------------------
+templates.texi(,432) 
+templates.texi(,433) @node decorating,,,Basics
+templates.texi(,434) @section  Decorating a Comment
+templates.texi(,435) @c 
--------------------------------------------------------------------------------
+templates.texi(,436) 
+templates.texi(,437) There are commands to decorate comments with dashes and 
alike (@samp{-},
+templates.texi(,438) @samp{=} and @samp{#} by default).  Both commands are 
included in the
+templates.texi(,439) new submenu @kbd{Comments} 
+templates.texi(,440) and bound to keys:
+templates.texi(,441) 
+templates.texi(,442) @itemize
+templates.texi(,443) @item
+templates.texi(,444) Use command @code{template-single-comment} to jump to the
+templates.texi(,445) end of the current line and insert the dashes and the 
final
+templates.texi(,446) comment end-string up-to the fill position.  This command 
works with any
+templates.texi(,447) comment style, including for languages having mixed 
comments like C++ and Java.
+templates.texi(,448) It also works in major modes without a defined comment 
syntax.
+templates.texi(,449) @item
+templates.texi(,450) Use command @code{template-block-comment} to surround the
+templates.texi(,451) current comment block (i.e., contiguous comment lines) 
with extra lines
+templates.texi(,452) containing dashes and alike and to put the correct number 
of newlines around
+templates.texi(,453) the block.  This command only works with comments which 
are terminated with the
+templates.texi(,454) end of the line (like Java's @code{//address@hidden code 
class=text
+templates.texi(,455)  comment).
+templates.texi(,456) @end itemize
+templates.texi(,457) 
+templates.texi(,458) The comment decoration style is highly customizable and 
can be controlled by
+templates.texi(,459) 
+templates.texi(,460) @itemize
+templates.texi(,461) @item
+templates.texi(,462) The prefix argument given to the two commands.
+templates.texi(,463) @item
+templates.texi(,464) The existing comment decoration style when present.
+templates.texi(,465) @item
+templates.texi(,466) Determined by the indentation or the repetition of a 
single-character comment
+templates.texi(,467) start (like Emacs-Lisp's @code{;address@hidden code 
class=text
+templates.texi(,468) ).
+templates.texi(,469) @end itemize
+templates.texi(,470) 
+templates.texi(,471) For more on comments @xref{Comments}.
+templates.texi(,472) 
+templates.texi(,473) @c 
--------------------------------------------------------------------------------
+templates.texi(,474) 
+templates.texi(,475) @node updating,,,Basics
+templates.texi(,476) @section  Updating a Buffer
+templates.texi(,477) @c 
--------------------------------------------------------------------------------
+templates.texi(,478) A buffer is automatically updated according to some rules 
when saving
+templates.texi(,479) the file.  This updating can be invoked explicitly by 
selecting the menu
+templates.texi(,480) entry @kbd{Update Buffer} in the new submenu 
@kbd{Comments} .
+templates.texi(,481) 
+templates.texi(,482) @itemize
+templates.texi(,483) @item
+templates.texi(,484) Update the file name in the first three lines of the 
buffer if the file name is
+templates.texi(,485) indicated by @code{@@(#) @address@hidden code class=text
+templates.texi(,486)  or
+templates.texi(,487) @code{;;; @var{FileName} address@hidden code class=text
+templates.texi(,488)  where
+templates.texi(,489) @code{;;;address@hidden code class=text
+templates.texi(,490)  stands for any comment start (with optional
+templates.texi(,491) repetition of a single-character comment start).
+templates.texi(,492) @item
+templates.texi(,493) Update the date if it is the last text inside the
+templates.texi(,494) @address@hidden code class=html
+templates.texi(,495)  element of a HTML buffer.
+templates.texi(,496) @item
+templates.texi(,497) Automatic updating is optional, as is user confirmation 
for it.  Automatic
+templates.texi(,498) updating can be disabled for buffers whose file name 
matches a regular
+templates.texi(,499) expression.
+templates.texi(,500) @item
+templates.texi(,501) If nothing will be changed by the updating, there will be 
no user confirmation
+templates.texi(,502) and the buffer will not be marked as modified.
+templates.texi(,503) @end itemize
+templates.texi(,504) 
+templates.texi(,505) @defopt template-update-buffer
+templates.texi(,506) @end defopt
+templates.texi(,507) @defopt template-auto-update
+templates.texi(,508) @end defopt
+templates.texi(,509) @defopt template-update-buffer-alist
+templates.texi(,510) @end defopt
+templates.texi(,511) @defopt template-header-regexp-alist
+templates.texi(,512) @end defopt
+templates.texi(,513) 
+templates.texi(,514) @node Advanced,,,Top  
+templates.texi(,515) @chapter Templates for advanced users
+templates.texi(,516) 
+templates.texi(,517) @menu
+templates.texi(,518) * Customization:: Templates customization.
+templates.texi(,519) @end menu
+templates.texi(,520) 
+templates.texi(,521) @node Customization,,,Advanced
+templates.texi(,522) @section Templates customization
+templates.texi(,523) 
+templates.texi(,524) @menu
+templates.texi(,525) * Expansion:: Customization of keyword expansion rules.
+templates.texi(,526) * Derivation:: Customization of how templates are derived.
+templates.texi(,527) * Comments:: Customization of comments.
+templates.texi(,528) @end menu
+templates.texi(,529) 
+templates.texi(,530) @node Expansion,,,Customization
+templates.texi(,531) @subsection Customization of keyword expansion rules
+templates.texi(,532) 
+templates.texi(,533) @deffn {Interactive Command} template-new-file {file 
template with-undo}
+templates.texi(,534) Open a new file @var{file} by using a @var{template}.
+templates.texi(,535) Using a template for creating a new file consists of, 
steps 1 to 3 are
+templates.texi(,536) only executed when called interactively:
+templates.texi(,537) @enumerate
+templates.texi(,538) @item
+templates.texi(,539) Prompt for the name of the new file.
+templates.texi(,540) @item
+templates.texi(,541) Template derivation: suggest a reasonable template file 
to the user see
+templates.texi(,542) @code{template-derivation-alist}.
+templates.texi(,543) @item
+templates.texi(,544) File name refinement: e.g., if the given file name is 
@file{exercise}
+templates.texi(,545) and there are two files @file{exercise1.tex} and 
@file{exercise2.tex} in
+templates.texi(,546) the same directory and if we have a template 
@file{exercise.tex.tpl},
+templates.texi(,547) the file name is refined to @file{exercise3.tex}.  This 
is turned off
+templates.texi(,548) when @kbd{C-x t} is called with a prefix argument.
+templates.texi(,549) @item
+templates.texi(,550) Template insertion: insert the template file into the 
empty buffer.
+templates.texi(,551) @item
+templates.texi(,552) Read per-template expansion definition section starting at
+templates.texi(,553) @code{template-definition-start} and delete it.
+templates.texi(,554) @item
+templates.texi(,555) Display: before message in @code{template-message-buffer}.
+templates.texi(,556) @item
+templates.texi(,557) Execute pre-expansion commands defined in the definition 
section.
+templates.texi(,558) @item
+templates.texi(,559) Set local variables defined in the definition section.
+templates.texi(,560) @item
+templates.texi(,561) Expansion: expand the expansion forms (text matched by
+templates.texi(,562) @code{template-expansion-regexp}) They are defined in the 
definition
+templates.texi(,563) section, in @code{template-expansion-alist}, or provided 
by default,
+templates.texi(,564) see @code{template-expansion-regexp} and
+templates.texi(,565) @code{template-register-regexp}.
+templates.texi(,566) @item
+templates.texi(,567) Execute post-expansion commands defined in the definition 
section.
+templates.texi(,568) @item
+templates.texi(,569) Run @code{normal-mode} and functions in 
@code{find-file-hooks}.
+templates.texi(,570) @item
+templates.texi(,571) Update header according to 
@command{template-update-header} with
+templates.texi(,572) @c Vincent: What is this if-exists argument ?
+templates.texi(,573) argument @code{if-exists}.
+templates.texi(,574) @item
+templates.texi(,575) Display: after message in @code{template-message-buffer}.
+templates.texi(,576) @item
+templates.texi(,577) Report: display a temporary message at point defined in 
the definition
+templates.texi(,578) section and an automatically generated message in the 
minibuffer area,
+templates.texi(,579) see @code{template-message-timeout}.
+templates.texi(,580) @end enumerate
+templates.texi(,581) If optional @var{with-undo} is non-nil, store 
corresponding changes in
+templates.texi(,582) @code{buffer-undo-list}.  If @var{file} is nil, the 
buffer for @var{file} has
+templates.texi(,583) already been created and the accessible part will be 
replaced by the
+templates.texi(,584) expanded template.  If @var{template} is nil (empty input 
when called
+templates.texi(,585) interactively), do not use a template.
+templates.texi(,586) @end deffn
+templates.texi(,587) 
+templates.texi(,588) @defopt template-auto-insert
+templates.texi(,589) @end defopt
+templates.texi(,590) 
+templates.texi(,591) @node Derivation,,,Customization
+templates.texi(,592) @subsection Customization of how templates are derived
+templates.texi(,593) 
+templates.texi(,594) @defopt template-derivation-alist
+templates.texi(,595) @end defopt
+templates.texi(,596) 
+templates.texi(,597) @node Comments,,,Customization
+templates.texi(,598) @subsection Customization of comments
+templates.texi(,599) 
+templates.texi(,600) @defopt template-single-comment
+templates.texi(,601) @end defopt
+templates.texi(,602) 
+templates.texi(,603) @deffn {Interactive command} template-block-comment arg
+templates.texi(,604) It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> 
<Comment> <Decorate Comment Block>}.
+templates.texi(,605) 
+templates.texi(,606) Decorate the current block of comment-only lines with 
dashes and alike.
+templates.texi(,607) That is, surround the the contiguous comment-only lines 
around point
+templates.texi(,608) with extra lines containing dashes and alike and to put 
the correct
+templates.texi(,609) number of newlines around the block.
+templates.texi(,610) 
+templates.texi(,611) Barf if the comment syntax at point has a non-empty 
@code{comment-end} or if
+templates.texi(,612) point is not in a comment-only line.
+templates.texi(,613) 
+templates.texi(,614) A block comment consists of all neighboring lines which 
start with
+templates.texi(,615) spaces and @code{comment-start}.  If @code{comment-start} 
is a string of length 1,
+templates.texi(,616) the number of repetitions of @code{comment-start} must be 
the same or larger
+templates.texi(,617) than in the line where the command is invoked from, too.
+templates.texi(,618) 
+templates.texi(,619) Prefix argument @var{arg} and 
@code{template-comment-specification} determines the
+templates.texi(,620) comment style to use.  The length of the separator line 
is determined by
+templates.texi(,621) @code{template-max-column}.
+templates.texi(,622) 
+templates.texi(,623) This command can also be used with point in an empty line 
after a block
+templates.texi(,624) comment.  A second invocation of this command directly 
after a
+templates.texi(,625) successful invocation deletes the remaining empty lines 
from the current
+templates.texi(,626) line on.
+templates.texi(,627) @end deffn
+templates.texi(,628) 
+templates.texi(,629) @defopt template-comment-specification-alist
+templates.texi(,630) List of specifications for comment functions.  Each 
specification at
+templates.texi(,631) @var{level}, starting at 1, is a list 
@code{(@var{separator}
+templates.texi(,632) @var{before-block} @var{after-block} @var{DELETE-LINES})}
+templates.texi(,633) 
+templates.texi(,634) @var{separator} is the string which is inserted 
repeatedly by commands
+templates.texi(,635) @kbd{C-x C-=} and @kbd{C-x C-;} up to 
@code{template-max-column}.
+templates.texi(,636) 
+templates.texi(,637) After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} 
after the comment block
+templates.texi(,638) and inserts string @var{after-block} at the end of the 
block and
+templates.texi(,639) @var{before-block} at the front of the block.
+templates.texi(,640) 
+templates.texi(,641) The specification @var{level} to use is determined by:
+templates.texi(,642) @enumerate
+templates.texi(,643) @item
+templates.texi(,644) If the prefix argument is non-nil and its numeric value 
is > 0, this
+templates.texi(,645) value is the @var{level}.
+templates.texi(,646) @item
+templates.texi(,647) If the prefix argument is nil, and there is an old 
comment style, use
+templates.texi(,648) old comment style.
+templates.texi(,649) @item
+templates.texi(,650) If @code{template-comment-specification-special} is a 
function or the
+templates.texi(,651) current major mode has a property with this name and its 
value is a
+templates.texi(,652) function, this function returns the specification.
+templates.texi(,653) @item
+templates.texi(,654) If @code{comment-end} is empty and @code{comment-start} 
is a string of
+templates.texi(,655) length 1: @var{level} is number of repetitions of 
@code{comment-start}
+templates.texi(,656) at the beginning of the line.  Otherwise, if the 
correctly indented line
+templates.texi(,657) starts at the beginning of the line, @var{level}=3, else 
@var{level}=2.
+templates.texi(,658) @end enumerate
+templates.texi(,659) @end defopt
+templates.texi(,660) 
+templates.texi(,661) 
+templates.texi(,662) @node Indexes,,,Top  
+templates.texi(,663) @chapter Indexes for commands, keyword, and variable
+templates.texi(,664) 
+templates.texi(,665) @menu
+templates.texi(,666) * Keyword Index:: Keyword Index.
+templates.texi(,667) * Command Index:: Command Index.
+templates.texi(,668) * Variable Index:: Customizable Variable Index.
+templates.texi(,669) @end menu
+templates.texi(,670) 
+templates.texi(,671) @node Keyword Index,,,Indexes
+templates.texi(,672) @section Keyword Index
+templates.texi(,673) 
+templates.texi(,674) @node Command Index,,,Indexes
+templates.texi(,675) @section Keyword Index
+templates.texi(,676) 
+templates.texi(,677) @printindex fn
+templates.texi(,678) 
+templates.texi(,679) @node Variable Index,,,Indexes
+templates.texi(,680) @section Variable Index
+templates.texi(,681) 
+templates.texi(,682) @printindex vr
+templates.texi(,683) 
+templates.texi(,684) @node News,,,Top  
+templates.texi(,685) @chapter News for Package Template
+templates.texi(,686) 
+templates.texi(,687) @table @asis
+templates.texi(,688) @item Latest Version:
+templates.texi(,689) @strong{3.1c} (21 Aug 2003).
+templates.texi(,690) @item Requirements:
+templates.texi(,691) @cite{Emacs-20.2}, @cite{XEmacs-20.2}, or higher.  
+templates.texi(,692) 
+templates.texi(,693) No menu support for Emacs before Version 21.1.
+templates.texi(,694) @item Licence: 
+templates.texi(,695) @cite{GNU General Public License}.
+templates.texi(,696) @end table
+templates.texi(,697) 
+templates.texi(,698) @section Changes with Release 3.1c
+templates.texi(,699) 
+templates.texi(,700) @itemize
+templates.texi(,701) @item
+templates.texi(,702) Bug fix: on XEmacs, initialization would fail without 
menus "File" and "Edit" in menubar.
+templates.texi(,703) @item
+templates.texi(,704) Allow messages to be displayed in a separate buffer 
"*Template Messages*"
+templates.texi(,705) instead at point.
+templates.texi(,706) @item
+templates.texi(,707) Correct and improve header updating.
+templates.texi(,708) @item
+templates.texi(,709) Extend use of @code{M-x template-single-comment}.
+templates.texi(,710) @item
+templates.texi(,711) Minor bug fixes.  Miscellaneous.
+templates.texi(,712) @end itemize
+templates.texi(,713) 
+templates.texi(,714)     
+templates.texi(,715) @section Changes with Release 3.1
+templates.texi(,716) 
+templates.texi(,717) @itemize
+templates.texi(,718) @item
+templates.texi(,719) Moved to SourceForge.net.  Less technical description on 
web page.
+templates.texi(,720) @item
+templates.texi(,721) Remove examples from distribution, they were more 
confusing than helpful.
+templates.texi(,722) @item
+templates.texi(,723) Bug fix: would sometimes indent the current line when 
using the menubar.
+templates.texi(,724) @item
+templates.texi(,725) Menus work with Emacs-21, too.  Rename some menu entries.
+templates.texi(,726) @item
+templates.texi(,727) Don't search further for remote templates.  Nuke this 
home/base directory
+templates.texi(,728) stuff, stop search at root.
+templates.texi(,729) @item
+templates.texi(,730) Don't rely on command @command{ffap} to always add an 
entry to
+templates.texi(,731) @code{command-history} if the filename is read from 
terminal.  Special
+templates.texi(,732) setup for @code{ffap} and @code{html-helper}.
+templates.texi(,733) @item
+templates.texi(,734) Make date/time formats work as names suggest.
+templates.texi(,735) @item
+templates.texi(,736) Command to insert & expand a template file.
+templates.texi(,737) @item
+templates.texi(,738) Allow user to define a choice in the definition section 
to be answered
+templates.texi(,739) via @code{y-or-n-p}.
+templates.texi(,740) @item
+templates.texi(,741) Various miscellaneous improvements.  Minor bug fixes.
+templates.texi(,742) @end itemize
+templates.texi(,743)     
+templates.texi(,744) @node Acknowledgements,,,Top  
+templates.texi(,745) 
+templates.texi(,746) Christoph Wedler 
@uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+templates.texi(,747) 
+templates.texi(,748) 
+templates.texi(,749) @bye

Index: misc/res_all/texi_templates/templates.passtexi
===================================================================
RCS file: misc/res_all/texi_templates/templates.passtexi
diff -N misc/res_all/texi_templates/templates.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_all/texi_templates/templates.passtexi      2 Aug 2009 13:13:18 
-0000       1.1
@@ -0,0 +1,746 @@
+templates.texi(,2) @c %**start of header
+templates.texi(,3) @setfilename templates.info
+templates.texi(,4) @documentencoding iso-8859-1
+templates.texi(,5) @documentlanguage en
+templates.texi(,6) @settitle  Emacs template package documentation, version 
3.1c
+templates.texi(,7) @c %**end of header
+templates.texi(,8) @alias kbdmenu = kbd
+templates.texi(,9) @alias codetpl = samp
+templates.texi(,10) @alias codevar = code
+templates.texi(,11) 
+templates.texi(,12) @copying
+templates.texi(,13) This is the Emacs template package documentation, version 
3.1c
+templates.texi(,14) Copyright @copyright{} 2008 Christoph Wedler, Vincent 
Belaïche.
+templates.texi(,15) 
+templates.texi(,16) @quotation
+templates.texi(,17) Permission is granted to ...
+templates.texi(,18) @end quotation
+templates.texi(,19) @end copying
+templates.texi(,20) 
+templates.texi(,21) @dircategory Emacs
+templates.texi(,22) @direntry
+templates.texi(,23) * Templates: (templates). Creating templates for files 
creation.
+templates.texi(,24) @end direntry
+templates.texi(,25) 
+templates.texi(,26) 
+templates.texi(,27) @titlepage
+templates.texi(,28) @title Emacs template package manual
+templates.texi(,29) @subtitle Details of Package Template
+templates.texi(,30) @author Christoph Wedler
+templates.texi(,31) 
+templates.texi(,32) @c  The following two commands
+templates.texi(,33) @c  start the copyright page.
+templates.texi(,34) @page
+templates.texi(,35) @vskip 0pt plus 1filll
+templates.texi(,36) @insertcopying
+templates.texi(,37) 
+templates.texi(,38) Published by ...
+templates.texi(,39) @end titlepage
+templates.texi(,40) 
+templates.texi(,42) @node Top,,,(dir)top
+templates.texi(,43) @top Top node.
+templates.texi(,44) 
+templates.texi(,45) This is the manual of Emacs template package
+templates.texi(,47) 
+templates.texi(,48) @menu
+templates.texi(,49) * Overview:: Overview.
+templates.texi(,50) * Installation:: how to install the template package.
+templates.texi(,51) * Basics:: How to make and use templates.
+templates.texi(,52) * Advanced:: Templates for advanced users.
+templates.texi(,53) * Indexes:: Indexes for commands, keyword, and variable.
+templates.texi(,54) * News:: News for Package Template.
+templates.texi(,55) * Acknowledgements:: Acknowledgements.
+templates.texi(,56) @end menu
+templates.texi(,57) 
+templates.texi(,58) @node Overview,,,Top
+templates.texi(,59) @chapter Overview
+templates.texi(,60) 
+templates.texi(,61) When you create a new file with Emacs, package Template 
supplies an initial
+templates.texi(,62) buffer content via a template: a file with normal text and 
expansion forms.
+templates.texi(,63) There is a menu to easily create such templates.  You can 
also use new commands
+templates.texi(,64) to decorate comments and update the buffer contents.
+templates.texi(,65) 
+templates.texi(,66) 
+templates.texi(,67) The main difference between Template and 
@ref{Related,other similar
+templates.texi(,68) packages} is that you can define very flexible templates 
without having
+templates.texi(,69) to learn Lisp or changing your Emacs init file.  This 
package does not
+templates.texi(,70) help Lisp programmers to define complex macros.
+templates.texi(,71) 
+templates.texi(,72) @itemize
+templates.texi(,73) @item
+templates.texi(,74) The template mechanism is hooked into the normal find/open 
file command.  There
+templates.texi(,75) are also new commands for creating a new file using a 
template and inserting &amp;
+templates.texi(,76) expanding a template.
+templates.texi(,77) @item
+templates.texi(,78) You do not have to enter the file name of the template 
file.  This package uses
+templates.texi(,79) a sophisticated search to find the most appropritate 
template (supporting
+templates.texi(,80) project- and subproject specific template files).  You can 
change the
+templates.texi(,81) suggestion, of course.
+templates.texi(,82) @item
+templates.texi(,83) A template file can be easily created.  Most of the file 
usually contains
+templates.texi(,84) simple text; only @dfn{expansion forms} which look like
+templates.texi(,85) @samp{(>>>@var{Key}<<<)} will get replaced.
+templates.texi(,86) @item
+templates.texi(,87) There are various useful predefined expansions: set point 
(the cursor
+templates.texi(,88) position), mark and registers to the current position; 
insert various parts of
+templates.texi(,89) the filename, the user/system name, the current date/time 
in various formats,
+templates.texi(,90) and some text to be entered by the user.
+templates.texi(,91) @item
+templates.texi(,92) Template-specific expansions can be defined at the end of 
the template file.
+templates.texi(,93) There are commands to create these definitions; only 
complex expansions would
+templates.texi(,94) require some knowledge of Lisp.
+templates.texi(,95) @end itemize
+templates.texi(,96) 
+templates.texi(,97) There is a menu to support the creation of template files. 
 Additionally, this
+templates.texi(,98) package provides the following features:
+templates.texi(,99) 
+templates.texi(,100) @itemize
+templates.texi(,101) @item
+templates.texi(,102) When saving a buffer, some parts of the buffer contents 
(header and time
+templates.texi(,103) stamps) are automatically updated if necessary.
+templates.texi(,104) @item
+templates.texi(,105) There are commands to decorate comments with dashes and 
alike.  Works for
+templates.texi(,106) languages with any comment style, even languages having 
mixed comments like C++
+templates.texi(,107) and Java.
+templates.texi(,108) @end itemize
+templates.texi(,109) 
+templates.texi(,110) 
+templates.texi(,111) @node Related,,,Overview
+templates.texi(,112) @section Packages Related to Template
+templates.texi(,113) 
+templates.texi(,114) 
+templates.texi(,115) There are template packages of two different categories, 
which are determined
+templates.texi(,116) by one question:
+templates.texi(,117) 
+templates.texi(,118) @emph{What do you want to do with templates?} Do you want 
to use templates
+templates.texi(,119) when creating new files, or do you want to insert some 
stuff during editing
+templates.texi(,120) (but you are not satisfied with the standard macro 
mechanism)?
+templates.texi(,121) 
+templates.texi(,122) Well, templates could be seen as both new-file templates 
and macro-like
+templates.texi(,123) template, but the main application of templates 
determines the answers for the
+templates.texi(,124) following questions:
+templates.texi(,125)       
+templates.texi(,126) @itemize
+templates.texi(,127) @item
+templates.texi(,128) @emph{How do you define a template?} You can define it by 
one file per
+templates.texi(,129) template or by customizing some Emacs variables.  The 
first solution (which is
+templates.texi(,130) used by package Template) avoids Emacs hacking but might 
not be optimal if you
+templates.texi(,131) just want to define complex macros or if you want to use 
templates to program a
+templates.texi(,132) new Emacs major-mode.
+templates.texi(,133) @item
+templates.texi(,134) @emph{How is an appropriate template selected?} If you 
want to use complex
+templates.texi(,135) macro during editing, the answer is clear: the user have 
to provide the name of
+templates.texi(,136) the template.  For new files, the appropriate template 
should be automatically
+templates.texi(,137) selected.  But of course, you don't want to loose any 
flexibility and you don't
+templates.texi(,138) want to customize your Emacs for every project you start.
+templates.texi(,139) @item
+templates.texi(,140) @emph{How do you do "clever" things in the template?} The 
aims are to have
+templates.texi(,141) many predefined expansions (e.g., the current date) and 
to define some
+templates.texi(,142) non-trivial things without learning Lisp.  Any 
functionality here is the
+templates.texi(,143) overlapping point of both template categories.
+templates.texi(,144) @end itemize
+templates.texi(,145) 
+templates.texi(,146) 
+templates.texi(,147) 
+templates.texi(,148) Here is a little list of related files, collected around 
1998, some discarded
+templates.texi(,149) later (no @abbr{URL}s, no active updating, but you can 
send me a mail):
+templates.texi(,150) 
+templates.texi(,151) @itemize
+templates.texi(,152) @item
+templates.texi(,153) Package @cite{autoinsert.el} uses templates when creating 
new files.
+templates.texi(,154) These templates are defined via files or by customizing 
Emacs.  For each new
+templates.texi(,155) template you want to introduce, you must customize your 
Emacs, the selection is
+templates.texi(,156) restricted to one template per major-mode or regexp 
match.  No predefined
+templates.texi(,157) expansions; clever things are provided by usual Lisp 
expressions or the
+templates.texi(,158) macro-like templates of package @cite{skeleton}.
+templates.texi(,159) @item
+templates.texi(,160) Package @cite{skeleton.el} is a Lisp language extension 
for
+templates.texi(,161) writing statement skeletons, i.e., you get macro-like 
Lisp commands.
+templates.texi(,162) @item
+templates.texi(,163) Package @cite{tempo.el} helps you defining and using 
named macro-like
+templates.texi(,164) templates.  Its predefined macros are similar to some 
predefined expansions of
+templates.texi(,165) package Template.  A specific template is used by
+templates.texi(,166) <code class="lisp">html-helper-mode</code> when creating 
a new html file.
+templates.texi(,167) (This is turned off with the default installation of 
package Template.)
+templates.texi(,168) @item
+templates.texi(,169) Package @cite{hm--html-menus} provides a command to 
insert templates
+templates.texi(,170) editing.  These templates are defined via files.  There 
are no predefined
+templates.texi(,171) expansions (except setting point), non-trivial expansions 
are defined via Lisp.
+templates.texi(,172) @end itemize
+templates.texi(,173) 
+templates.texi(,174) 
+templates.texi(,175) 
+templates.texi(,176) 
+templates.texi(,177) @node Installation,,,Top
+templates.texi(,178) @chapter Installation
+templates.texi(,179) 
+templates.texi(,180) @section Installation Instructions
+templates.texi(,181) 
+templates.texi(,182) @enumerate
+templates.texi(,183) @item
+templates.texi(,184) Copy file @file{template/lisp/template.el} into your
+templates.texi(,185) load-path and byte-compile it.
+templates.texi(,186) @item
+templates.texi(,187) Insert the following code into your Emacs init file
+templates.texi(,188) (@file{~/.emacs}):
+templates.texi(,189) 
+templates.texi(,190) @lisp
+templates.texi(,191) (require 'template)
+templates.texi(,192) (template-initialize)
+templates.texi(,193) @end lisp
+templates.texi(,194) 
+templates.texi(,195) @item
+templates.texi(,196) If you want to customize package Template, use @kbd{M-x
+templates.texi(,197) customize-group @key{RET} template
+templates.texi(,198) @key{RET}} or the customize entry in menu
+templates.texi(,199) @kbd{Options}.
+templates.texi(,200) @item
+templates.texi(,201) You might want to copy the template files from directory
+templates.texi(,202) @file{template/templates/} to
+templates.texi(,203) @file{~/.templates/} and change them according to your
+templates.texi(,204) preferences.
+templates.texi(,205) @end enumerate
+templates.texi(,206) 
+templates.texi(,207) 
+templates.texi(,208) Installation instructions with further explanations can 
be found in file
+templates.texi(,209) @file{template/INSTALL} of the distribution.
+templates.texi(,210) 
+templates.texi(,211)  
+templates.texi(,212) 
+templates.texi(,213) @node Basics,,,Top
+templates.texi(,214) @chapter Basics
+templates.texi(,215) 
+templates.texi(,216) Emacs, template, file template, comment decoration, 
auto-updating, time stamp, details
+templates.texi(,217) 
+templates.texi(,218) @menu
+templates.texi(,219) * menus:: Menus and Key-Bindings.
+templates.texi(,220) * using:: Using a Template.
+templates.texi(,221) * finding:: Finding a Template.
+templates.texi(,222) * creating:: Creating a Template.
+templates.texi(,223) * decorating:: Decorating a Comment.
+templates.texi(,224) * updating:: Updating a Buffer.
+templates.texi(,225) @end menu
+templates.texi(,226) 
+templates.texi(,227) @node menus,,,Basics
+templates.texi(,228) @section  Menus and Key-Bindings
+templates.texi(,229) @c 
--------------------------------------------------------------------------------
+templates.texi(,230) For Emacs-21.1+ and XEmacs, this package defines the 
following menu entries and
+templates.texi(,231) key-bindings: 
+templates.texi(,232) 
+templates.texi(,233) @itemize
+templates.texi(,234) @item
+templates.texi(,235) In menu @kbd{File} , there is a new menu item @kbd{New 
File
+templates.texi(,236) Using Template...}  .  The corresponding command is also 
bound to the
+templates.texi(,237) key sequence @kbd{C-x t}.
+templates.texi(,238) @item
+templates.texi(,239) At the end of menu @kbd{Cmds} (in XEmacs if it exists) or 
menu
+templates.texi(,240)  @kbd{Edit} , there is a new submenu @kbd{Template 
Creation}.
+templates.texi(,241) @item
+templates.texi(,242) Enter @kbd{C-x C-=} (command 
@command{template-single-comment}) to
+templates.texi(,243) insert dashes and alike into the current line and end the 
comment.
+templates.texi(,244) @item
+templates.texi(,245) Enter @kbd{C-x C-;} (command 
@command{template-single-comment}) to
+templates.texi(,246) insert dashes and alike around the current comment block.
+templates.texi(,247) @item
+templates.texi(,248) At the end of menu @kbd{Edit} , there is a new submenu
+templates.texi(,249) @kbd{Comment}.  It also contains the two commands just 
mentioned.
+templates.texi(,250) @end itemize
+templates.texi(,251) 
+templates.texi(,252) @c 
--------------------------------------------------------------------------------
+templates.texi(,253) @node using,,,Basics
+templates.texi(,254) @section  Using a Template
+templates.texi(,255) @c 
--------------------------------------------------------------------------------
+templates.texi(,256) Package Template offers various ways how to use template 
files:
+templates.texi(,257) 
+templates.texi(,258) In Emacs, the usual way to create a new file is by typing 
@kbd{C-x C-f},
+templates.texi(,259) using the menu or the toolbar (running command 
@command{find-file} or
+templates.texi(,260) @command{ffap}) and entering a non-existent file name.  
In this case,
+templates.texi(,261) you will be asked whether to use a template for the new 
file.  You can
+templates.texi(,262) turn off this feature.
+templates.texi(,263) 
+templates.texi(,264) @itemize
+templates.texi(,265) @item
+templates.texi(,266) Here a first undefined xref @xref{EExpansion}.
+templates.texi(,267) There is a new command @command{template-new-file} 
@footnote{for the
+templates.texi(,268) menu entry and its key-binding type @kbd{C-h f 
template-new-file},
+templates.texi(,269) @xref{EExpansion}} to create a new file using a template. 
 Here, you have
+templates.texi(,270) the chance to edit the name of the template file.  This 
command also
+templates.texi(,271) supports file name refinement which is useful to create a 
file in a
+templates.texi(,272) series of files like @file{exercise2.tex} etc.
+templates.texi(,273) @item
+templates.texi(,274) There is also a command (@kbd{M-x 
template-expand-template})
+templates.texi(,275) to insert a template file into the current buffer and 
expand its expansion
+templates.texi(,276) forms.
+templates.texi(,277) @end itemize
+templates.texi(,278) 
+templates.texi(,279) 
+templates.texi(,280) For more @command{template-new-file} and 
@code{template-auto-insert},
+templates.texi(,281)  @xref{Expansion}.
+templates.texi(,282) 
+templates.texi(,283) @c 
--------------------------------------------------------------------------------
+templates.texi(,284) 
+templates.texi(,285) @node finding,,,Basics
+templates.texi(,286) @section  Finding a Template
+templates.texi(,287) @c 
--------------------------------------------------------------------------------
+templates.texi(,288) The algorithm for finding the most appropriate template 
can be best explained
+templates.texi(,289) with a little example:
+templates.texi(,290) 
+templates.texi(,291) @itemize
+templates.texi(,292) @item
+templates.texi(,293) You have a project @file{~/proj/} with subprojects 
@file{foo/} and
+templates.texi(,294) @file{bar/} containing @file{.java} files.
+templates.texi(,295) @item
+templates.texi(,296) You want to define a general template for the 
@file{.java} in your
+templates.texi(,297) project files, although @file{.java} files in subproject 
@file{foo/}
+templates.texi(,298) should use their own template.  You also want to define a 
special
+templates.texi(,299) template for all files @file{proj.java} in the project.
+templates.texi(,300) @item
+templates.texi(,301) Since you do not want to clutter the project directory 
with template
+templates.texi(,302) files, you first create a directory 
@file{~/proj/Templates/}.  In this
+templates.texi(,303) directory, you create new files @file{TEMPLATE.java.tpl} 
and
+templates.texi(,304) @file{proj.java.tpl}.  In directory @file{~/proj/foo/}, 
you create a new
+templates.texi(,305) file @file{TEMPLATE.java.tpl}.
+templates.texi(,306) @end itemize
+templates.texi(,307) 
+templates.texi(,308) The creation of the template files in the right directory 
is already enough for
+templates.texi(,309) packages Template to find the most appropriate template 
for a new file:
+templates.texi(,310) 
+templates.texi(,311) @itemize
+templates.texi(,312) @item
+templates.texi(,313) If you create a new file @file{~/proj/foo/abc.java}, this 
package tries
+templates.texi(,314) to find a template based on the file extension of the new 
file.  The
+templates.texi(,315) generic base file name for a template is @file{TEMPLATE} 
and the
+templates.texi(,316) additional extension is @file{.tpl}, a file 
@file{TEMPLATE.java.tpl}
+templates.texi(,317) exists in @file{~/proj/foo/}, so that file is used as the 
template.
+templates.texi(,318) @item
+templates.texi(,319) If you create a new file @file{~/proj/bar/abc.java}, this 
package again
+templates.texi(,320) tries to find @file{TEMPLATE.java.tpl}.  Since this file 
doesn't exist
+templates.texi(,321) in @file{~/proj/bar/}, it first inspects the subdirectory
+templates.texi(,322) @file{Templates/} which doesn't exist.  The search 
continues with the
+templates.texi(,323) parent directory @file{~/proj/} and then its subdirectory
+templates.texi(,324) @file{Templates/}.  Thus 
@file{~/proj/Templates/TEMPLATE.java.tpl} will
+templates.texi(,325) be used.
+templates.texi(,326) @item
+templates.texi(,327) If you create a new file @file{~/proj/foo/proj.java}, 
this package finds
+templates.texi(,328) a template file with the same base name: it uses
+templates.texi(,329) @file{~/proj/Templates/proj.java.tpl}.  You might argue 
that
+templates.texi(,330) @file{~/proj/foo/TEMPLATE.java.tpl} resides in a more 
specific
+templates.texi(,331) directory, but having the same base name is considered to 
be more
+templates.texi(,332) important (remember that some file like Makefiles do not 
have file
+templates.texi(,333) extensions).
+templates.texi(,334) @item
+templates.texi(,335) If you create a new file 
@file{~/other_proj/foo/proj.java}, i.e., a
+templates.texi(,336) project where you have defined no template files, this 
package uses one
+templates.texi(,337) of the default templates, in this case
+templates.texi(,338) @file{~/.templates/TEMPLATE.java.tpl}.
+templates.texi(,339) @end itemize
+templates.texi(,340) 
+templates.texi(,341) For more on derivation @xref{Derivation}.
+templates.texi(,342) 
+templates.texi(,343) @c 
--------------------------------------------------------------------------------
+templates.texi(,344) 
+templates.texi(,345) @node creating,,,Basics
+templates.texi(,346) @section  Creating a Template
+templates.texi(,347) @c 
--------------------------------------------------------------------------------
+templates.texi(,348) 
+templates.texi(,349) There are various predefined expansions which are 
probably enough for
+templates.texi(,350) most templates.  A corresponding expansion forms can be 
easily inserted
+templates.texi(,351) by selecting the appropriate entry in the new submenu  
@kbd{Template
+templates.texi(,352) Creation}
+templates.texi(,353) :
+templates.texi(,354) 
+templates.texi(,355) @itemize
+templates.texi(,356) @item
+templates.texi(,357) Remember positions: use @samp{(>>>POINT<<<)} to set point 
(the cursor
+templates.texi(,358) position), @samp{(>>>MARK<<<)} to set mark (e.g., the 
opposite position
+templates.texi(,359) when a region is highlighted), and @samp{(>>>1<<<)} to 
@samp{(>>>0<<<)}
+templates.texi(,360) to registers to the current position.  Remember that 
@kbd{C-x r j
+templates.texi(,361) @var{Key}} jumps to the position stored in register 
@var{Key}.
+templates.texi(,362) @item
+templates.texi(,363) 
+templates.texi(,364) Insert parts of the file name, e.g., when creating the 
new file
+templates.texi(,365) @file{~/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is 
replaced by
+templates.texi(,366) @file{/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by 
@file{abc1.java},
+templates.texi(,367) @samp{(>>>FILE_SANS<<<)} by @file{abc1} , 
@samp{(>>>FILE_UPCASE<<<)} by
+templates.texi(,368) @file{ABC1} , @samp{(>>>FILE_RAW<<<)} by @file{abc},
+templates.texi(,369) @samp{(>>>FILE_NUM<<<)} by @file{1} , and 
@samp{(>>>FILE_EXT<<<)} by
+templates.texi(,370) @file{java}.
+templates.texi(,371) @item
+templates.texi(,372) Insert the current date/time in two customizable and 
three fixed
+templates.texi(,373) formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
+templates.texi(,374) @samp{(>>>TIME<<<)} for @samp{20:01:13} , 
@samp{(>>>YEAR<<<)} for
+templates.texi(,375) @samp{2002} , @samp{(>>>ISO_DATE<<<)} for 
@samp{2002-02-20} , and
+templates.texi(,376) @samp{(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
+templates.texi(,377) @item
+templates.texi(,378) Insert the user/system name in various formats: use
+templates.texi(,379) @samp{(>>>AUTHOR<<<)} for @email{Christoph Wedler
+templates.texi(,380) <wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
+templates.texi(,381) @samp{Christoph Wedler} , @samp{(>>>LOGIN_NAME<<<)} for 
@samp{wedler} ,
+templates.texi(,382) and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} 
.
+templates.texi(,383) @item
+templates.texi(,384) Ask the user for some initial comment.  If this expansion 
is used, the buffer
+templates.texi(,385) for the new file will be marked as modified.  For each 
undefined expansion, the
+templates.texi(,386) user is also asked.
+templates.texi(,387) @item
+templates.texi(,388) Disabling the search for expansion forms:
+templates.texi(,389) @samp{(>>>ZERO_FORM<<<)} can be inserted into a string 
which
+templates.texi(,390) will be otherwise regarded as an expansion form, the 
region between
+templates.texi(,391) @samp{(>>>LITERAL<<<)} and the first
+templates.texi(,392) @samp{(>>>/LITERAL<<<)} after it will be skipped.
+templates.texi(,393) @end itemize
+templates.texi(,394)     
+templates.texi(,395) You can define your own expansions in your Emacs init 
file and at the end of a
+templates.texi(,396) template file.  A corresponding definition can be easily 
inserted by selecting
+templates.texi(,397) the appropriate entry in the new submenu  @kbd{Template
+templates.texi(,398) Creation}:
+templates.texi(,399)     
+templates.texi(,400) @itemize
+templates.texi(,401) 
+templates.texi(,402) @item
+templates.texi(,403) @kbd{Define User Input}
+templates.texi(,404) .  Ask the user to insert some text
+templates.texi(,405) using some specific prompt.  Optionally, ask for a text 
with completion, or for
+templates.texi(,406) a sequence of user input (exit with empty input).
+templates.texi(,407) @item
+templates.texi(,408) @kbd{Define Text Register} 
+templates.texi(,409) .  Define a text for
+templates.texi(,410) register @var{Reg} which can be inserted with @kbd{C-x r 
i @var{Reg}}.
+templates.texi(,411) Optionally, provide a comment for it which will be 
temporarily shown at
+templates.texi(,412) point.
+templates.texi(,413) @item
+templates.texi(,414) @kbd{Define Message}
+templates.texi(,415) .  Define a message which will be
+templates.texi(,416) temporarily shown at point or before/after the expansion 
in a special buffer.
+templates.texi(,417) There is also a computed message in the echo area.
+templates.texi(,418) @item
+templates.texi(,419) 
+templates.texi(,420) Execute some Lisp coding defined at the end of the 
template.  By default, you
+templates.texi(,421) have to confirm it first, since it is insecure to execute 
unchecked coding.
+templates.texi(,422) (You do not have menu support to define this kind of 
expansion.)
+templates.texi(,423) @end itemize
+templates.texi(,424) 
+templates.texi(,425) @defopt template-default-expansion-alist
+templates.texi(,426) @end defopt
+templates.texi(,427) @defopt template-definition-start
+templates.texi(,428) @end defopt
+templates.texi(,429) 
+templates.texi(,430)     
+templates.texi(,431) @c 
--------------------------------------------------------------------------------
+templates.texi(,432) 
+templates.texi(,433) @node decorating,,,Basics
+templates.texi(,434) @section  Decorating a Comment
+templates.texi(,435) @c 
--------------------------------------------------------------------------------
+templates.texi(,436) 
+templates.texi(,437) There are commands to decorate comments with dashes and 
alike (@samp{-},
+templates.texi(,438) @samp{=} and @samp{#} by default).  Both commands are 
included in the
+templates.texi(,439) new submenu @kbd{Comments} 
+templates.texi(,440) and bound to keys:
+templates.texi(,441) 
+templates.texi(,442) @itemize
+templates.texi(,443) @item
+templates.texi(,444) Use command @code{template-single-comment} to jump to the
+templates.texi(,445) end of the current line and insert the dashes and the 
final
+templates.texi(,446) comment end-string up-to the fill position.  This command 
works with any
+templates.texi(,447) comment style, including for languages having mixed 
comments like C++ and Java.
+templates.texi(,448) It also works in major modes without a defined comment 
syntax.
+templates.texi(,449) @item
+templates.texi(,450) Use command @code{template-block-comment} to surround the
+templates.texi(,451) current comment block (i.e., contiguous comment lines) 
with extra lines
+templates.texi(,452) containing dashes and alike and to put the correct number 
of newlines around
+templates.texi(,453) the block.  This command only works with comments which 
are terminated with the
+templates.texi(,454) end of the line (like Java's @code{//address@hidden code 
class=text
+templates.texi(,455)  comment).
+templates.texi(,456) @end itemize
+templates.texi(,457) 
+templates.texi(,458) The comment decoration style is highly customizable and 
can be controlled by
+templates.texi(,459) 
+templates.texi(,460) @itemize
+templates.texi(,461) @item
+templates.texi(,462) The prefix argument given to the two commands.
+templates.texi(,463) @item
+templates.texi(,464) The existing comment decoration style when present.
+templates.texi(,465) @item
+templates.texi(,466) Determined by the indentation or the repetition of a 
single-character comment
+templates.texi(,467) start (like Emacs-Lisp's @code{;address@hidden code 
class=text
+templates.texi(,468) ).
+templates.texi(,469) @end itemize
+templates.texi(,470) 
+templates.texi(,471) For more on comments @xref{Comments}.
+templates.texi(,472) 
+templates.texi(,473) @c 
--------------------------------------------------------------------------------
+templates.texi(,474) 
+templates.texi(,475) @node updating,,,Basics
+templates.texi(,476) @section  Updating a Buffer
+templates.texi(,477) @c 
--------------------------------------------------------------------------------
+templates.texi(,478) A buffer is automatically updated according to some rules 
when saving
+templates.texi(,479) the file.  This updating can be invoked explicitly by 
selecting the menu
+templates.texi(,480) entry @kbd{Update Buffer} in the new submenu 
@kbd{Comments} .
+templates.texi(,481) 
+templates.texi(,482) @itemize
+templates.texi(,483) @item
+templates.texi(,484) Update the file name in the first three lines of the 
buffer if the file name is
+templates.texi(,485) indicated by @code{@@(#) @address@hidden code class=text
+templates.texi(,486)  or
+templates.texi(,487) @code{;;; @var{FileName} address@hidden code class=text
+templates.texi(,488)  where
+templates.texi(,489) @code{;;;address@hidden code class=text
+templates.texi(,490)  stands for any comment start (with optional
+templates.texi(,491) repetition of a single-character comment start).
+templates.texi(,492) @item
+templates.texi(,493) Update the date if it is the last text inside the
+templates.texi(,494) @address@hidden code class=html
+templates.texi(,495)  element of a HTML buffer.
+templates.texi(,496) @item
+templates.texi(,497) Automatic updating is optional, as is user confirmation 
for it.  Automatic
+templates.texi(,498) updating can be disabled for buffers whose file name 
matches a regular
+templates.texi(,499) expression.
+templates.texi(,500) @item
+templates.texi(,501) If nothing will be changed by the updating, there will be 
no user confirmation
+templates.texi(,502) and the buffer will not be marked as modified.
+templates.texi(,503) @end itemize
+templates.texi(,504) 
+templates.texi(,505) @defopt template-update-buffer
+templates.texi(,506) @end defopt
+templates.texi(,507) @defopt template-auto-update
+templates.texi(,508) @end defopt
+templates.texi(,509) @defopt template-update-buffer-alist
+templates.texi(,510) @end defopt
+templates.texi(,511) @defopt template-header-regexp-alist
+templates.texi(,512) @end defopt
+templates.texi(,513) 
+templates.texi(,514) @node Advanced,,,Top  
+templates.texi(,515) @chapter Templates for advanced users
+templates.texi(,516) 
+templates.texi(,517) @menu
+templates.texi(,518) * Customization:: Templates customization.
+templates.texi(,519) @end menu
+templates.texi(,520) 
+templates.texi(,521) @node Customization,,,Advanced
+templates.texi(,522) @section Templates customization
+templates.texi(,523) 
+templates.texi(,524) @menu
+templates.texi(,525) * Expansion:: Customization of keyword expansion rules.
+templates.texi(,526) * Derivation:: Customization of how templates are derived.
+templates.texi(,527) * Comments:: Customization of comments.
+templates.texi(,528) @end menu
+templates.texi(,529) 
+templates.texi(,530) @node Expansion,,,Customization
+templates.texi(,531) @subsection Customization of keyword expansion rules
+templates.texi(,532) 
+templates.texi(,533) @deffn {Interactive Command} template-new-file {file 
template with-undo}
+templates.texi(,534) Open a new file @var{file} by using a @var{template}.
+templates.texi(,535) Using a template for creating a new file consists of, 
steps 1 to 3 are
+templates.texi(,536) only executed when called interactively:
+templates.texi(,537) @enumerate
+templates.texi(,538) @item
+templates.texi(,539) Prompt for the name of the new file.
+templates.texi(,540) @item
+templates.texi(,541) Template derivation: suggest a reasonable template file 
to the user see
+templates.texi(,542) @code{template-derivation-alist}.
+templates.texi(,543) @item
+templates.texi(,544) File name refinement: e.g., if the given file name is 
@file{exercise}
+templates.texi(,545) and there are two files @file{exercise1.tex} and 
@file{exercise2.tex} in
+templates.texi(,546) the same directory and if we have a template 
@file{exercise.tex.tpl},
+templates.texi(,547) the file name is refined to @file{exercise3.tex}.  This 
is turned off
+templates.texi(,548) when @kbd{C-x t} is called with a prefix argument.
+templates.texi(,549) @item
+templates.texi(,550) Template insertion: insert the template file into the 
empty buffer.
+templates.texi(,551) @item
+templates.texi(,552) Read per-template expansion definition section starting at
+templates.texi(,553) @code{template-definition-start} and delete it.
+templates.texi(,554) @item
+templates.texi(,555) Display: before message in @code{template-message-buffer}.
+templates.texi(,556) @item
+templates.texi(,557) Execute pre-expansion commands defined in the definition 
section.
+templates.texi(,558) @item
+templates.texi(,559) Set local variables defined in the definition section.
+templates.texi(,560) @item
+templates.texi(,561) Expansion: expand the expansion forms (text matched by
+templates.texi(,562) @code{template-expansion-regexp}) They are defined in the 
definition
+templates.texi(,563) section, in @code{template-expansion-alist}, or provided 
by default,
+templates.texi(,564) see @code{template-expansion-regexp} and
+templates.texi(,565) @code{template-register-regexp}.
+templates.texi(,566) @item
+templates.texi(,567) Execute post-expansion commands defined in the definition 
section.
+templates.texi(,568) @item
+templates.texi(,569) Run @code{normal-mode} and functions in 
@code{find-file-hooks}.
+templates.texi(,570) @item
+templates.texi(,571) Update header according to 
@command{template-update-header} with
+templates.texi(,572) @c Vincent: What is this if-exists argument ?
+templates.texi(,573) argument @code{if-exists}.
+templates.texi(,574) @item
+templates.texi(,575) Display: after message in @code{template-message-buffer}.
+templates.texi(,576) @item
+templates.texi(,577) Report: display a temporary message at point defined in 
the definition
+templates.texi(,578) section and an automatically generated message in the 
minibuffer area,
+templates.texi(,579) see @code{template-message-timeout}.
+templates.texi(,580) @end enumerate
+templates.texi(,581) If optional @var{with-undo} is non-nil, store 
corresponding changes in
+templates.texi(,582) @code{buffer-undo-list}.  If @var{file} is nil, the 
buffer for @var{file} has
+templates.texi(,583) already been created and the accessible part will be 
replaced by the
+templates.texi(,584) expanded template.  If @var{template} is nil (empty input 
when called
+templates.texi(,585) interactively), do not use a template.
+templates.texi(,586) @end deffn
+templates.texi(,587) 
+templates.texi(,588) @defopt template-auto-insert
+templates.texi(,589) @end defopt
+templates.texi(,590) 
+templates.texi(,591) @node Derivation,,,Customization
+templates.texi(,592) @subsection Customization of how templates are derived
+templates.texi(,593) 
+templates.texi(,594) @defopt template-derivation-alist
+templates.texi(,595) @end defopt
+templates.texi(,596) 
+templates.texi(,597) @node Comments,,,Customization
+templates.texi(,598) @subsection Customization of comments
+templates.texi(,599) 
+templates.texi(,600) @defopt template-single-comment
+templates.texi(,601) @end defopt
+templates.texi(,602) 
+templates.texi(,603) @deffn {Interactive command} template-block-comment arg
+templates.texi(,604) It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> 
<Comment> <Decorate Comment Block>}.
+templates.texi(,605) 
+templates.texi(,606) Decorate the current block of comment-only lines with 
dashes and alike.
+templates.texi(,607) That is, surround the the contiguous comment-only lines 
around point
+templates.texi(,608) with extra lines containing dashes and alike and to put 
the correct
+templates.texi(,609) number of newlines around the block.
+templates.texi(,610) 
+templates.texi(,611) Barf if the comment syntax at point has a non-empty 
@code{comment-end} or if
+templates.texi(,612) point is not in a comment-only line.
+templates.texi(,613) 
+templates.texi(,614) A block comment consists of all neighboring lines which 
start with
+templates.texi(,615) spaces and @code{comment-start}.  If @code{comment-start} 
is a string of length 1,
+templates.texi(,616) the number of repetitions of @code{comment-start} must be 
the same or larger
+templates.texi(,617) than in the line where the command is invoked from, too.
+templates.texi(,618) 
+templates.texi(,619) Prefix argument @var{arg} and 
@code{template-comment-specification} determines the
+templates.texi(,620) comment style to use.  The length of the separator line 
is determined by
+templates.texi(,621) @code{template-max-column}.
+templates.texi(,622) 
+templates.texi(,623) This command can also be used with point in an empty line 
after a block
+templates.texi(,624) comment.  A second invocation of this command directly 
after a
+templates.texi(,625) successful invocation deletes the remaining empty lines 
from the current
+templates.texi(,626) line on.
+templates.texi(,627) @end deffn
+templates.texi(,628) 
+templates.texi(,629) @defopt template-comment-specification-alist
+templates.texi(,630) List of specifications for comment functions.  Each 
specification at
+templates.texi(,631) @var{level}, starting at 1, is a list 
@code{(@var{separator}
+templates.texi(,632) @var{before-block} @var{after-block} @var{DELETE-LINES})}
+templates.texi(,633) 
+templates.texi(,634) @var{separator} is the string which is inserted 
repeatedly by commands
+templates.texi(,635) @kbd{C-x C-=} and @kbd{C-x C-;} up to 
@code{template-max-column}.
+templates.texi(,636) 
+templates.texi(,637) After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} 
after the comment block
+templates.texi(,638) and inserts string @var{after-block} at the end of the 
block and
+templates.texi(,639) @var{before-block} at the front of the block.
+templates.texi(,640) 
+templates.texi(,641) The specification @var{level} to use is determined by:
+templates.texi(,642) @enumerate
+templates.texi(,643) @item
+templates.texi(,644) If the prefix argument is non-nil and its numeric value 
is > 0, this
+templates.texi(,645) value is the @var{level}.
+templates.texi(,646) @item
+templates.texi(,647) If the prefix argument is nil, and there is an old 
comment style, use
+templates.texi(,648) old comment style.
+templates.texi(,649) @item
+templates.texi(,650) If @code{template-comment-specification-special} is a 
function or the
+templates.texi(,651) current major mode has a property with this name and its 
value is a
+templates.texi(,652) function, this function returns the specification.
+templates.texi(,653) @item
+templates.texi(,654) If @code{comment-end} is empty and @code{comment-start} 
is a string of
+templates.texi(,655) length 1: @var{level} is number of repetitions of 
@code{comment-start}
+templates.texi(,656) at the beginning of the line.  Otherwise, if the 
correctly indented line
+templates.texi(,657) starts at the beginning of the line, @var{level}=3, else 
@var{level}=2.
+templates.texi(,658) @end enumerate
+templates.texi(,659) @end defopt
+templates.texi(,660) 
+templates.texi(,661) 
+templates.texi(,662) @node Indexes,,,Top  
+templates.texi(,663) @chapter Indexes for commands, keyword, and variable
+templates.texi(,664) 
+templates.texi(,665) @menu
+templates.texi(,666) * Keyword Index:: Keyword Index.
+templates.texi(,667) * Command Index:: Command Index.
+templates.texi(,668) * Variable Index:: Customizable Variable Index.
+templates.texi(,669) @end menu
+templates.texi(,670) 
+templates.texi(,671) @node Keyword Index,,,Indexes
+templates.texi(,672) @section Keyword Index
+templates.texi(,673) 
+templates.texi(,674) @node Command Index,,,Indexes
+templates.texi(,675) @section Keyword Index
+templates.texi(,676) 
+templates.texi(,677) @printindex fn
+templates.texi(,678) 
+templates.texi(,679) @node Variable Index,,,Indexes
+templates.texi(,680) @section Variable Index
+templates.texi(,681) 
+templates.texi(,682) @printindex vr
+templates.texi(,683) 
+templates.texi(,684) @node News,,,Top  
+templates.texi(,685) @chapter News for Package Template
+templates.texi(,686) 
+templates.texi(,687) @table @asis
+templates.texi(,688) @item Latest Version:
+templates.texi(,689) @strong{3.1c} (21 Aug 2003).
+templates.texi(,690) @item Requirements:
+templates.texi(,691) @cite{Emacs-20.2}, @cite{XEmacs-20.2}, or higher.  
+templates.texi(,692) 
+templates.texi(,693) No menu support for Emacs before Version 21.1.
+templates.texi(,694) @item Licence: 
+templates.texi(,695) @cite{GNU General Public License}.
+templates.texi(,696) @end table
+templates.texi(,697) 
+templates.texi(,698) @section Changes with Release 3.1c
+templates.texi(,699) 
+templates.texi(,700) @itemize
+templates.texi(,701) @item
+templates.texi(,702) Bug fix: on XEmacs, initialization would fail without 
menus "File" and "Edit" in menubar.
+templates.texi(,703) @item
+templates.texi(,704) Allow messages to be displayed in a separate buffer 
"*Template Messages*"
+templates.texi(,705) instead at point.
+templates.texi(,706) @item
+templates.texi(,707) Correct and improve header updating.
+templates.texi(,708) @item
+templates.texi(,709) Extend use of @code{M-x template-single-comment}.
+templates.texi(,710) @item
+templates.texi(,711) Minor bug fixes.  Miscellaneous.
+templates.texi(,712) @end itemize
+templates.texi(,713) 
+templates.texi(,714)     
+templates.texi(,715) @section Changes with Release 3.1
+templates.texi(,716) 
+templates.texi(,717) @itemize
+templates.texi(,718) @item
+templates.texi(,719) Moved to SourceForge.net.  Less technical description on 
web page.
+templates.texi(,720) @item
+templates.texi(,721) Remove examples from distribution, they were more 
confusing than helpful.
+templates.texi(,722) @item
+templates.texi(,723) Bug fix: would sometimes indent the current line when 
using the menubar.
+templates.texi(,724) @item
+templates.texi(,725) Menus work with Emacs-21, too.  Rename some menu entries.
+templates.texi(,726) @item
+templates.texi(,727) Don't search further for remote templates.  Nuke this 
home/base directory
+templates.texi(,728) stuff, stop search at root.
+templates.texi(,729) @item
+templates.texi(,730) Don't rely on command @command{ffap} to always add an 
entry to
+templates.texi(,731) @code{command-history} if the filename is read from 
terminal.  Special
+templates.texi(,732) setup for @code{ffap} and @code{html-helper}.
+templates.texi(,733) @item
+templates.texi(,734) Make date/time formats work as names suggest.
+templates.texi(,735) @item
+templates.texi(,736) Command to insert & expand a template file.
+templates.texi(,737) @item
+templates.texi(,738) Allow user to define a choice in the definition section 
to be answered
+templates.texi(,739) via @code{y-or-n-p}.
+templates.texi(,740) @item
+templates.texi(,741) Various miscellaneous improvements.  Minor bug fixes.
+templates.texi(,742) @end itemize
+templates.texi(,743)     
+templates.texi(,744) @node Acknowledgements,,,Top  
+templates.texi(,745) 
+templates.texi(,746) Christoph Wedler 
@uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+templates.texi(,747) 
+templates.texi(,748) 
+templates.texi(,749) @bye

Index: misc/res_all/texi_templates/templates.texi
===================================================================
RCS file: misc/res_all/texi_templates/templates.texi
diff -N misc/res_all/texi_templates/templates.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_all/texi_templates/templates.texi  2 Aug 2009 13:13:18 -0000       
1.1
@@ -0,0 +1,747 @@
+\input texinfo   @c -*- mode: texinfo; coding: iso-8859-1-unix -*-
address@hidden %**start of header
address@hidden templates.info
address@hidden iso-8859-1
address@hidden en
address@hidden  Emacs template package documentation, version 3.1c
address@hidden %**end of header
address@hidden kbdmenu = kbd
address@hidden codetpl = samp
address@hidden codevar = code
+
address@hidden
+This is the Emacs template package documentation, version 3.1c
+Copyright @copyright{} 2008 Christoph Wedler, Vincent Belaïche.
+
address@hidden
+Permission is granted to ...
address@hidden quotation
address@hidden copying
+
address@hidden Emacs
address@hidden
+* Templates: (templates). Creating templates for files creation.
address@hidden direntry
+
+
address@hidden
address@hidden Emacs template package manual
address@hidden Details of Package Template
address@hidden Christoph Wedler
+
address@hidden  The following two commands
address@hidden  start the copyright page.
address@hidden
address@hidden 0pt plus 1filll
address@hidden
+
+Published by ...
address@hidden titlepage
+
address@hidden Top,,,(dir)top
address@hidden Top node.
+
+This is the manual of Emacs template package
+
address@hidden
+* Overview:: Overview.
+* Installation:: how to install the template package.
+* Basics:: How to make and use templates.
+* Advanced:: Templates for advanced users.
+* Indexes:: Indexes for commands, keyword, and variable.
+* News:: News for Package Template.
+* Acknowledgements:: Acknowledgements.
address@hidden menu
+
address@hidden Overview,,,Top
address@hidden Overview
+
+When you create a new file with Emacs, package Template supplies an initial
+buffer content via a template: a file with normal text and expansion forms.
+There is a menu to easily create such templates.  You can also use new commands
+to decorate comments and update the buffer contents.
+
+
+The main difference between Template and @ref{Related,other similar
+packages} is that you can define very flexible templates without having
+to learn Lisp or changing your Emacs init file.  This package does not
+help Lisp programmers to define complex macros.
+
address@hidden
address@hidden
+The template mechanism is hooked into the normal find/open file command.  There
+are also new commands for creating a new file using a template and inserting 
&amp;
+expanding a template.
address@hidden
+You do not have to enter the file name of the template file.  This package uses
+a sophisticated search to find the most appropritate template (supporting
+project- and subproject specific template files).  You can change the
+suggestion, of course.
address@hidden
+A template file can be easily created.  Most of the file usually contains
+simple text; only @dfn{expansion forms} which look like
address@hidden(>>>@var{Key}<<<)} will get replaced.
address@hidden
+There are various useful predefined expansions: set point (the cursor
+position), mark and registers to the current position; insert various parts of
+the filename, the user/system name, the current date/time in various formats,
+and some text to be entered by the user.
address@hidden
+Template-specific expansions can be defined at the end of the template file.
+There are commands to create these definitions; only complex expansions would
+require some knowledge of Lisp.
address@hidden itemize
+
+There is a menu to support the creation of template files.  Additionally, this
+package provides the following features:
+
address@hidden
address@hidden
+When saving a buffer, some parts of the buffer contents (header and time
+stamps) are automatically updated if necessary.
address@hidden
+There are commands to decorate comments with dashes and alike.  Works for
+languages with any comment style, even languages having mixed comments like C++
+and Java.
address@hidden itemize
+
+
address@hidden Related,,,Overview
address@hidden Packages Related to Template
+
+
+There are template packages of two different categories, which are determined
+by one question:
+
address@hidden do you want to do with templates?} Do you want to use templates
+when creating new files, or do you want to insert some stuff during editing
+(but you are not satisfied with the standard macro mechanism)?
+
+Well, templates could be seen as both new-file templates and macro-like
+template, but the main application of templates determines the answers for the
+following questions:
+      
address@hidden
address@hidden
address@hidden do you define a template?} You can define it by one file per
+template or by customizing some Emacs variables.  The first solution (which is
+used by package Template) avoids Emacs hacking but might not be optimal if you
+just want to define complex macros or if you want to use templates to program a
+new Emacs major-mode.
address@hidden
address@hidden is an appropriate template selected?} If you want to use complex
+macro during editing, the answer is clear: the user have to provide the name of
+the template.  For new files, the appropriate template should be automatically
+selected.  But of course, you don't want to loose any flexibility and you don't
+want to customize your Emacs for every project you start.
address@hidden
address@hidden do you do "clever" things in the template?} The aims are to have
+many predefined expansions (e.g., the current date) and to define some
+non-trivial things without learning Lisp.  Any functionality here is the
+overlapping point of both template categories.
address@hidden itemize
+
+
+
+Here is a little list of related files, collected around 1998, some discarded
+later (no @abbr{URL}s, no active updating, but you can send me a mail):
+
address@hidden
address@hidden
+Package @cite{autoinsert.el} uses templates when creating new files.
+These templates are defined via files or by customizing Emacs.  For each new
+template you want to introduce, you must customize your Emacs, the selection is
+restricted to one template per major-mode or regexp match.  No predefined
+expansions; clever things are provided by usual Lisp expressions or the
+macro-like templates of package @cite{skeleton}.
address@hidden
+Package @cite{skeleton.el} is a Lisp language extension for
+writing statement skeletons, i.e., you get macro-like Lisp commands.
address@hidden
+Package @cite{tempo.el} helps you defining and using named macro-like
+templates.  Its predefined macros are similar to some predefined expansions of
+package Template.  A specific template is used by
+<code class="lisp">html-helper-mode</code> when creating a new html file.
+(This is turned off with the default installation of package Template.)
address@hidden
+Package @cite{hm--html-menus} provides a command to insert templates
+editing.  These templates are defined via files.  There are no predefined
+expansions (except setting point), non-trivial expansions are defined via Lisp.
address@hidden itemize
+
+
+
+
address@hidden Installation,,,Top
address@hidden Installation
+
address@hidden Installation Instructions
+
address@hidden
address@hidden
+Copy file @file{template/lisp/template.el} into your
+load-path and byte-compile it.
address@hidden
+Insert the following code into your Emacs init file
+(@file{~/.emacs}):
+
address@hidden
+(require 'template)
+(template-initialize)
address@hidden lisp
+
address@hidden
+If you want to customize package Template, use @kbd{M-x
+customize-group @key{RET} template
address@hidden or the customize entry in menu
address@hidden
address@hidden
+You might want to copy the template files from directory
address@hidden/templates/} to
address@hidden/.templates/} and change them according to your
+preferences.
address@hidden enumerate
+
+
+Installation instructions with further explanations can be found in file
address@hidden/INSTALL} of the distribution.
+
+ 
+
address@hidden Basics,,,Top
address@hidden Basics
+
+Emacs, template, file template, comment decoration, auto-updating, time stamp, 
details
+
address@hidden
+* menus:: Menus and Key-Bindings.
+* using:: Using a Template.
+* finding:: Finding a Template.
+* creating:: Creating a Template.
+* decorating:: Decorating a Comment.
+* updating:: Updating a Buffer.
address@hidden menu
+
address@hidden menus,,,Basics
address@hidden  Menus and Key-Bindings
address@hidden 
--------------------------------------------------------------------------------
+For Emacs-21.1+ and XEmacs, this package defines the following menu entries and
+key-bindings: 
+
address@hidden
address@hidden
+In menu @kbd{File} , there is a new menu item @kbd{New File
+Using Template...}  .  The corresponding command is also bound to the
+key sequence @kbd{C-x t}.
address@hidden
+At the end of menu @kbd{Cmds} (in XEmacs if it exists) or menu
+ @kbd{Edit} , there is a new submenu @kbd{Template Creation}.
address@hidden
+Enter @kbd{C-x C-=} (command @command{template-single-comment}) to
+insert dashes and alike into the current line and end the comment.
address@hidden
+Enter @kbd{C-x C-;} (command @command{template-single-comment}) to
+insert dashes and alike around the current comment block.
address@hidden
+At the end of menu @kbd{Edit} , there is a new submenu
address@hidden  It also contains the two commands just mentioned.
address@hidden itemize
+
address@hidden 
--------------------------------------------------------------------------------
address@hidden using,,,Basics
address@hidden  Using a Template
address@hidden 
--------------------------------------------------------------------------------
+Package Template offers various ways how to use template files:
+
+In Emacs, the usual way to create a new file is by typing @kbd{C-x C-f},
+using the menu or the toolbar (running command @command{find-file} or
address@hidden) and entering a non-existent file name.  In this case,
+you will be asked whether to use a template for the new file.  You can
+turn off this feature.
+
address@hidden
address@hidden
+Here a first undefined xref @xref{EExpansion}.
+There is a new command @command{template-new-file} @footnote{for the
+menu entry and its key-binding type @kbd{C-h f template-new-file},
address@hidden to create a new file using a template.  Here, you have
+the chance to edit the name of the template file.  This command also
+supports file name refinement which is useful to create a file in a
+series of files like @file{exercise2.tex} etc.
address@hidden
+There is also a command (@kbd{M-x template-expand-template})
+to insert a template file into the current buffer and expand its expansion
+forms.
address@hidden itemize
+
+
+For more @command{template-new-file} and @code{template-auto-insert},
+ @xref{Expansion}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden finding,,,Basics
address@hidden  Finding a Template
address@hidden 
--------------------------------------------------------------------------------
+The algorithm for finding the most appropriate template can be best explained
+with a little example:
+
address@hidden
address@hidden
+You have a project @file{~/proj/} with subprojects @file{foo/} and
address@hidden/} containing @file{.java} files.
address@hidden
+You want to define a general template for the @file{.java} in your
+project files, although @file{.java} files in subproject @file{foo/}
+should use their own template.  You also want to define a special
+template for all files @file{proj.java} in the project.
address@hidden
+Since you do not want to clutter the project directory with template
+files, you first create a directory @file{~/proj/Templates/}.  In this
+directory, you create new files @file{TEMPLATE.java.tpl} and
address@hidden  In directory @file{~/proj/foo/}, you create a new
+file @file{TEMPLATE.java.tpl}.
address@hidden itemize
+
+The creation of the template files in the right directory is already enough for
+packages Template to find the most appropriate template for a new file:
+
address@hidden
address@hidden
+If you create a new file @file{~/proj/foo/abc.java}, this package tries
+to find a template based on the file extension of the new file.  The
+generic base file name for a template is @file{TEMPLATE} and the
+additional extension is @file{.tpl}, a file @file{TEMPLATE.java.tpl}
+exists in @file{~/proj/foo/}, so that file is used as the template.
address@hidden
+If you create a new file @file{~/proj/bar/abc.java}, this package again
+tries to find @file{TEMPLATE.java.tpl}.  Since this file doesn't exist
+in @file{~/proj/bar/}, it first inspects the subdirectory
address@hidden/} which doesn't exist.  The search continues with the
+parent directory @file{~/proj/} and then its subdirectory
address@hidden/}.  Thus @file{~/proj/Templates/TEMPLATE.java.tpl} will
+be used.
address@hidden
+If you create a new file @file{~/proj/foo/proj.java}, this package finds
+a template file with the same base name: it uses
address@hidden/proj/Templates/proj.java.tpl}.  You might argue that
address@hidden/proj/foo/TEMPLATE.java.tpl} resides in a more specific
+directory, but having the same base name is considered to be more
+important (remember that some file like Makefiles do not have file
+extensions).
address@hidden
+If you create a new file @file{~/other_proj/foo/proj.java}, i.e., a
+project where you have defined no template files, this package uses one
+of the default templates, in this case
address@hidden/.templates/TEMPLATE.java.tpl}.
address@hidden itemize
+
+For more on derivation @xref{Derivation}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden creating,,,Basics
address@hidden  Creating a Template
address@hidden 
--------------------------------------------------------------------------------
+
+There are various predefined expansions which are probably enough for
+most templates.  A corresponding expansion forms can be easily inserted
+by selecting the appropriate entry in the new submenu  @kbd{Template
+Creation}
+:
+
address@hidden
address@hidden
+Remember positions: use @samp{(>>>POINT<<<)} to set point (the cursor
+position), @samp{(>>>MARK<<<)} to set mark (e.g., the opposite position
+when a region is highlighted), and @samp{(>>>1<<<)} to @samp{(>>>0<<<)}
+to registers to the current position.  Remember that @kbd{C-x r j
address@hidden jumps to the position stored in register @var{Key}.
address@hidden
+
+Insert parts of the file name, e.g., when creating the new file
address@hidden/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is replaced by
address@hidden/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by @file{abc1.java},
address@hidden(>>>FILE_SANS<<<)} by @file{abc1} , @samp{(>>>FILE_UPCASE<<<)} by
address@hidden , @samp{(>>>FILE_RAW<<<)} by @file{abc},
address@hidden(>>>FILE_NUM<<<)} by @file{1} , and @samp{(>>>FILE_EXT<<<)} by
address@hidden
address@hidden
+Insert the current date/time in two customizable and three fixed
+formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
address@hidden(>>>TIME<<<)} for @samp{20:01:13} , @samp{(>>>YEAR<<<)} for
address@hidden , @samp{(>>>ISO_DATE<<<)} for @samp{2002-02-20} , and
address@hidden(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
address@hidden
+Insert the user/system name in various formats: use
address@hidden(>>>AUTHOR<<<)} for @email{Christoph Wedler
+<wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
address@hidden Wedler} , @samp{(>>>LOGIN_NAME<<<)} for @samp{wedler} ,
+and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} .
address@hidden
+Ask the user for some initial comment.  If this expansion is used, the buffer
+for the new file will be marked as modified.  For each undefined expansion, the
+user is also asked.
address@hidden
+Disabling the search for expansion forms:
address@hidden(>>>ZERO_FORM<<<)} can be inserted into a string which
+will be otherwise regarded as an expansion form, the region between
address@hidden(>>>LITERAL<<<)} and the first
address@hidden(>>>/LITERAL<<<)} after it will be skipped.
address@hidden itemize
+    
+You can define your own expansions in your Emacs init file and at the end of a
+template file.  A corresponding definition can be easily inserted by selecting
+the appropriate entry in the new submenu  @kbd{Template
+Creation}:
+    
address@hidden
+
address@hidden
address@hidden User Input}
+.  Ask the user to insert some text
+using some specific prompt.  Optionally, ask for a text with completion, or for
+a sequence of user input (exit with empty input).
address@hidden
address@hidden Text Register} 
+.  Define a text for
+register @var{Reg} which can be inserted with @kbd{C-x r i @var{Reg}}.
+Optionally, provide a comment for it which will be temporarily shown at
+point.
address@hidden
address@hidden Message}
+.  Define a message which will be
+temporarily shown at point or before/after the expansion in a special buffer.
+There is also a computed message in the echo area.
address@hidden
+
+Execute some Lisp coding defined at the end of the template.  By default, you
+have to confirm it first, since it is insecure to execute unchecked coding.
+(You do not have menu support to define this kind of expansion.)
address@hidden itemize
+
address@hidden template-default-expansion-alist
address@hidden defopt
address@hidden template-definition-start
address@hidden defopt
+
+    
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden decorating,,,Basics
address@hidden  Decorating a Comment
address@hidden 
--------------------------------------------------------------------------------
+
+There are commands to decorate comments with dashes and alike (@samp{-},
address@hidden and @samp{#} by default).  Both commands are included in the
+new submenu @kbd{Comments} 
+and bound to keys:
+
address@hidden
address@hidden
+Use command @code{template-single-comment} to jump to the
+end of the current line and insert the dashes and the final
+comment end-string up-to the fill position.  This command works with any
+comment style, including for languages having mixed comments like C++ and Java.
+It also works in major modes without a defined comment syntax.
address@hidden
+Use command @code{template-block-comment} to surround the
+current comment block (i.e., contiguous comment lines) with extra lines
+containing dashes and alike and to put the correct number of newlines around
+the block.  This command only works with comments which are terminated with the
+end of the line (like Java's @code{//address@hidden code class=text
+ comment).
address@hidden itemize
+
+The comment decoration style is highly customizable and can be controlled by
+
address@hidden
address@hidden
+The prefix argument given to the two commands.
address@hidden
+The existing comment decoration style when present.
address@hidden
+Determined by the indentation or the repetition of a single-character comment
+start (like Emacs-Lisp's @code{;address@hidden code class=text
+).
address@hidden itemize
+
+For more on comments @xref{Comments}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden updating,,,Basics
address@hidden  Updating a Buffer
address@hidden 
--------------------------------------------------------------------------------
+A buffer is automatically updated according to some rules when saving
+the file.  This updating can be invoked explicitly by selecting the menu
+entry @kbd{Update Buffer} in the new submenu @kbd{Comments} .
+
address@hidden
address@hidden
+Update the file name in the first three lines of the buffer if the file name is
+indicated by @code{@@(#) @address@hidden code class=text
+ or
address@hidden;;; @var{FileName} address@hidden code class=text
+ where
address@hidden;;;address@hidden code class=text
+ stands for any comment start (with optional
+repetition of a single-character comment start).
address@hidden
+Update the date if it is the last text inside the
address@hidden@c code class=html
+ element of a HTML buffer.
address@hidden
+Automatic updating is optional, as is user confirmation for it.  Automatic
+updating can be disabled for buffers whose file name matches a regular
+expression.
address@hidden
+If nothing will be changed by the updating, there will be no user confirmation
+and the buffer will not be marked as modified.
address@hidden itemize
+
address@hidden template-update-buffer
address@hidden defopt
address@hidden template-auto-update
address@hidden defopt
address@hidden template-update-buffer-alist
address@hidden defopt
address@hidden template-header-regexp-alist
address@hidden defopt
+
address@hidden Advanced,,,Top  
address@hidden Templates for advanced users
+
address@hidden
+* Customization:: Templates customization.
address@hidden menu
+
address@hidden Customization,,,Advanced
address@hidden Templates customization
+
address@hidden
+* Expansion:: Customization of keyword expansion rules.
+* Derivation:: Customization of how templates are derived.
+* Comments:: Customization of comments.
address@hidden menu
+
address@hidden Expansion,,,Customization
address@hidden Customization of keyword expansion rules
+
address@hidden {Interactive Command} template-new-file {file template with-undo}
+Open a new file @var{file} by using a @var{template}.
+Using a template for creating a new file consists of, steps 1 to 3 are
+only executed when called interactively:
address@hidden
address@hidden
+Prompt for the name of the new file.
address@hidden
+Template derivation: suggest a reasonable template file to the user see
address@hidden
address@hidden
+File name refinement: e.g., if the given file name is @file{exercise}
+and there are two files @file{exercise1.tex} and @file{exercise2.tex} in
+the same directory and if we have a template @file{exercise.tex.tpl},
+the file name is refined to @file{exercise3.tex}.  This is turned off
+when @kbd{C-x t} is called with a prefix argument.
address@hidden
+Template insertion: insert the template file into the empty buffer.
address@hidden
+Read per-template expansion definition section starting at
address@hidden and delete it.
address@hidden
+Display: before message in @code{template-message-buffer}.
address@hidden
+Execute pre-expansion commands defined in the definition section.
address@hidden
+Set local variables defined in the definition section.
address@hidden
+Expansion: expand the expansion forms (text matched by
address@hidden) They are defined in the definition
+section, in @code{template-expansion-alist}, or provided by default,
+see @code{template-expansion-regexp} and
address@hidden
address@hidden
+Execute post-expansion commands defined in the definition section.
address@hidden
+Run @code{normal-mode} and functions in @code{find-file-hooks}.
address@hidden
+Update header according to @command{template-update-header} with
address@hidden Vincent: What is this if-exists argument ?
+argument @code{if-exists}.
address@hidden
+Display: after message in @code{template-message-buffer}.
address@hidden
+Report: display a temporary message at point defined in the definition
+section and an automatically generated message in the minibuffer area,
+see @code{template-message-timeout}.
address@hidden enumerate
+If optional @var{with-undo} is non-nil, store corresponding changes in
address@hidden  If @var{file} is nil, the buffer for @var{file} has
+already been created and the accessible part will be replaced by the
+expanded template.  If @var{template} is nil (empty input when called
+interactively), do not use a template.
address@hidden deffn
+
address@hidden template-auto-insert
address@hidden defopt
+
address@hidden Derivation,,,Customization
address@hidden Customization of how templates are derived
+
address@hidden template-derivation-alist
address@hidden defopt
+
address@hidden Comments,,,Customization
address@hidden Customization of comments
+
address@hidden template-single-comment
address@hidden defopt
+
address@hidden {Interactive command} template-block-comment arg
+It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> <Comment> <Decorate 
Comment Block>}.
+
+Decorate the current block of comment-only lines with dashes and alike.
+That is, surround the the contiguous comment-only lines around point
+with extra lines containing dashes and alike and to put the correct
+number of newlines around the block.
+
+Barf if the comment syntax at point has a non-empty @code{comment-end} or if
+point is not in a comment-only line.
+
+A block comment consists of all neighboring lines which start with
+spaces and @code{comment-start}.  If @code{comment-start} is a string of 
length 1,
+the number of repetitions of @code{comment-start} must be the same or larger
+than in the line where the command is invoked from, too.
+
+Prefix argument @var{arg} and @code{template-comment-specification} determines 
the
+comment style to use.  The length of the separator line is determined by
address@hidden
+
+This command can also be used with point in an empty line after a block
+comment.  A second invocation of this command directly after a
+successful invocation deletes the remaining empty lines from the current
+line on.
address@hidden deffn
+
address@hidden template-comment-specification-alist
+List of specifications for comment functions.  Each specification at
address@hidden, starting at 1, is a list @code{(@var{separator}
address@hidden @var{after-block} @var{DELETE-LINES})}
+
address@hidden is the string which is inserted repeatedly by commands
address@hidden C-=} and @kbd{C-x C-;} up to @code{template-max-column}.
+
+After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} after the comment block
+and inserts string @var{after-block} at the end of the block and
address@hidden at the front of the block.
+
+The specification @var{level} to use is determined by:
address@hidden
address@hidden
+If the prefix argument is non-nil and its numeric value is > 0, this
+value is the @var{level}.
address@hidden
+If the prefix argument is nil, and there is an old comment style, use
+old comment style.
address@hidden
+If @code{template-comment-specification-special} is a function or the
+current major mode has a property with this name and its value is a
+function, this function returns the specification.
address@hidden
+If @code{comment-end} is empty and @code{comment-start} is a string of
+length 1: @var{level} is number of repetitions of @code{comment-start}
+at the beginning of the line.  Otherwise, if the correctly indented line
+starts at the beginning of the line, @var{level}=3, else @var{level}=2.
address@hidden enumerate
address@hidden defopt
+
+
address@hidden Indexes,,,Top  
address@hidden Indexes for commands, keyword, and variable
+
address@hidden
+* Keyword Index:: Keyword Index.
+* Command Index:: Command Index.
+* Variable Index:: Customizable Variable Index.
address@hidden menu
+
address@hidden Keyword Index,,,Indexes
address@hidden Keyword Index
+
address@hidden Command Index,,,Indexes
address@hidden Keyword Index
+
address@hidden fn
+
address@hidden Variable Index,,,Indexes
address@hidden Variable Index
+
address@hidden vr
+
address@hidden News,,,Top  
address@hidden News for Package Template
+
address@hidden @asis
address@hidden Latest Version:
address@hidden (21 Aug 2003).
address@hidden Requirements:
address@hidden, @cite{XEmacs-20.2}, or higher.  
+
+No menu support for Emacs before Version 21.1.
address@hidden Licence: 
address@hidden General Public License}.
address@hidden table
+
address@hidden Changes with Release 3.1c
+
address@hidden
address@hidden
+Bug fix: on XEmacs, initialization would fail without menus "File" and "Edit" 
in menubar.
address@hidden
+Allow messages to be displayed in a separate buffer "*Template Messages*"
+instead at point.
address@hidden
+Correct and improve header updating.
address@hidden
+Extend use of @code{M-x template-single-comment}.
address@hidden
+Minor bug fixes.  Miscellaneous.
address@hidden itemize
+
+    
address@hidden Changes with Release 3.1
+
address@hidden
address@hidden
+Moved to SourceForge.net.  Less technical description on web page.
address@hidden
+Remove examples from distribution, they were more confusing than helpful.
address@hidden
+Bug fix: would sometimes indent the current line when using the menubar.
address@hidden
+Menus work with Emacs-21, too.  Rename some menu entries.
address@hidden
+Don't search further for remote templates.  Nuke this home/base directory
+stuff, stop search at root.
address@hidden
+Don't rely on command @command{ffap} to always add an entry to
address@hidden if the filename is read from terminal.  Special
+setup for @code{ffap} and @code{html-helper}.
address@hidden
+Make date/time formats work as names suggest.
address@hidden
+Command to insert & expand a template file.
address@hidden
+Allow user to define a choice in the definition section to be answered
+via @code{y-or-n-p}.
address@hidden
+Various miscellaneous improvements.  Minor bug fixes.
address@hidden itemize
+    
address@hidden Acknowledgements,,,Top  
+
+Christoph Wedler @uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+
+
address@hidden

Index: misc/res_all/texi_templates/templates.texi.first
===================================================================
RCS file: misc/res_all/texi_templates/templates.texi.first
diff -N misc/res_all/texi_templates/templates.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_all/texi_templates/templates.texi.first    2 Aug 2009 13:13:18 
-0000       1.1
@@ -0,0 +1,726 @@
+\input texinfo   @c -*- mode: texinfo; coding: iso-8859-1-unix -*-
address@hidden %**start of header
address@hidden templates.info
address@hidden iso-8859-1
address@hidden en
address@hidden  Emacs template package documentation, version 3.1c
address@hidden %**end of header
address@hidden kbdmenu = kbd
address@hidden codetpl = samp
address@hidden codevar = code
+
+
address@hidden Emacs
address@hidden
+* Templates: (templates). Creating templates for files creation.
address@hidden direntry
+
+
+
address@hidden Top,,,(dir)top
address@hidden Top node.
+
+This is the manual of Emacs template package
+
address@hidden
+* Overview:: Overview.
+* Installation:: how to install the template package.
+* Basics:: How to make and use templates.
+* Advanced:: Templates for advanced users.
+* Indexes:: Indexes for commands, keyword, and variable.
+* News:: News for Package Template.
+* Acknowledgements:: Acknowledgements.
address@hidden menu
+
address@hidden Overview,,,Top
address@hidden Overview
+
+When you create a new file with Emacs, package Template supplies an initial
+buffer content via a template: a file with normal text and expansion forms.
+There is a menu to easily create such templates.  You can also use new commands
+to decorate comments and update the buffer contents.
+
+
+The main difference between Template and @ref{Related,other similar
+packages} is that you can define very flexible templates without having
+to learn Lisp or changing your Emacs init file.  This package does not
+help Lisp programmers to define complex macros.
+
address@hidden
address@hidden
+The template mechanism is hooked into the normal find/open file command.  There
+are also new commands for creating a new file using a template and inserting 
&amp;
+expanding a template.
address@hidden
+You do not have to enter the file name of the template file.  This package uses
+a sophisticated search to find the most appropritate template (supporting
+project- and subproject specific template files).  You can change the
+suggestion, of course.
address@hidden
+A template file can be easily created.  Most of the file usually contains
+simple text; only @dfn{expansion forms} which look like
address@hidden(>>>@var{Key}<<<)} will get replaced.
address@hidden
+There are various useful predefined expansions: set point (the cursor
+position), mark and registers to the current position; insert various parts of
+the filename, the user/system name, the current date/time in various formats,
+and some text to be entered by the user.
address@hidden
+Template-specific expansions can be defined at the end of the template file.
+There are commands to create these definitions; only complex expansions would
+require some knowledge of Lisp.
address@hidden itemize
+
+There is a menu to support the creation of template files.  Additionally, this
+package provides the following features:
+
address@hidden
address@hidden
+When saving a buffer, some parts of the buffer contents (header and time
+stamps) are automatically updated if necessary.
address@hidden
+There are commands to decorate comments with dashes and alike.  Works for
+languages with any comment style, even languages having mixed comments like C++
+and Java.
address@hidden itemize
+
+
address@hidden Related,,,Overview
address@hidden Packages Related to Template
+
+
+There are template packages of two different categories, which are determined
+by one question:
+
address@hidden do you want to do with templates?} Do you want to use templates
+when creating new files, or do you want to insert some stuff during editing
+(but you are not satisfied with the standard macro mechanism)?
+
+Well, templates could be seen as both new-file templates and macro-like
+template, but the main application of templates determines the answers for the
+following questions:
+      
address@hidden
address@hidden
address@hidden do you define a template?} You can define it by one file per
+template or by customizing some Emacs variables.  The first solution (which is
+used by package Template) avoids Emacs hacking but might not be optimal if you
+just want to define complex macros or if you want to use templates to program a
+new Emacs major-mode.
address@hidden
address@hidden is an appropriate template selected?} If you want to use complex
+macro during editing, the answer is clear: the user have to provide the name of
+the template.  For new files, the appropriate template should be automatically
+selected.  But of course, you don't want to loose any flexibility and you don't
+want to customize your Emacs for every project you start.
address@hidden
address@hidden do you do "clever" things in the template?} The aims are to have
+many predefined expansions (e.g., the current date) and to define some
+non-trivial things without learning Lisp.  Any functionality here is the
+overlapping point of both template categories.
address@hidden itemize
+
+
+
+Here is a little list of related files, collected around 1998, some discarded
+later (no @abbr{URL}s, no active updating, but you can send me a mail):
+
address@hidden
address@hidden
+Package @cite{autoinsert.el} uses templates when creating new files.
+These templates are defined via files or by customizing Emacs.  For each new
+template you want to introduce, you must customize your Emacs, the selection is
+restricted to one template per major-mode or regexp match.  No predefined
+expansions; clever things are provided by usual Lisp expressions or the
+macro-like templates of package @cite{skeleton}.
address@hidden
+Package @cite{skeleton.el} is a Lisp language extension for
+writing statement skeletons, i.e., you get macro-like Lisp commands.
address@hidden
+Package @cite{tempo.el} helps you defining and using named macro-like
+templates.  Its predefined macros are similar to some predefined expansions of
+package Template.  A specific template is used by
+<code class="lisp">html-helper-mode</code> when creating a new html file.
+(This is turned off with the default installation of package Template.)
address@hidden
+Package @cite{hm--html-menus} provides a command to insert templates
+editing.  These templates are defined via files.  There are no predefined
+expansions (except setting point), non-trivial expansions are defined via Lisp.
address@hidden itemize
+
+
+
+
address@hidden Installation,,,Top
address@hidden Installation
+
address@hidden Installation Instructions
+
address@hidden
address@hidden
+Copy file @file{template/lisp/template.el} into your
+load-path and byte-compile it.
address@hidden
+Insert the following code into your Emacs init file
+(@file{~/.emacs}):
+
address@hidden
+(require 'template)
+(template-initialize)
address@hidden lisp
+
address@hidden
+If you want to customize package Template, use @kbd{M-x
+customize-group @key{RET} template
address@hidden or the customize entry in menu
address@hidden
address@hidden
+You might want to copy the template files from directory
address@hidden/templates/} to
address@hidden/.templates/} and change them according to your
+preferences.
address@hidden enumerate
+
+
+Installation instructions with further explanations can be found in file
address@hidden/INSTALL} of the distribution.
+
+ 
+
address@hidden Basics,,,Top
address@hidden Basics
+
+Emacs, template, file template, comment decoration, auto-updating, time stamp, 
details
+
address@hidden
+* menus:: Menus and Key-Bindings.
+* using:: Using a Template.
+* finding:: Finding a Template.
+* creating:: Creating a Template.
+* decorating:: Decorating a Comment.
+* updating:: Updating a Buffer.
address@hidden menu
+
address@hidden menus,,,Basics
address@hidden  Menus and Key-Bindings
address@hidden 
--------------------------------------------------------------------------------
+For Emacs-21.1+ and XEmacs, this package defines the following menu entries and
+key-bindings: 
+
address@hidden
address@hidden
+In menu @kbd{File} , there is a new menu item @kbd{New File
+Using Template...}  .  The corresponding command is also bound to the
+key sequence @kbd{C-x t}.
address@hidden
+At the end of menu @kbd{Cmds} (in XEmacs if it exists) or menu
+ @kbd{Edit} , there is a new submenu @kbd{Template Creation}.
address@hidden
+Enter @kbd{C-x C-=} (command @command{template-single-comment}) to
+insert dashes and alike into the current line and end the comment.
address@hidden
+Enter @kbd{C-x C-;} (command @command{template-single-comment}) to
+insert dashes and alike around the current comment block.
address@hidden
+At the end of menu @kbd{Edit} , there is a new submenu
address@hidden  It also contains the two commands just mentioned.
address@hidden itemize
+
address@hidden 
--------------------------------------------------------------------------------
address@hidden using,,,Basics
address@hidden  Using a Template
address@hidden 
--------------------------------------------------------------------------------
+Package Template offers various ways how to use template files:
+
+In Emacs, the usual way to create a new file is by typing @kbd{C-x C-f},
+using the menu or the toolbar (running command @command{find-file} or
address@hidden) and entering a non-existent file name.  In this case,
+you will be asked whether to use a template for the new file.  You can
+turn off this feature.
+
address@hidden
address@hidden
+Here a first undefined xref @xref{EExpansion}.
+There is a new command @command{template-new-file} @footnote{for the
+menu entry and its key-binding type @kbd{C-h f template-new-file},
address@hidden to create a new file using a template.  Here, you have
+the chance to edit the name of the template file.  This command also
+supports file name refinement which is useful to create a file in a
+series of files like @file{exercise2.tex} etc.
address@hidden
+There is also a command (@kbd{M-x template-expand-template})
+to insert a template file into the current buffer and expand its expansion
+forms.
address@hidden itemize
+
+
+For more @command{template-new-file} and @code{template-auto-insert},
+ @xref{Expansion}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden finding,,,Basics
address@hidden  Finding a Template
address@hidden 
--------------------------------------------------------------------------------
+The algorithm for finding the most appropriate template can be best explained
+with a little example:
+
address@hidden
address@hidden
+You have a project @file{~/proj/} with subprojects @file{foo/} and
address@hidden/} containing @file{.java} files.
address@hidden
+You want to define a general template for the @file{.java} in your
+project files, although @file{.java} files in subproject @file{foo/}
+should use their own template.  You also want to define a special
+template for all files @file{proj.java} in the project.
address@hidden
+Since you do not want to clutter the project directory with template
+files, you first create a directory @file{~/proj/Templates/}.  In this
+directory, you create new files @file{TEMPLATE.java.tpl} and
address@hidden  In directory @file{~/proj/foo/}, you create a new
+file @file{TEMPLATE.java.tpl}.
address@hidden itemize
+
+The creation of the template files in the right directory is already enough for
+packages Template to find the most appropriate template for a new file:
+
address@hidden
address@hidden
+If you create a new file @file{~/proj/foo/abc.java}, this package tries
+to find a template based on the file extension of the new file.  The
+generic base file name for a template is @file{TEMPLATE} and the
+additional extension is @file{.tpl}, a file @file{TEMPLATE.java.tpl}
+exists in @file{~/proj/foo/}, so that file is used as the template.
address@hidden
+If you create a new file @file{~/proj/bar/abc.java}, this package again
+tries to find @file{TEMPLATE.java.tpl}.  Since this file doesn't exist
+in @file{~/proj/bar/}, it first inspects the subdirectory
address@hidden/} which doesn't exist.  The search continues with the
+parent directory @file{~/proj/} and then its subdirectory
address@hidden/}.  Thus @file{~/proj/Templates/TEMPLATE.java.tpl} will
+be used.
address@hidden
+If you create a new file @file{~/proj/foo/proj.java}, this package finds
+a template file with the same base name: it uses
address@hidden/proj/Templates/proj.java.tpl}.  You might argue that
address@hidden/proj/foo/TEMPLATE.java.tpl} resides in a more specific
+directory, but having the same base name is considered to be more
+important (remember that some file like Makefiles do not have file
+extensions).
address@hidden
+If you create a new file @file{~/other_proj/foo/proj.java}, i.e., a
+project where you have defined no template files, this package uses one
+of the default templates, in this case
address@hidden/.templates/TEMPLATE.java.tpl}.
address@hidden itemize
+
+For more on derivation @xref{Derivation}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden creating,,,Basics
address@hidden  Creating a Template
address@hidden 
--------------------------------------------------------------------------------
+
+There are various predefined expansions which are probably enough for
+most templates.  A corresponding expansion forms can be easily inserted
+by selecting the appropriate entry in the new submenu  @kbd{Template
+Creation}
+:
+
address@hidden
address@hidden
+Remember positions: use @samp{(>>>POINT<<<)} to set point (the cursor
+position), @samp{(>>>MARK<<<)} to set mark (e.g., the opposite position
+when a region is highlighted), and @samp{(>>>1<<<)} to @samp{(>>>0<<<)}
+to registers to the current position.  Remember that @kbd{C-x r j
address@hidden jumps to the position stored in register @var{Key}.
address@hidden
+
+Insert parts of the file name, e.g., when creating the new file
address@hidden/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is replaced by
address@hidden/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by @file{abc1.java},
address@hidden(>>>FILE_SANS<<<)} by @file{abc1} , @samp{(>>>FILE_UPCASE<<<)} by
address@hidden , @samp{(>>>FILE_RAW<<<)} by @file{abc},
address@hidden(>>>FILE_NUM<<<)} by @file{1} , and @samp{(>>>FILE_EXT<<<)} by
address@hidden
address@hidden
+Insert the current date/time in two customizable and three fixed
+formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
address@hidden(>>>TIME<<<)} for @samp{20:01:13} , @samp{(>>>YEAR<<<)} for
address@hidden , @samp{(>>>ISO_DATE<<<)} for @samp{2002-02-20} , and
address@hidden(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
address@hidden
+Insert the user/system name in various formats: use
address@hidden(>>>AUTHOR<<<)} for @email{Christoph Wedler
+<wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
address@hidden Wedler} , @samp{(>>>LOGIN_NAME<<<)} for @samp{wedler} ,
+and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} .
address@hidden
+Ask the user for some initial comment.  If this expansion is used, the buffer
+for the new file will be marked as modified.  For each undefined expansion, the
+user is also asked.
address@hidden
+Disabling the search for expansion forms:
address@hidden(>>>ZERO_FORM<<<)} can be inserted into a string which
+will be otherwise regarded as an expansion form, the region between
address@hidden(>>>LITERAL<<<)} and the first
address@hidden(>>>/LITERAL<<<)} after it will be skipped.
address@hidden itemize
+    
+You can define your own expansions in your Emacs init file and at the end of a
+template file.  A corresponding definition can be easily inserted by selecting
+the appropriate entry in the new submenu  @kbd{Template
+Creation}:
+    
address@hidden
+
address@hidden
address@hidden User Input}
+.  Ask the user to insert some text
+using some specific prompt.  Optionally, ask for a text with completion, or for
+a sequence of user input (exit with empty input).
address@hidden
address@hidden Text Register} 
+.  Define a text for
+register @var{Reg} which can be inserted with @kbd{C-x r i @var{Reg}}.
+Optionally, provide a comment for it which will be temporarily shown at
+point.
address@hidden
address@hidden Message}
+.  Define a message which will be
+temporarily shown at point or before/after the expansion in a special buffer.
+There is also a computed message in the echo area.
address@hidden
+
+Execute some Lisp coding defined at the end of the template.  By default, you
+have to confirm it first, since it is insecure to execute unchecked coding.
+(You do not have menu support to define this kind of expansion.)
address@hidden itemize
+
address@hidden template-default-expansion-alist
address@hidden defopt
address@hidden template-definition-start
address@hidden defopt
+
+    
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden decorating,,,Basics
address@hidden  Decorating a Comment
address@hidden 
--------------------------------------------------------------------------------
+
+There are commands to decorate comments with dashes and alike (@samp{-},
address@hidden and @samp{#} by default).  Both commands are included in the
+new submenu @kbd{Comments} 
+and bound to keys:
+
address@hidden
address@hidden
+Use command @code{template-single-comment} to jump to the
+end of the current line and insert the dashes and the final
+comment end-string up-to the fill position.  This command works with any
+comment style, including for languages having mixed comments like C++ and Java.
+It also works in major modes without a defined comment syntax.
address@hidden
+Use command @code{template-block-comment} to surround the
+current comment block (i.e., contiguous comment lines) with extra lines
+containing dashes and alike and to put the correct number of newlines around
+the block.  This command only works with comments which are terminated with the
+end of the line (like Java's @code{//address@hidden code class=text
+ comment).
address@hidden itemize
+
+The comment decoration style is highly customizable and can be controlled by
+
address@hidden
address@hidden
+The prefix argument given to the two commands.
address@hidden
+The existing comment decoration style when present.
address@hidden
+Determined by the indentation or the repetition of a single-character comment
+start (like Emacs-Lisp's @code{;address@hidden code class=text
+).
address@hidden itemize
+
+For more on comments @xref{Comments}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden updating,,,Basics
address@hidden  Updating a Buffer
address@hidden 
--------------------------------------------------------------------------------
+A buffer is automatically updated according to some rules when saving
+the file.  This updating can be invoked explicitly by selecting the menu
+entry @kbd{Update Buffer} in the new submenu @kbd{Comments} .
+
address@hidden
address@hidden
+Update the file name in the first three lines of the buffer if the file name is
+indicated by @code{@@(#) @address@hidden code class=text
+ or
address@hidden;;; @var{FileName} address@hidden code class=text
+ where
address@hidden;;;address@hidden code class=text
+ stands for any comment start (with optional
+repetition of a single-character comment start).
address@hidden
+Update the date if it is the last text inside the
address@hidden@c code class=html
+ element of a HTML buffer.
address@hidden
+Automatic updating is optional, as is user confirmation for it.  Automatic
+updating can be disabled for buffers whose file name matches a regular
+expression.
address@hidden
+If nothing will be changed by the updating, there will be no user confirmation
+and the buffer will not be marked as modified.
address@hidden itemize
+
address@hidden template-update-buffer
address@hidden defopt
address@hidden template-auto-update
address@hidden defopt
address@hidden template-update-buffer-alist
address@hidden defopt
address@hidden template-header-regexp-alist
address@hidden defopt
+
address@hidden Advanced,,,Top  
address@hidden Templates for advanced users
+
address@hidden
+* Customization:: Templates customization.
address@hidden menu
+
address@hidden Customization,,,Advanced
address@hidden Templates customization
+
address@hidden
+* Expansion:: Customization of keyword expansion rules.
+* Derivation:: Customization of how templates are derived.
+* Comments:: Customization of comments.
address@hidden menu
+
address@hidden Expansion,,,Customization
address@hidden Customization of keyword expansion rules
+
address@hidden {Interactive Command} template-new-file {file template with-undo}
+Open a new file @var{file} by using a @var{template}.
+Using a template for creating a new file consists of, steps 1 to 3 are
+only executed when called interactively:
address@hidden
address@hidden
+Prompt for the name of the new file.
address@hidden
+Template derivation: suggest a reasonable template file to the user see
address@hidden
address@hidden
+File name refinement: e.g., if the given file name is @file{exercise}
+and there are two files @file{exercise1.tex} and @file{exercise2.tex} in
+the same directory and if we have a template @file{exercise.tex.tpl},
+the file name is refined to @file{exercise3.tex}.  This is turned off
+when @kbd{C-x t} is called with a prefix argument.
address@hidden
+Template insertion: insert the template file into the empty buffer.
address@hidden
+Read per-template expansion definition section starting at
address@hidden and delete it.
address@hidden
+Display: before message in @code{template-message-buffer}.
address@hidden
+Execute pre-expansion commands defined in the definition section.
address@hidden
+Set local variables defined in the definition section.
address@hidden
+Expansion: expand the expansion forms (text matched by
address@hidden) They are defined in the definition
+section, in @code{template-expansion-alist}, or provided by default,
+see @code{template-expansion-regexp} and
address@hidden
address@hidden
+Execute post-expansion commands defined in the definition section.
address@hidden
+Run @code{normal-mode} and functions in @code{find-file-hooks}.
address@hidden
+Update header according to @command{template-update-header} with
address@hidden Vincent: What is this if-exists argument ?
+argument @code{if-exists}.
address@hidden
+Display: after message in @code{template-message-buffer}.
address@hidden
+Report: display a temporary message at point defined in the definition
+section and an automatically generated message in the minibuffer area,
+see @code{template-message-timeout}.
address@hidden enumerate
+If optional @var{with-undo} is non-nil, store corresponding changes in
address@hidden  If @var{file} is nil, the buffer for @var{file} has
+already been created and the accessible part will be replaced by the
+expanded template.  If @var{template} is nil (empty input when called
+interactively), do not use a template.
address@hidden deffn
+
address@hidden template-auto-insert
address@hidden defopt
+
address@hidden Derivation,,,Customization
address@hidden Customization of how templates are derived
+
address@hidden template-derivation-alist
address@hidden defopt
+
address@hidden Comments,,,Customization
address@hidden Customization of comments
+
address@hidden template-single-comment
address@hidden defopt
+
address@hidden {Interactive command} template-block-comment arg
+It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> <Comment> <Decorate 
Comment Block>}.
+
+Decorate the current block of comment-only lines with dashes and alike.
+That is, surround the the contiguous comment-only lines around point
+with extra lines containing dashes and alike and to put the correct
+number of newlines around the block.
+
+Barf if the comment syntax at point has a non-empty @code{comment-end} or if
+point is not in a comment-only line.
+
+A block comment consists of all neighboring lines which start with
+spaces and @code{comment-start}.  If @code{comment-start} is a string of 
length 1,
+the number of repetitions of @code{comment-start} must be the same or larger
+than in the line where the command is invoked from, too.
+
+Prefix argument @var{arg} and @code{template-comment-specification} determines 
the
+comment style to use.  The length of the separator line is determined by
address@hidden
+
+This command can also be used with point in an empty line after a block
+comment.  A second invocation of this command directly after a
+successful invocation deletes the remaining empty lines from the current
+line on.
address@hidden deffn
+
address@hidden template-comment-specification-alist
+List of specifications for comment functions.  Each specification at
address@hidden, starting at 1, is a list @code{(@var{separator}
address@hidden @var{after-block} @var{DELETE-LINES})}
+
address@hidden is the string which is inserted repeatedly by commands
address@hidden C-=} and @kbd{C-x C-;} up to @code{template-max-column}.
+
+After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} after the comment block
+and inserts string @var{after-block} at the end of the block and
address@hidden at the front of the block.
+
+The specification @var{level} to use is determined by:
address@hidden
address@hidden
+If the prefix argument is non-nil and its numeric value is > 0, this
+value is the @var{level}.
address@hidden
+If the prefix argument is nil, and there is an old comment style, use
+old comment style.
address@hidden
+If @code{template-comment-specification-special} is a function or the
+current major mode has a property with this name and its value is a
+function, this function returns the specification.
address@hidden
+If @code{comment-end} is empty and @code{comment-start} is a string of
+length 1: @var{level} is number of repetitions of @code{comment-start}
+at the beginning of the line.  Otherwise, if the correctly indented line
+starts at the beginning of the line, @var{level}=3, else @var{level}=2.
address@hidden enumerate
address@hidden defopt
+
+
address@hidden Indexes,,,Top  
address@hidden Indexes for commands, keyword, and variable
+
address@hidden
+* Keyword Index:: Keyword Index.
+* Command Index:: Command Index.
+* Variable Index:: Customizable Variable Index.
address@hidden menu
+
address@hidden Keyword Index,,,Indexes
address@hidden Keyword Index
+
address@hidden Command Index,,,Indexes
address@hidden Keyword Index
+
address@hidden fn
+
address@hidden Variable Index,,,Indexes
address@hidden Variable Index
+
address@hidden vr
+
address@hidden News,,,Top  
address@hidden News for Package Template
+
address@hidden @asis
address@hidden Latest Version:
address@hidden (21 Aug 2003).
address@hidden Requirements:
address@hidden, @cite{XEmacs-20.2}, or higher.  
+
+No menu support for Emacs before Version 21.1.
address@hidden Licence: 
address@hidden General Public License}.
address@hidden table
+
address@hidden Changes with Release 3.1c
+
address@hidden
address@hidden
+Bug fix: on XEmacs, initialization would fail without menus "File" and "Edit" 
in menubar.
address@hidden
+Allow messages to be displayed in a separate buffer "*Template Messages*"
+instead at point.
address@hidden
+Correct and improve header updating.
address@hidden
+Extend use of @code{M-x template-single-comment}.
address@hidden
+Minor bug fixes.  Miscellaneous.
address@hidden itemize
+
+    
address@hidden Changes with Release 3.1
+
address@hidden
address@hidden
+Moved to SourceForge.net.  Less technical description on web page.
address@hidden
+Remove examples from distribution, they were more confusing than helpful.
address@hidden
+Bug fix: would sometimes indent the current line when using the menubar.
address@hidden
+Menus work with Emacs-21, too.  Rename some menu entries.
address@hidden
+Don't search further for remote templates.  Nuke this home/base directory
+stuff, stop search at root.
address@hidden
+Don't rely on command @command{ffap} to always add an entry to
address@hidden if the filename is read from terminal.  Special
+setup for @code{ffap} and @code{html-helper}.
address@hidden
+Make date/time formats work as names suggest.
address@hidden
+Command to insert & expand a template file.
address@hidden
+Allow user to define a choice in the definition section to be answered
+via @code{y-or-n-p}.
address@hidden
+Various miscellaneous improvements.  Minor bug fixes.
address@hidden itemize
+    
address@hidden Acknowledgements,,,Top  
+
+Christoph Wedler @uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+
+
address@hidden

Index: misc/res_all/texi_testkb/testkb.texi.first
===================================================================
RCS file: misc/res_all/texi_testkb/testkb.texi.first
diff -N misc/res_all/texi_testkb/testkb.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_all/texi_testkb/testkb.texi.first  2 Aug 2009 13:13:18 -0000       
1.1
@@ -0,0 +1,202 @@
+\input texinfo @c -*-texinfo-*-
address@hidden testkb.info
address@hidden de
address@hidden ASCII
address@hidden on
address@hidden separate
address@hidden
address@hidden 
----------------------------------------------------------------------------
address@hidden Top,Overview,,(dir)
address@hidden Test 1
+Hier kann eine Erkl@"arung zum Thema stehen oder auch nicht.
+Noch mehr erkl@"arungen zu dem Thema.
address@hidden
+* Overview::.       Methode four.
address@hidden menu
address@hidden 
----------------------------------------------------------------------------
address@hidden Overview,,Top,Top
address@hidden Class
+Here you can read many things I need for this documentation.
+But more and more of this exploration can be done here.
address@hidden Overview
+Das ist ein Test @r{Roman Text in einer Umgebung}
+
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+
address@hidden dcvKat dcvClass dcvName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
address@hidden defcv
+
address@hidden {dfnKat} dfnName (dfnArgumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden
address@hidden Erstens
address@hidden Zweitens
address@hidden Drittens
address@hidden itemize
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden 2
address@hidden
+Das ist ein Beispiel in HTML
+Das ist ein Beispiel in HTML
+Das ist ein Beispiel in HTML
+Das ist ein Beispiel in HTML
address@hidden example
address@hidden
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden deffn
+
address@hidden {dfnKat1} dfnName1 (dfnArgumente11)
address@hidden {dfnKat2} dfnName2 (dfnArgumente12)
address@hidden {dfnKat3} dfnName3 (dfnArgumente13)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden deffn
+
address@hidden {divClass} {divExemplarVar}
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defivar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defivar.
address@hidden defivar
+
address@hidden dmcName (dmcArgumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defmac. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defmac.
address@hidden defmac
+
address@hidden {dmeClass} dmName (dmArguments)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defmethod. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defmethod.
address@hidden defmethod
+
address@hidden {dopKat} {dopClass} dopName (dopArgumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defop. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defop.
address@hidden defop
+
address@hidden {dptName}
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defopt. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defopt.
address@hidden defopt
+
address@hidden dspName (dspArgument)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defspec. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defspec.
address@hidden defspec
+
address@hidden {dtpKat} dtpType (dtpA1 dtpA2)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftp. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftp.
address@hidden deftp
+
address@hidden {PUBLIC} int EditLine (int col, int row)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypefn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypefn.
address@hidden deftypefn
+
address@hidden int FunktionEins (int col, int row)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypefun. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypefun.
address@hidden deftypefun
+
address@hidden {dtmClass} int dtmName (int col, int row)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypemethod. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypemethod.
address@hidden deftypemethod
+
address@hidden DataType VarName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypevar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypevar.
address@hidden deftypevar
+
address@hidden {dtiv} DataType VarName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypeivar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypeivar.
address@hidden deftypeivar
+
address@hidden {dtv} DataType VarName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypevr. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypevr.
address@hidden deftypevr
+
address@hidden FuntionName (Argumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defun. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defun.
address@hidden defun
+
address@hidden VariablenName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defvar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defvar.
address@hidden defvar
+
address@hidden {dvrKat} dvrName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defvr. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defvr.
address@hidden defvr
+
address@hidden {dtypeopCat} deftypeopClass deftypeopType deftypeopName 
deftypeopArgs
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypeop. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypeop.
address@hidden deftypeop
+
address@hidden Indizes
address@hidden Konzept Index
address@hidden cp
address@hidden Funktionen Index
address@hidden fn
address@hidden Programme Index
address@hidden pg
address@hidden Tasten Index
address@hidden ky
address@hidden Var Index
address@hidden vr
address@hidden
address@hidden

Index: misc/res_all/texi_verbatim_html/verbatim_html.texi.first
===================================================================
RCS file: misc/res_all/texi_verbatim_html/verbatim_html.texi.first
diff -N misc/res_all/texi_verbatim_html/verbatim_html.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_all/texi_verbatim_html/verbatim_html.texi.first    2 Aug 2009 
13:13:18 -0000       1.1
@@ -0,0 +1,225 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top,First node,(dir)
address@hidden Tests
address@hidden
+* First node::    node 1
+* description: node @'{a}.    node with braces
+* node: (manual)A node. node in another manual
+
+a verbatim in menu comment @verbatim verbatim on same line than @verbatim
+
+bidule
+
address@hidden verbatim
+
+* node d@'a::       node without braces
address@hidden menu
+
+Tests for environments not matching
+
address@hidden
+A quotation
address@hidden cartouche
+
address@hidden {Function Reference} print_navigation $filehandle
+Text
address@hidden deftypefun
+
address@hidden
address@hidden item
+line
address@hidden vtable
+
address@hidden @emph
address@hidden ref
address@hidden
+example
address@hidden display
address@hidden table
+
+
+
address@hidden First node
address@hidden first node chapter
+
+
+A list with bullet
+Before itemize, in that case @@bullet isn'right, one needs @@address@hidden@} 
(in info) @itemize @bullet{} @c segfault <- @item on the same line that itemize
address@hidden on the same line than item
+some text
address@hidden
+more text @end itemize
+
+A list with text before first @@item:
+
address@hidden @bullet
+text @item more
+text
address@hidden itemize
+
+
+In tex, @@end verbatim must be on its own on a line.
+
+A verbatim with begin and end on its own line
address@hidden
+verbatim @samp{item}
+
address@hidden verbatim
+
+
+
+Now html valid for @TeX{}  @html 
+<b>
+some html </b> 
address@hidden html 
+Some text one the line following @@end html
+
+And html on it's own line
+
address@hidden
+<tt> an html tt</tt>
address@hidden html
+
+
+A sc: @sc{ieee}, and another one in example:
address@hidden
address@hidden
address@hidden example
+
+
+Ignore is the same than @@html.
+
+Now ifnothtml on same line  text following ifnothtml
+
+text following an empty line
+text before end ifnothtml 
+@@end ifnothtml doesn't need to begin the line, and there can be more
+than one space between @@end and ifnothtml, but nothing more
+on the line.
+
+Text on the line before ifnothtml with text following,
+ text following ifnothtml,
+Text on the line following ifnothtml.
+
+Text on the line before ifnothtml without text following,
+some text on a line between ifnothtml and end  ifnothtml,
+Text on the line following ifnothtml.
+
+Text on the line before ifnothtml,
+Text on the line following empty ifnothtml
+
+
address@hidden has problems with the ftable.
+
+
address@hidden outside format.
+
address@hidden outside format.
+
address@hidden address@hidden
+truc before table beginning @item first cell @tab ignored cell
address@hidden second row
address@hidden multitable
+
+before bad  multitable @multitable 6 7
address@hidden 1-1 @tab 1-2 @address@hidden@item 3-1 @tab 3-2 @end multitable
+
+right multitable
address@hidden @columnfractions 6 7
address@hidden 1-1 @tab 1-2 @address@hidden@item 3-1 @tab 3-2 @end multitable
+
+Columnfraction multitable with an ignored cell
address@hidden @columnfractions 0.3 0.4
address@hidden 1-1 @tab 1-2 @tab 1-3 (ignored)
address@hidden multitable
+
+multitable beginning with @@tab
address@hidden address@hidden@verb{.something.}}} {sec}
address@hidden after first tab 
address@hidden new line
address@hidden multitable
+
+A flushright
address@hidden some text flushed right
address@hidden flushright
+
+A center @center Centered line
+And a center after empty line
+
address@hidden centered line after empty line
+
+And a center at end of line @center
+And an empty center @center   
+
+An empty flushright @flushright
+
address@hidden flushright
+
+A verb follows:
+
address@hidden' a little
+
+very little
+verb '}
+
+another with space as delimiter
+
address@hidden what@@ }
+
+@@verb followed by end of line seems incorrect.
+Now verb delimited with *, with an empty line, a comment and @@samp:
+
address@hidden
+verb @c comment
+
+and samp @samp{text }
+*}
+
+
+
address@hidden node @'{a}, node d@'a, First node, Top
address@hidden node 'a with braces
+In the node with braces
+
+A footnote with an empty line within.
address@hidden empty line
+
+before before} 
+
+Now a ref with a footnote within, there aren't 2 paragraphes in the footnote
+in that case in info. tex doesn't like the paragraph break in the ref
+
+Some @@verbatim, @@verb and @@ignore within an xref, very hard for @TeX{}:
+
address@hidden node,
+no verb}.
+
address@hidden node d@'a,, node @'{a}, Top
address@hidden node 'a without braces
address@hidden
+* node::       node 
address@hidden menu
+
address@hidden node,,,
address@hidden node
+
+A node with gggggggg
+before example @example after example
+
+the example
+before end example  @end example 
+after end example
+
+Text only after the end
+
address@hidden
+Example
address@hidden example text following end example.
+
address@hidden category name args
+Deffn.
address@hidden deffn text following end deffn.
+
address@hidden
address@hidden

Index: misc/res_all/texi_viper/viper.texi.first
===================================================================
RCS file: misc/res_all/texi_viper/viper.texi.first
diff -N misc/res_all/texi_viper/viper.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_all/texi_viper/viper.texi.first    2 Aug 2009 13:13:18 -0000       
1.1
@@ -0,0 +1,4486 @@
+% -*-texinfo-*-
+\input texinfo
+
address@hidden Using viper.info instead of viper in setfilename breaks DOS.
address@hidden @setfilename viper
address@hidden @setfilename viper.info
address@hidden viper
+
address@hidden Editors
address@hidden
+* VIPER: (viper).       The newest Emacs VI-emulation mode.
+                          (also, A VI Plan for Emacs Rescue
+                           or the VI PERil.)
address@hidden direntry
+
+
+
address@hidden Distribution
+
address@hidden
+Copyright @copyright{} 1995, 1996, 1997, 2001, 2002 Free Software Foundation, 
Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
+
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software.  Copies published by the Free
+Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License.  If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+
address@hidden Top, Overview,, (DIR)
+
address@hidden Viper
+
+We believe that one or more of the following statements are adequate
+descriptions of Viper:
+
address@hidden
+Viper Is a Package for Emacs Rebels;
+it is a VI Plan for Emacs Rescue
+and/or a venomous VI PERil.
address@hidden example
+
+Technically speaking, Viper is a Vi emulation package for Emacs.  It
+implements all Vi and Ex commands, occasionally improving on them and
+adding many new features.  It gives the user the best of both worlds: Vi
+keystrokes for editing combined with the power of the Emacs environment.
+
+Viper emulates Vi at several levels, from the one that closely follows Vi
+conventions to the one that departs from many of them.  It has many
+customizable options, which can be used to tailor Viper to the work habits
+of various users.
+This manual describes Viper, concentrating on the differences from Vi and
+new features of Viper.
+
+Viper, formerly known as VIP-19, was written by Michael Kifer.  It is based
+on VIP version 3.5 by Masahiko Sato and VIP version 4.4 by Aamod Sane.
+About 15% of the code still comes from those older packages.
+
+Viper is intended to be usable without reading this manual --- the defaults
+are set to make Viper as close to Vi as possible.  At startup, Viper will
+try to set the most appropriate default environment for you, based on
+your familiarity with Emacs.  It will also tell you the basic GNU Emacs window
+management commands to help you start immediately.
+
+Although this manual explains how to customize Viper, some basic
+familiarity with Emacs Lisp is a plus.
+
+It is recommended that you read the Overview node.  The other nodes may
+be visited as needed.
+
+Comments and bug reports are welcome.
address@hidden@@cs.stonybrook.edu} is the current address for Viper bug reports.
+Please use the Ex command @kbd{:submitReport} for this address@hidden
+
+
address@hidden
+* Overview::                    Read for a smoother start
+* Improvements over Vi::        New features, Improvements
+* Customization::               How to customize Viper
+* Commands::                    Vi and Ex Commands
+
+* Key Index::                   Index of Vi and Ex Commands
+* Function Index::              Index of Viper Functions
+* Variable Index::              Index of Viper Variables
+* Package Index::               Index of Packages Mentioned in this Document
+* Concept Index::               Vi, Ex and Emacs concepts
+
+* Acknowledgments::
address@hidden menu
+
address@hidden Overview,Improvements over Vi,Top,Top
address@hidden Overview of Viper
+
+Viper is a Vi emulation on top of Emacs.  At the same time, Viper provides a
+virtually unrestricted access to Emacs facilities.  Perfect compatibility
+with Vi is possible but not desirable.  This chapter tells you about the
+Emacs ideas that you should know about, how to use Viper within Emacs and
+some incompatibilities.
+
+This manual is written with the assumption that you are an experienced Vi
+user who wants to switch to Emacs while retaining the ability to edit files
+Vi style. Incredible as it might seem, there are experienced Emacs users
+who use Viper as a backdoor into the superior (as every Vi user already knows)
+world of Vi! These users are well familiar with Emacs bindings and prefer them
+in some cases, especially in the Vi Insert state. John Hawkins
+<jshawkin@@eecs.umich.edu> has provided a set of customizations, which
+enables additional Emacs bindings under Viper.  These customizations can be
+included in your @file{~/.viper} file and are found at the following URL:
address@hidden://www.eecs.umich.edu/~jshawkin/viper-sample}.
+
address@hidden
+* Emacs Preliminaries::         Basic concepts in Emacs.
+* Loading Viper::               Loading and Preliminary Configuration.
+* States in Viper::             Viper has four states orthogonal to Emacs
+                                modes.
+* The Minibuffer::              Command line in Emacs.
+* Multiple Files in Viper::     True multiple file handling.
+* Unimplemented Features::      That are unlikely to be implemented.
address@hidden menu
+
address@hidden Emacs Preliminaries, Loading Viper, Overview, Overview
address@hidden Emacs Preliminaries
+
address@hidden buffer
address@hidden point
address@hidden mark
address@hidden text
address@hidden looking at
address@hidden end (of buffer)
address@hidden end (of line)
address@hidden region
+
+Emacs can edit several files at once.  A file in Emacs is placed in a
address@hidden that usually has the same name as the file.  Buffers are also 
used
+for other purposes, such as shell interfaces, directory editing, etc.
address@hidden,,Directory Editor,emacs,The
+Gnu Emacs Manual}, for an address@hidden
+
+A buffer has a distinguished position called the @dfn{point}.
+A @dfn{point} is always between 2 characters, and is @dfn{looking at}
+the right hand character.  The cursor is positioned on the right hand
+character.  Thus, when the @dfn{point} is looking at the end-of-line,
+the cursor is on the end-of-line character, i.e.@: beyond the last
+character on the line.  This is the default Emacs address@hidden
+
+The default settings of Viper try to mimic the behavior of Vi, preventing
+the cursor from going beyond the last character on the line.  By using
+Emacs commands directly (such as those bound to arrow keys), it is possible
+to get the cursor beyond the end-of-line.  However, this won't (or
+shouldn't) happen if you restrict yourself to standard Vi keys, unless you
+modify the default editing style.  @address@hidden
+
+In addition to the @dfn{point}, there is another distinguished buffer
+position called the @dfn{mark}.  @xref{Mark,,Mark,emacs,The GNU Emacs
+manual}, for more info on the mark.  The text between the @dfn{point} and
+the @dfn{mark} is called the @dfn{region} of the buffer.  For the Viper
+user, this simply means that in addition to the Vi textmarkers a--z, there
+is another marker called @dfn{mark}.  This is similar to the unnamed Vi
+marker used by the jump commands @kbd{``} and @kbd{''}, which move the
+cursor to the position of the last absolute jump.  Viper provides access to
+the region in most text manipulation commands as @kbd{r} and @kbd{R} suffix
+to commands that operate on text regions, e.g., @kbd{dr} to delete region,
+etc.
+
+Furthermore, Viper lets Ex-style commands to work on the current region.
+This is done by typing a digit argument before @kbd{:}.  For instance,
+typing @kbd{1:} will propmt you with something like @emph{:123,135},
+assuming that the current region starts at line 123 and ends at line
+135.  There is no need to type the line numbers, since Viper inserts them
+automatically in front of the Ex command.
+
address@hidden, for more address@hidden
+
address@hidden window
address@hidden mode line
address@hidden buffer information
address@hidden Minibuffer
address@hidden command line
address@hidden buffer (modified)
+
+Emacs divides the screen into tiled @dfn{windows}.  You can see the
+contents of a buffer through the window associated with the buffer.  The
+cursor of the screen is positioned on the character after @dfn{point}.
+Every window has a @dfn{mode line} that displays information about the buffer.
+You can change the format of the mode
+line, but normally if you see @samp{**} at the beginning of a mode line it
+means that the buffer is @dfn{modified}.  If you write out the contents of
+a buffer to a file, then the buffer will become not modified.  Also if
+you see @samp{%%} at the beginning of the mode line, it means that the file
+associated with the buffer is write protected.  The mode line will also
+show the buffer name and current major and minor modes (see below).
+A special buffer called @dfn{Minibuffer} is displayed as the last line
+in a Minibuffer window.  The Minibuffer window is used for command input
+output.  Viper uses Minibuffer window for @kbd{/} and @kbd{:}
address@hidden
+
address@hidden mode
address@hidden keymap
address@hidden local keymap
address@hidden global keymap
address@hidden major mode
address@hidden minor mode
+
+An Emacs buffer can have a @dfn{major mode} that customizes Emacs for
+editing text of a particular sort by changing the functionality of the keys.
+Keys are defined using a @dfn{keymap} that records the bindings between
+keystrokes and
+functions.  The @dfn{global keymap} is common to all the
+buffers.  Additionally, each buffer has its @dfn{local keymap} that determines 
the
address@hidden of the buffer.  If a function is bound to some key in the local
+keymap then that function will be executed when you type the key.
+If no function is bound to a key in the
+local map, however, the function bound to the key in the global map
+will be executed.  @xref{Major Modes,Major Modes,Major Modes,emacs,The
+GNU Emacs Manual}, for more address@hidden
+
+A buffer can also have a @dfn{minor mode}.  Minor modes are options that
+you can use or not.  A buffer in @code{text-mode} can have
address@hidden as minor mode, which can be turned off or on at
+any time.  In Emacs, a minor mode may have it own keymap,
+which overrides the local keymap when the minor mode is turned on.  For
+more information, @pxref{Minor Modes,Minor Modes,Minor Modes,emacs,The
+GNU Emacs Manual} @refill
+
address@hidden Viper as minor mode
address@hidden Control keys
address@hidden Meta key
+
+Viper is implemented as a collection of minor modes.  Different minor modes
+are involved when Viper emulates Vi command mode, Vi insert mode, etc.
+You can also turn Viper on and off at any time while in Vi command mode.
address@hidden in Viper}, for
+more address@hidden
+
+Emacs uses Control and Meta modifiers.  These are denoted as C and M,
+e.g.@: @kbd{^Z} as @kbd{C-z} and @kbd{Meta-x} as @kbd{M-x}.  The Meta key is
+usually located on each side of the Space bar; it is used in a manner
+similar to the Control key, e.g., @kbd{M-x} means typing @kbd{x} while
+holding the Meta key down.  For keyboards that do not have a Meta key,
address@hidden is used as Meta.  Thus @kbd{M-x} is typed as @address@hidden
+x}.  Viper uses @key{ESC} to switch from Insert state to Vi state.  Therefore
+Viper defines @kbd{C-\} as its Meta key in Vi state.  @xref{Vi State}, for
+more address@hidden
+
+Emacs is structured as a lisp interpreter around a C core.  Emacs keys
+cause lisp functions to be called.  It is possible to call these
+functions directly, by typing @kbd{M-x function-name}.
+
address@hidden Loading Viper, States in Viper, Emacs Preliminaries, Overview
address@hidden Loading Viper
+
+The most common way to load it automatically is to include the following
+lines (in the given order!):
+
address@hidden
+(setq viper-mode t)
+(require 'viper)
address@hidden lisp
+
address@hidden
+in your @file{~/.emacs} file.  The @file{.emacs} file is placed in your
+home directory and it is be executed every time you invoke Emacs.  This is
+the place where all general Emacs customization takes place.  Beginning with
+version 20.0, Emacsen have an interactive interface, which simplifies the
+job of customization significantly.
+
+Viper also uses the file @file{~/.viper} for Viper-specific customization.
+The location of Viper customization file can be changed by setting the
+variable @code{viper-custom-file-name} in @file{.emacs} @emph{prior} to loading
+Viper.
+
+The latest versions of Emacs have an interactive customization facility,
+which allows you to (mostly) bypass the use of the @file{.emacs} and
address@hidden files. You can reach this customization
+facility from within Viper's VI state by executing the Ex command
address@hidden:customize}.
+
+Once invoked, Viper will arrange to bring up Emacs buffers in Vi state
+whenever this makes sense.
address@hidden that Change Keymaps}, to find out when forcing Vi command state
+on a buffer may be counter-productive.
+
+Even if your @file{.emacs} file does not invoke Viper automatically,
+you can still load Viper and enter the Vi command state by typing the
+following from within Emacs:
+
address@hidden
+M-x viper-mode
address@hidden lisp
+
+When Emacs first comes up, if you have not specified a file on the
+command line, it will show the @samp{*scratch*} buffer, in the
address@hidden Interaction} mode.  After you invoke Viper, you can start
+editing files by using @kbd{:e}, @kbd{:vi}, or @kbd{v} commands.
+(@xref{File and Buffer Handling}, for more information on @kbd{v} and other
+new commands that, in many cases, are more convenient than @kbd{:e},
address@hidden:vi}, and similar old-style Vi commands.)@refill
+
+Finally, if at some point you would want to de-Viperize your running
+copy of Emacs after Viper has been loaded, the command @kbd{M-x
+viper-go-away} will do it for you.  The function @code{toggle-viper-mode}
+toggles Viperization of Emacs on and off.
+
address@hidden States in Viper, The Minibuffer, Loading Viper,Overview
address@hidden States in Viper
+
address@hidden @kbd{C-z}
address@hidden @key{ESC}
address@hidden @kbd{i}
address@hidden Emacs state
address@hidden Vi state
address@hidden Insert state
address@hidden Replace state
address@hidden Ex commands
address@hidden @code{viper-go-away}
address@hidden @code{toggle-viper-mode}
+
+Viper has four states, Emacs, Vi, Insert, and Replace.
+
address@hidden @samp
address@hidden Emacs state
+This is the state plain vanilla Emacs is normally in.  After you have loaded
+Viper, @kbd{C-z} will normally take you to Vi command state.  Another
address@hidden will take you back to Emacs state.  This toggle key can be
+changed, @pxref{Customization} You can also type @kbd{M-x viper-mode} to
+change to Vi address@hidden
+
+
+For users who chose to set their user level to 1 at Viper setup time,
+switching to Emacs state is deliberately made harder in order to not
+confuse the novice user.  In this case, @kbd{C-z} will either iconify Emacs
+(if Emacs runs as an application under X) or it will stop Emacs (if
+Emacs runs on a dumb terminal or in an Xterm window).
+
address@hidden Vi state
+This is the Vi command mode.  Any of the Vi commands, such as @kbd{i, o, a},
address@hidden, will take you to Insert state.  All Vi commands may
+be used in this mode.  Most Ex commands can also be used.
+For a full list of Ex commands supported by Viper, type
address@hidden:} and then @key{TAB}.  To get help on any issue, including the Ex
+commands, type @kbd{:help}.  This will invoke Viper Info
+(if it is installed).  Then typing @kbd{i} will prompt you for a topic to
+search in the index.  Note: to search for Ex commands in the index, you
+should start them with a @kbd{:}, e.g., @kbd{:WW}.
+
+In Viper, Ex commands can be made to work on the current Emacs region.
+This is done by typing a digit argument before @kbd{:}.
+For instance, typing @kbd{1:} will propmt you with something like
address@hidden:123,135}, assuming that the current region starts at line 123 and
+ends at line 135.  There is no need to type the line numbers, since Viper
+inserts them automatically in front of the Ex command.
+
address@hidden Insert state
+Insert state is the Vi insertion mode.  @key{ESC} will take you back to
+Vi state.  Insert state editing can be done, including auto-indentation.  By
+default, Viper disables Emacs key bindings in Insert state.
+
address@hidden Replace state
+Commands like @kbd{cw} invoke the Replace state.  When you cross the
+boundary of a replacement region (usually designated via a @samp{$} sign),
+it will automatically change to Insert state.  You do not have to worry
+about it.  The key bindings remain practically the same as in Insert
+state.  If you type @key{ESC}, Viper will switch to Vi command mode, 
terminating the
+replacement address@hidden
address@hidden table
+
address@hidden mode line
+
+The modes are indicated on the @dfn{mode line} as <E>, <I>, <V>, and <R>,
+so that the multiple modes do not confuse you.  Most of your editing can be
+done in Vi and Insert states.  Viper will try to make all new buffers be in Vi
+state, but sometimes they may come up in Emacs state.  @kbd{C-z}
+will take you to Vi state in such a case.  In some major modes, like Dired,
+Info, Gnus, etc., you should not switch to Vi state (and Viper will not
+attempt to do so) because these modes are not intended for text editing and
+many of the Vi keys have special meaning there.  If you plan to read news,
+browse directories, read mail, etc., from Emacs (which you should start
+doing soon!), you should learn about the meaning of the various keys in
+those special modes (typing @kbd{C-h m} in a buffer provides
+help with key bindings for the major mode of that buffer).
+
+If you switch to Vi in Dired or similar modes---no harm is done.  It is just
+that the special key bindings provided by those modes will be temporarily
+overshadowed by Viper's bindings.  Switching back to Viper's Emacs state
+will revive the environment provided by the current major mode.
+
+States in Viper are orthogonal to Emacs major modes, such as C mode or Dired
+mode.  You can turn Viper on and off for any Emacs state.  When Viper is turned
+on, Vi state can be used to move around.  In Insert state, the bindings for
+these modes can be accessed.  For beginners (users at Viper levels 1 and 2),
+these bindings are suppressed in Insert state, so that new users are not
+confused by the Emacs states.  Note that unless you allow Emacs bindings in
+Insert state, you cannot do many interesting things, like language
+sensitive editing.  For the novice user (at Viper level 1), all major mode
+bindings are turned off in Vi state as well.  This includes the bindings for
+key sequences that start with @kbd{C-c}, which practically means that all
+major mode bindings are unsupported.  @xref{Customization}, to find out how
+to allow Emacs keys in Insert state.
+
address@hidden
+* Emacs State::         This is the state you should learn more about when
+                        you get up to speed with Viper.
+* Vi State::            Vi commands are executed in this state.
+* Insert State::        You can enter text, and also can do sophisticated
+                        editing if you know enough Emacs commands.
+* Replace State::       Like Insert mode, but it is invoked via the
+                        replacement commands, such as cw, C, R, etc.
address@hidden menu
+
address@hidden Emacs State, Vi State, States in Viper, States in Viper
address@hidden Emacs State
+
address@hidden @kbd{C-z}
address@hidden Emacs state
+
+
+You will be in this mode only by accident (hopefully).  This is the state
+Emacs is normally in (imagine!!).  Now leave it as soon as possible by
+typing @kbd{C-z}.  Then you will be in Vi state (sigh of relief) :-).
+
+Emacs state is actually a Viperism to denote all the major and minor modes
+(@pxref{Emacs Preliminaries}) other than Viper that Emacs can be in.  Emacs
+can have several modes, such as C mode for editing C programs, LaTeX mode
+for editing LaTeX documents, Dired for directory editing, etc.  These are
+major modes, each with a different set of key-bindings.  Viper states are
+orthogonal to these Emacs major modes.  The presence of these language
+sensitive and other modes is a major win over Vi.  @xref{Improvements over
+Vi}, for address@hidden
+
+The bindings for these modes can be made available in the Viper Insert state
+as well as in Emacs state.  Unless you specify your user level as 1 (a
+novice), all major mode key sequences that start with @kbd{C-x} and
address@hidden are also available in Vi state.  This is important because major
+modes designed for editing files, such as cc-mode or latex-mode, use key
+sequences that begin with @kbd{C-x} and @kbd{C-c}.
+
+There is also a key that lets you temporarily escape to Vi command state
+from Emacs or Insert states: typing @kbd{C-c \} will let you execute a
+single Vi command while staying in Viper's Emacs or Insert state.
+In Insert state, the same can also be achieved by typing @kbd{C-z}.
+
+
address@hidden Vi State, Insert State, Emacs State, States in Viper
address@hidden Vi State
+
address@hidden Vi state
+
+This is the Vi command mode.  When Viper is in Vi state, you will see the sign
+<V> in the mode line.  Most keys will work as in Vi.  The notable
+exceptions are:
+
address@hidden @kbd
address@hidden C-x
address@hidden @kbd{C-x}
address@hidden is used to invoke Emacs commands, mainly those that do window
+management.  @kbd{C-x 2} will split a window, @kbd{C-x 0} will close a
+window.  @kbd{C-x 1} will close all other windows.  @kbd{C-xb} is used to
+switch buffers in a window, and @kbd{C-xo} to move through windows.
+These are about the only necessary keystrokes.
+For the rest, see the GNU Emacs Manual.
+
address@hidden C-c
address@hidden @kbd{C-c}
+For user levels 2 and higher, this key serves as a prefix key for the key
+sequences used by various major modes.  For users at Viper level 1, @kbd{C-c}
+simply beeps.
+
address@hidden C-g and C-]
address@hidden @kbd{C-g}
address@hidden @kbd{C-]}
+
+These are the Emacs @samp{quit} keys.
+There will be cases where you will have to
+use @kbd{C-g} to quit.  Similarly, @kbd{C-]} is used to exit
address@hidden Edits} in Emacs for which there is no comparable Vi
+functionality and no key-binding.  Recursive edits are indicated by
address@hidden brackets framing the modes on the mode line.
address@hidden Edit,Recursive
+Edit,Recursive Edit,emacs,The GNU Emacs Manual}.
+At user level 1, @kbd{C-g} is bound to @code{viper-info-on-file}
+function instead.
address@hidden
address@hidden C-\
address@hidden @kbd{C-\}
address@hidden Meta key
+
+Viper uses @key{ESC} as a switch between Insert and Vi states.  Emacs uses
address@hidden for Meta.  The Meta key is very important in Emacs since many
+functions are accessible only via that key as @kbd{M-x function-name}.
+Therefore, we need to simulate it somehow.  In Viper's Vi, Insert, and
+Replace states, the meta key is set to be @kbd{C-\}.  Thus, to get
address@hidden, you should type @kbd{C-\ x} (if the keyboard has no Meta key,
+which is rare these days).
+This works both in the Vi command state and in the Insert and Replace
+states.  In Vi command state, you can also use @kbd{\ @key{ESC}} as the
+meta key.
+
+Note: Emacs binds @kbd{C-\} to a function that offers to change the
+keyboard input method in the multilingual environment.  Viper overrides this
+binding.  However, it is still possible to switch the input method by typing
address@hidden C-\} in the Vi command state and @kbd{C-z \ C-\} in the Insert 
state.
+Or you can use the MULE menu in the menubar.
address@hidden table
address@hidden
+Other differences are mostly improvements.  The ones you should know
+about are:
+
address@hidden @samp
address@hidden Undo
address@hidden @kbd{u}
address@hidden will undo.  Undo can be repeated by the @kbd{.} key.  Undo itself
+can be undone.  Another @kbd{u} will change the direction.  The presence
+of repeatable undo means that @kbd{U}, undoing lines, is not very
+important.  Therefore, @kbd{U} also calls @code{viper-undo}.
address@hidden multiple undo
address@hidden undo
+
+
address@hidden Counts
+Most commands, @kbd{~}, @kbd{[[}, @kbd{p}, @kbd{/}, @dots{}, etc., take counts.
+
address@hidden ]] Just to balance parens
address@hidden Regexps
+Viper uses Emacs Regular Expressions for searches.  These are a superset of
+Vi regular
+expressions, excepting the change-of-case escapes @samp{\u}, @samp{\L},
address@hidden, etc.  @xref{Regular Expressions,,Regular Expressions,emacs,The
+GNU Emacs Manual}, for details.
+Files specified to @kbd{:e} use @code{csh} regular expressions
+(globbing, wildcards, what have you).
+However, the function @code{viper-toggle-search-style}, bound to @kbd{C-c /},
+lets the user switch from search with regular expressions to plain vanilla
+search and vice versa.  It also lets one switch from case-sensitive search
+to case-insensitive and back.
address@hidden Specials}, for more details.
address@hidden regular expressions
address@hidden vanilla search
address@hidden case-sensitive search
address@hidden case-insensitive search
address@hidden @kbd{C-c /}
+
address@hidden Ex commands
address@hidden Ex commands
+The current working directory of a buffer is automatically inserted in the
+minibuffer if you type @kbd{:e} then space.  Absolute filenames are
+required less often in Viper.  For file names, Emacs uses a convention that
+is slightly different from other programs.  It is designed to minimize the
+need for deleting file names that Emacs provides in its prompts.  (This is
+usually convenient, but occasionally the prompt may suggest a wrong file
+name for you.)  If you see a prompt @kbd{/usr/foo/} and you wish to edit the
+file @kbd{~/.viper}, you don't have to erase the prompt.  Instead, simply
+continue typing what you need.  Emacs will interpret @kbd{/usr/foo/~/.viper}
+correctly.  Similarly, if the prompt is @kbd{~/foo/} and you need to get to
address@hidden/bar/file}, keep typing.  Emacs interprets @kbd{~/foo//bar/} as
address@hidden/bar/file}, since when it sees @samp{//}, it understands that
address@hidden/foo/} is to be discarded.
+
+The command @kbd{:cd} will change the default directory for the
+current buffer.  The command @kbd{:e} will interpret the
+filename argument in @code{csh}.  @xref{Customization}, if you
+want to change the default shell.
+The command @kbd{:next} takes counts from
address@hidden:args}, so that @kbd{:rew} is obsolete.  Also, @kbd{:args} will 
show only
+the invisible files (i.e., those that are not currently seen in Emacs
+windows).
+
+When applicable, Ex commands support file completion and history.  This
+means that by typing a partial file name and then @key{TAB}, Emacs will try
+to complete the name or it will offer a menu of possible completions.
+This works similarly to Tcsh and extends the behavior of Csh.  While Emacs
+is waiting for a file name, you can type @kbd{M-p} to get the previous file
+name you typed.  Repeatedly typing @kbd{M-p} and @kbd{M-n} will let you
+browse through the file history.
+
+Like file names, partially typed Ex commands can be completed by typing
address@hidden, and Viper keeps the history of Ex commands.  After typing
address@hidden:}, you can browse through the previously entered Ex commands by
+typing @kbd{M-p} and @kbd{M-n}.  Viper tries to rationalize when it puts Ex
+commands on the history list.  For instance, if you typed @kbd{:w!@: foo},
+only @kbd{:w!} will be placed on the history list.  This is because the
+last history element is the default that can be invoked simply by typing
address@hidden: @key{RET}}.  If @kbd{:w!@: foo} were placed on the list, it 
would be all to
+easy to override valuable data in another file.  Reconstructing the full
+command, @kbd{:w!@: foo}, from the history is still not that hard, since Viper
+has a separate history for file names.  By typing @kbd{: M-p}, you will get
address@hidden:w!} in the Minibuffer.  Then, repeated @kbd{M-p} will get you 
through
+the file history, inserting one file name after another.
+
+In contrast to @kbd{:w!@: foo}, if the command were @kbd{:r foo}, the entire
+command will appear in the history list.  This is because having @kbd{:r}
+alone as a default is meaningless, since this command requires a file
+argument.
address@hidden
address@hidden table
address@hidden
+As Vi, Viper's destructive commands can be re-executed by typing 
address@hidden'.
+However, in addition, Viper keeps track of the history of such commands.  This
+history can be perused by typing @kbd{C-c M-p} and @kbd{C-c M-n}.
+Having found the appropriate command, it can be then executed by typing
address@hidden'.
address@hidden over Vi}, for more information.
+
address@hidden Insert State, Replace State, Vi State, States in Viper
address@hidden Insert State
+
address@hidden Insert state
+
+To avoid confusing the beginner (at Viper level 1 and 2), Viper makes only the
+standard Vi keys available in Insert state.  The implication is that
+Emacs major modes cannot be used in Insert state.
+It is strongly recommended that as soon as you are comfortable, make the
+Emacs state bindings visible (by changing your user level to 3 or higher).
address@hidden,
+to see how to do address@hidden
+
+Once this is done, it is possible to do quite a bit of editing in
+Insert state.  For instance, Emacs has a @dfn{yank} command, @kbd{C-y},
+which is similar to Vi's @kbd{p}.  However, unlike @kbd{p}, @kbd{C-y} can be
+used in Insert state of Viper.  Emacs also has a kill ring where it keeps
+pieces of text you deleted while editing buffers.  The command @kbd{M-y} is
+used to delete the text previously put back by Emacs' @kbd{C-y} or by Vi's
address@hidden command and reinsert text that was placed on the kill-ring 
earlier.
+
+This works both in Vi and Insert states.
+In Vi state, @kbd{M-y} is a much better alternative to the usual Vi's way
+of recovering the 10 previously deleted chunks of text.  In Insert state,
+you can
+use this as follows.  Suppose you deleted a piece of text and now you need
+to re-insert it while editing in Insert mode.  The key @kbd{C-y} will put
+back the most recently deleted chunk.  If this is not what you want, type
address@hidden repeatedly and, hopefully, you will find the chunk you want.
+
+Finally, in Insert and Replace states, Viper provides the history of
+pieces of text inserted in previous insert or replace commands.  These
+strings of text can be recovered by repeatedly typing @kbd{C-c M-p} or
address@hidden M-n} while in Insert or Replace state.  (This feature is disabled
+in the minibuffer: the above keys are usually bound to other histories,
+which are more appropriate in the minibuffer.)
+
+
address@hidden Meta key
+
+You can call Meta functions from Insert state.  As in Vi state, the Meta key
+is @kbd{C-\}.  Thus @kbd{M-x} is typed as @kbd{C-\ x}.
+
+Other Emacs commands that are useful in Insert state are @kbd{C-e}
+and @kbd{C-a}, which move the cursor to the end and the beginning of the
+current line, respectively.  You can also use @kbd{M-f} and @kbd{M-b},
+which move the cursor forward (or backward) one word.
+If your display has a Meta key, these functions are invoked by holding the
+Meta key and then typing @kbd{f} and @kbd{b}, respectively.  On displays
+without the Meta key, these functions are invoked by typing
address@hidden f} and @kbd{C-\ b} (@kbd{C-\} simulates the Meta key in Insert
+state, as explained above).
+
+The key @kbd{C-z} is sometimes also useful in Insert state: it allows you
+to execute a single command in Vi state without leaving the Insert state!
+For instance, @kbd{C-z d2w} will delete the next two words without leaving
+the Insert state.
+
+When Viper is in Insert state, you will see <I> in the mode line.
+
address@hidden Replace State,, Insert State, States in Viper
address@hidden Replace State
+
address@hidden Replace state
+
+This state is entered through Vi replacement commands, such as @kbd{C},
address@hidden, etc., or by typing @kbd{R}.  In Replace state, Viper puts <R> in
+the mode line to let you know which state is in effect.  If Replace state is
+entered through @kbd{R}, Viper stays in that state until the user hits
address@hidden  If this state is entered via the other replacement commands,
+then Replace state is in effect until you hit @key{ESC} or until you cross
+the rightmost boundary of the replacement region.  In the latter case, Viper
+changes its state from Replace to Insert (which you will notice by the
+change in the mode line).
+
+Since Viper runs under Emacs, it is possible to switch between buffers
+while in Replace state.  You can also move the cursor using the arrow keys
+(even on dumb terminals!)@: and the mouse.  Because of this freedom (which is
+unattainable in regular Vi), it is possible to take the cursor outside the
+replacement region.  (This may be necessary for several reasons, including
+the need to enable text selection and region-setting with the mouse.)
+
+The issue then arises as to what to do when the user
+hits the @key{ESC} key.  In Vi, this would cause the text between cursor and
+the end of the replacement region to be deleted.  But what if, as is
+possible in Viper, the cursor is not inside the replacement region?
+
+To solve the problem, Viper keeps track of the last cursor position while it
+was still inside the replacement region.  So, in the above situation, Viper
+would delete text between this position and the end of the replacement
+region.
+
address@hidden The Minibuffer,Multiple Files in Viper, States in Viper, Overview
address@hidden The Minibuffer
+
address@hidden Minibuffer
+
+The Minibuffer is where commands are entered in.  Editing can be done
+by commands from Insert state, namely:
+
address@hidden @kbd
address@hidden C-h
+Backspace
address@hidden C-w
+Delete Word
address@hidden C-u
+Erase line
address@hidden C-v
+Quote the following character
address@hidden @key{RET}
+Execute command
address@hidden C-g and C-]
+Emacs quit and abort keys.  These may be necessary.  @xref{Vi State}, for an
+explanation.
address@hidden M-p and M-n
+These keys are bound to functions that peruse minibuffer history.  The
+precise history to be perused depends on the context.  It may be the history
+of search strings, Ex commands, file names, etc.
address@hidden table
+
+Most of the Emacs keys are functional in the Minibuffer.  While in the
+Minibuffer, Viper tries to make editing resemble Vi's behavior when the
+latter is waiting for the user to type an Ex command.  In particular, you
+can use the regular Vi commands to edit the Minibuffer.  You can switch
+between the Vi state and Insert state at will, and even use the replace mode.
+Initially, the Minibuffer comes up in Insert state.
+
+Some users prefer plain Emacs bindings in the Minibuffer.  To this end, set
address@hidden to @code{nil} in @file{.viper}.
address@hidden, to learn how to do this.
+
+When the Minibuffer changes Viper states, you will notice that the appearance
+of the text there changes as well.  This is useful because the Minibuffer
+has no mode line to tell which Vi state it is in.
+The appearance of the text in the Minibuffer can be changed.
address@hidden Specials}, for more details.
+
address@hidden Multiple Files in Viper,Unimplemented Features,The 
Minibuffer,Overview
address@hidden Multiple Files in Viper
+
address@hidden multiple files
address@hidden managing multiple files
+
+Viper can edit multiple files.  This means, for example that you never need
+to suffer through @code{No write since last change} errors.
+Some Viper elements are common over all the files.
+
address@hidden @samp
address@hidden Textmarkers
address@hidden markers
address@hidden textmarkers
+Textmarkers remember @emph{files and positions}.
+If you set marker @samp{a} in
+file @file{foo}, start editing file @file{bar} and type @kbd{'a}, then
address@hidden WILL SWITCH TO FILE @file{foo}}.  You can see the contents of a
+textmarker using the Viper command @kbd{[<a-z>} where <a-z> are the
+textmarkers, e.g., @kbd{[a} to view marker @samp{a} address@hidden
address@hidden Repeated Commands
+Command repetitions are common over files.  Typing @kbd{!!} will repeat the
+last @kbd{!} command whichever file it was issued from.
+Typing @kbd{.} will repeat the last command from any file, and
+searches will repeat the last search.  Ex commands can be repeated by typing
address@hidden: @address@hidden
+Note: in some rare cases, that @kbd{: @key{RET}} may do something dangerous.
+However, usually its effect can be undone by typing @kbd{u}.
address@hidden Registers
address@hidden registers
+Registers are common to files.  Also, text yanked with @kbd{y} can be
+put back (@kbd{p}) into any file.  The Viper command @kbd{]<a-z>}, where <a-z> 
are
+the registers, can be used to look at the contents of a register, e.g.,
+type @kbd{]a} to view register @samp{a}.
+
+There is one difference in text deletion that you should be
+aware of.  This difference comes from Emacs and was adopted in Viper
+because we find it very useful.  In Vi, if you delete a line, say, and then
+another line, these two deletions are separated and are put back
+separately if you use the @samp{p} command.  In Emacs (and Viper), successive
+series of deletions that are @emph{not interrupted} by other commands are
+lumped together, so the deleted text gets accumulated and can be put back
+as one chunk.  If you want to break a sequence of deletions so that the
+newly deleted text could be put back separately from the previously deleted
+text, you should perform a non-deleting action, e.g., move the cursor one
+character in any direction.
address@hidden Absolute Filenames
address@hidden absolute file names
+The current directory name for a file is automatically prepended to the
+file name in any
address@hidden:e}, @kbd{:r}, @kbd{:w}, etc., command (in Emacs, each buffer has 
a
+current directory).
+This directory is inserted in the Minibuffer once you type space after
address@hidden:e, r}, etc.  Viper also supports completion of file names and Ex
+commands (@key{TAB}), and it keeps track of
+command and file history (@kbd{M-p}, @kbd{M-n}).
+Absolute filenames are required less
+often in Viper.
+
+You should be aware that Emacs interprets @kbd{/foo/bar//bla} as
address@hidden/bla} and @kbd{/foo/~/bar} as @kbd{~/bar}.  This is designed to
+minimize the need for erasing file names that Emacs suggests in its
+prompts, if a suggested file name is not what you wanted.
+
+The command @kbd{:cd} will change the default directory for the
+current Emacs buffer.  The Ex command @kbd{:e} will interpret the
+filename argument in @samp{csh}, by default.  @xref{Customization}, if you
+want to change this.
address@hidden table
+
address@hidden
+Currently undisplayed files can be listed using the @kbd{:ar} command.  The
+command @kbd{:n} can be given counts from the @kbd{:ar} list to switch to
+other files. For example, use `:n3' to move to the third file in that list.
+
address@hidden Unimplemented Features,,Multiple Files in Viper,Overview
address@hidden Unimplemented Features
+
+Unimplemented features include:
+
address@hidden @bullet
address@hidden
address@hidden:ab} and @kbd{:una} are not implemented, since
address@hidden:ab} is considered obsolete, since Emacs has much
+more powerful facilities for defining abbreviations.
address@hidden
address@hidden:set option?} is not implemented.  The current
address@hidden:set} can also be used to set Emacs variables.
address@hidden
address@hidden:se list} requires modification of the display code for Emacs, so
+it is not implemented.
+A useful alternative is @code{cat -t -e file}.  Unfortunately, it cannot
+be used directly inside Emacs, since Emacs will obdurately change @samp{^I}
+back to normal address@hidden
address@hidden itemize
+
address@hidden  node-name,  next,  previous,  up
address@hidden Improvements over Vi, Customization, Overview, Top
address@hidden Improvements over Vi
+
+Some common problems with Vi and Ex have been solved in Viper.  This
+includes better implementation of existing commands, new commands, and
+the facilities provided by Emacs.
+
address@hidden
+* Basics::                  Basic Viper differences, Multi-file effects.
+* Undo and Backups::        Multiple undo, auto-save, backups and changes
+* History::                 History for Ex and Vi commands.
+* Macros and Registers::    Keyboard Macros (extended ".")@: @@reg execution.
+* Completion::              Filename and Command Completion for Ex.
+* Improved Search::         Incremental Search and Buffer Content Search.
+* Abbreviation Facilities:: Normal Abbrevs, Templates, and Dynamic Abbrevs.
+* Movement and Markers::    Screen Editor movements, viewing textmarkers.
+* New Commands::            Commands that do not exist in Vi.
+* Useful Packages::         A Sampling of some Emacs packages, and things
+                            you should know about.
address@hidden menu
+
address@hidden Basics, Undo and Backups, Improvements over Vi, Improvements 
over Vi
address@hidden Basics
+
+The Vi command set is based on the idea of combining motion commands
+with other commands.  The motion command is used as a text region
+specifier for other commands.
+We classify motion commands into @dfn{point commands} and
address@hidden address@hidden
+
address@hidden point commands
+
+The point commands are:
+
address@hidden
address@hidden, @kbd{l}, @kbd{0},  @kbd{$}, @kbd{w}, @kbd{W}, @kbd{b}, @kbd{B},
address@hidden, @kbd{E}, @kbd{(}, @kbd{)}, @kbd{/}, @kbd{?}, @kbd{`}, @kbd{f},
address@hidden, @kbd{t}, @kbd{T}, @kbd{%}, @kbd{;}, @kbd{,}, @kbd{^}
address@hidden quotation
+
address@hidden line commands
+
+The line commands are:
+
address@hidden
address@hidden, @kbd{k}, @kbd{+}, @kbd{-}, @kbd{H}, @kbd{M}, @kbd{L}, 
@address@hidden,
address@hidden@}}, @kbd{G}, @kbd{'},  @kbd{[[}, @kbd{]]}, @kbd{[]}
address@hidden quotation
+
address@hidden region
address@hidden region specification
address@hidden expanding (region)
address@hidden describing regions
address@hidden movement commands
+
address@hidden
+If a point command is given as an argument to a modifying command, the
+region determined by the point command will be affected by the modifying
+command.  On the other hand, if a line command is given as an argument to a
+modifying command, the region determined by the line command will be
+enlarged so that it will become the smallest region properly containing the
+region and consisting of whole lines (we call this process @dfn{expanding
+the region}), and then the enlarged region will be affected by the modifying
+command.
+Text Deletion Commands (@pxref{Deleting Text}), Change commands
+(@pxref{Changing Text}), even Shell Commands (@pxref{Shell Commands})
+use these commands to describe a region of text to operate on.
+Thus, type @kbd{dw} to delete a word, @kbd{>@}} to shift a paragraph, or
address@hidden'afmt} to format a region from @samp{point} to textmarker
address@hidden
+
address@hidden r and R region specifiers
+
+Viper adds the region specifiers @samp{r} and @samp{R}.  Emacs has a
+special marker called @dfn{mark}.  The text-area between the current cursor
+position @dfn{point} and the @dfn{mark} is called the @dfn{region}.
address@hidden specifies the raw region and @samp{R} is the expanded region
+(i.e., the minimal contiguous chunk of full lines that contains the raw
+region).
address@hidden will now delete the region, @kbd{>r} will shift it, etc.
address@hidden,R} are not motion commands, however.  The special mark is set by
address@hidden and other commands.  @xref{Marking}, for more info.
+
+Viper also adds counts to most commands for which it would make sense.
+
+In the Overview chapter, some Multiple File issues were discussed
+(@pxref{Multiple Files in Viper}).  In addition to the files, Emacs has
+buffers.  These can be seen in the @kbd{:args} list and switched using
address@hidden:next} if you type @kbd{:set ex-cycle-through-non-files t}, or
+specify @code{(setq ex-cycle-through-non-files t)} in your @file{.viper}
+file.  @xref{Customization}, for details.
+
address@hidden Undo and Backups, History, Basics, Improvements over Vi
address@hidden Undo and Backups
+
address@hidden undo
+
+Viper provides multiple undo.  The number of undo's and the size is limited
+by the machine.  The Viper command @kbd{u} does an undo.  Undo can be
+repeated by typing @kbd{.} (a period).  Another @kbd{u} will undo the undo,
+and further
address@hidden will repeat it.  Typing @kbd{u} does the first undo, and changes 
the
+direction.
+
address@hidden backup files
address@hidden auto save
+
+Since the undo size is limited, Viper can create backup files and
+auto-save files.  It will normally do this automatically.  It is possible
+to have numbered backups, etc.  For details, @pxref{Backup,,Backup and
+Auto-Save,emacs,The GNU Emacs Manual} @refill
+
address@hidden [ balance parens
address@hidden viewing registers and markers
address@hidden registers
address@hidden markers
address@hidden textmarkers
+
+The results of the 9 previous changes are available in the 9 numeric
+registers, as in Vi.  The extra goody is the ability to @emph{view} these
+registers, in addition to being able to access them through @kbd{p} and
address@hidden (@xref{Insert State}, for details.)
+The Viper command @kbd{] register} will display the contents of any
+register, numeric or alphabetical.  The related command @kbd{[ textmarker}
+will show the text around the textmarker.  @samp{register} and 
@samp{textmarker}
+can be any letters from a through z.
address@hidden ] balance parens
+
address@hidden History,  Macros and Registers, Undo and Backups,Improvements 
over Vi
address@hidden History
+
address@hidden history
address@hidden Minibuffer
+
+History is provided for Ex commands, Vi searches, file names, pieces of
+text inserted in earlier commands that use Insert or Replace state, and for
+destructive commands in Vi state.  These are
+useful for fixing those small typos that screw up searches and @kbd{:s},
+and for eliminating routine associated with repeated typing of file names
+or pieces of text that need to be inserted frequently.
+At the @kbd{:} or @kbd{/} prompts in the Minibuffer, you can do the following:
+
address@hidden @kbd
address@hidden M-p and M-n
+To move to previous and next history items.  This causes the history
+items to appear on the command line, where you can edit them, or
+simply type Return to execute.
address@hidden M-r and M-s
+To search backward and forward through the history.
address@hidden @key{RET}
+Type @key{RET} to accept a default (which is displayed in the prompt).
address@hidden table
+
+The history of insertions  can be perused by
+typing @kbd{C-c M-p} and @kbd{C-c M-n} while in Insert or Replace state.
+The history of destructive Vi commands can be perused via the same keys
+when Viper is in Vi state.  @xref{Viper Specials}, for details.
+
+All Ex commands have a file history.  For instance, typing @kbd{:e}, space
+and then @kbd{M-p} will bring up the name of the previously typed file
+name.  Repeatedly typing @kbd{M-p}, @kbd{M-n}, etc., will let you browse
+through the file history.
+
+Similarly, commands that have to do with switching buffers
+have a buffer history, and commands that expect strings or regular
+expressions keep a history on those items.
+
address@hidden Macros and Registers,Completion,History,Improvements over Vi
address@hidden Macros and Registers
+
address@hidden keyboard macros
address@hidden macros
address@hidden registers
address@hidden register execution
+
+Viper facilitates the use of Emacs-style keyboard macros.  @kbd{@@#} will
+start a macro definition.  As you type, the commands will be executed, and
+remembered (This is called ``learn mode'' in some editors.)
address@hidden@@register} will complete the macro, putting it into 
@samp{register},
+where @samp{register} is any character from @samp{a} through @samp{z}.  Then
+you can execute this macro using @kbd{@@register}.  It is, of course,
+possible to yank some text into a register and execute it using
address@hidden@@register}.  Typing @kbd{@@@@}, @kbd{@@RET}, or @kbd{@@C-j} will
+execute the last macro that was executed using @kbd{@@address@hidden
+
+Viper will automatically lowercase the register, so that pressing the
address@hidden key for @kbd{@@} will not create problems.  This is for
address@hidden@@} macros and @kbd{"p} @emph{only}.  In the case of @kbd{y},
address@hidden"Ayy} will append to @emph{register a}.  For @kbd{[,],',`}, it
+is an error to use a Uppercase register name.
+
address@hidden [ balance parens
address@hidden viewing registers and markers
+
+The contents of a register can be seen by @kbd{]register}.  (@kbd{[textmarker}
+will show the contents of a textmarker).
address@hidden ] balance parens
+
address@hidden last keyboard macro
+
+The last keyboard macro can also be executed using
address@hidden, and it can be yanked into a register using @kbd{@@!register}.
+This is useful for Emacs style keyboard macros defined using @kbd{C-x(}
+and @kbd{C-x)}.  Emacs keyboard macros have more capabilities.
address@hidden Macros,,Keyboard Macros,emacs, The GNU Emacs Manual}, for
address@hidden
+
+Keyboard Macros allow an interesting form of Query-Replace:
address@hidden/pattern} or @kbd{n} to go to the next pattern (the query), 
followed by a
+Keyboard Macro execution @kbd{@@@@} (the replace).
+
+Viper also provides Vi-style macros.  @xref{Vi Macros}, for details.
+
+
address@hidden Completion, Improved Search, Macros and Registers, Improvements 
over Vi
address@hidden Completion
+
address@hidden completion
+
+Completion is done when you type @key{TAB}.  The Emacs completer does not
+grok wildcards in file names.  Once you type a wildcard, the completer will
+no longer work for that file name.  Remember that Emacs interprets a file name
+of the form @kbd{/foo//bar} as @kbd{/bar} and @kbd{/foo/~/bar} as
address@hidden/bar}.
+
address@hidden Improved Search, Abbreviation Facilities, Completion, 
Improvements over Vi
address@hidden Improved Search
+
address@hidden buffer search
address@hidden word search
+
+Viper provides buffer search, the ability to search the buffer for a region
+under the cursor.  You have to turn this on in @file{.viper} either by calling
+
address@hidden
+(viper-buffer-search-enable)
address@hidden example
+
address@hidden
+or by setting @code{viper-buffer-search-char} to, say, @kbd{f3}:
address@hidden
+(setq viper-buffer-search-char ?g)
address@hidden example
+
address@hidden
+If the user calls @code{viper-buffer-search-enable} explicitly (the first
+method), then @code{viper-buffer-search-char} will be set to @kbd{g}.
+Regardless of how this feature is enabled, the key
address@hidden will take movement commands, like
address@hidden,/,e}, to find a region and then search for the contents of that
+region.  This command is very useful for searching for variable names, etc.,
+in a program.  The search can be repeated by @kbd{n} or reversed by @kbd{N}.
+
address@hidden incremental search
+
+Emacs provides incremental search.  As you type the string in, the
+cursor will move to the next match.  You can snarf words from the buffer
+as you go along.  Incremental Search is normally bound to @kbd{C-s} and
address@hidden  @xref{Customization}, to find out how to change the bindings
+of @kbd{C-r or C-s}.
+For details, @pxref{Incremental Search,,Incremental
+Search,emacs,The GNU Emacs Manual} @refill
+
address@hidden query replace
+
+Viper also provides a query replace function that prompts through the
+Minibuffer.  It is invoked by the @kbd{Q} key in Vi state.
+
address@hidden mouse search
+
+On a window display, Viper supports mouse search, i.e., you can search for a
+word by clicking on it.  @xref{Viper Specials}, for details.
+
+Finally, on a window display, Viper highlights search patterns as it finds
+them.  This is done through what is known as @emph{faces} in Emacs.  The
+variable that controls how search patterns are highlighted is
address@hidden  If you don't want any highlighting at all, put
address@hidden
+(copy-face 'default 'viper-search-face)
address@hidden example
address@hidden @code{viper-search-face}
address@hidden
+in @file{~/.viper}.  If you want to change how patterns are highlighted, you
+will have to change @code{viper-search-face} to your liking.  The easiest
+way to do this is to use Emacs customization widget, which is accessible
+from the menubar.  Viper customization group is located under the
address@hidden customization group, which in turn is under the
address@hidden group (or simply by typing @kbd{:customize}).  All Viper
+faces are grouped together under Viper's 
address@hidden group.
+
+Try it: it is really simple!
+
address@hidden Abbreviation Facilities,Movement and Markers,Improved 
Search,Improvements over Vi
address@hidden Abbreviation Facilities
+
address@hidden abbrevs
+
+It is possible in Emacs to define abbrevs based on the contents of the
+buffer.
+Sophisticated templates can be defined using the Emacs abbreviation
+facilities.  @xref{Abbrevs,,Abbreviations,emacs,The GNU Emacs Manual}, for
+details.
+
address@hidden dynamic abbrevs
+
+Emacs also provides Dynamic Abbreviations.  Given a partial word, Emacs
+will search the buffer to find an extension for this word.  For instance,
+one can type @samp{Abbreviations} by typing @samp{A}, followed by a keystroke
+that completed the @samp{A} to @samp{Abbreviations}.  Repeated typing
+will search further back in the buffer, so that one could get
address@hidden by repeating the
+keystroke, which appears earlier in the text.  Emacs binds this to
address@hidden@key{ESC} /}, so you will have to find a key and bind the function
address@hidden to that key.
+Facilities like this make Vi's @kbd{:ab} command obsolete.
+
address@hidden Movement and Markers, New Commands, Abbreviation Facilities, 
Improvements over Vi
address@hidden Movement and Markers
+
address@hidden Ex style motion
address@hidden line editor motion
+
+Viper can be set free from the line--limited movements in Vi, such as @kbd{l}
+refusing to move beyond the line, @key{ESC} moving one character back,
+etc.  These derive from Ex, which is a line editor.  If your @file{.viper}
+contains
+
address@hidden
address@hidden(setq viper-ex-style-motion nil)}
address@hidden example
+
address@hidden
+the motion will be a true screen editor motion.  One thing you must then
+watch out for is that it is possible to be on the end-of-line character.
+The keys @kbd{x} and @kbd{%} will still work correctly, i.e., as if they
+were on the last character.
+
address@hidden @code{viper-syntax-preference}
address@hidden syntax table
+
+The word-movement commands @kbd{w}, @kbd{e}, etc., and the associated
+deletion/yanking commands, @kbd{dw}, @kbd{yw}, etc., can be made to
+understand Emacs syntax tables.  If the variable
address@hidden is set to @code{strict-vi} then
+the meaning of @emph{word} is the same as in
+Vi.  However, if the value is @code{reformed-vi} (the default) then the
+alphanumeric symbols will be those specified by the current Emacs syntax
+table (which may be different for different major modes) plus the
+underscore symbol @kbd{_}, minus some non-word symbols, like '.;,|, etc.
+Both @code{strict-vi} and @code{reformed-vi} work close to Vi in
+traditional cases, but @code{reformed-vi} does a better job when editing
+text in non-Latin alphabets.
+
+The user can also specify the value @code{emacs}, which would
+make Viper use exactly the Emacs notion of word.  In particular, the
+underscore may not be part of a word.  Finally, if
address@hidden is set to @code{extended}, Viper words would
+consist of characters that are classified as alphanumeric @emph{or} as
+parts of symbols.  This is convenient for writing programs and in many other
+situations.
+
address@hidden is a local variable, so it can have different
+values for different major modes.  For instance, in programming modes it can
+have the value @code{extended}.  In text modes where words contain special
+characters, such as European (non-English) letters, Cyrillic letters, etc.,
+the value can be @code{reformed-vi} or @code{emacs}.
+
+Changes to @code{viper-syntax-preference} should be done in the hooks to
+various major modes by executing @code{viper-set-syntax-preference} as in
+the following example:
+
address@hidden
+(viper-set-syntax-preference nil "emacs")
address@hidden example
+
address@hidden @code{viper-set-syntax-preference}
+
+The above discussion of the meaning of Viper's words concerns only Viper's
+movement commands.  In regular expressions, words remain the same as in
+Emacs.  That is, the expressions @code{\w}, @code{\>}, @code{\<}, etc., use
+Emacs' idea of what is a word, and they don't look into the value of
+variable @code{viper-syntax-preference}.  This is because Viper doesn't change
+syntax tables in fear of upsetting the various major modes that set these
+tables.
+
address@hidden textmarkers
+
+Textmarkers in Viper remember the file and the position, so that you can
+switch files by simply doing @kbd{'a}.  If you set up a regimen for using
+Textmarkers, this is very useful.  Contents of textmarkers can be viewed
+by @kbd{[marker}.  (Contents of registers can be viewed by @kbd{]register}).
+
address@hidden New Commands, Useful Packages, Movement and Markers, 
Improvements over Vi
address@hidden New Commands
+
+These commands have no Vi analogs.
+
address@hidden @kbd
address@hidden C-x, C-c
address@hidden @kbd{C-x}
address@hidden @kbd{C-c}
+These two keys invoke many important Emacs functions.  For example, if you
+hit @kbd{C-x} followed by @kbd{2}, then the current window will be split
+into 2.  Except for novice users, @kbd{C-c} is also set to execute an Emacs
+command from the current major mode.  @key{ESC} will do the same, if you
+configure @key{ESC} as Meta by setting @code{viper-no-multiple-ESC} to nil
+in @file{.viper}.  @xref{Customization}.  @kbd{C-\} in Insert, Replace, or Vi
+states will make Emacs think @kbd{Meta} has been address@hidden
address@hidden \
address@hidden @kbd{\}
+Escape to Emacs to execute a single Emacs command.  For instance,
address@hidden @key{ESC}} will act like a Meta key.
address@hidden Q
address@hidden @kbd{Q}
address@hidden query replace
address@hidden is for query replace.  By default,
+each string to be replaced is treated as a regular expression.  You can use
address@hidden(setq viper-re-query-replace nil)} in your @file{.emacs} file to
+turn this off.  (For normal searches, @kbd{:se nomagic} will work.  Note
+that @kbd{:se nomagic} turns Regexps off completely, unlike Vi).
address@hidden v
address@hidden V
address@hidden C-v
address@hidden @kbd{v}
address@hidden @kbd{V}
address@hidden @kbd{C-v}
+These keys are used to visit files.  @kbd{v} will switch to a buffer
+visiting file whose name can be entered in the Minibuffer.  @kbd{V} is
+similar, but will use a window different from the current window.
address@hidden is like @kbd{V}, except that a new frame (X window) will be used
+instead of a new Emacs window.
address@hidden #
address@hidden @kbd{#}
+If followed by a certain character @var{ch}, it becomes an operator whose
+argument is the region determined by the motion command that follows
+(indicated as <move>).
+Currently, @var{ch} can be one of @kbd{c}, @kbd{C}, @kbd{g}, @kbd{q}, and
address@hidden  For instance, @kbd{#qr} will prompt you for a string and then
+prepend this string to each line in the address@hidden
address@hidden # c
address@hidden @kbd{#c<move>}
address@hidden changing case
+Change upper-case characters in the region to lower-case
+(@code{downcase-region}).
+Emacs command @kbd{M-l} does the same for words.
address@hidden # C
address@hidden @kbd{#C<move>}
+Change lower-case characters in the region to upper-case.  For instance,
address@hidden C 3 w} will capitalize 3 words from the current point
+(@code{upcase-region}).
+Emacs command @kbd{M-u} does the same for words.
address@hidden # g
address@hidden @kbd{#g<move>}
+Execute last keyboard macro for each line in the region
+(@code{viper-global-execute})address@hidden
address@hidden # q
address@hidden @kbd{#q<move>}
+Insert specified string at the beginning of each line in the region
+(@code{viper-quote-region}).  The default string is composed of the comment
+character(s) appropriate for the current major mode.
address@hidden # s
address@hidden @kbd{#s<move>}
+Check spelling of words in the region (@code{spell-region}).
+The function used for spelling is determined from the variable
address@hidden
address@hidden @code{viper-spell-function}
address@hidden *
address@hidden @kbd{*}
+Call last keyboard macro.
address@hidden m .
+Set mark at point and push old mark off the ring
address@hidden m<
address@hidden m>
+Set mark at beginning and end of buffer, respectively.
address@hidden m,
+Jump to mark and pop mark off the ring.  @xref{Mark,,Mark,emacs,The GNU
+Emacs Manual}, for more info.
address@hidden ] register
address@hidden @kbd{]<a-z>}
+View contents of register
address@hidden [ textmarker
address@hidden @kbd{[<a-z>}
+View filename and position of textmarker
address@hidden @@#
address@hidden @@register
address@hidden @@!
address@hidden @kbd{@@#}
address@hidden @kbd{@@<a-z>}
address@hidden @kbd{@@!}
address@hidden keyboard macros
address@hidden register execution
+
+Begin/end keyboard macro.  @@register has a different meaning when used after
+a @kbd{@@#}.  @xref{Macros and Registers}, for details
address@hidden []
address@hidden @kbd{[]}
+Go to end of heading.
address@hidden g <@emph{movement command}>
+Search buffer for text delimited by movement command.  The canonical
+example is @kbd{gw} to search for the word under the cursor.
address@hidden Search}, for address@hidden
address@hidden C-g and C-]
address@hidden @kbd{C-g}
address@hidden @kbd{C-]}
+Quit and Abort Recursive edit.  These may be necessary on occasion.
address@hidden State}, for a reason.
address@hidden C-c C-g
address@hidden @kbd{C-c C-g}
+Hitting @kbd{C-c} followed by @kbd{C-g} will display the information on the
+current buffer.  This is the same as hitting @kbd{C-g} in Vi, but, as
+explained above, @kbd{C-g} is needed for other purposes in Emacs.
address@hidden C-c /
address@hidden @kbd{C-c /}
+Without a prefix argument, this command toggles
+case-sensitive/case-insensitive search modes and plain vanilla/regular
+expression search.  With the prefix argument 1, i.e.,
address@hidden C-c /}, this toggles case-sensitivity; with the prefix argument 
2,
+toggles plain vanilla search and search using
+regular expressions.  @xref{Viper Specials}, for alternative ways to invoke
+this function.
address@hidden vanilla search
address@hidden case-sensitive search
address@hidden case-insensitive search
+
address@hidden M-p and M-n
address@hidden @kbd{M-p}
address@hidden @kbd{M-n}
+In the Minibuffer, these commands navigate through the minibuffer
+histories, such as the history of search strings, Ex commands, etc.
+
address@hidden C-c M-p and C-c M-n
address@hidden @kbd{C-c M-p}
address@hidden @kbd{C-c M-n}
address@hidden Insertion history
address@hidden Insertion ring
address@hidden Command history
address@hidden Command ring
+
+In Insert or Replace state, these commands let  the user
+peruse the history of insertion strings used in previous insert or replace
+commands.  Try to hit @kbd{C-c M-p} or @kbd{C-c M-n} repeatedly and see what
+happens.  @xref{Viper Specials}, for more.
+
+In Vi state, these commands let the user peruse the history of Vi-style
+destructive commands, such as @kbd{dw}, @kbd{J}, @kbd{a}, etc.
+By repeatedly typing @kbd{C-c M-p} or @kbd{C-c M-n} you will cycle Viper
+through the recent history of Vi commands, displaying the commands one by
+one.  Once
+an appropriate command is found, it can be executed by typing address@hidden'.
+
+Since typing @kbd{C-c M-p} is tedious, it is more convenient to bind an
+appropriate function to a function key on the keyboard and use that key.
address@hidden Specials}, for details.
+
address@hidden Ex commands
address@hidden  @kbd{:args}
address@hidden  @kbd{:n}
address@hidden  @kbd{:pwd}
address@hidden  @kbd{:pre}
+The commands @kbd{:args}, @kbd{:next}, @kbd{:pre} behave
+differently.  @kbd{:pwd} exists to get current directory.
+The commands @kbd{:b} and @kbd{:B} switch buffers around.  @xref{File and
+Buffer Handling}, for details.
+There are also the new commands @kbd{:RelatedFile} and
address@hidden (which abbreviate to @kbd{R} and @kbd{P},
+respectively.  @xref{Viper Specials}, for details.
address@hidden @kbd{:RelatedFile}
address@hidden @kbd{:PreviousRelatedFile}
address@hidden table
+
+Apart from the new commands, many old commands have been enhanced.  Most
+notably, Vi style macros are much more powerful in Viper than in Vi.  @xref{Vi
+Macros}, for details.
+
address@hidden Useful Packages, ,New Commands, Improvements over Vi
address@hidden Useful Packages
+
+Some Emacs packages are mentioned here as an aid to the new Viper user, to
+indicate what Viper is capable of.
+A vast number comes with the standard Emacs distribution, and many more exist
+on the net and on the archives.
+
+This manual also mentions some Emacs features a new user
+should know about.  The details of these are found in the GNU Emacs
+Manual.
+
+The features first.  For details, look up the Emacs Manual.
+
address@hidden @samp
address@hidden Make
address@hidden make
address@hidden compiling
+
+Makes and Compiles can be done from the editor.  Error messages will be
+parsed and you can move to the error lines.
address@hidden Shell
address@hidden shell
address@hidden interactive shell
+You can talk to Shells from inside the editor.  Your entire shell session
+can be treated as a file.
address@hidden Mail
address@hidden email
address@hidden mail
+Mail can be read from and sent within the editor.  Several sophisticated
+packages exist.
address@hidden Language Sensitive Editing
+Editing modes are written for most computer languages in existence.  By
+controlling indentation, they catch punctuation errors.
address@hidden table
+
+The packages, below, represents a drop in the sea of special-purpose
+packages that come with standard distribution of Emacs.
+
address@hidden @samp
address@hidden Transparent FTP
address@hidden transparent ftp
address@hidden ange-ftp.el
address@hidden can ftp from the editor to files on other machines
+transparent to the user.
address@hidden RCS Interfaces
address@hidden version maintenance
address@hidden RCS
address@hidden vc.el
address@hidden for doing RCS commands from inside the editor
address@hidden Directory Editor
address@hidden dired
address@hidden dired.el
address@hidden for editing contents of directories and for navigating in
+the file system.
address@hidden Syntactic Highlighting
address@hidden font-lock
address@hidden font-lock.el
address@hidden for automatic highlighting various parts of a buffer
+using different fonts and colors.
address@hidden Saving Emacs Configuration
address@hidden desktop
address@hidden desktop.el
address@hidden for saving/restoring configuration on Emacs exit/startup.
address@hidden Spell Checker
address@hidden ispell
address@hidden ispell.el
address@hidden for spell checking the buffer, words, regions, etc.
address@hidden File and Buffer Comparison
address@hidden ediff
address@hidden ediff.el
address@hidden for finding differences between files and for applying
+patches.
address@hidden table
+
address@hidden
+Emacs Lisp archives exist on
address@hidden
+and @address@hidden
+
+
address@hidden Customization,Commands,Improvements over Vi,Top
address@hidden Customization
+
address@hidden customization
+
+Customization can be done in 2 ways.
+
address@hidden @bullet
address@hidden
address@hidden initialization
address@hidden .viper
+Elisp code in a @file{.viper} file in your home directory.  Viper
+loads @file{.viper} just before it does the binding for mode
+hooks.  This is recommended for experts only.
address@hidden
address@hidden .emacs
+Elisp code in your @file{.emacs} file before and after the @code{(require
+'viper)} line.  This method is @emph{not} recommended, unless you know what
+you are doing.  Only two variables, @code{viper-mode} and
address@hidden, are supposed to be customized in @file{.emacs},
+prior to loading Viper (i.e., prior to @code{(require 'viper)} address@hidden
address@hidden
address@hidden :customize
+By executing the @kbd{:customize} Ex command. This takes you to the Emacs
+customization widget, which lets you change the values of Viper
+customizable variables easily. This method is good for novice and
+experts alike. The customization code in the form of Lisp commands will be
+placed in @file{~/.emacs} or some other customization file depending on the
+version of Emacs that you use. Still, it is recommended to separate
+Viper-related customization produced by the Emacs customization widget
+and keep it in the @file{.viper} file.
+
+Some advanced customization cannot be accomplished this way, however, and
+has to be done in Emacs Lisp in the @file{.viper} file.  For the common
+cases, examples are provided that you can use directly.
address@hidden itemize
+
+
address@hidden
+* Rudimentary Changes::          Simple constant definitions.
+* Key Bindings::                 Enabling Emacs Keys, Rebinding keys, etc.
+* Packages that Change Keymaps:: How to deal with such beasts.
+* Viper Specials::               Special Viper commands.
+* Vi Macros::                    How to do Vi style macros.
address@hidden menu
+
address@hidden Rudimentary Changes,Key Bindings,Customization,Customization
address@hidden Rudimentary Changes
+
address@hidden setting variables
address@hidden variables for customization
address@hidden @kbd{:set}
+
+An easy way to customize Viper is to change the values of constants used in
+Viper.  Here is the list of the constants used in Viper and their default
+values.  The corresponding :se command is also indicated.  (The symbols
address@hidden and @code{nil} represent ``true'' and ``false'' in Lisp).
+
+Viper supports both the abbreviated Vi variable names and their full
+names.  Variable completion is done on full names only.  @key{TAB} and
address@hidden complete
+variable names.  Typing `=' will complete the name and then will prompt for
+a value, if applicable.  For instance, @kbd{:se au @key{SPC}} will complete the
+command to @kbd{:set autoindent}; @kbd{:se ta @key{SPC}} will complete the 
command
+and prompt further like this: @kbd{:set tabstop = }.
+However, typing @kbd{:se ts @key{SPC}} will produce a ``No match'' message
+because @kbd{ts} is an abbreviation for @kbd{tabstop} and Viper supports
+completion on full names only.  However, you can still hit @key{RET}
+or @kbd{=}, which will complete the command like this: @kbd{:set ts = } and
+Viper will be waiting for you to type a value for the tabstop variable.
+To get the full list of Vi variables, type @kbd{:se @key{SPC} @key{TAB}}.
+
address@hidden @code
address@hidden viper-auto-indent nil
address@hidden :se ai (:se autoindent)
address@hidden :se ai-g (:se autoindent-global)
+If @code{t}, enable auto indentation.
+by @key{RET}, @kbd{o} or @kbd{O} command.
+
address@hidden is a local variable.  To change the value globally, use
address@hidden  It may be useful for certain major modes to have their
+own values of @code{viper-auto-indent}.  This can be achieved by using
address@hidden to change the local value of this variable in the hooks to the
+appropriate major modes.
+
address@hidden:se ai} changes the value of @code{viper-auto-indent} in the 
current
+buffer only; @kbd{:se ai-g} does the same globally.
address@hidden viper-electric-mode t
+If not @code{nil}, auto-indentation becomes electric, which means that
address@hidden, @kbd{O}, and @kbd{o} indent cursor according to the current
+major mode.  In the future, this variable may control additional electric
+features.
+
+This is a local variable: @code{setq} changes the value of this variable
+in the current buffer only.  Use @code{setq-default} to change the value in
+all buffers.
address@hidden viper-case-fold-search nil
address@hidden :se ic (:se ignorecase)
+If not @code{nil}, search ignores cases.
+This can also be toggled by quickly hitting @kbd{/} twice.
address@hidden viper-re-search nil
address@hidden :se magic
+If not @code{nil}, search will use regular expressions; if @code{nil} then
+use vanilla search.
+This behavior can also be toggled by quickly hitting @kbd{/} trice.
address@hidden buffer-read-only
address@hidden :se ro (:se readonly)
+Set current buffer to read only.  To change globally put
address@hidden(setq-default buffer-read-only t)} in your @file{.emacs} file.
address@hidden blink-matching-paren t
address@hidden :se sm (:se showmatch)
+Show matching parens by blinking cursor.
address@hidden tab-width t (default setting via @code{setq-default})
address@hidden :se ts=value (:se tabstop=value)
address@hidden :se ts-g=value (:se tabstop-global=value)
address@hidden is a local variable that controls the width of the tab stops.
+To change the value globally, use @code{setq-default}; for local settings,
+use @code{setq}.
+
+The command @kbd{:se ts}
+sets the tab width in the current
+buffer only; it has no effect on other buffers.
+
+The command @kbd{:se ts-g} sets tab width globally,
+for all buffers where the tab is not yet set locally,
+including the new buffers.
+
+Note that typing @key{TAB} normally
+doesn't insert the tab, since this key is usually bound to
+a text-formatting function, @code{indent-for-tab-command} (which facilitates
+programming and document writing).  Instead, the tab is inserted via the
+command @code{viper-insert-tab}, which is bound to @kbd{S-tab} (shift + tab).
+
+On some non-windowing terminals, Shift doesn't modify the @key{TAB} key, so
address@hidden behaves as if it were @key{TAB}.  In such a case, you will have
+to bind @code{viper-insert-tab} to some other convenient key.
+
address@hidden viper-shift-width 8
address@hidden :se sw=value  (:se shiftwidth=value)
+The number of columns shifted by @kbd{>} and @kbd{<} commands.
address@hidden viper-search-wrap-around t
address@hidden :se ws (:se wrapscan)
+If not @code{nil}, search wraps around the end/beginning of buffer.
address@hidden viper-search-scroll-threshold 2
+If search lands within this many lines of the window top or bottom, the
+window will be scrolled up or down by about 1/7-th of its size, to reveal
+the context.  If the value is negative---don't scroll.
address@hidden viper-tags-file-name "TAGS"
+The name of the file used as the tag table.
address@hidden viper-re-query-replace nil
+If not @code{nil}, use reg-exp replace in query replace.
address@hidden viper-want-ctl-h-help nil
+If not @code{nil}, @kbd{C-h} is bound to @code{help-command};
+otherwise, @kbd{C-h} is bound as usual in Vi.
address@hidden viper-vi-style-in-minibuffer t
+If not @code{nil}, Viper provides a high degree of compatibility with Vi
+insert mode when you type text in the Minibuffer; if @code{nil}, typing in
+the Minibuffer feels like plain Emacs.
address@hidden viper-no-multiple-ESC t
+If you set this to @code{nil}, you can use @key{ESC} as Meta in Vi state.
+Normally, this is not necessary, since graphical displays have separate
+Meta keys (usually on each side of the space bar).  On a dumb terminal, Viper
+sets this variable to @code{twice}, which is almost like @code{nil}, except
+that double @key{ESC} beeps.  This, too, lets @key{ESC} to be used as a Meta.
address@hidden viper-ESC-keyseq-timeout 200 on tty, 0 on windowing display
+Escape key sequences separated by this much delay (in milliseconds) are
+interpreted as command, ignoring the special meaning of @key{ESC} in
+VI.  The default is suitable for most terminals.  However, if your terminal
+is extremely slow, you might want to increase this slightly.  You will know
+if your terminal is slow if the @key{ESC} key sequences emitted by the
+arrow keys are interpreted as separately typed characters (and thus the
+arrow keys won't work).  Making this value too large will slow you down, so
+exercise restraint.
address@hidden viper-fast-keyseq-timeout 200
+Key sequences separated by this many milliseconds are treated as Vi-style
+keyboard macros.  If the key sequence is defined as such a macro, it will be
+executed.  Otherwise, it is processed as an ordinary sequence of typed keys.
+
+Setting this variable too high may slow down your typing.  Setting it too
+low may make it hard to type macros quickly enough.
address@hidden viper-translate-all-ESC-keysequences t on tty, nil on windowing 
display
+Normally, Viper lets Emacs translate only those ESC key sequences that are
+defined in the low-level key-translation-map or function-key-map, such as those
+emitted by the arrow and function keys. Other sequences, e.g., @kbd{\\e/}, are
+treated as @kbd{ESC} command followed by a @kbd{/}. This is good for people
+who type fast and tend to hit other characters right after they hit
+ESC. Other people like Emacs to translate @kbd{ESC} sequences all the time. 
+The default is to translate all sequences only when using a dumb terminal.
+This permits you to use @kbd{ESC} as a meta key in insert mode. For instance,
+hitting @kbd{ESC x} fast would have the effect of typing @kbd{M-x}.
+If your dumb terminal is not so dumb and understands the meta key, then you
+probably will be better off setting this variable to nil. Try and see which
+way suits you best.
address@hidden viper-ex-style-motion t
+Set this to @code{nil}, if you want @kbd{l,h} to cross
+lines, etc.  @xref{Movement and Markers}, for more info.
address@hidden viper-ex-style-editing t
+Set this to @code{nil}, if you want
address@hidden and @key{DEL} to not stop
+at the beginning of a line in Insert state, @key{X} and @key{x} to delete
+characters across lines in Vi command state, etc.
address@hidden viper-ESC-moves-cursor-back t
+It t, cursor moves back 1 character when switching from insert state to vi
+state.  If nil, the cursor stays where it was before the switch.
address@hidden viper-always t
address@hidden means: leave it to Viper to decide when a buffer must be brought
+up in Vi state,
+Insert state, or Emacs state.  This heuristics works well in virtually all
+cases.  @code{nil} means you either has to invoke @code{viper-mode} manually
+for each buffer (or you can add @code{viper-mode} to the appropriate major mode
+hooks using @code{viper-load-hook}).
+
+This option must be set in the file @file{~/.viper}.
address@hidden viper-custom-file-name "~/.viper"
+File used for Viper-specific customization.
+Change this setting, if you want.  Must be set in @file{.emacs} (not 
@file{.viper}!)
+before Viper is loaded.  Note that you
+have to set it as a string inside double quotes.
address@hidden viper-spell-function 'ispell-region
+Function used by the command @kbd{#c<move>} to spell.
address@hidden viper-glob-function
+The value of this variable is the function symbol used to expand wildcard
+symbols. This is platform-dependent. The default tries to set this variable
+to work with most shells, MS Windows, OS/2, etc. However, if it
+doesn't work the way you expect, you should write your own.
+Use @code{viper-glob-unix-files} and @code{viper-glob-mswindows-files} in
address@hidden as examples.
+
+This feature is used to expand wildcards in the Ex command @kbd{:e}.
+Note that Viper doesn't support wildcards in the @kbd{:r} and @kbd{:w}
+commands, because file completion is a better mechanism.
address@hidden @code{viper-glob-function}
+
address@hidden ex-cycle-other-window t
+If not @code{nil}, @kbd{:n} and @kbd{:b} will cycle through files in another
+window, if one exists.
address@hidden ex-cycle-through-non-files nil
address@hidden:n} does not normally cycle through buffers.  Set this to get
+buffers also.
address@hidden viper-want-emacs-keys-in-insert
+This is set to @code{nil} for user levels 1 and 2 and to @code{t} for user
+levels 3 and 4.  Users who specify level 5 are allowed to set this variable
+as they please (the default for this level is @code{t}).  If set to
address@hidden, complete Vi compatibility is provided in Insert state.  This is
+really not recommended, as this precludes you from using language-specific
+features provided by the major modes.
address@hidden viper-want-emacs-keys-in-vi
+This is set to @code{nil} for user
+level 1 and to @code{t} for user levels 2--4.
+At level 5, users are allowed to set this variable as they please (the
+default for this level is @code{t}).
+If set to @code{nil}, complete Vi compatibility is provided
+in Vi command state.  Setting this to @code{nil} is really a bad idea,
+unless you are a novice, as this precludes the use
+of language-specific features provided by the major modes.
address@hidden viper-keep-point-on-repeat t
+If not @code{nil}, point is not moved when the user repeats the previous
+command by typing `.'  This is very useful for doing repeated changes with
+the @kbd{.} key.
address@hidden viper-repeat-from-history-key 'f12
+Prefix key used to invoke the macros @kbd{f12 1} and @kbd{f12 2} that repeat
+the second-last and the third-last destructive command.
+Both these macros are bound (as Viper macros) to
address@hidden,
+which checks the second key by which it is invoked to see which of the
+previous commands to invoke.  Viper binds @kbd{f12 1} and @kbd{f12 2} only,
+but the user can bind more in @file{~/.viper}.  @xref{Vi Macros}, for how to do
+this.
address@hidden viper-keep-point-on-undo nil
+If not @code{nil}, Viper tries to not move point when undoing commands.
+Instead, it will briefly move the cursor to the place where change has
+taken place.  However, if the undone piece of text is not seen in window,
+then point will be moved to the place where the change took place.
+Set it to @code{t} and see if you like it better.
address@hidden viper-delete-backwards-in-replace nil
+If not @code{nil}, @key{DEL} key will delete characters while moving the cursor
+backwards.  If @code{nil}, the cursor will move backwards without deleting
+anything.
address@hidden viper-replace-overlay-face 'viper-replace-overlay-face
+On a graphical display, Viper highlights replacement regions instead of
+putting a @samp{$} at the end.  This variable controls the so called
address@hidden used to highlight the region.
+
+By default, @code{viper-replace-overlay-face} underlines the replacement on
+monochrome displays and also lays a stipple over them.  On color displays,
+replacement regions are highlighted with color.
+
+If you know something about Emacs faces and don't like how Viper highlights
+replacement regions, you can change @code{viper-replace-overlay-face} by
+specifying a new face.  (Emacs faces are described in the Emacs Lisp
+reference.)  On a color display, the following customization method is
+usually most effective:
address@hidden
+(set-face-foreground viper-replace-overlay-face "DarkSlateBlue")
+(set-face-background viper-replace-overlay-face "yellow")
address@hidden example
+For a complete list of colors available to you, evaluate the expression
address@hidden(x-defined-colors)}.  (Type it in the buffer @code{*scratch*} and 
then
+hit the @kbd{C-j} key.
+
address@hidden viper-replace-overlay-cursor-color  "Red"
address@hidden @code{viper-replace-overlay-cursor-color}
+Cursor color when it is inside the replacement region.
+This has effect only on color displays and only when Emacs runs as an X
+application.
address@hidden viper-insert-state-cursor-color nil
address@hidden @code{viper-insert-state-cursor-color}
+If set to a valid color, this will be the cursor color when Viper is in
+insert state.
address@hidden viper-replace-region-end-delimiter "$"
+A string used to mark the end of replacement regions.  It is used only on
+TTYs or if @code{viper-use-replace-region-delimiters} is non-nil.
address@hidden viper-replace-region-start-delimiter  ""
+A string used to mark the beginning of replacement regions.  It is used
+only on TTYs or if @code{viper-use-replace-region-delimiters} is non-nil.
address@hidden viper-use-replace-region-delimiters
+If non-nil, Viper will always use @code{viper-replace-region-end-delimiter} and
address@hidden to delimit replacement regions,
+even on color displays (where this is unnecessary).  By default, this
+variable is non-nil only on TTYs or monochrome displays.
address@hidden viper-allow-multiline-replace-regions t
+If non-nil, multi-line text replacement regions, such as those produced by
+commands @kbd{c55w}, @kbd{3C}, etc., will stay around until the user exits
+the replacement mode.  In this variable is set to @code{nil}, Viper will
+emulate the standard Vi behavior, which supports only intra-line
+replacement regions (and multi-line replacement regions are deleted).
address@hidden viper-toggle-key "\C-z"
+Specifies the key used to switch from Emacs to Vi and back.
+Must be set in @file{.viper}.  This variable can't be
+changed interactively after Viper is loaded.
+
+In Insert state, this key acts as a temporary escape to Vi state, i.e., it
+will set Viper up so that the very next command will be executed as if it
+were typed in Vi state.
address@hidden viper-ESC-key "\e"
+Specifies the key used to escape from Insert/Replace states to Vi.
+Must be set in @file{.viper}.  This variable cannot be
+changed interactively after Viper is loaded.
address@hidden viper-buffer-search-char nil
+Key used for buffer search.  @xref{Viper Specials}, for details.
address@hidden viper-surrounding-word-function 'viper-surrounding-word
+The value of this variable is a function name that is used to determine
+what constitutes a word clicked upon by the mouse.  This is used by mouse
+search and insert.
address@hidden viper-search-face 'viper-search-face
+Variable that controls how search patterns are highlighted when they are
+found.
address@hidden viper-vi-state-hook nil
+List of parameterless functions to be run just after entering the Vi
+command state.
address@hidden viper-insert-state-hook nil
+Same for Insert state.  This hook is also run after entering Replace state.
address@hidden viper-replace-state-hook  nil
+List of (parameterless) functions called just after entering Replace state
+(and after all @code{viper-insert-state-hook}).
address@hidden viper-emacs-state-hook nil
+List of (parameterless) functions called just after switching from Vi state
+to Emacs state.
address@hidden viper-load-hook nil
+List of (parameterless) functions called just after loading Viper.  This is
+the last chance to do customization before Viper is up and running.
address@hidden table
address@hidden
+You can reset some of these constants in Viper with the Ex command @kbd{:set}
+(when so indicated in the table).  Or you
+can include a line like this in your @file{.viper} file:
address@hidden
+(setq viper-case-fold-search t)
address@hidden example
address@hidden @code{viper-auto-indent}
address@hidden @code{viper-electric-mode}
address@hidden @code{viper-case-fold-search}
address@hidden @code{viper-re-search}
address@hidden @code{viper-shift-width}
address@hidden @code{buffer-read-only}
address@hidden @code{viper-search-wrap-around}
address@hidden @code{viper-search-scroll-threshold}
address@hidden @code{viper-search-face}
address@hidden @code{viper-tags-file-name}
address@hidden @code{viper-re-query-replace}
address@hidden @code{viper-want-ctl-h-help}
address@hidden @code{viper-vi-style-in-minibuffer}
address@hidden @code{viper-no-multiple-ESC}
address@hidden @code{viper-always}
address@hidden @code{viper-ESC-keyseq-timeout}
address@hidden @code{viper-fast-keyseq-timeout}
address@hidden @code{viper-ex-style-motion}
address@hidden @code{viper-ex-style-editing}
address@hidden @code{viper-ESC-moves-cursor-back}
address@hidden @code{viper-custom-file-name}
address@hidden @code{viper-spell-function}
address@hidden @code{ex-cycle-other-window}
address@hidden @code{ex-cycle-through-non-files}
address@hidden @code{viper-want-emacs-keys-in-insert}
address@hidden @code{viper-want-emacs-keys-in-vi}
address@hidden @code{viper-keep-point-on-repeat}
address@hidden @code{viper-keep-point-on-undo}
address@hidden @code{viper-delete-backwards-in-replace}
address@hidden @code{viper-replace-overlay-face}
address@hidden @code{viper-replace-region-end-symbol}
address@hidden @code{viper-replace-region-start-symbol}
address@hidden @code{viper-allow-multiline-replace-regions}
address@hidden @code{viper-toggle-key}
address@hidden @code{viper-ESC-key}
address@hidden @code{viper-buffer-search-char}
address@hidden @code{viper-surrounding-word-function}
address@hidden @code{viper-vi-state-hook}
address@hidden @code{viper-insert-state-hook}
address@hidden @code{viper-replace-state-hook}
address@hidden @code{viper-emacs-state-hook}
+
address@hidden Key Bindings, Packages that Change Keymaps, Rudimentary 
Changes,Customization
address@hidden Key Bindings
+
address@hidden key bindings
address@hidden keymaps
+
+Viper lets you define hot keys, i.e., you can associate keyboard keys
+such as F1, Help, PgDn, etc., with Emacs Lisp functions (that may already
+exist or that you will write).  Each key has a "preferred form" in
+Emacs.  For instance, the Up key's preferred form is [up], the Help key's
+preferred form is [help], and the Undo key has the preferred form [f14].
+You can find out the preferred form of a key by typing @kbd{M-x
+describe-key-briefly} and then typing the key you want to know about.
+
+Under the X Window System, every keyboard key emits its preferred form,
+so you can just type
+
address@hidden
+(global-set-key [f11] 'calendar)                        ; L1, Stop
+(global-set-key [f14] 'undo)                            ; L4, Undo
address@hidden lisp
+
address@hidden
+to bind L1 (a key that exists on some SUN workstations) so it will invoke
+the Emacs Calendar and to bind L4 so it will undo changes.
+However, on a dumb terminal or in an Xterm window, even the standard arrow
+keys may
+not emit the right signals for Emacs to understand.  To let Emacs know about
+those keys, you will have to find out which key sequences they emit
+by typing @kbd{C-q} and then the key (you should switch to Emacs state
+first).  Then you can bind those sequences to their preferred forms using
address@hidden as follows:
+
address@hidden
+(cond ((string= (getenv "TERM") "xterm")
+(define-key function-key-map "\e[192z" [f11])    ; L1
+(define-key function-key-map "\e[195z" [f14])    ; L4, Undo
address@hidden lisp
+
+The above illustrates how to do this for Xterm.  On VT100, you would have to
+replace "xterm" with "vt100" and also change the key sequences (the same
+key may emit different sequences on different types of terminals).
+
+The above keys are global, so they are overwritten by the local maps
+defined by the major modes and by Viper itself.  Therefore, if you wish to
+change a binding set by a major mode or by Viper, read this.
+
+Viper users who wish to specify their own key bindings should be concerned
+only with the following three keymaps:
address@hidden for Vi state commands,
address@hidden for Insert state commands,
+and @code{viper-emacs-global-user-map} for Emacs state commands (note:
+customized bindings for Emacs state made to @code{viper-emacs-global-user-map}
+are @emph{not} inherited by Insert state).
+
+For more information on Viper keymaps, see the header of the file
address@hidden
+If you wish to change a Viper binding, you can use the
address@hidden command, to modify @code{viper-vi-global-user-map},
address@hidden, and @code{viper-emacs-global-user-map}, as
+explained below.  Each of these key maps affects the corresponding Viper state.
+The keymap @code{viper-insert-global-user-map} also affects Viper's Replace
+state. 
+
address@hidden
+If you want to
+bind a key, say @kbd{C-v}, to the function that scrolls
+page down and to make @kbd{0} display information on the current buffer,
+putting this in @file{.viper} will do the trick in Vi state:
address@hidden
+(define-key viper-vi-global-user-map "\C-v" 'scroll-down)
address@hidden example
address@hidden
+To set a key globally,
address@hidden
+(define-key viper-emacs-global-user-map "\C-c m" 'smail)
+(define-key viper-vi-global-user-map "0" 'viper-info-on-file)
address@hidden example
address@hidden
+Note, however, that this binding may be overwritten by other keymaps, since
+the global keymap has the lowest priority.
+To make sure that nothing will override a binding in Emacs state, you
+can write this:
address@hidden
+(define-key viper-emacs-global-user-map "\C-c m" 'smail)
address@hidden example
address@hidden
+To customize the binding for @kbd{C-h} in Insert state:
address@hidden
+(define-key viper-insert-global-user-map "\C-h" 'my-del-backwards-function)
address@hidden example
address@hidden
+
+Each Emacs command key calls some lisp function.  If you have enabled the
+Help, (@pxref{Rudimentary Changes}) @kbd{C-h k} will show you the function
+for each specific key; @kbd{C-h b} will show all bindings, and @kbd{C-h m}
+will provide information on the major mode in effect.  If Help is not
+enabled, you can still get help in Vi state by prefixing the above commands
+with @kbd{\}, e.g., @kbd{\ C-h k} (or you can use the Help menu in the
+menu bar, if Emacs runs under X).
+
+Viper users can also change bindings on a per major mode basis.  As with
+global bindings, this can be done separately for each of the three main Viper
+states.  To this end, Viper provides the function
address@hidden
address@hidden @code{viper-modify-major-mode}
+
+To modify keys in Emacs state for @code{my-favorite-major-mode}, the user
+needs to create a sparse keymap, say, @code{my-fancy-map}, bind whatever
+keys necessary in that keymap, and put
+
address@hidden
+(viper-modify-major-mode 'dired-mode 'emacs-state my-fancy-map)
address@hidden example
+
address@hidden
+in @file{~/.viper}.  To do the same in Vi and Insert states, you should use
address@hidden and @code{insert-state}.  Changes in Insert state are also
+in effect in Replace state.  For instance, suppose that the user wants to
+use @kbd{dd} in Vi state under Dired mode to delete files, @kbd{u} to unmark
+files, etc.  The following code in @file{~/.viper} will then do the job:
+
address@hidden
+(setq my-dired-modifier-map (make-sparse-keymap))
+(define-key my-dired-modifier-map "dd" 'dired-flag-file-deletion)
+(define-key my-dired-modifier-map "u" 'dired-unmark)
+(viper-modify-major-mode 'dired-mode 'vi-state my-dired-modifier-map)
address@hidden example
+
+A Vi purist may want to modify Emacs state under Dired mode so that
address@hidden, @kbd{l}, etc., will move around in directory buffers, as in
+Vi.  Although this is not recommended, as these keys are bound to useful
+Dired functions, the trick can be accomplished via the following code:
+
address@hidden
+(setq my-dired-vi-purist-map (make-sparse-keymap))
+(define-key my-dired-vi-purist-map "k" 'viper-previous-line)
+(define-key my-dired-vi-purist-map "l" 'viper-forward-char)
+(viper-modify-major-mode 'dired-mode 'emacs-state my-dired-vi-purist-map)
address@hidden example
+
+Yet another way to customize key bindings in a major mode is to edit the
+list @code{viper-major-mode-modifier-list} using the customization widget.
address@hidden @code{viper-major-mode-modifier-list}
+(This variable is in the Viper-misc customization group.)
+The elements of this list are triples of the form: (major-mode viper-state
+keymap), where the keymap contains bindings that are supposed to be active
+in the given major mode and the given viper-state.
+
+Effects similar to key binding changes can be achieved by defining Vi
+keyboard macros using the Ex commands @kbd{:map} and @kbd{:map!}.  The
+difference is that multi-key Vi macros do not override the keys they are
+bound to, unless these keys are typed in quick succession.  So, with macros,
+one can use the normal keys alongside with the macros.  If per-mode
+modifications are needed, the user can try both ways and see which one is
+more convenient.
address@hidden @kbd{:map}
address@hidden Macros}, for details.
+
+Note: in major modes that come up in @emph{Emacs state} by default, the
+aforesaid modifications may not take place immediately (but only after the
+buffer switches to some other Viper state and then back to Emacs state).  To
+avoid this, one should add @code{viper-change-state-to-emacs} to an
+appropriate hook of that major mode.  (Check the function
address@hidden in @file{viper.el} for examples.)  However, if you
+did not set @code{viper-always} to @code{nil}, chances are that you won't
+need to perform the above procedure, because Viper will take care of most
+useful defaults.
+
+
+Finally, Viper has a facility that lets the user define per-buffer
+bindings, i.e., bindings that are in effect in some specific buffers
+only.  Unlike per-mode bindings described above, per-buffer bindings can be
+defined based on considerations other than the major mode.  This is done
+via the function @code{viper-add-local-keys}, which lets one specify bindings
+that should be in effect in the current buffer only and for a specific Viper
+state.  For instance,
address@hidden
+(viper-add-local-keys 'vi-state '(("ZZ" .@: TeX-command-master)
+                                 ("ZQ" .@: viper-save-kill-buffer)))
address@hidden lisp
address@hidden
+redefines @kbd{ZZ} to invoke @code{TeX-command-master} in @code{vi-state}
+and @kbd{ZQ} to save-then-kill the current buffer.  These bindings take
+effect only in the buffer where this command is executed.  The typical use
+of this function is to execute the above expression from within a function
+that is included in a hook to some major mode.  For instance, the above
+expression
+could be called from a function, @code{my-tex-init}, which may be added to
address@hidden as follows:
address@hidden
+(add-hook 'tex-mode-hook 'my-tex-init)
address@hidden lisp
address@hidden
+When TeX mode starts, the hook is executed and the above Lisp expression is
+evaluated.  Then, the bindings for @kbd{ZZ} and @kbd{ZQ} are changed in Vi
+command mode for all buffers in TeX mode.
+
+Another useful application is to bind @kbd{ZZ} to @code{send-mail}
+in the Mail mode buffers (the specifics of this depend on which mail
+package you are using, @code{rmail}, @code{mh-e}, @code{vm}, etc.
+For instance, here is how to do this for @code{mh-e}, the Emacs interface
+to MH:
address@hidden
+(defun mh-add-vi-keys ()
+  "Set up ZZ for MH-e and XMH."
+  (viper-add-local-keys 'vi-state '(("ZZ" .@: mh-send-letter))))
+(add-hook 'mh-letter-mode-hook 'mh-add-vi-keys)
address@hidden lisp
+
+You can also use @code{viper-add-local-keys} to set per buffer
+bindings in Insert state and Emacs state by passing as a parameter the
+symbols @code{insert-state} and @code{emacs-state}, respectively.
+As with global bindings, customized local bindings done to Emacs state
+are not inherited by Insert state.
+
+On rare occasions, local keys may be added by mistake.  Usually this is done
+indirectly, by invoking a major mode that adds local keys (e.g.,
address@hidden redefines @key{RET}).  In such a case, exiting the wrong
+major mode won't rid you from unwanted local keys, since these keys are
+local to Viper state and the current buffer, not to the major mode.
+In such situations, the remedy is to type @kbd{M-x viper-zap-local-keys}.
+
+So much about Viper-specific bindings.
address@hidden,,Customization,emacs,The GNU Emacs
+Manual}, and the Emacs quick reference card for the general info on key
+bindings in Emacs.
+
address@hidden @code{function-key-map}
address@hidden @code{viper-vi-global-user-map}
address@hidden @code{viper-insert-global-user-map}
address@hidden @code{viper-emacs-global-user-map}
address@hidden @code{viper-add-local-keys}
address@hidden @code{viper-zap-local-keys}
+
address@hidden Packages that Change Keymaps,Viper Specials,Key 
Bindings,Customization
address@hidden Packages that Change Keymaps
address@hidden C-c and Viper
address@hidden Viper and C-c
+
+Viper is designed to coexist with all major and minor modes of Emacs.  This
+means that bindings set by those modes are generally available with Viper
+(unless you explicitly prohibit them by setting
address@hidden and @code{viper-want-emacs-keys-in-insert} to
address@hidden).
+If @code{viper-always} is set to @code{t} (which is the default), Viper
+will try to bring each buffer 
+in the Viper state that is most appropriate for that buffer.
+Usually, this would be the Vi state, but sometimes it could be the Insert
+state or the Emacs state.
+
+Some major mode bindings will necessarily be overwritten by Viper.  Indeed, in
+Vi state, most of the 1-character keys are used for Vi-style editing.  This
+usually causes no problems because most packages designed for editing files
+typically do not bind such keys.  Instead, they use key sequences that start
+with @kbd{C-x} and @kbd{C-c}.  This is why it was so important for us to
+free up @kbd{C-x} and @kbd{C-c}.
+It is common for language-specific major modes to bind @key{TAB} and
address@hidden (the line feed) keys to various formatting functions.  This is
+extremely useful, but may require some getting used to for a Vi user.  If you
+decide that this feature is not for you, you can re-bind these keys as
+explained earlier (@pxref{Customization}).
+
+Binding for @key{TAB} is one of the most unusual aspects of Viper for many
+novice users.  In Emacs, @key{TAB} is used to format text and programs, and
+is extremely useful.  For instance, hitting @key{TAB} causes the current
+line to be re-indented in accordance with the context.  In programming,
+this is very important, since improper automatic indentation would
+immediately alert the programmer to a possible error.  For instance, if a
address@hidden)} or a @kbd{"} is missing somewhere above the current
+line, @key{TAB} is likely to mis-indent the line.
+
+For this reason, Viper doesn't change the standard Emacs binding of
address@hidden, thereby sacrificing Vi compatibility
+(except for users at level 1).  Instead, in Viper, the key
address@hidden (shift+ tab) is chosen to emulate Vi's @key{TAB}.
+
+We should note that on some non-windowing terminals, Shift doesn't modify
+the @key{TAB} key, so @kbd{S-tab} behaves as if it were @key{TAB}.  In such
+a case, you will have to bind @code{viper-insert-tab} to some other
+convenient key.
+
+Some packages, notably Dired, Gnus, Info, etc., attach special meaning to
+common keys like @key{SPC}, @kbd{x}, @kbd{d}, @kbd{v}, and others.  This
+means that Vi command state is inappropriate for working with these
+packages.  Fortunately, these modes operate on read-only buffers and are
+designed not for editing files, but for special-purpose browsing, reading
+news, mail, etc., and Vi commands are meaningless in these situations.  For
+this reason, Viper doesn't force Vi state on such major modes---it
+brings them in Emacs state.  You can switch to Vi state by typing @kbd{C-z}
+if, for instance, you want to do Vi-style search in a buffer (although,
+usually, incremental search, which is bound to @kbd{C-s}, is sufficient in
+these situations).  But you should then switch back to Emacs state if you
+plan to continue using these major modes productively.  You can also switch
+to Vi temporarily, to execute just one command.  This is done by typing
address@hidden \}.  (In some of these modes, @kbd{/} and @kbd{:} are bound
+Vi-style, unless these keys perform essential duties.)
+
+If you would like certain major modes to come up in Emacs state rather than
+Vi state (but Viper thinks otherwise), you should put these major modes
+on the @code{viper-emacs-state-mode-list} list and delete them from
address@hidden
+Likewise, you can force Viper's Insert state on a major mode by putting it
+in @code{viper-insert-state-mode-list}.
address@hidden @code{viper-emacs-state-mode-list}
address@hidden @code{viper-insert-state-mode-list}
address@hidden @code{viper-vi-state-mode-list}
+
+It is also possible to impose Vi on some major modes, even though they may
+bind common keys to specialized commands.  This might make sense for modes
+that bind only a small number of common keys.  For instance, Viper subverts
+the Shell mode by changing the bindings for @kbd{C-m} and @kbd{C-d} using
address@hidden described in section on customization
+(@pxref{Customization}).
+
+In some cases, some @emph{minor} modes might override certain essential
+bindings in Vi command state.  This is not a big priblem because this
+can happen only in the beginning, when the minor mode kicks in.  Typing
address@hidden viper-mode} will correct the situation.  Viper knows about
+several such minor modes and takes care of them, so the above trick
+is usually not necessary.  If you find that some minor mode, e.g.,
address@hidden interferes with Viper, putting the following in
address@hidden should fix the problem:
address@hidden
+(viper-harness-minor-mode "nasty-mode")
address@hidden lisp
address@hidden
+The argument to @code{viper-harness-minor-mode} is the name of the file for the
+offending minor mode with the suffixes @file{.el} and @file{.elc} removed.
+
+It may not be always obvious which minor mode is at fault.  The only
+guidance here is to look into the file that defines the minor mode you are
+suspecting, say @code{nasty-mode.el}, and see if it has a variable called
address@hidden  Then check if there is a statement of the form
address@hidden
+(define-key nasty-mode-map key function)
address@hidden lisp
address@hidden
+that binds the misbehaving
+keys.  If so, use the above line to harness @code{nasty-mode}.  If your
+suspicion is wrong, no harm is done if you harness a minor mode that
+doesn't need to be harnessed.
+
address@hidden @code{viper-want-emacs-keys-in-vi}
address@hidden @code{viper-want-emacs-keys-in-insert}
address@hidden @code{viper-always}
address@hidden @code{viper-set-hooks}
address@hidden @code{viper-mode}
address@hidden @code{viper-harness-minor-mode}
address@hidden @code{remove-hook}
address@hidden @code{add-hook}
+
address@hidden Viper Specials,Vi Macros,Packages that Change 
Keymaps,Customization
address@hidden Viper Specials
+
+Viper extends Vi with a number of useful features.  This includes various
+search functions, histories of search strings, Ex commands, insertions, and
+Vi's destructive commands.  In addition, Viper supports file name completion
+and history, completion of Ex commands and variables, and many other
+features.  Some of these features are explained in detail elsewhere in this
+document.  Other features are explained here.
+
address@hidden @code
address@hidden (viper-buffer-search-enable)
address@hidden viper-buffer-search-char nil
+Enable buffer search.  Explicit call to @code{viper-buffer-search-enable}
+sets @code{viper-buffer-search-char} to @kbd{g}.  Alternatively, the user can
+set @code{viper-buffer-search-char} in @file{.viper} to a key sequence
+to be used for buffer search.  There is no need to call
address@hidden in that case.
address@hidden @code{viper-buffer-search-enable}
address@hidden @code{viper-buffer-search-char}
address@hidden viper-toggle-search-style
+This function, bound to @kbd{C-c /}, lets one toggle case-sensitive and
+case-insensitive search, and also switch between plain vanilla search and
+search via regular expressions.  Without the prefix argument, the user is
+asked which mode to toggle.  With prefix argument 1, this toggles
+case-sensitivity.  With prefix argument 2, regular expression/vanilla search
+will be toggled.
+
+However, we found that the most convenient way to toggle
+these options is to bind a Vi macro to
+bind @kbd{//} to toggles case sensitivity and to @kbd{///} to toggles
+vanilla search.  Thus, quickly hitting @kbd{/} twice will switch Viper from
+case sensitive search to case-insensitive.  Repeating this once again will
+restore the original state.  Likewise, quickly hitting @kbd{/} three times
+will switch you from vanilla-style search to search via regular expressions.
+If you hit something other than @kbd{/} after the first @kbd{/} or if the
+second @kbd{/} doesn't follow quickly enough, then Viper will issue the
+usual prompt @kbd{/} and will wait for input, as usual in Vi.
+If you don't like this behavior, you can ``unrecord'' these macros in your
address@hidden/.viper} file.  For instance, if you don't like the above 
feature, put
+this in @file{~/.viper}:
address@hidden
+(viper-set-searchstyle-toggling-macros 'undefine)
address@hidden example
address@hidden @code{viper-set-searchstyle-toggling-macros}
+
address@hidden Vi-isms in Emacs state
+Some people find it useful to use the Vi-style search key, `/', to invoke
+search in modes which Viper leaves in emacs-state.  These modes are:
address@hidden, @code{mh-folder-mode}, @code{gnus-group-mode},
address@hidden, @code{Info-mode}, and @code{Buffer-menu-mode}
+(more may be added in the future).  So, in the above modes, Viper binds `/'
+so that it will behave Vi-style.  Furthermore, in those major modes, Viper
+binds `:' to invoke ex-style commands, like in vi-state.  And, as described
+above, `//' and `///' get bound to Vi-style macros that toggle
+case-insensitivity and regexp-search.
+
+If you don't like these features---which I don't really understand---you
+can unbind `/' and `:' in @code{viper-dired-modifier-map} (for Dired) or in
address@hidden, for other modes.
address@hidden @code{viper-slash-and-colon-map}
address@hidden @code{viper-dired-modifier-map}
+
+To unbind the macros `//' and `///' for a major mode where you feel they
+are undesirable, execute @code{viper-set-emacs-state-searchstyle-macros} with a
+non-nil argument.  This can be done either interactively, by supplying a
+prefix argument, or by placing
address@hidden
+(viper-set-emacs-state-searchstyle-macros 'undefine)
address@hidden example
address@hidden @code{viper-set-emacs-state-searchstyle-macros}
+in the hook to the major mode (e.g., @code{dired-mode-hook}).
address@hidden Macros}, for more information on Vi macros.
+
address@hidden viper-heading-start
address@hidden viper-heading-end
address@hidden headings
address@hidden sections
address@hidden paragraphs
address@hidden sentences
+Regular Expressions for @kbd{[[} and @kbd{]]}.  Note that Emacs defines
+Regexps for paragraphs and sentences.  @xref{Paragraphs,,Paragraphs and
+Sentences,emacs,The GNU Emacs Manual}, for details.
address@hidden M-x viper-set-expert-level
address@hidden @code{viper-set-expert-level}
+Change your user level interactively.
address@hidden viper-smart-suffix-list  '("" "tex" "c" "cc" "el" "p")
address@hidden @code{viper-smart-suffix-list}
+Viper supports Emacs-style file completion when it prompts the user for a
+file name.  However, in many cases, the same directory may contain files
+with identical prefix but different suffixes, e.g., prog.c, prog.o,
+paper.tex, paper.dvi.  In such cases, completion will stop at the `.'.
+If the above variable is a list of strings representing suffixes, Viper will
+try these suffixes
+in the order listed and will check if the corresponding file exists.
+
+For instance, if completion stopped at `paper.'@: and the user typed
address@hidden,
+then Viper will check if the files `paper.', `paper.tex', `paper.c', etc., 
exist.
+It will take the first such file.  If no file exists, Viper will give a chance
+to complete the file name by typing the appropriate suffix.  If `paper.'@: was
+the intended file name, hitting return will accept it.
+
+To turn this feature off, set the above variable to @code{nil}.
+
address@hidden viper-insertion-ring-size  14
address@hidden @code{viper-insertion-ring-size}
address@hidden Insertion ring
+Viper remembers what was previously inserted in Insert and Replace states.
+Several such recent insertions are kept in a special ring of strings of size
address@hidden
+If you enter Insert or Replace state you can reinsert strings from this
+ring by typing @kbd{C-c M-p} or @kbd{C-c M-n}.  The former will search the
+ring in
+the direction of older insertions, and the latter will search in
+the direction of newer insertions.  Hitting @kbd{C-c M-p} or @kbd{C-c M-n}
+in succession
+will undo the previous insertion from the ring and insert the next item on
+the ring.  If a larger ring size is needed, change the value of the above
+variable in the @file{~/.viper} file.
+
+Since typing these sequences of keys may be tedious, it is suggested that the
+user should bind a function key, such as @kbd{f31}, as follows:
address@hidden
+(define-key viper-insert-global-user-map [f31]
+            'viper-insert-prev-from-insertion-ring)
address@hidden example
+This binds @kbd{f31} (which is usually @kbd{R11} on a Sun workstation)
+to the function that inserts the previous string in the insertion history.
+To rotate the history in the opposite
+direction, you can either bind an unused key to
address@hidden or hit any digit (1 to 9) then
address@hidden
+
+One should not bind the above functions to @kbd{M-p} or @kbd{M-n}, since
+this will interfere with the Minibuffer histories and, possibly, other
+major modes.
+
address@hidden viper-command-ring-size  14
address@hidden @code{viper-command-ring-size}
address@hidden Destructive command ring
address@hidden Destructive command history
+Viper keeps track of the recent history of destructive
+commands, such as @kbd{dw}, @kbd{i}, etc.
+In Vi state,
+the most recent command can be re-executed by hitting address@hidden', as in 
Vi.
+However, repeated typing @kbd{C-c M-p} will cause Viper to show the
+previous destructive commands in the minibuffer.  Subsequent hitting 
address@hidden'
+will execute the command that was displayed last.
+The key @kbd{C-c M-n} will cycle through the command history in the
+opposite direction.
+Since typing @kbd{C-c M-p} may be tedious, it is more convenient to bind an
+appropriate function to an unused function key on the keyboard and use that
+key.  For instance, the following
address@hidden
+(define-key viper-vi-global-user-map [f31]
+            'viper-prev-destructive-command)
address@hidden example
+binds the key @kbd{f31} (which is usually @kbd{R11} on a Sun workstation)
+to the function that searches the command history in the direction of older
+commands.  To search in the opposite
+direction, you can either bind an unused key to
address@hidden or hit any digit (1 to 9) then @kbd{f31}.
+
+One should not bind the above functions to @kbd{M-p} or @kbd{M-n}, since
+this will interfere with the Minibuffer histories and, possibly, other
+major modes.
+
address@hidden viper-minibuffer-vi-face  'viper-minibuffer-vi-face
address@hidden viper-minibuffer-insert-face  'viper-minibuffer-insert-face
address@hidden viper-minibuffer-emacs-face  'viper-minibuffer-emacs-face
+These faces control the appearance of the minibuffer text in the
+corresponding Viper states.  You can change the appearance of these faces
+through Emacs' customization widget, which is accessible through the
+menubar.
+
+Viper is located in this widget under the @emph{Emulations} customization
+subgroup of the @emph{Editing} group.  All Viper faces are grouped together
+in Viper's @emph{Highlighting} customization subgroup.
+
+Note that only the text you type in is affected by the above faces.
+Prompts and Minibuffer messages are not affected.
+
+Purists who do not like adornments in the minibuffer can always zap them by
+putting
address@hidden
+(copy-face 'default 'viper-minibuffer-vi-face)
+(copy-face 'default 'viper-minibuffer-insert-face)
+(copy-face 'default 'viper-minibuffer-emacs-face)
address@hidden example
+in the @file{~/.viper} file or through the customization widget, as
+described above.  However, in that case, the user will not have any
+indication of the current Viper state in the minibuffer.  (This is important
+if the user accidentally switches to another Viper state by typing @key{ESC} or
address@hidden).
address@hidden M-x viper-go-away
address@hidden @code{viper-go-away}
+Make Viper disappear from the face of your running Emacs instance.  If your
+fingers start aching again, @kbd{M-x viper-mode} might save your day.
address@hidden M-x toggle-viper-mode
address@hidden @code{toggle-viper-mode}
+Toggle Viperization of Emacs on and off.
address@hidden table
+
address@hidden Multifile documents and programs
+
+Viper provides some support for multi-file documents and programs.
+If a document consists of several files we can designate one of them as a
+master and put the following at the end of that file:
address@hidden
+;;; Local Variables:
+;;; eval: (viper-setup-master-buffer "file1" "file2" "file3" "file4")
+;;; End:
address@hidden lisp
address@hidden
+where @code{file1} to @code{file4} are names of files related to the master
+file.  Next time, when the master file is visited, the command
address@hidden will be evaluated and the above files will
+be associated with the master file.  Then, the new Ex command
address@hidden:RelatedFile} (abbr.@: @kbd{:R}) will display files 1 to 4 one 
after
+another, so you can edit them.  If a file is not in any Emacs buffer, it
+will be visited.  The command @kbd{PreviousRelatedFile} (abbr., @kbd{:P})
+goes through the file list in the opposite direction.
address@hidden @kbd{:RelatedFile}
address@hidden @kbd{:PreviousRelatedFile}
+
+These commands are akin to @kbd{:n} and @kbd{:N}, but they allow the user to
+focus on relevant files only.
+
+Note that only the master file needs to have the aforementioned block of
+commands.  Also, ";;;" above can be replaced by some other
+markers.  Semicolon is good for Lisp programs, since it is considered a
+comment designator there.  For LaTeX, this could be "%%%", and for C the
+above block should be commented out.
+
+Even though these commands are sometimes useful, they are no substitute for
+the powerful @emph{tag table} facility of Emacs.  Viper's @kbd{:tag} command
+in a primitive interface to Emacs tags.  @xref{Tags,Tags,Tags,emacs,
+The Gnu Emacs Manual}, for more information on tags.
+
+The following two commands are normally bound to a mouse click and are part
+of Viper.  They work only if Emacs runs as an application under X
+Windows (or under some other window system for which a port of GNU Emacs 20
+is available).  Clicking the mouse when Emacs is invoked in an Xterm window
+(using @code{emacs -nw}) will do no good.
+
address@hidden @code
address@hidden mouse
address@hidden mouse-search
address@hidden viper-mouse-search-key  (meta shift 1)
address@hidden @code{viper-mouse-insert-key}
+This variable controls the @emph{mouse-search} feature of Viper.  The
+default value
+states that holding Meta and Shift keys while clicking mouse button 1
+should initiate search for a region under the mouse pointer (defined
+below).  This command can take a prefix argument, which indicates the
+occurrence of the pattern to search for.
+
+Note: while loading initially, Viper binds this mouse action only if it is
+not already bound to something else.  If you want to use the mouse-search
+feature, and the @kbd{Meta-Shift-Mouse-1} mouse action is already bound to
+something else, you can rebind the mouse-search feature by setting
address@hidden to something else in your @code{~/.viper}
+file:
address@hidden
+(setq viper-mouse-search-key '(meta 1))
address@hidden lisp
+This would bind mouse search to the action invoked by pressing the
+Meta key and clicking mouse button 1.  The allowed values of
address@hidden are lists that contain a mouse-button number
+(1,2, or 3) and any combination of the words `control', `meta', and
+`shift'.
+
+If the requested mouse action (e.g., (meta 1)) is already taken for other
+purposes then you have to confirm your intention by placing the following
+command in @code{~/.viper} after setting @code{viper-mouse-search-key}:
address@hidden
+(viper-bind-mouse-search-key 'force)
address@hidden lisp
+
+You can also change this setting interactively, through the customization
+widget of Emacs (type @kbd{:customize}).
+
+The region that is chosen as a pattern to search for is determined as
+follows.  If search is invoked via a single click, Viper chooses the region
+that lies between the beginning of the ``word'' under the pointer (``word''
+is understood in Vi sense) and the end of that word.  The only difference
+with Vi's words is that in Lisp major modes `-' is considered an
+alphanumeric symbol.  This is done for the convenience of working with Lisp
+symbols, which often have an `-' in them.  Also, if you click on a
+non-alphanumeric character that is not a word separator (in Vi sense) then
+this character will also be considered alphanumeric, provided that it is
+adjacent (from either side) to an alphanumeric character.  This useful
+feature gives added control over the patterns selected by the mouse click.
+
+On a double-click, the region is determined by the beginning of the current
+Vi's ``Word'' (i.e., the largest non-separator chunk of text) and the End
+of that ``Word'' (as determined by the @kbd{E} command).
+
+On a triple-click, the region consists of the entire line where the click
+occurred with all leading and trailing spaces and tabs removed.
+
address@hidden mouse-insert
address@hidden viper-mouse-insert-key (meta shift 2)
address@hidden @code{viper-mouse-insert-key}
+This variable controls the @emph{mouse-insert} feature of Viper.
+The above default value states that
+holding Meta and Shift keys while clicking mouse button 2
+should insert the region surrounding the
+mouse pointer.  The rules defining this region are the same as for
+mouse-search.  This command takes an optional prefix argument, which
+indicates how many such regions to snarf from the buffer and insert.  (In
+case of a triple-click, the prefix argument is ignored.)
+
+Note: while loading initially, Viper binds this mouse action only if it not
+already bound to something else.  If you want to use this feature and the
+default mouse action is already bound, you can rebind mouse-insert by
+placing this command in @code{~/.viper}:
address@hidden
+(setq viper-mouse-insert-key '(meta 2))
address@hidden lisp
+If you want to bind mouse-insert to an action even if this action is
+already taked for other purposes in Emacs, then you should add this command
+to @code{~/.viper}, after setting @code{viper-mouse-insert-key}:
address@hidden
+(viper-bind-mouse-insert-key 'force)
address@hidden lisp
+
+This value can also be changed via the Emacs customization widget at the
+menubar.
+
address@hidden viper-multiclick-timeout
+This variable controls the rate at which double-clicking must occur for the
+purpose of mouse search and mouse insert.  By default, this is set to
address@hidden in Emacs and to
address@hidden milliseconds in XEmacs.
address@hidden table        
address@hidden @kbd{S-Mouse-1}
address@hidden @kbd{S-Mouse-2}
address@hidden @kbd{meta shift button1up}
address@hidden @kbd{meta shift button2up}
address@hidden @code{viper-multiclick-timeout}
address@hidden @code{viper-mouse-click-insert-word}
address@hidden @code{viper-mouse-click-search-word}
+
+Note: The above functions search and insert in the selected window of
+the latest active frame.  This means that you can click in another window or
+another frame and have search or insertion done in the frame and window you
+just left.  This lets one use these functions in a multi-frame
+configuration.  However, this may require some getting used to.  For
+instance, if you are typing in a frame, A, and then move the mouse to frame
+B and click to invoke mouse search, search (or insertion) will be performed
+in frame A.  To perform search/insertion in frame B, you will first have to
+shift focus there, which doesn't happen until you type a character or
+perform some other action in frame B---mouse search doesn't shift focus.
+
+If you decide that you don't like the above feature and always want
+search/insertion be performed in the frame where the click occurs, don't
+bind (and unbind, if necessary) @code{viper-mouse-catch-frame-switch} from
+the mouse event it is bound to.
+
+Mouse search is integrated with Vi-style search, so you can
+repeat it with @kbd{n} and @kbd{N}.  It should be also noted that, while
+case-sensitivity of search in Viper is controlled by the variable
address@hidden, the case of mouse search is
+controlled by the Emacs variable @code{case-fold-search}, which may be set
+differently from @code{viper-case-fold-search}.  Therefore, case-sensitivity
+of mouse search may be different from that of the usual Vi-style search.
+
+Finally, if the way Viper determines the word to be searched for or to be
+inserted is not what you want, there is a variable,
address@hidden, which can be changed to indicate
+another function for snarfing words out of the buffer.  The catch is that
+you will then have to write such a function and make it known to your
+Emacs.  The function @code{viper-surrounding-word} in @file{viper.el} can be
+used as a guiding example.
+
address@hidden Vi Macros, ,Viper Specials,Customization
address@hidden Vi Macros
+
address@hidden Vi macros
+
+Viper supports much enhanced Vi-style macros and also facilitates the use
+of Emacs-style macros.  To define a temporary macro, it is generally more
+convenient to use Emacs keyboard macro facility.  Emacs keyboard macros are
+usually defined anonymously, and the latest macro can be executed by typing
address@hidden e} (or @kbd{*}, if Viper is in Vi state).  If you need to use 
several
+temporary macros, Viper lets you save them to a
+register (a lowercase letter); such macros can then be executed by typing
address@hidden@@a} in Vi state (if a macro was previously saved in register
address@hidden).
address@hidden and Registers}, for details.
+
+If, however, you need to use a macro regularly, it must be given a
+permanent name and saved.  Emacs manual explains how to do this, but
+invocation of named Emacs macros is quite different from Vi's.  First,
+invocation of permanent Emacs macros takes time because it requires typing
+too many keys (to  a Vi user's taste, anyway).
+Second, binding such macros to function keys, for
+fast access, hogs valuable real estate on the keyboard.
+
+Vi-style macros are better in that respect, since Vi lets the user overload
+the meaning of key sequences: keys typed in fast succession are treated
+specially, if this key sequence is bound to a macro.
+
+Viper provides Vi-style keyboard macros through the usual Ex commands,
address@hidden:map} and 
address@hidden:map!}.  These macros are much more powerful in Viper than
+they are in the original Vi and in other emulators.  This is because Viper
+implements an enhanced vi-style
+interface to the powerful Emacs keyboard macro facility.
+
+First, any Emacs
+command can be executed while defining a macro, not just the Vi
+commands.  In particular, the user can invoke Emacs commands via @kbd{M-x
+command-name} or by pressing various function keys on the keyboard.  One
+can even use the mouse, although this is usually not useful and is not
+recommended (and macros defined with the use of the mouse cannot be saved in
+command history and in the startup file, for future use).
+
+Macros defined by mixing Vi and Emacs commands are represented as
+vectors.  So, don't be confused when you see one (usually through the
+history of Ex commands).  For instance, if @kbd{gg} is defined by typing
address@hidden, the up-arrow key and @kbd{M-x next-line}, its definition will 
look
+as follows in Emacs (in XEmacs, it looks slightly different, see below):
+
address@hidden
+[l up (meta x) n e x t - l i n e return]
address@hidden example
+
+Second, Viper macros are defined in a WYSIWYG style.  This means that
+commands are executed as you type them, so you can see precisely what is
+being defined.  Third, macros can be bound to arbitrary sequences of keys,
+not just to printable keys.  For instance, one can define a macro that will
+be invoked by hitting @kbd{f3} then @kbd{f2} function keys.  (The keys
address@hidden and @kbd{backspace} are excluded; also, a macro invocation
+sequence can't start with @key{ESC}.  Some other keys, such as @kbd{f1} and
address@hidden, can't be bound to macros under Emacs, since they
+are bound in @code{key-translation-map}, which overrides any other binding
+the user gives to keys.  In general, keys that have a binding in
address@hidden can't be bound to a macro.)
+
+Fourth, in Viper, one can define macros that are specific to a given
+buffer, a given major mode, or macros that are defined for all buffers.  In
+fact, the same macro name can have several different definitions: one
+global, several definitions for various major modes, and
+definitions for various specific buffers.  Buffer-specific definitions
+override mode-specific definitions, which, in turn, override global
+definitions.
+
+As if all that is not enough, Viper (through its interface to Emacs
+macros) lets the user define keyboard macros that ask for confirmation or
+even prompt the user for input and then continue.  To do this, one should
+type @kbd{C-x q} (for confirmation) or @kbd{C-u C-x q} (for prompt).
+For details, @pxref{Kbd Macro Query,,Customization,emacs,The GNU Emacs
+Manual} @refill
+
+When the user finishes defining a macro (which is done by typing @kbd{C-x)} ---
+a departure from Vi), you will be asked whether you want this
+macro to be global, mode-specific, or buffer-specific.  You will also be
+given a chance to save the macro in your @file{~/.viper} file.
+This is the easiest way to save a macro and make
+it permanently available.  If you work your startup files with bare hands,
+here is how Viper saves the above macro so that it will be
+available in Viper's Insert state (and Replace state) in buffer @code{my-buf}
+only:
+
address@hidden
+(viper-record-kbd-macro "gg" 'insert-state
+       [l up (meta x) n e x t - l i n e return]
+       "my-buf")
address@hidden example
+
address@hidden
+To do the same for Vi state and all buffers with the major mode
address@hidden, use:
+
address@hidden
+(viper-record-kbd-macro "gg" 'vi-state
+       [l up (meta x) n e x t - l i n e return]
+       'cc-mode)
address@hidden example
+
address@hidden
+Both macro names and macro definitions are vectors of symbols that denote
+keys on the keyboard.  Some keys, like @kbd{\}, @kbd{ }, or digit-keys must
+be escaped with a backslash.  Modified keys are represented as lists.  For
+instance, holding Meta and Control and pressing @kbd{f4} is represented as
address@hidden(control meta f4)}.
+If all members of a vectors are printable characters (or sequences, such as
address@hidden, @kbd{\t}, for @key{ESC} and @key{TAB}), then they can also be 
represented as
+strings:
+
address@hidden
+(viper-record-kbd-macro "aa" 'vi-state  "aaa\e"  "my-buffer")
address@hidden example
+
address@hidden
+Thus, typing @kbd{aa} fast in Vi state will switch Viper to Insert state
+(due to the first @kbd{a}), insert @kbd{aa}, and then it will switch back to Vi
+state.  All this will take effect only in the buffer named @code{my-buffer}.
+
+Note that the last argument to @code{viper-record-kbd-macro} must be either a
+string (a buffer name), a symbol representing a major mode, or @code{t};
+the latter says that the macro is to be defined for all buffers
+(which is how macros are defined in original Vi).
+
+For convenience, Viper also lets you define Vi-style macros in its Emacs
+state.  There is no Ex command, like @kbd{:map} and @kbd{:map!} for doing
+this, but the user can include such a macro in the @file{~/.viper} file.  The
+only thing is that the @code{viper-record-kbd-macro} command should specify
address@hidden instead of @code{vi-state} or @code{insert-state}.
+
+The user can get rid of a macro either by using the Ex commands @kbd{:unmap}
+and @kbd{:unmap!} or by issuing a call to @code{viper-unrecord-kbd-macro}.
+The latter is more powerful, since it can delete macros even in
address@hidden  However, @code{viper-unrecord-kbd-macro} is usually
+needed only when the user needs to get rid of the macros that are already
+predefined in Viper.
+The syntax is:
address@hidden @code{viper-unrecord-kbd-macro}
address@hidden
+(viper-unrecord-kbd-macro macro state)
address@hidden example
address@hidden
+The second argument must be @code{vi-state}, @code{insert-state}, or
address@hidden  The first argument is a name of a macro.  To avoid
+mistakes in specifying names of existing macros, type @kbd{M-x
+viper-describe-kbd-macros} and use a name from the list displayed by this
+command.
+
+If an error occurs during macro definition, Emacs
+aborts the process, and it must be repeated.  This is analogous to Vi,
+except that in Vi the user doesn't know there is an error until the macro is
+actually run.  All that means that in order for a definition to be
+successful, the user must do some simple planning of the process in
+advance, to avoid errors.  For instance, if you want to map @kbd{gg} to
address@hidden in Vi state, you must make sure that there is enough room on the
+current line.  Since @kbd{l} moves the cursor forward, it may signal an
+error on reaching the end of line, which will abort the definition.
+
+These precautions are necessary only when defining macros; they will help
+avoid the need to redo the job.  When macros are actually run, an error
+during the execution will simply terminate the current execution
+(but the macro will remain mapped).
+
+A macro name can be a string of characters or a vector of keys.
+The latter makes it possible to define macros bound to, say, double-hits
+on a function key, such as @kbd{up} or @kbd{f13}.
+This is very useful if you run out of function keys on your keyboard; it
+makes Viper macro facility a @emph{keyboard doubler}, so to speak.
+
+Elsewhere (@xref{Key Bindings}, for details), we review
+the standard Emacs mechanism for binding function keys to commands.
+For instance,
+
address@hidden
+(global-set-key [f13] 'repeat-complex-command)
address@hidden example
+
address@hidden
+binds the key f13 to the Emacs function that repeats the last minibuffer
+command.  Under Viper, however, you may still use this key for additional
+purposes, if you bind, say, a double-hitting action for that key to some
+other function.  Emacs doesn't allow the user to do that, but Viper does
+this through its keyboard macro facility.  To do this, type @kbd{:map }
+first.  When you are asked to enter a macro name, hit f13 twice, followed by
address@hidden or @key{SPC}.
+
+Emacs will now start the mapping process by actually executing
+Vi and Emacs commands, so that you could see what will happen each time the
+macro is executed.  Suppose now we wanted to bind the key sequence
address@hidden f13} to the command @code{eval-last-sexp}.  To accomplish this, 
we
+can type @kbd{M-x eval-last-sexp} followed by @kbd{C-x )}.
+If you answer positively to Viper's offer to save this macro in @file{~/.viper}
+for future uses, the following will be inserted in that file:
+
address@hidden
+(viper-record-kbd-macro [f16 f16] 'vi-state
+         [(meta x) e v a l - l a s t - s e x p]
+         'lisp-interaction-mode)
address@hidden example
+
+To illustrate the above point, Viper provides two canned macros, which, by
+default, are bound to @kbd{[f12 \1]} and @kbd{[f12 \2]} (invoked by typing
address@hidden then @kbd{1} and @kbd{2}, respectively).  These macros are useful
+shortcuts to Viper's command ring history.  The first macro will execute the
+second-last destructive command (the last one is executed by @kbd{.}, as
+usual).  The second macro executes the third-last command.
+
+If you need to go deeper into the command history, you will have to use
+other commands, as described earlier in this section; or you can bind,
+say, @kbd{f12 \3} like this:
+
address@hidden
+(viper-record-kbd-macro [f12 \3] 'vi-state
+                      [(meta x) r e p e a t - f r o m - h i s t o r y]
+                      t)
address@hidden example
+
+
+Note that even though the macro uses the function key @kbd{f12}, the key is
+actually free and can still be bound to some Emacs function via
address@hidden or @code{global-set-key}.
+
+
+Viper allows the user to define macro names that are prefixes of other macros.
+For instance, one can define @kbd{[[} and @kbd{[[[[} to be macros.
+If you type the exact sequence of such keys and then pause, Viper will
+execute the right macro.  However, if you don't pause and, say, type
address@hidden then the conflict is resolved as follows.  If only one of the
+key sequences, @kbd{[[} or @kbd{[[[[} has a definition applicable to the
+current buffer, then, in fact, there is no conflict and the right macro
+will be chosen.  If both have applicable definitions, then the first one
+found will be executed.  Usually this is the macro with a shorter name.  So,
+in our case, @kbd{[[[[text} will cause the macro @kbd{[[} to be executed
+twice and then the remaining keys, @kbd{t e x t}, will be processed.
+
+When defining macros using @kbd{:map} or @kbd{:map!}, the user enters
+the actually keys to be used to invoke the macro.  For instance, you
+should hit the actual key @kbd{f6} if it is to be part of a macro
+name; you do @emph{not} write @kbd{f 6}.  When entering keys, Viper
+displays them as strings or vectors (e.g., @code{"abc"} or @code{[f6
+f7 a]}).  The same holds for unmapping.  Hitting @key{TAB} while
+typing a macro name in the @kbd{:unmap} or @kbd{:unmap!} command will
+cause name completion.  Completions are displayed as strings or
+vectors.  However, as before, you don't actually type @samp{"},
address@hidden, or @samp{]} that appear in the completions.  These are
+meta-symbols that indicate whether the corresponding macro name is a
+vector or a string.
+
+One last difference from Vi: Vi-style keyboard macros cannot be defined in
+terms of other Vi-style keyboard macros (but named Emacs macros are OK).
+More precisely, while defining or executing a macro, the special meaning
+of key sequences (as Vi macros) is ignored.
+This is because it is all too easy to create an infinite loop in this way.
+Since Viper macros are much more powerful than Vi's it is impossible to
+detect such loops.  In practice, this is not really a limitation but,
+rather, a feature.
+
+We should also note that Vi macros are disabled in the Minibuffer, which
+helps keep some potential troubles away.
+
+The rate at which the user must type keys in order for them to be
+recognized as a timeout macro is controlled by the variable
address@hidden, which defaults to 200 milliseconds.
+
+For the most part, Viper macros defined in @file{~/.viper} can be shared
+between Emacs, XEmacs, and X and TTY modes.  However, macros defined via
+function keys may need separate definitions when XEmacs and Emacs have
+different names for the same keyboard key.  For instance, the `Page Up' key
+may be known in Emacs as @kbd{prior} and in XEmacs as @kbd{pgup}.
+The problem with TTY may be that the function keys there generate sequences
+of events instead of a single event (as under a window system).
+Emacs maps some of these sequences back to the logical keys
+(e.g., the sequences generated by the arrow keys are mapped to @kbd{up},
address@hidden, etc.).  However, not all function keys are mapped in this way.
+Macros that are bound to key sequences that contain such unmapped function
+keys have to be redefined for TTY's (and possibly for every type of TTY you
+may be using).  To do this, start Emacs on an appropriate TTY device and
+define the macro using @kbd{:map}, as usual.
+
address@hidden @code{viper-describe-kbd-macros}
+Finally, Viper provides a function that conveniently displays all macros
+currently defined.  To see all macros along with their definitions, type
address@hidden viper-describe-kbd-macros}.
+
address@hidden Commands,,Customization,Top
address@hidden Commands
+
+This section is a semi-automatically bowdlerized version of the Vi
+reference created by @* @samp{maart@@cs.vu.nl} and others.  It can be
+found on the Vi archives.  This reference has been adapted for address@hidden
+
address@hidden
+* Groundwork::                 Textual Conventions and Viper basics
+* Text Handling::              Moving, Editing, Undoing.
+* Display::                    Scrolling.
+* File and Buffer Handling::   Editing, Writing and Quitting.
+* Mapping::                    Mapping Keys, Keyboard Macros
+* Shell Commands::             Accessing Shell Commands, Processing Text
+* Options::                    Ex options, the @kbd{:set} commands
+* Emacs Related Commands::     Meta Keys, Windows
+* Mouse-bound Commands::        Search and insertion of text
address@hidden menu
+
address@hidden Groundwork, Text Handling, Commands, Commands
address@hidden  node-name,  next,  previous,  up
address@hidden Groundwork
+
+The VI command set is based on the idea of combining motion commands
+with other commands.  The motion command is used as a text region
+specifier for other commands.
+We classify motion commands into @dfn{point commands} and
address@hidden address@hidden
+
address@hidden point commands
+
+The point commands are:
+
address@hidden
address@hidden, @kbd{l}, @kbd{0},  @kbd{$}, @kbd{w}, @kbd{W}, @kbd{b}, @kbd{B},
address@hidden, @kbd{E}, @kbd{(}, @kbd{)}, @kbd{/}, @kbd{?}, @kbd{`}, @kbd{f},
address@hidden, @kbd{t}, @kbd{T}, @kbd{%}, @kbd{;}, @kbd{,}, @kbd{^}
address@hidden quotation
+
address@hidden line commands
+
+The line commands are:
+
address@hidden
address@hidden, @kbd{k}, @kbd{+}, @kbd{-}, @kbd{H}, @kbd{M}, @kbd{L}, 
@address@hidden,
address@hidden@}}, @kbd{G}, @kbd{'},  @kbd{[[}, @kbd{]]}, @kbd{[]}
address@hidden quotation
address@hidden
+
+Text Deletion Commands (@pxref{Deleting Text}), Change commands
+(@pxref{Changing Text}), even Shell Commands (@pxref{Shell Commands})
+use these commands to describe a region of text to operate on.
+
address@hidden r and R region specifiers
+
+Viper adds two region descriptors, @kbd{r} and @kbd{R}.  These describe
+the Emacs regions (@pxref{Basics}), but they are not movement commands.
+
+The command description uses angle brackets @samp{<>} to indicate
+metasyntactic variables, since the normal conventions of using simple
+text can be confusing with Viper where the commands themselves are
+characters.  Watch out where @kbd{<} shift commands and @kbd{<count>} are
+mentioned together!!!
+
address@hidden <move>
address@hidden <a-z>
address@hidden <address>
address@hidden <move>
address@hidden <a-z>
address@hidden <address>
address@hidden movements
+
address@hidden<move>} refers to the above movement commands, and @samp{<a-z>}
+refers to registers or textmarkers from @samp{a} to @samp{z}.  Note
+that the @samp{<move>}  is described by full move commands, that is to
+say they will take counts, and otherwise behave like normal move commands.
address@hidden Ex addresses
address@hidden<address>} refers to Ex line addresses, which include
+
address@hidden @kbd
address@hidden .@: <No address>
+Current line
address@hidden .+n .-n
+Add or subtract for current line
address@hidden number
+Actual line number, use @kbd{.=} to get the line number
address@hidden '<a-z>
+Textmarker
address@hidden $
+Last line
address@hidden x,y
+Where x and y are one of the above
address@hidden %
address@hidden % (Ex address)
+For the whole file, same as (1,$).
address@hidden /<pat>/
address@hidden ?<pat>?
+Next or previous line with pattern <pat>.
+
+Note that the pattern is allowed to contain newline character (inserted as
address@hidden).  Therefore, one can search for patterns that span several
+lines.
address@hidden table
+
address@hidden % (Current file)
+Note that @samp{%} is used in Ex commands @kbd{:e} and @kbd{:r <shell-cmd>}
+to mean current file.  If you want a @samp{%} in your command, it must be
+escaped as @samp{\%}. Note that @kbd{:w} and the regular @kbd{:r <file>}
+command doesn't support the meta symbols @samp{%} and @samp{#}, because
+file history is a better mechanism.
address@hidden # (Previous file)
+Similarly, @samp{#} expands to the previous file.  The previous file is
+the first file in @kbd{:args} listing.  This defaults to previous window
+in the VI sense if you have one window only.
+
address@hidden <args>
address@hidden <cmd>
address@hidden <args>
address@hidden <cmd>
address@hidden
+Others like @samp{<args> -- arguments}, @samp{<cmd> -- command} etc.
+should be fairly obvious.
+
address@hidden
+Common characters referred to include:
+
address@hidden @kbd
address@hidden <sp>
+Space
address@hidden <ht>
+Tab
address@hidden <lf>
+Linefeed
address@hidden <esc>
+Escape
address@hidden <cr>
+Return, Enter
address@hidden table
address@hidden <cr>
address@hidden <esc>
address@hidden <lf>
address@hidden <ht>
address@hidden <sp>
+
address@hidden words
address@hidden WORDS
address@hidden char
address@hidden CHAR
+
+We also use @samp{word} for alphanumeric/non-alphanumeric words, and
address@hidden for whitespace delimited words.  @samp{char} refers to any
+ASCII character, @samp{CHAR} to non-whitespace character.
+Brackets @samp{[]} indicate optional parameters; @samp{<count>} also
+optional, usually defaulting to 1.  Brackets are elided for
address@hidden<count>} to eschew obfuscation.
+
+Viper's idea of Vi's words is slightly different from Vi.  First, Viper
+words understand Emacs symbol tables.  Therefore, all symbols declared to be
+alphanumeric in a symbol table can automatically be made part of the Viper
+word.  This is useful when, for instance, editing text containing European,
+Cyrillic, Japanese, etc., texts.
+
+Second, Viper lets you depart from Vi's idea of a word by changing the a
+syntax preference via the customization widget (the variable
address@hidden) or by executing
address@hidden interactively.
+
+By default, Viper syntax preference is @code{reformed-vi}, which means that
+Viper considers only those symbols to be part of a word that are specified
+as word-symbols by the current Emacs syntax table (which may be different
+for different major modes) plus the underscore symbol @kbd{_}, minus the
+symbols that are not considered words in Vi (e.g., `,',;, etc.), but may be
+considered as word-symbols by various Emacs major modes.  Reformed-Vi works
+very close to Vi, and it also recognizes words in other
+alphabets.  Therefore, this is the most appropriate mode for editing text
+and is likely to fit all your needs.
+
+You can also set Viper syntax preference to @code{strict-vi}, which would
+cause Viper to view all non-English letters as non-word-symbols.
+
+You can also specify @code{emacs} as your preference, which would
+make Viper use exactly the same notion of a word as Emacs does.  In
+particular, the underscore may not be part of a word in some major modes.
+
+Finally, if @code{viper-syntax-preference} is set to @code{extended}, Viper
+words would consist of characters that are classified as alphanumeric
address@hidden as parts of symbols.  This is convenient for editing programs.
+
address@hidden is a local variable, so it can have different
+values for different major modes.  For instance, in programming modes it can
+have the value @code{extended}.  In text modes where words contain special
+characters, such as European (non-English) letters, Cyrillic letters, etc.,
+the value can be @code{reformed-vi} or @code{emacs}.
+If you consider using different syntactic preferences for different major
+modes, you should execute, for example,
+
address@hidden
+(viper-set-syntax-preference nil "extended")
address@hidden example
+
+in the appropriate major mode hooks.
+
address@hidden @code{viper-syntax-preference}
address@hidden @code{viper-set-syntax-preference}
address@hidden syntax table
+
+
+
+The above discussion concerns only the movement commands.  In regular
+expressions, words remain the same as in Emacs.  That is, the expressions
address@hidden, @code{\>}, @code{\<}, etc., use Emacs' idea of what is a word,
+and they don't look into the value of variable
address@hidden  This is because Viper avoids changing
+syntax tables in order to not thwart the various major modes that set these
+tables.
+
+The usual Emacs convention is used to indicate Control Characters, i.e
+C-h for Control-h.  @emph{Do not confuse this with a sequence of separate
+characters
+C, -, h!!!} The @kbd{^} is itself, never used to indicate a
+Control character.
+
+Finally, we note that Viper's Ex-style commands can be made to work on the
+current Emacs region.  This is done by typing a digit argument before
address@hidden:}.  For instance, typing @kbd{1:} will propmt you with something 
like
address@hidden:123,135}, assuming that the current region starts at line 123 and
+ends at line 135.  There is no need to type the line numbers, since Viper
+inserts them automatically in front of the Ex command.
address@hidden Ex commands
+
address@hidden Text Handling, Display, Groundwork, Commands
address@hidden Text Handling
+
address@hidden
+* Move Commands::              Moving, Searching
+* Marking::                    Textmarkers in Viper and the Emacs Mark.
+* Appending Text::             Text insertion, Shifting, Putting
+* Editing in Insert State::    Autoindent, Quoting etc.
+* Deleting Text::              Deleting
+* Changing Text::              Changing, Replacement, Joining
+* Search and Replace::         Searches, Query Replace, Pattern Commands
+* Yanking::                    Yanking, Viewing Registers
+* Undoing::                    Multiple Undo, Backups
address@hidden menu
+
address@hidden Move Commands,Marking,,Text Handling
address@hidden Move Commands
+
address@hidden movement commands
address@hidden searching
address@hidden textmarkers
address@hidden markers
address@hidden column movement
address@hidden paragraphs
address@hidden headings
address@hidden sections
address@hidden sentences
address@hidden matching parens
address@hidden paren matching
+
address@hidden @kbd
address@hidden <count>  h  C-h
+<count> chars to the left.
address@hidden <count>  j  <lf> C-n
+<count> lines downward.
address@hidden <count>  l  <sp>
+<count> chars to the right.
address@hidden <count>  k  C-p
+<count> lines upward.
address@hidden <count>  $
+To the end of line <count> from the cursor.
address@hidden <count>  ^
+To the first CHAR <count> - 1 lines lower.
address@hidden <count>  -
+To the first CHAR <count> lines higher.
address@hidden <count>  +  <cr>
+To the first CHAR <count> lines lower.
address@hidden  0
+To the first char of the line.
address@hidden <count> |
+To column <count>
address@hidden <count>  f<char>
+<count> <char>s to the right (find).
address@hidden <count>  t<char>
+Till before <count> <char>s to the right.
address@hidden <count>  F<char>
+<count> <char>s to the left.
address@hidden <count>  T<char>
+Till after <count> <char>s to the left.
address@hidden <count>  ;
+Repeat latest @kbd{f t F T} <count> times.
address@hidden <count>  ,
+Repeat latest @kbd{f t F T}
+<count> times in opposite direction.
address@hidden <count>  w
+<count> words forward.
address@hidden <count>  W
+<count> WORDS forward.
address@hidden <count>  b
+<count> words backward.
address@hidden <count>  B
+<count> WORDS backward.
address@hidden <count>  e
+To the end of word <count> forward.
address@hidden <count>  E
+To the end of WORD <count> forward.
address@hidden <count>  G
+Go to line <count> (default end-of-file).
address@hidden <count>  H
+To line <count> from top of the screen (home).
address@hidden <count>  L
+To line <count> from bottom of the screen (last).
address@hidden  M
+To the middle line of the screen.
address@hidden <count>  )
+<count> sentences forward.
address@hidden <count>  (
+<count> sentences backward.
address@hidden <count>  @}
+<count> paragraphs forward.
address@hidden <count>  @{
+<count> paragraphs backward.
address@hidden <count>  ]]
+To the <count>th heading.
address@hidden <count>  [[
+To the <count>th previous heading.
address@hidden <count>  []
+To the end of <count>th heading.
address@hidden  m<a-z>
+Mark the cursor position with a letter.
address@hidden  `<a-z>
+To the mark.
address@hidden  '<a-z>
+To the first CHAR of the line with the mark.
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden  ``
+To the cursor position before the latest absolute
+jump (of which are examples @kbd{/} and @kbd{G}).
address@hidden  ''
+To the first CHAR of the line on which the cursor
+was placed before the latest absolute jump.
address@hidden <count>  /<string>
+To the <count>th occurrence of <string>.
address@hidden <count>  /<cr>
+To the <count>th occurrence of <string> from previous @kbd{/ or ?}.
address@hidden <count>  ?<string>
+To the <count>th previous occurrence of <string>.
address@hidden <count>  ?<cr>
+To the <count>th previous occurrence of <string> from previous @kbd{?@: or /}.
address@hidden  n
+Repeat latest @kbd{/} @kbd{?} (next).
address@hidden  N
+Repeat latest search in opposite direction.
address@hidden C-c /
+Without a prefix argument, this command toggles
+case-sensitive/case-insensitive search modes and plain vanilla/regular
+expression search.  With the prefix argument 1, i.e.,
address@hidden C-c /}, this toggles case-sensitivity; with the prefix argument 
2,
+toggles plain vanilla search and search using
+regular expressions.  @xref{Viper Specials}, for alternative ways to invoke
+this function.
address@hidden vanilla search
address@hidden case-sensitive search
address@hidden case-insensitive search
address@hidden  %
+Find the next bracket/parenthesis/brace and go to its match.
+By default, Viper ignores brackets/parentheses/braces that occur inside
+parentheses.  You can change this by setting
address@hidden to nil in your @file{.viper} file.
+This option can also be toggled interactively if you quickly hit @kbd{%%%}.
+
+This latter feature is implemented as a vi-style keyboard macro.  If you
+don't want this macro, put
+
address@hidden
+(viper-set-parsing-style-toggling-macro 'undefine)
address@hidden example
address@hidden @code{viper-set-parsing-style-toggling-macro}
+
+in your @file{~/.viper} file.
+
address@hidden table
address@hidden @kbd{%}
address@hidden @kbd{C-c /}
address@hidden @kbd{N}
address@hidden @kbd{n}
address@hidden @kbd{?<cr>}
address@hidden @kbd{/<cr>}
address@hidden @kbd{?<string>}
address@hidden @kbd{/<string>}
address@hidden @kbd{''}
address@hidden @kbd{``}
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{'<a-z>}
address@hidden @kbd{`<a-z>}
address@hidden @kbd{m<a-z>}
address@hidden @kbd{[]}
address@hidden @kbd{[[}
address@hidden @kbd{]]}
address@hidden @address@hidden
address@hidden @address@hidden
address@hidden @kbd{(}
address@hidden @kbd{)}
address@hidden @kbd{M}
address@hidden @kbd{L}
address@hidden @kbd{H}
address@hidden @kbd{G}
address@hidden @kbd{E}
address@hidden @kbd{e}
address@hidden @kbd{B}
address@hidden @kbd{b}
address@hidden @kbd{W}
address@hidden @kbd{w}
address@hidden @kbd{,}
address@hidden @kbd{;}
address@hidden @kbd{T<char>}
address@hidden @kbd{F<char>}
address@hidden @kbd{t<char>}
address@hidden @kbd{f<char>}
address@hidden @kbd{|}
address@hidden @kbd{0}
address@hidden @kbd{<cr>}
address@hidden @kbd{+}
address@hidden @kbd{-}
address@hidden @kbd{^}
address@hidden @kbd{$}
address@hidden @kbd{C-p}
address@hidden @kbd{<lf>}
address@hidden @kbd{<sp>}
address@hidden @kbd{C-n}
address@hidden @kbd{C-h}
address@hidden @kbd{h}
address@hidden @kbd{j}
address@hidden @kbd{k}
address@hidden @kbd{l}
address@hidden @code{viper-parse-sexp-ignore-comments}
+
address@hidden Marking,Appending Text,Move Commands,Text Handling
address@hidden Marking
+
+Emacs mark is referred to in the region specifiers @kbd{r} and @kbd{R}.
address@hidden Preliminaries}, and @xref{Basics}, for explanation.  Also
+see @ref{Mark,,Mark,emacs,The GNU Emacs manual}, for an explanation of
+the Emacs mark ring.
+
address@hidden marking
+
address@hidden @kbd
address@hidden m<a-z>
+Mark the current file and position with the specified letter.
address@hidden m .
+Set the Emacs mark (@pxref{Emacs Preliminaries}) at point.
address@hidden m ^
+Set the Emacs mark (@pxref{Emacs Preliminaries}) back to where it was last
+set with the @kbd{m.} command. This is useful when you set the mark with
address@hidden, but then some other command (such as @kbd{L} or @kbd{G}) changes
+it in a way that you didn't like.
address@hidden m <
+Set the Emacs mark at beginning of buffer.
address@hidden m >
+Set the Emacs mark at end of buffer.
address@hidden m ,
+Jump to the Emacs mark.
address@hidden :mark <char>
+Mark position with text marker named <char>.  This is an Ex command.
address@hidden :k <char>
+Same as @kbd{:mark}.
address@hidden ``
+Exchange point and mark.
address@hidden ''
+Exchange point and mark and go to the first CHAR on line.
address@hidden '<a-z>
+Go to specified Viper mark.
address@hidden
+Go to specified Viper mark and go to the first CHAR on line.
address@hidden table
address@hidden @kbd{m<a-z>}
address@hidden @kbd{m.}
address@hidden @kbd{m>}
address@hidden @kbd{m<}
address@hidden @kbd{m,}
address@hidden @kbd{m^}
address@hidden @kbd{:mark}
address@hidden @kbd{:k}
address@hidden @kbd{''}
address@hidden @kbd{``}
address@hidden @kbd{`<a-z>}
address@hidden @kbd{'<a-z>}
+
address@hidden  Appending Text, Editing in Insert State, Marking,Text Handling
address@hidden Appending Text
+
address@hidden, to see how to change tab and shiftwidth size.  See the GNU
+Emacs manual, or try @kbd{C-ha tabs} (If you have turned Emacs help on).
+Check out the variable @code{indent-tabs-mode} to put in just spaces.
+Also see options for word-wrap.
+
address@hidden inserting
address@hidden appending
address@hidden paste
address@hidden put
+
address@hidden @kbd
address@hidden <count>  a
+<count> times after the cursor.
address@hidden <count>  A
+<count> times at the end of line.
address@hidden <count>  i
+<count> times before the cursor (insert).
address@hidden <count>  I
+<count> times before the first CHAR of the line
address@hidden <count>  o
+On a new line below the current (open).
+The count is only useful on a slow terminal.
address@hidden <count>  O
+On a new line above the current.
+The count is only useful on a slow terminal.
address@hidden <count>  ><move>
+Shift the lines described by <count><move> one
+shiftwidth to the right (layout!).
address@hidden <count>  >>
+Shift <count> lines one shiftwidth to the right.
address@hidden <count>  ["<a-z1-9>]p
+Put the contents of the (default undo) buffer
+<count> times after the cursor.  The register will
+be automatically down-cased.
address@hidden <count>  ["<a-z1-9>]P
+Put the contents of the (default undo) buffer
+<count> times before the cursor.  The register will
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden <count>  .
+Repeat previous command <count> times.  For destructive
+commands as well as undo.
address@hidden f1 1 and f1 2
+While @kbd{.} repeats the last destructive command,
+these two macros repeat the second-last and the third-last destructive
+commands.  @xref{Vi Macros}, for more information on Vi macros.
address@hidden C-c M-p and C-c M-n
+In Vi state,
+these commands help peruse the history of Vi's destructive commands.
+Successive typing of @kbd{C-c M-p} causes Viper to search the history in
+the direction
+of older commands, while hitting @kbd{C-c M-n} does so in reverse
+order.  Each command in the history is displayed in the Minibuffer.  The
+displayed command can
+then be executed by typing address@hidden'.
+
+Since typing the above sequences of keys may be tedious, the
+functions doing the perusing can be bound to unused keyboard keys in the
address@hidden/.viper} file.  @xref{Viper Specials}, for details.
address@hidden table
address@hidden @kbd{C-c M-p}
address@hidden @kbd{C-c M-n}
address@hidden @kbd{.}
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{P}
address@hidden @kbd{p}
address@hidden @kbd{"<a-z1-9>p}
address@hidden @kbd{"<a-z1-9>P}
address@hidden @kbd{>>}
address@hidden @kbd{><move>}
address@hidden @kbd{O}
address@hidden @kbd{o}
address@hidden @kbd{i}
address@hidden @kbd{A}
address@hidden @kbd{a}
+
address@hidden Editing in Insert State, Deleting Text, Appending Text,Text 
Handling
address@hidden Editing in Insert State
+
+Minibuffer can be edited similarly to Insert state, and you can switch
+between Insert/Replace/Vi states at will.
+Some users prefer plain Emacs feel in the Minibuffer.  To this end, set
address@hidden to @code{nil}.
+
address@hidden Insert state
+
address@hidden @kbd
address@hidden C-v
+Deprive the next char of its special meaning (quoting).
address@hidden C-h
+One char back.
address@hidden C-w
+One word back.
address@hidden C-u
+Back to the begin of the change on the
+current line.
+
address@hidden table
address@hidden @kbd{C-u}
address@hidden @kbd{C-w}
address@hidden @kbd{C-v}
+
address@hidden Deleting Text, Changing Text, Editing in Insert State, Text 
Handling
address@hidden Deleting Text
+
+
+There is one difference in text deletion that you should be
+aware of.  This difference comes from Emacs and was adopted in Viper
+because we find it very useful.  In Vi, if you delete a line, say, and then
+another line, these two deletions are separated and are put back
+separately if you use the @samp{p} command.  In Emacs (and Viper), successive
+series of deletions that are @emph{not interrupted} by other commands are
+lumped together, so the deleted text gets accumulated and can be put back
+as one chunk.  If you want to break a sequence of deletions so that the
+newly deleted text could be put back separately from the previously deleted
+text, you should perform a non-deleting action, e.g., move the cursor one
+character in any direction.
+
address@hidden shifting text
+
address@hidden @kbd
address@hidden <count>  x
+Delete <count> chars under and after the cursor.
address@hidden <count>  X
+Delete <count> chars before the cursor.
address@hidden <count>  d<move>
+Delete from point to endpoint of <count><move>.
address@hidden <count>  dd
+Delete <count> lines.
address@hidden  D
+The rest of the line.
address@hidden <count>  <<move>
+Shift the lines described by <count><move> one
+shiftwidth to the left (layout!).
address@hidden <count>  <<
+Shift <count> lines one shiftwidth to the left.
address@hidden table
address@hidden @kbd{<<}
address@hidden @kbd{<<move>}
address@hidden @kbd{D}
address@hidden @kbd{dd}
address@hidden @kbd{d<move>}
address@hidden @kbd{X}
address@hidden @kbd{x}
+
address@hidden Changing Text, Search and Replace, Deleting Text,Text Handling
address@hidden Changing Text
+
address@hidden joining lines
address@hidden changing case
address@hidden quoting regions
address@hidden substitution
+
address@hidden @kbd
address@hidden <count>  r<char>
+Replace <count> chars by <char> - no <esc>.
address@hidden <count>  R
+Overwrite the rest of the line,
+appending change @var{count - 1} times.
address@hidden <count>  s
+Substitute <count> chars.
address@hidden <count>  S
+Change <count> lines.
address@hidden <count>  c<move>
+Change from begin to endpoint of <count><move>.
address@hidden <count>  cc
+Change <count> lines.
address@hidden <count>  C
+The rest of the line and <count> - 1 next lines.
address@hidden <count>  =<move>
+Reindent the region described by move.
address@hidden <count>  ~
+Switch lower and upper cases.
address@hidden <count>  J
+Join <count> lines (default 2).
address@hidden  :[x,y]s/<pat>/<repl>/<f>
+Substitute (on lines x through y) the pattern
+<pat> (default the last pattern) with <repl>.  Useful
+flags <f> are @samp{g} for @samp{global} (i.e.@: change every
+non-overlapping occurrence of <pat>) and @samp{c} for
address@hidden (type @samp{y} to confirm a particular
+substitution, else @samp{n} ).  Instead of @kbd{/} any
+punctuation CHAR unequal to <space> <tab> and <lf> can be used as
+delimiter.
+
+In Emacs, @samp{\&} stands for the last matched expression, so
address@hidden/[ab]+/\&\&/} will double the string matched by @kbd{[ab]}.
+Viper doesn't treat @samp{&} specially, unlike Vi: use @samp{\&} instead.
+
+Viper does not parse search patterns and does not expand special symbols
+found there (e.g., @samp{~} is not expanded to the result of the previous
+substitution).
+
+Note: @emph{The newline character (inserted as @kbd{C-qC-j})
+can be used in <repl>}.
address@hidden  :[x,y]copy [z]
+Copy text between @kbd{x} and @kbd{y} to the position after @kbd{z}.
address@hidden  :[x,y]t [z]
+Same as @kbd{:copy}.
address@hidden  :[x,y]move [z]
+Move text between @kbd{x} and @kbd{y} to the position after @kbd{z}.
address@hidden  &
+Repeat latest Ex substitute command, e.g.
address@hidden:s/wrong/right}.
address@hidden :x,yp
address@hidden :g/Pat/p
address@hidden :v/Pat/p
+The above commands display certain buffer lines in a
+temporary buffer. The first form above displays the buffer lines between
address@hidden and @kbd{y}. The second displays the lines of the buffer, which
+match a given pattern. The third form displays the lines that do @emph{not}
+match the given pattern.
address@hidden #c<move>
+Change upper-case characters in the region to lower-case.
address@hidden #C<move>
+Change lower-case characters in the region to upper-case.
address@hidden #q<move>
+Insert specified string at the beginning of each line in the region
address@hidden C-c M-p and C-c M-n
+In Insert and Replace states, these keys are bound to commands that peruse
+the history of the text
+previously inserted in other insert or replace commands.  By repeatedly typing
address@hidden M-p} or @kbd{C-c M-n}, you will cause Viper to
+insert these previously used strings one by one.
+When a new string is inserted, the previous one is deleted.
+
+In Vi state, these keys are bound to functions that peruse the history of
+destructive Vi commands.
address@hidden Specials}, for details.
address@hidden table
address@hidden @kbd{C-c M-p}
address@hidden @kbd{C-c M-n}
address@hidden @kbd{#q<move> }
address@hidden @kbd{#C<move>}
address@hidden @kbd{#c<move>}
address@hidden @kbd{&}
address@hidden @kbd{\&}
address@hidden @kbd{:substitute/<pat>/<repl>/<f>}
address@hidden @kbd{:s/<pat>/<repl>/<f>}
address@hidden @kbd{:copy [z]}
address@hidden @kbd{:t [z]}
address@hidden @kbd{:move [z]}
address@hidden @kbd{J}
address@hidden @kbd{~}
address@hidden @kbd{=<move>}
address@hidden @kbd{C}
address@hidden @kbd{cc}
address@hidden @kbd{c<move>}
address@hidden @kbd{S}
address@hidden @kbd{s}
address@hidden @kbd{R}
address@hidden @kbd{r<char>}
+
address@hidden Search and Replace, Yanking, Changing Text,Text Handling
address@hidden Search and Replace
+
address@hidden, for Ex address syntax.  @xref{Options}, to see how to
+get literal (non-regular-expression) search and how to stop search from
+wrapping around.
+
address@hidden @kbd
address@hidden C-c /
+Toggle case-sensitive search.  With prefix argument, toggle vanilla/regular
+expression search.
address@hidden <count>  /<string>
+To the <count>th occurrence of <string>.
+
+Viper does not parse search patterns and does not expand special symbols
+found there (e.g., @samp{~} is not expanded to the result of the previous
+substitution).
+
address@hidden <count>  ?<string>
+To the <count>th previous occurrence of <string>.
address@hidden <count>  g<move>
+Search for the text described by move.  (off by default)
address@hidden n
+Repeat latest @kbd{/} @kbd{?} (next).
address@hidden N
+Idem in opposite direction.
address@hidden %
+Find the next bracket and go to its match
address@hidden :[x,y]g/<string>/<cmd>
address@hidden text processing
+Search globally [from line x to y] for <string>
+and execute the Ex <cmd> on each occurrence.
address@hidden :[x,y]v/<string>/<cmd>
+Execute <cmd> on the lines that don't match.
address@hidden #g<move>
+Execute the last keyboard macro for each line in the region.
address@hidden and Registers}, for more info.
address@hidden Q
+Query Replace.
address@hidden :ta <name>
+Search in the tags file where <name> is defined (file, line), and go to it.
address@hidden  :[x,y]s/<pat>/<repl>/<f>
+Substitute (on lines x through y) the pattern <pat> (default the last
+pattern) with <repl>.  Useful
+flags <f> are @samp{g} for @samp{global} (i.e.@: change every
+non-overlapping occurrence of <pat>) and @samp{c} for
address@hidden (type @samp{y} to confirm a particular
+substitution, else @samp{n}).  Instead of @kbd{/} any
+punctuation character other than <space> <tab> and <lf> can be used as
+delimiter.
+
+Note: @emph{The newline character (inserted as @kbd{C-qC-j})
+can be used in <repl>}.
address@hidden  &
+Repeat latest Ex substitute command, e.g.@: @kbd{:s/wrong/right}.
address@hidden :global /<pattern>/<ex-command>
address@hidden :g /<pattern>/<ex-command>
+Execute <ex-command> on all lines that match <pattern>.
address@hidden :vglobal /<pattern>/<ex-command>
address@hidden :v /<pattern>/<ex-command>
+Execute <ex-command> on all lines that do not match <pattern>.
address@hidden table
address@hidden @kbd{&}
address@hidden @kbd{:substitute/<pat>/<repl>/<f>}
address@hidden @kbd{Q}
address@hidden @kbd{#g<move>}
address@hidden @kbd{:v}
address@hidden @kbd{:g}
address@hidden @kbd{:global}
address@hidden @kbd{:vglobal}
address@hidden @kbd{:tag <name>}
address@hidden @kbd{%}
address@hidden @kbd{N}
address@hidden @kbd{n}
address@hidden @kbd{g<move>}
address@hidden @kbd{?<string>}
address@hidden @kbd{/<string>}
+
address@hidden Yanking,Undoing,Search and Replace,Text Handling
address@hidden Yanking
+
address@hidden cut and paste
address@hidden paste
+
address@hidden @kbd
address@hidden <count>  y<move>
+Yank from begin to endpoint of <count><move>.
address@hidden <count>  "<a-z>y<move>
+Yank from begin to endpoint of <count><move> to register.
address@hidden <count>  "<A-Z>y<move>
+Yank from begin to endpoint of <count><move> and append
+to register.
address@hidden <count>  yy
+<count> lines.
address@hidden <count>  Y
+Idem (should be equivalent to @kbd{y$} though).
address@hidden  m<a-z>
+Mark the cursor position with a letter.
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden <count>  ["<a-z1-9>]p
+Put the contents of the (default undo) buffer
+<count> times after the cursor.  The register will
+be automatically down-cased.
address@hidden <count>  ["<a-z1-9>]P
+Put the contents of the (default undo) buffer
+<count> times before the cursor.  The register will
address@hidden table
address@hidden @kbd{P}
address@hidden @kbd{p}
address@hidden @kbd{"<a-z1-9>p}
address@hidden @kbd{"<a-z1-9>P}
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{m<a-z>}
address@hidden @kbd{Y}
address@hidden @kbd{yy}
address@hidden @kbd{"<A-Z>y<move>}
address@hidden @kbd{"<a-z>y<move>}
address@hidden @kbd{y<move>}
address@hidden @kbd{yank}
address@hidden @kbd{:yank}
+
address@hidden Undoing,, Yanking,Text Handling
address@hidden Undoing
+
address@hidden undo
address@hidden backup files
+
address@hidden @kbd
address@hidden  u U
+Undo the latest change.
address@hidden  .
+Repeat undo.
address@hidden :q!
+Quit Vi without writing.
address@hidden :e!
+Re-edit a messed-up file.
address@hidden :rec
+Recover file from autosave.  Viper also creates backup files
+that have a @samp{~} appended to them.
address@hidden table
address@hidden @kbd{:rec}
address@hidden @kbd{:e!}
address@hidden @kbd{:q!}
address@hidden @kbd{.}
address@hidden @kbd{U}
address@hidden @kbd{u}
+
address@hidden Display, File and Buffer Handling, Text Handling, Commands
address@hidden Display
+
address@hidden scrolling
+
address@hidden @kbd
address@hidden C-g
+At user level 1,
+give file name, status, current line number
+and relative address@hidden
+At user levels 2 and higher, abort the current command.
address@hidden C-c g
+Give file name, status, current line number and relative position -- all
+user levels.
address@hidden C-l
+Refresh the screen.
address@hidden <count> C-e
+Expose <count> more lines at bottom, cursor stays put (if possible).
address@hidden <count> C-y
+Expose <count> more lines at top, cursor stays put (if possible).
address@hidden <count> C-d
+Scroll <count> lines downward (default the number of the previous scroll;
+initialization: half a page).
address@hidden <count> C-u
+Scroll <count> lines upward (default the number of the previous scroll;
+initialization: half a page).
address@hidden <count> C-f
+<count> pages forward.
address@hidden <count> C-b
+<count> pages backward (in older versions @kbd{C-b} only works without count).
address@hidden <count> z<cr>
address@hidden zH
+Put line <count> at the top of the window (default the current line).
address@hidden <count> z-
address@hidden zL
+Put line <count> at the bottom of the window
+(default the current line).
address@hidden <count> z.
address@hidden zM
+Put line <count> in the center of the window
+(default the current line).
address@hidden table
address@hidden @kbd{zM}
address@hidden @kbd{zL}
address@hidden @kbd{zH}
address@hidden @kbd{z<cr>}
address@hidden @kbd{z.}
address@hidden @kbd{z-}
address@hidden @kbd{z<cr>}
address@hidden @kbd{C-b}
address@hidden @kbd{C-f}
address@hidden @kbd{C-u}
address@hidden @kbd{C-d}
address@hidden @kbd{C-y}
address@hidden @kbd{C-e}
address@hidden @kbd{C-l}
address@hidden @kbd{C-g}
+
+
address@hidden File and Buffer Handling, Mapping, Display,Commands
address@hidden File and Buffer Handling
+
address@hidden multiple files
+
+In all file handling commands, space should be typed before entering the file
+name.  If you need to type a modifier, such as @kbd{>>} or @kbd{!}, don't
+put any space between the command and the modifier.
+
+Note that many Ex commands, e.g., @kbd{:w}, accept command arguments. The
+effect is that the command would start acting on the current region. For
+instance, if the current region spans the lines 11 through 22, then if you
+type @kbd{1:w} you would see @samp{:11,22w} in the minibuffer.
+
address@hidden @kbd
address@hidden :q
+Quit buffer except if modified.
address@hidden :q!
+Quit buffer without checking.  In Viper, these two commands
+are identical.  Confirmation is required if exiting modified buffers that
+visit files.
address@hidden :suspend
address@hidden :stop
+Suspend Viper
address@hidden :[x,y] w
+Write the file.  Viper makes sure that a final newline is always added to
+any file where this newline is missing.  This is done by setting Emacs
+variable @code{require-final-newline} to @code{t}.  If you don't like this
+feature, use @code{setq-default} to set @code{require-final-newline} to
address@hidden  This must be done in @file{.viper} file.
address@hidden :[x,y] w <name>
+Write to the file <name>.
address@hidden :[x,y] w>> <name>
+Append the buffer to the file <name>.  There should be no space between
address@hidden and @kbd{>>}.  Type space after the @kbd{>>} and see what 
happens.
address@hidden :w!@: <name>
+Overwrite the file <name>.  In Viper, @kbd{:w} and @kbd{:w!} are identical.
+Confirmation is required for writing to an existing file (if this is not
+the file the buffer is visiting) or to a read-only file.
address@hidden :x,y w <name>
+Write lines x through y to the file <name>.
address@hidden :wq
+Write the file and kill buffer.
address@hidden :r <file> [<file> ...]
+Read file into a buffer, inserting its contents after the current line.
address@hidden :xit
+Same as @kbd{:wq}.
address@hidden :Write
address@hidden :W
+Save all unsaved buffers, asking for confirmation.
address@hidden :WWrite
address@hidden :WW
+Like @kbd{W}, but without asking for confirmation.
address@hidden ZZ
+Save current buffer and kill it.  If user level is 1, then save all files
+and kill Emacs.  Killing Emacs is the wrong way to use it, so you should
+switch to higher user levels as soon as possible.
address@hidden :x [<file>]
+Save and kill buffer.
address@hidden :x!@: [<file>]
address@hidden:w![<file>]} and @kbd{:q}.
address@hidden :pre
+Preserve the file -- autosave buffers.
address@hidden :rec
+Recover file from autosave.
address@hidden :f [<file>]
+without the argument, prints file name and character/line information afout
+the currently visited file. With an argument, sets the currently visited
+filename to @file{file}.
address@hidden :cd [<dir>]
+Set the working directory to <dir> (default home directory).
address@hidden :pwd
+Print present working directory.
address@hidden :e [+<cmd>] <files>
+Edit files.  If no filename is given, edit the file visited by the current
+buffer.  If buffer was modified or the file changed on disk, ask for
+confirmation.  Unlike Vi, Viper allows @kbd{:e} to take multiple arguments.
+The first file is edited the same way as in Vi.  The rest are visited
+in the usual Emacs way.
address@hidden :e!@: [+<cmd>] <files>
+Re-edit file.  If no filename, re-edit current file.
+In Viper, unlike Vi, @kbd{e!} is identical to @kbd{:e}.  In both cases, the
+user is asked to confirm if there is a danger of discarding changes to a
+buffer.
address@hidden :q!
+Quit Vi without writing.
address@hidden C-^
+Edit the alternate (normally the previous) file.
address@hidden :rew
+Obsolete
address@hidden :args
+List files not shown anywhere with counts for next
address@hidden :n [count]  [+<cmd>] [<files>]
+Edit <count> file, or edit files.  The count comes from @kbd{:args}.  
address@hidden :N [count] [+<cmd>] [<files>] 
+Like @kbd{:n}, but the meaning of the variable
address@hidden is reversed.
address@hidden :b
+Switch to another buffer.  If @var{ex-cycle-other-window} is @code{t},
+switch in another window.  Buffer completion is supported.
+The variable @var{viper-read-buffer-function} controls which function is
+actually used to read the buffer name. The default is @code{read-buffer},
+but better alternatives are also available in Emacs (e.g.,
address@hidden).
address@hidden @var{viper-read-buffer-function}
address@hidden :B
+Like @kbd{:b}, but the meaning of @var{ex-cycle-other-window} is reversed.
address@hidden :<address>r <name>
+Read the file <name> into the buffer after the line <address>.
address@hidden v, V, C-v
+Edit a file in current or another window, or in another frame.  File name
+is typed in Minibuffer.  File completion and history are supported.
address@hidden table
address@hidden @kbd{v}
address@hidden @kbd{V}
address@hidden @kbd{:args}
address@hidden @kbd{:rew}
address@hidden @kbd{C-^}
address@hidden @kbd{:e!@: [<files>]}
address@hidden @kbd{:e [<files>]}
address@hidden @kbd{:edit [<files>]}
address@hidden @kbd{:edit!@: [<files>]}
address@hidden @kbd{:q!}
address@hidden @kbd{:q}
address@hidden @kbd{:quit}
address@hidden @kbd{:quit!}
address@hidden @kbd{:f}
address@hidden @kbd{:rec}
address@hidden @kbd{:r}
address@hidden @kbd{:read}
address@hidden @kbd{:pre}
address@hidden @kbd{ZZ}
address@hidden @kbd{:wq}
address@hidden @kbd{:w <file>}
address@hidden @kbd{:w!@: <file>}
address@hidden @kbd{:w >> <file>}
address@hidden @kbd{:write <file>}
address@hidden @kbd{:write!@: <file>}
address@hidden @kbd{:write >> <file>}
address@hidden @kbd{:W}
address@hidden @kbd{:WW}
address@hidden @kbd{:Write}
address@hidden @kbd{:WWrite}
address@hidden @kbd{:WWrite}
address@hidden @kbd{:x}
address@hidden @kbd{:x!}
address@hidden @kbd{:suspend}
address@hidden @kbd{:stop}
address@hidden @kbd{:n [<count> | <file>]}
address@hidden @kbd{:cd [<dir>]}
address@hidden @kbd{:pwd}
+
address@hidden Mapping, Shell Commands, File and Buffer Handling, Commands
address@hidden Mapping
+
address@hidden key bindings
address@hidden key mapping
+
address@hidden @kbd
address@hidden :map <string>
+Start defining a Vi-style keyboard macro.
+For instance, typing
address@hidden:map www} followed by @kbd{:!wc %} and then typing @kbd{C-x )}
+will cause @kbd{www} to run wc on
+current file (Vi replaces @samp{%} with the current file name).
address@hidden C-x )
+Finish defining a keyboard macro.
+In Viper, this command completes the process of defining all keyboard
+macros, whether they are Emacs-style or Vi-style.
+This is a departure from Vi, needed to allow WYSIWYG mapping of
+keyboard macros and to permit the use of function keys and arbitrary Emacs
+functions in the macros.
address@hidden :unmap <string>
+Deprive <string> of its mappings in Vi state.
address@hidden :map!@: <string>
+Map a macro for Insert state.
address@hidden :unmap!@: <string>
+Deprive <string> of its mapping in Insert state (see @kbd{:unmap}).
address@hidden @@<a-z>
+In Vi state,
+execute the contents of register as a command.
address@hidden @@@@
+In Vi state,
+repeat last register command.
address@hidden @@#
+In Vi state,
+begin keyboard macro.  End with @@<a-z>.  This will
+put the macro in the proper register.  Register will
+be automatically down-cased.
address@hidden and Registers}, for more info.
address@hidden @@!<a-z>
+In Vi state,
+yank anonymous macro to register
address@hidden *
+In Vi state,
+execute anonymous macro (defined by C-x( and C-x )).
address@hidden C-x e
+Like @kbd{*}, but works in all Viper states.
address@hidden #g<move>
+Execute the last keyboard macro for each line in the region.
address@hidden and Registers}, for more info.
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden table
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{#g<move>}
address@hidden @kbd{*}
address@hidden @kbd{@@!<a-z>}
address@hidden @kbd{@@#}
address@hidden @kbd{@@@@}
address@hidden @kbd{@@<a-z>}
address@hidden @kbd{:unmap <char>}
address@hidden @kbd{:map <char> <seq>}
address@hidden @kbd{:unmap!@: <char>}
address@hidden @kbd{:map!@: <char> <seq>}
+
address@hidden Shell Commands, Options, Mapping, Commands
address@hidden Shell Commands
+
address@hidden % (Current file)
+
+The symbol @samp{%} is used in Ex shell commands to mean current file.  If
+you want a @samp{%} in your command, it must be escaped as @samp{\%}.
address@hidden @samp{%} (Ex address)
+However if @samp{%} is the first character, it stands as the address for
+the whole file.
address@hidden @samp{#} (Previous file)
+Similarly, @samp{#} expands to the previous file.  The previous file is the
+first file in @kbd{:args} listing.  This defaults to the previous file in
+the VI sense if you have one address@hidden
+
+Symbols @samp{%} and @samp{#} are also used in the Ex commands @kbd{:e} and
address@hidden:r <shell-cmd>}.  The commands @kbd{:w} and the regular @kbd{:r
+<file>} command don't support these meta symbols, because file history is a
+better mechanism.
+
address@hidden shell commands
+
address@hidden @kbd
address@hidden :sh
+Execute a subshell in another window
address@hidden :[x,y]!<cmd>
+Execute a shell <cmd> [on lines x through y;
+% is replace by current file, \% is changed to %
address@hidden :[x,y]!!@: [<args>]
+Repeat last shell command [and append <args>].
address@hidden :!<cmd>
+Just execute command and display result in a buffer.
address@hidden :!!@: <args>
+Repeat last shell command and append <args>
address@hidden <count> !<move><cmd>
+The shell executes <cmd>, with standard
+input the lines described by <count><move>,
+next the standard output replaces those lines
+(think of @samp{cb}, @samp{sort}, @samp{nroff}, etc.).
address@hidden <count> !!<cmd>
+Give <count> lines as standard input to the
+shell <cmd>, next let the standard output
+replace those lines.
address@hidden :[x,y] w !<cmd>
+Let lines x to y be standard input for <cmd>
+(notice the <sp> between @kbd{w} and @kbd{!}).
address@hidden :<address>r !<cmd>
+Put the output of <cmd> after the line <address> (default current).
address@hidden :<address>r <name>
+Read the file <name> into the buffer after the line <address> (default
+current).
address@hidden :make
+Run the make command in the current directory.
address@hidden table
address@hidden @kbd{:<address>r <name>}
address@hidden @kbd{:<address>r !<cmd>}
address@hidden @kbd{!<cmd>}
address@hidden @kbd{!!<cmd>}
address@hidden @kbd{!<move><cmd>}
address@hidden @kbd{:w !<cmd>}
address@hidden @kbd{:x,y w !<cmd>}
address@hidden @kbd{:!!@: <args>}
address@hidden @kbd{:!<cmd>}
address@hidden @kbd{:sh}
address@hidden @kbd{:make}
+
address@hidden Options,Emacs Related Commands,Shell Commands,Commands
address@hidden Options
+
address@hidden Vi options
+
address@hidden @kbd
address@hidden autoindent
address@hidden ai
address@hidden autoindent
+autoindent -- In append mode after a <cr> the
+cursor will move directly below the first
+character on the previous line.
+This setting affects the current buffer only.
address@hidden autoindent-global
address@hidden ai-global
+Same as `autoindent', but affects all buffers.
address@hidden noautoindent
address@hidden noai
+Cancel autoindent.
address@hidden noautoindent-global
address@hidden noai-g
+Cancel autoindent-global.
address@hidden ignorecase
address@hidden ic
address@hidden case and searching
+ignorecase -- No distinction between upper and lower cases when searching.
address@hidden noignorecase
address@hidden noic
+Cancel ignorecase.
address@hidden magic
address@hidden ma
address@hidden literal searching
+Regular expressions used in searches; nomagic means no regexps.
address@hidden nomagic
address@hidden noma
+Cancel magic.
address@hidden readonly
address@hidden ro
address@hidden readonly files
+readonly -- The file is not to be changed.
+If the user attempts to write to this file, confirmation will be requested.
address@hidden noreadonly
address@hidden noro
+Cancel readonly.
address@hidden shell=<string>
address@hidden sh=<string>
address@hidden shell
+shell -- The program to be used for shell escapes
+(default @samp{$SHELL} (default @file{/bin/sh})).
address@hidden shiftwidth=<count>
address@hidden sw=<count>
address@hidden layout
address@hidden shifting text
+shiftwidth -- Gives the shiftwidth (default 8 positions).
address@hidden showmatch
address@hidden sm
address@hidden paren matching
address@hidden matching parens
+showmatch -- Whenever you append a @kbd{)}, Vi shows
+its match if it's on the same page; also with
address@hidden@{} and @address@hidden  If there's no match, Vi will beep.
address@hidden noshowmatch
address@hidden nosm
+Cancel showmatch.
address@hidden tabstop=<count>
address@hidden ts=<count>
address@hidden changing tab width
address@hidden tabbing
+tabstop -- The length of a <ht>; warning: this is
+only IN the editor, outside of it <ht>s have
+their normal length (default 8 positions).
+This setting affects the current buffer only.
address@hidden tabstop-global
address@hidden ts-g
+Same as `tabstop', but affects all buffers.
address@hidden wrapmargin=<count>
address@hidden wm=<count>
address@hidden auto fill
address@hidden word wrap
+wrapmargin -- In append mode Vi automatically
+puts a <lf> whenever there is a <sp> or <ht>
+within <wm> columns from the right margin.
address@hidden wrapscan
address@hidden ws
address@hidden searching
+wrapscan -- When searching, the end is
+considered @samp{stuck} to the begin of the file.
address@hidden nowrapscan
address@hidden nows
+Cancel wrapscan.
address@hidden :set <option>
+Turn <option> on.
address@hidden :set no<option>
+Turn <option> off.
address@hidden :set <option>=<value>
+Set <option> to <value>.
address@hidden table
address@hidden @kbd{:set <option>=<value>}
address@hidden @kbd{:set no<option>}
address@hidden @kbd{:set <option>}
address@hidden @kbd{:set ws}
address@hidden @kbd{:set wrapscan}
address@hidden @kbd{:set wm=<count>}
address@hidden @kbd{:set wrapmargin=<count>}
address@hidden @kbd{:set ts=<count>}
address@hidden @kbd{:set tabstop=<count>}
address@hidden @kbd{:set tab-stop-local=<count>}
address@hidden @kbd{:set sm}
address@hidden @kbd{:set showmatch}
address@hidden @kbd{:set sw=<count>}
address@hidden @kbd{:set shiftwidth=<count>}
address@hidden @kbd{:set sh=<string>}
address@hidden @kbd{:set shell=<string>}
address@hidden @kbd{:set ro}
address@hidden @kbd{:set readonly}
address@hidden @kbd{:set magic}
address@hidden @kbd{:set ic}
address@hidden @kbd{:set ignorecase}
address@hidden @kbd{:set ai}
address@hidden @kbd{:set autoindent}
+
address@hidden Emacs Related Commands,,Options,Commands
address@hidden Emacs Related Commands
+
address@hidden @kbd
address@hidden C-\
+Begin Meta command in Vi or Insert states.  Most often used as C-\ x (M-x).
+
+Note: Emacs binds @kbd{C-\} to a function that offers to change the
+keyboard input method in the multilingual environment.  Viper overrides this
+binding.  However, it is still possible to switch the input method by typing
address@hidden C-\} in the Vi command state and @kbd{C-z \ C-\} in the Insert 
state.
+Or you can use the MULE menu on the menubar.
address@hidden C-z
+In Insert and Replace states, prepare Viper to accept the next command and
+execute it as if Viper was in Vi state.  Then return to Insert state.
+
+In Vi state, switch to Emacs state; in Emacs state, switch to Vi state.
address@hidden C-c \
+Switches to Vi state for the duration of a single command.  Then goes back
+to the original Viper state.  Works from Vi, Insert, Replace, and Emacs states.
address@hidden C-x0
+Close Window
address@hidden C-x1
+Close Other Windows
address@hidden C-x2
+Split Window
address@hidden C-xo
+Move among windows
address@hidden C-xC-f
+Emacs find-file, useful in Insert state
address@hidden C-y
+Put back the last killed text.  Similar to Vi's @kbd{p}, but also works in
+Insert and Replace state.  This command doesn't work in Vi command state,
+since this binding is taken for something else.
address@hidden M-y
+Undoes the last @kbd{C-y} and puts another kill from the kill ring.
+Using this command, you can try may different kills until you find the one
+you need.
address@hidden table
address@hidden @kbd{M-y}
address@hidden @kbd{C-y}
address@hidden @kbd{C-xC-f}
address@hidden @kbd{C-xo}
address@hidden @kbd{C-x2}
address@hidden @kbd{C-x1}
address@hidden @kbd{C-x0}
address@hidden @kbd{C-z}
address@hidden @kbd{C-\}
address@hidden @kbd{C-c\}
+
address@hidden Mouse-bound Commands,,,Commands
address@hidden Mouse-bound Commands
+
+The following two mouse actions are normally bound to special search and
+insert commands in of Viper:
+
address@hidden @kbd
address@hidden S-Mouse-1 (Emacs)
address@hidden meta button1up (XEmacs)
+Holding Shift (or Meta, if XEmacs) and clicking mouse button 1 will
+initiate search for 
+a region under the mouse pointer.
+This command can take a prefix argument.  Note: Viper sets this
+binding only if this mouse action is not
+already bound to something else.
address@hidden Specials}, for more address@hidden
+
address@hidden S-Mouse-2 (Emacs)
address@hidden meta button2up (XEmacs)
+Holding Shift (or Meta, if XEmacs) and clicking button 2 of the mouse will
+insert a region surrounding the mouse pointer.
+This command can also take a prefix argument.
+Note: Viper sets this binding only if this mouse action is not
+already bound to something else.
address@hidden Specials}, for more address@hidden
address@hidden table
address@hidden @kbd{S-Mouse-1}
address@hidden @kbd{S-Mouse-2}
address@hidden @kbd{meta button1up}
address@hidden @kbd{meta button2up}
+
address@hidden Acknowledgments,,,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Acknowledgments
+
+Viper, formerly known as VIP-19, was written by Michael Kifer.  Viper is
+based on the original VIP package by Masahiko Sato and on its enhancement,
+VIP 4.4, by Aamod Sane.  This manual is an adaptation of the manual for VIP
+4.4, which, in turn, was based on Sato's manual for VIP 3.5.
+
+Many contributors on the Net pointed out bugs and suggested a number of
+useful features. Scott Bronson and Samuel Padgett contributed patches that
+were incorporated in this code.  Here is a hopefully complete list of
+contributors:
+
address@hidden
+aaronl@@vitelus.com (Aaron Lehmann),
+ahg@@panix.com (Al Gelders),
+amade@@diagram.fr (Paul-Bernard Amade),
+ascott@@fws214.intel.com (Andy Scott),
+bronson@@trestle.com (Scott Bronson),
+cook@@biostat.wisc.edu (Tom Cook),
+csdayton@@midway.uchicago.edu (Soren Dayton),
+dave@@hellgate.utah.edu,
+dm@@scs.cs.nyu.edu (David Mazieres),
+dominik@@strw.LeidenUniv.nl (Carsten Dominik),
+dwallach@@cs.princeton.edu (Dan Wallach),
+dwight@@toolucky.llnl.gov (Dwight Shih),
+dxc@@xprt.net (David X Callaway),
+edmonds@@edmonds.home.cs.ubc.ca (Brian Edmonds),
+gin@@mo.msk.ru (Golubev I.N.),
+gviswana@@cs.wisc.edu (Guhan Viswanathan),
+gvr@@halcyon.com (George V.@: Reilly),
+hatazaki@@bach.convex.com (Takao Hatazaki),
+hpz@@ibmhpz.aug.ipp-garching.mpg.de (Hans-Peter Zehrfeld),
+jackr@@dblues.engr.sgi.com (Jack Repenning),
+jamesm@@bga.com (D.J.@: Miller II),
+jjm@@hplb.hpl.hp.com (Jean-Jacques Moreau),
+jl@@cse.ogi.edu (John Launchbury),
+jobrien@@hchp.org (John O'Brien),
+johnw@@borland.com (John Wiegley),
+kanze@@gabi-soft.fr (James Kanze),
+kin@@isi.com (Kin Cho),
+kwzh@@gnu.org (Karl Heuer),
+lindstro@@biostat.wisc.edu (Mary Lindstrom),
+minakaji@@osaka.email.ne.jp (Mikio Nakajima),
+Mark.Bordas@@East.Sun.COM (Mark Bordas),
+meyering@@comco.com (Jim Meyering),
+martin@@xemacs.org (Martin Buchholz),
+mbutler@@redfernnetworks.com (Malcolm Butler),
+mveiga@@dit.upm.es (Marcelino Veiga Tuimil),
+paulk@@summit.esg.apertus.com (Paul Keusemann),
+pfister@@cs.stonybrook.edu (Hanspeter Pfister),
+phil_brooks@@MENTORG.COM (Phil Brooks),
+pogrell@@informatik.hu-berlin.de (Lutz Pogrell),
+pradyut@@cs.uchicago.edu (Pradyut Shah),
+roderick@@argon.org (Roderick Schertler),
+rxga@@ulysses.att.com,
+sawdey@@lcse.umn.edu (Aaron Sawdey),
+simonb@@prl.philips.co.uk (Simon Blanchard),
+spadgett1@@nc.rr.com (Samuel Padgett),
+stephen@@farrell.org (Stephen Farrell),
+sudish@@MindSpring.COM (Sudish Joseph),
+schwab@@issan.informatik.uni-dortmund.de (Andreas Schwab)
+terra@@diku.dk (Morten Welinder),
+thanh@@informatics.muni.cz (Han The Thanh),
+toma@@convex.convex.com,
+vrenjak@@sun1.racal.com (Milan Vrenjak),
+whicken@@dragon.parasoft.com (Wendell Hicken),
+zapman@@cc.gatech.edu (Jason Zapman II),
address@hidden example
+
+
address@hidden Key Index,Function Index,,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Key Index
+
address@hidden ky
+
address@hidden Function Index,Variable Index,Key Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Function Index
+
address@hidden fn
+
address@hidden Variable Index,Package Index,Function Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Variable Index
+
address@hidden vr
+
address@hidden Package Index,Concept Index,Variable Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Package Index
+
address@hidden pg
+
address@hidden Concept Index,,Package Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Concept Index
+
address@hidden cp
+
address@hidden odd
address@hidden
address@hidden

Index: misc/res_info/texi_templates/templates.2
===================================================================
RCS file: misc/res_info/texi_templates/templates.2
diff -N misc/res_info/texi_templates/templates.2

Index: misc/res_info/texi_templates/templates.passfirst
===================================================================
RCS file: misc/res_info/texi_templates/templates.passfirst
diff -N misc/res_info/texi_templates/templates.passfirst
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_info/texi_templates/templates.passfirst    2 Aug 2009 13:13:19 
-0000       1.1
@@ -0,0 +1,725 @@
+templates.texi(,2) @c %**start of header
+templates.texi(,3) @setfilename templates.info
+templates.texi(,4) @documentencoding iso-8859-1
+templates.texi(,5) @documentlanguage en
+templates.texi(,6) @settitle  Emacs template package documentation, version 
3.1c
+templates.texi(,7) @c %**end of header
+templates.texi(,8) @alias kbdmenu = kbd
+templates.texi(,9) @alias codetpl = samp
+templates.texi(,10) @alias codevar = code
+templates.texi(,11) 
+templates.texi(,20) 
+templates.texi(,21) @dircategory Emacs
+templates.texi(,22) @direntry
+templates.texi(,23) * Templates: (templates). Creating templates for files 
creation.
+templates.texi(,24) @end direntry
+templates.texi(,25) 
+templates.texi(,26) 
+templates.texi(,40) 
+templates.texi(,42) @node Top,,,(dir)top
+templates.texi(,43) @top Top node.
+templates.texi(,44) 
+templates.texi(,45) This is the manual of Emacs template package
+templates.texi(,47) 
+templates.texi(,48) @menu
+templates.texi(,49) * Overview:: Overview.
+templates.texi(,50) * Installation:: how to install the template package.
+templates.texi(,51) * Basics:: How to make and use templates.
+templates.texi(,52) * Advanced:: Templates for advanced users.
+templates.texi(,53) * Indexes:: Indexes for commands, keyword, and variable.
+templates.texi(,54) * News:: News for Package Template.
+templates.texi(,55) * Acknowledgements:: Acknowledgements.
+templates.texi(,56) @end menu
+templates.texi(,57) 
+templates.texi(,58) @node Overview,,,Top
+templates.texi(,59) @chapter Overview
+templates.texi(,60) 
+templates.texi(,61) When you create a new file with Emacs, package Template 
supplies an initial
+templates.texi(,62) buffer content via a template: a file with normal text and 
expansion forms.
+templates.texi(,63) There is a menu to easily create such templates.  You can 
also use new commands
+templates.texi(,64) to decorate comments and update the buffer contents.
+templates.texi(,65) 
+templates.texi(,66) 
+templates.texi(,67) The main difference between Template and 
@ref{Related,other similar
+templates.texi(,68) packages} is that you can define very flexible templates 
without having
+templates.texi(,69) to learn Lisp or changing your Emacs init file.  This 
package does not
+templates.texi(,70) help Lisp programmers to define complex macros.
+templates.texi(,71) 
+templates.texi(,72) @itemize
+templates.texi(,73) @item
+templates.texi(,74) The template mechanism is hooked into the normal find/open 
file command.  There
+templates.texi(,75) are also new commands for creating a new file using a 
template and inserting &amp;
+templates.texi(,76) expanding a template.
+templates.texi(,77) @item
+templates.texi(,78) You do not have to enter the file name of the template 
file.  This package uses
+templates.texi(,79) a sophisticated search to find the most appropritate 
template (supporting
+templates.texi(,80) project- and subproject specific template files).  You can 
change the
+templates.texi(,81) suggestion, of course.
+templates.texi(,82) @item
+templates.texi(,83) A template file can be easily created.  Most of the file 
usually contains
+templates.texi(,84) simple text; only @dfn{expansion forms} which look like
+templates.texi(,85) @samp{(>>>@var{Key}<<<)} will get replaced.
+templates.texi(,86) @item
+templates.texi(,87) There are various useful predefined expansions: set point 
(the cursor
+templates.texi(,88) position), mark and registers to the current position; 
insert various parts of
+templates.texi(,89) the filename, the user/system name, the current date/time 
in various formats,
+templates.texi(,90) and some text to be entered by the user.
+templates.texi(,91) @item
+templates.texi(,92) Template-specific expansions can be defined at the end of 
the template file.
+templates.texi(,93) There are commands to create these definitions; only 
complex expansions would
+templates.texi(,94) require some knowledge of Lisp.
+templates.texi(,95) @end itemize
+templates.texi(,96) 
+templates.texi(,97) There is a menu to support the creation of template files. 
 Additionally, this
+templates.texi(,98) package provides the following features:
+templates.texi(,99) 
+templates.texi(,100) @itemize
+templates.texi(,101) @item
+templates.texi(,102) When saving a buffer, some parts of the buffer contents 
(header and time
+templates.texi(,103) stamps) are automatically updated if necessary.
+templates.texi(,104) @item
+templates.texi(,105) There are commands to decorate comments with dashes and 
alike.  Works for
+templates.texi(,106) languages with any comment style, even languages having 
mixed comments like C++
+templates.texi(,107) and Java.
+templates.texi(,108) @end itemize
+templates.texi(,109) 
+templates.texi(,110) 
+templates.texi(,111) @node Related,,,Overview
+templates.texi(,112) @section Packages Related to Template
+templates.texi(,113) 
+templates.texi(,114) 
+templates.texi(,115) There are template packages of two different categories, 
which are determined
+templates.texi(,116) by one question:
+templates.texi(,117) 
+templates.texi(,118) @emph{What do you want to do with templates?} Do you want 
to use templates
+templates.texi(,119) when creating new files, or do you want to insert some 
stuff during editing
+templates.texi(,120) (but you are not satisfied with the standard macro 
mechanism)?
+templates.texi(,121) 
+templates.texi(,122) Well, templates could be seen as both new-file templates 
and macro-like
+templates.texi(,123) template, but the main application of templates 
determines the answers for the
+templates.texi(,124) following questions:
+templates.texi(,125)       
+templates.texi(,126) @itemize
+templates.texi(,127) @item
+templates.texi(,128) @emph{How do you define a template?} You can define it by 
one file per
+templates.texi(,129) template or by customizing some Emacs variables.  The 
first solution (which is
+templates.texi(,130) used by package Template) avoids Emacs hacking but might 
not be optimal if you
+templates.texi(,131) just want to define complex macros or if you want to use 
templates to program a
+templates.texi(,132) new Emacs major-mode.
+templates.texi(,133) @item
+templates.texi(,134) @emph{How is an appropriate template selected?} If you 
want to use complex
+templates.texi(,135) macro during editing, the answer is clear: the user have 
to provide the name of
+templates.texi(,136) the template.  For new files, the appropriate template 
should be automatically
+templates.texi(,137) selected.  But of course, you don't want to loose any 
flexibility and you don't
+templates.texi(,138) want to customize your Emacs for every project you start.
+templates.texi(,139) @item
+templates.texi(,140) @emph{How do you do "clever" things in the template?} The 
aims are to have
+templates.texi(,141) many predefined expansions (e.g., the current date) and 
to define some
+templates.texi(,142) non-trivial things without learning Lisp.  Any 
functionality here is the
+templates.texi(,143) overlapping point of both template categories.
+templates.texi(,144) @end itemize
+templates.texi(,145) 
+templates.texi(,146) 
+templates.texi(,147) 
+templates.texi(,148) Here is a little list of related files, collected around 
1998, some discarded
+templates.texi(,149) later (no @abbr{URL}s, no active updating, but you can 
send me a mail):
+templates.texi(,150) 
+templates.texi(,151) @itemize
+templates.texi(,152) @item
+templates.texi(,153) Package @cite{autoinsert.el} uses templates when creating 
new files.
+templates.texi(,154) These templates are defined via files or by customizing 
Emacs.  For each new
+templates.texi(,155) template you want to introduce, you must customize your 
Emacs, the selection is
+templates.texi(,156) restricted to one template per major-mode or regexp 
match.  No predefined
+templates.texi(,157) expansions; clever things are provided by usual Lisp 
expressions or the
+templates.texi(,158) macro-like templates of package @cite{skeleton}.
+templates.texi(,159) @item
+templates.texi(,160) Package @cite{skeleton.el} is a Lisp language extension 
for
+templates.texi(,161) writing statement skeletons, i.e., you get macro-like 
Lisp commands.
+templates.texi(,162) @item
+templates.texi(,163) Package @cite{tempo.el} helps you defining and using 
named macro-like
+templates.texi(,164) templates.  Its predefined macros are similar to some 
predefined expansions of
+templates.texi(,165) package Template.  A specific template is used by
+templates.texi(,166) <code class="lisp">html-helper-mode</code> when creating 
a new html file.
+templates.texi(,167) (This is turned off with the default installation of 
package Template.)
+templates.texi(,168) @item
+templates.texi(,169) Package @cite{hm--html-menus} provides a command to 
insert templates
+templates.texi(,170) editing.  These templates are defined via files.  There 
are no predefined
+templates.texi(,171) expansions (except setting point), non-trivial expansions 
are defined via Lisp.
+templates.texi(,172) @end itemize
+templates.texi(,173) 
+templates.texi(,174) 
+templates.texi(,175) 
+templates.texi(,176) 
+templates.texi(,177) @node Installation,,,Top
+templates.texi(,178) @chapter Installation
+templates.texi(,179) 
+templates.texi(,180) @section Installation Instructions
+templates.texi(,181) 
+templates.texi(,182) @enumerate
+templates.texi(,183) @item
+templates.texi(,184) Copy file @file{template/lisp/template.el} into your
+templates.texi(,185) load-path and byte-compile it.
+templates.texi(,186) @item
+templates.texi(,187) Insert the following code into your Emacs init file
+templates.texi(,188) (@file{~/.emacs}):
+templates.texi(,189) 
+templates.texi(,190) @lisp
+templates.texi(,191) (require 'template)
+templates.texi(,192) (template-initialize)
+templates.texi(,193) @end lisp
+templates.texi(,194) 
+templates.texi(,195) @item
+templates.texi(,196) If you want to customize package Template, use @kbd{M-x
+templates.texi(,197) customize-group @key{RET} template
+templates.texi(,198) @key{RET}} or the customize entry in menu
+templates.texi(,199) @kbd{Options}.
+templates.texi(,200) @item
+templates.texi(,201) You might want to copy the template files from directory
+templates.texi(,202) @file{template/templates/} to
+templates.texi(,203) @file{~/.templates/} and change them according to your
+templates.texi(,204) preferences.
+templates.texi(,205) @end enumerate
+templates.texi(,206) 
+templates.texi(,207) 
+templates.texi(,208) Installation instructions with further explanations can 
be found in file
+templates.texi(,209) @file{template/INSTALL} of the distribution.
+templates.texi(,210) 
+templates.texi(,211)  
+templates.texi(,212) 
+templates.texi(,213) @node Basics,,,Top
+templates.texi(,214) @chapter Basics
+templates.texi(,215) 
+templates.texi(,216) Emacs, template, file template, comment decoration, 
auto-updating, time stamp, details
+templates.texi(,217) 
+templates.texi(,218) @menu
+templates.texi(,219) * menus:: Menus and Key-Bindings.
+templates.texi(,220) * using:: Using a Template.
+templates.texi(,221) * finding:: Finding a Template.
+templates.texi(,222) * creating:: Creating a Template.
+templates.texi(,223) * decorating:: Decorating a Comment.
+templates.texi(,224) * updating:: Updating a Buffer.
+templates.texi(,225) @end menu
+templates.texi(,226) 
+templates.texi(,227) @node menus,,,Basics
+templates.texi(,228) @section  Menus and Key-Bindings
+templates.texi(,229) @c 
--------------------------------------------------------------------------------
+templates.texi(,230) For Emacs-21.1+ and XEmacs, this package defines the 
following menu entries and
+templates.texi(,231) key-bindings: 
+templates.texi(,232) 
+templates.texi(,233) @itemize
+templates.texi(,234) @item
+templates.texi(,235) In menu @kbd{File} , there is a new menu item @kbd{New 
File
+templates.texi(,236) Using Template...}  .  The corresponding command is also 
bound to the
+templates.texi(,237) key sequence @kbd{C-x t}.
+templates.texi(,238) @item
+templates.texi(,239) At the end of menu @kbd{Cmds} (in XEmacs if it exists) or 
menu
+templates.texi(,240)  @kbd{Edit} , there is a new submenu @kbd{Template 
Creation}.
+templates.texi(,241) @item
+templates.texi(,242) Enter @kbd{C-x C-=} (command 
@command{template-single-comment}) to
+templates.texi(,243) insert dashes and alike into the current line and end the 
comment.
+templates.texi(,244) @item
+templates.texi(,245) Enter @kbd{C-x C-;} (command 
@command{template-single-comment}) to
+templates.texi(,246) insert dashes and alike around the current comment block.
+templates.texi(,247) @item
+templates.texi(,248) At the end of menu @kbd{Edit} , there is a new submenu
+templates.texi(,249) @kbd{Comment}.  It also contains the two commands just 
mentioned.
+templates.texi(,250) @end itemize
+templates.texi(,251) 
+templates.texi(,252) @c 
--------------------------------------------------------------------------------
+templates.texi(,253) @node using,,,Basics
+templates.texi(,254) @section  Using a Template
+templates.texi(,255) @c 
--------------------------------------------------------------------------------
+templates.texi(,256) Package Template offers various ways how to use template 
files:
+templates.texi(,257) 
+templates.texi(,258) In Emacs, the usual way to create a new file is by typing 
@kbd{C-x C-f},
+templates.texi(,259) using the menu or the toolbar (running command 
@command{find-file} or
+templates.texi(,260) @command{ffap}) and entering a non-existent file name.  
In this case,
+templates.texi(,261) you will be asked whether to use a template for the new 
file.  You can
+templates.texi(,262) turn off this feature.
+templates.texi(,263) 
+templates.texi(,264) @itemize
+templates.texi(,265) @item
+templates.texi(,266) Here a first undefined xref @xref{EExpansion}.
+templates.texi(,267) There is a new command @command{template-new-file} 
@footnote{for the
+templates.texi(,268) menu entry and its key-binding type @kbd{C-h f 
template-new-file},
+templates.texi(,269) @xref{EExpansion}} to create a new file using a template. 
 Here, you have
+templates.texi(,270) the chance to edit the name of the template file.  This 
command also
+templates.texi(,271) supports file name refinement which is useful to create a 
file in a
+templates.texi(,272) series of files like @file{exercise2.tex} etc.
+templates.texi(,273) @item
+templates.texi(,274) There is also a command (@kbd{M-x 
template-expand-template})
+templates.texi(,275) to insert a template file into the current buffer and 
expand its expansion
+templates.texi(,276) forms.
+templates.texi(,277) @end itemize
+templates.texi(,278) 
+templates.texi(,279) 
+templates.texi(,280) For more @command{template-new-file} and 
@code{template-auto-insert},
+templates.texi(,281)  @xref{Expansion}.
+templates.texi(,282) 
+templates.texi(,283) @c 
--------------------------------------------------------------------------------
+templates.texi(,284) 
+templates.texi(,285) @node finding,,,Basics
+templates.texi(,286) @section  Finding a Template
+templates.texi(,287) @c 
--------------------------------------------------------------------------------
+templates.texi(,288) The algorithm for finding the most appropriate template 
can be best explained
+templates.texi(,289) with a little example:
+templates.texi(,290) 
+templates.texi(,291) @itemize
+templates.texi(,292) @item
+templates.texi(,293) You have a project @file{~/proj/} with subprojects 
@file{foo/} and
+templates.texi(,294) @file{bar/} containing @file{.java} files.
+templates.texi(,295) @item
+templates.texi(,296) You want to define a general template for the 
@file{.java} in your
+templates.texi(,297) project files, although @file{.java} files in subproject 
@file{foo/}
+templates.texi(,298) should use their own template.  You also want to define a 
special
+templates.texi(,299) template for all files @file{proj.java} in the project.
+templates.texi(,300) @item
+templates.texi(,301) Since you do not want to clutter the project directory 
with template
+templates.texi(,302) files, you first create a directory 
@file{~/proj/Templates/}.  In this
+templates.texi(,303) directory, you create new files @file{TEMPLATE.java.tpl} 
and
+templates.texi(,304) @file{proj.java.tpl}.  In directory @file{~/proj/foo/}, 
you create a new
+templates.texi(,305) file @file{TEMPLATE.java.tpl}.
+templates.texi(,306) @end itemize
+templates.texi(,307) 
+templates.texi(,308) The creation of the template files in the right directory 
is already enough for
+templates.texi(,309) packages Template to find the most appropriate template 
for a new file:
+templates.texi(,310) 
+templates.texi(,311) @itemize
+templates.texi(,312) @item
+templates.texi(,313) If you create a new file @file{~/proj/foo/abc.java}, this 
package tries
+templates.texi(,314) to find a template based on the file extension of the new 
file.  The
+templates.texi(,315) generic base file name for a template is @file{TEMPLATE} 
and the
+templates.texi(,316) additional extension is @file{.tpl}, a file 
@file{TEMPLATE.java.tpl}
+templates.texi(,317) exists in @file{~/proj/foo/}, so that file is used as the 
template.
+templates.texi(,318) @item
+templates.texi(,319) If you create a new file @file{~/proj/bar/abc.java}, this 
package again
+templates.texi(,320) tries to find @file{TEMPLATE.java.tpl}.  Since this file 
doesn't exist
+templates.texi(,321) in @file{~/proj/bar/}, it first inspects the subdirectory
+templates.texi(,322) @file{Templates/} which doesn't exist.  The search 
continues with the
+templates.texi(,323) parent directory @file{~/proj/} and then its subdirectory
+templates.texi(,324) @file{Templates/}.  Thus 
@file{~/proj/Templates/TEMPLATE.java.tpl} will
+templates.texi(,325) be used.
+templates.texi(,326) @item
+templates.texi(,327) If you create a new file @file{~/proj/foo/proj.java}, 
this package finds
+templates.texi(,328) a template file with the same base name: it uses
+templates.texi(,329) @file{~/proj/Templates/proj.java.tpl}.  You might argue 
that
+templates.texi(,330) @file{~/proj/foo/TEMPLATE.java.tpl} resides in a more 
specific
+templates.texi(,331) directory, but having the same base name is considered to 
be more
+templates.texi(,332) important (remember that some file like Makefiles do not 
have file
+templates.texi(,333) extensions).
+templates.texi(,334) @item
+templates.texi(,335) If you create a new file 
@file{~/other_proj/foo/proj.java}, i.e., a
+templates.texi(,336) project where you have defined no template files, this 
package uses one
+templates.texi(,337) of the default templates, in this case
+templates.texi(,338) @file{~/.templates/TEMPLATE.java.tpl}.
+templates.texi(,339) @end itemize
+templates.texi(,340) 
+templates.texi(,341) For more on derivation @xref{Derivation}.
+templates.texi(,342) 
+templates.texi(,343) @c 
--------------------------------------------------------------------------------
+templates.texi(,344) 
+templates.texi(,345) @node creating,,,Basics
+templates.texi(,346) @section  Creating a Template
+templates.texi(,347) @c 
--------------------------------------------------------------------------------
+templates.texi(,348) 
+templates.texi(,349) There are various predefined expansions which are 
probably enough for
+templates.texi(,350) most templates.  A corresponding expansion forms can be 
easily inserted
+templates.texi(,351) by selecting the appropriate entry in the new submenu  
@kbd{Template
+templates.texi(,352) Creation}
+templates.texi(,353) :
+templates.texi(,354) 
+templates.texi(,355) @itemize
+templates.texi(,356) @item
+templates.texi(,357) Remember positions: use @samp{(>>>POINT<<<)} to set point 
(the cursor
+templates.texi(,358) position), @samp{(>>>MARK<<<)} to set mark (e.g., the 
opposite position
+templates.texi(,359) when a region is highlighted), and @samp{(>>>1<<<)} to 
@samp{(>>>0<<<)}
+templates.texi(,360) to registers to the current position.  Remember that 
@kbd{C-x r j
+templates.texi(,361) @var{Key}} jumps to the position stored in register 
@var{Key}.
+templates.texi(,362) @item
+templates.texi(,363) 
+templates.texi(,364) Insert parts of the file name, e.g., when creating the 
new file
+templates.texi(,365) @file{~/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is 
replaced by
+templates.texi(,366) @file{/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by 
@file{abc1.java},
+templates.texi(,367) @samp{(>>>FILE_SANS<<<)} by @file{abc1} , 
@samp{(>>>FILE_UPCASE<<<)} by
+templates.texi(,368) @file{ABC1} , @samp{(>>>FILE_RAW<<<)} by @file{abc},
+templates.texi(,369) @samp{(>>>FILE_NUM<<<)} by @file{1} , and 
@samp{(>>>FILE_EXT<<<)} by
+templates.texi(,370) @file{java}.
+templates.texi(,371) @item
+templates.texi(,372) Insert the current date/time in two customizable and 
three fixed
+templates.texi(,373) formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
+templates.texi(,374) @samp{(>>>TIME<<<)} for @samp{20:01:13} , 
@samp{(>>>YEAR<<<)} for
+templates.texi(,375) @samp{2002} , @samp{(>>>ISO_DATE<<<)} for 
@samp{2002-02-20} , and
+templates.texi(,376) @samp{(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
+templates.texi(,377) @item
+templates.texi(,378) Insert the user/system name in various formats: use
+templates.texi(,379) @samp{(>>>AUTHOR<<<)} for @email{Christoph Wedler
+templates.texi(,380) <wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
+templates.texi(,381) @samp{Christoph Wedler} , @samp{(>>>LOGIN_NAME<<<)} for 
@samp{wedler} ,
+templates.texi(,382) and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} 
.
+templates.texi(,383) @item
+templates.texi(,384) Ask the user for some initial comment.  If this expansion 
is used, the buffer
+templates.texi(,385) for the new file will be marked as modified.  For each 
undefined expansion, the
+templates.texi(,386) user is also asked.
+templates.texi(,387) @item
+templates.texi(,388) Disabling the search for expansion forms:
+templates.texi(,389) @samp{(>>>ZERO_FORM<<<)} can be inserted into a string 
which
+templates.texi(,390) will be otherwise regarded as an expansion form, the 
region between
+templates.texi(,391) @samp{(>>>LITERAL<<<)} and the first
+templates.texi(,392) @samp{(>>>/LITERAL<<<)} after it will be skipped.
+templates.texi(,393) @end itemize
+templates.texi(,394)     
+templates.texi(,395) You can define your own expansions in your Emacs init 
file and at the end of a
+templates.texi(,396) template file.  A corresponding definition can be easily 
inserted by selecting
+templates.texi(,397) the appropriate entry in the new submenu  @kbd{Template
+templates.texi(,398) Creation}:
+templates.texi(,399)     
+templates.texi(,400) @itemize
+templates.texi(,401) 
+templates.texi(,402) @item
+templates.texi(,403) @kbd{Define User Input}
+templates.texi(,404) .  Ask the user to insert some text
+templates.texi(,405) using some specific prompt.  Optionally, ask for a text 
with completion, or for
+templates.texi(,406) a sequence of user input (exit with empty input).
+templates.texi(,407) @item
+templates.texi(,408) @kbd{Define Text Register} 
+templates.texi(,409) .  Define a text for
+templates.texi(,410) register @var{Reg} which can be inserted with @kbd{C-x r 
i @var{Reg}}.
+templates.texi(,411) Optionally, provide a comment for it which will be 
temporarily shown at
+templates.texi(,412) point.
+templates.texi(,413) @item
+templates.texi(,414) @kbd{Define Message}
+templates.texi(,415) .  Define a message which will be
+templates.texi(,416) temporarily shown at point or before/after the expansion 
in a special buffer.
+templates.texi(,417) There is also a computed message in the echo area.
+templates.texi(,418) @item
+templates.texi(,419) 
+templates.texi(,420) Execute some Lisp coding defined at the end of the 
template.  By default, you
+templates.texi(,421) have to confirm it first, since it is insecure to execute 
unchecked coding.
+templates.texi(,422) (You do not have menu support to define this kind of 
expansion.)
+templates.texi(,423) @end itemize
+templates.texi(,424) 
+templates.texi(,425) @defopt template-default-expansion-alist
+templates.texi(,426) @end defopt
+templates.texi(,427) @defopt template-definition-start
+templates.texi(,428) @end defopt
+templates.texi(,429) 
+templates.texi(,430)     
+templates.texi(,431) @c 
--------------------------------------------------------------------------------
+templates.texi(,432) 
+templates.texi(,433) @node decorating,,,Basics
+templates.texi(,434) @section  Decorating a Comment
+templates.texi(,435) @c 
--------------------------------------------------------------------------------
+templates.texi(,436) 
+templates.texi(,437) There are commands to decorate comments with dashes and 
alike (@samp{-},
+templates.texi(,438) @samp{=} and @samp{#} by default).  Both commands are 
included in the
+templates.texi(,439) new submenu @kbd{Comments} 
+templates.texi(,440) and bound to keys:
+templates.texi(,441) 
+templates.texi(,442) @itemize
+templates.texi(,443) @item
+templates.texi(,444) Use command @code{template-single-comment} to jump to the
+templates.texi(,445) end of the current line and insert the dashes and the 
final
+templates.texi(,446) comment end-string up-to the fill position.  This command 
works with any
+templates.texi(,447) comment style, including for languages having mixed 
comments like C++ and Java.
+templates.texi(,448) It also works in major modes without a defined comment 
syntax.
+templates.texi(,449) @item
+templates.texi(,450) Use command @code{template-block-comment} to surround the
+templates.texi(,451) current comment block (i.e., contiguous comment lines) 
with extra lines
+templates.texi(,452) containing dashes and alike and to put the correct number 
of newlines around
+templates.texi(,453) the block.  This command only works with comments which 
are terminated with the
+templates.texi(,454) end of the line (like Java's @code{//address@hidden code 
class=text
+templates.texi(,455)  comment).
+templates.texi(,456) @end itemize
+templates.texi(,457) 
+templates.texi(,458) The comment decoration style is highly customizable and 
can be controlled by
+templates.texi(,459) 
+templates.texi(,460) @itemize
+templates.texi(,461) @item
+templates.texi(,462) The prefix argument given to the two commands.
+templates.texi(,463) @item
+templates.texi(,464) The existing comment decoration style when present.
+templates.texi(,465) @item
+templates.texi(,466) Determined by the indentation or the repetition of a 
single-character comment
+templates.texi(,467) start (like Emacs-Lisp's @code{;address@hidden code 
class=text
+templates.texi(,468) ).
+templates.texi(,469) @end itemize
+templates.texi(,470) 
+templates.texi(,471) For more on comments @xref{Comments}.
+templates.texi(,472) 
+templates.texi(,473) @c 
--------------------------------------------------------------------------------
+templates.texi(,474) 
+templates.texi(,475) @node updating,,,Basics
+templates.texi(,476) @section  Updating a Buffer
+templates.texi(,477) @c 
--------------------------------------------------------------------------------
+templates.texi(,478) A buffer is automatically updated according to some rules 
when saving
+templates.texi(,479) the file.  This updating can be invoked explicitly by 
selecting the menu
+templates.texi(,480) entry @kbd{Update Buffer} in the new submenu 
@kbd{Comments} .
+templates.texi(,481) 
+templates.texi(,482) @itemize
+templates.texi(,483) @item
+templates.texi(,484) Update the file name in the first three lines of the 
buffer if the file name is
+templates.texi(,485) indicated by @code{@@(#) @address@hidden code class=text
+templates.texi(,486)  or
+templates.texi(,487) @code{;;; @var{FileName} address@hidden code class=text
+templates.texi(,488)  where
+templates.texi(,489) @code{;;;address@hidden code class=text
+templates.texi(,490)  stands for any comment start (with optional
+templates.texi(,491) repetition of a single-character comment start).
+templates.texi(,492) @item
+templates.texi(,493) Update the date if it is the last text inside the
+templates.texi(,494) @address@hidden code class=html
+templates.texi(,495)  element of a HTML buffer.
+templates.texi(,496) @item
+templates.texi(,497) Automatic updating is optional, as is user confirmation 
for it.  Automatic
+templates.texi(,498) updating can be disabled for buffers whose file name 
matches a regular
+templates.texi(,499) expression.
+templates.texi(,500) @item
+templates.texi(,501) If nothing will be changed by the updating, there will be 
no user confirmation
+templates.texi(,502) and the buffer will not be marked as modified.
+templates.texi(,503) @end itemize
+templates.texi(,504) 
+templates.texi(,505) @defopt template-update-buffer
+templates.texi(,506) @end defopt
+templates.texi(,507) @defopt template-auto-update
+templates.texi(,508) @end defopt
+templates.texi(,509) @defopt template-update-buffer-alist
+templates.texi(,510) @end defopt
+templates.texi(,511) @defopt template-header-regexp-alist
+templates.texi(,512) @end defopt
+templates.texi(,513) 
+templates.texi(,514) @node Advanced,,,Top  
+templates.texi(,515) @chapter Templates for advanced users
+templates.texi(,516) 
+templates.texi(,517) @menu
+templates.texi(,518) * Customization:: Templates customization.
+templates.texi(,519) @end menu
+templates.texi(,520) 
+templates.texi(,521) @node Customization,,,Advanced
+templates.texi(,522) @section Templates customization
+templates.texi(,523) 
+templates.texi(,524) @menu
+templates.texi(,525) * Expansion:: Customization of keyword expansion rules.
+templates.texi(,526) * Derivation:: Customization of how templates are derived.
+templates.texi(,527) * Comments:: Customization of comments.
+templates.texi(,528) @end menu
+templates.texi(,529) 
+templates.texi(,530) @node Expansion,,,Customization
+templates.texi(,531) @subsection Customization of keyword expansion rules
+templates.texi(,532) 
+templates.texi(,533) @deffn {Interactive Command} template-new-file {file 
template with-undo}
+templates.texi(,534) Open a new file @var{file} by using a @var{template}.
+templates.texi(,535) Using a template for creating a new file consists of, 
steps 1 to 3 are
+templates.texi(,536) only executed when called interactively:
+templates.texi(,537) @enumerate
+templates.texi(,538) @item
+templates.texi(,539) Prompt for the name of the new file.
+templates.texi(,540) @item
+templates.texi(,541) Template derivation: suggest a reasonable template file 
to the user see
+templates.texi(,542) @code{template-derivation-alist}.
+templates.texi(,543) @item
+templates.texi(,544) File name refinement: e.g., if the given file name is 
@file{exercise}
+templates.texi(,545) and there are two files @file{exercise1.tex} and 
@file{exercise2.tex} in
+templates.texi(,546) the same directory and if we have a template 
@file{exercise.tex.tpl},
+templates.texi(,547) the file name is refined to @file{exercise3.tex}.  This 
is turned off
+templates.texi(,548) when @kbd{C-x t} is called with a prefix argument.
+templates.texi(,549) @item
+templates.texi(,550) Template insertion: insert the template file into the 
empty buffer.
+templates.texi(,551) @item
+templates.texi(,552) Read per-template expansion definition section starting at
+templates.texi(,553) @code{template-definition-start} and delete it.
+templates.texi(,554) @item
+templates.texi(,555) Display: before message in @code{template-message-buffer}.
+templates.texi(,556) @item
+templates.texi(,557) Execute pre-expansion commands defined in the definition 
section.
+templates.texi(,558) @item
+templates.texi(,559) Set local variables defined in the definition section.
+templates.texi(,560) @item
+templates.texi(,561) Expansion: expand the expansion forms (text matched by
+templates.texi(,562) @code{template-expansion-regexp}) They are defined in the 
definition
+templates.texi(,563) section, in @code{template-expansion-alist}, or provided 
by default,
+templates.texi(,564) see @code{template-expansion-regexp} and
+templates.texi(,565) @code{template-register-regexp}.
+templates.texi(,566) @item
+templates.texi(,567) Execute post-expansion commands defined in the definition 
section.
+templates.texi(,568) @item
+templates.texi(,569) Run @code{normal-mode} and functions in 
@code{find-file-hooks}.
+templates.texi(,570) @item
+templates.texi(,571) Update header according to 
@command{template-update-header} with
+templates.texi(,572) @c Vincent: What is this if-exists argument ?
+templates.texi(,573) argument @code{if-exists}.
+templates.texi(,574) @item
+templates.texi(,575) Display: after message in @code{template-message-buffer}.
+templates.texi(,576) @item
+templates.texi(,577) Report: display a temporary message at point defined in 
the definition
+templates.texi(,578) section and an automatically generated message in the 
minibuffer area,
+templates.texi(,579) see @code{template-message-timeout}.
+templates.texi(,580) @end enumerate
+templates.texi(,581) If optional @var{with-undo} is non-nil, store 
corresponding changes in
+templates.texi(,582) @code{buffer-undo-list}.  If @var{file} is nil, the 
buffer for @var{file} has
+templates.texi(,583) already been created and the accessible part will be 
replaced by the
+templates.texi(,584) expanded template.  If @var{template} is nil (empty input 
when called
+templates.texi(,585) interactively), do not use a template.
+templates.texi(,586) @end deffn
+templates.texi(,587) 
+templates.texi(,588) @defopt template-auto-insert
+templates.texi(,589) @end defopt
+templates.texi(,590) 
+templates.texi(,591) @node Derivation,,,Customization
+templates.texi(,592) @subsection Customization of how templates are derived
+templates.texi(,593) 
+templates.texi(,594) @defopt template-derivation-alist
+templates.texi(,595) @end defopt
+templates.texi(,596) 
+templates.texi(,597) @node Comments,,,Customization
+templates.texi(,598) @subsection Customization of comments
+templates.texi(,599) 
+templates.texi(,600) @defopt template-single-comment
+templates.texi(,601) @end defopt
+templates.texi(,602) 
+templates.texi(,603) @deffn {Interactive command} template-block-comment arg
+templates.texi(,604) It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> 
<Comment> <Decorate Comment Block>}.
+templates.texi(,605) 
+templates.texi(,606) Decorate the current block of comment-only lines with 
dashes and alike.
+templates.texi(,607) That is, surround the the contiguous comment-only lines 
around point
+templates.texi(,608) with extra lines containing dashes and alike and to put 
the correct
+templates.texi(,609) number of newlines around the block.
+templates.texi(,610) 
+templates.texi(,611) Barf if the comment syntax at point has a non-empty 
@code{comment-end} or if
+templates.texi(,612) point is not in a comment-only line.
+templates.texi(,613) 
+templates.texi(,614) A block comment consists of all neighboring lines which 
start with
+templates.texi(,615) spaces and @code{comment-start}.  If @code{comment-start} 
is a string of length 1,
+templates.texi(,616) the number of repetitions of @code{comment-start} must be 
the same or larger
+templates.texi(,617) than in the line where the command is invoked from, too.
+templates.texi(,618) 
+templates.texi(,619) Prefix argument @var{arg} and 
@code{template-comment-specification} determines the
+templates.texi(,620) comment style to use.  The length of the separator line 
is determined by
+templates.texi(,621) @code{template-max-column}.
+templates.texi(,622) 
+templates.texi(,623) This command can also be used with point in an empty line 
after a block
+templates.texi(,624) comment.  A second invocation of this command directly 
after a
+templates.texi(,625) successful invocation deletes the remaining empty lines 
from the current
+templates.texi(,626) line on.
+templates.texi(,627) @end deffn
+templates.texi(,628) 
+templates.texi(,629) @defopt template-comment-specification-alist
+templates.texi(,630) List of specifications for comment functions.  Each 
specification at
+templates.texi(,631) @var{level}, starting at 1, is a list 
@code{(@var{separator}
+templates.texi(,632) @var{before-block} @var{after-block} @var{DELETE-LINES})}
+templates.texi(,633) 
+templates.texi(,634) @var{separator} is the string which is inserted 
repeatedly by commands
+templates.texi(,635) @kbd{C-x C-=} and @kbd{C-x C-;} up to 
@code{template-max-column}.
+templates.texi(,636) 
+templates.texi(,637) After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} 
after the comment block
+templates.texi(,638) and inserts string @var{after-block} at the end of the 
block and
+templates.texi(,639) @var{before-block} at the front of the block.
+templates.texi(,640) 
+templates.texi(,641) The specification @var{level} to use is determined by:
+templates.texi(,642) @enumerate
+templates.texi(,643) @item
+templates.texi(,644) If the prefix argument is non-nil and its numeric value 
is > 0, this
+templates.texi(,645) value is the @var{level}.
+templates.texi(,646) @item
+templates.texi(,647) If the prefix argument is nil, and there is an old 
comment style, use
+templates.texi(,648) old comment style.
+templates.texi(,649) @item
+templates.texi(,650) If @code{template-comment-specification-special} is a 
function or the
+templates.texi(,651) current major mode has a property with this name and its 
value is a
+templates.texi(,652) function, this function returns the specification.
+templates.texi(,653) @item
+templates.texi(,654) If @code{comment-end} is empty and @code{comment-start} 
is a string of
+templates.texi(,655) length 1: @var{level} is number of repetitions of 
@code{comment-start}
+templates.texi(,656) at the beginning of the line.  Otherwise, if the 
correctly indented line
+templates.texi(,657) starts at the beginning of the line, @var{level}=3, else 
@var{level}=2.
+templates.texi(,658) @end enumerate
+templates.texi(,659) @end defopt
+templates.texi(,660) 
+templates.texi(,661) 
+templates.texi(,662) @node Indexes,,,Top  
+templates.texi(,663) @chapter Indexes for commands, keyword, and variable
+templates.texi(,664) 
+templates.texi(,665) @menu
+templates.texi(,666) * Keyword Index:: Keyword Index.
+templates.texi(,667) * Command Index:: Command Index.
+templates.texi(,668) * Variable Index:: Customizable Variable Index.
+templates.texi(,669) @end menu
+templates.texi(,670) 
+templates.texi(,671) @node Keyword Index,,,Indexes
+templates.texi(,672) @section Keyword Index
+templates.texi(,673) 
+templates.texi(,674) @node Command Index,,,Indexes
+templates.texi(,675) @section Keyword Index
+templates.texi(,676) 
+templates.texi(,677) @printindex fn
+templates.texi(,678) 
+templates.texi(,679) @node Variable Index,,,Indexes
+templates.texi(,680) @section Variable Index
+templates.texi(,681) 
+templates.texi(,682) @printindex vr
+templates.texi(,683) 
+templates.texi(,684) @node News,,,Top  
+templates.texi(,685) @chapter News for Package Template
+templates.texi(,686) 
+templates.texi(,687) @table @asis
+templates.texi(,688) @item Latest Version:
+templates.texi(,689) @strong{3.1c} (21 Aug 2003).
+templates.texi(,690) @item Requirements:
+templates.texi(,691) @cite{Emacs-20.2}, @cite{XEmacs-20.2}, or higher.  
+templates.texi(,692) 
+templates.texi(,693) No menu support for Emacs before Version 21.1.
+templates.texi(,694) @item Licence: 
+templates.texi(,695) @cite{GNU General Public License}.
+templates.texi(,696) @end table
+templates.texi(,697) 
+templates.texi(,698) @section Changes with Release 3.1c
+templates.texi(,699) 
+templates.texi(,700) @itemize
+templates.texi(,701) @item
+templates.texi(,702) Bug fix: on XEmacs, initialization would fail without 
menus "File" and "Edit" in menubar.
+templates.texi(,703) @item
+templates.texi(,704) Allow messages to be displayed in a separate buffer 
"*Template Messages*"
+templates.texi(,705) instead at point.
+templates.texi(,706) @item
+templates.texi(,707) Correct and improve header updating.
+templates.texi(,708) @item
+templates.texi(,709) Extend use of @code{M-x template-single-comment}.
+templates.texi(,710) @item
+templates.texi(,711) Minor bug fixes.  Miscellaneous.
+templates.texi(,712) @end itemize
+templates.texi(,713) 
+templates.texi(,714)     
+templates.texi(,715) @section Changes with Release 3.1
+templates.texi(,716) 
+templates.texi(,717) @itemize
+templates.texi(,718) @item
+templates.texi(,719) Moved to SourceForge.net.  Less technical description on 
web page.
+templates.texi(,720) @item
+templates.texi(,721) Remove examples from distribution, they were more 
confusing than helpful.
+templates.texi(,722) @item
+templates.texi(,723) Bug fix: would sometimes indent the current line when 
using the menubar.
+templates.texi(,724) @item
+templates.texi(,725) Menus work with Emacs-21, too.  Rename some menu entries.
+templates.texi(,726) @item
+templates.texi(,727) Don't search further for remote templates.  Nuke this 
home/base directory
+templates.texi(,728) stuff, stop search at root.
+templates.texi(,729) @item
+templates.texi(,730) Don't rely on command @command{ffap} to always add an 
entry to
+templates.texi(,731) @code{command-history} if the filename is read from 
terminal.  Special
+templates.texi(,732) setup for @code{ffap} and @code{html-helper}.
+templates.texi(,733) @item
+templates.texi(,734) Make date/time formats work as names suggest.
+templates.texi(,735) @item
+templates.texi(,736) Command to insert & expand a template file.
+templates.texi(,737) @item
+templates.texi(,738) Allow user to define a choice in the definition section 
to be answered
+templates.texi(,739) via @code{y-or-n-p}.
+templates.texi(,740) @item
+templates.texi(,741) Various miscellaneous improvements.  Minor bug fixes.
+templates.texi(,742) @end itemize
+templates.texi(,743)     
+templates.texi(,744) @node Acknowledgements,,,Top  
+templates.texi(,745) 
+templates.texi(,746) Christoph Wedler 
@uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+templates.texi(,747) 
+templates.texi(,748) 
+templates.texi(,749) @bye

Index: misc/res_info/texi_templates/templates.passtexi
===================================================================
RCS file: misc/res_info/texi_templates/templates.passtexi
diff -N misc/res_info/texi_templates/templates.passtexi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_info/texi_templates/templates.passtexi     2 Aug 2009 13:13:19 
-0000       1.1
@@ -0,0 +1,746 @@
+templates.texi(,2) @c %**start of header
+templates.texi(,3) @setfilename templates.info
+templates.texi(,4) @documentencoding iso-8859-1
+templates.texi(,5) @documentlanguage en
+templates.texi(,6) @settitle  Emacs template package documentation, version 
3.1c
+templates.texi(,7) @c %**end of header
+templates.texi(,8) @alias kbdmenu = kbd
+templates.texi(,9) @alias codetpl = samp
+templates.texi(,10) @alias codevar = code
+templates.texi(,11) 
+templates.texi(,12) @copying
+templates.texi(,13) This is the Emacs template package documentation, version 
3.1c
+templates.texi(,14) Copyright @copyright{} 2008 Christoph Wedler, Vincent 
Belaïche.
+templates.texi(,15) 
+templates.texi(,16) @quotation
+templates.texi(,17) Permission is granted to ...
+templates.texi(,18) @end quotation
+templates.texi(,19) @end copying
+templates.texi(,20) 
+templates.texi(,21) @dircategory Emacs
+templates.texi(,22) @direntry
+templates.texi(,23) * Templates: (templates). Creating templates for files 
creation.
+templates.texi(,24) @end direntry
+templates.texi(,25) 
+templates.texi(,26) 
+templates.texi(,27) @titlepage
+templates.texi(,28) @title Emacs template package manual
+templates.texi(,29) @subtitle Details of Package Template
+templates.texi(,30) @author Christoph Wedler
+templates.texi(,31) 
+templates.texi(,32) @c  The following two commands
+templates.texi(,33) @c  start the copyright page.
+templates.texi(,34) @page
+templates.texi(,35) @vskip 0pt plus 1filll
+templates.texi(,36) @insertcopying
+templates.texi(,37) 
+templates.texi(,38) Published by ...
+templates.texi(,39) @end titlepage
+templates.texi(,40) 
+templates.texi(,42) @node Top,,,(dir)top
+templates.texi(,43) @top Top node.
+templates.texi(,44) 
+templates.texi(,45) This is the manual of Emacs template package
+templates.texi(,47) 
+templates.texi(,48) @menu
+templates.texi(,49) * Overview:: Overview.
+templates.texi(,50) * Installation:: how to install the template package.
+templates.texi(,51) * Basics:: How to make and use templates.
+templates.texi(,52) * Advanced:: Templates for advanced users.
+templates.texi(,53) * Indexes:: Indexes for commands, keyword, and variable.
+templates.texi(,54) * News:: News for Package Template.
+templates.texi(,55) * Acknowledgements:: Acknowledgements.
+templates.texi(,56) @end menu
+templates.texi(,57) 
+templates.texi(,58) @node Overview,,,Top
+templates.texi(,59) @chapter Overview
+templates.texi(,60) 
+templates.texi(,61) When you create a new file with Emacs, package Template 
supplies an initial
+templates.texi(,62) buffer content via a template: a file with normal text and 
expansion forms.
+templates.texi(,63) There is a menu to easily create such templates.  You can 
also use new commands
+templates.texi(,64) to decorate comments and update the buffer contents.
+templates.texi(,65) 
+templates.texi(,66) 
+templates.texi(,67) The main difference between Template and 
@ref{Related,other similar
+templates.texi(,68) packages} is that you can define very flexible templates 
without having
+templates.texi(,69) to learn Lisp or changing your Emacs init file.  This 
package does not
+templates.texi(,70) help Lisp programmers to define complex macros.
+templates.texi(,71) 
+templates.texi(,72) @itemize
+templates.texi(,73) @item
+templates.texi(,74) The template mechanism is hooked into the normal find/open 
file command.  There
+templates.texi(,75) are also new commands for creating a new file using a 
template and inserting &amp;
+templates.texi(,76) expanding a template.
+templates.texi(,77) @item
+templates.texi(,78) You do not have to enter the file name of the template 
file.  This package uses
+templates.texi(,79) a sophisticated search to find the most appropritate 
template (supporting
+templates.texi(,80) project- and subproject specific template files).  You can 
change the
+templates.texi(,81) suggestion, of course.
+templates.texi(,82) @item
+templates.texi(,83) A template file can be easily created.  Most of the file 
usually contains
+templates.texi(,84) simple text; only @dfn{expansion forms} which look like
+templates.texi(,85) @samp{(>>>@var{Key}<<<)} will get replaced.
+templates.texi(,86) @item
+templates.texi(,87) There are various useful predefined expansions: set point 
(the cursor
+templates.texi(,88) position), mark and registers to the current position; 
insert various parts of
+templates.texi(,89) the filename, the user/system name, the current date/time 
in various formats,
+templates.texi(,90) and some text to be entered by the user.
+templates.texi(,91) @item
+templates.texi(,92) Template-specific expansions can be defined at the end of 
the template file.
+templates.texi(,93) There are commands to create these definitions; only 
complex expansions would
+templates.texi(,94) require some knowledge of Lisp.
+templates.texi(,95) @end itemize
+templates.texi(,96) 
+templates.texi(,97) There is a menu to support the creation of template files. 
 Additionally, this
+templates.texi(,98) package provides the following features:
+templates.texi(,99) 
+templates.texi(,100) @itemize
+templates.texi(,101) @item
+templates.texi(,102) When saving a buffer, some parts of the buffer contents 
(header and time
+templates.texi(,103) stamps) are automatically updated if necessary.
+templates.texi(,104) @item
+templates.texi(,105) There are commands to decorate comments with dashes and 
alike.  Works for
+templates.texi(,106) languages with any comment style, even languages having 
mixed comments like C++
+templates.texi(,107) and Java.
+templates.texi(,108) @end itemize
+templates.texi(,109) 
+templates.texi(,110) 
+templates.texi(,111) @node Related,,,Overview
+templates.texi(,112) @section Packages Related to Template
+templates.texi(,113) 
+templates.texi(,114) 
+templates.texi(,115) There are template packages of two different categories, 
which are determined
+templates.texi(,116) by one question:
+templates.texi(,117) 
+templates.texi(,118) @emph{What do you want to do with templates?} Do you want 
to use templates
+templates.texi(,119) when creating new files, or do you want to insert some 
stuff during editing
+templates.texi(,120) (but you are not satisfied with the standard macro 
mechanism)?
+templates.texi(,121) 
+templates.texi(,122) Well, templates could be seen as both new-file templates 
and macro-like
+templates.texi(,123) template, but the main application of templates 
determines the answers for the
+templates.texi(,124) following questions:
+templates.texi(,125)       
+templates.texi(,126) @itemize
+templates.texi(,127) @item
+templates.texi(,128) @emph{How do you define a template?} You can define it by 
one file per
+templates.texi(,129) template or by customizing some Emacs variables.  The 
first solution (which is
+templates.texi(,130) used by package Template) avoids Emacs hacking but might 
not be optimal if you
+templates.texi(,131) just want to define complex macros or if you want to use 
templates to program a
+templates.texi(,132) new Emacs major-mode.
+templates.texi(,133) @item
+templates.texi(,134) @emph{How is an appropriate template selected?} If you 
want to use complex
+templates.texi(,135) macro during editing, the answer is clear: the user have 
to provide the name of
+templates.texi(,136) the template.  For new files, the appropriate template 
should be automatically
+templates.texi(,137) selected.  But of course, you don't want to loose any 
flexibility and you don't
+templates.texi(,138) want to customize your Emacs for every project you start.
+templates.texi(,139) @item
+templates.texi(,140) @emph{How do you do "clever" things in the template?} The 
aims are to have
+templates.texi(,141) many predefined expansions (e.g., the current date) and 
to define some
+templates.texi(,142) non-trivial things without learning Lisp.  Any 
functionality here is the
+templates.texi(,143) overlapping point of both template categories.
+templates.texi(,144) @end itemize
+templates.texi(,145) 
+templates.texi(,146) 
+templates.texi(,147) 
+templates.texi(,148) Here is a little list of related files, collected around 
1998, some discarded
+templates.texi(,149) later (no @abbr{URL}s, no active updating, but you can 
send me a mail):
+templates.texi(,150) 
+templates.texi(,151) @itemize
+templates.texi(,152) @item
+templates.texi(,153) Package @cite{autoinsert.el} uses templates when creating 
new files.
+templates.texi(,154) These templates are defined via files or by customizing 
Emacs.  For each new
+templates.texi(,155) template you want to introduce, you must customize your 
Emacs, the selection is
+templates.texi(,156) restricted to one template per major-mode or regexp 
match.  No predefined
+templates.texi(,157) expansions; clever things are provided by usual Lisp 
expressions or the
+templates.texi(,158) macro-like templates of package @cite{skeleton}.
+templates.texi(,159) @item
+templates.texi(,160) Package @cite{skeleton.el} is a Lisp language extension 
for
+templates.texi(,161) writing statement skeletons, i.e., you get macro-like 
Lisp commands.
+templates.texi(,162) @item
+templates.texi(,163) Package @cite{tempo.el} helps you defining and using 
named macro-like
+templates.texi(,164) templates.  Its predefined macros are similar to some 
predefined expansions of
+templates.texi(,165) package Template.  A specific template is used by
+templates.texi(,166) <code class="lisp">html-helper-mode</code> when creating 
a new html file.
+templates.texi(,167) (This is turned off with the default installation of 
package Template.)
+templates.texi(,168) @item
+templates.texi(,169) Package @cite{hm--html-menus} provides a command to 
insert templates
+templates.texi(,170) editing.  These templates are defined via files.  There 
are no predefined
+templates.texi(,171) expansions (except setting point), non-trivial expansions 
are defined via Lisp.
+templates.texi(,172) @end itemize
+templates.texi(,173) 
+templates.texi(,174) 
+templates.texi(,175) 
+templates.texi(,176) 
+templates.texi(,177) @node Installation,,,Top
+templates.texi(,178) @chapter Installation
+templates.texi(,179) 
+templates.texi(,180) @section Installation Instructions
+templates.texi(,181) 
+templates.texi(,182) @enumerate
+templates.texi(,183) @item
+templates.texi(,184) Copy file @file{template/lisp/template.el} into your
+templates.texi(,185) load-path and byte-compile it.
+templates.texi(,186) @item
+templates.texi(,187) Insert the following code into your Emacs init file
+templates.texi(,188) (@file{~/.emacs}):
+templates.texi(,189) 
+templates.texi(,190) @lisp
+templates.texi(,191) (require 'template)
+templates.texi(,192) (template-initialize)
+templates.texi(,193) @end lisp
+templates.texi(,194) 
+templates.texi(,195) @item
+templates.texi(,196) If you want to customize package Template, use @kbd{M-x
+templates.texi(,197) customize-group @key{RET} template
+templates.texi(,198) @key{RET}} or the customize entry in menu
+templates.texi(,199) @kbd{Options}.
+templates.texi(,200) @item
+templates.texi(,201) You might want to copy the template files from directory
+templates.texi(,202) @file{template/templates/} to
+templates.texi(,203) @file{~/.templates/} and change them according to your
+templates.texi(,204) preferences.
+templates.texi(,205) @end enumerate
+templates.texi(,206) 
+templates.texi(,207) 
+templates.texi(,208) Installation instructions with further explanations can 
be found in file
+templates.texi(,209) @file{template/INSTALL} of the distribution.
+templates.texi(,210) 
+templates.texi(,211)  
+templates.texi(,212) 
+templates.texi(,213) @node Basics,,,Top
+templates.texi(,214) @chapter Basics
+templates.texi(,215) 
+templates.texi(,216) Emacs, template, file template, comment decoration, 
auto-updating, time stamp, details
+templates.texi(,217) 
+templates.texi(,218) @menu
+templates.texi(,219) * menus:: Menus and Key-Bindings.
+templates.texi(,220) * using:: Using a Template.
+templates.texi(,221) * finding:: Finding a Template.
+templates.texi(,222) * creating:: Creating a Template.
+templates.texi(,223) * decorating:: Decorating a Comment.
+templates.texi(,224) * updating:: Updating a Buffer.
+templates.texi(,225) @end menu
+templates.texi(,226) 
+templates.texi(,227) @node menus,,,Basics
+templates.texi(,228) @section  Menus and Key-Bindings
+templates.texi(,229) @c 
--------------------------------------------------------------------------------
+templates.texi(,230) For Emacs-21.1+ and XEmacs, this package defines the 
following menu entries and
+templates.texi(,231) key-bindings: 
+templates.texi(,232) 
+templates.texi(,233) @itemize
+templates.texi(,234) @item
+templates.texi(,235) In menu @kbd{File} , there is a new menu item @kbd{New 
File
+templates.texi(,236) Using Template...}  .  The corresponding command is also 
bound to the
+templates.texi(,237) key sequence @kbd{C-x t}.
+templates.texi(,238) @item
+templates.texi(,239) At the end of menu @kbd{Cmds} (in XEmacs if it exists) or 
menu
+templates.texi(,240)  @kbd{Edit} , there is a new submenu @kbd{Template 
Creation}.
+templates.texi(,241) @item
+templates.texi(,242) Enter @kbd{C-x C-=} (command 
@command{template-single-comment}) to
+templates.texi(,243) insert dashes and alike into the current line and end the 
comment.
+templates.texi(,244) @item
+templates.texi(,245) Enter @kbd{C-x C-;} (command 
@command{template-single-comment}) to
+templates.texi(,246) insert dashes and alike around the current comment block.
+templates.texi(,247) @item
+templates.texi(,248) At the end of menu @kbd{Edit} , there is a new submenu
+templates.texi(,249) @kbd{Comment}.  It also contains the two commands just 
mentioned.
+templates.texi(,250) @end itemize
+templates.texi(,251) 
+templates.texi(,252) @c 
--------------------------------------------------------------------------------
+templates.texi(,253) @node using,,,Basics
+templates.texi(,254) @section  Using a Template
+templates.texi(,255) @c 
--------------------------------------------------------------------------------
+templates.texi(,256) Package Template offers various ways how to use template 
files:
+templates.texi(,257) 
+templates.texi(,258) In Emacs, the usual way to create a new file is by typing 
@kbd{C-x C-f},
+templates.texi(,259) using the menu or the toolbar (running command 
@command{find-file} or
+templates.texi(,260) @command{ffap}) and entering a non-existent file name.  
In this case,
+templates.texi(,261) you will be asked whether to use a template for the new 
file.  You can
+templates.texi(,262) turn off this feature.
+templates.texi(,263) 
+templates.texi(,264) @itemize
+templates.texi(,265) @item
+templates.texi(,266) Here a first undefined xref @xref{EExpansion}.
+templates.texi(,267) There is a new command @command{template-new-file} 
@footnote{for the
+templates.texi(,268) menu entry and its key-binding type @kbd{C-h f 
template-new-file},
+templates.texi(,269) @xref{EExpansion}} to create a new file using a template. 
 Here, you have
+templates.texi(,270) the chance to edit the name of the template file.  This 
command also
+templates.texi(,271) supports file name refinement which is useful to create a 
file in a
+templates.texi(,272) series of files like @file{exercise2.tex} etc.
+templates.texi(,273) @item
+templates.texi(,274) There is also a command (@kbd{M-x 
template-expand-template})
+templates.texi(,275) to insert a template file into the current buffer and 
expand its expansion
+templates.texi(,276) forms.
+templates.texi(,277) @end itemize
+templates.texi(,278) 
+templates.texi(,279) 
+templates.texi(,280) For more @command{template-new-file} and 
@code{template-auto-insert},
+templates.texi(,281)  @xref{Expansion}.
+templates.texi(,282) 
+templates.texi(,283) @c 
--------------------------------------------------------------------------------
+templates.texi(,284) 
+templates.texi(,285) @node finding,,,Basics
+templates.texi(,286) @section  Finding a Template
+templates.texi(,287) @c 
--------------------------------------------------------------------------------
+templates.texi(,288) The algorithm for finding the most appropriate template 
can be best explained
+templates.texi(,289) with a little example:
+templates.texi(,290) 
+templates.texi(,291) @itemize
+templates.texi(,292) @item
+templates.texi(,293) You have a project @file{~/proj/} with subprojects 
@file{foo/} and
+templates.texi(,294) @file{bar/} containing @file{.java} files.
+templates.texi(,295) @item
+templates.texi(,296) You want to define a general template for the 
@file{.java} in your
+templates.texi(,297) project files, although @file{.java} files in subproject 
@file{foo/}
+templates.texi(,298) should use their own template.  You also want to define a 
special
+templates.texi(,299) template for all files @file{proj.java} in the project.
+templates.texi(,300) @item
+templates.texi(,301) Since you do not want to clutter the project directory 
with template
+templates.texi(,302) files, you first create a directory 
@file{~/proj/Templates/}.  In this
+templates.texi(,303) directory, you create new files @file{TEMPLATE.java.tpl} 
and
+templates.texi(,304) @file{proj.java.tpl}.  In directory @file{~/proj/foo/}, 
you create a new
+templates.texi(,305) file @file{TEMPLATE.java.tpl}.
+templates.texi(,306) @end itemize
+templates.texi(,307) 
+templates.texi(,308) The creation of the template files in the right directory 
is already enough for
+templates.texi(,309) packages Template to find the most appropriate template 
for a new file:
+templates.texi(,310) 
+templates.texi(,311) @itemize
+templates.texi(,312) @item
+templates.texi(,313) If you create a new file @file{~/proj/foo/abc.java}, this 
package tries
+templates.texi(,314) to find a template based on the file extension of the new 
file.  The
+templates.texi(,315) generic base file name for a template is @file{TEMPLATE} 
and the
+templates.texi(,316) additional extension is @file{.tpl}, a file 
@file{TEMPLATE.java.tpl}
+templates.texi(,317) exists in @file{~/proj/foo/}, so that file is used as the 
template.
+templates.texi(,318) @item
+templates.texi(,319) If you create a new file @file{~/proj/bar/abc.java}, this 
package again
+templates.texi(,320) tries to find @file{TEMPLATE.java.tpl}.  Since this file 
doesn't exist
+templates.texi(,321) in @file{~/proj/bar/}, it first inspects the subdirectory
+templates.texi(,322) @file{Templates/} which doesn't exist.  The search 
continues with the
+templates.texi(,323) parent directory @file{~/proj/} and then its subdirectory
+templates.texi(,324) @file{Templates/}.  Thus 
@file{~/proj/Templates/TEMPLATE.java.tpl} will
+templates.texi(,325) be used.
+templates.texi(,326) @item
+templates.texi(,327) If you create a new file @file{~/proj/foo/proj.java}, 
this package finds
+templates.texi(,328) a template file with the same base name: it uses
+templates.texi(,329) @file{~/proj/Templates/proj.java.tpl}.  You might argue 
that
+templates.texi(,330) @file{~/proj/foo/TEMPLATE.java.tpl} resides in a more 
specific
+templates.texi(,331) directory, but having the same base name is considered to 
be more
+templates.texi(,332) important (remember that some file like Makefiles do not 
have file
+templates.texi(,333) extensions).
+templates.texi(,334) @item
+templates.texi(,335) If you create a new file 
@file{~/other_proj/foo/proj.java}, i.e., a
+templates.texi(,336) project where you have defined no template files, this 
package uses one
+templates.texi(,337) of the default templates, in this case
+templates.texi(,338) @file{~/.templates/TEMPLATE.java.tpl}.
+templates.texi(,339) @end itemize
+templates.texi(,340) 
+templates.texi(,341) For more on derivation @xref{Derivation}.
+templates.texi(,342) 
+templates.texi(,343) @c 
--------------------------------------------------------------------------------
+templates.texi(,344) 
+templates.texi(,345) @node creating,,,Basics
+templates.texi(,346) @section  Creating a Template
+templates.texi(,347) @c 
--------------------------------------------------------------------------------
+templates.texi(,348) 
+templates.texi(,349) There are various predefined expansions which are 
probably enough for
+templates.texi(,350) most templates.  A corresponding expansion forms can be 
easily inserted
+templates.texi(,351) by selecting the appropriate entry in the new submenu  
@kbd{Template
+templates.texi(,352) Creation}
+templates.texi(,353) :
+templates.texi(,354) 
+templates.texi(,355) @itemize
+templates.texi(,356) @item
+templates.texi(,357) Remember positions: use @samp{(>>>POINT<<<)} to set point 
(the cursor
+templates.texi(,358) position), @samp{(>>>MARK<<<)} to set mark (e.g., the 
opposite position
+templates.texi(,359) when a region is highlighted), and @samp{(>>>1<<<)} to 
@samp{(>>>0<<<)}
+templates.texi(,360) to registers to the current position.  Remember that 
@kbd{C-x r j
+templates.texi(,361) @var{Key}} jumps to the position stored in register 
@var{Key}.
+templates.texi(,362) @item
+templates.texi(,363) 
+templates.texi(,364) Insert parts of the file name, e.g., when creating the 
new file
+templates.texi(,365) @file{~/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is 
replaced by
+templates.texi(,366) @file{/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by 
@file{abc1.java},
+templates.texi(,367) @samp{(>>>FILE_SANS<<<)} by @file{abc1} , 
@samp{(>>>FILE_UPCASE<<<)} by
+templates.texi(,368) @file{ABC1} , @samp{(>>>FILE_RAW<<<)} by @file{abc},
+templates.texi(,369) @samp{(>>>FILE_NUM<<<)} by @file{1} , and 
@samp{(>>>FILE_EXT<<<)} by
+templates.texi(,370) @file{java}.
+templates.texi(,371) @item
+templates.texi(,372) Insert the current date/time in two customizable and 
three fixed
+templates.texi(,373) formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
+templates.texi(,374) @samp{(>>>TIME<<<)} for @samp{20:01:13} , 
@samp{(>>>YEAR<<<)} for
+templates.texi(,375) @samp{2002} , @samp{(>>>ISO_DATE<<<)} for 
@samp{2002-02-20} , and
+templates.texi(,376) @samp{(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
+templates.texi(,377) @item
+templates.texi(,378) Insert the user/system name in various formats: use
+templates.texi(,379) @samp{(>>>AUTHOR<<<)} for @email{Christoph Wedler
+templates.texi(,380) <wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
+templates.texi(,381) @samp{Christoph Wedler} , @samp{(>>>LOGIN_NAME<<<)} for 
@samp{wedler} ,
+templates.texi(,382) and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} 
.
+templates.texi(,383) @item
+templates.texi(,384) Ask the user for some initial comment.  If this expansion 
is used, the buffer
+templates.texi(,385) for the new file will be marked as modified.  For each 
undefined expansion, the
+templates.texi(,386) user is also asked.
+templates.texi(,387) @item
+templates.texi(,388) Disabling the search for expansion forms:
+templates.texi(,389) @samp{(>>>ZERO_FORM<<<)} can be inserted into a string 
which
+templates.texi(,390) will be otherwise regarded as an expansion form, the 
region between
+templates.texi(,391) @samp{(>>>LITERAL<<<)} and the first
+templates.texi(,392) @samp{(>>>/LITERAL<<<)} after it will be skipped.
+templates.texi(,393) @end itemize
+templates.texi(,394)     
+templates.texi(,395) You can define your own expansions in your Emacs init 
file and at the end of a
+templates.texi(,396) template file.  A corresponding definition can be easily 
inserted by selecting
+templates.texi(,397) the appropriate entry in the new submenu  @kbd{Template
+templates.texi(,398) Creation}:
+templates.texi(,399)     
+templates.texi(,400) @itemize
+templates.texi(,401) 
+templates.texi(,402) @item
+templates.texi(,403) @kbd{Define User Input}
+templates.texi(,404) .  Ask the user to insert some text
+templates.texi(,405) using some specific prompt.  Optionally, ask for a text 
with completion, or for
+templates.texi(,406) a sequence of user input (exit with empty input).
+templates.texi(,407) @item
+templates.texi(,408) @kbd{Define Text Register} 
+templates.texi(,409) .  Define a text for
+templates.texi(,410) register @var{Reg} which can be inserted with @kbd{C-x r 
i @var{Reg}}.
+templates.texi(,411) Optionally, provide a comment for it which will be 
temporarily shown at
+templates.texi(,412) point.
+templates.texi(,413) @item
+templates.texi(,414) @kbd{Define Message}
+templates.texi(,415) .  Define a message which will be
+templates.texi(,416) temporarily shown at point or before/after the expansion 
in a special buffer.
+templates.texi(,417) There is also a computed message in the echo area.
+templates.texi(,418) @item
+templates.texi(,419) 
+templates.texi(,420) Execute some Lisp coding defined at the end of the 
template.  By default, you
+templates.texi(,421) have to confirm it first, since it is insecure to execute 
unchecked coding.
+templates.texi(,422) (You do not have menu support to define this kind of 
expansion.)
+templates.texi(,423) @end itemize
+templates.texi(,424) 
+templates.texi(,425) @defopt template-default-expansion-alist
+templates.texi(,426) @end defopt
+templates.texi(,427) @defopt template-definition-start
+templates.texi(,428) @end defopt
+templates.texi(,429) 
+templates.texi(,430)     
+templates.texi(,431) @c 
--------------------------------------------------------------------------------
+templates.texi(,432) 
+templates.texi(,433) @node decorating,,,Basics
+templates.texi(,434) @section  Decorating a Comment
+templates.texi(,435) @c 
--------------------------------------------------------------------------------
+templates.texi(,436) 
+templates.texi(,437) There are commands to decorate comments with dashes and 
alike (@samp{-},
+templates.texi(,438) @samp{=} and @samp{#} by default).  Both commands are 
included in the
+templates.texi(,439) new submenu @kbd{Comments} 
+templates.texi(,440) and bound to keys:
+templates.texi(,441) 
+templates.texi(,442) @itemize
+templates.texi(,443) @item
+templates.texi(,444) Use command @code{template-single-comment} to jump to the
+templates.texi(,445) end of the current line and insert the dashes and the 
final
+templates.texi(,446) comment end-string up-to the fill position.  This command 
works with any
+templates.texi(,447) comment style, including for languages having mixed 
comments like C++ and Java.
+templates.texi(,448) It also works in major modes without a defined comment 
syntax.
+templates.texi(,449) @item
+templates.texi(,450) Use command @code{template-block-comment} to surround the
+templates.texi(,451) current comment block (i.e., contiguous comment lines) 
with extra lines
+templates.texi(,452) containing dashes and alike and to put the correct number 
of newlines around
+templates.texi(,453) the block.  This command only works with comments which 
are terminated with the
+templates.texi(,454) end of the line (like Java's @code{//address@hidden code 
class=text
+templates.texi(,455)  comment).
+templates.texi(,456) @end itemize
+templates.texi(,457) 
+templates.texi(,458) The comment decoration style is highly customizable and 
can be controlled by
+templates.texi(,459) 
+templates.texi(,460) @itemize
+templates.texi(,461) @item
+templates.texi(,462) The prefix argument given to the two commands.
+templates.texi(,463) @item
+templates.texi(,464) The existing comment decoration style when present.
+templates.texi(,465) @item
+templates.texi(,466) Determined by the indentation or the repetition of a 
single-character comment
+templates.texi(,467) start (like Emacs-Lisp's @code{;address@hidden code 
class=text
+templates.texi(,468) ).
+templates.texi(,469) @end itemize
+templates.texi(,470) 
+templates.texi(,471) For more on comments @xref{Comments}.
+templates.texi(,472) 
+templates.texi(,473) @c 
--------------------------------------------------------------------------------
+templates.texi(,474) 
+templates.texi(,475) @node updating,,,Basics
+templates.texi(,476) @section  Updating a Buffer
+templates.texi(,477) @c 
--------------------------------------------------------------------------------
+templates.texi(,478) A buffer is automatically updated according to some rules 
when saving
+templates.texi(,479) the file.  This updating can be invoked explicitly by 
selecting the menu
+templates.texi(,480) entry @kbd{Update Buffer} in the new submenu 
@kbd{Comments} .
+templates.texi(,481) 
+templates.texi(,482) @itemize
+templates.texi(,483) @item
+templates.texi(,484) Update the file name in the first three lines of the 
buffer if the file name is
+templates.texi(,485) indicated by @code{@@(#) @address@hidden code class=text
+templates.texi(,486)  or
+templates.texi(,487) @code{;;; @var{FileName} address@hidden code class=text
+templates.texi(,488)  where
+templates.texi(,489) @code{;;;address@hidden code class=text
+templates.texi(,490)  stands for any comment start (with optional
+templates.texi(,491) repetition of a single-character comment start).
+templates.texi(,492) @item
+templates.texi(,493) Update the date if it is the last text inside the
+templates.texi(,494) @address@hidden code class=html
+templates.texi(,495)  element of a HTML buffer.
+templates.texi(,496) @item
+templates.texi(,497) Automatic updating is optional, as is user confirmation 
for it.  Automatic
+templates.texi(,498) updating can be disabled for buffers whose file name 
matches a regular
+templates.texi(,499) expression.
+templates.texi(,500) @item
+templates.texi(,501) If nothing will be changed by the updating, there will be 
no user confirmation
+templates.texi(,502) and the buffer will not be marked as modified.
+templates.texi(,503) @end itemize
+templates.texi(,504) 
+templates.texi(,505) @defopt template-update-buffer
+templates.texi(,506) @end defopt
+templates.texi(,507) @defopt template-auto-update
+templates.texi(,508) @end defopt
+templates.texi(,509) @defopt template-update-buffer-alist
+templates.texi(,510) @end defopt
+templates.texi(,511) @defopt template-header-regexp-alist
+templates.texi(,512) @end defopt
+templates.texi(,513) 
+templates.texi(,514) @node Advanced,,,Top  
+templates.texi(,515) @chapter Templates for advanced users
+templates.texi(,516) 
+templates.texi(,517) @menu
+templates.texi(,518) * Customization:: Templates customization.
+templates.texi(,519) @end menu
+templates.texi(,520) 
+templates.texi(,521) @node Customization,,,Advanced
+templates.texi(,522) @section Templates customization
+templates.texi(,523) 
+templates.texi(,524) @menu
+templates.texi(,525) * Expansion:: Customization of keyword expansion rules.
+templates.texi(,526) * Derivation:: Customization of how templates are derived.
+templates.texi(,527) * Comments:: Customization of comments.
+templates.texi(,528) @end menu
+templates.texi(,529) 
+templates.texi(,530) @node Expansion,,,Customization
+templates.texi(,531) @subsection Customization of keyword expansion rules
+templates.texi(,532) 
+templates.texi(,533) @deffn {Interactive Command} template-new-file {file 
template with-undo}
+templates.texi(,534) Open a new file @var{file} by using a @var{template}.
+templates.texi(,535) Using a template for creating a new file consists of, 
steps 1 to 3 are
+templates.texi(,536) only executed when called interactively:
+templates.texi(,537) @enumerate
+templates.texi(,538) @item
+templates.texi(,539) Prompt for the name of the new file.
+templates.texi(,540) @item
+templates.texi(,541) Template derivation: suggest a reasonable template file 
to the user see
+templates.texi(,542) @code{template-derivation-alist}.
+templates.texi(,543) @item
+templates.texi(,544) File name refinement: e.g., if the given file name is 
@file{exercise}
+templates.texi(,545) and there are two files @file{exercise1.tex} and 
@file{exercise2.tex} in
+templates.texi(,546) the same directory and if we have a template 
@file{exercise.tex.tpl},
+templates.texi(,547) the file name is refined to @file{exercise3.tex}.  This 
is turned off
+templates.texi(,548) when @kbd{C-x t} is called with a prefix argument.
+templates.texi(,549) @item
+templates.texi(,550) Template insertion: insert the template file into the 
empty buffer.
+templates.texi(,551) @item
+templates.texi(,552) Read per-template expansion definition section starting at
+templates.texi(,553) @code{template-definition-start} and delete it.
+templates.texi(,554) @item
+templates.texi(,555) Display: before message in @code{template-message-buffer}.
+templates.texi(,556) @item
+templates.texi(,557) Execute pre-expansion commands defined in the definition 
section.
+templates.texi(,558) @item
+templates.texi(,559) Set local variables defined in the definition section.
+templates.texi(,560) @item
+templates.texi(,561) Expansion: expand the expansion forms (text matched by
+templates.texi(,562) @code{template-expansion-regexp}) They are defined in the 
definition
+templates.texi(,563) section, in @code{template-expansion-alist}, or provided 
by default,
+templates.texi(,564) see @code{template-expansion-regexp} and
+templates.texi(,565) @code{template-register-regexp}.
+templates.texi(,566) @item
+templates.texi(,567) Execute post-expansion commands defined in the definition 
section.
+templates.texi(,568) @item
+templates.texi(,569) Run @code{normal-mode} and functions in 
@code{find-file-hooks}.
+templates.texi(,570) @item
+templates.texi(,571) Update header according to 
@command{template-update-header} with
+templates.texi(,572) @c Vincent: What is this if-exists argument ?
+templates.texi(,573) argument @code{if-exists}.
+templates.texi(,574) @item
+templates.texi(,575) Display: after message in @code{template-message-buffer}.
+templates.texi(,576) @item
+templates.texi(,577) Report: display a temporary message at point defined in 
the definition
+templates.texi(,578) section and an automatically generated message in the 
minibuffer area,
+templates.texi(,579) see @code{template-message-timeout}.
+templates.texi(,580) @end enumerate
+templates.texi(,581) If optional @var{with-undo} is non-nil, store 
corresponding changes in
+templates.texi(,582) @code{buffer-undo-list}.  If @var{file} is nil, the 
buffer for @var{file} has
+templates.texi(,583) already been created and the accessible part will be 
replaced by the
+templates.texi(,584) expanded template.  If @var{template} is nil (empty input 
when called
+templates.texi(,585) interactively), do not use a template.
+templates.texi(,586) @end deffn
+templates.texi(,587) 
+templates.texi(,588) @defopt template-auto-insert
+templates.texi(,589) @end defopt
+templates.texi(,590) 
+templates.texi(,591) @node Derivation,,,Customization
+templates.texi(,592) @subsection Customization of how templates are derived
+templates.texi(,593) 
+templates.texi(,594) @defopt template-derivation-alist
+templates.texi(,595) @end defopt
+templates.texi(,596) 
+templates.texi(,597) @node Comments,,,Customization
+templates.texi(,598) @subsection Customization of comments
+templates.texi(,599) 
+templates.texi(,600) @defopt template-single-comment
+templates.texi(,601) @end defopt
+templates.texi(,602) 
+templates.texi(,603) @deffn {Interactive command} template-block-comment arg
+templates.texi(,604) It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> 
<Comment> <Decorate Comment Block>}.
+templates.texi(,605) 
+templates.texi(,606) Decorate the current block of comment-only lines with 
dashes and alike.
+templates.texi(,607) That is, surround the the contiguous comment-only lines 
around point
+templates.texi(,608) with extra lines containing dashes and alike and to put 
the correct
+templates.texi(,609) number of newlines around the block.
+templates.texi(,610) 
+templates.texi(,611) Barf if the comment syntax at point has a non-empty 
@code{comment-end} or if
+templates.texi(,612) point is not in a comment-only line.
+templates.texi(,613) 
+templates.texi(,614) A block comment consists of all neighboring lines which 
start with
+templates.texi(,615) spaces and @code{comment-start}.  If @code{comment-start} 
is a string of length 1,
+templates.texi(,616) the number of repetitions of @code{comment-start} must be 
the same or larger
+templates.texi(,617) than in the line where the command is invoked from, too.
+templates.texi(,618) 
+templates.texi(,619) Prefix argument @var{arg} and 
@code{template-comment-specification} determines the
+templates.texi(,620) comment style to use.  The length of the separator line 
is determined by
+templates.texi(,621) @code{template-max-column}.
+templates.texi(,622) 
+templates.texi(,623) This command can also be used with point in an empty line 
after a block
+templates.texi(,624) comment.  A second invocation of this command directly 
after a
+templates.texi(,625) successful invocation deletes the remaining empty lines 
from the current
+templates.texi(,626) line on.
+templates.texi(,627) @end deffn
+templates.texi(,628) 
+templates.texi(,629) @defopt template-comment-specification-alist
+templates.texi(,630) List of specifications for comment functions.  Each 
specification at
+templates.texi(,631) @var{level}, starting at 1, is a list 
@code{(@var{separator}
+templates.texi(,632) @var{before-block} @var{after-block} @var{DELETE-LINES})}
+templates.texi(,633) 
+templates.texi(,634) @var{separator} is the string which is inserted 
repeatedly by commands
+templates.texi(,635) @kbd{C-x C-=} and @kbd{C-x C-;} up to 
@code{template-max-column}.
+templates.texi(,636) 
+templates.texi(,637) After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} 
after the comment block
+templates.texi(,638) and inserts string @var{after-block} at the end of the 
block and
+templates.texi(,639) @var{before-block} at the front of the block.
+templates.texi(,640) 
+templates.texi(,641) The specification @var{level} to use is determined by:
+templates.texi(,642) @enumerate
+templates.texi(,643) @item
+templates.texi(,644) If the prefix argument is non-nil and its numeric value 
is > 0, this
+templates.texi(,645) value is the @var{level}.
+templates.texi(,646) @item
+templates.texi(,647) If the prefix argument is nil, and there is an old 
comment style, use
+templates.texi(,648) old comment style.
+templates.texi(,649) @item
+templates.texi(,650) If @code{template-comment-specification-special} is a 
function or the
+templates.texi(,651) current major mode has a property with this name and its 
value is a
+templates.texi(,652) function, this function returns the specification.
+templates.texi(,653) @item
+templates.texi(,654) If @code{comment-end} is empty and @code{comment-start} 
is a string of
+templates.texi(,655) length 1: @var{level} is number of repetitions of 
@code{comment-start}
+templates.texi(,656) at the beginning of the line.  Otherwise, if the 
correctly indented line
+templates.texi(,657) starts at the beginning of the line, @var{level}=3, else 
@var{level}=2.
+templates.texi(,658) @end enumerate
+templates.texi(,659) @end defopt
+templates.texi(,660) 
+templates.texi(,661) 
+templates.texi(,662) @node Indexes,,,Top  
+templates.texi(,663) @chapter Indexes for commands, keyword, and variable
+templates.texi(,664) 
+templates.texi(,665) @menu
+templates.texi(,666) * Keyword Index:: Keyword Index.
+templates.texi(,667) * Command Index:: Command Index.
+templates.texi(,668) * Variable Index:: Customizable Variable Index.
+templates.texi(,669) @end menu
+templates.texi(,670) 
+templates.texi(,671) @node Keyword Index,,,Indexes
+templates.texi(,672) @section Keyword Index
+templates.texi(,673) 
+templates.texi(,674) @node Command Index,,,Indexes
+templates.texi(,675) @section Keyword Index
+templates.texi(,676) 
+templates.texi(,677) @printindex fn
+templates.texi(,678) 
+templates.texi(,679) @node Variable Index,,,Indexes
+templates.texi(,680) @section Variable Index
+templates.texi(,681) 
+templates.texi(,682) @printindex vr
+templates.texi(,683) 
+templates.texi(,684) @node News,,,Top  
+templates.texi(,685) @chapter News for Package Template
+templates.texi(,686) 
+templates.texi(,687) @table @asis
+templates.texi(,688) @item Latest Version:
+templates.texi(,689) @strong{3.1c} (21 Aug 2003).
+templates.texi(,690) @item Requirements:
+templates.texi(,691) @cite{Emacs-20.2}, @cite{XEmacs-20.2}, or higher.  
+templates.texi(,692) 
+templates.texi(,693) No menu support for Emacs before Version 21.1.
+templates.texi(,694) @item Licence: 
+templates.texi(,695) @cite{GNU General Public License}.
+templates.texi(,696) @end table
+templates.texi(,697) 
+templates.texi(,698) @section Changes with Release 3.1c
+templates.texi(,699) 
+templates.texi(,700) @itemize
+templates.texi(,701) @item
+templates.texi(,702) Bug fix: on XEmacs, initialization would fail without 
menus "File" and "Edit" in menubar.
+templates.texi(,703) @item
+templates.texi(,704) Allow messages to be displayed in a separate buffer 
"*Template Messages*"
+templates.texi(,705) instead at point.
+templates.texi(,706) @item
+templates.texi(,707) Correct and improve header updating.
+templates.texi(,708) @item
+templates.texi(,709) Extend use of @code{M-x template-single-comment}.
+templates.texi(,710) @item
+templates.texi(,711) Minor bug fixes.  Miscellaneous.
+templates.texi(,712) @end itemize
+templates.texi(,713) 
+templates.texi(,714)     
+templates.texi(,715) @section Changes with Release 3.1
+templates.texi(,716) 
+templates.texi(,717) @itemize
+templates.texi(,718) @item
+templates.texi(,719) Moved to SourceForge.net.  Less technical description on 
web page.
+templates.texi(,720) @item
+templates.texi(,721) Remove examples from distribution, they were more 
confusing than helpful.
+templates.texi(,722) @item
+templates.texi(,723) Bug fix: would sometimes indent the current line when 
using the menubar.
+templates.texi(,724) @item
+templates.texi(,725) Menus work with Emacs-21, too.  Rename some menu entries.
+templates.texi(,726) @item
+templates.texi(,727) Don't search further for remote templates.  Nuke this 
home/base directory
+templates.texi(,728) stuff, stop search at root.
+templates.texi(,729) @item
+templates.texi(,730) Don't rely on command @command{ffap} to always add an 
entry to
+templates.texi(,731) @code{command-history} if the filename is read from 
terminal.  Special
+templates.texi(,732) setup for @code{ffap} and @code{html-helper}.
+templates.texi(,733) @item
+templates.texi(,734) Make date/time formats work as names suggest.
+templates.texi(,735) @item
+templates.texi(,736) Command to insert & expand a template file.
+templates.texi(,737) @item
+templates.texi(,738) Allow user to define a choice in the definition section 
to be answered
+templates.texi(,739) via @code{y-or-n-p}.
+templates.texi(,740) @item
+templates.texi(,741) Various miscellaneous improvements.  Minor bug fixes.
+templates.texi(,742) @end itemize
+templates.texi(,743)     
+templates.texi(,744) @node Acknowledgements,,,Top  
+templates.texi(,745) 
+templates.texi(,746) Christoph Wedler 
@uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+templates.texi(,747) 
+templates.texi(,748) 
+templates.texi(,749) @bye

Index: misc/res_info/texi_templates/templates.texi
===================================================================
RCS file: misc/res_info/texi_templates/templates.texi
diff -N misc/res_info/texi_templates/templates.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_info/texi_templates/templates.texi 2 Aug 2009 13:13:19 -0000       
1.1
@@ -0,0 +1,747 @@
+\input texinfo   @c -*- mode: texinfo; coding: iso-8859-1-unix -*-
address@hidden %**start of header
address@hidden templates.info
address@hidden iso-8859-1
address@hidden en
address@hidden  Emacs template package documentation, version 3.1c
address@hidden %**end of header
address@hidden kbdmenu = kbd
address@hidden codetpl = samp
address@hidden codevar = code
+
address@hidden
+This is the Emacs template package documentation, version 3.1c
+Copyright @copyright{} 2008 Christoph Wedler, Vincent Belaïche.
+
address@hidden
+Permission is granted to ...
address@hidden quotation
address@hidden copying
+
address@hidden Emacs
address@hidden
+* Templates: (templates). Creating templates for files creation.
address@hidden direntry
+
+
address@hidden
address@hidden Emacs template package manual
address@hidden Details of Package Template
address@hidden Christoph Wedler
+
address@hidden  The following two commands
address@hidden  start the copyright page.
address@hidden
address@hidden 0pt plus 1filll
address@hidden
+
+Published by ...
address@hidden titlepage
+
address@hidden Top,,,(dir)top
address@hidden Top node.
+
+This is the manual of Emacs template package
+
address@hidden
+* Overview:: Overview.
+* Installation:: how to install the template package.
+* Basics:: How to make and use templates.
+* Advanced:: Templates for advanced users.
+* Indexes:: Indexes for commands, keyword, and variable.
+* News:: News for Package Template.
+* Acknowledgements:: Acknowledgements.
address@hidden menu
+
address@hidden Overview,,,Top
address@hidden Overview
+
+When you create a new file with Emacs, package Template supplies an initial
+buffer content via a template: a file with normal text and expansion forms.
+There is a menu to easily create such templates.  You can also use new commands
+to decorate comments and update the buffer contents.
+
+
+The main difference between Template and @ref{Related,other similar
+packages} is that you can define very flexible templates without having
+to learn Lisp or changing your Emacs init file.  This package does not
+help Lisp programmers to define complex macros.
+
address@hidden
address@hidden
+The template mechanism is hooked into the normal find/open file command.  There
+are also new commands for creating a new file using a template and inserting 
&amp;
+expanding a template.
address@hidden
+You do not have to enter the file name of the template file.  This package uses
+a sophisticated search to find the most appropritate template (supporting
+project- and subproject specific template files).  You can change the
+suggestion, of course.
address@hidden
+A template file can be easily created.  Most of the file usually contains
+simple text; only @dfn{expansion forms} which look like
address@hidden(>>>@var{Key}<<<)} will get replaced.
address@hidden
+There are various useful predefined expansions: set point (the cursor
+position), mark and registers to the current position; insert various parts of
+the filename, the user/system name, the current date/time in various formats,
+and some text to be entered by the user.
address@hidden
+Template-specific expansions can be defined at the end of the template file.
+There are commands to create these definitions; only complex expansions would
+require some knowledge of Lisp.
address@hidden itemize
+
+There is a menu to support the creation of template files.  Additionally, this
+package provides the following features:
+
address@hidden
address@hidden
+When saving a buffer, some parts of the buffer contents (header and time
+stamps) are automatically updated if necessary.
address@hidden
+There are commands to decorate comments with dashes and alike.  Works for
+languages with any comment style, even languages having mixed comments like C++
+and Java.
address@hidden itemize
+
+
address@hidden Related,,,Overview
address@hidden Packages Related to Template
+
+
+There are template packages of two different categories, which are determined
+by one question:
+
address@hidden do you want to do with templates?} Do you want to use templates
+when creating new files, or do you want to insert some stuff during editing
+(but you are not satisfied with the standard macro mechanism)?
+
+Well, templates could be seen as both new-file templates and macro-like
+template, but the main application of templates determines the answers for the
+following questions:
+      
address@hidden
address@hidden
address@hidden do you define a template?} You can define it by one file per
+template or by customizing some Emacs variables.  The first solution (which is
+used by package Template) avoids Emacs hacking but might not be optimal if you
+just want to define complex macros or if you want to use templates to program a
+new Emacs major-mode.
address@hidden
address@hidden is an appropriate template selected?} If you want to use complex
+macro during editing, the answer is clear: the user have to provide the name of
+the template.  For new files, the appropriate template should be automatically
+selected.  But of course, you don't want to loose any flexibility and you don't
+want to customize your Emacs for every project you start.
address@hidden
address@hidden do you do "clever" things in the template?} The aims are to have
+many predefined expansions (e.g., the current date) and to define some
+non-trivial things without learning Lisp.  Any functionality here is the
+overlapping point of both template categories.
address@hidden itemize
+
+
+
+Here is a little list of related files, collected around 1998, some discarded
+later (no @abbr{URL}s, no active updating, but you can send me a mail):
+
address@hidden
address@hidden
+Package @cite{autoinsert.el} uses templates when creating new files.
+These templates are defined via files or by customizing Emacs.  For each new
+template you want to introduce, you must customize your Emacs, the selection is
+restricted to one template per major-mode or regexp match.  No predefined
+expansions; clever things are provided by usual Lisp expressions or the
+macro-like templates of package @cite{skeleton}.
address@hidden
+Package @cite{skeleton.el} is a Lisp language extension for
+writing statement skeletons, i.e., you get macro-like Lisp commands.
address@hidden
+Package @cite{tempo.el} helps you defining and using named macro-like
+templates.  Its predefined macros are similar to some predefined expansions of
+package Template.  A specific template is used by
+<code class="lisp">html-helper-mode</code> when creating a new html file.
+(This is turned off with the default installation of package Template.)
address@hidden
+Package @cite{hm--html-menus} provides a command to insert templates
+editing.  These templates are defined via files.  There are no predefined
+expansions (except setting point), non-trivial expansions are defined via Lisp.
address@hidden itemize
+
+
+
+
address@hidden Installation,,,Top
address@hidden Installation
+
address@hidden Installation Instructions
+
address@hidden
address@hidden
+Copy file @file{template/lisp/template.el} into your
+load-path and byte-compile it.
address@hidden
+Insert the following code into your Emacs init file
+(@file{~/.emacs}):
+
address@hidden
+(require 'template)
+(template-initialize)
address@hidden lisp
+
address@hidden
+If you want to customize package Template, use @kbd{M-x
+customize-group @key{RET} template
address@hidden or the customize entry in menu
address@hidden
address@hidden
+You might want to copy the template files from directory
address@hidden/templates/} to
address@hidden/.templates/} and change them according to your
+preferences.
address@hidden enumerate
+
+
+Installation instructions with further explanations can be found in file
address@hidden/INSTALL} of the distribution.
+
+ 
+
address@hidden Basics,,,Top
address@hidden Basics
+
+Emacs, template, file template, comment decoration, auto-updating, time stamp, 
details
+
address@hidden
+* menus:: Menus and Key-Bindings.
+* using:: Using a Template.
+* finding:: Finding a Template.
+* creating:: Creating a Template.
+* decorating:: Decorating a Comment.
+* updating:: Updating a Buffer.
address@hidden menu
+
address@hidden menus,,,Basics
address@hidden  Menus and Key-Bindings
address@hidden 
--------------------------------------------------------------------------------
+For Emacs-21.1+ and XEmacs, this package defines the following menu entries and
+key-bindings: 
+
address@hidden
address@hidden
+In menu @kbd{File} , there is a new menu item @kbd{New File
+Using Template...}  .  The corresponding command is also bound to the
+key sequence @kbd{C-x t}.
address@hidden
+At the end of menu @kbd{Cmds} (in XEmacs if it exists) or menu
+ @kbd{Edit} , there is a new submenu @kbd{Template Creation}.
address@hidden
+Enter @kbd{C-x C-=} (command @command{template-single-comment}) to
+insert dashes and alike into the current line and end the comment.
address@hidden
+Enter @kbd{C-x C-;} (command @command{template-single-comment}) to
+insert dashes and alike around the current comment block.
address@hidden
+At the end of menu @kbd{Edit} , there is a new submenu
address@hidden  It also contains the two commands just mentioned.
address@hidden itemize
+
address@hidden 
--------------------------------------------------------------------------------
address@hidden using,,,Basics
address@hidden  Using a Template
address@hidden 
--------------------------------------------------------------------------------
+Package Template offers various ways how to use template files:
+
+In Emacs, the usual way to create a new file is by typing @kbd{C-x C-f},
+using the menu or the toolbar (running command @command{find-file} or
address@hidden) and entering a non-existent file name.  In this case,
+you will be asked whether to use a template for the new file.  You can
+turn off this feature.
+
address@hidden
address@hidden
+Here a first undefined xref @xref{EExpansion}.
+There is a new command @command{template-new-file} @footnote{for the
+menu entry and its key-binding type @kbd{C-h f template-new-file},
address@hidden to create a new file using a template.  Here, you have
+the chance to edit the name of the template file.  This command also
+supports file name refinement which is useful to create a file in a
+series of files like @file{exercise2.tex} etc.
address@hidden
+There is also a command (@kbd{M-x template-expand-template})
+to insert a template file into the current buffer and expand its expansion
+forms.
address@hidden itemize
+
+
+For more @command{template-new-file} and @code{template-auto-insert},
+ @xref{Expansion}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden finding,,,Basics
address@hidden  Finding a Template
address@hidden 
--------------------------------------------------------------------------------
+The algorithm for finding the most appropriate template can be best explained
+with a little example:
+
address@hidden
address@hidden
+You have a project @file{~/proj/} with subprojects @file{foo/} and
address@hidden/} containing @file{.java} files.
address@hidden
+You want to define a general template for the @file{.java} in your
+project files, although @file{.java} files in subproject @file{foo/}
+should use their own template.  You also want to define a special
+template for all files @file{proj.java} in the project.
address@hidden
+Since you do not want to clutter the project directory with template
+files, you first create a directory @file{~/proj/Templates/}.  In this
+directory, you create new files @file{TEMPLATE.java.tpl} and
address@hidden  In directory @file{~/proj/foo/}, you create a new
+file @file{TEMPLATE.java.tpl}.
address@hidden itemize
+
+The creation of the template files in the right directory is already enough for
+packages Template to find the most appropriate template for a new file:
+
address@hidden
address@hidden
+If you create a new file @file{~/proj/foo/abc.java}, this package tries
+to find a template based on the file extension of the new file.  The
+generic base file name for a template is @file{TEMPLATE} and the
+additional extension is @file{.tpl}, a file @file{TEMPLATE.java.tpl}
+exists in @file{~/proj/foo/}, so that file is used as the template.
address@hidden
+If you create a new file @file{~/proj/bar/abc.java}, this package again
+tries to find @file{TEMPLATE.java.tpl}.  Since this file doesn't exist
+in @file{~/proj/bar/}, it first inspects the subdirectory
address@hidden/} which doesn't exist.  The search continues with the
+parent directory @file{~/proj/} and then its subdirectory
address@hidden/}.  Thus @file{~/proj/Templates/TEMPLATE.java.tpl} will
+be used.
address@hidden
+If you create a new file @file{~/proj/foo/proj.java}, this package finds
+a template file with the same base name: it uses
address@hidden/proj/Templates/proj.java.tpl}.  You might argue that
address@hidden/proj/foo/TEMPLATE.java.tpl} resides in a more specific
+directory, but having the same base name is considered to be more
+important (remember that some file like Makefiles do not have file
+extensions).
address@hidden
+If you create a new file @file{~/other_proj/foo/proj.java}, i.e., a
+project where you have defined no template files, this package uses one
+of the default templates, in this case
address@hidden/.templates/TEMPLATE.java.tpl}.
address@hidden itemize
+
+For more on derivation @xref{Derivation}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden creating,,,Basics
address@hidden  Creating a Template
address@hidden 
--------------------------------------------------------------------------------
+
+There are various predefined expansions which are probably enough for
+most templates.  A corresponding expansion forms can be easily inserted
+by selecting the appropriate entry in the new submenu  @kbd{Template
+Creation}
+:
+
address@hidden
address@hidden
+Remember positions: use @samp{(>>>POINT<<<)} to set point (the cursor
+position), @samp{(>>>MARK<<<)} to set mark (e.g., the opposite position
+when a region is highlighted), and @samp{(>>>1<<<)} to @samp{(>>>0<<<)}
+to registers to the current position.  Remember that @kbd{C-x r j
address@hidden jumps to the position stored in register @var{Key}.
address@hidden
+
+Insert parts of the file name, e.g., when creating the new file
address@hidden/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is replaced by
address@hidden/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by @file{abc1.java},
address@hidden(>>>FILE_SANS<<<)} by @file{abc1} , @samp{(>>>FILE_UPCASE<<<)} by
address@hidden , @samp{(>>>FILE_RAW<<<)} by @file{abc},
address@hidden(>>>FILE_NUM<<<)} by @file{1} , and @samp{(>>>FILE_EXT<<<)} by
address@hidden
address@hidden
+Insert the current date/time in two customizable and three fixed
+formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
address@hidden(>>>TIME<<<)} for @samp{20:01:13} , @samp{(>>>YEAR<<<)} for
address@hidden , @samp{(>>>ISO_DATE<<<)} for @samp{2002-02-20} , and
address@hidden(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
address@hidden
+Insert the user/system name in various formats: use
address@hidden(>>>AUTHOR<<<)} for @email{Christoph Wedler
+<wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
address@hidden Wedler} , @samp{(>>>LOGIN_NAME<<<)} for @samp{wedler} ,
+and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} .
address@hidden
+Ask the user for some initial comment.  If this expansion is used, the buffer
+for the new file will be marked as modified.  For each undefined expansion, the
+user is also asked.
address@hidden
+Disabling the search for expansion forms:
address@hidden(>>>ZERO_FORM<<<)} can be inserted into a string which
+will be otherwise regarded as an expansion form, the region between
address@hidden(>>>LITERAL<<<)} and the first
address@hidden(>>>/LITERAL<<<)} after it will be skipped.
address@hidden itemize
+    
+You can define your own expansions in your Emacs init file and at the end of a
+template file.  A corresponding definition can be easily inserted by selecting
+the appropriate entry in the new submenu  @kbd{Template
+Creation}:
+    
address@hidden
+
address@hidden
address@hidden User Input}
+.  Ask the user to insert some text
+using some specific prompt.  Optionally, ask for a text with completion, or for
+a sequence of user input (exit with empty input).
address@hidden
address@hidden Text Register} 
+.  Define a text for
+register @var{Reg} which can be inserted with @kbd{C-x r i @var{Reg}}.
+Optionally, provide a comment for it which will be temporarily shown at
+point.
address@hidden
address@hidden Message}
+.  Define a message which will be
+temporarily shown at point or before/after the expansion in a special buffer.
+There is also a computed message in the echo area.
address@hidden
+
+Execute some Lisp coding defined at the end of the template.  By default, you
+have to confirm it first, since it is insecure to execute unchecked coding.
+(You do not have menu support to define this kind of expansion.)
address@hidden itemize
+
address@hidden template-default-expansion-alist
address@hidden defopt
address@hidden template-definition-start
address@hidden defopt
+
+    
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden decorating,,,Basics
address@hidden  Decorating a Comment
address@hidden 
--------------------------------------------------------------------------------
+
+There are commands to decorate comments with dashes and alike (@samp{-},
address@hidden and @samp{#} by default).  Both commands are included in the
+new submenu @kbd{Comments} 
+and bound to keys:
+
address@hidden
address@hidden
+Use command @code{template-single-comment} to jump to the
+end of the current line and insert the dashes and the final
+comment end-string up-to the fill position.  This command works with any
+comment style, including for languages having mixed comments like C++ and Java.
+It also works in major modes without a defined comment syntax.
address@hidden
+Use command @code{template-block-comment} to surround the
+current comment block (i.e., contiguous comment lines) with extra lines
+containing dashes and alike and to put the correct number of newlines around
+the block.  This command only works with comments which are terminated with the
+end of the line (like Java's @code{//address@hidden code class=text
+ comment).
address@hidden itemize
+
+The comment decoration style is highly customizable and can be controlled by
+
address@hidden
address@hidden
+The prefix argument given to the two commands.
address@hidden
+The existing comment decoration style when present.
address@hidden
+Determined by the indentation or the repetition of a single-character comment
+start (like Emacs-Lisp's @code{;address@hidden code class=text
+).
address@hidden itemize
+
+For more on comments @xref{Comments}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden updating,,,Basics
address@hidden  Updating a Buffer
address@hidden 
--------------------------------------------------------------------------------
+A buffer is automatically updated according to some rules when saving
+the file.  This updating can be invoked explicitly by selecting the menu
+entry @kbd{Update Buffer} in the new submenu @kbd{Comments} .
+
address@hidden
address@hidden
+Update the file name in the first three lines of the buffer if the file name is
+indicated by @code{@@(#) @address@hidden code class=text
+ or
address@hidden;;; @var{FileName} address@hidden code class=text
+ where
address@hidden;;;address@hidden code class=text
+ stands for any comment start (with optional
+repetition of a single-character comment start).
address@hidden
+Update the date if it is the last text inside the
address@hidden@c code class=html
+ element of a HTML buffer.
address@hidden
+Automatic updating is optional, as is user confirmation for it.  Automatic
+updating can be disabled for buffers whose file name matches a regular
+expression.
address@hidden
+If nothing will be changed by the updating, there will be no user confirmation
+and the buffer will not be marked as modified.
address@hidden itemize
+
address@hidden template-update-buffer
address@hidden defopt
address@hidden template-auto-update
address@hidden defopt
address@hidden template-update-buffer-alist
address@hidden defopt
address@hidden template-header-regexp-alist
address@hidden defopt
+
address@hidden Advanced,,,Top  
address@hidden Templates for advanced users
+
address@hidden
+* Customization:: Templates customization.
address@hidden menu
+
address@hidden Customization,,,Advanced
address@hidden Templates customization
+
address@hidden
+* Expansion:: Customization of keyword expansion rules.
+* Derivation:: Customization of how templates are derived.
+* Comments:: Customization of comments.
address@hidden menu
+
address@hidden Expansion,,,Customization
address@hidden Customization of keyword expansion rules
+
address@hidden {Interactive Command} template-new-file {file template with-undo}
+Open a new file @var{file} by using a @var{template}.
+Using a template for creating a new file consists of, steps 1 to 3 are
+only executed when called interactively:
address@hidden
address@hidden
+Prompt for the name of the new file.
address@hidden
+Template derivation: suggest a reasonable template file to the user see
address@hidden
address@hidden
+File name refinement: e.g., if the given file name is @file{exercise}
+and there are two files @file{exercise1.tex} and @file{exercise2.tex} in
+the same directory and if we have a template @file{exercise.tex.tpl},
+the file name is refined to @file{exercise3.tex}.  This is turned off
+when @kbd{C-x t} is called with a prefix argument.
address@hidden
+Template insertion: insert the template file into the empty buffer.
address@hidden
+Read per-template expansion definition section starting at
address@hidden and delete it.
address@hidden
+Display: before message in @code{template-message-buffer}.
address@hidden
+Execute pre-expansion commands defined in the definition section.
address@hidden
+Set local variables defined in the definition section.
address@hidden
+Expansion: expand the expansion forms (text matched by
address@hidden) They are defined in the definition
+section, in @code{template-expansion-alist}, or provided by default,
+see @code{template-expansion-regexp} and
address@hidden
address@hidden
+Execute post-expansion commands defined in the definition section.
address@hidden
+Run @code{normal-mode} and functions in @code{find-file-hooks}.
address@hidden
+Update header according to @command{template-update-header} with
address@hidden Vincent: What is this if-exists argument ?
+argument @code{if-exists}.
address@hidden
+Display: after message in @code{template-message-buffer}.
address@hidden
+Report: display a temporary message at point defined in the definition
+section and an automatically generated message in the minibuffer area,
+see @code{template-message-timeout}.
address@hidden enumerate
+If optional @var{with-undo} is non-nil, store corresponding changes in
address@hidden  If @var{file} is nil, the buffer for @var{file} has
+already been created and the accessible part will be replaced by the
+expanded template.  If @var{template} is nil (empty input when called
+interactively), do not use a template.
address@hidden deffn
+
address@hidden template-auto-insert
address@hidden defopt
+
address@hidden Derivation,,,Customization
address@hidden Customization of how templates are derived
+
address@hidden template-derivation-alist
address@hidden defopt
+
address@hidden Comments,,,Customization
address@hidden Customization of comments
+
address@hidden template-single-comment
address@hidden defopt
+
address@hidden {Interactive command} template-block-comment arg
+It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> <Comment> <Decorate 
Comment Block>}.
+
+Decorate the current block of comment-only lines with dashes and alike.
+That is, surround the the contiguous comment-only lines around point
+with extra lines containing dashes and alike and to put the correct
+number of newlines around the block.
+
+Barf if the comment syntax at point has a non-empty @code{comment-end} or if
+point is not in a comment-only line.
+
+A block comment consists of all neighboring lines which start with
+spaces and @code{comment-start}.  If @code{comment-start} is a string of 
length 1,
+the number of repetitions of @code{comment-start} must be the same or larger
+than in the line where the command is invoked from, too.
+
+Prefix argument @var{arg} and @code{template-comment-specification} determines 
the
+comment style to use.  The length of the separator line is determined by
address@hidden
+
+This command can also be used with point in an empty line after a block
+comment.  A second invocation of this command directly after a
+successful invocation deletes the remaining empty lines from the current
+line on.
address@hidden deffn
+
address@hidden template-comment-specification-alist
+List of specifications for comment functions.  Each specification at
address@hidden, starting at 1, is a list @code{(@var{separator}
address@hidden @var{after-block} @var{DELETE-LINES})}
+
address@hidden is the string which is inserted repeatedly by commands
address@hidden C-=} and @kbd{C-x C-;} up to @code{template-max-column}.
+
+After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} after the comment block
+and inserts string @var{after-block} at the end of the block and
address@hidden at the front of the block.
+
+The specification @var{level} to use is determined by:
address@hidden
address@hidden
+If the prefix argument is non-nil and its numeric value is > 0, this
+value is the @var{level}.
address@hidden
+If the prefix argument is nil, and there is an old comment style, use
+old comment style.
address@hidden
+If @code{template-comment-specification-special} is a function or the
+current major mode has a property with this name and its value is a
+function, this function returns the specification.
address@hidden
+If @code{comment-end} is empty and @code{comment-start} is a string of
+length 1: @var{level} is number of repetitions of @code{comment-start}
+at the beginning of the line.  Otherwise, if the correctly indented line
+starts at the beginning of the line, @var{level}=3, else @var{level}=2.
address@hidden enumerate
address@hidden defopt
+
+
address@hidden Indexes,,,Top  
address@hidden Indexes for commands, keyword, and variable
+
address@hidden
+* Keyword Index:: Keyword Index.
+* Command Index:: Command Index.
+* Variable Index:: Customizable Variable Index.
address@hidden menu
+
address@hidden Keyword Index,,,Indexes
address@hidden Keyword Index
+
address@hidden Command Index,,,Indexes
address@hidden Keyword Index
+
address@hidden fn
+
address@hidden Variable Index,,,Indexes
address@hidden Variable Index
+
address@hidden vr
+
address@hidden News,,,Top  
address@hidden News for Package Template
+
address@hidden @asis
address@hidden Latest Version:
address@hidden (21 Aug 2003).
address@hidden Requirements:
address@hidden, @cite{XEmacs-20.2}, or higher.  
+
+No menu support for Emacs before Version 21.1.
address@hidden Licence: 
address@hidden General Public License}.
address@hidden table
+
address@hidden Changes with Release 3.1c
+
address@hidden
address@hidden
+Bug fix: on XEmacs, initialization would fail without menus "File" and "Edit" 
in menubar.
address@hidden
+Allow messages to be displayed in a separate buffer "*Template Messages*"
+instead at point.
address@hidden
+Correct and improve header updating.
address@hidden
+Extend use of @code{M-x template-single-comment}.
address@hidden
+Minor bug fixes.  Miscellaneous.
address@hidden itemize
+
+    
address@hidden Changes with Release 3.1
+
address@hidden
address@hidden
+Moved to SourceForge.net.  Less technical description on web page.
address@hidden
+Remove examples from distribution, they were more confusing than helpful.
address@hidden
+Bug fix: would sometimes indent the current line when using the menubar.
address@hidden
+Menus work with Emacs-21, too.  Rename some menu entries.
address@hidden
+Don't search further for remote templates.  Nuke this home/base directory
+stuff, stop search at root.
address@hidden
+Don't rely on command @command{ffap} to always add an entry to
address@hidden if the filename is read from terminal.  Special
+setup for @code{ffap} and @code{html-helper}.
address@hidden
+Make date/time formats work as names suggest.
address@hidden
+Command to insert & expand a template file.
address@hidden
+Allow user to define a choice in the definition section to be answered
+via @code{y-or-n-p}.
address@hidden
+Various miscellaneous improvements.  Minor bug fixes.
address@hidden itemize
+    
address@hidden Acknowledgements,,,Top  
+
+Christoph Wedler @uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+
+
address@hidden

Index: misc/res_info/texi_templates/templates.texi.first
===================================================================
RCS file: misc/res_info/texi_templates/templates.texi.first
diff -N misc/res_info/texi_templates/templates.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_info/texi_templates/templates.texi.first   2 Aug 2009 13:13:19 
-0000       1.1
@@ -0,0 +1,726 @@
+\input texinfo   @c -*- mode: texinfo; coding: iso-8859-1-unix -*-
address@hidden %**start of header
address@hidden templates.info
address@hidden iso-8859-1
address@hidden en
address@hidden  Emacs template package documentation, version 3.1c
address@hidden %**end of header
address@hidden kbdmenu = kbd
address@hidden codetpl = samp
address@hidden codevar = code
+
+
address@hidden Emacs
address@hidden
+* Templates: (templates). Creating templates for files creation.
address@hidden direntry
+
+
+
address@hidden Top,,,(dir)top
address@hidden Top node.
+
+This is the manual of Emacs template package
+
address@hidden
+* Overview:: Overview.
+* Installation:: how to install the template package.
+* Basics:: How to make and use templates.
+* Advanced:: Templates for advanced users.
+* Indexes:: Indexes for commands, keyword, and variable.
+* News:: News for Package Template.
+* Acknowledgements:: Acknowledgements.
address@hidden menu
+
address@hidden Overview,,,Top
address@hidden Overview
+
+When you create a new file with Emacs, package Template supplies an initial
+buffer content via a template: a file with normal text and expansion forms.
+There is a menu to easily create such templates.  You can also use new commands
+to decorate comments and update the buffer contents.
+
+
+The main difference between Template and @ref{Related,other similar
+packages} is that you can define very flexible templates without having
+to learn Lisp or changing your Emacs init file.  This package does not
+help Lisp programmers to define complex macros.
+
address@hidden
address@hidden
+The template mechanism is hooked into the normal find/open file command.  There
+are also new commands for creating a new file using a template and inserting 
&amp;
+expanding a template.
address@hidden
+You do not have to enter the file name of the template file.  This package uses
+a sophisticated search to find the most appropritate template (supporting
+project- and subproject specific template files).  You can change the
+suggestion, of course.
address@hidden
+A template file can be easily created.  Most of the file usually contains
+simple text; only @dfn{expansion forms} which look like
address@hidden(>>>@var{Key}<<<)} will get replaced.
address@hidden
+There are various useful predefined expansions: set point (the cursor
+position), mark and registers to the current position; insert various parts of
+the filename, the user/system name, the current date/time in various formats,
+and some text to be entered by the user.
address@hidden
+Template-specific expansions can be defined at the end of the template file.
+There are commands to create these definitions; only complex expansions would
+require some knowledge of Lisp.
address@hidden itemize
+
+There is a menu to support the creation of template files.  Additionally, this
+package provides the following features:
+
address@hidden
address@hidden
+When saving a buffer, some parts of the buffer contents (header and time
+stamps) are automatically updated if necessary.
address@hidden
+There are commands to decorate comments with dashes and alike.  Works for
+languages with any comment style, even languages having mixed comments like C++
+and Java.
address@hidden itemize
+
+
address@hidden Related,,,Overview
address@hidden Packages Related to Template
+
+
+There are template packages of two different categories, which are determined
+by one question:
+
address@hidden do you want to do with templates?} Do you want to use templates
+when creating new files, or do you want to insert some stuff during editing
+(but you are not satisfied with the standard macro mechanism)?
+
+Well, templates could be seen as both new-file templates and macro-like
+template, but the main application of templates determines the answers for the
+following questions:
+      
address@hidden
address@hidden
address@hidden do you define a template?} You can define it by one file per
+template or by customizing some Emacs variables.  The first solution (which is
+used by package Template) avoids Emacs hacking but might not be optimal if you
+just want to define complex macros or if you want to use templates to program a
+new Emacs major-mode.
address@hidden
address@hidden is an appropriate template selected?} If you want to use complex
+macro during editing, the answer is clear: the user have to provide the name of
+the template.  For new files, the appropriate template should be automatically
+selected.  But of course, you don't want to loose any flexibility and you don't
+want to customize your Emacs for every project you start.
address@hidden
address@hidden do you do "clever" things in the template?} The aims are to have
+many predefined expansions (e.g., the current date) and to define some
+non-trivial things without learning Lisp.  Any functionality here is the
+overlapping point of both template categories.
address@hidden itemize
+
+
+
+Here is a little list of related files, collected around 1998, some discarded
+later (no @abbr{URL}s, no active updating, but you can send me a mail):
+
address@hidden
address@hidden
+Package @cite{autoinsert.el} uses templates when creating new files.
+These templates are defined via files or by customizing Emacs.  For each new
+template you want to introduce, you must customize your Emacs, the selection is
+restricted to one template per major-mode or regexp match.  No predefined
+expansions; clever things are provided by usual Lisp expressions or the
+macro-like templates of package @cite{skeleton}.
address@hidden
+Package @cite{skeleton.el} is a Lisp language extension for
+writing statement skeletons, i.e., you get macro-like Lisp commands.
address@hidden
+Package @cite{tempo.el} helps you defining and using named macro-like
+templates.  Its predefined macros are similar to some predefined expansions of
+package Template.  A specific template is used by
+<code class="lisp">html-helper-mode</code> when creating a new html file.
+(This is turned off with the default installation of package Template.)
address@hidden
+Package @cite{hm--html-menus} provides a command to insert templates
+editing.  These templates are defined via files.  There are no predefined
+expansions (except setting point), non-trivial expansions are defined via Lisp.
address@hidden itemize
+
+
+
+
address@hidden Installation,,,Top
address@hidden Installation
+
address@hidden Installation Instructions
+
address@hidden
address@hidden
+Copy file @file{template/lisp/template.el} into your
+load-path and byte-compile it.
address@hidden
+Insert the following code into your Emacs init file
+(@file{~/.emacs}):
+
address@hidden
+(require 'template)
+(template-initialize)
address@hidden lisp
+
address@hidden
+If you want to customize package Template, use @kbd{M-x
+customize-group @key{RET} template
address@hidden or the customize entry in menu
address@hidden
address@hidden
+You might want to copy the template files from directory
address@hidden/templates/} to
address@hidden/.templates/} and change them according to your
+preferences.
address@hidden enumerate
+
+
+Installation instructions with further explanations can be found in file
address@hidden/INSTALL} of the distribution.
+
+ 
+
address@hidden Basics,,,Top
address@hidden Basics
+
+Emacs, template, file template, comment decoration, auto-updating, time stamp, 
details
+
address@hidden
+* menus:: Menus and Key-Bindings.
+* using:: Using a Template.
+* finding:: Finding a Template.
+* creating:: Creating a Template.
+* decorating:: Decorating a Comment.
+* updating:: Updating a Buffer.
address@hidden menu
+
address@hidden menus,,,Basics
address@hidden  Menus and Key-Bindings
address@hidden 
--------------------------------------------------------------------------------
+For Emacs-21.1+ and XEmacs, this package defines the following menu entries and
+key-bindings: 
+
address@hidden
address@hidden
+In menu @kbd{File} , there is a new menu item @kbd{New File
+Using Template...}  .  The corresponding command is also bound to the
+key sequence @kbd{C-x t}.
address@hidden
+At the end of menu @kbd{Cmds} (in XEmacs if it exists) or menu
+ @kbd{Edit} , there is a new submenu @kbd{Template Creation}.
address@hidden
+Enter @kbd{C-x C-=} (command @command{template-single-comment}) to
+insert dashes and alike into the current line and end the comment.
address@hidden
+Enter @kbd{C-x C-;} (command @command{template-single-comment}) to
+insert dashes and alike around the current comment block.
address@hidden
+At the end of menu @kbd{Edit} , there is a new submenu
address@hidden  It also contains the two commands just mentioned.
address@hidden itemize
+
address@hidden 
--------------------------------------------------------------------------------
address@hidden using,,,Basics
address@hidden  Using a Template
address@hidden 
--------------------------------------------------------------------------------
+Package Template offers various ways how to use template files:
+
+In Emacs, the usual way to create a new file is by typing @kbd{C-x C-f},
+using the menu or the toolbar (running command @command{find-file} or
address@hidden) and entering a non-existent file name.  In this case,
+you will be asked whether to use a template for the new file.  You can
+turn off this feature.
+
address@hidden
address@hidden
+Here a first undefined xref @xref{EExpansion}.
+There is a new command @command{template-new-file} @footnote{for the
+menu entry and its key-binding type @kbd{C-h f template-new-file},
address@hidden to create a new file using a template.  Here, you have
+the chance to edit the name of the template file.  This command also
+supports file name refinement which is useful to create a file in a
+series of files like @file{exercise2.tex} etc.
address@hidden
+There is also a command (@kbd{M-x template-expand-template})
+to insert a template file into the current buffer and expand its expansion
+forms.
address@hidden itemize
+
+
+For more @command{template-new-file} and @code{template-auto-insert},
+ @xref{Expansion}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden finding,,,Basics
address@hidden  Finding a Template
address@hidden 
--------------------------------------------------------------------------------
+The algorithm for finding the most appropriate template can be best explained
+with a little example:
+
address@hidden
address@hidden
+You have a project @file{~/proj/} with subprojects @file{foo/} and
address@hidden/} containing @file{.java} files.
address@hidden
+You want to define a general template for the @file{.java} in your
+project files, although @file{.java} files in subproject @file{foo/}
+should use their own template.  You also want to define a special
+template for all files @file{proj.java} in the project.
address@hidden
+Since you do not want to clutter the project directory with template
+files, you first create a directory @file{~/proj/Templates/}.  In this
+directory, you create new files @file{TEMPLATE.java.tpl} and
address@hidden  In directory @file{~/proj/foo/}, you create a new
+file @file{TEMPLATE.java.tpl}.
address@hidden itemize
+
+The creation of the template files in the right directory is already enough for
+packages Template to find the most appropriate template for a new file:
+
address@hidden
address@hidden
+If you create a new file @file{~/proj/foo/abc.java}, this package tries
+to find a template based on the file extension of the new file.  The
+generic base file name for a template is @file{TEMPLATE} and the
+additional extension is @file{.tpl}, a file @file{TEMPLATE.java.tpl}
+exists in @file{~/proj/foo/}, so that file is used as the template.
address@hidden
+If you create a new file @file{~/proj/bar/abc.java}, this package again
+tries to find @file{TEMPLATE.java.tpl}.  Since this file doesn't exist
+in @file{~/proj/bar/}, it first inspects the subdirectory
address@hidden/} which doesn't exist.  The search continues with the
+parent directory @file{~/proj/} and then its subdirectory
address@hidden/}.  Thus @file{~/proj/Templates/TEMPLATE.java.tpl} will
+be used.
address@hidden
+If you create a new file @file{~/proj/foo/proj.java}, this package finds
+a template file with the same base name: it uses
address@hidden/proj/Templates/proj.java.tpl}.  You might argue that
address@hidden/proj/foo/TEMPLATE.java.tpl} resides in a more specific
+directory, but having the same base name is considered to be more
+important (remember that some file like Makefiles do not have file
+extensions).
address@hidden
+If you create a new file @file{~/other_proj/foo/proj.java}, i.e., a
+project where you have defined no template files, this package uses one
+of the default templates, in this case
address@hidden/.templates/TEMPLATE.java.tpl}.
address@hidden itemize
+
+For more on derivation @xref{Derivation}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden creating,,,Basics
address@hidden  Creating a Template
address@hidden 
--------------------------------------------------------------------------------
+
+There are various predefined expansions which are probably enough for
+most templates.  A corresponding expansion forms can be easily inserted
+by selecting the appropriate entry in the new submenu  @kbd{Template
+Creation}
+:
+
address@hidden
address@hidden
+Remember positions: use @samp{(>>>POINT<<<)} to set point (the cursor
+position), @samp{(>>>MARK<<<)} to set mark (e.g., the opposite position
+when a region is highlighted), and @samp{(>>>1<<<)} to @samp{(>>>0<<<)}
+to registers to the current position.  Remember that @kbd{C-x r j
address@hidden jumps to the position stored in register @var{Key}.
address@hidden
+
+Insert parts of the file name, e.g., when creating the new file
address@hidden/proj/foo/abc1.java}: @samp{(>>>DIR<<<)} is replaced by
address@hidden/home/user/proj/foo/}, @samp{(>>>FILE<<<)} by @file{abc1.java},
address@hidden(>>>FILE_SANS<<<)} by @file{abc1} , @samp{(>>>FILE_UPCASE<<<)} by
address@hidden , @samp{(>>>FILE_RAW<<<)} by @file{abc},
address@hidden(>>>FILE_NUM<<<)} by @file{1} , and @samp{(>>>FILE_EXT<<<)} by
address@hidden
address@hidden
+Insert the current date/time in two customizable and three fixed
+formats: use @samp{(>>>DATE<<<)} for @samp{20 Feb 2002},
address@hidden(>>>TIME<<<)} for @samp{20:01:13} , @samp{(>>>YEAR<<<)} for
address@hidden , @samp{(>>>ISO_DATE<<<)} for @samp{2002-02-20} , and
address@hidden(>>>VC_DATE<<<)} for @samp{2002/02/20 19:01:13}
address@hidden
+Insert the user/system name in various formats: use
address@hidden(>>>AUTHOR<<<)} for @email{Christoph Wedler
+<wedler@@fmi.uni-passau.de>}, @samp{(>>>USER_NAME<<<)} for
address@hidden Wedler} , @samp{(>>>LOGIN_NAME<<<)} for @samp{wedler} ,
+and @samp{(>>>HOST_ADDR<<<)} for @samp{fmi.uni-passau.de} .
address@hidden
+Ask the user for some initial comment.  If this expansion is used, the buffer
+for the new file will be marked as modified.  For each undefined expansion, the
+user is also asked.
address@hidden
+Disabling the search for expansion forms:
address@hidden(>>>ZERO_FORM<<<)} can be inserted into a string which
+will be otherwise regarded as an expansion form, the region between
address@hidden(>>>LITERAL<<<)} and the first
address@hidden(>>>/LITERAL<<<)} after it will be skipped.
address@hidden itemize
+    
+You can define your own expansions in your Emacs init file and at the end of a
+template file.  A corresponding definition can be easily inserted by selecting
+the appropriate entry in the new submenu  @kbd{Template
+Creation}:
+    
address@hidden
+
address@hidden
address@hidden User Input}
+.  Ask the user to insert some text
+using some specific prompt.  Optionally, ask for a text with completion, or for
+a sequence of user input (exit with empty input).
address@hidden
address@hidden Text Register} 
+.  Define a text for
+register @var{Reg} which can be inserted with @kbd{C-x r i @var{Reg}}.
+Optionally, provide a comment for it which will be temporarily shown at
+point.
address@hidden
address@hidden Message}
+.  Define a message which will be
+temporarily shown at point or before/after the expansion in a special buffer.
+There is also a computed message in the echo area.
address@hidden
+
+Execute some Lisp coding defined at the end of the template.  By default, you
+have to confirm it first, since it is insecure to execute unchecked coding.
+(You do not have menu support to define this kind of expansion.)
address@hidden itemize
+
address@hidden template-default-expansion-alist
address@hidden defopt
address@hidden template-definition-start
address@hidden defopt
+
+    
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden decorating,,,Basics
address@hidden  Decorating a Comment
address@hidden 
--------------------------------------------------------------------------------
+
+There are commands to decorate comments with dashes and alike (@samp{-},
address@hidden and @samp{#} by default).  Both commands are included in the
+new submenu @kbd{Comments} 
+and bound to keys:
+
address@hidden
address@hidden
+Use command @code{template-single-comment} to jump to the
+end of the current line and insert the dashes and the final
+comment end-string up-to the fill position.  This command works with any
+comment style, including for languages having mixed comments like C++ and Java.
+It also works in major modes without a defined comment syntax.
address@hidden
+Use command @code{template-block-comment} to surround the
+current comment block (i.e., contiguous comment lines) with extra lines
+containing dashes and alike and to put the correct number of newlines around
+the block.  This command only works with comments which are terminated with the
+end of the line (like Java's @code{//address@hidden code class=text
+ comment).
address@hidden itemize
+
+The comment decoration style is highly customizable and can be controlled by
+
address@hidden
address@hidden
+The prefix argument given to the two commands.
address@hidden
+The existing comment decoration style when present.
address@hidden
+Determined by the indentation or the repetition of a single-character comment
+start (like Emacs-Lisp's @code{;address@hidden code class=text
+).
address@hidden itemize
+
+For more on comments @xref{Comments}.
+
address@hidden 
--------------------------------------------------------------------------------
+
address@hidden updating,,,Basics
address@hidden  Updating a Buffer
address@hidden 
--------------------------------------------------------------------------------
+A buffer is automatically updated according to some rules when saving
+the file.  This updating can be invoked explicitly by selecting the menu
+entry @kbd{Update Buffer} in the new submenu @kbd{Comments} .
+
address@hidden
address@hidden
+Update the file name in the first three lines of the buffer if the file name is
+indicated by @code{@@(#) @address@hidden code class=text
+ or
address@hidden;;; @var{FileName} address@hidden code class=text
+ where
address@hidden;;;address@hidden code class=text
+ stands for any comment start (with optional
+repetition of a single-character comment start).
address@hidden
+Update the date if it is the last text inside the
address@hidden@c code class=html
+ element of a HTML buffer.
address@hidden
+Automatic updating is optional, as is user confirmation for it.  Automatic
+updating can be disabled for buffers whose file name matches a regular
+expression.
address@hidden
+If nothing will be changed by the updating, there will be no user confirmation
+and the buffer will not be marked as modified.
address@hidden itemize
+
address@hidden template-update-buffer
address@hidden defopt
address@hidden template-auto-update
address@hidden defopt
address@hidden template-update-buffer-alist
address@hidden defopt
address@hidden template-header-regexp-alist
address@hidden defopt
+
address@hidden Advanced,,,Top  
address@hidden Templates for advanced users
+
address@hidden
+* Customization:: Templates customization.
address@hidden menu
+
address@hidden Customization,,,Advanced
address@hidden Templates customization
+
address@hidden
+* Expansion:: Customization of keyword expansion rules.
+* Derivation:: Customization of how templates are derived.
+* Comments:: Customization of comments.
address@hidden menu
+
address@hidden Expansion,,,Customization
address@hidden Customization of keyword expansion rules
+
address@hidden {Interactive Command} template-new-file {file template with-undo}
+Open a new file @var{file} by using a @var{template}.
+Using a template for creating a new file consists of, steps 1 to 3 are
+only executed when called interactively:
address@hidden
address@hidden
+Prompt for the name of the new file.
address@hidden
+Template derivation: suggest a reasonable template file to the user see
address@hidden
address@hidden
+File name refinement: e.g., if the given file name is @file{exercise}
+and there are two files @file{exercise1.tex} and @file{exercise2.tex} in
+the same directory and if we have a template @file{exercise.tex.tpl},
+the file name is refined to @file{exercise3.tex}.  This is turned off
+when @kbd{C-x t} is called with a prefix argument.
address@hidden
+Template insertion: insert the template file into the empty buffer.
address@hidden
+Read per-template expansion definition section starting at
address@hidden and delete it.
address@hidden
+Display: before message in @code{template-message-buffer}.
address@hidden
+Execute pre-expansion commands defined in the definition section.
address@hidden
+Set local variables defined in the definition section.
address@hidden
+Expansion: expand the expansion forms (text matched by
address@hidden) They are defined in the definition
+section, in @code{template-expansion-alist}, or provided by default,
+see @code{template-expansion-regexp} and
address@hidden
address@hidden
+Execute post-expansion commands defined in the definition section.
address@hidden
+Run @code{normal-mode} and functions in @code{find-file-hooks}.
address@hidden
+Update header according to @command{template-update-header} with
address@hidden Vincent: What is this if-exists argument ?
+argument @code{if-exists}.
address@hidden
+Display: after message in @code{template-message-buffer}.
address@hidden
+Report: display a temporary message at point defined in the definition
+section and an automatically generated message in the minibuffer area,
+see @code{template-message-timeout}.
address@hidden enumerate
+If optional @var{with-undo} is non-nil, store corresponding changes in
address@hidden  If @var{file} is nil, the buffer for @var{file} has
+already been created and the accessible part will be replaced by the
+expanded template.  If @var{template} is nil (empty input when called
+interactively), do not use a template.
address@hidden deffn
+
address@hidden template-auto-insert
address@hidden defopt
+
address@hidden Derivation,,,Customization
address@hidden Customization of how templates are derived
+
address@hidden template-derivation-alist
address@hidden defopt
+
address@hidden Comments,,,Customization
address@hidden Customization of comments
+
address@hidden template-single-comment
address@hidden defopt
+
address@hidden {Interactive command} template-block-comment arg
+It is bound to @kbd{C-x C-;}, and @kbd{<menu-bar> <edit> <Comment> <Decorate 
Comment Block>}.
+
+Decorate the current block of comment-only lines with dashes and alike.
+That is, surround the the contiguous comment-only lines around point
+with extra lines containing dashes and alike and to put the correct
+number of newlines around the block.
+
+Barf if the comment syntax at point has a non-empty @code{comment-end} or if
+point is not in a comment-only line.
+
+A block comment consists of all neighboring lines which start with
+spaces and @code{comment-start}.  If @code{comment-start} is a string of 
length 1,
+the number of repetitions of @code{comment-start} must be the same or larger
+than in the line where the command is invoked from, too.
+
+Prefix argument @var{arg} and @code{template-comment-specification} determines 
the
+comment style to use.  The length of the separator line is determined by
address@hidden
+
+This command can also be used with point in an empty line after a block
+comment.  A second invocation of this command directly after a
+successful invocation deletes the remaining empty lines from the current
+line on.
address@hidden deffn
+
address@hidden template-comment-specification-alist
+List of specifications for comment functions.  Each specification at
address@hidden, starting at 1, is a list @code{(@var{separator}
address@hidden @var{after-block} @var{DELETE-LINES})}
+
address@hidden is the string which is inserted repeatedly by commands
address@hidden C-=} and @kbd{C-x C-;} up to @code{template-max-column}.
+
+After that, @kbd{C-x C-;} deletes @var{DELETE-LINES} after the comment block
+and inserts string @var{after-block} at the end of the block and
address@hidden at the front of the block.
+
+The specification @var{level} to use is determined by:
address@hidden
address@hidden
+If the prefix argument is non-nil and its numeric value is > 0, this
+value is the @var{level}.
address@hidden
+If the prefix argument is nil, and there is an old comment style, use
+old comment style.
address@hidden
+If @code{template-comment-specification-special} is a function or the
+current major mode has a property with this name and its value is a
+function, this function returns the specification.
address@hidden
+If @code{comment-end} is empty and @code{comment-start} is a string of
+length 1: @var{level} is number of repetitions of @code{comment-start}
+at the beginning of the line.  Otherwise, if the correctly indented line
+starts at the beginning of the line, @var{level}=3, else @var{level}=2.
address@hidden enumerate
address@hidden defopt
+
+
address@hidden Indexes,,,Top  
address@hidden Indexes for commands, keyword, and variable
+
address@hidden
+* Keyword Index:: Keyword Index.
+* Command Index:: Command Index.
+* Variable Index:: Customizable Variable Index.
address@hidden menu
+
address@hidden Keyword Index,,,Indexes
address@hidden Keyword Index
+
address@hidden Command Index,,,Indexes
address@hidden Keyword Index
+
address@hidden fn
+
address@hidden Variable Index,,,Indexes
address@hidden Variable Index
+
address@hidden vr
+
address@hidden News,,,Top  
address@hidden News for Package Template
+
address@hidden @asis
address@hidden Latest Version:
address@hidden (21 Aug 2003).
address@hidden Requirements:
address@hidden, @cite{XEmacs-20.2}, or higher.  
+
+No menu support for Emacs before Version 21.1.
address@hidden Licence: 
address@hidden General Public License}.
address@hidden table
+
address@hidden Changes with Release 3.1c
+
address@hidden
address@hidden
+Bug fix: on XEmacs, initialization would fail without menus "File" and "Edit" 
in menubar.
address@hidden
+Allow messages to be displayed in a separate buffer "*Template Messages*"
+instead at point.
address@hidden
+Correct and improve header updating.
address@hidden
+Extend use of @code{M-x template-single-comment}.
address@hidden
+Minor bug fixes.  Miscellaneous.
address@hidden itemize
+
+    
address@hidden Changes with Release 3.1
+
address@hidden
address@hidden
+Moved to SourceForge.net.  Less technical description on web page.
address@hidden
+Remove examples from distribution, they were more confusing than helpful.
address@hidden
+Bug fix: would sometimes indent the current line when using the menubar.
address@hidden
+Menus work with Emacs-21, too.  Rename some menu entries.
address@hidden
+Don't search further for remote templates.  Nuke this home/base directory
+stuff, stop search at root.
address@hidden
+Don't rely on command @command{ffap} to always add an entry to
address@hidden if the filename is read from terminal.  Special
+setup for @code{ffap} and @code{html-helper}.
address@hidden
+Make date/time formats work as names suggest.
address@hidden
+Command to insert & expand a template file.
address@hidden
+Allow user to define a choice in the definition section to be answered
+via @code{y-or-n-p}.
address@hidden
+Various miscellaneous improvements.  Minor bug fixes.
address@hidden itemize
+    
address@hidden Acknowledgements,,,Top  
+
+Christoph Wedler @uref{http://sourceforge.net/users/wedler/}, 21 Aug 2003
+
+
address@hidden

Index: misc/res_info/texi_testkb/testkb.texi.first
===================================================================
RCS file: misc/res_info/texi_testkb/testkb.texi.first
diff -N misc/res_info/texi_testkb/testkb.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_info/texi_testkb/testkb.texi.first 2 Aug 2009 13:13:19 -0000       
1.1
@@ -0,0 +1,202 @@
+\input texinfo @c -*-texinfo-*-
address@hidden testkb.info
address@hidden de
address@hidden ASCII
address@hidden on
address@hidden separate
address@hidden
address@hidden 
----------------------------------------------------------------------------
address@hidden Top,Overview,,(dir)
address@hidden Test 1
+Hier kann eine Erkl@"arung zum Thema stehen oder auch nicht.
+Noch mehr erkl@"arungen zu dem Thema.
address@hidden
+* Overview::.       Methode four.
address@hidden menu
address@hidden 
----------------------------------------------------------------------------
address@hidden Overview,,Top,Top
address@hidden Class
+Here you can read many things I need for this documentation.
+But more and more of this exploration can be done here.
address@hidden Overview
+Das ist ein Test @r{Roman Text in einer Umgebung}
+
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+Hier ist normaler Text. Hier sollte keine Einr@"uckung stattfinden.
+Sondern eher ein normaler umbruch. Somit kann es hier wieder
+weitergehen. Oder sehe ich da was falsch.
+
address@hidden dcvKat dcvClass dcvName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defcv. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defcv.
address@hidden defcv
+
address@hidden {dfnKat} dfnName (dfnArgumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden
address@hidden Erstens
address@hidden Zweitens
address@hidden Drittens
address@hidden itemize
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden 2
address@hidden
+Das ist ein Beispiel in HTML
+Das ist ein Beispiel in HTML
+Das ist ein Beispiel in HTML
+Das ist ein Beispiel in HTML
address@hidden example
address@hidden
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden deffn
+
address@hidden {dfnKat1} dfnName1 (dfnArgumente11)
address@hidden {dfnKat2} dfnName2 (dfnArgumente12)
address@hidden {dfnKat3} dfnName3 (dfnArgumente13)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deffn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deffn.
address@hidden deffn
+
address@hidden {divClass} {divExemplarVar}
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defivar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defivar.
address@hidden defivar
+
address@hidden dmcName (dmcArgumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defmac. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defmac.
address@hidden defmac
+
address@hidden {dmeClass} dmName (dmArguments)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defmethod. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defmethod.
address@hidden defmethod
+
address@hidden {dopKat} {dopClass} dopName (dopArgumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defop. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defop.
address@hidden defop
+
address@hidden {dptName}
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defopt. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defopt.
address@hidden defopt
+
address@hidden dspName (dspArgument)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defspec. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defspec.
address@hidden defspec
+
address@hidden {dtpKat} dtpType (dtpA1 dtpA2)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftp. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftp.
address@hidden deftp
+
address@hidden {PUBLIC} int EditLine (int col, int row)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypefn. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypefn.
address@hidden deftypefn
+
address@hidden int FunktionEins (int col, int row)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypefun. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypefun.
address@hidden deftypefun
+
address@hidden {dtmClass} int dtmName (int col, int row)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypemethod. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypemethod.
address@hidden deftypemethod
+
address@hidden DataType VarName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypevar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypevar.
address@hidden deftypevar
+
address@hidden {dtiv} DataType VarName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypeivar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypeivar.
address@hidden deftypeivar
+
address@hidden {dtv} DataType VarName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypevr. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypevr.
address@hidden deftypevr
+
address@hidden FuntionName (Argumente)
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defun. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defun.
address@hidden defun
+
address@hidden VariablenName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defvar. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defvar.
address@hidden defvar
+
address@hidden {dvrKat} dvrName
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu defvr. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu defvr.
address@hidden defvr
+
address@hidden {dtypeopCat} deftypeopClass deftypeopType deftypeopName 
deftypeopArgs
+Hier address@hidden in HTML eine Tabelle erzeugt werden. Hier ist das ok.
+Beschreibung zu deftypeop. Hier address@hidden in HTML eine Tabelle erzeugt
+werden. Hier ist das ok. Beschreibung zu deftypeop.
address@hidden deftypeop
+
address@hidden Indizes
address@hidden Konzept Index
address@hidden cp
address@hidden Funktionen Index
address@hidden fn
address@hidden Programme Index
address@hidden pg
address@hidden Tasten Index
address@hidden ky
address@hidden Var Index
address@hidden vr
address@hidden
address@hidden

Index: misc/res_info/texi_verbatim_html/verbatim_html.texi.first
===================================================================
RCS file: misc/res_info/texi_verbatim_html/verbatim_html.texi.first
diff -N misc/res_info/texi_verbatim_html/verbatim_html.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_info/texi_verbatim_html/verbatim_html.texi.first   2 Aug 2009 
13:13:19 -0000       1.1
@@ -0,0 +1,225 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden Top,First node,(dir)
address@hidden Tests
address@hidden
+* First node::    node 1
+* description: node @'{a}.    node with braces
+* node: (manual)A node. node in another manual
+
+a verbatim in menu comment @verbatim verbatim on same line than @verbatim
+
+bidule
+
address@hidden verbatim
+
+* node d@'a::       node without braces
address@hidden menu
+
+Tests for environments not matching
+
address@hidden
+A quotation
address@hidden cartouche
+
address@hidden {Function Reference} print_navigation $filehandle
+Text
address@hidden deftypefun
+
address@hidden
address@hidden item
+line
address@hidden vtable
+
address@hidden @emph
address@hidden ref
address@hidden
+example
address@hidden display
address@hidden table
+
+
+
address@hidden First node
address@hidden first node chapter
+
+
+A list with bullet
+Before itemize, in that case @@bullet isn'right, one needs @@address@hidden@} 
(in info) @itemize @bullet{} @c segfault <- @item on the same line that itemize
address@hidden on the same line than item
+some text
address@hidden
+more text @end itemize
+
+A list with text before first @@item:
+
address@hidden @bullet
+text @item more
+text
address@hidden itemize
+
+
+In tex, @@end verbatim must be on its own on a line.
+
+A verbatim with begin and end on its own line
address@hidden
+verbatim @samp{item}
+
address@hidden verbatim
+
+
+
+Now html valid for @TeX{}  @html 
+<b>
+some html </b> 
address@hidden html 
+Some text one the line following @@end html
+
+And html on it's own line
+
address@hidden
+<tt> an html tt</tt>
address@hidden html
+
+
+A sc: @sc{ieee}, and another one in example:
address@hidden
address@hidden
address@hidden example
+
+
+Ignore is the same than @@html.
+
+Now ifnothtml on same line  text following ifnothtml
+
+text following an empty line
+text before end ifnothtml 
+@@end ifnothtml doesn't need to begin the line, and there can be more
+than one space between @@end and ifnothtml, but nothing more
+on the line.
+
+Text on the line before ifnothtml with text following,
+ text following ifnothtml,
+Text on the line following ifnothtml.
+
+Text on the line before ifnothtml without text following,
+some text on a line between ifnothtml and end  ifnothtml,
+Text on the line following ifnothtml.
+
+Text on the line before ifnothtml,
+Text on the line following empty ifnothtml
+
+
address@hidden has problems with the ftable.
+
+
address@hidden outside format.
+
address@hidden outside format.
+
address@hidden address@hidden
+truc before table beginning @item first cell @tab ignored cell
address@hidden second row
address@hidden multitable
+
+before bad  multitable @multitable 6 7
address@hidden 1-1 @tab 1-2 @address@hidden@item 3-1 @tab 3-2 @end multitable
+
+right multitable
address@hidden @columnfractions 6 7
address@hidden 1-1 @tab 1-2 @address@hidden@item 3-1 @tab 3-2 @end multitable
+
+Columnfraction multitable with an ignored cell
address@hidden @columnfractions 0.3 0.4
address@hidden 1-1 @tab 1-2 @tab 1-3 (ignored)
address@hidden multitable
+
+multitable beginning with @@tab
address@hidden address@hidden@verb{.something.}}} {sec}
address@hidden after first tab 
address@hidden new line
address@hidden multitable
+
+A flushright
address@hidden some text flushed right
address@hidden flushright
+
+A center @center Centered line
+And a center after empty line
+
address@hidden centered line after empty line
+
+And a center at end of line @center
+And an empty center @center   
+
+An empty flushright @flushright
+
address@hidden flushright
+
+A verb follows:
+
address@hidden' a little
+
+very little
+verb '}
+
+another with space as delimiter
+
address@hidden what@@ }
+
+@@verb followed by end of line seems incorrect.
+Now verb delimited with *, with an empty line, a comment and @@samp:
+
address@hidden
+verb @c comment
+
+and samp @samp{text }
+*}
+
+
+
address@hidden node @'{a}, node d@'a, First node, Top
address@hidden node 'a with braces
+In the node with braces
+
+A footnote with an empty line within.
address@hidden empty line
+
+before before} 
+
+Now a ref with a footnote within, there aren't 2 paragraphes in the footnote
+in that case in info. tex doesn't like the paragraph break in the ref
+
+Some @@verbatim, @@verb and @@ignore within an xref, very hard for @TeX{}:
+
address@hidden node,
+no verb}.
+
address@hidden node d@'a,, node @'{a}, Top
address@hidden node 'a without braces
address@hidden
+* node::       node 
address@hidden menu
+
address@hidden node,,,
address@hidden node
+
+A node with gggggggg
+before example @example after example
+
+the example
+before end example  @end example 
+after end example
+
+Text only after the end
+
address@hidden
+Example
address@hidden example text following end example.
+
address@hidden category name args
+Deffn.
address@hidden deffn text following end deffn.
+
address@hidden
address@hidden

Index: misc/res_info/texi_viper/viper.texi.first
===================================================================
RCS file: misc/res_info/texi_viper/viper.texi.first
diff -N misc/res_info/texi_viper/viper.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ misc/res_info/texi_viper/viper.texi.first   2 Aug 2009 13:13:19 -0000       
1.1
@@ -0,0 +1,4486 @@
+% -*-texinfo-*-
+\input texinfo
+
address@hidden Using viper.info instead of viper in setfilename breaks DOS.
address@hidden @setfilename viper
address@hidden @setfilename viper.info
address@hidden viper
+
address@hidden Editors
address@hidden
+* VIPER: (viper).       The newest Emacs VI-emulation mode.
+                          (also, A VI Plan for Emacs Rescue
+                           or the VI PERil.)
address@hidden direntry
+
+
+
address@hidden Distribution
+
address@hidden
+Copyright @copyright{} 1995, 1996, 1997, 2001, 2002 Free Software Foundation, 
Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
+
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software.  Copies published by the Free
+Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License.  If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+
address@hidden Top, Overview,, (DIR)
+
address@hidden Viper
+
+We believe that one or more of the following statements are adequate
+descriptions of Viper:
+
address@hidden
+Viper Is a Package for Emacs Rebels;
+it is a VI Plan for Emacs Rescue
+and/or a venomous VI PERil.
address@hidden example
+
+Technically speaking, Viper is a Vi emulation package for Emacs.  It
+implements all Vi and Ex commands, occasionally improving on them and
+adding many new features.  It gives the user the best of both worlds: Vi
+keystrokes for editing combined with the power of the Emacs environment.
+
+Viper emulates Vi at several levels, from the one that closely follows Vi
+conventions to the one that departs from many of them.  It has many
+customizable options, which can be used to tailor Viper to the work habits
+of various users.
+This manual describes Viper, concentrating on the differences from Vi and
+new features of Viper.
+
+Viper, formerly known as VIP-19, was written by Michael Kifer.  It is based
+on VIP version 3.5 by Masahiko Sato and VIP version 4.4 by Aamod Sane.
+About 15% of the code still comes from those older packages.
+
+Viper is intended to be usable without reading this manual --- the defaults
+are set to make Viper as close to Vi as possible.  At startup, Viper will
+try to set the most appropriate default environment for you, based on
+your familiarity with Emacs.  It will also tell you the basic GNU Emacs window
+management commands to help you start immediately.
+
+Although this manual explains how to customize Viper, some basic
+familiarity with Emacs Lisp is a plus.
+
+It is recommended that you read the Overview node.  The other nodes may
+be visited as needed.
+
+Comments and bug reports are welcome.
address@hidden@@cs.stonybrook.edu} is the current address for Viper bug reports.
+Please use the Ex command @kbd{:submitReport} for this address@hidden
+
+
address@hidden
+* Overview::                    Read for a smoother start
+* Improvements over Vi::        New features, Improvements
+* Customization::               How to customize Viper
+* Commands::                    Vi and Ex Commands
+
+* Key Index::                   Index of Vi and Ex Commands
+* Function Index::              Index of Viper Functions
+* Variable Index::              Index of Viper Variables
+* Package Index::               Index of Packages Mentioned in this Document
+* Concept Index::               Vi, Ex and Emacs concepts
+
+* Acknowledgments::
address@hidden menu
+
address@hidden Overview,Improvements over Vi,Top,Top
address@hidden Overview of Viper
+
+Viper is a Vi emulation on top of Emacs.  At the same time, Viper provides a
+virtually unrestricted access to Emacs facilities.  Perfect compatibility
+with Vi is possible but not desirable.  This chapter tells you about the
+Emacs ideas that you should know about, how to use Viper within Emacs and
+some incompatibilities.
+
+This manual is written with the assumption that you are an experienced Vi
+user who wants to switch to Emacs while retaining the ability to edit files
+Vi style. Incredible as it might seem, there are experienced Emacs users
+who use Viper as a backdoor into the superior (as every Vi user already knows)
+world of Vi! These users are well familiar with Emacs bindings and prefer them
+in some cases, especially in the Vi Insert state. John Hawkins
+<jshawkin@@eecs.umich.edu> has provided a set of customizations, which
+enables additional Emacs bindings under Viper.  These customizations can be
+included in your @file{~/.viper} file and are found at the following URL:
address@hidden://www.eecs.umich.edu/~jshawkin/viper-sample}.
+
address@hidden
+* Emacs Preliminaries::         Basic concepts in Emacs.
+* Loading Viper::               Loading and Preliminary Configuration.
+* States in Viper::             Viper has four states orthogonal to Emacs
+                                modes.
+* The Minibuffer::              Command line in Emacs.
+* Multiple Files in Viper::     True multiple file handling.
+* Unimplemented Features::      That are unlikely to be implemented.
address@hidden menu
+
address@hidden Emacs Preliminaries, Loading Viper, Overview, Overview
address@hidden Emacs Preliminaries
+
address@hidden buffer
address@hidden point
address@hidden mark
address@hidden text
address@hidden looking at
address@hidden end (of buffer)
address@hidden end (of line)
address@hidden region
+
+Emacs can edit several files at once.  A file in Emacs is placed in a
address@hidden that usually has the same name as the file.  Buffers are also 
used
+for other purposes, such as shell interfaces, directory editing, etc.
address@hidden,,Directory Editor,emacs,The
+Gnu Emacs Manual}, for an address@hidden
+
+A buffer has a distinguished position called the @dfn{point}.
+A @dfn{point} is always between 2 characters, and is @dfn{looking at}
+the right hand character.  The cursor is positioned on the right hand
+character.  Thus, when the @dfn{point} is looking at the end-of-line,
+the cursor is on the end-of-line character, i.e.@: beyond the last
+character on the line.  This is the default Emacs address@hidden
+
+The default settings of Viper try to mimic the behavior of Vi, preventing
+the cursor from going beyond the last character on the line.  By using
+Emacs commands directly (such as those bound to arrow keys), it is possible
+to get the cursor beyond the end-of-line.  However, this won't (or
+shouldn't) happen if you restrict yourself to standard Vi keys, unless you
+modify the default editing style.  @address@hidden
+
+In addition to the @dfn{point}, there is another distinguished buffer
+position called the @dfn{mark}.  @xref{Mark,,Mark,emacs,The GNU Emacs
+manual}, for more info on the mark.  The text between the @dfn{point} and
+the @dfn{mark} is called the @dfn{region} of the buffer.  For the Viper
+user, this simply means that in addition to the Vi textmarkers a--z, there
+is another marker called @dfn{mark}.  This is similar to the unnamed Vi
+marker used by the jump commands @kbd{``} and @kbd{''}, which move the
+cursor to the position of the last absolute jump.  Viper provides access to
+the region in most text manipulation commands as @kbd{r} and @kbd{R} suffix
+to commands that operate on text regions, e.g., @kbd{dr} to delete region,
+etc.
+
+Furthermore, Viper lets Ex-style commands to work on the current region.
+This is done by typing a digit argument before @kbd{:}.  For instance,
+typing @kbd{1:} will propmt you with something like @emph{:123,135},
+assuming that the current region starts at line 123 and ends at line
+135.  There is no need to type the line numbers, since Viper inserts them
+automatically in front of the Ex command.
+
address@hidden, for more address@hidden
+
address@hidden window
address@hidden mode line
address@hidden buffer information
address@hidden Minibuffer
address@hidden command line
address@hidden buffer (modified)
+
+Emacs divides the screen into tiled @dfn{windows}.  You can see the
+contents of a buffer through the window associated with the buffer.  The
+cursor of the screen is positioned on the character after @dfn{point}.
+Every window has a @dfn{mode line} that displays information about the buffer.
+You can change the format of the mode
+line, but normally if you see @samp{**} at the beginning of a mode line it
+means that the buffer is @dfn{modified}.  If you write out the contents of
+a buffer to a file, then the buffer will become not modified.  Also if
+you see @samp{%%} at the beginning of the mode line, it means that the file
+associated with the buffer is write protected.  The mode line will also
+show the buffer name and current major and minor modes (see below).
+A special buffer called @dfn{Minibuffer} is displayed as the last line
+in a Minibuffer window.  The Minibuffer window is used for command input
+output.  Viper uses Minibuffer window for @kbd{/} and @kbd{:}
address@hidden
+
address@hidden mode
address@hidden keymap
address@hidden local keymap
address@hidden global keymap
address@hidden major mode
address@hidden minor mode
+
+An Emacs buffer can have a @dfn{major mode} that customizes Emacs for
+editing text of a particular sort by changing the functionality of the keys.
+Keys are defined using a @dfn{keymap} that records the bindings between
+keystrokes and
+functions.  The @dfn{global keymap} is common to all the
+buffers.  Additionally, each buffer has its @dfn{local keymap} that determines 
the
address@hidden of the buffer.  If a function is bound to some key in the local
+keymap then that function will be executed when you type the key.
+If no function is bound to a key in the
+local map, however, the function bound to the key in the global map
+will be executed.  @xref{Major Modes,Major Modes,Major Modes,emacs,The
+GNU Emacs Manual}, for more address@hidden
+
+A buffer can also have a @dfn{minor mode}.  Minor modes are options that
+you can use or not.  A buffer in @code{text-mode} can have
address@hidden as minor mode, which can be turned off or on at
+any time.  In Emacs, a minor mode may have it own keymap,
+which overrides the local keymap when the minor mode is turned on.  For
+more information, @pxref{Minor Modes,Minor Modes,Minor Modes,emacs,The
+GNU Emacs Manual} @refill
+
address@hidden Viper as minor mode
address@hidden Control keys
address@hidden Meta key
+
+Viper is implemented as a collection of minor modes.  Different minor modes
+are involved when Viper emulates Vi command mode, Vi insert mode, etc.
+You can also turn Viper on and off at any time while in Vi command mode.
address@hidden in Viper}, for
+more address@hidden
+
+Emacs uses Control and Meta modifiers.  These are denoted as C and M,
+e.g.@: @kbd{^Z} as @kbd{C-z} and @kbd{Meta-x} as @kbd{M-x}.  The Meta key is
+usually located on each side of the Space bar; it is used in a manner
+similar to the Control key, e.g., @kbd{M-x} means typing @kbd{x} while
+holding the Meta key down.  For keyboards that do not have a Meta key,
address@hidden is used as Meta.  Thus @kbd{M-x} is typed as @address@hidden
+x}.  Viper uses @key{ESC} to switch from Insert state to Vi state.  Therefore
+Viper defines @kbd{C-\} as its Meta key in Vi state.  @xref{Vi State}, for
+more address@hidden
+
+Emacs is structured as a lisp interpreter around a C core.  Emacs keys
+cause lisp functions to be called.  It is possible to call these
+functions directly, by typing @kbd{M-x function-name}.
+
address@hidden Loading Viper, States in Viper, Emacs Preliminaries, Overview
address@hidden Loading Viper
+
+The most common way to load it automatically is to include the following
+lines (in the given order!):
+
address@hidden
+(setq viper-mode t)
+(require 'viper)
address@hidden lisp
+
address@hidden
+in your @file{~/.emacs} file.  The @file{.emacs} file is placed in your
+home directory and it is be executed every time you invoke Emacs.  This is
+the place where all general Emacs customization takes place.  Beginning with
+version 20.0, Emacsen have an interactive interface, which simplifies the
+job of customization significantly.
+
+Viper also uses the file @file{~/.viper} for Viper-specific customization.
+The location of Viper customization file can be changed by setting the
+variable @code{viper-custom-file-name} in @file{.emacs} @emph{prior} to loading
+Viper.
+
+The latest versions of Emacs have an interactive customization facility,
+which allows you to (mostly) bypass the use of the @file{.emacs} and
address@hidden files. You can reach this customization
+facility from within Viper's VI state by executing the Ex command
address@hidden:customize}.
+
+Once invoked, Viper will arrange to bring up Emacs buffers in Vi state
+whenever this makes sense.
address@hidden that Change Keymaps}, to find out when forcing Vi command state
+on a buffer may be counter-productive.
+
+Even if your @file{.emacs} file does not invoke Viper automatically,
+you can still load Viper and enter the Vi command state by typing the
+following from within Emacs:
+
address@hidden
+M-x viper-mode
address@hidden lisp
+
+When Emacs first comes up, if you have not specified a file on the
+command line, it will show the @samp{*scratch*} buffer, in the
address@hidden Interaction} mode.  After you invoke Viper, you can start
+editing files by using @kbd{:e}, @kbd{:vi}, or @kbd{v} commands.
+(@xref{File and Buffer Handling}, for more information on @kbd{v} and other
+new commands that, in many cases, are more convenient than @kbd{:e},
address@hidden:vi}, and similar old-style Vi commands.)@refill
+
+Finally, if at some point you would want to de-Viperize your running
+copy of Emacs after Viper has been loaded, the command @kbd{M-x
+viper-go-away} will do it for you.  The function @code{toggle-viper-mode}
+toggles Viperization of Emacs on and off.
+
address@hidden States in Viper, The Minibuffer, Loading Viper,Overview
address@hidden States in Viper
+
address@hidden @kbd{C-z}
address@hidden @key{ESC}
address@hidden @kbd{i}
address@hidden Emacs state
address@hidden Vi state
address@hidden Insert state
address@hidden Replace state
address@hidden Ex commands
address@hidden @code{viper-go-away}
address@hidden @code{toggle-viper-mode}
+
+Viper has four states, Emacs, Vi, Insert, and Replace.
+
address@hidden @samp
address@hidden Emacs state
+This is the state plain vanilla Emacs is normally in.  After you have loaded
+Viper, @kbd{C-z} will normally take you to Vi command state.  Another
address@hidden will take you back to Emacs state.  This toggle key can be
+changed, @pxref{Customization} You can also type @kbd{M-x viper-mode} to
+change to Vi address@hidden
+
+
+For users who chose to set their user level to 1 at Viper setup time,
+switching to Emacs state is deliberately made harder in order to not
+confuse the novice user.  In this case, @kbd{C-z} will either iconify Emacs
+(if Emacs runs as an application under X) or it will stop Emacs (if
+Emacs runs on a dumb terminal or in an Xterm window).
+
address@hidden Vi state
+This is the Vi command mode.  Any of the Vi commands, such as @kbd{i, o, a},
address@hidden, will take you to Insert state.  All Vi commands may
+be used in this mode.  Most Ex commands can also be used.
+For a full list of Ex commands supported by Viper, type
address@hidden:} and then @key{TAB}.  To get help on any issue, including the Ex
+commands, type @kbd{:help}.  This will invoke Viper Info
+(if it is installed).  Then typing @kbd{i} will prompt you for a topic to
+search in the index.  Note: to search for Ex commands in the index, you
+should start them with a @kbd{:}, e.g., @kbd{:WW}.
+
+In Viper, Ex commands can be made to work on the current Emacs region.
+This is done by typing a digit argument before @kbd{:}.
+For instance, typing @kbd{1:} will propmt you with something like
address@hidden:123,135}, assuming that the current region starts at line 123 and
+ends at line 135.  There is no need to type the line numbers, since Viper
+inserts them automatically in front of the Ex command.
+
address@hidden Insert state
+Insert state is the Vi insertion mode.  @key{ESC} will take you back to
+Vi state.  Insert state editing can be done, including auto-indentation.  By
+default, Viper disables Emacs key bindings in Insert state.
+
address@hidden Replace state
+Commands like @kbd{cw} invoke the Replace state.  When you cross the
+boundary of a replacement region (usually designated via a @samp{$} sign),
+it will automatically change to Insert state.  You do not have to worry
+about it.  The key bindings remain practically the same as in Insert
+state.  If you type @key{ESC}, Viper will switch to Vi command mode, 
terminating the
+replacement address@hidden
address@hidden table
+
address@hidden mode line
+
+The modes are indicated on the @dfn{mode line} as <E>, <I>, <V>, and <R>,
+so that the multiple modes do not confuse you.  Most of your editing can be
+done in Vi and Insert states.  Viper will try to make all new buffers be in Vi
+state, but sometimes they may come up in Emacs state.  @kbd{C-z}
+will take you to Vi state in such a case.  In some major modes, like Dired,
+Info, Gnus, etc., you should not switch to Vi state (and Viper will not
+attempt to do so) because these modes are not intended for text editing and
+many of the Vi keys have special meaning there.  If you plan to read news,
+browse directories, read mail, etc., from Emacs (which you should start
+doing soon!), you should learn about the meaning of the various keys in
+those special modes (typing @kbd{C-h m} in a buffer provides
+help with key bindings for the major mode of that buffer).
+
+If you switch to Vi in Dired or similar modes---no harm is done.  It is just
+that the special key bindings provided by those modes will be temporarily
+overshadowed by Viper's bindings.  Switching back to Viper's Emacs state
+will revive the environment provided by the current major mode.
+
+States in Viper are orthogonal to Emacs major modes, such as C mode or Dired
+mode.  You can turn Viper on and off for any Emacs state.  When Viper is turned
+on, Vi state can be used to move around.  In Insert state, the bindings for
+these modes can be accessed.  For beginners (users at Viper levels 1 and 2),
+these bindings are suppressed in Insert state, so that new users are not
+confused by the Emacs states.  Note that unless you allow Emacs bindings in
+Insert state, you cannot do many interesting things, like language
+sensitive editing.  For the novice user (at Viper level 1), all major mode
+bindings are turned off in Vi state as well.  This includes the bindings for
+key sequences that start with @kbd{C-c}, which practically means that all
+major mode bindings are unsupported.  @xref{Customization}, to find out how
+to allow Emacs keys in Insert state.
+
address@hidden
+* Emacs State::         This is the state you should learn more about when
+                        you get up to speed with Viper.
+* Vi State::            Vi commands are executed in this state.
+* Insert State::        You can enter text, and also can do sophisticated
+                        editing if you know enough Emacs commands.
+* Replace State::       Like Insert mode, but it is invoked via the
+                        replacement commands, such as cw, C, R, etc.
address@hidden menu
+
address@hidden Emacs State, Vi State, States in Viper, States in Viper
address@hidden Emacs State
+
address@hidden @kbd{C-z}
address@hidden Emacs state
+
+
+You will be in this mode only by accident (hopefully).  This is the state
+Emacs is normally in (imagine!!).  Now leave it as soon as possible by
+typing @kbd{C-z}.  Then you will be in Vi state (sigh of relief) :-).
+
+Emacs state is actually a Viperism to denote all the major and minor modes
+(@pxref{Emacs Preliminaries}) other than Viper that Emacs can be in.  Emacs
+can have several modes, such as C mode for editing C programs, LaTeX mode
+for editing LaTeX documents, Dired for directory editing, etc.  These are
+major modes, each with a different set of key-bindings.  Viper states are
+orthogonal to these Emacs major modes.  The presence of these language
+sensitive and other modes is a major win over Vi.  @xref{Improvements over
+Vi}, for address@hidden
+
+The bindings for these modes can be made available in the Viper Insert state
+as well as in Emacs state.  Unless you specify your user level as 1 (a
+novice), all major mode key sequences that start with @kbd{C-x} and
address@hidden are also available in Vi state.  This is important because major
+modes designed for editing files, such as cc-mode or latex-mode, use key
+sequences that begin with @kbd{C-x} and @kbd{C-c}.
+
+There is also a key that lets you temporarily escape to Vi command state
+from Emacs or Insert states: typing @kbd{C-c \} will let you execute a
+single Vi command while staying in Viper's Emacs or Insert state.
+In Insert state, the same can also be achieved by typing @kbd{C-z}.
+
+
address@hidden Vi State, Insert State, Emacs State, States in Viper
address@hidden Vi State
+
address@hidden Vi state
+
+This is the Vi command mode.  When Viper is in Vi state, you will see the sign
+<V> in the mode line.  Most keys will work as in Vi.  The notable
+exceptions are:
+
address@hidden @kbd
address@hidden C-x
address@hidden @kbd{C-x}
address@hidden is used to invoke Emacs commands, mainly those that do window
+management.  @kbd{C-x 2} will split a window, @kbd{C-x 0} will close a
+window.  @kbd{C-x 1} will close all other windows.  @kbd{C-xb} is used to
+switch buffers in a window, and @kbd{C-xo} to move through windows.
+These are about the only necessary keystrokes.
+For the rest, see the GNU Emacs Manual.
+
address@hidden C-c
address@hidden @kbd{C-c}
+For user levels 2 and higher, this key serves as a prefix key for the key
+sequences used by various major modes.  For users at Viper level 1, @kbd{C-c}
+simply beeps.
+
address@hidden C-g and C-]
address@hidden @kbd{C-g}
address@hidden @kbd{C-]}
+
+These are the Emacs @samp{quit} keys.
+There will be cases where you will have to
+use @kbd{C-g} to quit.  Similarly, @kbd{C-]} is used to exit
address@hidden Edits} in Emacs for which there is no comparable Vi
+functionality and no key-binding.  Recursive edits are indicated by
address@hidden brackets framing the modes on the mode line.
address@hidden Edit,Recursive
+Edit,Recursive Edit,emacs,The GNU Emacs Manual}.
+At user level 1, @kbd{C-g} is bound to @code{viper-info-on-file}
+function instead.
address@hidden
address@hidden C-\
address@hidden @kbd{C-\}
address@hidden Meta key
+
+Viper uses @key{ESC} as a switch between Insert and Vi states.  Emacs uses
address@hidden for Meta.  The Meta key is very important in Emacs since many
+functions are accessible only via that key as @kbd{M-x function-name}.
+Therefore, we need to simulate it somehow.  In Viper's Vi, Insert, and
+Replace states, the meta key is set to be @kbd{C-\}.  Thus, to get
address@hidden, you should type @kbd{C-\ x} (if the keyboard has no Meta key,
+which is rare these days).
+This works both in the Vi command state and in the Insert and Replace
+states.  In Vi command state, you can also use @kbd{\ @key{ESC}} as the
+meta key.
+
+Note: Emacs binds @kbd{C-\} to a function that offers to change the
+keyboard input method in the multilingual environment.  Viper overrides this
+binding.  However, it is still possible to switch the input method by typing
address@hidden C-\} in the Vi command state and @kbd{C-z \ C-\} in the Insert 
state.
+Or you can use the MULE menu in the menubar.
address@hidden table
address@hidden
+Other differences are mostly improvements.  The ones you should know
+about are:
+
address@hidden @samp
address@hidden Undo
address@hidden @kbd{u}
address@hidden will undo.  Undo can be repeated by the @kbd{.} key.  Undo itself
+can be undone.  Another @kbd{u} will change the direction.  The presence
+of repeatable undo means that @kbd{U}, undoing lines, is not very
+important.  Therefore, @kbd{U} also calls @code{viper-undo}.
address@hidden multiple undo
address@hidden undo
+
+
address@hidden Counts
+Most commands, @kbd{~}, @kbd{[[}, @kbd{p}, @kbd{/}, @dots{}, etc., take counts.
+
address@hidden ]] Just to balance parens
address@hidden Regexps
+Viper uses Emacs Regular Expressions for searches.  These are a superset of
+Vi regular
+expressions, excepting the change-of-case escapes @samp{\u}, @samp{\L},
address@hidden, etc.  @xref{Regular Expressions,,Regular Expressions,emacs,The
+GNU Emacs Manual}, for details.
+Files specified to @kbd{:e} use @code{csh} regular expressions
+(globbing, wildcards, what have you).
+However, the function @code{viper-toggle-search-style}, bound to @kbd{C-c /},
+lets the user switch from search with regular expressions to plain vanilla
+search and vice versa.  It also lets one switch from case-sensitive search
+to case-insensitive and back.
address@hidden Specials}, for more details.
address@hidden regular expressions
address@hidden vanilla search
address@hidden case-sensitive search
address@hidden case-insensitive search
address@hidden @kbd{C-c /}
+
address@hidden Ex commands
address@hidden Ex commands
+The current working directory of a buffer is automatically inserted in the
+minibuffer if you type @kbd{:e} then space.  Absolute filenames are
+required less often in Viper.  For file names, Emacs uses a convention that
+is slightly different from other programs.  It is designed to minimize the
+need for deleting file names that Emacs provides in its prompts.  (This is
+usually convenient, but occasionally the prompt may suggest a wrong file
+name for you.)  If you see a prompt @kbd{/usr/foo/} and you wish to edit the
+file @kbd{~/.viper}, you don't have to erase the prompt.  Instead, simply
+continue typing what you need.  Emacs will interpret @kbd{/usr/foo/~/.viper}
+correctly.  Similarly, if the prompt is @kbd{~/foo/} and you need to get to
address@hidden/bar/file}, keep typing.  Emacs interprets @kbd{~/foo//bar/} as
address@hidden/bar/file}, since when it sees @samp{//}, it understands that
address@hidden/foo/} is to be discarded.
+
+The command @kbd{:cd} will change the default directory for the
+current buffer.  The command @kbd{:e} will interpret the
+filename argument in @code{csh}.  @xref{Customization}, if you
+want to change the default shell.
+The command @kbd{:next} takes counts from
address@hidden:args}, so that @kbd{:rew} is obsolete.  Also, @kbd{:args} will 
show only
+the invisible files (i.e., those that are not currently seen in Emacs
+windows).
+
+When applicable, Ex commands support file completion and history.  This
+means that by typing a partial file name and then @key{TAB}, Emacs will try
+to complete the name or it will offer a menu of possible completions.
+This works similarly to Tcsh and extends the behavior of Csh.  While Emacs
+is waiting for a file name, you can type @kbd{M-p} to get the previous file
+name you typed.  Repeatedly typing @kbd{M-p} and @kbd{M-n} will let you
+browse through the file history.
+
+Like file names, partially typed Ex commands can be completed by typing
address@hidden, and Viper keeps the history of Ex commands.  After typing
address@hidden:}, you can browse through the previously entered Ex commands by
+typing @kbd{M-p} and @kbd{M-n}.  Viper tries to rationalize when it puts Ex
+commands on the history list.  For instance, if you typed @kbd{:w!@: foo},
+only @kbd{:w!} will be placed on the history list.  This is because the
+last history element is the default that can be invoked simply by typing
address@hidden: @key{RET}}.  If @kbd{:w!@: foo} were placed on the list, it 
would be all to
+easy to override valuable data in another file.  Reconstructing the full
+command, @kbd{:w!@: foo}, from the history is still not that hard, since Viper
+has a separate history for file names.  By typing @kbd{: M-p}, you will get
address@hidden:w!} in the Minibuffer.  Then, repeated @kbd{M-p} will get you 
through
+the file history, inserting one file name after another.
+
+In contrast to @kbd{:w!@: foo}, if the command were @kbd{:r foo}, the entire
+command will appear in the history list.  This is because having @kbd{:r}
+alone as a default is meaningless, since this command requires a file
+argument.
address@hidden
address@hidden table
address@hidden
+As Vi, Viper's destructive commands can be re-executed by typing 
address@hidden'.
+However, in addition, Viper keeps track of the history of such commands.  This
+history can be perused by typing @kbd{C-c M-p} and @kbd{C-c M-n}.
+Having found the appropriate command, it can be then executed by typing
address@hidden'.
address@hidden over Vi}, for more information.
+
address@hidden Insert State, Replace State, Vi State, States in Viper
address@hidden Insert State
+
address@hidden Insert state
+
+To avoid confusing the beginner (at Viper level 1 and 2), Viper makes only the
+standard Vi keys available in Insert state.  The implication is that
+Emacs major modes cannot be used in Insert state.
+It is strongly recommended that as soon as you are comfortable, make the
+Emacs state bindings visible (by changing your user level to 3 or higher).
address@hidden,
+to see how to do address@hidden
+
+Once this is done, it is possible to do quite a bit of editing in
+Insert state.  For instance, Emacs has a @dfn{yank} command, @kbd{C-y},
+which is similar to Vi's @kbd{p}.  However, unlike @kbd{p}, @kbd{C-y} can be
+used in Insert state of Viper.  Emacs also has a kill ring where it keeps
+pieces of text you deleted while editing buffers.  The command @kbd{M-y} is
+used to delete the text previously put back by Emacs' @kbd{C-y} or by Vi's
address@hidden command and reinsert text that was placed on the kill-ring 
earlier.
+
+This works both in Vi and Insert states.
+In Vi state, @kbd{M-y} is a much better alternative to the usual Vi's way
+of recovering the 10 previously deleted chunks of text.  In Insert state,
+you can
+use this as follows.  Suppose you deleted a piece of text and now you need
+to re-insert it while editing in Insert mode.  The key @kbd{C-y} will put
+back the most recently deleted chunk.  If this is not what you want, type
address@hidden repeatedly and, hopefully, you will find the chunk you want.
+
+Finally, in Insert and Replace states, Viper provides the history of
+pieces of text inserted in previous insert or replace commands.  These
+strings of text can be recovered by repeatedly typing @kbd{C-c M-p} or
address@hidden M-n} while in Insert or Replace state.  (This feature is disabled
+in the minibuffer: the above keys are usually bound to other histories,
+which are more appropriate in the minibuffer.)
+
+
address@hidden Meta key
+
+You can call Meta functions from Insert state.  As in Vi state, the Meta key
+is @kbd{C-\}.  Thus @kbd{M-x} is typed as @kbd{C-\ x}.
+
+Other Emacs commands that are useful in Insert state are @kbd{C-e}
+and @kbd{C-a}, which move the cursor to the end and the beginning of the
+current line, respectively.  You can also use @kbd{M-f} and @kbd{M-b},
+which move the cursor forward (or backward) one word.
+If your display has a Meta key, these functions are invoked by holding the
+Meta key and then typing @kbd{f} and @kbd{b}, respectively.  On displays
+without the Meta key, these functions are invoked by typing
address@hidden f} and @kbd{C-\ b} (@kbd{C-\} simulates the Meta key in Insert
+state, as explained above).
+
+The key @kbd{C-z} is sometimes also useful in Insert state: it allows you
+to execute a single command in Vi state without leaving the Insert state!
+For instance, @kbd{C-z d2w} will delete the next two words without leaving
+the Insert state.
+
+When Viper is in Insert state, you will see <I> in the mode line.
+
address@hidden Replace State,, Insert State, States in Viper
address@hidden Replace State
+
address@hidden Replace state
+
+This state is entered through Vi replacement commands, such as @kbd{C},
address@hidden, etc., or by typing @kbd{R}.  In Replace state, Viper puts <R> in
+the mode line to let you know which state is in effect.  If Replace state is
+entered through @kbd{R}, Viper stays in that state until the user hits
address@hidden  If this state is entered via the other replacement commands,
+then Replace state is in effect until you hit @key{ESC} or until you cross
+the rightmost boundary of the replacement region.  In the latter case, Viper
+changes its state from Replace to Insert (which you will notice by the
+change in the mode line).
+
+Since Viper runs under Emacs, it is possible to switch between buffers
+while in Replace state.  You can also move the cursor using the arrow keys
+(even on dumb terminals!)@: and the mouse.  Because of this freedom (which is
+unattainable in regular Vi), it is possible to take the cursor outside the
+replacement region.  (This may be necessary for several reasons, including
+the need to enable text selection and region-setting with the mouse.)
+
+The issue then arises as to what to do when the user
+hits the @key{ESC} key.  In Vi, this would cause the text between cursor and
+the end of the replacement region to be deleted.  But what if, as is
+possible in Viper, the cursor is not inside the replacement region?
+
+To solve the problem, Viper keeps track of the last cursor position while it
+was still inside the replacement region.  So, in the above situation, Viper
+would delete text between this position and the end of the replacement
+region.
+
address@hidden The Minibuffer,Multiple Files in Viper, States in Viper, Overview
address@hidden The Minibuffer
+
address@hidden Minibuffer
+
+The Minibuffer is where commands are entered in.  Editing can be done
+by commands from Insert state, namely:
+
address@hidden @kbd
address@hidden C-h
+Backspace
address@hidden C-w
+Delete Word
address@hidden C-u
+Erase line
address@hidden C-v
+Quote the following character
address@hidden @key{RET}
+Execute command
address@hidden C-g and C-]
+Emacs quit and abort keys.  These may be necessary.  @xref{Vi State}, for an
+explanation.
address@hidden M-p and M-n
+These keys are bound to functions that peruse minibuffer history.  The
+precise history to be perused depends on the context.  It may be the history
+of search strings, Ex commands, file names, etc.
address@hidden table
+
+Most of the Emacs keys are functional in the Minibuffer.  While in the
+Minibuffer, Viper tries to make editing resemble Vi's behavior when the
+latter is waiting for the user to type an Ex command.  In particular, you
+can use the regular Vi commands to edit the Minibuffer.  You can switch
+between the Vi state and Insert state at will, and even use the replace mode.
+Initially, the Minibuffer comes up in Insert state.
+
+Some users prefer plain Emacs bindings in the Minibuffer.  To this end, set
address@hidden to @code{nil} in @file{.viper}.
address@hidden, to learn how to do this.
+
+When the Minibuffer changes Viper states, you will notice that the appearance
+of the text there changes as well.  This is useful because the Minibuffer
+has no mode line to tell which Vi state it is in.
+The appearance of the text in the Minibuffer can be changed.
address@hidden Specials}, for more details.
+
address@hidden Multiple Files in Viper,Unimplemented Features,The 
Minibuffer,Overview
address@hidden Multiple Files in Viper
+
address@hidden multiple files
address@hidden managing multiple files
+
+Viper can edit multiple files.  This means, for example that you never need
+to suffer through @code{No write since last change} errors.
+Some Viper elements are common over all the files.
+
address@hidden @samp
address@hidden Textmarkers
address@hidden markers
address@hidden textmarkers
+Textmarkers remember @emph{files and positions}.
+If you set marker @samp{a} in
+file @file{foo}, start editing file @file{bar} and type @kbd{'a}, then
address@hidden WILL SWITCH TO FILE @file{foo}}.  You can see the contents of a
+textmarker using the Viper command @kbd{[<a-z>} where <a-z> are the
+textmarkers, e.g., @kbd{[a} to view marker @samp{a} address@hidden
address@hidden Repeated Commands
+Command repetitions are common over files.  Typing @kbd{!!} will repeat the
+last @kbd{!} command whichever file it was issued from.
+Typing @kbd{.} will repeat the last command from any file, and
+searches will repeat the last search.  Ex commands can be repeated by typing
address@hidden: @address@hidden
+Note: in some rare cases, that @kbd{: @key{RET}} may do something dangerous.
+However, usually its effect can be undone by typing @kbd{u}.
address@hidden Registers
address@hidden registers
+Registers are common to files.  Also, text yanked with @kbd{y} can be
+put back (@kbd{p}) into any file.  The Viper command @kbd{]<a-z>}, where <a-z> 
are
+the registers, can be used to look at the contents of a register, e.g.,
+type @kbd{]a} to view register @samp{a}.
+
+There is one difference in text deletion that you should be
+aware of.  This difference comes from Emacs and was adopted in Viper
+because we find it very useful.  In Vi, if you delete a line, say, and then
+another line, these two deletions are separated and are put back
+separately if you use the @samp{p} command.  In Emacs (and Viper), successive
+series of deletions that are @emph{not interrupted} by other commands are
+lumped together, so the deleted text gets accumulated and can be put back
+as one chunk.  If you want to break a sequence of deletions so that the
+newly deleted text could be put back separately from the previously deleted
+text, you should perform a non-deleting action, e.g., move the cursor one
+character in any direction.
address@hidden Absolute Filenames
address@hidden absolute file names
+The current directory name for a file is automatically prepended to the
+file name in any
address@hidden:e}, @kbd{:r}, @kbd{:w}, etc., command (in Emacs, each buffer has 
a
+current directory).
+This directory is inserted in the Minibuffer once you type space after
address@hidden:e, r}, etc.  Viper also supports completion of file names and Ex
+commands (@key{TAB}), and it keeps track of
+command and file history (@kbd{M-p}, @kbd{M-n}).
+Absolute filenames are required less
+often in Viper.
+
+You should be aware that Emacs interprets @kbd{/foo/bar//bla} as
address@hidden/bla} and @kbd{/foo/~/bar} as @kbd{~/bar}.  This is designed to
+minimize the need for erasing file names that Emacs suggests in its
+prompts, if a suggested file name is not what you wanted.
+
+The command @kbd{:cd} will change the default directory for the
+current Emacs buffer.  The Ex command @kbd{:e} will interpret the
+filename argument in @samp{csh}, by default.  @xref{Customization}, if you
+want to change this.
address@hidden table
+
address@hidden
+Currently undisplayed files can be listed using the @kbd{:ar} command.  The
+command @kbd{:n} can be given counts from the @kbd{:ar} list to switch to
+other files. For example, use `:n3' to move to the third file in that list.
+
address@hidden Unimplemented Features,,Multiple Files in Viper,Overview
address@hidden Unimplemented Features
+
+Unimplemented features include:
+
address@hidden @bullet
address@hidden
address@hidden:ab} and @kbd{:una} are not implemented, since
address@hidden:ab} is considered obsolete, since Emacs has much
+more powerful facilities for defining abbreviations.
address@hidden
address@hidden:set option?} is not implemented.  The current
address@hidden:set} can also be used to set Emacs variables.
address@hidden
address@hidden:se list} requires modification of the display code for Emacs, so
+it is not implemented.
+A useful alternative is @code{cat -t -e file}.  Unfortunately, it cannot
+be used directly inside Emacs, since Emacs will obdurately change @samp{^I}
+back to normal address@hidden
address@hidden itemize
+
address@hidden  node-name,  next,  previous,  up
address@hidden Improvements over Vi, Customization, Overview, Top
address@hidden Improvements over Vi
+
+Some common problems with Vi and Ex have been solved in Viper.  This
+includes better implementation of existing commands, new commands, and
+the facilities provided by Emacs.
+
address@hidden
+* Basics::                  Basic Viper differences, Multi-file effects.
+* Undo and Backups::        Multiple undo, auto-save, backups and changes
+* History::                 History for Ex and Vi commands.
+* Macros and Registers::    Keyboard Macros (extended ".")@: @@reg execution.
+* Completion::              Filename and Command Completion for Ex.
+* Improved Search::         Incremental Search and Buffer Content Search.
+* Abbreviation Facilities:: Normal Abbrevs, Templates, and Dynamic Abbrevs.
+* Movement and Markers::    Screen Editor movements, viewing textmarkers.
+* New Commands::            Commands that do not exist in Vi.
+* Useful Packages::         A Sampling of some Emacs packages, and things
+                            you should know about.
address@hidden menu
+
address@hidden Basics, Undo and Backups, Improvements over Vi, Improvements 
over Vi
address@hidden Basics
+
+The Vi command set is based on the idea of combining motion commands
+with other commands.  The motion command is used as a text region
+specifier for other commands.
+We classify motion commands into @dfn{point commands} and
address@hidden address@hidden
+
address@hidden point commands
+
+The point commands are:
+
address@hidden
address@hidden, @kbd{l}, @kbd{0},  @kbd{$}, @kbd{w}, @kbd{W}, @kbd{b}, @kbd{B},
address@hidden, @kbd{E}, @kbd{(}, @kbd{)}, @kbd{/}, @kbd{?}, @kbd{`}, @kbd{f},
address@hidden, @kbd{t}, @kbd{T}, @kbd{%}, @kbd{;}, @kbd{,}, @kbd{^}
address@hidden quotation
+
address@hidden line commands
+
+The line commands are:
+
address@hidden
address@hidden, @kbd{k}, @kbd{+}, @kbd{-}, @kbd{H}, @kbd{M}, @kbd{L}, 
@address@hidden,
address@hidden@}}, @kbd{G}, @kbd{'},  @kbd{[[}, @kbd{]]}, @kbd{[]}
address@hidden quotation
+
address@hidden region
address@hidden region specification
address@hidden expanding (region)
address@hidden describing regions
address@hidden movement commands
+
address@hidden
+If a point command is given as an argument to a modifying command, the
+region determined by the point command will be affected by the modifying
+command.  On the other hand, if a line command is given as an argument to a
+modifying command, the region determined by the line command will be
+enlarged so that it will become the smallest region properly containing the
+region and consisting of whole lines (we call this process @dfn{expanding
+the region}), and then the enlarged region will be affected by the modifying
+command.
+Text Deletion Commands (@pxref{Deleting Text}), Change commands
+(@pxref{Changing Text}), even Shell Commands (@pxref{Shell Commands})
+use these commands to describe a region of text to operate on.
+Thus, type @kbd{dw} to delete a word, @kbd{>@}} to shift a paragraph, or
address@hidden'afmt} to format a region from @samp{point} to textmarker
address@hidden
+
address@hidden r and R region specifiers
+
+Viper adds the region specifiers @samp{r} and @samp{R}.  Emacs has a
+special marker called @dfn{mark}.  The text-area between the current cursor
+position @dfn{point} and the @dfn{mark} is called the @dfn{region}.
address@hidden specifies the raw region and @samp{R} is the expanded region
+(i.e., the minimal contiguous chunk of full lines that contains the raw
+region).
address@hidden will now delete the region, @kbd{>r} will shift it, etc.
address@hidden,R} are not motion commands, however.  The special mark is set by
address@hidden and other commands.  @xref{Marking}, for more info.
+
+Viper also adds counts to most commands for which it would make sense.
+
+In the Overview chapter, some Multiple File issues were discussed
+(@pxref{Multiple Files in Viper}).  In addition to the files, Emacs has
+buffers.  These can be seen in the @kbd{:args} list and switched using
address@hidden:next} if you type @kbd{:set ex-cycle-through-non-files t}, or
+specify @code{(setq ex-cycle-through-non-files t)} in your @file{.viper}
+file.  @xref{Customization}, for details.
+
address@hidden Undo and Backups, History, Basics, Improvements over Vi
address@hidden Undo and Backups
+
address@hidden undo
+
+Viper provides multiple undo.  The number of undo's and the size is limited
+by the machine.  The Viper command @kbd{u} does an undo.  Undo can be
+repeated by typing @kbd{.} (a period).  Another @kbd{u} will undo the undo,
+and further
address@hidden will repeat it.  Typing @kbd{u} does the first undo, and changes 
the
+direction.
+
address@hidden backup files
address@hidden auto save
+
+Since the undo size is limited, Viper can create backup files and
+auto-save files.  It will normally do this automatically.  It is possible
+to have numbered backups, etc.  For details, @pxref{Backup,,Backup and
+Auto-Save,emacs,The GNU Emacs Manual} @refill
+
address@hidden [ balance parens
address@hidden viewing registers and markers
address@hidden registers
address@hidden markers
address@hidden textmarkers
+
+The results of the 9 previous changes are available in the 9 numeric
+registers, as in Vi.  The extra goody is the ability to @emph{view} these
+registers, in addition to being able to access them through @kbd{p} and
address@hidden (@xref{Insert State}, for details.)
+The Viper command @kbd{] register} will display the contents of any
+register, numeric or alphabetical.  The related command @kbd{[ textmarker}
+will show the text around the textmarker.  @samp{register} and 
@samp{textmarker}
+can be any letters from a through z.
address@hidden ] balance parens
+
address@hidden History,  Macros and Registers, Undo and Backups,Improvements 
over Vi
address@hidden History
+
address@hidden history
address@hidden Minibuffer
+
+History is provided for Ex commands, Vi searches, file names, pieces of
+text inserted in earlier commands that use Insert or Replace state, and for
+destructive commands in Vi state.  These are
+useful for fixing those small typos that screw up searches and @kbd{:s},
+and for eliminating routine associated with repeated typing of file names
+or pieces of text that need to be inserted frequently.
+At the @kbd{:} or @kbd{/} prompts in the Minibuffer, you can do the following:
+
address@hidden @kbd
address@hidden M-p and M-n
+To move to previous and next history items.  This causes the history
+items to appear on the command line, where you can edit them, or
+simply type Return to execute.
address@hidden M-r and M-s
+To search backward and forward through the history.
address@hidden @key{RET}
+Type @key{RET} to accept a default (which is displayed in the prompt).
address@hidden table
+
+The history of insertions  can be perused by
+typing @kbd{C-c M-p} and @kbd{C-c M-n} while in Insert or Replace state.
+The history of destructive Vi commands can be perused via the same keys
+when Viper is in Vi state.  @xref{Viper Specials}, for details.
+
+All Ex commands have a file history.  For instance, typing @kbd{:e}, space
+and then @kbd{M-p} will bring up the name of the previously typed file
+name.  Repeatedly typing @kbd{M-p}, @kbd{M-n}, etc., will let you browse
+through the file history.
+
+Similarly, commands that have to do with switching buffers
+have a buffer history, and commands that expect strings or regular
+expressions keep a history on those items.
+
address@hidden Macros and Registers,Completion,History,Improvements over Vi
address@hidden Macros and Registers
+
address@hidden keyboard macros
address@hidden macros
address@hidden registers
address@hidden register execution
+
+Viper facilitates the use of Emacs-style keyboard macros.  @kbd{@@#} will
+start a macro definition.  As you type, the commands will be executed, and
+remembered (This is called ``learn mode'' in some editors.)
address@hidden@@register} will complete the macro, putting it into 
@samp{register},
+where @samp{register} is any character from @samp{a} through @samp{z}.  Then
+you can execute this macro using @kbd{@@register}.  It is, of course,
+possible to yank some text into a register and execute it using
address@hidden@@register}.  Typing @kbd{@@@@}, @kbd{@@RET}, or @kbd{@@C-j} will
+execute the last macro that was executed using @kbd{@@address@hidden
+
+Viper will automatically lowercase the register, so that pressing the
address@hidden key for @kbd{@@} will not create problems.  This is for
address@hidden@@} macros and @kbd{"p} @emph{only}.  In the case of @kbd{y},
address@hidden"Ayy} will append to @emph{register a}.  For @kbd{[,],',`}, it
+is an error to use a Uppercase register name.
+
address@hidden [ balance parens
address@hidden viewing registers and markers
+
+The contents of a register can be seen by @kbd{]register}.  (@kbd{[textmarker}
+will show the contents of a textmarker).
address@hidden ] balance parens
+
address@hidden last keyboard macro
+
+The last keyboard macro can also be executed using
address@hidden, and it can be yanked into a register using @kbd{@@!register}.
+This is useful for Emacs style keyboard macros defined using @kbd{C-x(}
+and @kbd{C-x)}.  Emacs keyboard macros have more capabilities.
address@hidden Macros,,Keyboard Macros,emacs, The GNU Emacs Manual}, for
address@hidden
+
+Keyboard Macros allow an interesting form of Query-Replace:
address@hidden/pattern} or @kbd{n} to go to the next pattern (the query), 
followed by a
+Keyboard Macro execution @kbd{@@@@} (the replace).
+
+Viper also provides Vi-style macros.  @xref{Vi Macros}, for details.
+
+
address@hidden Completion, Improved Search, Macros and Registers, Improvements 
over Vi
address@hidden Completion
+
address@hidden completion
+
+Completion is done when you type @key{TAB}.  The Emacs completer does not
+grok wildcards in file names.  Once you type a wildcard, the completer will
+no longer work for that file name.  Remember that Emacs interprets a file name
+of the form @kbd{/foo//bar} as @kbd{/bar} and @kbd{/foo/~/bar} as
address@hidden/bar}.
+
address@hidden Improved Search, Abbreviation Facilities, Completion, 
Improvements over Vi
address@hidden Improved Search
+
address@hidden buffer search
address@hidden word search
+
+Viper provides buffer search, the ability to search the buffer for a region
+under the cursor.  You have to turn this on in @file{.viper} either by calling
+
address@hidden
+(viper-buffer-search-enable)
address@hidden example
+
address@hidden
+or by setting @code{viper-buffer-search-char} to, say, @kbd{f3}:
address@hidden
+(setq viper-buffer-search-char ?g)
address@hidden example
+
address@hidden
+If the user calls @code{viper-buffer-search-enable} explicitly (the first
+method), then @code{viper-buffer-search-char} will be set to @kbd{g}.
+Regardless of how this feature is enabled, the key
address@hidden will take movement commands, like
address@hidden,/,e}, to find a region and then search for the contents of that
+region.  This command is very useful for searching for variable names, etc.,
+in a program.  The search can be repeated by @kbd{n} or reversed by @kbd{N}.
+
address@hidden incremental search
+
+Emacs provides incremental search.  As you type the string in, the
+cursor will move to the next match.  You can snarf words from the buffer
+as you go along.  Incremental Search is normally bound to @kbd{C-s} and
address@hidden  @xref{Customization}, to find out how to change the bindings
+of @kbd{C-r or C-s}.
+For details, @pxref{Incremental Search,,Incremental
+Search,emacs,The GNU Emacs Manual} @refill
+
address@hidden query replace
+
+Viper also provides a query replace function that prompts through the
+Minibuffer.  It is invoked by the @kbd{Q} key in Vi state.
+
address@hidden mouse search
+
+On a window display, Viper supports mouse search, i.e., you can search for a
+word by clicking on it.  @xref{Viper Specials}, for details.
+
+Finally, on a window display, Viper highlights search patterns as it finds
+them.  This is done through what is known as @emph{faces} in Emacs.  The
+variable that controls how search patterns are highlighted is
address@hidden  If you don't want any highlighting at all, put
address@hidden
+(copy-face 'default 'viper-search-face)
address@hidden example
address@hidden @code{viper-search-face}
address@hidden
+in @file{~/.viper}.  If you want to change how patterns are highlighted, you
+will have to change @code{viper-search-face} to your liking.  The easiest
+way to do this is to use Emacs customization widget, which is accessible
+from the menubar.  Viper customization group is located under the
address@hidden customization group, which in turn is under the
address@hidden group (or simply by typing @kbd{:customize}).  All Viper
+faces are grouped together under Viper's 
address@hidden group.
+
+Try it: it is really simple!
+
address@hidden Abbreviation Facilities,Movement and Markers,Improved 
Search,Improvements over Vi
address@hidden Abbreviation Facilities
+
address@hidden abbrevs
+
+It is possible in Emacs to define abbrevs based on the contents of the
+buffer.
+Sophisticated templates can be defined using the Emacs abbreviation
+facilities.  @xref{Abbrevs,,Abbreviations,emacs,The GNU Emacs Manual}, for
+details.
+
address@hidden dynamic abbrevs
+
+Emacs also provides Dynamic Abbreviations.  Given a partial word, Emacs
+will search the buffer to find an extension for this word.  For instance,
+one can type @samp{Abbreviations} by typing @samp{A}, followed by a keystroke
+that completed the @samp{A} to @samp{Abbreviations}.  Repeated typing
+will search further back in the buffer, so that one could get
address@hidden by repeating the
+keystroke, which appears earlier in the text.  Emacs binds this to
address@hidden@key{ESC} /}, so you will have to find a key and bind the function
address@hidden to that key.
+Facilities like this make Vi's @kbd{:ab} command obsolete.
+
address@hidden Movement and Markers, New Commands, Abbreviation Facilities, 
Improvements over Vi
address@hidden Movement and Markers
+
address@hidden Ex style motion
address@hidden line editor motion
+
+Viper can be set free from the line--limited movements in Vi, such as @kbd{l}
+refusing to move beyond the line, @key{ESC} moving one character back,
+etc.  These derive from Ex, which is a line editor.  If your @file{.viper}
+contains
+
address@hidden
address@hidden(setq viper-ex-style-motion nil)}
address@hidden example
+
address@hidden
+the motion will be a true screen editor motion.  One thing you must then
+watch out for is that it is possible to be on the end-of-line character.
+The keys @kbd{x} and @kbd{%} will still work correctly, i.e., as if they
+were on the last character.
+
address@hidden @code{viper-syntax-preference}
address@hidden syntax table
+
+The word-movement commands @kbd{w}, @kbd{e}, etc., and the associated
+deletion/yanking commands, @kbd{dw}, @kbd{yw}, etc., can be made to
+understand Emacs syntax tables.  If the variable
address@hidden is set to @code{strict-vi} then
+the meaning of @emph{word} is the same as in
+Vi.  However, if the value is @code{reformed-vi} (the default) then the
+alphanumeric symbols will be those specified by the current Emacs syntax
+table (which may be different for different major modes) plus the
+underscore symbol @kbd{_}, minus some non-word symbols, like '.;,|, etc.
+Both @code{strict-vi} and @code{reformed-vi} work close to Vi in
+traditional cases, but @code{reformed-vi} does a better job when editing
+text in non-Latin alphabets.
+
+The user can also specify the value @code{emacs}, which would
+make Viper use exactly the Emacs notion of word.  In particular, the
+underscore may not be part of a word.  Finally, if
address@hidden is set to @code{extended}, Viper words would
+consist of characters that are classified as alphanumeric @emph{or} as
+parts of symbols.  This is convenient for writing programs and in many other
+situations.
+
address@hidden is a local variable, so it can have different
+values for different major modes.  For instance, in programming modes it can
+have the value @code{extended}.  In text modes where words contain special
+characters, such as European (non-English) letters, Cyrillic letters, etc.,
+the value can be @code{reformed-vi} or @code{emacs}.
+
+Changes to @code{viper-syntax-preference} should be done in the hooks to
+various major modes by executing @code{viper-set-syntax-preference} as in
+the following example:
+
address@hidden
+(viper-set-syntax-preference nil "emacs")
address@hidden example
+
address@hidden @code{viper-set-syntax-preference}
+
+The above discussion of the meaning of Viper's words concerns only Viper's
+movement commands.  In regular expressions, words remain the same as in
+Emacs.  That is, the expressions @code{\w}, @code{\>}, @code{\<}, etc., use
+Emacs' idea of what is a word, and they don't look into the value of
+variable @code{viper-syntax-preference}.  This is because Viper doesn't change
+syntax tables in fear of upsetting the various major modes that set these
+tables.
+
address@hidden textmarkers
+
+Textmarkers in Viper remember the file and the position, so that you can
+switch files by simply doing @kbd{'a}.  If you set up a regimen for using
+Textmarkers, this is very useful.  Contents of textmarkers can be viewed
+by @kbd{[marker}.  (Contents of registers can be viewed by @kbd{]register}).
+
address@hidden New Commands, Useful Packages, Movement and Markers, 
Improvements over Vi
address@hidden New Commands
+
+These commands have no Vi analogs.
+
address@hidden @kbd
address@hidden C-x, C-c
address@hidden @kbd{C-x}
address@hidden @kbd{C-c}
+These two keys invoke many important Emacs functions.  For example, if you
+hit @kbd{C-x} followed by @kbd{2}, then the current window will be split
+into 2.  Except for novice users, @kbd{C-c} is also set to execute an Emacs
+command from the current major mode.  @key{ESC} will do the same, if you
+configure @key{ESC} as Meta by setting @code{viper-no-multiple-ESC} to nil
+in @file{.viper}.  @xref{Customization}.  @kbd{C-\} in Insert, Replace, or Vi
+states will make Emacs think @kbd{Meta} has been address@hidden
address@hidden \
address@hidden @kbd{\}
+Escape to Emacs to execute a single Emacs command.  For instance,
address@hidden @key{ESC}} will act like a Meta key.
address@hidden Q
address@hidden @kbd{Q}
address@hidden query replace
address@hidden is for query replace.  By default,
+each string to be replaced is treated as a regular expression.  You can use
address@hidden(setq viper-re-query-replace nil)} in your @file{.emacs} file to
+turn this off.  (For normal searches, @kbd{:se nomagic} will work.  Note
+that @kbd{:se nomagic} turns Regexps off completely, unlike Vi).
address@hidden v
address@hidden V
address@hidden C-v
address@hidden @kbd{v}
address@hidden @kbd{V}
address@hidden @kbd{C-v}
+These keys are used to visit files.  @kbd{v} will switch to a buffer
+visiting file whose name can be entered in the Minibuffer.  @kbd{V} is
+similar, but will use a window different from the current window.
address@hidden is like @kbd{V}, except that a new frame (X window) will be used
+instead of a new Emacs window.
address@hidden #
address@hidden @kbd{#}
+If followed by a certain character @var{ch}, it becomes an operator whose
+argument is the region determined by the motion command that follows
+(indicated as <move>).
+Currently, @var{ch} can be one of @kbd{c}, @kbd{C}, @kbd{g}, @kbd{q}, and
address@hidden  For instance, @kbd{#qr} will prompt you for a string and then
+prepend this string to each line in the address@hidden
address@hidden # c
address@hidden @kbd{#c<move>}
address@hidden changing case
+Change upper-case characters in the region to lower-case
+(@code{downcase-region}).
+Emacs command @kbd{M-l} does the same for words.
address@hidden # C
address@hidden @kbd{#C<move>}
+Change lower-case characters in the region to upper-case.  For instance,
address@hidden C 3 w} will capitalize 3 words from the current point
+(@code{upcase-region}).
+Emacs command @kbd{M-u} does the same for words.
address@hidden # g
address@hidden @kbd{#g<move>}
+Execute last keyboard macro for each line in the region
+(@code{viper-global-execute})address@hidden
address@hidden # q
address@hidden @kbd{#q<move>}
+Insert specified string at the beginning of each line in the region
+(@code{viper-quote-region}).  The default string is composed of the comment
+character(s) appropriate for the current major mode.
address@hidden # s
address@hidden @kbd{#s<move>}
+Check spelling of words in the region (@code{spell-region}).
+The function used for spelling is determined from the variable
address@hidden
address@hidden @code{viper-spell-function}
address@hidden *
address@hidden @kbd{*}
+Call last keyboard macro.
address@hidden m .
+Set mark at point and push old mark off the ring
address@hidden m<
address@hidden m>
+Set mark at beginning and end of buffer, respectively.
address@hidden m,
+Jump to mark and pop mark off the ring.  @xref{Mark,,Mark,emacs,The GNU
+Emacs Manual}, for more info.
address@hidden ] register
address@hidden @kbd{]<a-z>}
+View contents of register
address@hidden [ textmarker
address@hidden @kbd{[<a-z>}
+View filename and position of textmarker
address@hidden @@#
address@hidden @@register
address@hidden @@!
address@hidden @kbd{@@#}
address@hidden @kbd{@@<a-z>}
address@hidden @kbd{@@!}
address@hidden keyboard macros
address@hidden register execution
+
+Begin/end keyboard macro.  @@register has a different meaning when used after
+a @kbd{@@#}.  @xref{Macros and Registers}, for details
address@hidden []
address@hidden @kbd{[]}
+Go to end of heading.
address@hidden g <@emph{movement command}>
+Search buffer for text delimited by movement command.  The canonical
+example is @kbd{gw} to search for the word under the cursor.
address@hidden Search}, for address@hidden
address@hidden C-g and C-]
address@hidden @kbd{C-g}
address@hidden @kbd{C-]}
+Quit and Abort Recursive edit.  These may be necessary on occasion.
address@hidden State}, for a reason.
address@hidden C-c C-g
address@hidden @kbd{C-c C-g}
+Hitting @kbd{C-c} followed by @kbd{C-g} will display the information on the
+current buffer.  This is the same as hitting @kbd{C-g} in Vi, but, as
+explained above, @kbd{C-g} is needed for other purposes in Emacs.
address@hidden C-c /
address@hidden @kbd{C-c /}
+Without a prefix argument, this command toggles
+case-sensitive/case-insensitive search modes and plain vanilla/regular
+expression search.  With the prefix argument 1, i.e.,
address@hidden C-c /}, this toggles case-sensitivity; with the prefix argument 
2,
+toggles plain vanilla search and search using
+regular expressions.  @xref{Viper Specials}, for alternative ways to invoke
+this function.
address@hidden vanilla search
address@hidden case-sensitive search
address@hidden case-insensitive search
+
address@hidden M-p and M-n
address@hidden @kbd{M-p}
address@hidden @kbd{M-n}
+In the Minibuffer, these commands navigate through the minibuffer
+histories, such as the history of search strings, Ex commands, etc.
+
address@hidden C-c M-p and C-c M-n
address@hidden @kbd{C-c M-p}
address@hidden @kbd{C-c M-n}
address@hidden Insertion history
address@hidden Insertion ring
address@hidden Command history
address@hidden Command ring
+
+In Insert or Replace state, these commands let  the user
+peruse the history of insertion strings used in previous insert or replace
+commands.  Try to hit @kbd{C-c M-p} or @kbd{C-c M-n} repeatedly and see what
+happens.  @xref{Viper Specials}, for more.
+
+In Vi state, these commands let the user peruse the history of Vi-style
+destructive commands, such as @kbd{dw}, @kbd{J}, @kbd{a}, etc.
+By repeatedly typing @kbd{C-c M-p} or @kbd{C-c M-n} you will cycle Viper
+through the recent history of Vi commands, displaying the commands one by
+one.  Once
+an appropriate command is found, it can be executed by typing address@hidden'.
+
+Since typing @kbd{C-c M-p} is tedious, it is more convenient to bind an
+appropriate function to a function key on the keyboard and use that key.
address@hidden Specials}, for details.
+
address@hidden Ex commands
address@hidden  @kbd{:args}
address@hidden  @kbd{:n}
address@hidden  @kbd{:pwd}
address@hidden  @kbd{:pre}
+The commands @kbd{:args}, @kbd{:next}, @kbd{:pre} behave
+differently.  @kbd{:pwd} exists to get current directory.
+The commands @kbd{:b} and @kbd{:B} switch buffers around.  @xref{File and
+Buffer Handling}, for details.
+There are also the new commands @kbd{:RelatedFile} and
address@hidden (which abbreviate to @kbd{R} and @kbd{P},
+respectively.  @xref{Viper Specials}, for details.
address@hidden @kbd{:RelatedFile}
address@hidden @kbd{:PreviousRelatedFile}
address@hidden table
+
+Apart from the new commands, many old commands have been enhanced.  Most
+notably, Vi style macros are much more powerful in Viper than in Vi.  @xref{Vi
+Macros}, for details.
+
address@hidden Useful Packages, ,New Commands, Improvements over Vi
address@hidden Useful Packages
+
+Some Emacs packages are mentioned here as an aid to the new Viper user, to
+indicate what Viper is capable of.
+A vast number comes with the standard Emacs distribution, and many more exist
+on the net and on the archives.
+
+This manual also mentions some Emacs features a new user
+should know about.  The details of these are found in the GNU Emacs
+Manual.
+
+The features first.  For details, look up the Emacs Manual.
+
address@hidden @samp
address@hidden Make
address@hidden make
address@hidden compiling
+
+Makes and Compiles can be done from the editor.  Error messages will be
+parsed and you can move to the error lines.
address@hidden Shell
address@hidden shell
address@hidden interactive shell
+You can talk to Shells from inside the editor.  Your entire shell session
+can be treated as a file.
address@hidden Mail
address@hidden email
address@hidden mail
+Mail can be read from and sent within the editor.  Several sophisticated
+packages exist.
address@hidden Language Sensitive Editing
+Editing modes are written for most computer languages in existence.  By
+controlling indentation, they catch punctuation errors.
address@hidden table
+
+The packages, below, represents a drop in the sea of special-purpose
+packages that come with standard distribution of Emacs.
+
address@hidden @samp
address@hidden Transparent FTP
address@hidden transparent ftp
address@hidden ange-ftp.el
address@hidden can ftp from the editor to files on other machines
+transparent to the user.
address@hidden RCS Interfaces
address@hidden version maintenance
address@hidden RCS
address@hidden vc.el
address@hidden for doing RCS commands from inside the editor
address@hidden Directory Editor
address@hidden dired
address@hidden dired.el
address@hidden for editing contents of directories and for navigating in
+the file system.
address@hidden Syntactic Highlighting
address@hidden font-lock
address@hidden font-lock.el
address@hidden for automatic highlighting various parts of a buffer
+using different fonts and colors.
address@hidden Saving Emacs Configuration
address@hidden desktop
address@hidden desktop.el
address@hidden for saving/restoring configuration on Emacs exit/startup.
address@hidden Spell Checker
address@hidden ispell
address@hidden ispell.el
address@hidden for spell checking the buffer, words, regions, etc.
address@hidden File and Buffer Comparison
address@hidden ediff
address@hidden ediff.el
address@hidden for finding differences between files and for applying
+patches.
address@hidden table
+
address@hidden
+Emacs Lisp archives exist on
address@hidden
+and @address@hidden
+
+
address@hidden Customization,Commands,Improvements over Vi,Top
address@hidden Customization
+
address@hidden customization
+
+Customization can be done in 2 ways.
+
address@hidden @bullet
address@hidden
address@hidden initialization
address@hidden .viper
+Elisp code in a @file{.viper} file in your home directory.  Viper
+loads @file{.viper} just before it does the binding for mode
+hooks.  This is recommended for experts only.
address@hidden
address@hidden .emacs
+Elisp code in your @file{.emacs} file before and after the @code{(require
+'viper)} line.  This method is @emph{not} recommended, unless you know what
+you are doing.  Only two variables, @code{viper-mode} and
address@hidden, are supposed to be customized in @file{.emacs},
+prior to loading Viper (i.e., prior to @code{(require 'viper)} address@hidden
address@hidden
address@hidden :customize
+By executing the @kbd{:customize} Ex command. This takes you to the Emacs
+customization widget, which lets you change the values of Viper
+customizable variables easily. This method is good for novice and
+experts alike. The customization code in the form of Lisp commands will be
+placed in @file{~/.emacs} or some other customization file depending on the
+version of Emacs that you use. Still, it is recommended to separate
+Viper-related customization produced by the Emacs customization widget
+and keep it in the @file{.viper} file.
+
+Some advanced customization cannot be accomplished this way, however, and
+has to be done in Emacs Lisp in the @file{.viper} file.  For the common
+cases, examples are provided that you can use directly.
address@hidden itemize
+
+
address@hidden
+* Rudimentary Changes::          Simple constant definitions.
+* Key Bindings::                 Enabling Emacs Keys, Rebinding keys, etc.
+* Packages that Change Keymaps:: How to deal with such beasts.
+* Viper Specials::               Special Viper commands.
+* Vi Macros::                    How to do Vi style macros.
address@hidden menu
+
address@hidden Rudimentary Changes,Key Bindings,Customization,Customization
address@hidden Rudimentary Changes
+
address@hidden setting variables
address@hidden variables for customization
address@hidden @kbd{:set}
+
+An easy way to customize Viper is to change the values of constants used in
+Viper.  Here is the list of the constants used in Viper and their default
+values.  The corresponding :se command is also indicated.  (The symbols
address@hidden and @code{nil} represent ``true'' and ``false'' in Lisp).
+
+Viper supports both the abbreviated Vi variable names and their full
+names.  Variable completion is done on full names only.  @key{TAB} and
address@hidden complete
+variable names.  Typing `=' will complete the name and then will prompt for
+a value, if applicable.  For instance, @kbd{:se au @key{SPC}} will complete the
+command to @kbd{:set autoindent}; @kbd{:se ta @key{SPC}} will complete the 
command
+and prompt further like this: @kbd{:set tabstop = }.
+However, typing @kbd{:se ts @key{SPC}} will produce a ``No match'' message
+because @kbd{ts} is an abbreviation for @kbd{tabstop} and Viper supports
+completion on full names only.  However, you can still hit @key{RET}
+or @kbd{=}, which will complete the command like this: @kbd{:set ts = } and
+Viper will be waiting for you to type a value for the tabstop variable.
+To get the full list of Vi variables, type @kbd{:se @key{SPC} @key{TAB}}.
+
address@hidden @code
address@hidden viper-auto-indent nil
address@hidden :se ai (:se autoindent)
address@hidden :se ai-g (:se autoindent-global)
+If @code{t}, enable auto indentation.
+by @key{RET}, @kbd{o} or @kbd{O} command.
+
address@hidden is a local variable.  To change the value globally, use
address@hidden  It may be useful for certain major modes to have their
+own values of @code{viper-auto-indent}.  This can be achieved by using
address@hidden to change the local value of this variable in the hooks to the
+appropriate major modes.
+
address@hidden:se ai} changes the value of @code{viper-auto-indent} in the 
current
+buffer only; @kbd{:se ai-g} does the same globally.
address@hidden viper-electric-mode t
+If not @code{nil}, auto-indentation becomes electric, which means that
address@hidden, @kbd{O}, and @kbd{o} indent cursor according to the current
+major mode.  In the future, this variable may control additional electric
+features.
+
+This is a local variable: @code{setq} changes the value of this variable
+in the current buffer only.  Use @code{setq-default} to change the value in
+all buffers.
address@hidden viper-case-fold-search nil
address@hidden :se ic (:se ignorecase)
+If not @code{nil}, search ignores cases.
+This can also be toggled by quickly hitting @kbd{/} twice.
address@hidden viper-re-search nil
address@hidden :se magic
+If not @code{nil}, search will use regular expressions; if @code{nil} then
+use vanilla search.
+This behavior can also be toggled by quickly hitting @kbd{/} trice.
address@hidden buffer-read-only
address@hidden :se ro (:se readonly)
+Set current buffer to read only.  To change globally put
address@hidden(setq-default buffer-read-only t)} in your @file{.emacs} file.
address@hidden blink-matching-paren t
address@hidden :se sm (:se showmatch)
+Show matching parens by blinking cursor.
address@hidden tab-width t (default setting via @code{setq-default})
address@hidden :se ts=value (:se tabstop=value)
address@hidden :se ts-g=value (:se tabstop-global=value)
address@hidden is a local variable that controls the width of the tab stops.
+To change the value globally, use @code{setq-default}; for local settings,
+use @code{setq}.
+
+The command @kbd{:se ts}
+sets the tab width in the current
+buffer only; it has no effect on other buffers.
+
+The command @kbd{:se ts-g} sets tab width globally,
+for all buffers where the tab is not yet set locally,
+including the new buffers.
+
+Note that typing @key{TAB} normally
+doesn't insert the tab, since this key is usually bound to
+a text-formatting function, @code{indent-for-tab-command} (which facilitates
+programming and document writing).  Instead, the tab is inserted via the
+command @code{viper-insert-tab}, which is bound to @kbd{S-tab} (shift + tab).
+
+On some non-windowing terminals, Shift doesn't modify the @key{TAB} key, so
address@hidden behaves as if it were @key{TAB}.  In such a case, you will have
+to bind @code{viper-insert-tab} to some other convenient key.
+
address@hidden viper-shift-width 8
address@hidden :se sw=value  (:se shiftwidth=value)
+The number of columns shifted by @kbd{>} and @kbd{<} commands.
address@hidden viper-search-wrap-around t
address@hidden :se ws (:se wrapscan)
+If not @code{nil}, search wraps around the end/beginning of buffer.
address@hidden viper-search-scroll-threshold 2
+If search lands within this many lines of the window top or bottom, the
+window will be scrolled up or down by about 1/7-th of its size, to reveal
+the context.  If the value is negative---don't scroll.
address@hidden viper-tags-file-name "TAGS"
+The name of the file used as the tag table.
address@hidden viper-re-query-replace nil
+If not @code{nil}, use reg-exp replace in query replace.
address@hidden viper-want-ctl-h-help nil
+If not @code{nil}, @kbd{C-h} is bound to @code{help-command};
+otherwise, @kbd{C-h} is bound as usual in Vi.
address@hidden viper-vi-style-in-minibuffer t
+If not @code{nil}, Viper provides a high degree of compatibility with Vi
+insert mode when you type text in the Minibuffer; if @code{nil}, typing in
+the Minibuffer feels like plain Emacs.
address@hidden viper-no-multiple-ESC t
+If you set this to @code{nil}, you can use @key{ESC} as Meta in Vi state.
+Normally, this is not necessary, since graphical displays have separate
+Meta keys (usually on each side of the space bar).  On a dumb terminal, Viper
+sets this variable to @code{twice}, which is almost like @code{nil}, except
+that double @key{ESC} beeps.  This, too, lets @key{ESC} to be used as a Meta.
address@hidden viper-ESC-keyseq-timeout 200 on tty, 0 on windowing display
+Escape key sequences separated by this much delay (in milliseconds) are
+interpreted as command, ignoring the special meaning of @key{ESC} in
+VI.  The default is suitable for most terminals.  However, if your terminal
+is extremely slow, you might want to increase this slightly.  You will know
+if your terminal is slow if the @key{ESC} key sequences emitted by the
+arrow keys are interpreted as separately typed characters (and thus the
+arrow keys won't work).  Making this value too large will slow you down, so
+exercise restraint.
address@hidden viper-fast-keyseq-timeout 200
+Key sequences separated by this many milliseconds are treated as Vi-style
+keyboard macros.  If the key sequence is defined as such a macro, it will be
+executed.  Otherwise, it is processed as an ordinary sequence of typed keys.
+
+Setting this variable too high may slow down your typing.  Setting it too
+low may make it hard to type macros quickly enough.
address@hidden viper-translate-all-ESC-keysequences t on tty, nil on windowing 
display
+Normally, Viper lets Emacs translate only those ESC key sequences that are
+defined in the low-level key-translation-map or function-key-map, such as those
+emitted by the arrow and function keys. Other sequences, e.g., @kbd{\\e/}, are
+treated as @kbd{ESC} command followed by a @kbd{/}. This is good for people
+who type fast and tend to hit other characters right after they hit
+ESC. Other people like Emacs to translate @kbd{ESC} sequences all the time. 
+The default is to translate all sequences only when using a dumb terminal.
+This permits you to use @kbd{ESC} as a meta key in insert mode. For instance,
+hitting @kbd{ESC x} fast would have the effect of typing @kbd{M-x}.
+If your dumb terminal is not so dumb and understands the meta key, then you
+probably will be better off setting this variable to nil. Try and see which
+way suits you best.
address@hidden viper-ex-style-motion t
+Set this to @code{nil}, if you want @kbd{l,h} to cross
+lines, etc.  @xref{Movement and Markers}, for more info.
address@hidden viper-ex-style-editing t
+Set this to @code{nil}, if you want
address@hidden and @key{DEL} to not stop
+at the beginning of a line in Insert state, @key{X} and @key{x} to delete
+characters across lines in Vi command state, etc.
address@hidden viper-ESC-moves-cursor-back t
+It t, cursor moves back 1 character when switching from insert state to vi
+state.  If nil, the cursor stays where it was before the switch.
address@hidden viper-always t
address@hidden means: leave it to Viper to decide when a buffer must be brought
+up in Vi state,
+Insert state, or Emacs state.  This heuristics works well in virtually all
+cases.  @code{nil} means you either has to invoke @code{viper-mode} manually
+for each buffer (or you can add @code{viper-mode} to the appropriate major mode
+hooks using @code{viper-load-hook}).
+
+This option must be set in the file @file{~/.viper}.
address@hidden viper-custom-file-name "~/.viper"
+File used for Viper-specific customization.
+Change this setting, if you want.  Must be set in @file{.emacs} (not 
@file{.viper}!)
+before Viper is loaded.  Note that you
+have to set it as a string inside double quotes.
address@hidden viper-spell-function 'ispell-region
+Function used by the command @kbd{#c<move>} to spell.
address@hidden viper-glob-function
+The value of this variable is the function symbol used to expand wildcard
+symbols. This is platform-dependent. The default tries to set this variable
+to work with most shells, MS Windows, OS/2, etc. However, if it
+doesn't work the way you expect, you should write your own.
+Use @code{viper-glob-unix-files} and @code{viper-glob-mswindows-files} in
address@hidden as examples.
+
+This feature is used to expand wildcards in the Ex command @kbd{:e}.
+Note that Viper doesn't support wildcards in the @kbd{:r} and @kbd{:w}
+commands, because file completion is a better mechanism.
address@hidden @code{viper-glob-function}
+
address@hidden ex-cycle-other-window t
+If not @code{nil}, @kbd{:n} and @kbd{:b} will cycle through files in another
+window, if one exists.
address@hidden ex-cycle-through-non-files nil
address@hidden:n} does not normally cycle through buffers.  Set this to get
+buffers also.
address@hidden viper-want-emacs-keys-in-insert
+This is set to @code{nil} for user levels 1 and 2 and to @code{t} for user
+levels 3 and 4.  Users who specify level 5 are allowed to set this variable
+as they please (the default for this level is @code{t}).  If set to
address@hidden, complete Vi compatibility is provided in Insert state.  This is
+really not recommended, as this precludes you from using language-specific
+features provided by the major modes.
address@hidden viper-want-emacs-keys-in-vi
+This is set to @code{nil} for user
+level 1 and to @code{t} for user levels 2--4.
+At level 5, users are allowed to set this variable as they please (the
+default for this level is @code{t}).
+If set to @code{nil}, complete Vi compatibility is provided
+in Vi command state.  Setting this to @code{nil} is really a bad idea,
+unless you are a novice, as this precludes the use
+of language-specific features provided by the major modes.
address@hidden viper-keep-point-on-repeat t
+If not @code{nil}, point is not moved when the user repeats the previous
+command by typing `.'  This is very useful for doing repeated changes with
+the @kbd{.} key.
address@hidden viper-repeat-from-history-key 'f12
+Prefix key used to invoke the macros @kbd{f12 1} and @kbd{f12 2} that repeat
+the second-last and the third-last destructive command.
+Both these macros are bound (as Viper macros) to
address@hidden,
+which checks the second key by which it is invoked to see which of the
+previous commands to invoke.  Viper binds @kbd{f12 1} and @kbd{f12 2} only,
+but the user can bind more in @file{~/.viper}.  @xref{Vi Macros}, for how to do
+this.
address@hidden viper-keep-point-on-undo nil
+If not @code{nil}, Viper tries to not move point when undoing commands.
+Instead, it will briefly move the cursor to the place where change has
+taken place.  However, if the undone piece of text is not seen in window,
+then point will be moved to the place where the change took place.
+Set it to @code{t} and see if you like it better.
address@hidden viper-delete-backwards-in-replace nil
+If not @code{nil}, @key{DEL} key will delete characters while moving the cursor
+backwards.  If @code{nil}, the cursor will move backwards without deleting
+anything.
address@hidden viper-replace-overlay-face 'viper-replace-overlay-face
+On a graphical display, Viper highlights replacement regions instead of
+putting a @samp{$} at the end.  This variable controls the so called
address@hidden used to highlight the region.
+
+By default, @code{viper-replace-overlay-face} underlines the replacement on
+monochrome displays and also lays a stipple over them.  On color displays,
+replacement regions are highlighted with color.
+
+If you know something about Emacs faces and don't like how Viper highlights
+replacement regions, you can change @code{viper-replace-overlay-face} by
+specifying a new face.  (Emacs faces are described in the Emacs Lisp
+reference.)  On a color display, the following customization method is
+usually most effective:
address@hidden
+(set-face-foreground viper-replace-overlay-face "DarkSlateBlue")
+(set-face-background viper-replace-overlay-face "yellow")
address@hidden example
+For a complete list of colors available to you, evaluate the expression
address@hidden(x-defined-colors)}.  (Type it in the buffer @code{*scratch*} and 
then
+hit the @kbd{C-j} key.
+
address@hidden viper-replace-overlay-cursor-color  "Red"
address@hidden @code{viper-replace-overlay-cursor-color}
+Cursor color when it is inside the replacement region.
+This has effect only on color displays and only when Emacs runs as an X
+application.
address@hidden viper-insert-state-cursor-color nil
address@hidden @code{viper-insert-state-cursor-color}
+If set to a valid color, this will be the cursor color when Viper is in
+insert state.
address@hidden viper-replace-region-end-delimiter "$"
+A string used to mark the end of replacement regions.  It is used only on
+TTYs or if @code{viper-use-replace-region-delimiters} is non-nil.
address@hidden viper-replace-region-start-delimiter  ""
+A string used to mark the beginning of replacement regions.  It is used
+only on TTYs or if @code{viper-use-replace-region-delimiters} is non-nil.
address@hidden viper-use-replace-region-delimiters
+If non-nil, Viper will always use @code{viper-replace-region-end-delimiter} and
address@hidden to delimit replacement regions,
+even on color displays (where this is unnecessary).  By default, this
+variable is non-nil only on TTYs or monochrome displays.
address@hidden viper-allow-multiline-replace-regions t
+If non-nil, multi-line text replacement regions, such as those produced by
+commands @kbd{c55w}, @kbd{3C}, etc., will stay around until the user exits
+the replacement mode.  In this variable is set to @code{nil}, Viper will
+emulate the standard Vi behavior, which supports only intra-line
+replacement regions (and multi-line replacement regions are deleted).
address@hidden viper-toggle-key "\C-z"
+Specifies the key used to switch from Emacs to Vi and back.
+Must be set in @file{.viper}.  This variable can't be
+changed interactively after Viper is loaded.
+
+In Insert state, this key acts as a temporary escape to Vi state, i.e., it
+will set Viper up so that the very next command will be executed as if it
+were typed in Vi state.
address@hidden viper-ESC-key "\e"
+Specifies the key used to escape from Insert/Replace states to Vi.
+Must be set in @file{.viper}.  This variable cannot be
+changed interactively after Viper is loaded.
address@hidden viper-buffer-search-char nil
+Key used for buffer search.  @xref{Viper Specials}, for details.
address@hidden viper-surrounding-word-function 'viper-surrounding-word
+The value of this variable is a function name that is used to determine
+what constitutes a word clicked upon by the mouse.  This is used by mouse
+search and insert.
address@hidden viper-search-face 'viper-search-face
+Variable that controls how search patterns are highlighted when they are
+found.
address@hidden viper-vi-state-hook nil
+List of parameterless functions to be run just after entering the Vi
+command state.
address@hidden viper-insert-state-hook nil
+Same for Insert state.  This hook is also run after entering Replace state.
address@hidden viper-replace-state-hook  nil
+List of (parameterless) functions called just after entering Replace state
+(and after all @code{viper-insert-state-hook}).
address@hidden viper-emacs-state-hook nil
+List of (parameterless) functions called just after switching from Vi state
+to Emacs state.
address@hidden viper-load-hook nil
+List of (parameterless) functions called just after loading Viper.  This is
+the last chance to do customization before Viper is up and running.
address@hidden table
address@hidden
+You can reset some of these constants in Viper with the Ex command @kbd{:set}
+(when so indicated in the table).  Or you
+can include a line like this in your @file{.viper} file:
address@hidden
+(setq viper-case-fold-search t)
address@hidden example
address@hidden @code{viper-auto-indent}
address@hidden @code{viper-electric-mode}
address@hidden @code{viper-case-fold-search}
address@hidden @code{viper-re-search}
address@hidden @code{viper-shift-width}
address@hidden @code{buffer-read-only}
address@hidden @code{viper-search-wrap-around}
address@hidden @code{viper-search-scroll-threshold}
address@hidden @code{viper-search-face}
address@hidden @code{viper-tags-file-name}
address@hidden @code{viper-re-query-replace}
address@hidden @code{viper-want-ctl-h-help}
address@hidden @code{viper-vi-style-in-minibuffer}
address@hidden @code{viper-no-multiple-ESC}
address@hidden @code{viper-always}
address@hidden @code{viper-ESC-keyseq-timeout}
address@hidden @code{viper-fast-keyseq-timeout}
address@hidden @code{viper-ex-style-motion}
address@hidden @code{viper-ex-style-editing}
address@hidden @code{viper-ESC-moves-cursor-back}
address@hidden @code{viper-custom-file-name}
address@hidden @code{viper-spell-function}
address@hidden @code{ex-cycle-other-window}
address@hidden @code{ex-cycle-through-non-files}
address@hidden @code{viper-want-emacs-keys-in-insert}
address@hidden @code{viper-want-emacs-keys-in-vi}
address@hidden @code{viper-keep-point-on-repeat}
address@hidden @code{viper-keep-point-on-undo}
address@hidden @code{viper-delete-backwards-in-replace}
address@hidden @code{viper-replace-overlay-face}
address@hidden @code{viper-replace-region-end-symbol}
address@hidden @code{viper-replace-region-start-symbol}
address@hidden @code{viper-allow-multiline-replace-regions}
address@hidden @code{viper-toggle-key}
address@hidden @code{viper-ESC-key}
address@hidden @code{viper-buffer-search-char}
address@hidden @code{viper-surrounding-word-function}
address@hidden @code{viper-vi-state-hook}
address@hidden @code{viper-insert-state-hook}
address@hidden @code{viper-replace-state-hook}
address@hidden @code{viper-emacs-state-hook}
+
address@hidden Key Bindings, Packages that Change Keymaps, Rudimentary 
Changes,Customization
address@hidden Key Bindings
+
address@hidden key bindings
address@hidden keymaps
+
+Viper lets you define hot keys, i.e., you can associate keyboard keys
+such as F1, Help, PgDn, etc., with Emacs Lisp functions (that may already
+exist or that you will write).  Each key has a "preferred form" in
+Emacs.  For instance, the Up key's preferred form is [up], the Help key's
+preferred form is [help], and the Undo key has the preferred form [f14].
+You can find out the preferred form of a key by typing @kbd{M-x
+describe-key-briefly} and then typing the key you want to know about.
+
+Under the X Window System, every keyboard key emits its preferred form,
+so you can just type
+
address@hidden
+(global-set-key [f11] 'calendar)                        ; L1, Stop
+(global-set-key [f14] 'undo)                            ; L4, Undo
address@hidden lisp
+
address@hidden
+to bind L1 (a key that exists on some SUN workstations) so it will invoke
+the Emacs Calendar and to bind L4 so it will undo changes.
+However, on a dumb terminal or in an Xterm window, even the standard arrow
+keys may
+not emit the right signals for Emacs to understand.  To let Emacs know about
+those keys, you will have to find out which key sequences they emit
+by typing @kbd{C-q} and then the key (you should switch to Emacs state
+first).  Then you can bind those sequences to their preferred forms using
address@hidden as follows:
+
address@hidden
+(cond ((string= (getenv "TERM") "xterm")
+(define-key function-key-map "\e[192z" [f11])    ; L1
+(define-key function-key-map "\e[195z" [f14])    ; L4, Undo
address@hidden lisp
+
+The above illustrates how to do this for Xterm.  On VT100, you would have to
+replace "xterm" with "vt100" and also change the key sequences (the same
+key may emit different sequences on different types of terminals).
+
+The above keys are global, so they are overwritten by the local maps
+defined by the major modes and by Viper itself.  Therefore, if you wish to
+change a binding set by a major mode or by Viper, read this.
+
+Viper users who wish to specify their own key bindings should be concerned
+only with the following three keymaps:
address@hidden for Vi state commands,
address@hidden for Insert state commands,
+and @code{viper-emacs-global-user-map} for Emacs state commands (note:
+customized bindings for Emacs state made to @code{viper-emacs-global-user-map}
+are @emph{not} inherited by Insert state).
+
+For more information on Viper keymaps, see the header of the file
address@hidden
+If you wish to change a Viper binding, you can use the
address@hidden command, to modify @code{viper-vi-global-user-map},
address@hidden, and @code{viper-emacs-global-user-map}, as
+explained below.  Each of these key maps affects the corresponding Viper state.
+The keymap @code{viper-insert-global-user-map} also affects Viper's Replace
+state. 
+
address@hidden
+If you want to
+bind a key, say @kbd{C-v}, to the function that scrolls
+page down and to make @kbd{0} display information on the current buffer,
+putting this in @file{.viper} will do the trick in Vi state:
address@hidden
+(define-key viper-vi-global-user-map "\C-v" 'scroll-down)
address@hidden example
address@hidden
+To set a key globally,
address@hidden
+(define-key viper-emacs-global-user-map "\C-c m" 'smail)
+(define-key viper-vi-global-user-map "0" 'viper-info-on-file)
address@hidden example
address@hidden
+Note, however, that this binding may be overwritten by other keymaps, since
+the global keymap has the lowest priority.
+To make sure that nothing will override a binding in Emacs state, you
+can write this:
address@hidden
+(define-key viper-emacs-global-user-map "\C-c m" 'smail)
address@hidden example
address@hidden
+To customize the binding for @kbd{C-h} in Insert state:
address@hidden
+(define-key viper-insert-global-user-map "\C-h" 'my-del-backwards-function)
address@hidden example
address@hidden
+
+Each Emacs command key calls some lisp function.  If you have enabled the
+Help, (@pxref{Rudimentary Changes}) @kbd{C-h k} will show you the function
+for each specific key; @kbd{C-h b} will show all bindings, and @kbd{C-h m}
+will provide information on the major mode in effect.  If Help is not
+enabled, you can still get help in Vi state by prefixing the above commands
+with @kbd{\}, e.g., @kbd{\ C-h k} (or you can use the Help menu in the
+menu bar, if Emacs runs under X).
+
+Viper users can also change bindings on a per major mode basis.  As with
+global bindings, this can be done separately for each of the three main Viper
+states.  To this end, Viper provides the function
address@hidden
address@hidden @code{viper-modify-major-mode}
+
+To modify keys in Emacs state for @code{my-favorite-major-mode}, the user
+needs to create a sparse keymap, say, @code{my-fancy-map}, bind whatever
+keys necessary in that keymap, and put
+
address@hidden
+(viper-modify-major-mode 'dired-mode 'emacs-state my-fancy-map)
address@hidden example
+
address@hidden
+in @file{~/.viper}.  To do the same in Vi and Insert states, you should use
address@hidden and @code{insert-state}.  Changes in Insert state are also
+in effect in Replace state.  For instance, suppose that the user wants to
+use @kbd{dd} in Vi state under Dired mode to delete files, @kbd{u} to unmark
+files, etc.  The following code in @file{~/.viper} will then do the job:
+
address@hidden
+(setq my-dired-modifier-map (make-sparse-keymap))
+(define-key my-dired-modifier-map "dd" 'dired-flag-file-deletion)
+(define-key my-dired-modifier-map "u" 'dired-unmark)
+(viper-modify-major-mode 'dired-mode 'vi-state my-dired-modifier-map)
address@hidden example
+
+A Vi purist may want to modify Emacs state under Dired mode so that
address@hidden, @kbd{l}, etc., will move around in directory buffers, as in
+Vi.  Although this is not recommended, as these keys are bound to useful
+Dired functions, the trick can be accomplished via the following code:
+
address@hidden
+(setq my-dired-vi-purist-map (make-sparse-keymap))
+(define-key my-dired-vi-purist-map "k" 'viper-previous-line)
+(define-key my-dired-vi-purist-map "l" 'viper-forward-char)
+(viper-modify-major-mode 'dired-mode 'emacs-state my-dired-vi-purist-map)
address@hidden example
+
+Yet another way to customize key bindings in a major mode is to edit the
+list @code{viper-major-mode-modifier-list} using the customization widget.
address@hidden @code{viper-major-mode-modifier-list}
+(This variable is in the Viper-misc customization group.)
+The elements of this list are triples of the form: (major-mode viper-state
+keymap), where the keymap contains bindings that are supposed to be active
+in the given major mode and the given viper-state.
+
+Effects similar to key binding changes can be achieved by defining Vi
+keyboard macros using the Ex commands @kbd{:map} and @kbd{:map!}.  The
+difference is that multi-key Vi macros do not override the keys they are
+bound to, unless these keys are typed in quick succession.  So, with macros,
+one can use the normal keys alongside with the macros.  If per-mode
+modifications are needed, the user can try both ways and see which one is
+more convenient.
address@hidden @kbd{:map}
address@hidden Macros}, for details.
+
+Note: in major modes that come up in @emph{Emacs state} by default, the
+aforesaid modifications may not take place immediately (but only after the
+buffer switches to some other Viper state and then back to Emacs state).  To
+avoid this, one should add @code{viper-change-state-to-emacs} to an
+appropriate hook of that major mode.  (Check the function
address@hidden in @file{viper.el} for examples.)  However, if you
+did not set @code{viper-always} to @code{nil}, chances are that you won't
+need to perform the above procedure, because Viper will take care of most
+useful defaults.
+
+
+Finally, Viper has a facility that lets the user define per-buffer
+bindings, i.e., bindings that are in effect in some specific buffers
+only.  Unlike per-mode bindings described above, per-buffer bindings can be
+defined based on considerations other than the major mode.  This is done
+via the function @code{viper-add-local-keys}, which lets one specify bindings
+that should be in effect in the current buffer only and for a specific Viper
+state.  For instance,
address@hidden
+(viper-add-local-keys 'vi-state '(("ZZ" .@: TeX-command-master)
+                                 ("ZQ" .@: viper-save-kill-buffer)))
address@hidden lisp
address@hidden
+redefines @kbd{ZZ} to invoke @code{TeX-command-master} in @code{vi-state}
+and @kbd{ZQ} to save-then-kill the current buffer.  These bindings take
+effect only in the buffer where this command is executed.  The typical use
+of this function is to execute the above expression from within a function
+that is included in a hook to some major mode.  For instance, the above
+expression
+could be called from a function, @code{my-tex-init}, which may be added to
address@hidden as follows:
address@hidden
+(add-hook 'tex-mode-hook 'my-tex-init)
address@hidden lisp
address@hidden
+When TeX mode starts, the hook is executed and the above Lisp expression is
+evaluated.  Then, the bindings for @kbd{ZZ} and @kbd{ZQ} are changed in Vi
+command mode for all buffers in TeX mode.
+
+Another useful application is to bind @kbd{ZZ} to @code{send-mail}
+in the Mail mode buffers (the specifics of this depend on which mail
+package you are using, @code{rmail}, @code{mh-e}, @code{vm}, etc.
+For instance, here is how to do this for @code{mh-e}, the Emacs interface
+to MH:
address@hidden
+(defun mh-add-vi-keys ()
+  "Set up ZZ for MH-e and XMH."
+  (viper-add-local-keys 'vi-state '(("ZZ" .@: mh-send-letter))))
+(add-hook 'mh-letter-mode-hook 'mh-add-vi-keys)
address@hidden lisp
+
+You can also use @code{viper-add-local-keys} to set per buffer
+bindings in Insert state and Emacs state by passing as a parameter the
+symbols @code{insert-state} and @code{emacs-state}, respectively.
+As with global bindings, customized local bindings done to Emacs state
+are not inherited by Insert state.
+
+On rare occasions, local keys may be added by mistake.  Usually this is done
+indirectly, by invoking a major mode that adds local keys (e.g.,
address@hidden redefines @key{RET}).  In such a case, exiting the wrong
+major mode won't rid you from unwanted local keys, since these keys are
+local to Viper state and the current buffer, not to the major mode.
+In such situations, the remedy is to type @kbd{M-x viper-zap-local-keys}.
+
+So much about Viper-specific bindings.
address@hidden,,Customization,emacs,The GNU Emacs
+Manual}, and the Emacs quick reference card for the general info on key
+bindings in Emacs.
+
address@hidden @code{function-key-map}
address@hidden @code{viper-vi-global-user-map}
address@hidden @code{viper-insert-global-user-map}
address@hidden @code{viper-emacs-global-user-map}
address@hidden @code{viper-add-local-keys}
address@hidden @code{viper-zap-local-keys}
+
address@hidden Packages that Change Keymaps,Viper Specials,Key 
Bindings,Customization
address@hidden Packages that Change Keymaps
address@hidden C-c and Viper
address@hidden Viper and C-c
+
+Viper is designed to coexist with all major and minor modes of Emacs.  This
+means that bindings set by those modes are generally available with Viper
+(unless you explicitly prohibit them by setting
address@hidden and @code{viper-want-emacs-keys-in-insert} to
address@hidden).
+If @code{viper-always} is set to @code{t} (which is the default), Viper
+will try to bring each buffer 
+in the Viper state that is most appropriate for that buffer.
+Usually, this would be the Vi state, but sometimes it could be the Insert
+state or the Emacs state.
+
+Some major mode bindings will necessarily be overwritten by Viper.  Indeed, in
+Vi state, most of the 1-character keys are used for Vi-style editing.  This
+usually causes no problems because most packages designed for editing files
+typically do not bind such keys.  Instead, they use key sequences that start
+with @kbd{C-x} and @kbd{C-c}.  This is why it was so important for us to
+free up @kbd{C-x} and @kbd{C-c}.
+It is common for language-specific major modes to bind @key{TAB} and
address@hidden (the line feed) keys to various formatting functions.  This is
+extremely useful, but may require some getting used to for a Vi user.  If you
+decide that this feature is not for you, you can re-bind these keys as
+explained earlier (@pxref{Customization}).
+
+Binding for @key{TAB} is one of the most unusual aspects of Viper for many
+novice users.  In Emacs, @key{TAB} is used to format text and programs, and
+is extremely useful.  For instance, hitting @key{TAB} causes the current
+line to be re-indented in accordance with the context.  In programming,
+this is very important, since improper automatic indentation would
+immediately alert the programmer to a possible error.  For instance, if a
address@hidden)} or a @kbd{"} is missing somewhere above the current
+line, @key{TAB} is likely to mis-indent the line.
+
+For this reason, Viper doesn't change the standard Emacs binding of
address@hidden, thereby sacrificing Vi compatibility
+(except for users at level 1).  Instead, in Viper, the key
address@hidden (shift+ tab) is chosen to emulate Vi's @key{TAB}.
+
+We should note that on some non-windowing terminals, Shift doesn't modify
+the @key{TAB} key, so @kbd{S-tab} behaves as if it were @key{TAB}.  In such
+a case, you will have to bind @code{viper-insert-tab} to some other
+convenient key.
+
+Some packages, notably Dired, Gnus, Info, etc., attach special meaning to
+common keys like @key{SPC}, @kbd{x}, @kbd{d}, @kbd{v}, and others.  This
+means that Vi command state is inappropriate for working with these
+packages.  Fortunately, these modes operate on read-only buffers and are
+designed not for editing files, but for special-purpose browsing, reading
+news, mail, etc., and Vi commands are meaningless in these situations.  For
+this reason, Viper doesn't force Vi state on such major modes---it
+brings them in Emacs state.  You can switch to Vi state by typing @kbd{C-z}
+if, for instance, you want to do Vi-style search in a buffer (although,
+usually, incremental search, which is bound to @kbd{C-s}, is sufficient in
+these situations).  But you should then switch back to Emacs state if you
+plan to continue using these major modes productively.  You can also switch
+to Vi temporarily, to execute just one command.  This is done by typing
address@hidden \}.  (In some of these modes, @kbd{/} and @kbd{:} are bound
+Vi-style, unless these keys perform essential duties.)
+
+If you would like certain major modes to come up in Emacs state rather than
+Vi state (but Viper thinks otherwise), you should put these major modes
+on the @code{viper-emacs-state-mode-list} list and delete them from
address@hidden
+Likewise, you can force Viper's Insert state on a major mode by putting it
+in @code{viper-insert-state-mode-list}.
address@hidden @code{viper-emacs-state-mode-list}
address@hidden @code{viper-insert-state-mode-list}
address@hidden @code{viper-vi-state-mode-list}
+
+It is also possible to impose Vi on some major modes, even though they may
+bind common keys to specialized commands.  This might make sense for modes
+that bind only a small number of common keys.  For instance, Viper subverts
+the Shell mode by changing the bindings for @kbd{C-m} and @kbd{C-d} using
address@hidden described in section on customization
+(@pxref{Customization}).
+
+In some cases, some @emph{minor} modes might override certain essential
+bindings in Vi command state.  This is not a big priblem because this
+can happen only in the beginning, when the minor mode kicks in.  Typing
address@hidden viper-mode} will correct the situation.  Viper knows about
+several such minor modes and takes care of them, so the above trick
+is usually not necessary.  If you find that some minor mode, e.g.,
address@hidden interferes with Viper, putting the following in
address@hidden should fix the problem:
address@hidden
+(viper-harness-minor-mode "nasty-mode")
address@hidden lisp
address@hidden
+The argument to @code{viper-harness-minor-mode} is the name of the file for the
+offending minor mode with the suffixes @file{.el} and @file{.elc} removed.
+
+It may not be always obvious which minor mode is at fault.  The only
+guidance here is to look into the file that defines the minor mode you are
+suspecting, say @code{nasty-mode.el}, and see if it has a variable called
address@hidden  Then check if there is a statement of the form
address@hidden
+(define-key nasty-mode-map key function)
address@hidden lisp
address@hidden
+that binds the misbehaving
+keys.  If so, use the above line to harness @code{nasty-mode}.  If your
+suspicion is wrong, no harm is done if you harness a minor mode that
+doesn't need to be harnessed.
+
address@hidden @code{viper-want-emacs-keys-in-vi}
address@hidden @code{viper-want-emacs-keys-in-insert}
address@hidden @code{viper-always}
address@hidden @code{viper-set-hooks}
address@hidden @code{viper-mode}
address@hidden @code{viper-harness-minor-mode}
address@hidden @code{remove-hook}
address@hidden @code{add-hook}
+
address@hidden Viper Specials,Vi Macros,Packages that Change 
Keymaps,Customization
address@hidden Viper Specials
+
+Viper extends Vi with a number of useful features.  This includes various
+search functions, histories of search strings, Ex commands, insertions, and
+Vi's destructive commands.  In addition, Viper supports file name completion
+and history, completion of Ex commands and variables, and many other
+features.  Some of these features are explained in detail elsewhere in this
+document.  Other features are explained here.
+
address@hidden @code
address@hidden (viper-buffer-search-enable)
address@hidden viper-buffer-search-char nil
+Enable buffer search.  Explicit call to @code{viper-buffer-search-enable}
+sets @code{viper-buffer-search-char} to @kbd{g}.  Alternatively, the user can
+set @code{viper-buffer-search-char} in @file{.viper} to a key sequence
+to be used for buffer search.  There is no need to call
address@hidden in that case.
address@hidden @code{viper-buffer-search-enable}
address@hidden @code{viper-buffer-search-char}
address@hidden viper-toggle-search-style
+This function, bound to @kbd{C-c /}, lets one toggle case-sensitive and
+case-insensitive search, and also switch between plain vanilla search and
+search via regular expressions.  Without the prefix argument, the user is
+asked which mode to toggle.  With prefix argument 1, this toggles
+case-sensitivity.  With prefix argument 2, regular expression/vanilla search
+will be toggled.
+
+However, we found that the most convenient way to toggle
+these options is to bind a Vi macro to
+bind @kbd{//} to toggles case sensitivity and to @kbd{///} to toggles
+vanilla search.  Thus, quickly hitting @kbd{/} twice will switch Viper from
+case sensitive search to case-insensitive.  Repeating this once again will
+restore the original state.  Likewise, quickly hitting @kbd{/} three times
+will switch you from vanilla-style search to search via regular expressions.
+If you hit something other than @kbd{/} after the first @kbd{/} or if the
+second @kbd{/} doesn't follow quickly enough, then Viper will issue the
+usual prompt @kbd{/} and will wait for input, as usual in Vi.
+If you don't like this behavior, you can ``unrecord'' these macros in your
address@hidden/.viper} file.  For instance, if you don't like the above 
feature, put
+this in @file{~/.viper}:
address@hidden
+(viper-set-searchstyle-toggling-macros 'undefine)
address@hidden example
address@hidden @code{viper-set-searchstyle-toggling-macros}
+
address@hidden Vi-isms in Emacs state
+Some people find it useful to use the Vi-style search key, `/', to invoke
+search in modes which Viper leaves in emacs-state.  These modes are:
address@hidden, @code{mh-folder-mode}, @code{gnus-group-mode},
address@hidden, @code{Info-mode}, and @code{Buffer-menu-mode}
+(more may be added in the future).  So, in the above modes, Viper binds `/'
+so that it will behave Vi-style.  Furthermore, in those major modes, Viper
+binds `:' to invoke ex-style commands, like in vi-state.  And, as described
+above, `//' and `///' get bound to Vi-style macros that toggle
+case-insensitivity and regexp-search.
+
+If you don't like these features---which I don't really understand---you
+can unbind `/' and `:' in @code{viper-dired-modifier-map} (for Dired) or in
address@hidden, for other modes.
address@hidden @code{viper-slash-and-colon-map}
address@hidden @code{viper-dired-modifier-map}
+
+To unbind the macros `//' and `///' for a major mode where you feel they
+are undesirable, execute @code{viper-set-emacs-state-searchstyle-macros} with a
+non-nil argument.  This can be done either interactively, by supplying a
+prefix argument, or by placing
address@hidden
+(viper-set-emacs-state-searchstyle-macros 'undefine)
address@hidden example
address@hidden @code{viper-set-emacs-state-searchstyle-macros}
+in the hook to the major mode (e.g., @code{dired-mode-hook}).
address@hidden Macros}, for more information on Vi macros.
+
address@hidden viper-heading-start
address@hidden viper-heading-end
address@hidden headings
address@hidden sections
address@hidden paragraphs
address@hidden sentences
+Regular Expressions for @kbd{[[} and @kbd{]]}.  Note that Emacs defines
+Regexps for paragraphs and sentences.  @xref{Paragraphs,,Paragraphs and
+Sentences,emacs,The GNU Emacs Manual}, for details.
address@hidden M-x viper-set-expert-level
address@hidden @code{viper-set-expert-level}
+Change your user level interactively.
address@hidden viper-smart-suffix-list  '("" "tex" "c" "cc" "el" "p")
address@hidden @code{viper-smart-suffix-list}
+Viper supports Emacs-style file completion when it prompts the user for a
+file name.  However, in many cases, the same directory may contain files
+with identical prefix but different suffixes, e.g., prog.c, prog.o,
+paper.tex, paper.dvi.  In such cases, completion will stop at the `.'.
+If the above variable is a list of strings representing suffixes, Viper will
+try these suffixes
+in the order listed and will check if the corresponding file exists.
+
+For instance, if completion stopped at `paper.'@: and the user typed
address@hidden,
+then Viper will check if the files `paper.', `paper.tex', `paper.c', etc., 
exist.
+It will take the first such file.  If no file exists, Viper will give a chance
+to complete the file name by typing the appropriate suffix.  If `paper.'@: was
+the intended file name, hitting return will accept it.
+
+To turn this feature off, set the above variable to @code{nil}.
+
address@hidden viper-insertion-ring-size  14
address@hidden @code{viper-insertion-ring-size}
address@hidden Insertion ring
+Viper remembers what was previously inserted in Insert and Replace states.
+Several such recent insertions are kept in a special ring of strings of size
address@hidden
+If you enter Insert or Replace state you can reinsert strings from this
+ring by typing @kbd{C-c M-p} or @kbd{C-c M-n}.  The former will search the
+ring in
+the direction of older insertions, and the latter will search in
+the direction of newer insertions.  Hitting @kbd{C-c M-p} or @kbd{C-c M-n}
+in succession
+will undo the previous insertion from the ring and insert the next item on
+the ring.  If a larger ring size is needed, change the value of the above
+variable in the @file{~/.viper} file.
+
+Since typing these sequences of keys may be tedious, it is suggested that the
+user should bind a function key, such as @kbd{f31}, as follows:
address@hidden
+(define-key viper-insert-global-user-map [f31]
+            'viper-insert-prev-from-insertion-ring)
address@hidden example
+This binds @kbd{f31} (which is usually @kbd{R11} on a Sun workstation)
+to the function that inserts the previous string in the insertion history.
+To rotate the history in the opposite
+direction, you can either bind an unused key to
address@hidden or hit any digit (1 to 9) then
address@hidden
+
+One should not bind the above functions to @kbd{M-p} or @kbd{M-n}, since
+this will interfere with the Minibuffer histories and, possibly, other
+major modes.
+
address@hidden viper-command-ring-size  14
address@hidden @code{viper-command-ring-size}
address@hidden Destructive command ring
address@hidden Destructive command history
+Viper keeps track of the recent history of destructive
+commands, such as @kbd{dw}, @kbd{i}, etc.
+In Vi state,
+the most recent command can be re-executed by hitting address@hidden', as in 
Vi.
+However, repeated typing @kbd{C-c M-p} will cause Viper to show the
+previous destructive commands in the minibuffer.  Subsequent hitting 
address@hidden'
+will execute the command that was displayed last.
+The key @kbd{C-c M-n} will cycle through the command history in the
+opposite direction.
+Since typing @kbd{C-c M-p} may be tedious, it is more convenient to bind an
+appropriate function to an unused function key on the keyboard and use that
+key.  For instance, the following
address@hidden
+(define-key viper-vi-global-user-map [f31]
+            'viper-prev-destructive-command)
address@hidden example
+binds the key @kbd{f31} (which is usually @kbd{R11} on a Sun workstation)
+to the function that searches the command history in the direction of older
+commands.  To search in the opposite
+direction, you can either bind an unused key to
address@hidden or hit any digit (1 to 9) then @kbd{f31}.
+
+One should not bind the above functions to @kbd{M-p} or @kbd{M-n}, since
+this will interfere with the Minibuffer histories and, possibly, other
+major modes.
+
address@hidden viper-minibuffer-vi-face  'viper-minibuffer-vi-face
address@hidden viper-minibuffer-insert-face  'viper-minibuffer-insert-face
address@hidden viper-minibuffer-emacs-face  'viper-minibuffer-emacs-face
+These faces control the appearance of the minibuffer text in the
+corresponding Viper states.  You can change the appearance of these faces
+through Emacs' customization widget, which is accessible through the
+menubar.
+
+Viper is located in this widget under the @emph{Emulations} customization
+subgroup of the @emph{Editing} group.  All Viper faces are grouped together
+in Viper's @emph{Highlighting} customization subgroup.
+
+Note that only the text you type in is affected by the above faces.
+Prompts and Minibuffer messages are not affected.
+
+Purists who do not like adornments in the minibuffer can always zap them by
+putting
address@hidden
+(copy-face 'default 'viper-minibuffer-vi-face)
+(copy-face 'default 'viper-minibuffer-insert-face)
+(copy-face 'default 'viper-minibuffer-emacs-face)
address@hidden example
+in the @file{~/.viper} file or through the customization widget, as
+described above.  However, in that case, the user will not have any
+indication of the current Viper state in the minibuffer.  (This is important
+if the user accidentally switches to another Viper state by typing @key{ESC} or
address@hidden).
address@hidden M-x viper-go-away
address@hidden @code{viper-go-away}
+Make Viper disappear from the face of your running Emacs instance.  If your
+fingers start aching again, @kbd{M-x viper-mode} might save your day.
address@hidden M-x toggle-viper-mode
address@hidden @code{toggle-viper-mode}
+Toggle Viperization of Emacs on and off.
address@hidden table
+
address@hidden Multifile documents and programs
+
+Viper provides some support for multi-file documents and programs.
+If a document consists of several files we can designate one of them as a
+master and put the following at the end of that file:
address@hidden
+;;; Local Variables:
+;;; eval: (viper-setup-master-buffer "file1" "file2" "file3" "file4")
+;;; End:
address@hidden lisp
address@hidden
+where @code{file1} to @code{file4} are names of files related to the master
+file.  Next time, when the master file is visited, the command
address@hidden will be evaluated and the above files will
+be associated with the master file.  Then, the new Ex command
address@hidden:RelatedFile} (abbr.@: @kbd{:R}) will display files 1 to 4 one 
after
+another, so you can edit them.  If a file is not in any Emacs buffer, it
+will be visited.  The command @kbd{PreviousRelatedFile} (abbr., @kbd{:P})
+goes through the file list in the opposite direction.
address@hidden @kbd{:RelatedFile}
address@hidden @kbd{:PreviousRelatedFile}
+
+These commands are akin to @kbd{:n} and @kbd{:N}, but they allow the user to
+focus on relevant files only.
+
+Note that only the master file needs to have the aforementioned block of
+commands.  Also, ";;;" above can be replaced by some other
+markers.  Semicolon is good for Lisp programs, since it is considered a
+comment designator there.  For LaTeX, this could be "%%%", and for C the
+above block should be commented out.
+
+Even though these commands are sometimes useful, they are no substitute for
+the powerful @emph{tag table} facility of Emacs.  Viper's @kbd{:tag} command
+in a primitive interface to Emacs tags.  @xref{Tags,Tags,Tags,emacs,
+The Gnu Emacs Manual}, for more information on tags.
+
+The following two commands are normally bound to a mouse click and are part
+of Viper.  They work only if Emacs runs as an application under X
+Windows (or under some other window system for which a port of GNU Emacs 20
+is available).  Clicking the mouse when Emacs is invoked in an Xterm window
+(using @code{emacs -nw}) will do no good.
+
address@hidden @code
address@hidden mouse
address@hidden mouse-search
address@hidden viper-mouse-search-key  (meta shift 1)
address@hidden @code{viper-mouse-insert-key}
+This variable controls the @emph{mouse-search} feature of Viper.  The
+default value
+states that holding Meta and Shift keys while clicking mouse button 1
+should initiate search for a region under the mouse pointer (defined
+below).  This command can take a prefix argument, which indicates the
+occurrence of the pattern to search for.
+
+Note: while loading initially, Viper binds this mouse action only if it is
+not already bound to something else.  If you want to use the mouse-search
+feature, and the @kbd{Meta-Shift-Mouse-1} mouse action is already bound to
+something else, you can rebind the mouse-search feature by setting
address@hidden to something else in your @code{~/.viper}
+file:
address@hidden
+(setq viper-mouse-search-key '(meta 1))
address@hidden lisp
+This would bind mouse search to the action invoked by pressing the
+Meta key and clicking mouse button 1.  The allowed values of
address@hidden are lists that contain a mouse-button number
+(1,2, or 3) and any combination of the words `control', `meta', and
+`shift'.
+
+If the requested mouse action (e.g., (meta 1)) is already taken for other
+purposes then you have to confirm your intention by placing the following
+command in @code{~/.viper} after setting @code{viper-mouse-search-key}:
address@hidden
+(viper-bind-mouse-search-key 'force)
address@hidden lisp
+
+You can also change this setting interactively, through the customization
+widget of Emacs (type @kbd{:customize}).
+
+The region that is chosen as a pattern to search for is determined as
+follows.  If search is invoked via a single click, Viper chooses the region
+that lies between the beginning of the ``word'' under the pointer (``word''
+is understood in Vi sense) and the end of that word.  The only difference
+with Vi's words is that in Lisp major modes `-' is considered an
+alphanumeric symbol.  This is done for the convenience of working with Lisp
+symbols, which often have an `-' in them.  Also, if you click on a
+non-alphanumeric character that is not a word separator (in Vi sense) then
+this character will also be considered alphanumeric, provided that it is
+adjacent (from either side) to an alphanumeric character.  This useful
+feature gives added control over the patterns selected by the mouse click.
+
+On a double-click, the region is determined by the beginning of the current
+Vi's ``Word'' (i.e., the largest non-separator chunk of text) and the End
+of that ``Word'' (as determined by the @kbd{E} command).
+
+On a triple-click, the region consists of the entire line where the click
+occurred with all leading and trailing spaces and tabs removed.
+
address@hidden mouse-insert
address@hidden viper-mouse-insert-key (meta shift 2)
address@hidden @code{viper-mouse-insert-key}
+This variable controls the @emph{mouse-insert} feature of Viper.
+The above default value states that
+holding Meta and Shift keys while clicking mouse button 2
+should insert the region surrounding the
+mouse pointer.  The rules defining this region are the same as for
+mouse-search.  This command takes an optional prefix argument, which
+indicates how many such regions to snarf from the buffer and insert.  (In
+case of a triple-click, the prefix argument is ignored.)
+
+Note: while loading initially, Viper binds this mouse action only if it not
+already bound to something else.  If you want to use this feature and the
+default mouse action is already bound, you can rebind mouse-insert by
+placing this command in @code{~/.viper}:
address@hidden
+(setq viper-mouse-insert-key '(meta 2))
address@hidden lisp
+If you want to bind mouse-insert to an action even if this action is
+already taked for other purposes in Emacs, then you should add this command
+to @code{~/.viper}, after setting @code{viper-mouse-insert-key}:
address@hidden
+(viper-bind-mouse-insert-key 'force)
address@hidden lisp
+
+This value can also be changed via the Emacs customization widget at the
+menubar.
+
address@hidden viper-multiclick-timeout
+This variable controls the rate at which double-clicking must occur for the
+purpose of mouse search and mouse insert.  By default, this is set to
address@hidden in Emacs and to
address@hidden milliseconds in XEmacs.
address@hidden table        
address@hidden @kbd{S-Mouse-1}
address@hidden @kbd{S-Mouse-2}
address@hidden @kbd{meta shift button1up}
address@hidden @kbd{meta shift button2up}
address@hidden @code{viper-multiclick-timeout}
address@hidden @code{viper-mouse-click-insert-word}
address@hidden @code{viper-mouse-click-search-word}
+
+Note: The above functions search and insert in the selected window of
+the latest active frame.  This means that you can click in another window or
+another frame and have search or insertion done in the frame and window you
+just left.  This lets one use these functions in a multi-frame
+configuration.  However, this may require some getting used to.  For
+instance, if you are typing in a frame, A, and then move the mouse to frame
+B and click to invoke mouse search, search (or insertion) will be performed
+in frame A.  To perform search/insertion in frame B, you will first have to
+shift focus there, which doesn't happen until you type a character or
+perform some other action in frame B---mouse search doesn't shift focus.
+
+If you decide that you don't like the above feature and always want
+search/insertion be performed in the frame where the click occurs, don't
+bind (and unbind, if necessary) @code{viper-mouse-catch-frame-switch} from
+the mouse event it is bound to.
+
+Mouse search is integrated with Vi-style search, so you can
+repeat it with @kbd{n} and @kbd{N}.  It should be also noted that, while
+case-sensitivity of search in Viper is controlled by the variable
address@hidden, the case of mouse search is
+controlled by the Emacs variable @code{case-fold-search}, which may be set
+differently from @code{viper-case-fold-search}.  Therefore, case-sensitivity
+of mouse search may be different from that of the usual Vi-style search.
+
+Finally, if the way Viper determines the word to be searched for or to be
+inserted is not what you want, there is a variable,
address@hidden, which can be changed to indicate
+another function for snarfing words out of the buffer.  The catch is that
+you will then have to write such a function and make it known to your
+Emacs.  The function @code{viper-surrounding-word} in @file{viper.el} can be
+used as a guiding example.
+
address@hidden Vi Macros, ,Viper Specials,Customization
address@hidden Vi Macros
+
address@hidden Vi macros
+
+Viper supports much enhanced Vi-style macros and also facilitates the use
+of Emacs-style macros.  To define a temporary macro, it is generally more
+convenient to use Emacs keyboard macro facility.  Emacs keyboard macros are
+usually defined anonymously, and the latest macro can be executed by typing
address@hidden e} (or @kbd{*}, if Viper is in Vi state).  If you need to use 
several
+temporary macros, Viper lets you save them to a
+register (a lowercase letter); such macros can then be executed by typing
address@hidden@@a} in Vi state (if a macro was previously saved in register
address@hidden).
address@hidden and Registers}, for details.
+
+If, however, you need to use a macro regularly, it must be given a
+permanent name and saved.  Emacs manual explains how to do this, but
+invocation of named Emacs macros is quite different from Vi's.  First,
+invocation of permanent Emacs macros takes time because it requires typing
+too many keys (to  a Vi user's taste, anyway).
+Second, binding such macros to function keys, for
+fast access, hogs valuable real estate on the keyboard.
+
+Vi-style macros are better in that respect, since Vi lets the user overload
+the meaning of key sequences: keys typed in fast succession are treated
+specially, if this key sequence is bound to a macro.
+
+Viper provides Vi-style keyboard macros through the usual Ex commands,
address@hidden:map} and 
address@hidden:map!}.  These macros are much more powerful in Viper than
+they are in the original Vi and in other emulators.  This is because Viper
+implements an enhanced vi-style
+interface to the powerful Emacs keyboard macro facility.
+
+First, any Emacs
+command can be executed while defining a macro, not just the Vi
+commands.  In particular, the user can invoke Emacs commands via @kbd{M-x
+command-name} or by pressing various function keys on the keyboard.  One
+can even use the mouse, although this is usually not useful and is not
+recommended (and macros defined with the use of the mouse cannot be saved in
+command history and in the startup file, for future use).
+
+Macros defined by mixing Vi and Emacs commands are represented as
+vectors.  So, don't be confused when you see one (usually through the
+history of Ex commands).  For instance, if @kbd{gg} is defined by typing
address@hidden, the up-arrow key and @kbd{M-x next-line}, its definition will 
look
+as follows in Emacs (in XEmacs, it looks slightly different, see below):
+
address@hidden
+[l up (meta x) n e x t - l i n e return]
address@hidden example
+
+Second, Viper macros are defined in a WYSIWYG style.  This means that
+commands are executed as you type them, so you can see precisely what is
+being defined.  Third, macros can be bound to arbitrary sequences of keys,
+not just to printable keys.  For instance, one can define a macro that will
+be invoked by hitting @kbd{f3} then @kbd{f2} function keys.  (The keys
address@hidden and @kbd{backspace} are excluded; also, a macro invocation
+sequence can't start with @key{ESC}.  Some other keys, such as @kbd{f1} and
address@hidden, can't be bound to macros under Emacs, since they
+are bound in @code{key-translation-map}, which overrides any other binding
+the user gives to keys.  In general, keys that have a binding in
address@hidden can't be bound to a macro.)
+
+Fourth, in Viper, one can define macros that are specific to a given
+buffer, a given major mode, or macros that are defined for all buffers.  In
+fact, the same macro name can have several different definitions: one
+global, several definitions for various major modes, and
+definitions for various specific buffers.  Buffer-specific definitions
+override mode-specific definitions, which, in turn, override global
+definitions.
+
+As if all that is not enough, Viper (through its interface to Emacs
+macros) lets the user define keyboard macros that ask for confirmation or
+even prompt the user for input and then continue.  To do this, one should
+type @kbd{C-x q} (for confirmation) or @kbd{C-u C-x q} (for prompt).
+For details, @pxref{Kbd Macro Query,,Customization,emacs,The GNU Emacs
+Manual} @refill
+
+When the user finishes defining a macro (which is done by typing @kbd{C-x)} ---
+a departure from Vi), you will be asked whether you want this
+macro to be global, mode-specific, or buffer-specific.  You will also be
+given a chance to save the macro in your @file{~/.viper} file.
+This is the easiest way to save a macro and make
+it permanently available.  If you work your startup files with bare hands,
+here is how Viper saves the above macro so that it will be
+available in Viper's Insert state (and Replace state) in buffer @code{my-buf}
+only:
+
address@hidden
+(viper-record-kbd-macro "gg" 'insert-state
+       [l up (meta x) n e x t - l i n e return]
+       "my-buf")
address@hidden example
+
address@hidden
+To do the same for Vi state and all buffers with the major mode
address@hidden, use:
+
address@hidden
+(viper-record-kbd-macro "gg" 'vi-state
+       [l up (meta x) n e x t - l i n e return]
+       'cc-mode)
address@hidden example
+
address@hidden
+Both macro names and macro definitions are vectors of symbols that denote
+keys on the keyboard.  Some keys, like @kbd{\}, @kbd{ }, or digit-keys must
+be escaped with a backslash.  Modified keys are represented as lists.  For
+instance, holding Meta and Control and pressing @kbd{f4} is represented as
address@hidden(control meta f4)}.
+If all members of a vectors are printable characters (or sequences, such as
address@hidden, @kbd{\t}, for @key{ESC} and @key{TAB}), then they can also be 
represented as
+strings:
+
address@hidden
+(viper-record-kbd-macro "aa" 'vi-state  "aaa\e"  "my-buffer")
address@hidden example
+
address@hidden
+Thus, typing @kbd{aa} fast in Vi state will switch Viper to Insert state
+(due to the first @kbd{a}), insert @kbd{aa}, and then it will switch back to Vi
+state.  All this will take effect only in the buffer named @code{my-buffer}.
+
+Note that the last argument to @code{viper-record-kbd-macro} must be either a
+string (a buffer name), a symbol representing a major mode, or @code{t};
+the latter says that the macro is to be defined for all buffers
+(which is how macros are defined in original Vi).
+
+For convenience, Viper also lets you define Vi-style macros in its Emacs
+state.  There is no Ex command, like @kbd{:map} and @kbd{:map!} for doing
+this, but the user can include such a macro in the @file{~/.viper} file.  The
+only thing is that the @code{viper-record-kbd-macro} command should specify
address@hidden instead of @code{vi-state} or @code{insert-state}.
+
+The user can get rid of a macro either by using the Ex commands @kbd{:unmap}
+and @kbd{:unmap!} or by issuing a call to @code{viper-unrecord-kbd-macro}.
+The latter is more powerful, since it can delete macros even in
address@hidden  However, @code{viper-unrecord-kbd-macro} is usually
+needed only when the user needs to get rid of the macros that are already
+predefined in Viper.
+The syntax is:
address@hidden @code{viper-unrecord-kbd-macro}
address@hidden
+(viper-unrecord-kbd-macro macro state)
address@hidden example
address@hidden
+The second argument must be @code{vi-state}, @code{insert-state}, or
address@hidden  The first argument is a name of a macro.  To avoid
+mistakes in specifying names of existing macros, type @kbd{M-x
+viper-describe-kbd-macros} and use a name from the list displayed by this
+command.
+
+If an error occurs during macro definition, Emacs
+aborts the process, and it must be repeated.  This is analogous to Vi,
+except that in Vi the user doesn't know there is an error until the macro is
+actually run.  All that means that in order for a definition to be
+successful, the user must do some simple planning of the process in
+advance, to avoid errors.  For instance, if you want to map @kbd{gg} to
address@hidden in Vi state, you must make sure that there is enough room on the
+current line.  Since @kbd{l} moves the cursor forward, it may signal an
+error on reaching the end of line, which will abort the definition.
+
+These precautions are necessary only when defining macros; they will help
+avoid the need to redo the job.  When macros are actually run, an error
+during the execution will simply terminate the current execution
+(but the macro will remain mapped).
+
+A macro name can be a string of characters or a vector of keys.
+The latter makes it possible to define macros bound to, say, double-hits
+on a function key, such as @kbd{up} or @kbd{f13}.
+This is very useful if you run out of function keys on your keyboard; it
+makes Viper macro facility a @emph{keyboard doubler}, so to speak.
+
+Elsewhere (@xref{Key Bindings}, for details), we review
+the standard Emacs mechanism for binding function keys to commands.
+For instance,
+
address@hidden
+(global-set-key [f13] 'repeat-complex-command)
address@hidden example
+
address@hidden
+binds the key f13 to the Emacs function that repeats the last minibuffer
+command.  Under Viper, however, you may still use this key for additional
+purposes, if you bind, say, a double-hitting action for that key to some
+other function.  Emacs doesn't allow the user to do that, but Viper does
+this through its keyboard macro facility.  To do this, type @kbd{:map }
+first.  When you are asked to enter a macro name, hit f13 twice, followed by
address@hidden or @key{SPC}.
+
+Emacs will now start the mapping process by actually executing
+Vi and Emacs commands, so that you could see what will happen each time the
+macro is executed.  Suppose now we wanted to bind the key sequence
address@hidden f13} to the command @code{eval-last-sexp}.  To accomplish this, 
we
+can type @kbd{M-x eval-last-sexp} followed by @kbd{C-x )}.
+If you answer positively to Viper's offer to save this macro in @file{~/.viper}
+for future uses, the following will be inserted in that file:
+
address@hidden
+(viper-record-kbd-macro [f16 f16] 'vi-state
+         [(meta x) e v a l - l a s t - s e x p]
+         'lisp-interaction-mode)
address@hidden example
+
+To illustrate the above point, Viper provides two canned macros, which, by
+default, are bound to @kbd{[f12 \1]} and @kbd{[f12 \2]} (invoked by typing
address@hidden then @kbd{1} and @kbd{2}, respectively).  These macros are useful
+shortcuts to Viper's command ring history.  The first macro will execute the
+second-last destructive command (the last one is executed by @kbd{.}, as
+usual).  The second macro executes the third-last command.
+
+If you need to go deeper into the command history, you will have to use
+other commands, as described earlier in this section; or you can bind,
+say, @kbd{f12 \3} like this:
+
address@hidden
+(viper-record-kbd-macro [f12 \3] 'vi-state
+                      [(meta x) r e p e a t - f r o m - h i s t o r y]
+                      t)
address@hidden example
+
+
+Note that even though the macro uses the function key @kbd{f12}, the key is
+actually free and can still be bound to some Emacs function via
address@hidden or @code{global-set-key}.
+
+
+Viper allows the user to define macro names that are prefixes of other macros.
+For instance, one can define @kbd{[[} and @kbd{[[[[} to be macros.
+If you type the exact sequence of such keys and then pause, Viper will
+execute the right macro.  However, if you don't pause and, say, type
address@hidden then the conflict is resolved as follows.  If only one of the
+key sequences, @kbd{[[} or @kbd{[[[[} has a definition applicable to the
+current buffer, then, in fact, there is no conflict and the right macro
+will be chosen.  If both have applicable definitions, then the first one
+found will be executed.  Usually this is the macro with a shorter name.  So,
+in our case, @kbd{[[[[text} will cause the macro @kbd{[[} to be executed
+twice and then the remaining keys, @kbd{t e x t}, will be processed.
+
+When defining macros using @kbd{:map} or @kbd{:map!}, the user enters
+the actually keys to be used to invoke the macro.  For instance, you
+should hit the actual key @kbd{f6} if it is to be part of a macro
+name; you do @emph{not} write @kbd{f 6}.  When entering keys, Viper
+displays them as strings or vectors (e.g., @code{"abc"} or @code{[f6
+f7 a]}).  The same holds for unmapping.  Hitting @key{TAB} while
+typing a macro name in the @kbd{:unmap} or @kbd{:unmap!} command will
+cause name completion.  Completions are displayed as strings or
+vectors.  However, as before, you don't actually type @samp{"},
address@hidden, or @samp{]} that appear in the completions.  These are
+meta-symbols that indicate whether the corresponding macro name is a
+vector or a string.
+
+One last difference from Vi: Vi-style keyboard macros cannot be defined in
+terms of other Vi-style keyboard macros (but named Emacs macros are OK).
+More precisely, while defining or executing a macro, the special meaning
+of key sequences (as Vi macros) is ignored.
+This is because it is all too easy to create an infinite loop in this way.
+Since Viper macros are much more powerful than Vi's it is impossible to
+detect such loops.  In practice, this is not really a limitation but,
+rather, a feature.
+
+We should also note that Vi macros are disabled in the Minibuffer, which
+helps keep some potential troubles away.
+
+The rate at which the user must type keys in order for them to be
+recognized as a timeout macro is controlled by the variable
address@hidden, which defaults to 200 milliseconds.
+
+For the most part, Viper macros defined in @file{~/.viper} can be shared
+between Emacs, XEmacs, and X and TTY modes.  However, macros defined via
+function keys may need separate definitions when XEmacs and Emacs have
+different names for the same keyboard key.  For instance, the `Page Up' key
+may be known in Emacs as @kbd{prior} and in XEmacs as @kbd{pgup}.
+The problem with TTY may be that the function keys there generate sequences
+of events instead of a single event (as under a window system).
+Emacs maps some of these sequences back to the logical keys
+(e.g., the sequences generated by the arrow keys are mapped to @kbd{up},
address@hidden, etc.).  However, not all function keys are mapped in this way.
+Macros that are bound to key sequences that contain such unmapped function
+keys have to be redefined for TTY's (and possibly for every type of TTY you
+may be using).  To do this, start Emacs on an appropriate TTY device and
+define the macro using @kbd{:map}, as usual.
+
address@hidden @code{viper-describe-kbd-macros}
+Finally, Viper provides a function that conveniently displays all macros
+currently defined.  To see all macros along with their definitions, type
address@hidden viper-describe-kbd-macros}.
+
address@hidden Commands,,Customization,Top
address@hidden Commands
+
+This section is a semi-automatically bowdlerized version of the Vi
+reference created by @* @samp{maart@@cs.vu.nl} and others.  It can be
+found on the Vi archives.  This reference has been adapted for address@hidden
+
address@hidden
+* Groundwork::                 Textual Conventions and Viper basics
+* Text Handling::              Moving, Editing, Undoing.
+* Display::                    Scrolling.
+* File and Buffer Handling::   Editing, Writing and Quitting.
+* Mapping::                    Mapping Keys, Keyboard Macros
+* Shell Commands::             Accessing Shell Commands, Processing Text
+* Options::                    Ex options, the @kbd{:set} commands
+* Emacs Related Commands::     Meta Keys, Windows
+* Mouse-bound Commands::        Search and insertion of text
address@hidden menu
+
address@hidden Groundwork, Text Handling, Commands, Commands
address@hidden  node-name,  next,  previous,  up
address@hidden Groundwork
+
+The VI command set is based on the idea of combining motion commands
+with other commands.  The motion command is used as a text region
+specifier for other commands.
+We classify motion commands into @dfn{point commands} and
address@hidden address@hidden
+
address@hidden point commands
+
+The point commands are:
+
address@hidden
address@hidden, @kbd{l}, @kbd{0},  @kbd{$}, @kbd{w}, @kbd{W}, @kbd{b}, @kbd{B},
address@hidden, @kbd{E}, @kbd{(}, @kbd{)}, @kbd{/}, @kbd{?}, @kbd{`}, @kbd{f},
address@hidden, @kbd{t}, @kbd{T}, @kbd{%}, @kbd{;}, @kbd{,}, @kbd{^}
address@hidden quotation
+
address@hidden line commands
+
+The line commands are:
+
address@hidden
address@hidden, @kbd{k}, @kbd{+}, @kbd{-}, @kbd{H}, @kbd{M}, @kbd{L}, 
@address@hidden,
address@hidden@}}, @kbd{G}, @kbd{'},  @kbd{[[}, @kbd{]]}, @kbd{[]}
address@hidden quotation
address@hidden
+
+Text Deletion Commands (@pxref{Deleting Text}), Change commands
+(@pxref{Changing Text}), even Shell Commands (@pxref{Shell Commands})
+use these commands to describe a region of text to operate on.
+
address@hidden r and R region specifiers
+
+Viper adds two region descriptors, @kbd{r} and @kbd{R}.  These describe
+the Emacs regions (@pxref{Basics}), but they are not movement commands.
+
+The command description uses angle brackets @samp{<>} to indicate
+metasyntactic variables, since the normal conventions of using simple
+text can be confusing with Viper where the commands themselves are
+characters.  Watch out where @kbd{<} shift commands and @kbd{<count>} are
+mentioned together!!!
+
address@hidden <move>
address@hidden <a-z>
address@hidden <address>
address@hidden <move>
address@hidden <a-z>
address@hidden <address>
address@hidden movements
+
address@hidden<move>} refers to the above movement commands, and @samp{<a-z>}
+refers to registers or textmarkers from @samp{a} to @samp{z}.  Note
+that the @samp{<move>}  is described by full move commands, that is to
+say they will take counts, and otherwise behave like normal move commands.
address@hidden Ex addresses
address@hidden<address>} refers to Ex line addresses, which include
+
address@hidden @kbd
address@hidden .@: <No address>
+Current line
address@hidden .+n .-n
+Add or subtract for current line
address@hidden number
+Actual line number, use @kbd{.=} to get the line number
address@hidden '<a-z>
+Textmarker
address@hidden $
+Last line
address@hidden x,y
+Where x and y are one of the above
address@hidden %
address@hidden % (Ex address)
+For the whole file, same as (1,$).
address@hidden /<pat>/
address@hidden ?<pat>?
+Next or previous line with pattern <pat>.
+
+Note that the pattern is allowed to contain newline character (inserted as
address@hidden).  Therefore, one can search for patterns that span several
+lines.
address@hidden table
+
address@hidden % (Current file)
+Note that @samp{%} is used in Ex commands @kbd{:e} and @kbd{:r <shell-cmd>}
+to mean current file.  If you want a @samp{%} in your command, it must be
+escaped as @samp{\%}. Note that @kbd{:w} and the regular @kbd{:r <file>}
+command doesn't support the meta symbols @samp{%} and @samp{#}, because
+file history is a better mechanism.
address@hidden # (Previous file)
+Similarly, @samp{#} expands to the previous file.  The previous file is
+the first file in @kbd{:args} listing.  This defaults to previous window
+in the VI sense if you have one window only.
+
address@hidden <args>
address@hidden <cmd>
address@hidden <args>
address@hidden <cmd>
address@hidden
+Others like @samp{<args> -- arguments}, @samp{<cmd> -- command} etc.
+should be fairly obvious.
+
address@hidden
+Common characters referred to include:
+
address@hidden @kbd
address@hidden <sp>
+Space
address@hidden <ht>
+Tab
address@hidden <lf>
+Linefeed
address@hidden <esc>
+Escape
address@hidden <cr>
+Return, Enter
address@hidden table
address@hidden <cr>
address@hidden <esc>
address@hidden <lf>
address@hidden <ht>
address@hidden <sp>
+
address@hidden words
address@hidden WORDS
address@hidden char
address@hidden CHAR
+
+We also use @samp{word} for alphanumeric/non-alphanumeric words, and
address@hidden for whitespace delimited words.  @samp{char} refers to any
+ASCII character, @samp{CHAR} to non-whitespace character.
+Brackets @samp{[]} indicate optional parameters; @samp{<count>} also
+optional, usually defaulting to 1.  Brackets are elided for
address@hidden<count>} to eschew obfuscation.
+
+Viper's idea of Vi's words is slightly different from Vi.  First, Viper
+words understand Emacs symbol tables.  Therefore, all symbols declared to be
+alphanumeric in a symbol table can automatically be made part of the Viper
+word.  This is useful when, for instance, editing text containing European,
+Cyrillic, Japanese, etc., texts.
+
+Second, Viper lets you depart from Vi's idea of a word by changing the a
+syntax preference via the customization widget (the variable
address@hidden) or by executing
address@hidden interactively.
+
+By default, Viper syntax preference is @code{reformed-vi}, which means that
+Viper considers only those symbols to be part of a word that are specified
+as word-symbols by the current Emacs syntax table (which may be different
+for different major modes) plus the underscore symbol @kbd{_}, minus the
+symbols that are not considered words in Vi (e.g., `,',;, etc.), but may be
+considered as word-symbols by various Emacs major modes.  Reformed-Vi works
+very close to Vi, and it also recognizes words in other
+alphabets.  Therefore, this is the most appropriate mode for editing text
+and is likely to fit all your needs.
+
+You can also set Viper syntax preference to @code{strict-vi}, which would
+cause Viper to view all non-English letters as non-word-symbols.
+
+You can also specify @code{emacs} as your preference, which would
+make Viper use exactly the same notion of a word as Emacs does.  In
+particular, the underscore may not be part of a word in some major modes.
+
+Finally, if @code{viper-syntax-preference} is set to @code{extended}, Viper
+words would consist of characters that are classified as alphanumeric
address@hidden as parts of symbols.  This is convenient for editing programs.
+
address@hidden is a local variable, so it can have different
+values for different major modes.  For instance, in programming modes it can
+have the value @code{extended}.  In text modes where words contain special
+characters, such as European (non-English) letters, Cyrillic letters, etc.,
+the value can be @code{reformed-vi} or @code{emacs}.
+If you consider using different syntactic preferences for different major
+modes, you should execute, for example,
+
address@hidden
+(viper-set-syntax-preference nil "extended")
address@hidden example
+
+in the appropriate major mode hooks.
+
address@hidden @code{viper-syntax-preference}
address@hidden @code{viper-set-syntax-preference}
address@hidden syntax table
+
+
+
+The above discussion concerns only the movement commands.  In regular
+expressions, words remain the same as in Emacs.  That is, the expressions
address@hidden, @code{\>}, @code{\<}, etc., use Emacs' idea of what is a word,
+and they don't look into the value of variable
address@hidden  This is because Viper avoids changing
+syntax tables in order to not thwart the various major modes that set these
+tables.
+
+The usual Emacs convention is used to indicate Control Characters, i.e
+C-h for Control-h.  @emph{Do not confuse this with a sequence of separate
+characters
+C, -, h!!!} The @kbd{^} is itself, never used to indicate a
+Control character.
+
+Finally, we note that Viper's Ex-style commands can be made to work on the
+current Emacs region.  This is done by typing a digit argument before
address@hidden:}.  For instance, typing @kbd{1:} will propmt you with something 
like
address@hidden:123,135}, assuming that the current region starts at line 123 and
+ends at line 135.  There is no need to type the line numbers, since Viper
+inserts them automatically in front of the Ex command.
address@hidden Ex commands
+
address@hidden Text Handling, Display, Groundwork, Commands
address@hidden Text Handling
+
address@hidden
+* Move Commands::              Moving, Searching
+* Marking::                    Textmarkers in Viper and the Emacs Mark.
+* Appending Text::             Text insertion, Shifting, Putting
+* Editing in Insert State::    Autoindent, Quoting etc.
+* Deleting Text::              Deleting
+* Changing Text::              Changing, Replacement, Joining
+* Search and Replace::         Searches, Query Replace, Pattern Commands
+* Yanking::                    Yanking, Viewing Registers
+* Undoing::                    Multiple Undo, Backups
address@hidden menu
+
address@hidden Move Commands,Marking,,Text Handling
address@hidden Move Commands
+
address@hidden movement commands
address@hidden searching
address@hidden textmarkers
address@hidden markers
address@hidden column movement
address@hidden paragraphs
address@hidden headings
address@hidden sections
address@hidden sentences
address@hidden matching parens
address@hidden paren matching
+
address@hidden @kbd
address@hidden <count>  h  C-h
+<count> chars to the left.
address@hidden <count>  j  <lf> C-n
+<count> lines downward.
address@hidden <count>  l  <sp>
+<count> chars to the right.
address@hidden <count>  k  C-p
+<count> lines upward.
address@hidden <count>  $
+To the end of line <count> from the cursor.
address@hidden <count>  ^
+To the first CHAR <count> - 1 lines lower.
address@hidden <count>  -
+To the first CHAR <count> lines higher.
address@hidden <count>  +  <cr>
+To the first CHAR <count> lines lower.
address@hidden  0
+To the first char of the line.
address@hidden <count> |
+To column <count>
address@hidden <count>  f<char>
+<count> <char>s to the right (find).
address@hidden <count>  t<char>
+Till before <count> <char>s to the right.
address@hidden <count>  F<char>
+<count> <char>s to the left.
address@hidden <count>  T<char>
+Till after <count> <char>s to the left.
address@hidden <count>  ;
+Repeat latest @kbd{f t F T} <count> times.
address@hidden <count>  ,
+Repeat latest @kbd{f t F T}
+<count> times in opposite direction.
address@hidden <count>  w
+<count> words forward.
address@hidden <count>  W
+<count> WORDS forward.
address@hidden <count>  b
+<count> words backward.
address@hidden <count>  B
+<count> WORDS backward.
address@hidden <count>  e
+To the end of word <count> forward.
address@hidden <count>  E
+To the end of WORD <count> forward.
address@hidden <count>  G
+Go to line <count> (default end-of-file).
address@hidden <count>  H
+To line <count> from top of the screen (home).
address@hidden <count>  L
+To line <count> from bottom of the screen (last).
address@hidden  M
+To the middle line of the screen.
address@hidden <count>  )
+<count> sentences forward.
address@hidden <count>  (
+<count> sentences backward.
address@hidden <count>  @}
+<count> paragraphs forward.
address@hidden <count>  @{
+<count> paragraphs backward.
address@hidden <count>  ]]
+To the <count>th heading.
address@hidden <count>  [[
+To the <count>th previous heading.
address@hidden <count>  []
+To the end of <count>th heading.
address@hidden  m<a-z>
+Mark the cursor position with a letter.
address@hidden  `<a-z>
+To the mark.
address@hidden  '<a-z>
+To the first CHAR of the line with the mark.
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden  ``
+To the cursor position before the latest absolute
+jump (of which are examples @kbd{/} and @kbd{G}).
address@hidden  ''
+To the first CHAR of the line on which the cursor
+was placed before the latest absolute jump.
address@hidden <count>  /<string>
+To the <count>th occurrence of <string>.
address@hidden <count>  /<cr>
+To the <count>th occurrence of <string> from previous @kbd{/ or ?}.
address@hidden <count>  ?<string>
+To the <count>th previous occurrence of <string>.
address@hidden <count>  ?<cr>
+To the <count>th previous occurrence of <string> from previous @kbd{?@: or /}.
address@hidden  n
+Repeat latest @kbd{/} @kbd{?} (next).
address@hidden  N
+Repeat latest search in opposite direction.
address@hidden C-c /
+Without a prefix argument, this command toggles
+case-sensitive/case-insensitive search modes and plain vanilla/regular
+expression search.  With the prefix argument 1, i.e.,
address@hidden C-c /}, this toggles case-sensitivity; with the prefix argument 
2,
+toggles plain vanilla search and search using
+regular expressions.  @xref{Viper Specials}, for alternative ways to invoke
+this function.
address@hidden vanilla search
address@hidden case-sensitive search
address@hidden case-insensitive search
address@hidden  %
+Find the next bracket/parenthesis/brace and go to its match.
+By default, Viper ignores brackets/parentheses/braces that occur inside
+parentheses.  You can change this by setting
address@hidden to nil in your @file{.viper} file.
+This option can also be toggled interactively if you quickly hit @kbd{%%%}.
+
+This latter feature is implemented as a vi-style keyboard macro.  If you
+don't want this macro, put
+
address@hidden
+(viper-set-parsing-style-toggling-macro 'undefine)
address@hidden example
address@hidden @code{viper-set-parsing-style-toggling-macro}
+
+in your @file{~/.viper} file.
+
address@hidden table
address@hidden @kbd{%}
address@hidden @kbd{C-c /}
address@hidden @kbd{N}
address@hidden @kbd{n}
address@hidden @kbd{?<cr>}
address@hidden @kbd{/<cr>}
address@hidden @kbd{?<string>}
address@hidden @kbd{/<string>}
address@hidden @kbd{''}
address@hidden @kbd{``}
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{'<a-z>}
address@hidden @kbd{`<a-z>}
address@hidden @kbd{m<a-z>}
address@hidden @kbd{[]}
address@hidden @kbd{[[}
address@hidden @kbd{]]}
address@hidden @address@hidden
address@hidden @address@hidden
address@hidden @kbd{(}
address@hidden @kbd{)}
address@hidden @kbd{M}
address@hidden @kbd{L}
address@hidden @kbd{H}
address@hidden @kbd{G}
address@hidden @kbd{E}
address@hidden @kbd{e}
address@hidden @kbd{B}
address@hidden @kbd{b}
address@hidden @kbd{W}
address@hidden @kbd{w}
address@hidden @kbd{,}
address@hidden @kbd{;}
address@hidden @kbd{T<char>}
address@hidden @kbd{F<char>}
address@hidden @kbd{t<char>}
address@hidden @kbd{f<char>}
address@hidden @kbd{|}
address@hidden @kbd{0}
address@hidden @kbd{<cr>}
address@hidden @kbd{+}
address@hidden @kbd{-}
address@hidden @kbd{^}
address@hidden @kbd{$}
address@hidden @kbd{C-p}
address@hidden @kbd{<lf>}
address@hidden @kbd{<sp>}
address@hidden @kbd{C-n}
address@hidden @kbd{C-h}
address@hidden @kbd{h}
address@hidden @kbd{j}
address@hidden @kbd{k}
address@hidden @kbd{l}
address@hidden @code{viper-parse-sexp-ignore-comments}
+
address@hidden Marking,Appending Text,Move Commands,Text Handling
address@hidden Marking
+
+Emacs mark is referred to in the region specifiers @kbd{r} and @kbd{R}.
address@hidden Preliminaries}, and @xref{Basics}, for explanation.  Also
+see @ref{Mark,,Mark,emacs,The GNU Emacs manual}, for an explanation of
+the Emacs mark ring.
+
address@hidden marking
+
address@hidden @kbd
address@hidden m<a-z>
+Mark the current file and position with the specified letter.
address@hidden m .
+Set the Emacs mark (@pxref{Emacs Preliminaries}) at point.
address@hidden m ^
+Set the Emacs mark (@pxref{Emacs Preliminaries}) back to where it was last
+set with the @kbd{m.} command. This is useful when you set the mark with
address@hidden, but then some other command (such as @kbd{L} or @kbd{G}) changes
+it in a way that you didn't like.
address@hidden m <
+Set the Emacs mark at beginning of buffer.
address@hidden m >
+Set the Emacs mark at end of buffer.
address@hidden m ,
+Jump to the Emacs mark.
address@hidden :mark <char>
+Mark position with text marker named <char>.  This is an Ex command.
address@hidden :k <char>
+Same as @kbd{:mark}.
address@hidden ``
+Exchange point and mark.
address@hidden ''
+Exchange point and mark and go to the first CHAR on line.
address@hidden '<a-z>
+Go to specified Viper mark.
address@hidden
+Go to specified Viper mark and go to the first CHAR on line.
address@hidden table
address@hidden @kbd{m<a-z>}
address@hidden @kbd{m.}
address@hidden @kbd{m>}
address@hidden @kbd{m<}
address@hidden @kbd{m,}
address@hidden @kbd{m^}
address@hidden @kbd{:mark}
address@hidden @kbd{:k}
address@hidden @kbd{''}
address@hidden @kbd{``}
address@hidden @kbd{`<a-z>}
address@hidden @kbd{'<a-z>}
+
address@hidden  Appending Text, Editing in Insert State, Marking,Text Handling
address@hidden Appending Text
+
address@hidden, to see how to change tab and shiftwidth size.  See the GNU
+Emacs manual, or try @kbd{C-ha tabs} (If you have turned Emacs help on).
+Check out the variable @code{indent-tabs-mode} to put in just spaces.
+Also see options for word-wrap.
+
address@hidden inserting
address@hidden appending
address@hidden paste
address@hidden put
+
address@hidden @kbd
address@hidden <count>  a
+<count> times after the cursor.
address@hidden <count>  A
+<count> times at the end of line.
address@hidden <count>  i
+<count> times before the cursor (insert).
address@hidden <count>  I
+<count> times before the first CHAR of the line
address@hidden <count>  o
+On a new line below the current (open).
+The count is only useful on a slow terminal.
address@hidden <count>  O
+On a new line above the current.
+The count is only useful on a slow terminal.
address@hidden <count>  ><move>
+Shift the lines described by <count><move> one
+shiftwidth to the right (layout!).
address@hidden <count>  >>
+Shift <count> lines one shiftwidth to the right.
address@hidden <count>  ["<a-z1-9>]p
+Put the contents of the (default undo) buffer
+<count> times after the cursor.  The register will
+be automatically down-cased.
address@hidden <count>  ["<a-z1-9>]P
+Put the contents of the (default undo) buffer
+<count> times before the cursor.  The register will
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden <count>  .
+Repeat previous command <count> times.  For destructive
+commands as well as undo.
address@hidden f1 1 and f1 2
+While @kbd{.} repeats the last destructive command,
+these two macros repeat the second-last and the third-last destructive
+commands.  @xref{Vi Macros}, for more information on Vi macros.
address@hidden C-c M-p and C-c M-n
+In Vi state,
+these commands help peruse the history of Vi's destructive commands.
+Successive typing of @kbd{C-c M-p} causes Viper to search the history in
+the direction
+of older commands, while hitting @kbd{C-c M-n} does so in reverse
+order.  Each command in the history is displayed in the Minibuffer.  The
+displayed command can
+then be executed by typing address@hidden'.
+
+Since typing the above sequences of keys may be tedious, the
+functions doing the perusing can be bound to unused keyboard keys in the
address@hidden/.viper} file.  @xref{Viper Specials}, for details.
address@hidden table
address@hidden @kbd{C-c M-p}
address@hidden @kbd{C-c M-n}
address@hidden @kbd{.}
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{P}
address@hidden @kbd{p}
address@hidden @kbd{"<a-z1-9>p}
address@hidden @kbd{"<a-z1-9>P}
address@hidden @kbd{>>}
address@hidden @kbd{><move>}
address@hidden @kbd{O}
address@hidden @kbd{o}
address@hidden @kbd{i}
address@hidden @kbd{A}
address@hidden @kbd{a}
+
address@hidden Editing in Insert State, Deleting Text, Appending Text,Text 
Handling
address@hidden Editing in Insert State
+
+Minibuffer can be edited similarly to Insert state, and you can switch
+between Insert/Replace/Vi states at will.
+Some users prefer plain Emacs feel in the Minibuffer.  To this end, set
address@hidden to @code{nil}.
+
address@hidden Insert state
+
address@hidden @kbd
address@hidden C-v
+Deprive the next char of its special meaning (quoting).
address@hidden C-h
+One char back.
address@hidden C-w
+One word back.
address@hidden C-u
+Back to the begin of the change on the
+current line.
+
address@hidden table
address@hidden @kbd{C-u}
address@hidden @kbd{C-w}
address@hidden @kbd{C-v}
+
address@hidden Deleting Text, Changing Text, Editing in Insert State, Text 
Handling
address@hidden Deleting Text
+
+
+There is one difference in text deletion that you should be
+aware of.  This difference comes from Emacs and was adopted in Viper
+because we find it very useful.  In Vi, if you delete a line, say, and then
+another line, these two deletions are separated and are put back
+separately if you use the @samp{p} command.  In Emacs (and Viper), successive
+series of deletions that are @emph{not interrupted} by other commands are
+lumped together, so the deleted text gets accumulated and can be put back
+as one chunk.  If you want to break a sequence of deletions so that the
+newly deleted text could be put back separately from the previously deleted
+text, you should perform a non-deleting action, e.g., move the cursor one
+character in any direction.
+
address@hidden shifting text
+
address@hidden @kbd
address@hidden <count>  x
+Delete <count> chars under and after the cursor.
address@hidden <count>  X
+Delete <count> chars before the cursor.
address@hidden <count>  d<move>
+Delete from point to endpoint of <count><move>.
address@hidden <count>  dd
+Delete <count> lines.
address@hidden  D
+The rest of the line.
address@hidden <count>  <<move>
+Shift the lines described by <count><move> one
+shiftwidth to the left (layout!).
address@hidden <count>  <<
+Shift <count> lines one shiftwidth to the left.
address@hidden table
address@hidden @kbd{<<}
address@hidden @kbd{<<move>}
address@hidden @kbd{D}
address@hidden @kbd{dd}
address@hidden @kbd{d<move>}
address@hidden @kbd{X}
address@hidden @kbd{x}
+
address@hidden Changing Text, Search and Replace, Deleting Text,Text Handling
address@hidden Changing Text
+
address@hidden joining lines
address@hidden changing case
address@hidden quoting regions
address@hidden substitution
+
address@hidden @kbd
address@hidden <count>  r<char>
+Replace <count> chars by <char> - no <esc>.
address@hidden <count>  R
+Overwrite the rest of the line,
+appending change @var{count - 1} times.
address@hidden <count>  s
+Substitute <count> chars.
address@hidden <count>  S
+Change <count> lines.
address@hidden <count>  c<move>
+Change from begin to endpoint of <count><move>.
address@hidden <count>  cc
+Change <count> lines.
address@hidden <count>  C
+The rest of the line and <count> - 1 next lines.
address@hidden <count>  =<move>
+Reindent the region described by move.
address@hidden <count>  ~
+Switch lower and upper cases.
address@hidden <count>  J
+Join <count> lines (default 2).
address@hidden  :[x,y]s/<pat>/<repl>/<f>
+Substitute (on lines x through y) the pattern
+<pat> (default the last pattern) with <repl>.  Useful
+flags <f> are @samp{g} for @samp{global} (i.e.@: change every
+non-overlapping occurrence of <pat>) and @samp{c} for
address@hidden (type @samp{y} to confirm a particular
+substitution, else @samp{n} ).  Instead of @kbd{/} any
+punctuation CHAR unequal to <space> <tab> and <lf> can be used as
+delimiter.
+
+In Emacs, @samp{\&} stands for the last matched expression, so
address@hidden/[ab]+/\&\&/} will double the string matched by @kbd{[ab]}.
+Viper doesn't treat @samp{&} specially, unlike Vi: use @samp{\&} instead.
+
+Viper does not parse search patterns and does not expand special symbols
+found there (e.g., @samp{~} is not expanded to the result of the previous
+substitution).
+
+Note: @emph{The newline character (inserted as @kbd{C-qC-j})
+can be used in <repl>}.
address@hidden  :[x,y]copy [z]
+Copy text between @kbd{x} and @kbd{y} to the position after @kbd{z}.
address@hidden  :[x,y]t [z]
+Same as @kbd{:copy}.
address@hidden  :[x,y]move [z]
+Move text between @kbd{x} and @kbd{y} to the position after @kbd{z}.
address@hidden  &
+Repeat latest Ex substitute command, e.g.
address@hidden:s/wrong/right}.
address@hidden :x,yp
address@hidden :g/Pat/p
address@hidden :v/Pat/p
+The above commands display certain buffer lines in a
+temporary buffer. The first form above displays the buffer lines between
address@hidden and @kbd{y}. The second displays the lines of the buffer, which
+match a given pattern. The third form displays the lines that do @emph{not}
+match the given pattern.
address@hidden #c<move>
+Change upper-case characters in the region to lower-case.
address@hidden #C<move>
+Change lower-case characters in the region to upper-case.
address@hidden #q<move>
+Insert specified string at the beginning of each line in the region
address@hidden C-c M-p and C-c M-n
+In Insert and Replace states, these keys are bound to commands that peruse
+the history of the text
+previously inserted in other insert or replace commands.  By repeatedly typing
address@hidden M-p} or @kbd{C-c M-n}, you will cause Viper to
+insert these previously used strings one by one.
+When a new string is inserted, the previous one is deleted.
+
+In Vi state, these keys are bound to functions that peruse the history of
+destructive Vi commands.
address@hidden Specials}, for details.
address@hidden table
address@hidden @kbd{C-c M-p}
address@hidden @kbd{C-c M-n}
address@hidden @kbd{#q<move> }
address@hidden @kbd{#C<move>}
address@hidden @kbd{#c<move>}
address@hidden @kbd{&}
address@hidden @kbd{\&}
address@hidden @kbd{:substitute/<pat>/<repl>/<f>}
address@hidden @kbd{:s/<pat>/<repl>/<f>}
address@hidden @kbd{:copy [z]}
address@hidden @kbd{:t [z]}
address@hidden @kbd{:move [z]}
address@hidden @kbd{J}
address@hidden @kbd{~}
address@hidden @kbd{=<move>}
address@hidden @kbd{C}
address@hidden @kbd{cc}
address@hidden @kbd{c<move>}
address@hidden @kbd{S}
address@hidden @kbd{s}
address@hidden @kbd{R}
address@hidden @kbd{r<char>}
+
address@hidden Search and Replace, Yanking, Changing Text,Text Handling
address@hidden Search and Replace
+
address@hidden, for Ex address syntax.  @xref{Options}, to see how to
+get literal (non-regular-expression) search and how to stop search from
+wrapping around.
+
address@hidden @kbd
address@hidden C-c /
+Toggle case-sensitive search.  With prefix argument, toggle vanilla/regular
+expression search.
address@hidden <count>  /<string>
+To the <count>th occurrence of <string>.
+
+Viper does not parse search patterns and does not expand special symbols
+found there (e.g., @samp{~} is not expanded to the result of the previous
+substitution).
+
address@hidden <count>  ?<string>
+To the <count>th previous occurrence of <string>.
address@hidden <count>  g<move>
+Search for the text described by move.  (off by default)
address@hidden n
+Repeat latest @kbd{/} @kbd{?} (next).
address@hidden N
+Idem in opposite direction.
address@hidden %
+Find the next bracket and go to its match
address@hidden :[x,y]g/<string>/<cmd>
address@hidden text processing
+Search globally [from line x to y] for <string>
+and execute the Ex <cmd> on each occurrence.
address@hidden :[x,y]v/<string>/<cmd>
+Execute <cmd> on the lines that don't match.
address@hidden #g<move>
+Execute the last keyboard macro for each line in the region.
address@hidden and Registers}, for more info.
address@hidden Q
+Query Replace.
address@hidden :ta <name>
+Search in the tags file where <name> is defined (file, line), and go to it.
address@hidden  :[x,y]s/<pat>/<repl>/<f>
+Substitute (on lines x through y) the pattern <pat> (default the last
+pattern) with <repl>.  Useful
+flags <f> are @samp{g} for @samp{global} (i.e.@: change every
+non-overlapping occurrence of <pat>) and @samp{c} for
address@hidden (type @samp{y} to confirm a particular
+substitution, else @samp{n}).  Instead of @kbd{/} any
+punctuation character other than <space> <tab> and <lf> can be used as
+delimiter.
+
+Note: @emph{The newline character (inserted as @kbd{C-qC-j})
+can be used in <repl>}.
address@hidden  &
+Repeat latest Ex substitute command, e.g.@: @kbd{:s/wrong/right}.
address@hidden :global /<pattern>/<ex-command>
address@hidden :g /<pattern>/<ex-command>
+Execute <ex-command> on all lines that match <pattern>.
address@hidden :vglobal /<pattern>/<ex-command>
address@hidden :v /<pattern>/<ex-command>
+Execute <ex-command> on all lines that do not match <pattern>.
address@hidden table
address@hidden @kbd{&}
address@hidden @kbd{:substitute/<pat>/<repl>/<f>}
address@hidden @kbd{Q}
address@hidden @kbd{#g<move>}
address@hidden @kbd{:v}
address@hidden @kbd{:g}
address@hidden @kbd{:global}
address@hidden @kbd{:vglobal}
address@hidden @kbd{:tag <name>}
address@hidden @kbd{%}
address@hidden @kbd{N}
address@hidden @kbd{n}
address@hidden @kbd{g<move>}
address@hidden @kbd{?<string>}
address@hidden @kbd{/<string>}
+
address@hidden Yanking,Undoing,Search and Replace,Text Handling
address@hidden Yanking
+
address@hidden cut and paste
address@hidden paste
+
address@hidden @kbd
address@hidden <count>  y<move>
+Yank from begin to endpoint of <count><move>.
address@hidden <count>  "<a-z>y<move>
+Yank from begin to endpoint of <count><move> to register.
address@hidden <count>  "<A-Z>y<move>
+Yank from begin to endpoint of <count><move> and append
+to register.
address@hidden <count>  yy
+<count> lines.
address@hidden <count>  Y
+Idem (should be equivalent to @kbd{y$} though).
address@hidden  m<a-z>
+Mark the cursor position with a letter.
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden <count>  ["<a-z1-9>]p
+Put the contents of the (default undo) buffer
+<count> times after the cursor.  The register will
+be automatically down-cased.
address@hidden <count>  ["<a-z1-9>]P
+Put the contents of the (default undo) buffer
+<count> times before the cursor.  The register will
address@hidden table
address@hidden @kbd{P}
address@hidden @kbd{p}
address@hidden @kbd{"<a-z1-9>p}
address@hidden @kbd{"<a-z1-9>P}
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{m<a-z>}
address@hidden @kbd{Y}
address@hidden @kbd{yy}
address@hidden @kbd{"<A-Z>y<move>}
address@hidden @kbd{"<a-z>y<move>}
address@hidden @kbd{y<move>}
address@hidden @kbd{yank}
address@hidden @kbd{:yank}
+
address@hidden Undoing,, Yanking,Text Handling
address@hidden Undoing
+
address@hidden undo
address@hidden backup files
+
address@hidden @kbd
address@hidden  u U
+Undo the latest change.
address@hidden  .
+Repeat undo.
address@hidden :q!
+Quit Vi without writing.
address@hidden :e!
+Re-edit a messed-up file.
address@hidden :rec
+Recover file from autosave.  Viper also creates backup files
+that have a @samp{~} appended to them.
address@hidden table
address@hidden @kbd{:rec}
address@hidden @kbd{:e!}
address@hidden @kbd{:q!}
address@hidden @kbd{.}
address@hidden @kbd{U}
address@hidden @kbd{u}
+
address@hidden Display, File and Buffer Handling, Text Handling, Commands
address@hidden Display
+
address@hidden scrolling
+
address@hidden @kbd
address@hidden C-g
+At user level 1,
+give file name, status, current line number
+and relative address@hidden
+At user levels 2 and higher, abort the current command.
address@hidden C-c g
+Give file name, status, current line number and relative position -- all
+user levels.
address@hidden C-l
+Refresh the screen.
address@hidden <count> C-e
+Expose <count> more lines at bottom, cursor stays put (if possible).
address@hidden <count> C-y
+Expose <count> more lines at top, cursor stays put (if possible).
address@hidden <count> C-d
+Scroll <count> lines downward (default the number of the previous scroll;
+initialization: half a page).
address@hidden <count> C-u
+Scroll <count> lines upward (default the number of the previous scroll;
+initialization: half a page).
address@hidden <count> C-f
+<count> pages forward.
address@hidden <count> C-b
+<count> pages backward (in older versions @kbd{C-b} only works without count).
address@hidden <count> z<cr>
address@hidden zH
+Put line <count> at the top of the window (default the current line).
address@hidden <count> z-
address@hidden zL
+Put line <count> at the bottom of the window
+(default the current line).
address@hidden <count> z.
address@hidden zM
+Put line <count> in the center of the window
+(default the current line).
address@hidden table
address@hidden @kbd{zM}
address@hidden @kbd{zL}
address@hidden @kbd{zH}
address@hidden @kbd{z<cr>}
address@hidden @kbd{z.}
address@hidden @kbd{z-}
address@hidden @kbd{z<cr>}
address@hidden @kbd{C-b}
address@hidden @kbd{C-f}
address@hidden @kbd{C-u}
address@hidden @kbd{C-d}
address@hidden @kbd{C-y}
address@hidden @kbd{C-e}
address@hidden @kbd{C-l}
address@hidden @kbd{C-g}
+
+
address@hidden File and Buffer Handling, Mapping, Display,Commands
address@hidden File and Buffer Handling
+
address@hidden multiple files
+
+In all file handling commands, space should be typed before entering the file
+name.  If you need to type a modifier, such as @kbd{>>} or @kbd{!}, don't
+put any space between the command and the modifier.
+
+Note that many Ex commands, e.g., @kbd{:w}, accept command arguments. The
+effect is that the command would start acting on the current region. For
+instance, if the current region spans the lines 11 through 22, then if you
+type @kbd{1:w} you would see @samp{:11,22w} in the minibuffer.
+
address@hidden @kbd
address@hidden :q
+Quit buffer except if modified.
address@hidden :q!
+Quit buffer without checking.  In Viper, these two commands
+are identical.  Confirmation is required if exiting modified buffers that
+visit files.
address@hidden :suspend
address@hidden :stop
+Suspend Viper
address@hidden :[x,y] w
+Write the file.  Viper makes sure that a final newline is always added to
+any file where this newline is missing.  This is done by setting Emacs
+variable @code{require-final-newline} to @code{t}.  If you don't like this
+feature, use @code{setq-default} to set @code{require-final-newline} to
address@hidden  This must be done in @file{.viper} file.
address@hidden :[x,y] w <name>
+Write to the file <name>.
address@hidden :[x,y] w>> <name>
+Append the buffer to the file <name>.  There should be no space between
address@hidden and @kbd{>>}.  Type space after the @kbd{>>} and see what 
happens.
address@hidden :w!@: <name>
+Overwrite the file <name>.  In Viper, @kbd{:w} and @kbd{:w!} are identical.
+Confirmation is required for writing to an existing file (if this is not
+the file the buffer is visiting) or to a read-only file.
address@hidden :x,y w <name>
+Write lines x through y to the file <name>.
address@hidden :wq
+Write the file and kill buffer.
address@hidden :r <file> [<file> ...]
+Read file into a buffer, inserting its contents after the current line.
address@hidden :xit
+Same as @kbd{:wq}.
address@hidden :Write
address@hidden :W
+Save all unsaved buffers, asking for confirmation.
address@hidden :WWrite
address@hidden :WW
+Like @kbd{W}, but without asking for confirmation.
address@hidden ZZ
+Save current buffer and kill it.  If user level is 1, then save all files
+and kill Emacs.  Killing Emacs is the wrong way to use it, so you should
+switch to higher user levels as soon as possible.
address@hidden :x [<file>]
+Save and kill buffer.
address@hidden :x!@: [<file>]
address@hidden:w![<file>]} and @kbd{:q}.
address@hidden :pre
+Preserve the file -- autosave buffers.
address@hidden :rec
+Recover file from autosave.
address@hidden :f [<file>]
+without the argument, prints file name and character/line information afout
+the currently visited file. With an argument, sets the currently visited
+filename to @file{file}.
address@hidden :cd [<dir>]
+Set the working directory to <dir> (default home directory).
address@hidden :pwd
+Print present working directory.
address@hidden :e [+<cmd>] <files>
+Edit files.  If no filename is given, edit the file visited by the current
+buffer.  If buffer was modified or the file changed on disk, ask for
+confirmation.  Unlike Vi, Viper allows @kbd{:e} to take multiple arguments.
+The first file is edited the same way as in Vi.  The rest are visited
+in the usual Emacs way.
address@hidden :e!@: [+<cmd>] <files>
+Re-edit file.  If no filename, re-edit current file.
+In Viper, unlike Vi, @kbd{e!} is identical to @kbd{:e}.  In both cases, the
+user is asked to confirm if there is a danger of discarding changes to a
+buffer.
address@hidden :q!
+Quit Vi without writing.
address@hidden C-^
+Edit the alternate (normally the previous) file.
address@hidden :rew
+Obsolete
address@hidden :args
+List files not shown anywhere with counts for next
address@hidden :n [count]  [+<cmd>] [<files>]
+Edit <count> file, or edit files.  The count comes from @kbd{:args}.  
address@hidden :N [count] [+<cmd>] [<files>] 
+Like @kbd{:n}, but the meaning of the variable
address@hidden is reversed.
address@hidden :b
+Switch to another buffer.  If @var{ex-cycle-other-window} is @code{t},
+switch in another window.  Buffer completion is supported.
+The variable @var{viper-read-buffer-function} controls which function is
+actually used to read the buffer name. The default is @code{read-buffer},
+but better alternatives are also available in Emacs (e.g.,
address@hidden).
address@hidden @var{viper-read-buffer-function}
address@hidden :B
+Like @kbd{:b}, but the meaning of @var{ex-cycle-other-window} is reversed.
address@hidden :<address>r <name>
+Read the file <name> into the buffer after the line <address>.
address@hidden v, V, C-v
+Edit a file in current or another window, or in another frame.  File name
+is typed in Minibuffer.  File completion and history are supported.
address@hidden table
address@hidden @kbd{v}
address@hidden @kbd{V}
address@hidden @kbd{:args}
address@hidden @kbd{:rew}
address@hidden @kbd{C-^}
address@hidden @kbd{:e!@: [<files>]}
address@hidden @kbd{:e [<files>]}
address@hidden @kbd{:edit [<files>]}
address@hidden @kbd{:edit!@: [<files>]}
address@hidden @kbd{:q!}
address@hidden @kbd{:q}
address@hidden @kbd{:quit}
address@hidden @kbd{:quit!}
address@hidden @kbd{:f}
address@hidden @kbd{:rec}
address@hidden @kbd{:r}
address@hidden @kbd{:read}
address@hidden @kbd{:pre}
address@hidden @kbd{ZZ}
address@hidden @kbd{:wq}
address@hidden @kbd{:w <file>}
address@hidden @kbd{:w!@: <file>}
address@hidden @kbd{:w >> <file>}
address@hidden @kbd{:write <file>}
address@hidden @kbd{:write!@: <file>}
address@hidden @kbd{:write >> <file>}
address@hidden @kbd{:W}
address@hidden @kbd{:WW}
address@hidden @kbd{:Write}
address@hidden @kbd{:WWrite}
address@hidden @kbd{:WWrite}
address@hidden @kbd{:x}
address@hidden @kbd{:x!}
address@hidden @kbd{:suspend}
address@hidden @kbd{:stop}
address@hidden @kbd{:n [<count> | <file>]}
address@hidden @kbd{:cd [<dir>]}
address@hidden @kbd{:pwd}
+
address@hidden Mapping, Shell Commands, File and Buffer Handling, Commands
address@hidden Mapping
+
address@hidden key bindings
address@hidden key mapping
+
address@hidden @kbd
address@hidden :map <string>
+Start defining a Vi-style keyboard macro.
+For instance, typing
address@hidden:map www} followed by @kbd{:!wc %} and then typing @kbd{C-x )}
+will cause @kbd{www} to run wc on
+current file (Vi replaces @samp{%} with the current file name).
address@hidden C-x )
+Finish defining a keyboard macro.
+In Viper, this command completes the process of defining all keyboard
+macros, whether they are Emacs-style or Vi-style.
+This is a departure from Vi, needed to allow WYSIWYG mapping of
+keyboard macros and to permit the use of function keys and arbitrary Emacs
+functions in the macros.
address@hidden :unmap <string>
+Deprive <string> of its mappings in Vi state.
address@hidden :map!@: <string>
+Map a macro for Insert state.
address@hidden :unmap!@: <string>
+Deprive <string> of its mapping in Insert state (see @kbd{:unmap}).
address@hidden @@<a-z>
+In Vi state,
+execute the contents of register as a command.
address@hidden @@@@
+In Vi state,
+repeat last register command.
address@hidden @@#
+In Vi state,
+begin keyboard macro.  End with @@<a-z>.  This will
+put the macro in the proper register.  Register will
+be automatically down-cased.
address@hidden and Registers}, for more info.
address@hidden @@!<a-z>
+In Vi state,
+yank anonymous macro to register
address@hidden *
+In Vi state,
+execute anonymous macro (defined by C-x( and C-x )).
address@hidden C-x e
+Like @kbd{*}, but works in all Viper states.
address@hidden #g<move>
+Execute the last keyboard macro for each line in the region.
address@hidden and Registers}, for more info.
address@hidden [<a-z>
+Show contents of textmarker.
address@hidden ]<a-z>
+Show contents of register.
address@hidden table
address@hidden @kbd{]<a-z>}
address@hidden @kbd{[<a-z>}
address@hidden @kbd{#g<move>}
address@hidden @kbd{*}
address@hidden @kbd{@@!<a-z>}
address@hidden @kbd{@@#}
address@hidden @kbd{@@@@}
address@hidden @kbd{@@<a-z>}
address@hidden @kbd{:unmap <char>}
address@hidden @kbd{:map <char> <seq>}
address@hidden @kbd{:unmap!@: <char>}
address@hidden @kbd{:map!@: <char> <seq>}
+
address@hidden Shell Commands, Options, Mapping, Commands
address@hidden Shell Commands
+
address@hidden % (Current file)
+
+The symbol @samp{%} is used in Ex shell commands to mean current file.  If
+you want a @samp{%} in your command, it must be escaped as @samp{\%}.
address@hidden @samp{%} (Ex address)
+However if @samp{%} is the first character, it stands as the address for
+the whole file.
address@hidden @samp{#} (Previous file)
+Similarly, @samp{#} expands to the previous file.  The previous file is the
+first file in @kbd{:args} listing.  This defaults to the previous file in
+the VI sense if you have one address@hidden
+
+Symbols @samp{%} and @samp{#} are also used in the Ex commands @kbd{:e} and
address@hidden:r <shell-cmd>}.  The commands @kbd{:w} and the regular @kbd{:r
+<file>} command don't support these meta symbols, because file history is a
+better mechanism.
+
address@hidden shell commands
+
address@hidden @kbd
address@hidden :sh
+Execute a subshell in another window
address@hidden :[x,y]!<cmd>
+Execute a shell <cmd> [on lines x through y;
+% is replace by current file, \% is changed to %
address@hidden :[x,y]!!@: [<args>]
+Repeat last shell command [and append <args>].
address@hidden :!<cmd>
+Just execute command and display result in a buffer.
address@hidden :!!@: <args>
+Repeat last shell command and append <args>
address@hidden <count> !<move><cmd>
+The shell executes <cmd>, with standard
+input the lines described by <count><move>,
+next the standard output replaces those lines
+(think of @samp{cb}, @samp{sort}, @samp{nroff}, etc.).
address@hidden <count> !!<cmd>
+Give <count> lines as standard input to the
+shell <cmd>, next let the standard output
+replace those lines.
address@hidden :[x,y] w !<cmd>
+Let lines x to y be standard input for <cmd>
+(notice the <sp> between @kbd{w} and @kbd{!}).
address@hidden :<address>r !<cmd>
+Put the output of <cmd> after the line <address> (default current).
address@hidden :<address>r <name>
+Read the file <name> into the buffer after the line <address> (default
+current).
address@hidden :make
+Run the make command in the current directory.
address@hidden table
address@hidden @kbd{:<address>r <name>}
address@hidden @kbd{:<address>r !<cmd>}
address@hidden @kbd{!<cmd>}
address@hidden @kbd{!!<cmd>}
address@hidden @kbd{!<move><cmd>}
address@hidden @kbd{:w !<cmd>}
address@hidden @kbd{:x,y w !<cmd>}
address@hidden @kbd{:!!@: <args>}
address@hidden @kbd{:!<cmd>}
address@hidden @kbd{:sh}
address@hidden @kbd{:make}
+
address@hidden Options,Emacs Related Commands,Shell Commands,Commands
address@hidden Options
+
address@hidden Vi options
+
address@hidden @kbd
address@hidden autoindent
address@hidden ai
address@hidden autoindent
+autoindent -- In append mode after a <cr> the
+cursor will move directly below the first
+character on the previous line.
+This setting affects the current buffer only.
address@hidden autoindent-global
address@hidden ai-global
+Same as `autoindent', but affects all buffers.
address@hidden noautoindent
address@hidden noai
+Cancel autoindent.
address@hidden noautoindent-global
address@hidden noai-g
+Cancel autoindent-global.
address@hidden ignorecase
address@hidden ic
address@hidden case and searching
+ignorecase -- No distinction between upper and lower cases when searching.
address@hidden noignorecase
address@hidden noic
+Cancel ignorecase.
address@hidden magic
address@hidden ma
address@hidden literal searching
+Regular expressions used in searches; nomagic means no regexps.
address@hidden nomagic
address@hidden noma
+Cancel magic.
address@hidden readonly
address@hidden ro
address@hidden readonly files
+readonly -- The file is not to be changed.
+If the user attempts to write to this file, confirmation will be requested.
address@hidden noreadonly
address@hidden noro
+Cancel readonly.
address@hidden shell=<string>
address@hidden sh=<string>
address@hidden shell
+shell -- The program to be used for shell escapes
+(default @samp{$SHELL} (default @file{/bin/sh})).
address@hidden shiftwidth=<count>
address@hidden sw=<count>
address@hidden layout
address@hidden shifting text
+shiftwidth -- Gives the shiftwidth (default 8 positions).
address@hidden showmatch
address@hidden sm
address@hidden paren matching
address@hidden matching parens
+showmatch -- Whenever you append a @kbd{)}, Vi shows
+its match if it's on the same page; also with
address@hidden@{} and @address@hidden  If there's no match, Vi will beep.
address@hidden noshowmatch
address@hidden nosm
+Cancel showmatch.
address@hidden tabstop=<count>
address@hidden ts=<count>
address@hidden changing tab width
address@hidden tabbing
+tabstop -- The length of a <ht>; warning: this is
+only IN the editor, outside of it <ht>s have
+their normal length (default 8 positions).
+This setting affects the current buffer only.
address@hidden tabstop-global
address@hidden ts-g
+Same as `tabstop', but affects all buffers.
address@hidden wrapmargin=<count>
address@hidden wm=<count>
address@hidden auto fill
address@hidden word wrap
+wrapmargin -- In append mode Vi automatically
+puts a <lf> whenever there is a <sp> or <ht>
+within <wm> columns from the right margin.
address@hidden wrapscan
address@hidden ws
address@hidden searching
+wrapscan -- When searching, the end is
+considered @samp{stuck} to the begin of the file.
address@hidden nowrapscan
address@hidden nows
+Cancel wrapscan.
address@hidden :set <option>
+Turn <option> on.
address@hidden :set no<option>
+Turn <option> off.
address@hidden :set <option>=<value>
+Set <option> to <value>.
address@hidden table
address@hidden @kbd{:set <option>=<value>}
address@hidden @kbd{:set no<option>}
address@hidden @kbd{:set <option>}
address@hidden @kbd{:set ws}
address@hidden @kbd{:set wrapscan}
address@hidden @kbd{:set wm=<count>}
address@hidden @kbd{:set wrapmargin=<count>}
address@hidden @kbd{:set ts=<count>}
address@hidden @kbd{:set tabstop=<count>}
address@hidden @kbd{:set tab-stop-local=<count>}
address@hidden @kbd{:set sm}
address@hidden @kbd{:set showmatch}
address@hidden @kbd{:set sw=<count>}
address@hidden @kbd{:set shiftwidth=<count>}
address@hidden @kbd{:set sh=<string>}
address@hidden @kbd{:set shell=<string>}
address@hidden @kbd{:set ro}
address@hidden @kbd{:set readonly}
address@hidden @kbd{:set magic}
address@hidden @kbd{:set ic}
address@hidden @kbd{:set ignorecase}
address@hidden @kbd{:set ai}
address@hidden @kbd{:set autoindent}
+
address@hidden Emacs Related Commands,,Options,Commands
address@hidden Emacs Related Commands
+
address@hidden @kbd
address@hidden C-\
+Begin Meta command in Vi or Insert states.  Most often used as C-\ x (M-x).
+
+Note: Emacs binds @kbd{C-\} to a function that offers to change the
+keyboard input method in the multilingual environment.  Viper overrides this
+binding.  However, it is still possible to switch the input method by typing
address@hidden C-\} in the Vi command state and @kbd{C-z \ C-\} in the Insert 
state.
+Or you can use the MULE menu on the menubar.
address@hidden C-z
+In Insert and Replace states, prepare Viper to accept the next command and
+execute it as if Viper was in Vi state.  Then return to Insert state.
+
+In Vi state, switch to Emacs state; in Emacs state, switch to Vi state.
address@hidden C-c \
+Switches to Vi state for the duration of a single command.  Then goes back
+to the original Viper state.  Works from Vi, Insert, Replace, and Emacs states.
address@hidden C-x0
+Close Window
address@hidden C-x1
+Close Other Windows
address@hidden C-x2
+Split Window
address@hidden C-xo
+Move among windows
address@hidden C-xC-f
+Emacs find-file, useful in Insert state
address@hidden C-y
+Put back the last killed text.  Similar to Vi's @kbd{p}, but also works in
+Insert and Replace state.  This command doesn't work in Vi command state,
+since this binding is taken for something else.
address@hidden M-y
+Undoes the last @kbd{C-y} and puts another kill from the kill ring.
+Using this command, you can try may different kills until you find the one
+you need.
address@hidden table
address@hidden @kbd{M-y}
address@hidden @kbd{C-y}
address@hidden @kbd{C-xC-f}
address@hidden @kbd{C-xo}
address@hidden @kbd{C-x2}
address@hidden @kbd{C-x1}
address@hidden @kbd{C-x0}
address@hidden @kbd{C-z}
address@hidden @kbd{C-\}
address@hidden @kbd{C-c\}
+
address@hidden Mouse-bound Commands,,,Commands
address@hidden Mouse-bound Commands
+
+The following two mouse actions are normally bound to special search and
+insert commands in of Viper:
+
address@hidden @kbd
address@hidden S-Mouse-1 (Emacs)
address@hidden meta button1up (XEmacs)
+Holding Shift (or Meta, if XEmacs) and clicking mouse button 1 will
+initiate search for 
+a region under the mouse pointer.
+This command can take a prefix argument.  Note: Viper sets this
+binding only if this mouse action is not
+already bound to something else.
address@hidden Specials}, for more address@hidden
+
address@hidden S-Mouse-2 (Emacs)
address@hidden meta button2up (XEmacs)
+Holding Shift (or Meta, if XEmacs) and clicking button 2 of the mouse will
+insert a region surrounding the mouse pointer.
+This command can also take a prefix argument.
+Note: Viper sets this binding only if this mouse action is not
+already bound to something else.
address@hidden Specials}, for more address@hidden
address@hidden table
address@hidden @kbd{S-Mouse-1}
address@hidden @kbd{S-Mouse-2}
address@hidden @kbd{meta button1up}
address@hidden @kbd{meta button2up}
+
address@hidden Acknowledgments,,,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Acknowledgments
+
+Viper, formerly known as VIP-19, was written by Michael Kifer.  Viper is
+based on the original VIP package by Masahiko Sato and on its enhancement,
+VIP 4.4, by Aamod Sane.  This manual is an adaptation of the manual for VIP
+4.4, which, in turn, was based on Sato's manual for VIP 3.5.
+
+Many contributors on the Net pointed out bugs and suggested a number of
+useful features. Scott Bronson and Samuel Padgett contributed patches that
+were incorporated in this code.  Here is a hopefully complete list of
+contributors:
+
address@hidden
+aaronl@@vitelus.com (Aaron Lehmann),
+ahg@@panix.com (Al Gelders),
+amade@@diagram.fr (Paul-Bernard Amade),
+ascott@@fws214.intel.com (Andy Scott),
+bronson@@trestle.com (Scott Bronson),
+cook@@biostat.wisc.edu (Tom Cook),
+csdayton@@midway.uchicago.edu (Soren Dayton),
+dave@@hellgate.utah.edu,
+dm@@scs.cs.nyu.edu (David Mazieres),
+dominik@@strw.LeidenUniv.nl (Carsten Dominik),
+dwallach@@cs.princeton.edu (Dan Wallach),
+dwight@@toolucky.llnl.gov (Dwight Shih),
+dxc@@xprt.net (David X Callaway),
+edmonds@@edmonds.home.cs.ubc.ca (Brian Edmonds),
+gin@@mo.msk.ru (Golubev I.N.),
+gviswana@@cs.wisc.edu (Guhan Viswanathan),
+gvr@@halcyon.com (George V.@: Reilly),
+hatazaki@@bach.convex.com (Takao Hatazaki),
+hpz@@ibmhpz.aug.ipp-garching.mpg.de (Hans-Peter Zehrfeld),
+jackr@@dblues.engr.sgi.com (Jack Repenning),
+jamesm@@bga.com (D.J.@: Miller II),
+jjm@@hplb.hpl.hp.com (Jean-Jacques Moreau),
+jl@@cse.ogi.edu (John Launchbury),
+jobrien@@hchp.org (John O'Brien),
+johnw@@borland.com (John Wiegley),
+kanze@@gabi-soft.fr (James Kanze),
+kin@@isi.com (Kin Cho),
+kwzh@@gnu.org (Karl Heuer),
+lindstro@@biostat.wisc.edu (Mary Lindstrom),
+minakaji@@osaka.email.ne.jp (Mikio Nakajima),
+Mark.Bordas@@East.Sun.COM (Mark Bordas),
+meyering@@comco.com (Jim Meyering),
+martin@@xemacs.org (Martin Buchholz),
+mbutler@@redfernnetworks.com (Malcolm Butler),
+mveiga@@dit.upm.es (Marcelino Veiga Tuimil),
+paulk@@summit.esg.apertus.com (Paul Keusemann),
+pfister@@cs.stonybrook.edu (Hanspeter Pfister),
+phil_brooks@@MENTORG.COM (Phil Brooks),
+pogrell@@informatik.hu-berlin.de (Lutz Pogrell),
+pradyut@@cs.uchicago.edu (Pradyut Shah),
+roderick@@argon.org (Roderick Schertler),
+rxga@@ulysses.att.com,
+sawdey@@lcse.umn.edu (Aaron Sawdey),
+simonb@@prl.philips.co.uk (Simon Blanchard),
+spadgett1@@nc.rr.com (Samuel Padgett),
+stephen@@farrell.org (Stephen Farrell),
+sudish@@MindSpring.COM (Sudish Joseph),
+schwab@@issan.informatik.uni-dortmund.de (Andreas Schwab)
+terra@@diku.dk (Morten Welinder),
+thanh@@informatics.muni.cz (Han The Thanh),
+toma@@convex.convex.com,
+vrenjak@@sun1.racal.com (Milan Vrenjak),
+whicken@@dragon.parasoft.com (Wendell Hicken),
+zapman@@cc.gatech.edu (Jason Zapman II),
address@hidden example
+
+
address@hidden Key Index,Function Index,,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Key Index
+
address@hidden ky
+
address@hidden Function Index,Variable Index,Key Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Function Index
+
address@hidden fn
+
address@hidden Variable Index,Package Index,Function Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Variable Index
+
address@hidden vr
+
address@hidden Package Index,Concept Index,Variable Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Package Index
+
address@hidden pg
+
address@hidden Concept Index,,Package Index,Top
address@hidden  node-name,  next,  previous,  up
address@hidden Concept Index
+
address@hidden cp
+
address@hidden odd
address@hidden
address@hidden

Index: contents/res/texi_contents_at_begin/contents_at_begin.texi.first
===================================================================
RCS file: contents/res/texi_contents_at_begin/contents_at_begin.texi.first
diff -N contents/res/texi_contents_at_begin/contents_at_begin.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res/texi_contents_at_begin/contents_at_begin.texi.first    2 Aug 
2009 13:13:19 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_at_begin.info
+
address@hidden
+
address@hidden Top
address@hidden Contents at beginning
+
+Content at the beginning.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden

Index: contents/res/texi_contents_at_end/contents_at_end.texi.first
===================================================================
RCS file: contents/res/texi_contents_at_end/contents_at_end.texi.first
diff -N contents/res/texi_contents_at_end/contents_at_end.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res/texi_contents_at_end/contents_at_end.texi.first        2 Aug 
2009 13:13:19 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_at_end.info
+
+
address@hidden Top
address@hidden Contents at end
+
+Content at end.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden
address@hidden

Index: 
contents/res/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
===================================================================
RCS file: 
contents/res/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
diff -N 
contents/res/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
contents/res/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
  2 Aug 2009 13:13:20 -0000       1.1
@@ -0,0 +1,30 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_in_middle_chapter.info
+
+
address@hidden Top
address@hidden Contents in chapter
+
+Content in chapter.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter with contents
address@hidden
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden section
+
+Section.
+
address@hidden

Index: 
contents/res/texi_contents_in_middle_section/contents_in_middle_section.texi.first
===================================================================
RCS file: 
contents/res/texi_contents_in_middle_section/contents_in_middle_section.texi.first
diff -N 
contents/res/texi_contents_in_middle_section/contents_in_middle_section.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
contents/res/texi_contents_in_middle_section/contents_in_middle_section.texi.first
  2 Aug 2009 13:13:20 -0000       1.1
@@ -0,0 +1,35 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_in_middle_section.info
+
+
address@hidden Top
address@hidden Contents in section
+
+Content in section.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+
address@hidden
+* section::
+* section1::
address@hidden menu
+
address@hidden section
address@hidden section
+
+The section with contents
address@hidden
+
address@hidden section1
address@hidden section 1
+
+Section 1.
+
address@hidden

Index: contents/res/texi_double_contents/double_contents.texi.first
===================================================================
RCS file: contents/res/texi_double_contents/double_contents.texi.first
diff -N contents/res/texi_double_contents/double_contents.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res/texi_double_contents/double_contents.texi.first        2 Aug 
2009 13:13:20 -0000       1.1
@@ -0,0 +1,30 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden double_contents.info
+
address@hidden
+
address@hidden Top
address@hidden Double contents
+
+Double contents.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
address@hidden
+The chapter
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden section with contents
address@hidden
+
address@hidden

Index: 
contents/res/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
===================================================================
RCS file: 
contents/res/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
diff -N 
contents/res/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
contents/res/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
    2 Aug 2009 13:13:20 -0000       1.1
@@ -0,0 +1,31 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden double_contents_setcontentsaftertitlepage.info
+
address@hidden
address@hidden
+
address@hidden Top
address@hidden Double contents
+
+Double contents.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
address@hidden
+The chapter
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden section with contents
address@hidden
+
address@hidden

Index: contents/res/texi_no_content/no_content.texi.first
===================================================================
RCS file: contents/res/texi_no_content/no_content.texi.first
diff -N contents/res/texi_no_content/no_content.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res/texi_no_content/no_content.texi.first  2 Aug 2009 13:13:20 
-0000       1.1
@@ -0,0 +1,19 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden no_contents.info
+
address@hidden Top
address@hidden No ccontent
+
+No content.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden

Index: contents/res/texi_no_content_setcatpage/no_content_setcatpage.texi.first
===================================================================
RCS file: 
contents/res/texi_no_content_setcatpage/no_content_setcatpage.texi.first
diff -N contents/res/texi_no_content_setcatpage/no_content_setcatpage.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res/texi_no_content_setcatpage/no_content_setcatpage.texi.first    
2 Aug 2009 13:13:20 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden no_contents_setcatpage.info
+
address@hidden
+
address@hidden Top
address@hidden No ccontent
+
+No content.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden

Index: contents/res_all/texi_contents_at_begin/contents_at_begin.texi.first
===================================================================
RCS file: contents/res_all/texi_contents_at_begin/contents_at_begin.texi.first
diff -N contents/res_all/texi_contents_at_begin/contents_at_begin.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res_all/texi_contents_at_begin/contents_at_begin.texi.first        
2 Aug 2009 13:13:20 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_at_begin.info
+
address@hidden
+
address@hidden Top
address@hidden Contents at beginning
+
+Content at the beginning.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden

Index: contents/res_all/texi_contents_at_end/contents_at_end.texi.first
===================================================================
RCS file: contents/res_all/texi_contents_at_end/contents_at_end.texi.first
diff -N contents/res_all/texi_contents_at_end/contents_at_end.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res_all/texi_contents_at_end/contents_at_end.texi.first    2 Aug 
2009 13:13:20 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_at_end.info
+
+
address@hidden Top
address@hidden Contents at end
+
+Content at end.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden
address@hidden

Index: 
contents/res_all/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
===================================================================
RCS file: 
contents/res_all/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
diff -N 
contents/res_all/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
contents/res_all/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
      2 Aug 2009 13:13:20 -0000       1.1
@@ -0,0 +1,30 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_in_middle_chapter.info
+
+
address@hidden Top
address@hidden Contents in chapter
+
+Content in chapter.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter with contents
address@hidden
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden section
+
+Section.
+
address@hidden

Index: 
contents/res_all/texi_contents_in_middle_section/contents_in_middle_section.texi.first
===================================================================
RCS file: 
contents/res_all/texi_contents_in_middle_section/contents_in_middle_section.texi.first
diff -N 
contents/res_all/texi_contents_in_middle_section/contents_in_middle_section.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
contents/res_all/texi_contents_in_middle_section/contents_in_middle_section.texi.first
      2 Aug 2009 13:13:20 -0000       1.1
@@ -0,0 +1,35 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_in_middle_section.info
+
+
address@hidden Top
address@hidden Contents in section
+
+Content in section.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+
address@hidden
+* section::
+* section1::
address@hidden menu
+
address@hidden section
address@hidden section
+
+The section with contents
address@hidden
+
address@hidden section1
address@hidden section 1
+
+Section 1.
+
address@hidden

Index: contents/res_all/texi_double_contents/double_contents.texi.first
===================================================================
RCS file: contents/res_all/texi_double_contents/double_contents.texi.first
diff -N contents/res_all/texi_double_contents/double_contents.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res_all/texi_double_contents/double_contents.texi.first    2 Aug 
2009 13:13:21 -0000       1.1
@@ -0,0 +1,30 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden double_contents.info
+
address@hidden
+
address@hidden Top
address@hidden Double contents
+
+Double contents.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
address@hidden
+The chapter
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden section with contents
address@hidden
+
address@hidden

Index: 
contents/res_all/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
===================================================================
RCS file: 
contents/res_all/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
diff -N 
contents/res_all/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
contents/res_all/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
        2 Aug 2009 13:13:21 -0000       1.1
@@ -0,0 +1,31 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden double_contents_setcontentsaftertitlepage.info
+
address@hidden
address@hidden
+
address@hidden Top
address@hidden Double contents
+
+Double contents.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
address@hidden
+The chapter
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden section with contents
address@hidden
+
address@hidden

Index: contents/res_all/texi_no_content/no_content.texi.first
===================================================================
RCS file: contents/res_all/texi_no_content/no_content.texi.first
diff -N contents/res_all/texi_no_content/no_content.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res_all/texi_no_content/no_content.texi.first      2 Aug 2009 
13:13:21 -0000       1.1
@@ -0,0 +1,19 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden no_contents.info
+
address@hidden Top
address@hidden No ccontent
+
+No content.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden

Index: 
contents/res_all/texi_no_content_setcatpage/no_content_setcatpage.texi.first
===================================================================
RCS file: 
contents/res_all/texi_no_content_setcatpage/no_content_setcatpage.texi.first
diff -N 
contents/res_all/texi_no_content_setcatpage/no_content_setcatpage.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
contents/res_all/texi_no_content_setcatpage/no_content_setcatpage.texi.first    
    2 Aug 2009 13:13:21 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden no_contents_setcatpage.info
+
address@hidden
+
address@hidden Top
address@hidden No ccontent
+
+No content.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden

Index: contents/res_info/texi_contents_at_begin/contents_at_begin.texi.first
===================================================================
RCS file: contents/res_info/texi_contents_at_begin/contents_at_begin.texi.first
diff -N contents/res_info/texi_contents_at_begin/contents_at_begin.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res_info/texi_contents_at_begin/contents_at_begin.texi.first       
2 Aug 2009 13:13:21 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_at_begin.info
+
address@hidden
+
address@hidden Top
address@hidden Contents at beginning
+
+Content at the beginning.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden

Index: contents/res_info/texi_contents_at_end/contents_at_end.texi.first
===================================================================
RCS file: contents/res_info/texi_contents_at_end/contents_at_end.texi.first
diff -N contents/res_info/texi_contents_at_end/contents_at_end.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res_info/texi_contents_at_end/contents_at_end.texi.first   2 Aug 
2009 13:13:21 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_at_end.info
+
+
address@hidden Top
address@hidden Contents at end
+
+Content at end.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden
address@hidden

Index: 
contents/res_info/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
===================================================================
RCS file: 
contents/res_info/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
diff -N 
contents/res_info/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
contents/res_info/texi_contents_in_middle_chapter/contents_in_middle_chapter.texi.first
     2 Aug 2009 13:13:21 -0000       1.1
@@ -0,0 +1,30 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_in_middle_chapter.info
+
+
address@hidden Top
address@hidden Contents in chapter
+
+Content in chapter.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter with contents
address@hidden
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden section
+
+Section.
+
address@hidden

Index: 
contents/res_info/texi_contents_in_middle_section/contents_in_middle_section.texi.first
===================================================================
RCS file: 
contents/res_info/texi_contents_in_middle_section/contents_in_middle_section.texi.first
diff -N 
contents/res_info/texi_contents_in_middle_section/contents_in_middle_section.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
contents/res_info/texi_contents_in_middle_section/contents_in_middle_section.texi.first
     2 Aug 2009 13:13:21 -0000       1.1
@@ -0,0 +1,35 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden contents_in_middle_section.info
+
+
address@hidden Top
address@hidden Contents in section
+
+Content in section.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+
address@hidden
+* section::
+* section1::
address@hidden menu
+
address@hidden section
address@hidden section
+
+The section with contents
address@hidden
+
address@hidden section1
address@hidden section 1
+
+Section 1.
+
address@hidden

Index: contents/res_info/texi_double_contents/double_contents.texi.first
===================================================================
RCS file: contents/res_info/texi_double_contents/double_contents.texi.first
diff -N contents/res_info/texi_double_contents/double_contents.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res_info/texi_double_contents/double_contents.texi.first   2 Aug 
2009 13:13:21 -0000       1.1
@@ -0,0 +1,30 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden double_contents.info
+
address@hidden
+
address@hidden Top
address@hidden Double contents
+
+Double contents.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
address@hidden
+The chapter
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden section with contents
address@hidden
+
address@hidden

Index: 
contents/res_info/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
===================================================================
RCS file: 
contents/res_info/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
diff -N 
contents/res_info/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
contents/res_info/texi_double_contents_setcontentsaftertitlepage/double_contents_setcontentsaftertitlepage.texi.first
       2 Aug 2009 13:13:21 -0000       1.1
@@ -0,0 +1,31 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden double_contents_setcontentsaftertitlepage.info
+
address@hidden
address@hidden
+
address@hidden Top
address@hidden Double contents
+
+Double contents.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
address@hidden
+The chapter
+
address@hidden
+* section::
address@hidden menu
+
address@hidden section
address@hidden section with contents
address@hidden
+
address@hidden

Index: contents/res_info/texi_no_content/no_content.texi.first
===================================================================
RCS file: contents/res_info/texi_no_content/no_content.texi.first
diff -N contents/res_info/texi_no_content/no_content.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contents/res_info/texi_no_content/no_content.texi.first     2 Aug 2009 
13:13:21 -0000       1.1
@@ -0,0 +1,19 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden no_contents.info
+
address@hidden Top
address@hidden No ccontent
+
+No content.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden

Index: 
contents/res_info/texi_no_content_setcatpage/no_content_setcatpage.texi.first
===================================================================
RCS file: 
contents/res_info/texi_no_content_setcatpage/no_content_setcatpage.texi.first
diff -N 
contents/res_info/texi_no_content_setcatpage/no_content_setcatpage.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
contents/res_info/texi_no_content_setcatpage/no_content_setcatpage.texi.first   
    2 Aug 2009 13:13:22 -0000       1.1
@@ -0,0 +1,21 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden no_contents_setcatpage.info
+
address@hidden
+
address@hidden Top
address@hidden No ccontent
+
+No content.
+
address@hidden 
+* chapter::
address@hidden menu
+
address@hidden chapter
address@hidden Chapter 1
+
+The chapter
+
address@hidden

Index: encodings/res/texi_accent/accent.texi.first
===================================================================
RCS file: encodings/res/texi_accent/accent.texi.first
diff -N encodings/res/texi_accent/accent.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_accent/accent.texi.first 2 Aug 2009 13:13:23 -0000       
1.1
@@ -0,0 +1,82 @@
+\input texinfo
address@hidden accent.info
address@hidden Accent test
+
address@hidden Top
address@hidden Accent test top
+
address@hidden args with braces, without braces/following whitespace
+
+should be e`: @`{e} @`e
+
+should be e': @'{e} @'e
+
+should be e^: @^{e} @^e
+
+should be u": @"{u} @"u
+
+should be i`: @`{i} @`i
+
+should be i': @'{i} @'i
+
+should be i^: @^{i} @^i
+
+should be u": @"{u} @"u
+
+should be c,: @,{c} @,c
+
+should be n~: @~{n} @~n
+
+should be e=: @={e} @=e
+
+should be address@hidden'}': @H{e} @H e
+
+should be e.: @dotaccent{e} @dotaccent e
+
+should be e*: @ringaccent{e} @ringaccent e
+
+should be ee[: @tieaccent{ee}
+
+should be e(: @u{e} @u e
+
+should be e_: @ubaraccent{e} @ubaraccent e
+
+should be .e: @udotaccent{e} @udotaccent e
+
+should be e<: @v{e} @v e
+
+upside down: @questiondown{} @exclamdown{}
+
+A-with-circle: @aa{},@AA{}
+
+AE, OE ligatures: @ae{} @AE{} @oe{} @OE{}
+
+dotless i, j: @dotless{i} @dotless{j}
+
+Polish suppressed-L: @l{} @L{}
+
+O-with-slash: @o{} @O{}
+
+es-zet or sharp S: @ss{}          
+
+pounds sterling: @pounds{}      
+
address@hidden arg is command -- @dotless{i} is special-cased for HTML
+should be dotless i`: @address@hidden
+
+should be dotless i': @'address@hidden
+
+should be dotless i^: @address@hidden
+
+should be dotless i": @"address@hidden
+
address@hidden arg is command -- @dotless{j}
+should be dotless j`: @address@hidden
+
+should be dotless j': @'address@hidden
+
+should be dotless j^: @address@hidden
+
+should be dotless j": @"address@hidden
+
address@hidden

Index: encodings/res/texi_accentenc/accentenc.texi.first
===================================================================
RCS file: encodings/res/texi_accentenc/accentenc.texi.first
diff -N encodings/res/texi_accentenc/accentenc.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_accentenc/accentenc.texi.first   2 Aug 2009 13:13:23 
-0000       1.1
@@ -0,0 +1,83 @@
+\input texinfo
address@hidden accentenc.info
address@hidden Accent encoding test
address@hidden ISO-8859-1
+
address@hidden Top
address@hidden Accent encoding test top
+
address@hidden args with braces, without braces/following whitespace
+
+should be e`: @`{e} @`e
+
+should be e': @'{e} @'e
+
+should be e^: @^{e} @^e
+
+should be u": @"{u} @"u
+
+should be i`: @`{i} @`i
+
+should be i': @'{i} @'i
+
+should be i^: @^{i} @^i
+
+should be u": @"{u} @"u
+
+should be c,: @,{c} @,c
+
+should be n~: @~{n} @~n
+
+should be e=: @={e} @=e
+
+should be address@hidden'}': @H{e} @H e
+
+should be e.: @dotaccent{e} @dotaccent e
+
+should be e*: @ringaccent{e} @ringaccent e
+
+should be ee[: @tieaccent{ee}
+
+should be e(: @u{e} @u e
+
+should be e_: @ubaraccent{e} @ubaraccent e
+
+should be .e: @udotaccent{e} @udotaccent e
+
+should be e<: @v{e} @v e
+
+upside down: @questiondown{} @exclamdown{}
+
+A-with-circle: @aa{},@AA{}
+
+AE, OE ligatures: @ae{} @AE{} @oe{} @OE{}
+
+dotless i, j: @dotless{i} @dotless{j}
+
+Polish suppressed-L: @l{} @L{}
+
+O-with-slash: @o{} @O{}
+
+es-zet or sharp S: @ss{}          
+
+pounds sterling: @pounds{}      
+
address@hidden arg is command -- @dotless{i} is special-cased for HTML
+should be dotless i`: @address@hidden
+
+should be dotless i': @'address@hidden
+
+should be dotless i^: @address@hidden
+
+should be dotless i": @"address@hidden
+
address@hidden arg is command -- @dotless{j}
+should be dotless j`: @address@hidden
+
+should be dotless j': @'address@hidden
+
+should be dotless j^: @address@hidden
+
+should be dotless j": @"address@hidden
+
address@hidden

Index: encodings/res/texi_documentlanguage_set/documentlanguage_set.texi.first
===================================================================
RCS file: 
encodings/res/texi_documentlanguage_set/documentlanguage_set.texi.first
diff -N encodings/res/texi_documentlanguage_set/documentlanguage_set.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_documentlanguage_set/documentlanguage_set.texi.first     
2 Aug 2009 13:13:23 -0000       1.1
@@ -0,0 +1,12 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden documentlanguage_set.info
address@hidden pt
address@hidden Test @@documentlanguage set
+
address@hidden Top
address@hidden @@documentlanguage set
+
+Text.
+
address@hidden

Index: encodings/res/texi_multi_lang/multi_lang.texi.first
===================================================================
RCS file: encodings/res/texi_multi_lang/multi_lang.texi.first
diff -N encodings/res/texi_multi_lang/multi_lang.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_multi_lang/multi_lang.texi.first 2 Aug 2009 13:13:23 
-0000       1.1
@@ -0,0 +1,52 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden multi_lang.info
+
address@hidden fr_NOWHERE
+
address@hidden Top
address@hidden Multi language file
+
+This is in french
+
address@hidden
+* chapter fr_NOWHERE::
+* chapter ja::
+* chapter en::
+* chapter pt_BR::
address@hidden menu
+
address@hidden chapter fr_NOWHERE
address@hidden Fr_NOWHERE
+
+In french. @xref{Top}.
+
address@hidden
+* sub fr_NOWHERE::
address@hidden menu
+
address@hidden sub fr_NOWHERE
address@hidden fr_NOWHERE section
+
+In fr section.
+
address@hidden ja
address@hidden chapter ja
address@hidden ja
+
+In japanese. @xref{Top}.
+
address@hidden en
address@hidden chapter en
address@hidden en
+
+In english. @xref{Top}.
+
address@hidden pt_BR
address@hidden chapter pt_BR
address@hidden pt_bR
+
+In brazilian. @xref{Top}.
+
+
address@hidden

Index: encodings/res/texi_nodetest/nodetest.texi.first
===================================================================
RCS file: encodings/res/texi_nodetest/nodetest.texi.first
diff -N encodings/res/texi_nodetest/nodetest.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_nodetest/nodetest.texi.first     2 Aug 2009 13:13:24 
-0000       1.1
@@ -0,0 +1,355 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden It is not possible to test for @,{c} in 
address@hidden nodename cause makeinfo can not
address@hidden handle cedilla's in node names. A cedilla
address@hidden has a comma which was recognized a as
address@hidden delimiter between node parts (next,previous etc.)
address@hidden nodetest.info
address@hidden Top,Umlaut,(dir)
address@hidden
address@hidden
+* Umlaut::               Umlaut.
+
+
+Another Heading
+
+
+* acute accent::         acute accent.
+* grave accent::         grave accent.
+* circumflex accent::    circumflex accent.
+* tilde accent::         tilde accent.
+* cedilla accent::       cedilla accent.
+* rest::                 rest @@address@hidden@} etc.
address@hidden menu
address@hidden
address@hidden Umlaut,,Top,Top
address@hidden Umlaut
address@hidden
+* @"a::    @"a.
+* @"e::    @"e.
+* @"i::    @"i.
+* with brace @"{i}::    @"{i}.
+* with dotless @"address@hidden::   @"address@hidden
+* @"o::    @"o.
+* @"u::    @"u.
+* @"y::    @"y.
+* @"A::    @"A.
+* @"E::    @"E.
+* @"I::    @"I.
+* @"O::    @"O.
+* @"U::    @"U.
+* @ss{}::    @ss{}.
+* no section::  Node without sectioning command.
address@hidden menu
address@hidden
address@hidden @"a,,,Umlaut
address@hidden @"a
+ref to @,{c} @ref{@,{c}}.
address@hidden @"e,,,Umlaut
address@hidden @"e
address@hidden @"i,,,Umlaut 
address@hidden @"i
address@hidden with brace @"{i},,,Umlaut
address@hidden With brace @"{i}
address@hidden with dotless @"address@hidden,,,Umlaut
address@hidden With dotless @"address@hidden
+
+before footnote @xref{footanchor}.
+
address@hidden@anchor{footanchor}}
+
+after footnote @xref{footanchor}.
+
address@hidden @"o,,,Umlaut
address@hidden @"o
+Ref to an anchor at the end of the doc 
+(@pxref{@'e-o, , there is an o-@'e could there be an @address@hidden).
address@hidden @"u,,,Umlaut
address@hidden @"u
+Another ref to an anchor (@pxref{x-spot, ,}).
address@hidden @"y,,,Umlaut
address@hidden @"y
+This is a ref to a node (@pxref{@'U, ,@'U}).
+
address@hidden @"A,,,Umlaut
address@hidden @"A
+
+Now a ref to a node without sectionning command, 
+no text (@pxref{no section, , }).
+With text (@pxref{no section, ,but a text }).
+
address@hidden @"E,,,Umlaut
address@hidden @"E
address@hidden @"I,,,Umlaut
address@hidden @"I
address@hidden @"O,,,Umlaut
address@hidden @"O
address@hidden @"U,,,Umlaut
address@hidden @"U
address@hidden @ss{},,,Umlaut
address@hidden @ss{}
address@hidden no section,,,Umlaut
+This is a node without sectioning command.
address@hidden
address@hidden acute accent,,Top,Top
address@hidden acute accent
address@hidden
+* @'a::    @'a.
+* @'e::    @'e.
+* @'i::    @'i.
+* @'o::    @'o.
+* @'u::    @'u.
+* @'y::    @'y.
+* @'A::    @'A.
+* @'E::    @'E.
+* @'I::    @'I.
+* @'O::    @'O.
+* @'U::    @'U.
+* @'Y::    @'Y.
address@hidden menu
address@hidden
address@hidden @'a,,,acute accent
address@hidden @'a
+With brace @'{a}. Testing ' " ` ^.
address@hidden @'e,,,acute accent
address@hidden @'e
address@hidden @'i,,,acute accent
address@hidden @'i
address@hidden @'o,,,acute accent
address@hidden @'o
address@hidden @'u,,,acute accent
address@hidden @'u
address@hidden @'y,,,acute accent
address@hidden @'y
address@hidden @'A,,,acute accent
address@hidden @'A
address@hidden @'E,,,acute accent
address@hidden @'E
address@hidden @'I,,,acute accent
address@hidden @'I
address@hidden @'O,,,acute accent
address@hidden @'O
address@hidden @'U,,,acute accent
address@hidden @'U
address@hidden @'Y,,,acute accent
address@hidden @'Y
+This is a ref to @"u (@pxref{@"u, ,@"u}).
+Another one, with node only (@pxref{@"u, ,}).
+
+
address@hidden
address@hidden grave accent,,Top,Top
address@hidden grave accent
address@hidden
+* @`a::    @`a.
+* @`e::    @`e.
+* @`i::    @`i.
+* with brace @`{i}::    @`{i}.
+* with dotless @address@hidden::   @address@hidden
+* @`o::    @`o.
+* @`u::    @`u.
+* @`A::    @`A.
+* @`E::    @`E.
+* @`I::    @`I.
+* @`O::    @`O.
+* @`U::    @`U.
address@hidden menu
address@hidden
address@hidden @`a,,,grave accent
address@hidden @`a
address@hidden @`e,,,grave accent
address@hidden @`e
address@hidden @`i,,,grave accent
address@hidden @`i
address@hidden with brace @`{i},,,grave accent
address@hidden @`{i}
address@hidden with dotless @address@hidden,,,grave accent
address@hidden @address@hidden
address@hidden @`o,,,grave accent
address@hidden @`o
address@hidden @`u,,,grave accent
address@hidden @`u
address@hidden @`A,,,grave accent
address@hidden @`A
address@hidden @`E,,,grave accent
address@hidden @`E
address@hidden @`I,,,grave accent
address@hidden @`I
address@hidden @`O,,,grave accent
address@hidden @`O
address@hidden @`U,,,grave accent
address@hidden @`U
address@hidden
address@hidden circumflex accent,,Top,Top
address@hidden circumflex accent
address@hidden
+* @^a::    @^a.
+* @^e::    @^e.
+* @^i::    @^i.
+* with brace @^{i}::    @^{i}.
+* with dotless @address@hidden::   @address@hidden
+* @^o::    @^o.
+* @^u::    @^u.
+* @^A::    @^A.
+* @^E::    @^E.
+* @^I::    @^I.
+* @^O::    @^O.
+* @^U::    @^U.
address@hidden menu
address@hidden
address@hidden @^a,,,circumflex accent
address@hidden @^a
address@hidden @^e,,,circumflex accent
address@hidden @^e
address@hidden @^i,,,circumflex accent
address@hidden @^i
address@hidden with brace @^{i},,,circumflex accent
address@hidden @^{i}
+Test @@address@hidden@}.
address@hidden with dotless @address@hidden,,,circumflex accent
address@hidden @address@hidden
+Test @@address@hidden@@address@hidden@address@hidden
address@hidden @^o,,,circumflex accent
address@hidden @^o
address@hidden @^u,,,circumflex accent
address@hidden @^u
address@hidden @^A,,,circumflex accent
address@hidden @^A
address@hidden @^E,,,circumflex accent
address@hidden @^E
address@hidden @^I,,,circumflex accent
address@hidden @^I
address@hidden @^O,,,circumflex accent
address@hidden @^O
address@hidden @^U,,,circumflex accent
address@hidden @^U
address@hidden
address@hidden tilde accent,,Top,Top
address@hidden tilde accent
address@hidden
+* @~a::    @~a.
+* @~n::    @~n.
+* @~o::    @~o.
+* @~A::    @~A.
+* @~O::    @~O.
address@hidden menu
address@hidden
address@hidden @~a,,,tilde accent
address@hidden @~a
address@hidden @~n,,,tilde accent
address@hidden @~n
address@hidden @~o,,,tilde accent
address@hidden @~o
address@hidden @~A,,,tilde accent
address@hidden @~A
address@hidden @~O,,,tilde accent
address@hidden @~O
+This marks the @anchor{x-spot}spot.
+A second one with accented char @anchor{@'e-o}.
address@hidden
address@hidden cedilla accent,,Top,Top
address@hidden cedilla accent
address@hidden
+* @,{c}::    @,{c}.
+* @,{C}::    @,{C}.
+* @,c no brace:: @,c no brace.
address@hidden menu
address@hidden
address@hidden @,{c},,,cedilla accent
address@hidden @,{c}
address@hidden @,{C},,,cedilla accent
address@hidden @,{C}
address@hidden @,c no brace,,,cedilla accent
address@hidden @,c no brace
address@hidden
+
address@hidden rest,,Top,Top
address@hidden rest
address@hidden
+* @aa{}::  @aa{}.
+* @ae{}::  @ae{}.
+* @oe{}::  @oe{}.
+* @AA{}::  @AA{}.
+* @AE{}::  @AE{}.
+* @OE{}::  @OE{}.
+* @l{}::  @l{}.
+* @o{}::  @o{}.
+* @L{}::  @L{}.
+* @O{}::  @O{}.
+* @H{a}::  @H{a}.
+* @u{a}::  @u{a}.
+* @v{a}::  @v{a}.
+* @udotaccent{a}::  @udotaccent{a} udotaccent.
+* @dotaccent{a}::  @dotaccent{a} dotaccent.
+* @ringaccent{a}::  @ringaccent{a} ringaccent.
+* @tieaccent{a}::  @tieaccent{a} tieaccent.
+* @ubaraccent{a}::  @ubaraccent{a} ubaraccent.
+* @dotless{i}::  @dotless{i} dotless i.
+* @dotless{j}::  @dotless{j} dotless j.
+* @comma{}::     @comma{} comma
address@hidden menu
address@hidden
address@hidden @aa{},,,rest
address@hidden @aa{}
address@hidden @ae{},,,rest
address@hidden @ae{}
address@hidden @oe{},,,rest
address@hidden @oe{}
address@hidden @AA{},,,rest
address@hidden @AA{}
address@hidden @AE{},,,rest
address@hidden @AE{}
address@hidden @OE{},,,rest
address@hidden @OE{}
address@hidden @l{},,,rest
address@hidden @l{}
address@hidden @o{},,,rest
address@hidden @o{}
address@hidden @L{},,,rest
address@hidden @L{}
address@hidden @O{},,,rest
address@hidden @O{}
address@hidden @H{a},,,rest
address@hidden @H{a}
address@hidden @u{a},,,rest
address@hidden @u{a}
address@hidden @v{a},,,rest
address@hidden @v{a}
address@hidden @udotaccent{a},,,rest
address@hidden @udotaccent{a}
+Test udotaccent.
address@hidden @dotaccent{a},,,rest
address@hidden @dotaccent{a}
+Test dotaccent.
address@hidden @ringaccent{a},,,rest
address@hidden @ringaccent{a}
address@hidden @tieaccent{a},,,rest
address@hidden @tieaccent{a}
address@hidden @ubaraccent{a},,,rest
address@hidden @ubaraccent{a}
address@hidden @dotless{i},,,rest
address@hidden @dotless{i}
address@hidden @dotless{j},,,rest
address@hidden @dotless{j}
+        
+        @dots{}
+
+       @enddots{}
+
+       @exclamdown{}
+
+       @questiondown{}
+
+       @pounds{}
+
+       @@- : @-
+       @@ followed by end of line: @
+       @@ followed by tab: @   
+       @@ followed by space @ 
+       @@*: @* and text followin @@*.
+
address@hidden @comma{},,,rest
address@hidden @comma{}
address@hidden
address@hidden

Index: encodings/res/texi_nodetest_latin1/nodetest_latin1.texi.first
===================================================================
RCS file: encodings/res/texi_nodetest_latin1/nodetest_latin1.texi.first
diff -N encodings/res/texi_nodetest_latin1/nodetest_latin1.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_nodetest_latin1/nodetest_latin1.texi.first       2 Aug 
2009 13:13:24 -0000       1.1
@@ -0,0 +1,339 @@
+\input texinfo @c -*-texinfo-*-
address@hidden nodetest_latin1.info
address@hidden latin1
address@hidden Top,Umlaut,(dir)
address@hidden
address@hidden
+* Umlaut::               Umlaut.
+
+
+Another Heading
+
+
+* acute accent::         acute accent.
+* grave accent::         grave accent.
+* circumflex accent::    circumflex accent.
+* tilde accent::         tilde accent.
+* cedilla accent::       cedilla accent.
+* rest::                 rest @@address@hidden@} etc.
address@hidden menu
address@hidden
address@hidden Umlaut,,Top,Top
address@hidden Umlaut
address@hidden
+* ä::    ä.
+* ë::    ë.
+* ï::    ï.
+* ö::    ö.
+* ü::    ü.
+* ÿ::    ÿ.
+* Ä::    Ä.
+* Ë::    Ë.
+* Ï::    Ï.
+* Ö::    Ö.
+* Ü::    Ü.
+* @ss{}::    @ss{}.
+* no section::  Node without sectioning command.
address@hidden menu
address@hidden
address@hidden ä,,,Umlaut
address@hidden ä
+ref to ç @ref{ç}.
address@hidden ë,,,Umlaut
address@hidden ë
address@hidden ï,,,Umlaut 
address@hidden ï
+
+before footnote @xref{footanchor}.
+
address@hidden@anchor{footanchor}}
+
+after footnote @xref{footanchor}.
+
address@hidden ö,,,Umlaut
address@hidden ö
+Ref to an anchor at the end of the doc 
+(@pxref{é-o, , there is an o-é could there be an @address@hidden).
address@hidden ü,,,Umlaut
address@hidden ü
+Another ref to an anchor (@pxref{x-spot, ,}).
address@hidden ÿ,,,Umlaut
address@hidden ÿ
+This is a ref to a node (@pxref{à, ,à}).
+
address@hidden Ä,,,Umlaut
address@hidden Ä
+
+Now a ref to a node without sectionning command, 
+no text (@pxref{no section, , }).
+With text (@pxref{no section, ,but a text }).
+
address@hidden Ë,,,Umlaut
address@hidden Ë
address@hidden Ï,,,Umlaut
address@hidden Ï
address@hidden Ö,,,Umlaut
address@hidden Ö
address@hidden Ü,,,Umlaut
address@hidden Ü
address@hidden @ss{},,,Umlaut
address@hidden @ss{}
address@hidden no section,,,Umlaut
+This is a node without sectioning command.
address@hidden
address@hidden acute accent,,Top,Top
address@hidden acute accent
address@hidden
+* @'a::    @'a.
+* é::    é.
+* @'i::    @'i.
+* @'o::    @'o.
+* @'u::    @'u.
+* @'y::    @'y.
+* @'A::    @'A.
+* @'E::    @'E.
+* @'I::    @'I.
+* @'O::    @'O.
+* @'U::    @'U.
+* @'Y::    @'Y.
address@hidden menu
address@hidden
address@hidden @'a,,,acute accent
address@hidden @'a
+With brace @'{a}. Testing ' " ` ^.
address@hidden é,,,acute accent
address@hidden é
address@hidden @'i,,,acute accent
address@hidden @'i
address@hidden @'o,,,acute accent
address@hidden @'o
address@hidden @'u,,,acute accent
address@hidden @'u
address@hidden @'y,,,acute accent
address@hidden @'y
address@hidden @'A,,,acute accent
address@hidden @'A
address@hidden @'E,,,acute accent
address@hidden @'E
address@hidden @'I,,,acute accent
address@hidden @'I
address@hidden @'O,,,acute accent
address@hidden @'O
address@hidden @'U,,,acute accent
address@hidden @'U
address@hidden @'Y,,,acute accent
address@hidden @'Y
+This is a ref to ü (@pxref{ü, ,ü}).
+Another one, with node only (@pxref{ü, ,}).
+
+
address@hidden
address@hidden grave accent,,Top,Top
address@hidden grave accent
address@hidden
+* à::    à.
+* è::    è.
+* @`i::    @`i.
+* with brace @`{i}::    @`{i}.
+* with dotless @address@hidden::   @address@hidden
+* @`o::    @`o.
+* ù::    ù.
+* @`A::    @`A.
+* @`E::    @`E.
+* @`I::    @`I.
+* @`O::    @`O.
+* @`U::    @`U.
address@hidden menu
address@hidden
address@hidden à,,,grave accent
address@hidden à
address@hidden è,,,grave accent
address@hidden è
address@hidden @`i,,,grave accent
address@hidden @`i
address@hidden with brace @`{i},,,grave accent
address@hidden @`{i}
address@hidden with dotless @address@hidden,,,grave accent
address@hidden @address@hidden
address@hidden @`o,,,grave accent
address@hidden @`o
address@hidden ù,,,grave accent
address@hidden ù
address@hidden @`A,,,grave accent
address@hidden @`A
address@hidden @`E,,,grave accent
address@hidden @`E
address@hidden @`I,,,grave accent
address@hidden @`I
address@hidden @`O,,,grave accent
address@hidden @`O
address@hidden @`U,,,grave accent
address@hidden @`U
address@hidden
address@hidden circumflex accent,,Top,Top
address@hidden circumflex accent
address@hidden
+* â::    â.
+* ê::    ê.
+* î::    î.
+* ô::    ô.
+* û::    û.
+* Â::    Â.
+* Ê::    Ê.
+* Î::    Î.
+* Ô::    Ô.
+* Û::    Û.
address@hidden menu
address@hidden
address@hidden â,,,circumflex accent
address@hidden â
address@hidden ê,,,circumflex accent
address@hidden ê
address@hidden î,,,circumflex accent
address@hidden î
address@hidden ô,,,circumflex accent
address@hidden ô
address@hidden û,,,circumflex accent
address@hidden û
address@hidden Â,,,circumflex accent
address@hidden Â
address@hidden Ê,,,circumflex accent
address@hidden Ê
address@hidden Î,,,circumflex accent
address@hidden Î
address@hidden Ô,,,circumflex accent
address@hidden Ô
address@hidden Û,,,circumflex accent
address@hidden Û
address@hidden
address@hidden tilde accent,,Top,Top
address@hidden tilde accent
address@hidden
+* @~a::    @~a.
+* @~n::    @~n.
+* @~o::    @~o.
+* @~A::    @~A.
+* @~O::    @~O.
address@hidden menu
address@hidden
address@hidden @~a,,,tilde accent
address@hidden @~a
address@hidden @~n,,,tilde accent
address@hidden @~n
address@hidden @~o,,,tilde accent
address@hidden @~o
address@hidden @~A,,,tilde accent
address@hidden @~A
address@hidden @~O,,,tilde accent
address@hidden @~O
+This marks the @anchor{x-spot}spot.
+A second one with accented char @anchor{é-o}.
address@hidden
address@hidden cedilla accent,,Top,Top
address@hidden cedilla accent
address@hidden
+* ç::    ç.
+* @,{C}::    @,{C}.
address@hidden menu
address@hidden
address@hidden ç,,,cedilla accent
address@hidden ç
address@hidden @,{C},,,cedilla accent
address@hidden @,{C}
address@hidden
address@hidden rest,,Top,Top
address@hidden rest
address@hidden
+* @aa{}::  @aa{}.
+* @ae{}::  @ae{}.
+* @oe{}::  @oe{}.
+* @AA{}::  @AA{}.
+* @AE{}::  @AE{}.
+* @OE{}::  @OE{}.
+* @l{}::  @l{}.
+* @o{}::  @o{}.
+* @L{}::  @L{}.
+* @O{}::  @O{}.
+* @H{a}::  @H{a}.
+* @u{a}::  @u{a}.
+* @v{a}::  @v{a}.
+* @udotaccent{a}::  @udotaccent{a} udotaccent.
+* @dotaccent{a}::  @dotaccent{a} dotaccent.
+* @ringaccent{a}::  @ringaccent{a} ringaccent.
+* @tieaccent{a}::  @tieaccent{a} tieaccent.
+* @ubaraccent{a}::  @ubaraccent{a} ubaraccent.
+* @dotless{i}::  @dotless{i} dotless i.
+* @dotless{j}::  @dotless{j} dotless j.
+* @comma{}::     @comma{} comma
address@hidden menu
address@hidden
address@hidden @aa{},,,rest
address@hidden @aa{}
address@hidden @ae{},,,rest
address@hidden @ae{}
address@hidden @oe{},,,rest
address@hidden @oe{}
address@hidden @AA{},,,rest
address@hidden @AA{}
address@hidden @AE{},,,rest
address@hidden @AE{}
address@hidden @OE{},,,rest
address@hidden @OE{}
address@hidden @l{},,,rest
address@hidden @l{}
address@hidden @o{},,,rest
address@hidden @o{}
address@hidden @L{},,,rest
address@hidden @L{}
address@hidden @O{},,,rest
address@hidden @O{}
address@hidden @H{a},,,rest
address@hidden @H{a}
address@hidden @u{a},,,rest
address@hidden @u{a}
address@hidden @v{a},,,rest
address@hidden @v{a}
address@hidden @udotaccent{a},,,rest
address@hidden @udotaccent{a}
+Test udotaccent.
address@hidden @dotaccent{a},,,rest
address@hidden @dotaccent{a}
+Test dotaccent.
address@hidden @ringaccent{a},,,rest
address@hidden @ringaccent{a}
address@hidden @tieaccent{a},,,rest
address@hidden @tieaccent{a}
address@hidden @ubaraccent{a},,,rest
address@hidden @ubaraccent{a}
address@hidden @dotless{i},,,rest
address@hidden @dotless{i}
address@hidden @dotless{j},,,rest
address@hidden @dotless{j}
+        
+        @dots{}
+
+       @enddots{}
+
+       @exclamdown{}
+
+       @questiondown{}
+
+       @pounds{}
+
+       @@- : @-
+       @@ followed by end of line: @
+       @@ followed by tab: @   
+       @@ followed by space @ 
+       @@*: @* and text followin @@*.
+
address@hidden @comma{},,,rest
address@hidden @comma{}
+
+An index entry with accented letter.
address@hidden index entry with accented letter: à @`a
address@hidden index entry with accented letter: â @`a
+
address@hidden cp
+
address@hidden
address@hidden

Index: encodings/res/texi_nodetest_utf8/nodetest_utf8.texi.first
===================================================================
RCS file: encodings/res/texi_nodetest_utf8/nodetest_utf8.texi.first
diff -N encodings/res/texi_nodetest_utf8/nodetest_utf8.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_nodetest_utf8/nodetest_utf8.texi.first   2 Aug 2009 
13:13:24 -0000       1.1
@@ -0,0 +1,339 @@
+\input texinfo @c -*-texinfo-*-
address@hidden nodetest_utf8.info
address@hidden utf8
address@hidden Top,Umlaut,(dir)
address@hidden
address@hidden
+* Umlaut::               Umlaut.
+
+
+Another Heading
+
+
+* acute accent::         acute accent.
+* grave accent::         grave accent.
+* circumflex accent::    circumflex accent.
+* tilde accent::         tilde accent.
+* cedilla accent::       cedilla accent.
+* rest::                 rest @@address@hidden@} etc.
address@hidden menu
address@hidden
address@hidden Umlaut,,Top,Top
address@hidden Umlaut
address@hidden
+* ä::    ä.
+* ë::    ë.
+* ï::    ï.
+* ö::    ö.
+* ü::    ü.
+* ÿ::    ÿ.
+* Ä::    Ä.
+* Ë::    Ë.
+* Ï::    Ï.
+* Ö::    Ö.
+* Ü::    Ü.
+* @ss{}::    @ss{}.
+* no section::  Node without sectioning command.
address@hidden menu
address@hidden
address@hidden ä,,,Umlaut
address@hidden ä
+ref to ç @ref{ç}.
address@hidden ë,,,Umlaut
address@hidden ë
address@hidden ï,,,Umlaut 
address@hidden ï
+
+before footnote @xref{footanchor}.
+
address@hidden@anchor{footanchor}}
+
+after footnote @xref{footanchor}.
+
address@hidden ö,,,Umlaut
address@hidden ö
+Ref to an anchor at the end of the doc 
+(@pxref{é-o, , there is an o-é could there be an @address@hidden).
address@hidden ü,,,Umlaut
address@hidden ü
+Another ref to an anchor (@pxref{x-spot, ,}).
address@hidden ÿ,,,Umlaut
address@hidden ÿ
+This is a ref to a node (@pxref{à, ,à}).
+
address@hidden Ä,,,Umlaut
address@hidden Ä
+
+Now a ref to a node without sectionning command, 
+no text (@pxref{no section, , }).
+With text (@pxref{no section, ,but a text }).
+
address@hidden Ë,,,Umlaut
address@hidden Ë
address@hidden Ï,,,Umlaut
address@hidden Ï
address@hidden Ö,,,Umlaut
address@hidden Ö
address@hidden Ü,,,Umlaut
address@hidden Ü
address@hidden @ss{},,,Umlaut
address@hidden @ss{}
address@hidden no section,,,Umlaut
+This is a node without sectioning command.
address@hidden
address@hidden acute accent,,Top,Top
address@hidden acute accent
address@hidden
+* @'a::    @'a.
+* é::    é.
+* @'i::    @'i.
+* @'o::    @'o.
+* @'u::    @'u.
+* @'y::    @'y.
+* @'A::    @'A.
+* @'E::    @'E.
+* @'I::    @'I.
+* @'O::    @'O.
+* @'U::    @'U.
+* @'Y::    @'Y.
address@hidden menu
address@hidden
address@hidden @'a,,,acute accent
address@hidden @'a
+With brace @'{a}. Testing ' " ` ^.
address@hidden é,,,acute accent
address@hidden é
address@hidden @'i,,,acute accent
address@hidden @'i
address@hidden @'o,,,acute accent
address@hidden @'o
address@hidden @'u,,,acute accent
address@hidden @'u
address@hidden @'y,,,acute accent
address@hidden @'y
address@hidden @'A,,,acute accent
address@hidden @'A
address@hidden @'E,,,acute accent
address@hidden @'E
address@hidden @'I,,,acute accent
address@hidden @'I
address@hidden @'O,,,acute accent
address@hidden @'O
address@hidden @'U,,,acute accent
address@hidden @'U
address@hidden @'Y,,,acute accent
address@hidden @'Y
+This is a ref to ü (@pxref{ü, ,ü}).
+Another one, with node only (@pxref{ü, ,}).
+
+
address@hidden
address@hidden grave accent,,Top,Top
address@hidden grave accent
address@hidden
+* à::    à.
+* è::    è.
+* @`i::    @`i.
+* with brace @`{i}::    @`{i}.
+* with dotless @address@hidden::   @address@hidden
+* @`o::    @`o.
+* ù::    ù.
+* @`A::    @`A.
+* @`E::    @`E.
+* @`I::    @`I.
+* @`O::    @`O.
+* @`U::    @`U.
address@hidden menu
address@hidden
address@hidden à,,,grave accent
address@hidden à
address@hidden è,,,grave accent
address@hidden è
address@hidden @`i,,,grave accent
address@hidden @`i
address@hidden with brace @`{i},,,grave accent
address@hidden @`{i}
address@hidden with dotless @address@hidden,,,grave accent
address@hidden @address@hidden
address@hidden @`o,,,grave accent
address@hidden @`o
address@hidden ù,,,grave accent
address@hidden ù
address@hidden @`A,,,grave accent
address@hidden @`A
address@hidden @`E,,,grave accent
address@hidden @`E
address@hidden @`I,,,grave accent
address@hidden @`I
address@hidden @`O,,,grave accent
address@hidden @`O
address@hidden @`U,,,grave accent
address@hidden @`U
address@hidden
address@hidden circumflex accent,,Top,Top
address@hidden circumflex accent
address@hidden
+* â::    â.
+* ê::    ê.
+* î::    î.
+* ô::    ô.
+* û::    û.
+* Â::    Â.
+* Ê::    Ê.
+* Î::    Î.
+* Ô::    Ô.
+* Û::    Û.
address@hidden menu
address@hidden
address@hidden â,,,circumflex accent
address@hidden â
address@hidden ê,,,circumflex accent
address@hidden ê
address@hidden î,,,circumflex accent
address@hidden î
address@hidden ô,,,circumflex accent
address@hidden ô
address@hidden û,,,circumflex accent
address@hidden û
address@hidden Â,,,circumflex accent
address@hidden Â
address@hidden Ê,,,circumflex accent
address@hidden Ê
address@hidden Î,,,circumflex accent
address@hidden Î
address@hidden Ô,,,circumflex accent
address@hidden Ô
address@hidden Û,,,circumflex accent
address@hidden Û
address@hidden
address@hidden tilde accent,,Top,Top
address@hidden tilde accent
address@hidden
+* @~a::    @~a.
+* @~n::    @~n.
+* @~o::    @~o.
+* @~A::    @~A.
+* @~O::    @~O.
address@hidden menu
address@hidden
address@hidden @~a,,,tilde accent
address@hidden @~a
address@hidden @~n,,,tilde accent
address@hidden @~n
address@hidden @~o,,,tilde accent
address@hidden @~o
address@hidden @~A,,,tilde accent
address@hidden @~A
address@hidden @~O,,,tilde accent
address@hidden @~O
+This marks the @anchor{x-spot}spot.
+A second one with accented char @anchor{é-o}.
address@hidden
address@hidden cedilla accent,,Top,Top
address@hidden cedilla accent
address@hidden
+* ç::    ç.
+* @,{C}::    @,{C}.
address@hidden menu
address@hidden
address@hidden ç,,,cedilla accent
address@hidden ç
address@hidden @,{C},,,cedilla accent
address@hidden @,{C}
address@hidden
address@hidden rest,,Top,Top
address@hidden rest
address@hidden
+* @aa{}::  @aa{}.
+* @ae{}::  @ae{}.
+* @oe{}::  @oe{}.
+* @AA{}::  @AA{}.
+* @AE{}::  @AE{}.
+* @OE{}::  @OE{}.
+* @l{}::  @l{}.
+* @o{}::  @o{}.
+* @L{}::  @L{}.
+* @O{}::  @O{}.
+* @H{a}::  @H{a}.
+* @u{a}::  @u{a}.
+* @v{a}::  @v{a}.
+* @udotaccent{a}::  @udotaccent{a} udotaccent.
+* @dotaccent{a}::  @dotaccent{a} dotaccent.
+* @ringaccent{a}::  @ringaccent{a} ringaccent.
+* @tieaccent{a}::  @tieaccent{a} tieaccent.
+* @ubaraccent{a}::  @ubaraccent{a} ubaraccent.
+* @dotless{i}::  @dotless{i} dotless i.
+* @dotless{j}::  @dotless{j} dotless j.
+* @comma{}::     @comma{} comma
address@hidden menu
address@hidden
address@hidden @aa{},,,rest
address@hidden @aa{}
address@hidden @ae{},,,rest
address@hidden @ae{}
address@hidden @oe{},,,rest
address@hidden @oe{}
address@hidden @AA{},,,rest
address@hidden @AA{}
address@hidden @AE{},,,rest
address@hidden @AE{}
address@hidden @OE{},,,rest
address@hidden @OE{}
address@hidden @l{},,,rest
address@hidden @l{}
address@hidden @o{},,,rest
address@hidden @o{}
address@hidden @L{},,,rest
address@hidden @L{}
address@hidden @O{},,,rest
address@hidden @O{}
address@hidden @H{a},,,rest
address@hidden @H{a}
address@hidden @u{a},,,rest
address@hidden @u{a}
address@hidden @v{a},,,rest
address@hidden @v{a}
address@hidden @udotaccent{a},,,rest
address@hidden @udotaccent{a}
+Test udotaccent.
address@hidden @dotaccent{a},,,rest
address@hidden @dotaccent{a}
+Test dotaccent.
address@hidden @ringaccent{a},,,rest
address@hidden @ringaccent{a}
address@hidden @tieaccent{a},,,rest
address@hidden @tieaccent{a}
address@hidden @ubaraccent{a},,,rest
address@hidden @ubaraccent{a}
address@hidden @dotless{i},,,rest
address@hidden @dotless{i}
address@hidden @dotless{j},,,rest
address@hidden @dotless{j}
+        
+        @dots{}
+
+       @enddots{}
+
+       @exclamdown{}
+
+       @questiondown{}
+
+       @pounds{}
+
+       @@- : @-
+       @@ followed by end of line: @
+       @@ followed by tab: @   
+       @@ followed by space @ 
+       @@*: @* and text followin @@*.
+
address@hidden @comma{},,,rest
address@hidden @comma{}
+
+An index entry with accented letter.
address@hidden index entry with accented letter: à @`a
address@hidden index entry with accented letter: â @`a
+
address@hidden cp
+
address@hidden
address@hidden

Index: encodings/res/texi_ogolat2/ogolat2.texi.first
===================================================================
RCS file: encodings/res/texi_ogolat2/ogolat2.texi.first
diff -N encodings/res/texi_ogolat2/ogolat2.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_ogolat2/ogolat2.texi.first       2 Aug 2009 13:13:24 
-0000       1.1
@@ -0,0 +1,28 @@
+\input texinfo
address@hidden ogonek.info
+
address@hidden ISO-8859-2
+
address@hidden Top
address@hidden OgoL2
+
+Latin 2 (precomposed).
address@hidden 0xa1=0241
+Aogonek: ¡
address@hidden 0xb1=0261
+aogonek: ±
address@hidden 0xb2=0262
+standalone ogonek: ²
address@hidden 0xca=0312
+Eogonek: Ê
address@hidden 0xea=0352
+eogonek: ê
+
address@hidden Accented.
address@hidden @ogonek{a}
address@hidden @ogonek{e}
address@hidden @ogonek{i}
address@hidden @ogonek{o}
address@hidden @ogonek{u}
+
address@hidden

Index: encodings/res/texi_ogoutf/ogoutf.texi.first
===================================================================
RCS file: encodings/res/texi_ogoutf/ogoutf.texi.first
diff -N encodings/res/texi_ogoutf/ogoutf.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_ogoutf/ogoutf.texi.first 2 Aug 2009 13:13:24 -0000       
1.1
@@ -0,0 +1,20 @@
+\input texinfo
address@hidden ogonek.info
address@hidden UTF-8
address@hidden Ogonek
+
+
address@hidden Top
address@hidden Top AE @address@hidden
+
address@hidden AE ĄĘ ae ąę
+
+Zażółć gęślą jaźń!
+
+Zazolc gesla jazn!
+
address@hidden @address@hidden
address@hidden @address@hidden
address@hidden cp
+
address@hidden

Index: encodings/res/texi_umlaut/umlaut.texi.first
===================================================================
RCS file: encodings/res/texi_umlaut/umlaut.texi.first
diff -N encodings/res/texi_umlaut/umlaut.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_umlaut/umlaut.texi.first 2 Aug 2009 13:13:24 -0000       
1.1
@@ -0,0 +1,124 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden
address@hidden
address@hidden umlaut.info
address@hidden de
address@hidden @documentlanguage zv
address@hidden Test for Umlaute, accent etc.
address@hidden on
address@hidden separate
address@hidden
address@hidden This is what you get
+Copright Sign: @copyright{} @*
+Pound Sign: @pounds{} @*
+Minus Zeichen: @minus{} @*
+TeX Logo: @address@hidden
address@hidden@}: @address@hidden
address@hidden@}:@address@hidden
+Vertical Bar:@*
+|
+
+valid umlaut
+@"a @"e @"i @"o @"u @"y
+@"A @"E @"I @"O @"U
+
+
+Non valid umlaut:@*
+@"X @"x @"Q @"Y
+
+
+Special characters in HTML:@*
+ < > &
+
+
+acute accent:@*
+@'a @'e @'i @'o @'u @'y
+@'A @'E @'I @'O @'U @'Y
+
+invalid acute accent:@*
+@'z @'q @'r
+@'Z @'Q @'R
+
+valid Cedilla:@*
+@,{c} @,{C}
+
+
+non valid Cedilla:@*
+@,{H} @,{h}
+
+macron:@*
address@hidden
+
+I don't know any invalid macron:@*
+
+
+valid circumflex:@*
address@hidden @^e @^i @^o @^u
address@hidden @^E @^I @^O @^U 
+
+
+invalid circumflex:@*
address@hidden @^r @^t @^k
address@hidden @^R @^T @^K
+
+
+grave accent:@*
address@hidden @`e @`i @`o @`u
address@hidden @`E @`I @`O @`U
+
+
+invalid grave accent:@*
address@hidden @`m @`p
+
+
+
+tilde accent:@*
address@hidden @~n @~o
address@hidden @~O
+
+invalid tilde accent:@*
address@hidden @~s
+
+
+
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden @AA{}
address@hidden @AE{}
address@hidden
address@hidden
address@hidden @L{}
address@hidden @O{}
address@hidden @OE{}
address@hidden
+
+What about @@url and @@uref
+
address@hidden://www.fido.de/~kama}
+
+Referenz:@*
address@hidden://www.fido.de/~kama}
+
+Referenz mit Display Text:@*
address@hidden://www.fido.de/~kama, Second Argument of uref}
+
+Referenz mit Display Text and special:@*
address@hidden://www.fido.de/~kama, Second Argument of uref, Third Argument of 
uref}
+
+Email:@*
address@hidden@@hippo.fido.de}
+
+Email mit display:@*
address@hidden@@hippo.fido.de, Anzeige der email Adrese}
address@hidden I don't need any contents.
address@hidden
address@hidden

Index: encodings/res/texi_unknown_language/unknown_language.texi.first
===================================================================
RCS file: encodings/res/texi_unknown_language/unknown_language.texi.first
diff -N encodings/res/texi_unknown_language/unknown_language.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_unknown_language/unknown_language.texi.first     2 Aug 
2009 13:13:24 -0000       1.1
@@ -0,0 +1,16 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden unknown_language.info
+
address@hidden unknown
+
address@hidden Top
address@hidden unknkown language
+
+Unknown language. @xref{Top}.
+
address@hidden another_UNKNOWN
+
+Another unknown language. @xref{Top}.
+
address@hidden

Index: encodings/res/texi_weird_accents/weird_accents.texi.first
===================================================================
RCS file: encodings/res/texi_weird_accents/weird_accents.texi.first
diff -N encodings/res/texi_weird_accents/weird_accents.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res/texi_weird_accents/weird_accents.texi.first   2 Aug 2009 
13:13:24 -0000       1.1
@@ -0,0 +1,19 @@
+\input texinfo
address@hidden accentenc.info
address@hidden Complex accent encoding test
address@hidden ISO-8859-1
+
address@hidden Top
address@hidden Complex accent encoding test top
+
address@hidden@address@hidden
+
address@hidden@,address@hidden
+
address@hidden@ubaraccent{a}}
+
address@hidden@address@hidden
+
address@hidden@code{@'address@hidden
+
address@hidden

Index: encodings/res_all/texi_accent/accent.texi.first
===================================================================
RCS file: encodings/res_all/texi_accent/accent.texi.first
diff -N encodings/res_all/texi_accent/accent.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_accent/accent.texi.first     2 Aug 2009 13:13:25 
-0000       1.1
@@ -0,0 +1,82 @@
+\input texinfo
address@hidden accent.info
address@hidden Accent test
+
address@hidden Top
address@hidden Accent test top
+
address@hidden args with braces, without braces/following whitespace
+
+should be e`: @`{e} @`e
+
+should be e': @'{e} @'e
+
+should be e^: @^{e} @^e
+
+should be u": @"{u} @"u
+
+should be i`: @`{i} @`i
+
+should be i': @'{i} @'i
+
+should be i^: @^{i} @^i
+
+should be u": @"{u} @"u
+
+should be c,: @,{c} @,c
+
+should be n~: @~{n} @~n
+
+should be e=: @={e} @=e
+
+should be address@hidden'}': @H{e} @H e
+
+should be e.: @dotaccent{e} @dotaccent e
+
+should be e*: @ringaccent{e} @ringaccent e
+
+should be ee[: @tieaccent{ee}
+
+should be e(: @u{e} @u e
+
+should be e_: @ubaraccent{e} @ubaraccent e
+
+should be .e: @udotaccent{e} @udotaccent e
+
+should be e<: @v{e} @v e
+
+upside down: @questiondown{} @exclamdown{}
+
+A-with-circle: @aa{},@AA{}
+
+AE, OE ligatures: @ae{} @AE{} @oe{} @OE{}
+
+dotless i, j: @dotless{i} @dotless{j}
+
+Polish suppressed-L: @l{} @L{}
+
+O-with-slash: @o{} @O{}
+
+es-zet or sharp S: @ss{}          
+
+pounds sterling: @pounds{}      
+
address@hidden arg is command -- @dotless{i} is special-cased for HTML
+should be dotless i`: @address@hidden
+
+should be dotless i': @'address@hidden
+
+should be dotless i^: @address@hidden
+
+should be dotless i": @"address@hidden
+
address@hidden arg is command -- @dotless{j}
+should be dotless j`: @address@hidden
+
+should be dotless j': @'address@hidden
+
+should be dotless j^: @address@hidden
+
+should be dotless j": @"address@hidden
+
address@hidden

Index: encodings/res_all/texi_accentenc/accentenc.texi.first
===================================================================
RCS file: encodings/res_all/texi_accentenc/accentenc.texi.first
diff -N encodings/res_all/texi_accentenc/accentenc.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_accentenc/accentenc.texi.first       2 Aug 2009 
13:13:26 -0000       1.1
@@ -0,0 +1,83 @@
+\input texinfo
address@hidden accentenc.info
address@hidden Accent encoding test
address@hidden ISO-8859-1
+
address@hidden Top
address@hidden Accent encoding test top
+
address@hidden args with braces, without braces/following whitespace
+
+should be e`: @`{e} @`e
+
+should be e': @'{e} @'e
+
+should be e^: @^{e} @^e
+
+should be u": @"{u} @"u
+
+should be i`: @`{i} @`i
+
+should be i': @'{i} @'i
+
+should be i^: @^{i} @^i
+
+should be u": @"{u} @"u
+
+should be c,: @,{c} @,c
+
+should be n~: @~{n} @~n
+
+should be e=: @={e} @=e
+
+should be address@hidden'}': @H{e} @H e
+
+should be e.: @dotaccent{e} @dotaccent e
+
+should be e*: @ringaccent{e} @ringaccent e
+
+should be ee[: @tieaccent{ee}
+
+should be e(: @u{e} @u e
+
+should be e_: @ubaraccent{e} @ubaraccent e
+
+should be .e: @udotaccent{e} @udotaccent e
+
+should be e<: @v{e} @v e
+
+upside down: @questiondown{} @exclamdown{}
+
+A-with-circle: @aa{},@AA{}
+
+AE, OE ligatures: @ae{} @AE{} @oe{} @OE{}
+
+dotless i, j: @dotless{i} @dotless{j}
+
+Polish suppressed-L: @l{} @L{}
+
+O-with-slash: @o{} @O{}
+
+es-zet or sharp S: @ss{}          
+
+pounds sterling: @pounds{}      
+
address@hidden arg is command -- @dotless{i} is special-cased for HTML
+should be dotless i`: @address@hidden
+
+should be dotless i': @'address@hidden
+
+should be dotless i^: @address@hidden
+
+should be dotless i": @"address@hidden
+
address@hidden arg is command -- @dotless{j}
+should be dotless j`: @address@hidden
+
+should be dotless j': @'address@hidden
+
+should be dotless j^: @address@hidden
+
+should be dotless j": @"address@hidden
+
address@hidden

Index: 
encodings/res_all/texi_documentlanguage_set/documentlanguage_set.texi.first
===================================================================
RCS file: 
encodings/res_all/texi_documentlanguage_set/documentlanguage_set.texi.first
diff -N 
encodings/res_all/texi_documentlanguage_set/documentlanguage_set.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_documentlanguage_set/documentlanguage_set.texi.first 
2 Aug 2009 13:13:26 -0000       1.1
@@ -0,0 +1,12 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden documentlanguage_set.info
address@hidden pt
address@hidden Test @@documentlanguage set
+
address@hidden Top
address@hidden @@documentlanguage set
+
+Text.
+
address@hidden

Index: encodings/res_all/texi_multi_lang/multi_lang.texi.first
===================================================================
RCS file: encodings/res_all/texi_multi_lang/multi_lang.texi.first
diff -N encodings/res_all/texi_multi_lang/multi_lang.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_multi_lang/multi_lang.texi.first     2 Aug 2009 
13:13:26 -0000       1.1
@@ -0,0 +1,52 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden multi_lang.info
+
address@hidden fr_NOWHERE
+
address@hidden Top
address@hidden Multi language file
+
+This is in french
+
address@hidden
+* chapter fr_NOWHERE::
+* chapter ja::
+* chapter en::
+* chapter pt_BR::
address@hidden menu
+
address@hidden chapter fr_NOWHERE
address@hidden Fr_NOWHERE
+
+In french. @xref{Top}.
+
address@hidden
+* sub fr_NOWHERE::
address@hidden menu
+
address@hidden sub fr_NOWHERE
address@hidden fr_NOWHERE section
+
+In fr section.
+
address@hidden ja
address@hidden chapter ja
address@hidden ja
+
+In japanese. @xref{Top}.
+
address@hidden en
address@hidden chapter en
address@hidden en
+
+In english. @xref{Top}.
+
address@hidden pt_BR
address@hidden chapter pt_BR
address@hidden pt_bR
+
+In brazilian. @xref{Top}.
+
+
address@hidden

Index: encodings/res_all/texi_nodetest/nodetest.texi.first
===================================================================
RCS file: encodings/res_all/texi_nodetest/nodetest.texi.first
diff -N encodings/res_all/texi_nodetest/nodetest.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_nodetest/nodetest.texi.first 2 Aug 2009 13:13:27 
-0000       1.1
@@ -0,0 +1,355 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden It is not possible to test for @,{c} in 
address@hidden nodename cause makeinfo can not
address@hidden handle cedilla's in node names. A cedilla
address@hidden has a comma which was recognized a as
address@hidden delimiter between node parts (next,previous etc.)
address@hidden nodetest.info
address@hidden Top,Umlaut,(dir)
address@hidden
address@hidden
+* Umlaut::               Umlaut.
+
+
+Another Heading
+
+
+* acute accent::         acute accent.
+* grave accent::         grave accent.
+* circumflex accent::    circumflex accent.
+* tilde accent::         tilde accent.
+* cedilla accent::       cedilla accent.
+* rest::                 rest @@address@hidden@} etc.
address@hidden menu
address@hidden
address@hidden Umlaut,,Top,Top
address@hidden Umlaut
address@hidden
+* @"a::    @"a.
+* @"e::    @"e.
+* @"i::    @"i.
+* with brace @"{i}::    @"{i}.
+* with dotless @"address@hidden::   @"address@hidden
+* @"o::    @"o.
+* @"u::    @"u.
+* @"y::    @"y.
+* @"A::    @"A.
+* @"E::    @"E.
+* @"I::    @"I.
+* @"O::    @"O.
+* @"U::    @"U.
+* @ss{}::    @ss{}.
+* no section::  Node without sectioning command.
address@hidden menu
address@hidden
address@hidden @"a,,,Umlaut
address@hidden @"a
+ref to @,{c} @ref{@,{c}}.
address@hidden @"e,,,Umlaut
address@hidden @"e
address@hidden @"i,,,Umlaut 
address@hidden @"i
address@hidden with brace @"{i},,,Umlaut
address@hidden With brace @"{i}
address@hidden with dotless @"address@hidden,,,Umlaut
address@hidden With dotless @"address@hidden
+
+before footnote @xref{footanchor}.
+
address@hidden@anchor{footanchor}}
+
+after footnote @xref{footanchor}.
+
address@hidden @"o,,,Umlaut
address@hidden @"o
+Ref to an anchor at the end of the doc 
+(@pxref{@'e-o, , there is an o-@'e could there be an @address@hidden).
address@hidden @"u,,,Umlaut
address@hidden @"u
+Another ref to an anchor (@pxref{x-spot, ,}).
address@hidden @"y,,,Umlaut
address@hidden @"y
+This is a ref to a node (@pxref{@'U, ,@'U}).
+
address@hidden @"A,,,Umlaut
address@hidden @"A
+
+Now a ref to a node without sectionning command, 
+no text (@pxref{no section, , }).
+With text (@pxref{no section, ,but a text }).
+
address@hidden @"E,,,Umlaut
address@hidden @"E
address@hidden @"I,,,Umlaut
address@hidden @"I
address@hidden @"O,,,Umlaut
address@hidden @"O
address@hidden @"U,,,Umlaut
address@hidden @"U
address@hidden @ss{},,,Umlaut
address@hidden @ss{}
address@hidden no section,,,Umlaut
+This is a node without sectioning command.
address@hidden
address@hidden acute accent,,Top,Top
address@hidden acute accent
address@hidden
+* @'a::    @'a.
+* @'e::    @'e.
+* @'i::    @'i.
+* @'o::    @'o.
+* @'u::    @'u.
+* @'y::    @'y.
+* @'A::    @'A.
+* @'E::    @'E.
+* @'I::    @'I.
+* @'O::    @'O.
+* @'U::    @'U.
+* @'Y::    @'Y.
address@hidden menu
address@hidden
address@hidden @'a,,,acute accent
address@hidden @'a
+With brace @'{a}. Testing ' " ` ^.
address@hidden @'e,,,acute accent
address@hidden @'e
address@hidden @'i,,,acute accent
address@hidden @'i
address@hidden @'o,,,acute accent
address@hidden @'o
address@hidden @'u,,,acute accent
address@hidden @'u
address@hidden @'y,,,acute accent
address@hidden @'y
address@hidden @'A,,,acute accent
address@hidden @'A
address@hidden @'E,,,acute accent
address@hidden @'E
address@hidden @'I,,,acute accent
address@hidden @'I
address@hidden @'O,,,acute accent
address@hidden @'O
address@hidden @'U,,,acute accent
address@hidden @'U
address@hidden @'Y,,,acute accent
address@hidden @'Y
+This is a ref to @"u (@pxref{@"u, ,@"u}).
+Another one, with node only (@pxref{@"u, ,}).
+
+
address@hidden
address@hidden grave accent,,Top,Top
address@hidden grave accent
address@hidden
+* @`a::    @`a.
+* @`e::    @`e.
+* @`i::    @`i.
+* with brace @`{i}::    @`{i}.
+* with dotless @address@hidden::   @address@hidden
+* @`o::    @`o.
+* @`u::    @`u.
+* @`A::    @`A.
+* @`E::    @`E.
+* @`I::    @`I.
+* @`O::    @`O.
+* @`U::    @`U.
address@hidden menu
address@hidden
address@hidden @`a,,,grave accent
address@hidden @`a
address@hidden @`e,,,grave accent
address@hidden @`e
address@hidden @`i,,,grave accent
address@hidden @`i
address@hidden with brace @`{i},,,grave accent
address@hidden @`{i}
address@hidden with dotless @address@hidden,,,grave accent
address@hidden @address@hidden
address@hidden @`o,,,grave accent
address@hidden @`o
address@hidden @`u,,,grave accent
address@hidden @`u
address@hidden @`A,,,grave accent
address@hidden @`A
address@hidden @`E,,,grave accent
address@hidden @`E
address@hidden @`I,,,grave accent
address@hidden @`I
address@hidden @`O,,,grave accent
address@hidden @`O
address@hidden @`U,,,grave accent
address@hidden @`U
address@hidden
address@hidden circumflex accent,,Top,Top
address@hidden circumflex accent
address@hidden
+* @^a::    @^a.
+* @^e::    @^e.
+* @^i::    @^i.
+* with brace @^{i}::    @^{i}.
+* with dotless @address@hidden::   @address@hidden
+* @^o::    @^o.
+* @^u::    @^u.
+* @^A::    @^A.
+* @^E::    @^E.
+* @^I::    @^I.
+* @^O::    @^O.
+* @^U::    @^U.
address@hidden menu
address@hidden
address@hidden @^a,,,circumflex accent
address@hidden @^a
address@hidden @^e,,,circumflex accent
address@hidden @^e
address@hidden @^i,,,circumflex accent
address@hidden @^i
address@hidden with brace @^{i},,,circumflex accent
address@hidden @^{i}
+Test @@address@hidden@}.
address@hidden with dotless @address@hidden,,,circumflex accent
address@hidden @address@hidden
+Test @@address@hidden@@address@hidden@address@hidden
address@hidden @^o,,,circumflex accent
address@hidden @^o
address@hidden @^u,,,circumflex accent
address@hidden @^u
address@hidden @^A,,,circumflex accent
address@hidden @^A
address@hidden @^E,,,circumflex accent
address@hidden @^E
address@hidden @^I,,,circumflex accent
address@hidden @^I
address@hidden @^O,,,circumflex accent
address@hidden @^O
address@hidden @^U,,,circumflex accent
address@hidden @^U
address@hidden
address@hidden tilde accent,,Top,Top
address@hidden tilde accent
address@hidden
+* @~a::    @~a.
+* @~n::    @~n.
+* @~o::    @~o.
+* @~A::    @~A.
+* @~O::    @~O.
address@hidden menu
address@hidden
address@hidden @~a,,,tilde accent
address@hidden @~a
address@hidden @~n,,,tilde accent
address@hidden @~n
address@hidden @~o,,,tilde accent
address@hidden @~o
address@hidden @~A,,,tilde accent
address@hidden @~A
address@hidden @~O,,,tilde accent
address@hidden @~O
+This marks the @anchor{x-spot}spot.
+A second one with accented char @anchor{@'e-o}.
address@hidden
address@hidden cedilla accent,,Top,Top
address@hidden cedilla accent
address@hidden
+* @,{c}::    @,{c}.
+* @,{C}::    @,{C}.
+* @,c no brace:: @,c no brace.
address@hidden menu
address@hidden
address@hidden @,{c},,,cedilla accent
address@hidden @,{c}
address@hidden @,{C},,,cedilla accent
address@hidden @,{C}
address@hidden @,c no brace,,,cedilla accent
address@hidden @,c no brace
address@hidden
+
address@hidden rest,,Top,Top
address@hidden rest
address@hidden
+* @aa{}::  @aa{}.
+* @ae{}::  @ae{}.
+* @oe{}::  @oe{}.
+* @AA{}::  @AA{}.
+* @AE{}::  @AE{}.
+* @OE{}::  @OE{}.
+* @l{}::  @l{}.
+* @o{}::  @o{}.
+* @L{}::  @L{}.
+* @O{}::  @O{}.
+* @H{a}::  @H{a}.
+* @u{a}::  @u{a}.
+* @v{a}::  @v{a}.
+* @udotaccent{a}::  @udotaccent{a} udotaccent.
+* @dotaccent{a}::  @dotaccent{a} dotaccent.
+* @ringaccent{a}::  @ringaccent{a} ringaccent.
+* @tieaccent{a}::  @tieaccent{a} tieaccent.
+* @ubaraccent{a}::  @ubaraccent{a} ubaraccent.
+* @dotless{i}::  @dotless{i} dotless i.
+* @dotless{j}::  @dotless{j} dotless j.
+* @comma{}::     @comma{} comma
address@hidden menu
address@hidden
address@hidden @aa{},,,rest
address@hidden @aa{}
address@hidden @ae{},,,rest
address@hidden @ae{}
address@hidden @oe{},,,rest
address@hidden @oe{}
address@hidden @AA{},,,rest
address@hidden @AA{}
address@hidden @AE{},,,rest
address@hidden @AE{}
address@hidden @OE{},,,rest
address@hidden @OE{}
address@hidden @l{},,,rest
address@hidden @l{}
address@hidden @o{},,,rest
address@hidden @o{}
address@hidden @L{},,,rest
address@hidden @L{}
address@hidden @O{},,,rest
address@hidden @O{}
address@hidden @H{a},,,rest
address@hidden @H{a}
address@hidden @u{a},,,rest
address@hidden @u{a}
address@hidden @v{a},,,rest
address@hidden @v{a}
address@hidden @udotaccent{a},,,rest
address@hidden @udotaccent{a}
+Test udotaccent.
address@hidden @dotaccent{a},,,rest
address@hidden @dotaccent{a}
+Test dotaccent.
address@hidden @ringaccent{a},,,rest
address@hidden @ringaccent{a}
address@hidden @tieaccent{a},,,rest
address@hidden @tieaccent{a}
address@hidden @ubaraccent{a},,,rest
address@hidden @ubaraccent{a}
address@hidden @dotless{i},,,rest
address@hidden @dotless{i}
address@hidden @dotless{j},,,rest
address@hidden @dotless{j}
+        
+        @dots{}
+
+       @enddots{}
+
+       @exclamdown{}
+
+       @questiondown{}
+
+       @pounds{}
+
+       @@- : @-
+       @@ followed by end of line: @
+       @@ followed by tab: @   
+       @@ followed by space @ 
+       @@*: @* and text followin @@*.
+
address@hidden @comma{},,,rest
address@hidden @comma{}
address@hidden
address@hidden

Index: encodings/res_all/texi_nodetest_latin1/nodetest_latin1.texi.first
===================================================================
RCS file: encodings/res_all/texi_nodetest_latin1/nodetest_latin1.texi.first
diff -N encodings/res_all/texi_nodetest_latin1/nodetest_latin1.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_nodetest_latin1/nodetest_latin1.texi.first   2 Aug 
2009 13:13:27 -0000       1.1
@@ -0,0 +1,339 @@
+\input texinfo @c -*-texinfo-*-
address@hidden nodetest_latin1.info
address@hidden latin1
address@hidden Top,Umlaut,(dir)
address@hidden
address@hidden
+* Umlaut::               Umlaut.
+
+
+Another Heading
+
+
+* acute accent::         acute accent.
+* grave accent::         grave accent.
+* circumflex accent::    circumflex accent.
+* tilde accent::         tilde accent.
+* cedilla accent::       cedilla accent.
+* rest::                 rest @@address@hidden@} etc.
address@hidden menu
address@hidden
address@hidden Umlaut,,Top,Top
address@hidden Umlaut
address@hidden
+* ä::    ä.
+* ë::    ë.
+* ï::    ï.
+* ö::    ö.
+* ü::    ü.
+* ÿ::    ÿ.
+* Ä::    Ä.
+* Ë::    Ë.
+* Ï::    Ï.
+* Ö::    Ö.
+* Ü::    Ü.
+* @ss{}::    @ss{}.
+* no section::  Node without sectioning command.
address@hidden menu
address@hidden
address@hidden ä,,,Umlaut
address@hidden ä
+ref to ç @ref{ç}.
address@hidden ë,,,Umlaut
address@hidden ë
address@hidden ï,,,Umlaut 
address@hidden ï
+
+before footnote @xref{footanchor}.
+
address@hidden@anchor{footanchor}}
+
+after footnote @xref{footanchor}.
+
address@hidden ö,,,Umlaut
address@hidden ö
+Ref to an anchor at the end of the doc 
+(@pxref{é-o, , there is an o-é could there be an @address@hidden).
address@hidden ü,,,Umlaut
address@hidden ü
+Another ref to an anchor (@pxref{x-spot, ,}).
address@hidden ÿ,,,Umlaut
address@hidden ÿ
+This is a ref to a node (@pxref{à, ,à}).
+
address@hidden Ä,,,Umlaut
address@hidden Ä
+
+Now a ref to a node without sectionning command, 
+no text (@pxref{no section, , }).
+With text (@pxref{no section, ,but a text }).
+
address@hidden Ë,,,Umlaut
address@hidden Ë
address@hidden Ï,,,Umlaut
address@hidden Ï
address@hidden Ö,,,Umlaut
address@hidden Ö
address@hidden Ü,,,Umlaut
address@hidden Ü
address@hidden @ss{},,,Umlaut
address@hidden @ss{}
address@hidden no section,,,Umlaut
+This is a node without sectioning command.
address@hidden
address@hidden acute accent,,Top,Top
address@hidden acute accent
address@hidden
+* @'a::    @'a.
+* é::    é.
+* @'i::    @'i.
+* @'o::    @'o.
+* @'u::    @'u.
+* @'y::    @'y.
+* @'A::    @'A.
+* @'E::    @'E.
+* @'I::    @'I.
+* @'O::    @'O.
+* @'U::    @'U.
+* @'Y::    @'Y.
address@hidden menu
address@hidden
address@hidden @'a,,,acute accent
address@hidden @'a
+With brace @'{a}. Testing ' " ` ^.
address@hidden é,,,acute accent
address@hidden é
address@hidden @'i,,,acute accent
address@hidden @'i
address@hidden @'o,,,acute accent
address@hidden @'o
address@hidden @'u,,,acute accent
address@hidden @'u
address@hidden @'y,,,acute accent
address@hidden @'y
address@hidden @'A,,,acute accent
address@hidden @'A
address@hidden @'E,,,acute accent
address@hidden @'E
address@hidden @'I,,,acute accent
address@hidden @'I
address@hidden @'O,,,acute accent
address@hidden @'O
address@hidden @'U,,,acute accent
address@hidden @'U
address@hidden @'Y,,,acute accent
address@hidden @'Y
+This is a ref to ü (@pxref{ü, ,ü}).
+Another one, with node only (@pxref{ü, ,}).
+
+
address@hidden
address@hidden grave accent,,Top,Top
address@hidden grave accent
address@hidden
+* à::    à.
+* è::    è.
+* @`i::    @`i.
+* with brace @`{i}::    @`{i}.
+* with dotless @address@hidden::   @address@hidden
+* @`o::    @`o.
+* ù::    ù.
+* @`A::    @`A.
+* @`E::    @`E.
+* @`I::    @`I.
+* @`O::    @`O.
+* @`U::    @`U.
address@hidden menu
address@hidden
address@hidden à,,,grave accent
address@hidden à
address@hidden è,,,grave accent
address@hidden è
address@hidden @`i,,,grave accent
address@hidden @`i
address@hidden with brace @`{i},,,grave accent
address@hidden @`{i}
address@hidden with dotless @address@hidden,,,grave accent
address@hidden @address@hidden
address@hidden @`o,,,grave accent
address@hidden @`o
address@hidden ù,,,grave accent
address@hidden ù
address@hidden @`A,,,grave accent
address@hidden @`A
address@hidden @`E,,,grave accent
address@hidden @`E
address@hidden @`I,,,grave accent
address@hidden @`I
address@hidden @`O,,,grave accent
address@hidden @`O
address@hidden @`U,,,grave accent
address@hidden @`U
address@hidden
address@hidden circumflex accent,,Top,Top
address@hidden circumflex accent
address@hidden
+* â::    â.
+* ê::    ê.
+* î::    î.
+* ô::    ô.
+* û::    û.
+* Â::    Â.
+* Ê::    Ê.
+* Î::    Î.
+* Ô::    Ô.
+* Û::    Û.
address@hidden menu
address@hidden
address@hidden â,,,circumflex accent
address@hidden â
address@hidden ê,,,circumflex accent
address@hidden ê
address@hidden î,,,circumflex accent
address@hidden î
address@hidden ô,,,circumflex accent
address@hidden ô
address@hidden û,,,circumflex accent
address@hidden û
address@hidden Â,,,circumflex accent
address@hidden Â
address@hidden Ê,,,circumflex accent
address@hidden Ê
address@hidden Î,,,circumflex accent
address@hidden Î
address@hidden Ô,,,circumflex accent
address@hidden Ô
address@hidden Û,,,circumflex accent
address@hidden Û
address@hidden
address@hidden tilde accent,,Top,Top
address@hidden tilde accent
address@hidden
+* @~a::    @~a.
+* @~n::    @~n.
+* @~o::    @~o.
+* @~A::    @~A.
+* @~O::    @~O.
address@hidden menu
address@hidden
address@hidden @~a,,,tilde accent
address@hidden @~a
address@hidden @~n,,,tilde accent
address@hidden @~n
address@hidden @~o,,,tilde accent
address@hidden @~o
address@hidden @~A,,,tilde accent
address@hidden @~A
address@hidden @~O,,,tilde accent
address@hidden @~O
+This marks the @anchor{x-spot}spot.
+A second one with accented char @anchor{é-o}.
address@hidden
address@hidden cedilla accent,,Top,Top
address@hidden cedilla accent
address@hidden
+* ç::    ç.
+* @,{C}::    @,{C}.
address@hidden menu
address@hidden
address@hidden ç,,,cedilla accent
address@hidden ç
address@hidden @,{C},,,cedilla accent
address@hidden @,{C}
address@hidden
address@hidden rest,,Top,Top
address@hidden rest
address@hidden
+* @aa{}::  @aa{}.
+* @ae{}::  @ae{}.
+* @oe{}::  @oe{}.
+* @AA{}::  @AA{}.
+* @AE{}::  @AE{}.
+* @OE{}::  @OE{}.
+* @l{}::  @l{}.
+* @o{}::  @o{}.
+* @L{}::  @L{}.
+* @O{}::  @O{}.
+* @H{a}::  @H{a}.
+* @u{a}::  @u{a}.
+* @v{a}::  @v{a}.
+* @udotaccent{a}::  @udotaccent{a} udotaccent.
+* @dotaccent{a}::  @dotaccent{a} dotaccent.
+* @ringaccent{a}::  @ringaccent{a} ringaccent.
+* @tieaccent{a}::  @tieaccent{a} tieaccent.
+* @ubaraccent{a}::  @ubaraccent{a} ubaraccent.
+* @dotless{i}::  @dotless{i} dotless i.
+* @dotless{j}::  @dotless{j} dotless j.
+* @comma{}::     @comma{} comma
address@hidden menu
address@hidden
address@hidden @aa{},,,rest
address@hidden @aa{}
address@hidden @ae{},,,rest
address@hidden @ae{}
address@hidden @oe{},,,rest
address@hidden @oe{}
address@hidden @AA{},,,rest
address@hidden @AA{}
address@hidden @AE{},,,rest
address@hidden @AE{}
address@hidden @OE{},,,rest
address@hidden @OE{}
address@hidden @l{},,,rest
address@hidden @l{}
address@hidden @o{},,,rest
address@hidden @o{}
address@hidden @L{},,,rest
address@hidden @L{}
address@hidden @O{},,,rest
address@hidden @O{}
address@hidden @H{a},,,rest
address@hidden @H{a}
address@hidden @u{a},,,rest
address@hidden @u{a}
address@hidden @v{a},,,rest
address@hidden @v{a}
address@hidden @udotaccent{a},,,rest
address@hidden @udotaccent{a}
+Test udotaccent.
address@hidden @dotaccent{a},,,rest
address@hidden @dotaccent{a}
+Test dotaccent.
address@hidden @ringaccent{a},,,rest
address@hidden @ringaccent{a}
address@hidden @tieaccent{a},,,rest
address@hidden @tieaccent{a}
address@hidden @ubaraccent{a},,,rest
address@hidden @ubaraccent{a}
address@hidden @dotless{i},,,rest
address@hidden @dotless{i}
address@hidden @dotless{j},,,rest
address@hidden @dotless{j}
+        
+        @dots{}
+
+       @enddots{}
+
+       @exclamdown{}
+
+       @questiondown{}
+
+       @pounds{}
+
+       @@- : @-
+       @@ followed by end of line: @
+       @@ followed by tab: @   
+       @@ followed by space @ 
+       @@*: @* and text followin @@*.
+
address@hidden @comma{},,,rest
address@hidden @comma{}
+
+An index entry with accented letter.
address@hidden index entry with accented letter: à @`a
address@hidden index entry with accented letter: â @`a
+
address@hidden cp
+
address@hidden
address@hidden

Index: encodings/res_all/texi_nodetest_utf8/nodetest_utf8.texi.first
===================================================================
RCS file: encodings/res_all/texi_nodetest_utf8/nodetest_utf8.texi.first
diff -N encodings/res_all/texi_nodetest_utf8/nodetest_utf8.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_nodetest_utf8/nodetest_utf8.texi.first       2 Aug 
2009 13:13:27 -0000       1.1
@@ -0,0 +1,339 @@
+\input texinfo @c -*-texinfo-*-
address@hidden nodetest_utf8.info
address@hidden utf8
address@hidden Top,Umlaut,(dir)
address@hidden
address@hidden
+* Umlaut::               Umlaut.
+
+
+Another Heading
+
+
+* acute accent::         acute accent.
+* grave accent::         grave accent.
+* circumflex accent::    circumflex accent.
+* tilde accent::         tilde accent.
+* cedilla accent::       cedilla accent.
+* rest::                 rest @@address@hidden@} etc.
address@hidden menu
address@hidden
address@hidden Umlaut,,Top,Top
address@hidden Umlaut
address@hidden
+* ä::    ä.
+* ë::    ë.
+* ï::    ï.
+* ö::    ö.
+* ü::    ü.
+* ÿ::    ÿ.
+* Ä::    Ä.
+* Ë::    Ë.
+* Ï::    Ï.
+* Ö::    Ö.
+* Ü::    Ü.
+* @ss{}::    @ss{}.
+* no section::  Node without sectioning command.
address@hidden menu
address@hidden
address@hidden ä,,,Umlaut
address@hidden ä
+ref to ç @ref{ç}.
address@hidden ë,,,Umlaut
address@hidden ë
address@hidden ï,,,Umlaut 
address@hidden ï
+
+before footnote @xref{footanchor}.
+
address@hidden@anchor{footanchor}}
+
+after footnote @xref{footanchor}.
+
address@hidden ö,,,Umlaut
address@hidden ö
+Ref to an anchor at the end of the doc 
+(@pxref{é-o, , there is an o-é could there be an @address@hidden).
address@hidden ü,,,Umlaut
address@hidden ü
+Another ref to an anchor (@pxref{x-spot, ,}).
address@hidden ÿ,,,Umlaut
address@hidden ÿ
+This is a ref to a node (@pxref{à, ,à}).
+
address@hidden Ä,,,Umlaut
address@hidden Ä
+
+Now a ref to a node without sectionning command, 
+no text (@pxref{no section, , }).
+With text (@pxref{no section, ,but a text }).
+
address@hidden Ë,,,Umlaut
address@hidden Ë
address@hidden Ï,,,Umlaut
address@hidden Ï
address@hidden Ö,,,Umlaut
address@hidden Ö
address@hidden Ü,,,Umlaut
address@hidden Ü
address@hidden @ss{},,,Umlaut
address@hidden @ss{}
address@hidden no section,,,Umlaut
+This is a node without sectioning command.
address@hidden
address@hidden acute accent,,Top,Top
address@hidden acute accent
address@hidden
+* @'a::    @'a.
+* é::    é.
+* @'i::    @'i.
+* @'o::    @'o.
+* @'u::    @'u.
+* @'y::    @'y.
+* @'A::    @'A.
+* @'E::    @'E.
+* @'I::    @'I.
+* @'O::    @'O.
+* @'U::    @'U.
+* @'Y::    @'Y.
address@hidden menu
address@hidden
address@hidden @'a,,,acute accent
address@hidden @'a
+With brace @'{a}. Testing ' " ` ^.
address@hidden é,,,acute accent
address@hidden é
address@hidden @'i,,,acute accent
address@hidden @'i
address@hidden @'o,,,acute accent
address@hidden @'o
address@hidden @'u,,,acute accent
address@hidden @'u
address@hidden @'y,,,acute accent
address@hidden @'y
address@hidden @'A,,,acute accent
address@hidden @'A
address@hidden @'E,,,acute accent
address@hidden @'E
address@hidden @'I,,,acute accent
address@hidden @'I
address@hidden @'O,,,acute accent
address@hidden @'O
address@hidden @'U,,,acute accent
address@hidden @'U
address@hidden @'Y,,,acute accent
address@hidden @'Y
+This is a ref to ü (@pxref{ü, ,ü}).
+Another one, with node only (@pxref{ü, ,}).
+
+
address@hidden
address@hidden grave accent,,Top,Top
address@hidden grave accent
address@hidden
+* à::    à.
+* è::    è.
+* @`i::    @`i.
+* with brace @`{i}::    @`{i}.
+* with dotless @address@hidden::   @address@hidden
+* @`o::    @`o.
+* ù::    ù.
+* @`A::    @`A.
+* @`E::    @`E.
+* @`I::    @`I.
+* @`O::    @`O.
+* @`U::    @`U.
address@hidden menu
address@hidden
address@hidden à,,,grave accent
address@hidden à
address@hidden è,,,grave accent
address@hidden è
address@hidden @`i,,,grave accent
address@hidden @`i
address@hidden with brace @`{i},,,grave accent
address@hidden @`{i}
address@hidden with dotless @address@hidden,,,grave accent
address@hidden @address@hidden
address@hidden @`o,,,grave accent
address@hidden @`o
address@hidden ù,,,grave accent
address@hidden ù
address@hidden @`A,,,grave accent
address@hidden @`A
address@hidden @`E,,,grave accent
address@hidden @`E
address@hidden @`I,,,grave accent
address@hidden @`I
address@hidden @`O,,,grave accent
address@hidden @`O
address@hidden @`U,,,grave accent
address@hidden @`U
address@hidden
address@hidden circumflex accent,,Top,Top
address@hidden circumflex accent
address@hidden
+* â::    â.
+* ê::    ê.
+* î::    î.
+* ô::    ô.
+* û::    û.
+* Â::    Â.
+* Ê::    Ê.
+* Î::    Î.
+* Ô::    Ô.
+* Û::    Û.
address@hidden menu
address@hidden
address@hidden â,,,circumflex accent
address@hidden â
address@hidden ê,,,circumflex accent
address@hidden ê
address@hidden î,,,circumflex accent
address@hidden î
address@hidden ô,,,circumflex accent
address@hidden ô
address@hidden û,,,circumflex accent
address@hidden û
address@hidden Â,,,circumflex accent
address@hidden Â
address@hidden Ê,,,circumflex accent
address@hidden Ê
address@hidden Î,,,circumflex accent
address@hidden Î
address@hidden Ô,,,circumflex accent
address@hidden Ô
address@hidden Û,,,circumflex accent
address@hidden Û
address@hidden
address@hidden tilde accent,,Top,Top
address@hidden tilde accent
address@hidden
+* @~a::    @~a.
+* @~n::    @~n.
+* @~o::    @~o.
+* @~A::    @~A.
+* @~O::    @~O.
address@hidden menu
address@hidden
address@hidden @~a,,,tilde accent
address@hidden @~a
address@hidden @~n,,,tilde accent
address@hidden @~n
address@hidden @~o,,,tilde accent
address@hidden @~o
address@hidden @~A,,,tilde accent
address@hidden @~A
address@hidden @~O,,,tilde accent
address@hidden @~O
+This marks the @anchor{x-spot}spot.
+A second one with accented char @anchor{é-o}.
address@hidden
address@hidden cedilla accent,,Top,Top
address@hidden cedilla accent
address@hidden
+* ç::    ç.
+* @,{C}::    @,{C}.
address@hidden menu
address@hidden
address@hidden ç,,,cedilla accent
address@hidden ç
address@hidden @,{C},,,cedilla accent
address@hidden @,{C}
address@hidden
address@hidden rest,,Top,Top
address@hidden rest
address@hidden
+* @aa{}::  @aa{}.
+* @ae{}::  @ae{}.
+* @oe{}::  @oe{}.
+* @AA{}::  @AA{}.
+* @AE{}::  @AE{}.
+* @OE{}::  @OE{}.
+* @l{}::  @l{}.
+* @o{}::  @o{}.
+* @L{}::  @L{}.
+* @O{}::  @O{}.
+* @H{a}::  @H{a}.
+* @u{a}::  @u{a}.
+* @v{a}::  @v{a}.
+* @udotaccent{a}::  @udotaccent{a} udotaccent.
+* @dotaccent{a}::  @dotaccent{a} dotaccent.
+* @ringaccent{a}::  @ringaccent{a} ringaccent.
+* @tieaccent{a}::  @tieaccent{a} tieaccent.
+* @ubaraccent{a}::  @ubaraccent{a} ubaraccent.
+* @dotless{i}::  @dotless{i} dotless i.
+* @dotless{j}::  @dotless{j} dotless j.
+* @comma{}::     @comma{} comma
address@hidden menu
address@hidden
address@hidden @aa{},,,rest
address@hidden @aa{}
address@hidden @ae{},,,rest
address@hidden @ae{}
address@hidden @oe{},,,rest
address@hidden @oe{}
address@hidden @AA{},,,rest
address@hidden @AA{}
address@hidden @AE{},,,rest
address@hidden @AE{}
address@hidden @OE{},,,rest
address@hidden @OE{}
address@hidden @l{},,,rest
address@hidden @l{}
address@hidden @o{},,,rest
address@hidden @o{}
address@hidden @L{},,,rest
address@hidden @L{}
address@hidden @O{},,,rest
address@hidden @O{}
address@hidden @H{a},,,rest
address@hidden @H{a}
address@hidden @u{a},,,rest
address@hidden @u{a}
address@hidden @v{a},,,rest
address@hidden @v{a}
address@hidden @udotaccent{a},,,rest
address@hidden @udotaccent{a}
+Test udotaccent.
address@hidden @dotaccent{a},,,rest
address@hidden @dotaccent{a}
+Test dotaccent.
address@hidden @ringaccent{a},,,rest
address@hidden @ringaccent{a}
address@hidden @tieaccent{a},,,rest
address@hidden @tieaccent{a}
address@hidden @ubaraccent{a},,,rest
address@hidden @ubaraccent{a}
address@hidden @dotless{i},,,rest
address@hidden @dotless{i}
address@hidden @dotless{j},,,rest
address@hidden @dotless{j}
+        
+        @dots{}
+
+       @enddots{}
+
+       @exclamdown{}
+
+       @questiondown{}
+
+       @pounds{}
+
+       @@- : @-
+       @@ followed by end of line: @
+       @@ followed by tab: @   
+       @@ followed by space @ 
+       @@*: @* and text followin @@*.
+
address@hidden @comma{},,,rest
address@hidden @comma{}
+
+An index entry with accented letter.
address@hidden index entry with accented letter: à @`a
address@hidden index entry with accented letter: â @`a
+
address@hidden cp
+
address@hidden
address@hidden

Index: encodings/res_all/texi_ogolat2/ogolat2.texi.first
===================================================================
RCS file: encodings/res_all/texi_ogolat2/ogolat2.texi.first
diff -N encodings/res_all/texi_ogolat2/ogolat2.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_ogolat2/ogolat2.texi.first   2 Aug 2009 13:13:27 
-0000       1.1
@@ -0,0 +1,28 @@
+\input texinfo
address@hidden ogonek.info
+
address@hidden ISO-8859-2
+
address@hidden Top
address@hidden OgoL2
+
+Latin 2 (precomposed).
address@hidden 0xa1=0241
+Aogonek: ¡
address@hidden 0xb1=0261
+aogonek: ±
address@hidden 0xb2=0262
+standalone ogonek: ²
address@hidden 0xca=0312
+Eogonek: Ê
address@hidden 0xea=0352
+eogonek: ê
+
address@hidden Accented.
address@hidden @ogonek{a}
address@hidden @ogonek{e}
address@hidden @ogonek{i}
address@hidden @ogonek{o}
address@hidden @ogonek{u}
+
address@hidden

Index: encodings/res_all/texi_ogoutf/ogoutf.texi.first
===================================================================
RCS file: encodings/res_all/texi_ogoutf/ogoutf.texi.first
diff -N encodings/res_all/texi_ogoutf/ogoutf.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_ogoutf/ogoutf.texi.first     2 Aug 2009 13:13:27 
-0000       1.1
@@ -0,0 +1,20 @@
+\input texinfo
address@hidden ogonek.info
address@hidden UTF-8
address@hidden Ogonek
+
+
address@hidden Top
address@hidden Top AE @address@hidden
+
address@hidden AE ĄĘ ae ąę
+
+Zażółć gęślą jaźń!
+
+Zazolc gesla jazn!
+
address@hidden @address@hidden
address@hidden @address@hidden
address@hidden cp
+
address@hidden

Index: encodings/res_all/texi_umlaut/umlaut.texi.first
===================================================================
RCS file: encodings/res_all/texi_umlaut/umlaut.texi.first
diff -N encodings/res_all/texi_umlaut/umlaut.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_umlaut/umlaut.texi.first     2 Aug 2009 13:13:27 
-0000       1.1
@@ -0,0 +1,124 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden
address@hidden
address@hidden umlaut.info
address@hidden de
address@hidden @documentlanguage zv
address@hidden Test for Umlaute, accent etc.
address@hidden on
address@hidden separate
address@hidden
address@hidden This is what you get
+Copright Sign: @copyright{} @*
+Pound Sign: @pounds{} @*
+Minus Zeichen: @minus{} @*
+TeX Logo: @address@hidden
address@hidden@}: @address@hidden
address@hidden@}:@address@hidden
+Vertical Bar:@*
+|
+
+valid umlaut
+@"a @"e @"i @"o @"u @"y
+@"A @"E @"I @"O @"U
+
+
+Non valid umlaut:@*
+@"X @"x @"Q @"Y
+
+
+Special characters in HTML:@*
+ < > &
+
+
+acute accent:@*
+@'a @'e @'i @'o @'u @'y
+@'A @'E @'I @'O @'U @'Y
+
+invalid acute accent:@*
+@'z @'q @'r
+@'Z @'Q @'R
+
+valid Cedilla:@*
+@,{c} @,{C}
+
+
+non valid Cedilla:@*
+@,{H} @,{h}
+
+macron:@*
address@hidden
+
+I don't know any invalid macron:@*
+
+
+valid circumflex:@*
address@hidden @^e @^i @^o @^u
address@hidden @^E @^I @^O @^U 
+
+
+invalid circumflex:@*
address@hidden @^r @^t @^k
address@hidden @^R @^T @^K
+
+
+grave accent:@*
address@hidden @`e @`i @`o @`u
address@hidden @`E @`I @`O @`U
+
+
+invalid grave accent:@*
address@hidden @`m @`p
+
+
+
+tilde accent:@*
address@hidden @~n @~o
address@hidden @~O
+
+invalid tilde accent:@*
address@hidden @~s
+
+
+
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden @AA{}
address@hidden @AE{}
address@hidden
address@hidden
address@hidden @L{}
address@hidden @O{}
address@hidden @OE{}
address@hidden
+
+What about @@url and @@uref
+
address@hidden://www.fido.de/~kama}
+
+Referenz:@*
address@hidden://www.fido.de/~kama}
+
+Referenz mit Display Text:@*
address@hidden://www.fido.de/~kama, Second Argument of uref}
+
+Referenz mit Display Text and special:@*
address@hidden://www.fido.de/~kama, Second Argument of uref, Third Argument of 
uref}
+
+Email:@*
address@hidden@@hippo.fido.de}
+
+Email mit display:@*
address@hidden@@hippo.fido.de, Anzeige der email Adrese}
address@hidden I don't need any contents.
address@hidden
address@hidden

Index: encodings/res_all/texi_unknown_language/unknown_language.texi.first
===================================================================
RCS file: encodings/res_all/texi_unknown_language/unknown_language.texi.first
diff -N encodings/res_all/texi_unknown_language/unknown_language.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_unknown_language/unknown_language.texi.first 2 Aug 
2009 13:13:27 -0000       1.1
@@ -0,0 +1,16 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden unknown_language.info
+
address@hidden unknown
+
address@hidden Top
address@hidden unknkown language
+
+Unknown language. @xref{Top}.
+
address@hidden another_UNKNOWN
+
+Another unknown language. @xref{Top}.
+
address@hidden

Index: encodings/res_all/texi_weird_accents/weird_accents.texi.first
===================================================================
RCS file: encodings/res_all/texi_weird_accents/weird_accents.texi.first
diff -N encodings/res_all/texi_weird_accents/weird_accents.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_all/texi_weird_accents/weird_accents.texi.first       2 Aug 
2009 13:13:27 -0000       1.1
@@ -0,0 +1,19 @@
+\input texinfo
address@hidden accentenc.info
address@hidden Complex accent encoding test
address@hidden ISO-8859-1
+
address@hidden Top
address@hidden Complex accent encoding test top
+
address@hidden@address@hidden
+
address@hidden@,address@hidden
+
address@hidden@ubaraccent{a}}
+
address@hidden@address@hidden
+
address@hidden@code{@'address@hidden
+
address@hidden

Index: encodings/res_info/texi_accent/accent.texi.first
===================================================================
RCS file: encodings/res_info/texi_accent/accent.texi.first
diff -N encodings/res_info/texi_accent/accent.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_info/texi_accent/accent.texi.first    2 Aug 2009 13:13:29 
-0000       1.1
@@ -0,0 +1,82 @@
+\input texinfo
address@hidden accent.info
address@hidden Accent test
+
address@hidden Top
address@hidden Accent test top
+
address@hidden args with braces, without braces/following whitespace
+
+should be e`: @`{e} @`e
+
+should be e': @'{e} @'e
+
+should be e^: @^{e} @^e
+
+should be u": @"{u} @"u
+
+should be i`: @`{i} @`i
+
+should be i': @'{i} @'i
+
+should be i^: @^{i} @^i
+
+should be u": @"{u} @"u
+
+should be c,: @,{c} @,c
+
+should be n~: @~{n} @~n
+
+should be e=: @={e} @=e
+
+should be address@hidden'}': @H{e} @H e
+
+should be e.: @dotaccent{e} @dotaccent e
+
+should be e*: @ringaccent{e} @ringaccent e
+
+should be ee[: @tieaccent{ee}
+
+should be e(: @u{e} @u e
+
+should be e_: @ubaraccent{e} @ubaraccent e
+
+should be .e: @udotaccent{e} @udotaccent e
+
+should be e<: @v{e} @v e
+
+upside down: @questiondown{} @exclamdown{}
+
+A-with-circle: @aa{},@AA{}
+
+AE, OE ligatures: @ae{} @AE{} @oe{} @OE{}
+
+dotless i, j: @dotless{i} @dotless{j}
+
+Polish suppressed-L: @l{} @L{}
+
+O-with-slash: @o{} @O{}
+
+es-zet or sharp S: @ss{}          
+
+pounds sterling: @pounds{}      
+
address@hidden arg is command -- @dotless{i} is special-cased for HTML
+should be dotless i`: @address@hidden
+
+should be dotless i': @'address@hidden
+
+should be dotless i^: @address@hidden
+
+should be dotless i": @"address@hidden
+
address@hidden arg is command -- @dotless{j}
+should be dotless j`: @address@hidden
+
+should be dotless j': @'address@hidden
+
+should be dotless j^: @address@hidden
+
+should be dotless j": @"address@hidden
+
address@hidden

Index: encodings/res_info/texi_accentenc/accentenc.texi.first
===================================================================
RCS file: encodings/res_info/texi_accentenc/accentenc.texi.first
diff -N encodings/res_info/texi_accentenc/accentenc.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_info/texi_accentenc/accentenc.texi.first      2 Aug 2009 
13:13:29 -0000       1.1
@@ -0,0 +1,83 @@
+\input texinfo
address@hidden accentenc.info
address@hidden Accent encoding test
address@hidden ISO-8859-1
+
address@hidden Top
address@hidden Accent encoding test top
+
address@hidden args with braces, without braces/following whitespace
+
+should be e`: @`{e} @`e
+
+should be e': @'{e} @'e
+
+should be e^: @^{e} @^e
+
+should be u": @"{u} @"u
+
+should be i`: @`{i} @`i
+
+should be i': @'{i} @'i
+
+should be i^: @^{i} @^i
+
+should be u": @"{u} @"u
+
+should be c,: @,{c} @,c
+
+should be n~: @~{n} @~n
+
+should be e=: @={e} @=e
+
+should be address@hidden'}': @H{e} @H e
+
+should be e.: @dotaccent{e} @dotaccent e
+
+should be e*: @ringaccent{e} @ringaccent e
+
+should be ee[: @tieaccent{ee}
+
+should be e(: @u{e} @u e
+
+should be e_: @ubaraccent{e} @ubaraccent e
+
+should be .e: @udotaccent{e} @udotaccent e
+
+should be e<: @v{e} @v e
+
+upside down: @questiondown{} @exclamdown{}
+
+A-with-circle: @aa{},@AA{}
+
+AE, OE ligatures: @ae{} @AE{} @oe{} @OE{}
+
+dotless i, j: @dotless{i} @dotless{j}
+
+Polish suppressed-L: @l{} @L{}
+
+O-with-slash: @o{} @O{}
+
+es-zet or sharp S: @ss{}          
+
+pounds sterling: @pounds{}      
+
address@hidden arg is command -- @dotless{i} is special-cased for HTML
+should be dotless i`: @address@hidden
+
+should be dotless i': @'address@hidden
+
+should be dotless i^: @address@hidden
+
+should be dotless i": @"address@hidden
+
address@hidden arg is command -- @dotless{j}
+should be dotless j`: @address@hidden
+
+should be dotless j': @'address@hidden
+
+should be dotless j^: @address@hidden
+
+should be dotless j": @"address@hidden
+
address@hidden

Index: 
encodings/res_info/texi_documentlanguage_set/documentlanguage_set.texi.first
===================================================================
RCS file: 
encodings/res_info/texi_documentlanguage_set/documentlanguage_set.texi.first
diff -N 
encodings/res_info/texi_documentlanguage_set/documentlanguage_set.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ 
encodings/res_info/texi_documentlanguage_set/documentlanguage_set.texi.first    
    2 Aug 2009 13:13:29 -0000       1.1
@@ -0,0 +1,12 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden documentlanguage_set.info
address@hidden pt
address@hidden Test @@documentlanguage set
+
address@hidden Top
address@hidden @@documentlanguage set
+
+Text.
+
address@hidden

Index: encodings/res_info/texi_multi_lang/multi_lang.texi.first
===================================================================
RCS file: encodings/res_info/texi_multi_lang/multi_lang.texi.first
diff -N encodings/res_info/texi_multi_lang/multi_lang.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_info/texi_multi_lang/multi_lang.texi.first    2 Aug 2009 
13:13:29 -0000       1.1
@@ -0,0 +1,52 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden multi_lang.info
+
address@hidden fr_NOWHERE
+
address@hidden Top
address@hidden Multi language file
+
+This is in french
+
address@hidden
+* chapter fr_NOWHERE::
+* chapter ja::
+* chapter en::
+* chapter pt_BR::
address@hidden menu
+
address@hidden chapter fr_NOWHERE
address@hidden Fr_NOWHERE
+
+In french. @xref{Top}.
+
address@hidden
+* sub fr_NOWHERE::
address@hidden menu
+
address@hidden sub fr_NOWHERE
address@hidden fr_NOWHERE section
+
+In fr section.
+
address@hidden ja
address@hidden chapter ja
address@hidden ja
+
+In japanese. @xref{Top}.
+
address@hidden en
address@hidden chapter en
address@hidden en
+
+In english. @xref{Top}.
+
address@hidden pt_BR
address@hidden chapter pt_BR
address@hidden pt_bR
+
+In brazilian. @xref{Top}.
+
+
address@hidden

Index: encodings/res_info/texi_nodetest/nodetest.texi.first
===================================================================
RCS file: encodings/res_info/texi_nodetest/nodetest.texi.first
diff -N encodings/res_info/texi_nodetest/nodetest.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_info/texi_nodetest/nodetest.texi.first        2 Aug 2009 
13:13:29 -0000       1.1
@@ -0,0 +1,355 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden It is not possible to test for @,{c} in 
address@hidden nodename cause makeinfo can not
address@hidden handle cedilla's in node names. A cedilla
address@hidden has a comma which was recognized a as
address@hidden delimiter between node parts (next,previous etc.)
address@hidden nodetest.info
address@hidden Top,Umlaut,(dir)
address@hidden
address@hidden
+* Umlaut::               Umlaut.
+
+
+Another Heading
+
+
+* acute accent::         acute accent.
+* grave accent::         grave accent.
+* circumflex accent::    circumflex accent.
+* tilde accent::         tilde accent.
+* cedilla accent::       cedilla accent.
+* rest::                 rest @@address@hidden@} etc.
address@hidden menu
address@hidden
address@hidden Umlaut,,Top,Top
address@hidden Umlaut
address@hidden
+* @"a::    @"a.
+* @"e::    @"e.
+* @"i::    @"i.
+* with brace @"{i}::    @"{i}.
+* with dotless @"address@hidden::   @"address@hidden
+* @"o::    @"o.
+* @"u::    @"u.
+* @"y::    @"y.
+* @"A::    @"A.
+* @"E::    @"E.
+* @"I::    @"I.
+* @"O::    @"O.
+* @"U::    @"U.
+* @ss{}::    @ss{}.
+* no section::  Node without sectioning command.
address@hidden menu
address@hidden
address@hidden @"a,,,Umlaut
address@hidden @"a
+ref to @,{c} @ref{@,{c}}.
address@hidden @"e,,,Umlaut
address@hidden @"e
address@hidden @"i,,,Umlaut 
address@hidden @"i
address@hidden with brace @"{i},,,Umlaut
address@hidden With brace @"{i}
address@hidden with dotless @"address@hidden,,,Umlaut
address@hidden With dotless @"address@hidden
+
+before footnote @xref{footanchor}.
+
address@hidden@anchor{footanchor}}
+
+after footnote @xref{footanchor}.
+
address@hidden @"o,,,Umlaut
address@hidden @"o
+Ref to an anchor at the end of the doc 
+(@pxref{@'e-o, , there is an o-@'e could there be an @address@hidden).
address@hidden @"u,,,Umlaut
address@hidden @"u
+Another ref to an anchor (@pxref{x-spot, ,}).
address@hidden @"y,,,Umlaut
address@hidden @"y
+This is a ref to a node (@pxref{@'U, ,@'U}).
+
address@hidden @"A,,,Umlaut
address@hidden @"A
+
+Now a ref to a node without sectionning command, 
+no text (@pxref{no section, , }).
+With text (@pxref{no section, ,but a text }).
+
address@hidden @"E,,,Umlaut
address@hidden @"E
address@hidden @"I,,,Umlaut
address@hidden @"I
address@hidden @"O,,,Umlaut
address@hidden @"O
address@hidden @"U,,,Umlaut
address@hidden @"U
address@hidden @ss{},,,Umlaut
address@hidden @ss{}
address@hidden no section,,,Umlaut
+This is a node without sectioning command.
address@hidden
address@hidden acute accent,,Top,Top
address@hidden acute accent
address@hidden
+* @'a::    @'a.
+* @'e::    @'e.
+* @'i::    @'i.
+* @'o::    @'o.
+* @'u::    @'u.
+* @'y::    @'y.
+* @'A::    @'A.
+* @'E::    @'E.
+* @'I::    @'I.
+* @'O::    @'O.
+* @'U::    @'U.
+* @'Y::    @'Y.
address@hidden menu
address@hidden
address@hidden @'a,,,acute accent
address@hidden @'a
+With brace @'{a}. Testing ' " ` ^.
address@hidden @'e,,,acute accent
address@hidden @'e
address@hidden @'i,,,acute accent
address@hidden @'i
address@hidden @'o,,,acute accent
address@hidden @'o
address@hidden @'u,,,acute accent
address@hidden @'u
address@hidden @'y,,,acute accent
address@hidden @'y
address@hidden @'A,,,acute accent
address@hidden @'A
address@hidden @'E,,,acute accent
address@hidden @'E
address@hidden @'I,,,acute accent
address@hidden @'I
address@hidden @'O,,,acute accent
address@hidden @'O
address@hidden @'U,,,acute accent
address@hidden @'U
address@hidden @'Y,,,acute accent
address@hidden @'Y
+This is a ref to @"u (@pxref{@"u, ,@"u}).
+Another one, with node only (@pxref{@"u, ,}).
+
+
address@hidden
address@hidden grave accent,,Top,Top
address@hidden grave accent
address@hidden
+* @`a::    @`a.
+* @`e::    @`e.
+* @`i::    @`i.
+* with brace @`{i}::    @`{i}.
+* with dotless @address@hidden::   @address@hidden
+* @`o::    @`o.
+* @`u::    @`u.
+* @`A::    @`A.
+* @`E::    @`E.
+* @`I::    @`I.
+* @`O::    @`O.
+* @`U::    @`U.
address@hidden menu
address@hidden
address@hidden @`a,,,grave accent
address@hidden @`a
address@hidden @`e,,,grave accent
address@hidden @`e
address@hidden @`i,,,grave accent
address@hidden @`i
address@hidden with brace @`{i},,,grave accent
address@hidden @`{i}
address@hidden with dotless @address@hidden,,,grave accent
address@hidden @address@hidden
address@hidden @`o,,,grave accent
address@hidden @`o
address@hidden @`u,,,grave accent
address@hidden @`u
address@hidden @`A,,,grave accent
address@hidden @`A
address@hidden @`E,,,grave accent
address@hidden @`E
address@hidden @`I,,,grave accent
address@hidden @`I
address@hidden @`O,,,grave accent
address@hidden @`O
address@hidden @`U,,,grave accent
address@hidden @`U
address@hidden
address@hidden circumflex accent,,Top,Top
address@hidden circumflex accent
address@hidden
+* @^a::    @^a.
+* @^e::    @^e.
+* @^i::    @^i.
+* with brace @^{i}::    @^{i}.
+* with dotless @address@hidden::   @address@hidden
+* @^o::    @^o.
+* @^u::    @^u.
+* @^A::    @^A.
+* @^E::    @^E.
+* @^I::    @^I.
+* @^O::    @^O.
+* @^U::    @^U.
address@hidden menu
address@hidden
address@hidden @^a,,,circumflex accent
address@hidden @^a
address@hidden @^e,,,circumflex accent
address@hidden @^e
address@hidden @^i,,,circumflex accent
address@hidden @^i
address@hidden with brace @^{i},,,circumflex accent
address@hidden @^{i}
+Test @@address@hidden@}.
address@hidden with dotless @address@hidden,,,circumflex accent
address@hidden @address@hidden
+Test @@address@hidden@@address@hidden@address@hidden
address@hidden @^o,,,circumflex accent
address@hidden @^o
address@hidden @^u,,,circumflex accent
address@hidden @^u
address@hidden @^A,,,circumflex accent
address@hidden @^A
address@hidden @^E,,,circumflex accent
address@hidden @^E
address@hidden @^I,,,circumflex accent
address@hidden @^I
address@hidden @^O,,,circumflex accent
address@hidden @^O
address@hidden @^U,,,circumflex accent
address@hidden @^U
address@hidden
address@hidden tilde accent,,Top,Top
address@hidden tilde accent
address@hidden
+* @~a::    @~a.
+* @~n::    @~n.
+* @~o::    @~o.
+* @~A::    @~A.
+* @~O::    @~O.
address@hidden menu
address@hidden
address@hidden @~a,,,tilde accent
address@hidden @~a
address@hidden @~n,,,tilde accent
address@hidden @~n
address@hidden @~o,,,tilde accent
address@hidden @~o
address@hidden @~A,,,tilde accent
address@hidden @~A
address@hidden @~O,,,tilde accent
address@hidden @~O
+This marks the @anchor{x-spot}spot.
+A second one with accented char @anchor{@'e-o}.
address@hidden
address@hidden cedilla accent,,Top,Top
address@hidden cedilla accent
address@hidden
+* @,{c}::    @,{c}.
+* @,{C}::    @,{C}.
+* @,c no brace:: @,c no brace.
address@hidden menu
address@hidden
address@hidden @,{c},,,cedilla accent
address@hidden @,{c}
address@hidden @,{C},,,cedilla accent
address@hidden @,{C}
address@hidden @,c no brace,,,cedilla accent
address@hidden @,c no brace
address@hidden
+
address@hidden rest,,Top,Top
address@hidden rest
address@hidden
+* @aa{}::  @aa{}.
+* @ae{}::  @ae{}.
+* @oe{}::  @oe{}.
+* @AA{}::  @AA{}.
+* @AE{}::  @AE{}.
+* @OE{}::  @OE{}.
+* @l{}::  @l{}.
+* @o{}::  @o{}.
+* @L{}::  @L{}.
+* @O{}::  @O{}.
+* @H{a}::  @H{a}.
+* @u{a}::  @u{a}.
+* @v{a}::  @v{a}.
+* @udotaccent{a}::  @udotaccent{a} udotaccent.
+* @dotaccent{a}::  @dotaccent{a} dotaccent.
+* @ringaccent{a}::  @ringaccent{a} ringaccent.
+* @tieaccent{a}::  @tieaccent{a} tieaccent.
+* @ubaraccent{a}::  @ubaraccent{a} ubaraccent.
+* @dotless{i}::  @dotless{i} dotless i.
+* @dotless{j}::  @dotless{j} dotless j.
+* @comma{}::     @comma{} comma
address@hidden menu
address@hidden
address@hidden @aa{},,,rest
address@hidden @aa{}
address@hidden @ae{},,,rest
address@hidden @ae{}
address@hidden @oe{},,,rest
address@hidden @oe{}
address@hidden @AA{},,,rest
address@hidden @AA{}
address@hidden @AE{},,,rest
address@hidden @AE{}
address@hidden @OE{},,,rest
address@hidden @OE{}
address@hidden @l{},,,rest
address@hidden @l{}
address@hidden @o{},,,rest
address@hidden @o{}
address@hidden @L{},,,rest
address@hidden @L{}
address@hidden @O{},,,rest
address@hidden @O{}
address@hidden @H{a},,,rest
address@hidden @H{a}
address@hidden @u{a},,,rest
address@hidden @u{a}
address@hidden @v{a},,,rest
address@hidden @v{a}
address@hidden @udotaccent{a},,,rest
address@hidden @udotaccent{a}
+Test udotaccent.
address@hidden @dotaccent{a},,,rest
address@hidden @dotaccent{a}
+Test dotaccent.
address@hidden @ringaccent{a},,,rest
address@hidden @ringaccent{a}
address@hidden @tieaccent{a},,,rest
address@hidden @tieaccent{a}
address@hidden @ubaraccent{a},,,rest
address@hidden @ubaraccent{a}
address@hidden @dotless{i},,,rest
address@hidden @dotless{i}
address@hidden @dotless{j},,,rest
address@hidden @dotless{j}
+        
+        @dots{}
+
+       @enddots{}
+
+       @exclamdown{}
+
+       @questiondown{}
+
+       @pounds{}
+
+       @@- : @-
+       @@ followed by end of line: @
+       @@ followed by tab: @   
+       @@ followed by space @ 
+       @@*: @* and text followin @@*.
+
address@hidden @comma{},,,rest
address@hidden @comma{}
address@hidden
address@hidden

Index: encodings/res_info/texi_nodetest_latin1/nodetest_latin1.texi.first
===================================================================
RCS file: encodings/res_info/texi_nodetest_latin1/nodetest_latin1.texi.first
diff -N encodings/res_info/texi_nodetest_latin1/nodetest_latin1.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_info/texi_nodetest_latin1/nodetest_latin1.texi.first  2 Aug 
2009 13:13:29 -0000       1.1
@@ -0,0 +1,339 @@
+\input texinfo @c -*-texinfo-*-
address@hidden nodetest_latin1.info
address@hidden latin1
address@hidden Top,Umlaut,(dir)
address@hidden
address@hidden
+* Umlaut::               Umlaut.
+
+
+Another Heading
+
+
+* acute accent::         acute accent.
+* grave accent::         grave accent.
+* circumflex accent::    circumflex accent.
+* tilde accent::         tilde accent.
+* cedilla accent::       cedilla accent.
+* rest::                 rest @@address@hidden@} etc.
address@hidden menu
address@hidden
address@hidden Umlaut,,Top,Top
address@hidden Umlaut
address@hidden
+* ä::    ä.
+* ë::    ë.
+* ï::    ï.
+* ö::    ö.
+* ü::    ü.
+* ÿ::    ÿ.
+* Ä::    Ä.
+* Ë::    Ë.
+* Ï::    Ï.
+* Ö::    Ö.
+* Ü::    Ü.
+* @ss{}::    @ss{}.
+* no section::  Node without sectioning command.
address@hidden menu
address@hidden
address@hidden ä,,,Umlaut
address@hidden ä
+ref to ç @ref{ç}.
address@hidden ë,,,Umlaut
address@hidden ë
address@hidden ï,,,Umlaut 
address@hidden ï
+
+before footnote @xref{footanchor}.
+
address@hidden@anchor{footanchor}}
+
+after footnote @xref{footanchor}.
+
address@hidden ö,,,Umlaut
address@hidden ö
+Ref to an anchor at the end of the doc 
+(@pxref{é-o, , there is an o-é could there be an @address@hidden).
address@hidden ü,,,Umlaut
address@hidden ü
+Another ref to an anchor (@pxref{x-spot, ,}).
address@hidden ÿ,,,Umlaut
address@hidden ÿ
+This is a ref to a node (@pxref{à, ,à}).
+
address@hidden Ä,,,Umlaut
address@hidden Ä
+
+Now a ref to a node without sectionning command, 
+no text (@pxref{no section, , }).
+With text (@pxref{no section, ,but a text }).
+
address@hidden Ë,,,Umlaut
address@hidden Ë
address@hidden Ï,,,Umlaut
address@hidden Ï
address@hidden Ö,,,Umlaut
address@hidden Ö
address@hidden Ü,,,Umlaut
address@hidden Ü
address@hidden @ss{},,,Umlaut
address@hidden @ss{}
address@hidden no section,,,Umlaut
+This is a node without sectioning command.
address@hidden
address@hidden acute accent,,Top,Top
address@hidden acute accent
address@hidden
+* @'a::    @'a.
+* é::    é.
+* @'i::    @'i.
+* @'o::    @'o.
+* @'u::    @'u.
+* @'y::    @'y.
+* @'A::    @'A.
+* @'E::    @'E.
+* @'I::    @'I.
+* @'O::    @'O.
+* @'U::    @'U.
+* @'Y::    @'Y.
address@hidden menu
address@hidden
address@hidden @'a,,,acute accent
address@hidden @'a
+With brace @'{a}. Testing ' " ` ^.
address@hidden é,,,acute accent
address@hidden é
address@hidden @'i,,,acute accent
address@hidden @'i
address@hidden @'o,,,acute accent
address@hidden @'o
address@hidden @'u,,,acute accent
address@hidden @'u
address@hidden @'y,,,acute accent
address@hidden @'y
address@hidden @'A,,,acute accent
address@hidden @'A
address@hidden @'E,,,acute accent
address@hidden @'E
address@hidden @'I,,,acute accent
address@hidden @'I
address@hidden @'O,,,acute accent
address@hidden @'O
address@hidden @'U,,,acute accent
address@hidden @'U
address@hidden @'Y,,,acute accent
address@hidden @'Y
+This is a ref to ü (@pxref{ü, ,ü}).
+Another one, with node only (@pxref{ü, ,}).
+
+
address@hidden
address@hidden grave accent,,Top,Top
address@hidden grave accent
address@hidden
+* à::    à.
+* è::    è.
+* @`i::    @`i.
+* with brace @`{i}::    @`{i}.
+* with dotless @address@hidden::   @address@hidden
+* @`o::    @`o.
+* ù::    ù.
+* @`A::    @`A.
+* @`E::    @`E.
+* @`I::    @`I.
+* @`O::    @`O.
+* @`U::    @`U.
address@hidden menu
address@hidden
address@hidden à,,,grave accent
address@hidden à
address@hidden è,,,grave accent
address@hidden è
address@hidden @`i,,,grave accent
address@hidden @`i
address@hidden with brace @`{i},,,grave accent
address@hidden @`{i}
address@hidden with dotless @address@hidden,,,grave accent
address@hidden @address@hidden
address@hidden @`o,,,grave accent
address@hidden @`o
address@hidden ù,,,grave accent
address@hidden ù
address@hidden @`A,,,grave accent
address@hidden @`A
address@hidden @`E,,,grave accent
address@hidden @`E
address@hidden @`I,,,grave accent
address@hidden @`I
address@hidden @`O,,,grave accent
address@hidden @`O
address@hidden @`U,,,grave accent
address@hidden @`U
address@hidden
address@hidden circumflex accent,,Top,Top
address@hidden circumflex accent
address@hidden
+* â::    â.
+* ê::    ê.
+* î::    î.
+* ô::    ô.
+* û::    û.
+* Â::    Â.
+* Ê::    Ê.
+* Î::    Î.
+* Ô::    Ô.
+* Û::    Û.
address@hidden menu
address@hidden
address@hidden â,,,circumflex accent
address@hidden â
address@hidden ê,,,circumflex accent
address@hidden ê
address@hidden î,,,circumflex accent
address@hidden î
address@hidden ô,,,circumflex accent
address@hidden ô
address@hidden û,,,circumflex accent
address@hidden û
address@hidden Â,,,circumflex accent
address@hidden Â
address@hidden Ê,,,circumflex accent
address@hidden Ê
address@hidden Î,,,circumflex accent
address@hidden Î
address@hidden Ô,,,circumflex accent
address@hidden Ô
address@hidden Û,,,circumflex accent
address@hidden Û
address@hidden
address@hidden tilde accent,,Top,Top
address@hidden tilde accent
address@hidden
+* @~a::    @~a.
+* @~n::    @~n.
+* @~o::    @~o.
+* @~A::    @~A.
+* @~O::    @~O.
address@hidden menu
address@hidden
address@hidden @~a,,,tilde accent
address@hidden @~a
address@hidden @~n,,,tilde accent
address@hidden @~n
address@hidden @~o,,,tilde accent
address@hidden @~o
address@hidden @~A,,,tilde accent
address@hidden @~A
address@hidden @~O,,,tilde accent
address@hidden @~O
+This marks the @anchor{x-spot}spot.
+A second one with accented char @anchor{é-o}.
address@hidden
address@hidden cedilla accent,,Top,Top
address@hidden cedilla accent
address@hidden
+* ç::    ç.
+* @,{C}::    @,{C}.
address@hidden menu
address@hidden
address@hidden ç,,,cedilla accent
address@hidden ç
address@hidden @,{C},,,cedilla accent
address@hidden @,{C}
address@hidden
address@hidden rest,,Top,Top
address@hidden rest
address@hidden
+* @aa{}::  @aa{}.
+* @ae{}::  @ae{}.
+* @oe{}::  @oe{}.
+* @AA{}::  @AA{}.
+* @AE{}::  @AE{}.
+* @OE{}::  @OE{}.
+* @l{}::  @l{}.
+* @o{}::  @o{}.
+* @L{}::  @L{}.
+* @O{}::  @O{}.
+* @H{a}::  @H{a}.
+* @u{a}::  @u{a}.
+* @v{a}::  @v{a}.
+* @udotaccent{a}::  @udotaccent{a} udotaccent.
+* @dotaccent{a}::  @dotaccent{a} dotaccent.
+* @ringaccent{a}::  @ringaccent{a} ringaccent.
+* @tieaccent{a}::  @tieaccent{a} tieaccent.
+* @ubaraccent{a}::  @ubaraccent{a} ubaraccent.
+* @dotless{i}::  @dotless{i} dotless i.
+* @dotless{j}::  @dotless{j} dotless j.
+* @comma{}::     @comma{} comma
address@hidden menu
address@hidden
address@hidden @aa{},,,rest
address@hidden @aa{}
address@hidden @ae{},,,rest
address@hidden @ae{}
address@hidden @oe{},,,rest
address@hidden @oe{}
address@hidden @AA{},,,rest
address@hidden @AA{}
address@hidden @AE{},,,rest
address@hidden @AE{}
address@hidden @OE{},,,rest
address@hidden @OE{}
address@hidden @l{},,,rest
address@hidden @l{}
address@hidden @o{},,,rest
address@hidden @o{}
address@hidden @L{},,,rest
address@hidden @L{}
address@hidden @O{},,,rest
address@hidden @O{}
address@hidden @H{a},,,rest
address@hidden @H{a}
address@hidden @u{a},,,rest
address@hidden @u{a}
address@hidden @v{a},,,rest
address@hidden @v{a}
address@hidden @udotaccent{a},,,rest
address@hidden @udotaccent{a}
+Test udotaccent.
address@hidden @dotaccent{a},,,rest
address@hidden @dotaccent{a}
+Test dotaccent.
address@hidden @ringaccent{a},,,rest
address@hidden @ringaccent{a}
address@hidden @tieaccent{a},,,rest
address@hidden @tieaccent{a}
address@hidden @ubaraccent{a},,,rest
address@hidden @ubaraccent{a}
address@hidden @dotless{i},,,rest
address@hidden @dotless{i}
address@hidden @dotless{j},,,rest
address@hidden @dotless{j}
+        
+        @dots{}
+
+       @enddots{}
+
+       @exclamdown{}
+
+       @questiondown{}
+
+       @pounds{}
+
+       @@- : @-
+       @@ followed by end of line: @
+       @@ followed by tab: @   
+       @@ followed by space @ 
+       @@*: @* and text followin @@*.
+
address@hidden @comma{},,,rest
address@hidden @comma{}
+
+An index entry with accented letter.
address@hidden index entry with accented letter: à @`a
address@hidden index entry with accented letter: â @`a
+
address@hidden cp
+
address@hidden
address@hidden

Index: encodings/res_info/texi_nodetest_utf8/nodetest_utf8.texi.first
===================================================================
RCS file: encodings/res_info/texi_nodetest_utf8/nodetest_utf8.texi.first
diff -N encodings/res_info/texi_nodetest_utf8/nodetest_utf8.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_info/texi_nodetest_utf8/nodetest_utf8.texi.first      2 Aug 
2009 13:13:30 -0000       1.1
@@ -0,0 +1,339 @@
+\input texinfo @c -*-texinfo-*-
address@hidden nodetest_utf8.info
address@hidden utf8
address@hidden Top,Umlaut,(dir)
address@hidden
address@hidden
+* Umlaut::               Umlaut.
+
+
+Another Heading
+
+
+* acute accent::         acute accent.
+* grave accent::         grave accent.
+* circumflex accent::    circumflex accent.
+* tilde accent::         tilde accent.
+* cedilla accent::       cedilla accent.
+* rest::                 rest @@address@hidden@} etc.
address@hidden menu
address@hidden
address@hidden Umlaut,,Top,Top
address@hidden Umlaut
address@hidden
+* ä::    ä.
+* ë::    ë.
+* ï::    ï.
+* ö::    ö.
+* ü::    ü.
+* ÿ::    ÿ.
+* Ä::    Ä.
+* Ë::    Ë.
+* Ï::    Ï.
+* Ö::    Ö.
+* Ü::    Ü.
+* @ss{}::    @ss{}.
+* no section::  Node without sectioning command.
address@hidden menu
address@hidden
address@hidden ä,,,Umlaut
address@hidden ä
+ref to ç @ref{ç}.
address@hidden ë,,,Umlaut
address@hidden ë
address@hidden ï,,,Umlaut 
address@hidden ï
+
+before footnote @xref{footanchor}.
+
address@hidden@anchor{footanchor}}
+
+after footnote @xref{footanchor}.
+
address@hidden ö,,,Umlaut
address@hidden ö
+Ref to an anchor at the end of the doc 
+(@pxref{é-o, , there is an o-é could there be an @address@hidden).
address@hidden ü,,,Umlaut
address@hidden ü
+Another ref to an anchor (@pxref{x-spot, ,}).
address@hidden ÿ,,,Umlaut
address@hidden ÿ
+This is a ref to a node (@pxref{à, ,à}).
+
address@hidden Ä,,,Umlaut
address@hidden Ä
+
+Now a ref to a node without sectionning command, 
+no text (@pxref{no section, , }).
+With text (@pxref{no section, ,but a text }).
+
address@hidden Ë,,,Umlaut
address@hidden Ë
address@hidden Ï,,,Umlaut
address@hidden Ï
address@hidden Ö,,,Umlaut
address@hidden Ö
address@hidden Ü,,,Umlaut
address@hidden Ü
address@hidden @ss{},,,Umlaut
address@hidden @ss{}
address@hidden no section,,,Umlaut
+This is a node without sectioning command.
address@hidden
address@hidden acute accent,,Top,Top
address@hidden acute accent
address@hidden
+* @'a::    @'a.
+* é::    é.
+* @'i::    @'i.
+* @'o::    @'o.
+* @'u::    @'u.
+* @'y::    @'y.
+* @'A::    @'A.
+* @'E::    @'E.
+* @'I::    @'I.
+* @'O::    @'O.
+* @'U::    @'U.
+* @'Y::    @'Y.
address@hidden menu
address@hidden
address@hidden @'a,,,acute accent
address@hidden @'a
+With brace @'{a}. Testing ' " ` ^.
address@hidden é,,,acute accent
address@hidden é
address@hidden @'i,,,acute accent
address@hidden @'i
address@hidden @'o,,,acute accent
address@hidden @'o
address@hidden @'u,,,acute accent
address@hidden @'u
address@hidden @'y,,,acute accent
address@hidden @'y
address@hidden @'A,,,acute accent
address@hidden @'A
address@hidden @'E,,,acute accent
address@hidden @'E
address@hidden @'I,,,acute accent
address@hidden @'I
address@hidden @'O,,,acute accent
address@hidden @'O
address@hidden @'U,,,acute accent
address@hidden @'U
address@hidden @'Y,,,acute accent
address@hidden @'Y
+This is a ref to ü (@pxref{ü, ,ü}).
+Another one, with node only (@pxref{ü, ,}).
+
+
address@hidden
address@hidden grave accent,,Top,Top
address@hidden grave accent
address@hidden
+* à::    à.
+* è::    è.
+* @`i::    @`i.
+* with brace @`{i}::    @`{i}.
+* with dotless @address@hidden::   @address@hidden
+* @`o::    @`o.
+* ù::    ù.
+* @`A::    @`A.
+* @`E::    @`E.
+* @`I::    @`I.
+* @`O::    @`O.
+* @`U::    @`U.
address@hidden menu
address@hidden
address@hidden à,,,grave accent
address@hidden à
address@hidden è,,,grave accent
address@hidden è
address@hidden @`i,,,grave accent
address@hidden @`i
address@hidden with brace @`{i},,,grave accent
address@hidden @`{i}
address@hidden with dotless @address@hidden,,,grave accent
address@hidden @address@hidden
address@hidden @`o,,,grave accent
address@hidden @`o
address@hidden ù,,,grave accent
address@hidden ù
address@hidden @`A,,,grave accent
address@hidden @`A
address@hidden @`E,,,grave accent
address@hidden @`E
address@hidden @`I,,,grave accent
address@hidden @`I
address@hidden @`O,,,grave accent
address@hidden @`O
address@hidden @`U,,,grave accent
address@hidden @`U
address@hidden
address@hidden circumflex accent,,Top,Top
address@hidden circumflex accent
address@hidden
+* â::    â.
+* ê::    ê.
+* î::    î.
+* ô::    ô.
+* û::    û.
+* Â::    Â.
+* Ê::    Ê.
+* Î::    Î.
+* Ô::    Ô.
+* Û::    Û.
address@hidden menu
address@hidden
address@hidden â,,,circumflex accent
address@hidden â
address@hidden ê,,,circumflex accent
address@hidden ê
address@hidden î,,,circumflex accent
address@hidden î
address@hidden ô,,,circumflex accent
address@hidden ô
address@hidden û,,,circumflex accent
address@hidden û
address@hidden Â,,,circumflex accent
address@hidden Â
address@hidden Ê,,,circumflex accent
address@hidden Ê
address@hidden Î,,,circumflex accent
address@hidden Î
address@hidden Ô,,,circumflex accent
address@hidden Ô
address@hidden Û,,,circumflex accent
address@hidden Û
address@hidden
address@hidden tilde accent,,Top,Top
address@hidden tilde accent
address@hidden
+* @~a::    @~a.
+* @~n::    @~n.
+* @~o::    @~o.
+* @~A::    @~A.
+* @~O::    @~O.
address@hidden menu
address@hidden
address@hidden @~a,,,tilde accent
address@hidden @~a
address@hidden @~n,,,tilde accent
address@hidden @~n
address@hidden @~o,,,tilde accent
address@hidden @~o
address@hidden @~A,,,tilde accent
address@hidden @~A
address@hidden @~O,,,tilde accent
address@hidden @~O
+This marks the @anchor{x-spot}spot.
+A second one with accented char @anchor{é-o}.
address@hidden
address@hidden cedilla accent,,Top,Top
address@hidden cedilla accent
address@hidden
+* ç::    ç.
+* @,{C}::    @,{C}.
address@hidden menu
address@hidden
address@hidden ç,,,cedilla accent
address@hidden ç
address@hidden @,{C},,,cedilla accent
address@hidden @,{C}
address@hidden
address@hidden rest,,Top,Top
address@hidden rest
address@hidden
+* @aa{}::  @aa{}.
+* @ae{}::  @ae{}.
+* @oe{}::  @oe{}.
+* @AA{}::  @AA{}.
+* @AE{}::  @AE{}.
+* @OE{}::  @OE{}.
+* @l{}::  @l{}.
+* @o{}::  @o{}.
+* @L{}::  @L{}.
+* @O{}::  @O{}.
+* @H{a}::  @H{a}.
+* @u{a}::  @u{a}.
+* @v{a}::  @v{a}.
+* @udotaccent{a}::  @udotaccent{a} udotaccent.
+* @dotaccent{a}::  @dotaccent{a} dotaccent.
+* @ringaccent{a}::  @ringaccent{a} ringaccent.
+* @tieaccent{a}::  @tieaccent{a} tieaccent.
+* @ubaraccent{a}::  @ubaraccent{a} ubaraccent.
+* @dotless{i}::  @dotless{i} dotless i.
+* @dotless{j}::  @dotless{j} dotless j.
+* @comma{}::     @comma{} comma
address@hidden menu
address@hidden
address@hidden @aa{},,,rest
address@hidden @aa{}
address@hidden @ae{},,,rest
address@hidden @ae{}
address@hidden @oe{},,,rest
address@hidden @oe{}
address@hidden @AA{},,,rest
address@hidden @AA{}
address@hidden @AE{},,,rest
address@hidden @AE{}
address@hidden @OE{},,,rest
address@hidden @OE{}
address@hidden @l{},,,rest
address@hidden @l{}
address@hidden @o{},,,rest
address@hidden @o{}
address@hidden @L{},,,rest
address@hidden @L{}
address@hidden @O{},,,rest
address@hidden @O{}
address@hidden @H{a},,,rest
address@hidden @H{a}
address@hidden @u{a},,,rest
address@hidden @u{a}
address@hidden @v{a},,,rest
address@hidden @v{a}
address@hidden @udotaccent{a},,,rest
address@hidden @udotaccent{a}
+Test udotaccent.
address@hidden @dotaccent{a},,,rest
address@hidden @dotaccent{a}
+Test dotaccent.
address@hidden @ringaccent{a},,,rest
address@hidden @ringaccent{a}
address@hidden @tieaccent{a},,,rest
address@hidden @tieaccent{a}
address@hidden @ubaraccent{a},,,rest
address@hidden @ubaraccent{a}
address@hidden @dotless{i},,,rest
address@hidden @dotless{i}
address@hidden @dotless{j},,,rest
address@hidden @dotless{j}
+        
+        @dots{}
+
+       @enddots{}
+
+       @exclamdown{}
+
+       @questiondown{}
+
+       @pounds{}
+
+       @@- : @-
+       @@ followed by end of line: @
+       @@ followed by tab: @   
+       @@ followed by space @ 
+       @@*: @* and text followin @@*.
+
address@hidden @comma{},,,rest
address@hidden @comma{}
+
+An index entry with accented letter.
address@hidden index entry with accented letter: à @`a
address@hidden index entry with accented letter: â @`a
+
address@hidden cp
+
address@hidden
address@hidden

Index: encodings/res_info/texi_ogolat2/ogolat2.texi.first
===================================================================
RCS file: encodings/res_info/texi_ogolat2/ogolat2.texi.first
diff -N encodings/res_info/texi_ogolat2/ogolat2.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_info/texi_ogolat2/ogolat2.texi.first  2 Aug 2009 13:13:30 
-0000       1.1
@@ -0,0 +1,28 @@
+\input texinfo
address@hidden ogonek.info
+
address@hidden ISO-8859-2
+
address@hidden Top
address@hidden OgoL2
+
+Latin 2 (precomposed).
address@hidden 0xa1=0241
+Aogonek: ¡
address@hidden 0xb1=0261
+aogonek: ±
address@hidden 0xb2=0262
+standalone ogonek: ²
address@hidden 0xca=0312
+Eogonek: Ê
address@hidden 0xea=0352
+eogonek: ê
+
address@hidden Accented.
address@hidden @ogonek{a}
address@hidden @ogonek{e}
address@hidden @ogonek{i}
address@hidden @ogonek{o}
address@hidden @ogonek{u}
+
address@hidden

Index: encodings/res_info/texi_ogoutf/ogoutf.texi.first
===================================================================
RCS file: encodings/res_info/texi_ogoutf/ogoutf.texi.first
diff -N encodings/res_info/texi_ogoutf/ogoutf.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_info/texi_ogoutf/ogoutf.texi.first    2 Aug 2009 13:13:30 
-0000       1.1
@@ -0,0 +1,20 @@
+\input texinfo
address@hidden ogonek.info
address@hidden UTF-8
address@hidden Ogonek
+
+
address@hidden Top
address@hidden Top AE @address@hidden
+
address@hidden AE ĄĘ ae ąę
+
+Zażółć gęślą jaźń!
+
+Zazolc gesla jazn!
+
address@hidden @address@hidden
address@hidden @address@hidden
address@hidden cp
+
address@hidden

Index: encodings/res_info/texi_umlaut/umlaut.texi.first
===================================================================
RCS file: encodings/res_info/texi_umlaut/umlaut.texi.first
diff -N encodings/res_info/texi_umlaut/umlaut.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_info/texi_umlaut/umlaut.texi.first    2 Aug 2009 13:13:30 
-0000       1.1
@@ -0,0 +1,124 @@
+\input texinfo @c -*-texinfo-*-
address@hidden
address@hidden
address@hidden
address@hidden umlaut.info
address@hidden de
address@hidden @documentlanguage zv
address@hidden Test for Umlaute, accent etc.
address@hidden on
address@hidden separate
address@hidden
address@hidden This is what you get
+Copright Sign: @copyright{} @*
+Pound Sign: @pounds{} @*
+Minus Zeichen: @minus{} @*
+TeX Logo: @address@hidden
address@hidden@}: @address@hidden
address@hidden@}:@address@hidden
+Vertical Bar:@*
+|
+
+valid umlaut
+@"a @"e @"i @"o @"u @"y
+@"A @"E @"I @"O @"U
+
+
+Non valid umlaut:@*
+@"X @"x @"Q @"Y
+
+
+Special characters in HTML:@*
+ < > &
+
+
+acute accent:@*
+@'a @'e @'i @'o @'u @'y
+@'A @'E @'I @'O @'U @'Y
+
+invalid acute accent:@*
+@'z @'q @'r
+@'Z @'Q @'R
+
+valid Cedilla:@*
+@,{c} @,{C}
+
+
+non valid Cedilla:@*
+@,{H} @,{h}
+
+macron:@*
address@hidden
+
+I don't know any invalid macron:@*
+
+
+valid circumflex:@*
address@hidden @^e @^i @^o @^u
address@hidden @^E @^I @^O @^U 
+
+
+invalid circumflex:@*
address@hidden @^r @^t @^k
address@hidden @^R @^T @^K
+
+
+grave accent:@*
address@hidden @`e @`i @`o @`u
address@hidden @`E @`I @`O @`U
+
+
+invalid grave accent:@*
address@hidden @`m @`p
+
+
+
+tilde accent:@*
address@hidden @~n @~o
address@hidden @~O
+
+invalid tilde accent:@*
address@hidden @~s
+
+
+
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden @AA{}
address@hidden @AE{}
address@hidden
address@hidden
address@hidden @L{}
address@hidden @O{}
address@hidden @OE{}
address@hidden
+
+What about @@url and @@uref
+
address@hidden://www.fido.de/~kama}
+
+Referenz:@*
address@hidden://www.fido.de/~kama}
+
+Referenz mit Display Text:@*
address@hidden://www.fido.de/~kama, Second Argument of uref}
+
+Referenz mit Display Text and special:@*
address@hidden://www.fido.de/~kama, Second Argument of uref, Third Argument of 
uref}
+
+Email:@*
address@hidden@@hippo.fido.de}
+
+Email mit display:@*
address@hidden@@hippo.fido.de, Anzeige der email Adrese}
address@hidden I don't need any contents.
address@hidden
address@hidden

Index: encodings/res_info/texi_unknown_language/unknown_language.texi.first
===================================================================
RCS file: encodings/res_info/texi_unknown_language/unknown_language.texi.first
diff -N encodings/res_info/texi_unknown_language/unknown_language.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_info/texi_unknown_language/unknown_language.texi.first        
2 Aug 2009 13:13:30 -0000       1.1
@@ -0,0 +1,16 @@
+\input texinfo @c -*-texinfo-*-
+
address@hidden unknown_language.info
+
address@hidden unknown
+
address@hidden Top
address@hidden unknkown language
+
+Unknown language. @xref{Top}.
+
address@hidden another_UNKNOWN
+
+Another unknown language. @xref{Top}.
+
address@hidden

Index: encodings/res_info/texi_weird_accents/weird_accents.texi.first
===================================================================
RCS file: encodings/res_info/texi_weird_accents/weird_accents.texi.first
diff -N encodings/res_info/texi_weird_accents/weird_accents.texi.first
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ encodings/res_info/texi_weird_accents/weird_accents.texi.first      2 Aug 
2009 13:13:30 -0000       1.1
@@ -0,0 +1,19 @@
+\input texinfo
address@hidden accentenc.info
address@hidden Complex accent encoding test
address@hidden ISO-8859-1
+
address@hidden Top
address@hidden Complex accent encoding test top
+
address@hidden@address@hidden
+
address@hidden@,address@hidden
+
address@hidden@ubaraccent{a}}
+
address@hidden@address@hidden
+
address@hidden@code{@'address@hidden
+
address@hidden




reply via email to

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